From cd38def2e5dc887da82bc705f7bce0ab0c221ad4 Mon Sep 17 00:00:00 2001 From: Stefan Bethge Date: Fri, 26 May 2006 10:56:21 +0000 Subject: [PATCH 001/110] initial import of zeroconf class (standalone) --- src/zeroconf.py | 188 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 188 insertions(+) create mode 100755 src/zeroconf.py diff --git a/src/zeroconf.py b/src/zeroconf.py new file mode 100755 index 000000000..57f596cb8 --- /dev/null +++ b/src/zeroconf.py @@ -0,0 +1,188 @@ +#!/usr/bin/python + +import os, sys + +try: + import avahi, gobject, dbus +except ImportError: + print "Error: python-avahi and python-dbus need to be installed. No zeroconf support." + +try: + import dbus.glib +except ImportError, e: + pass + +service_browsers = {} + +class Zeroconf: + def __init__(self, name): + self.domain = None # specific domain to browse + self.stype = '_presence._tcp' + self.port = 5298 # listening port that gets announced + self.name = name # service name / username + self.txt = {} + + self.contacts = {} # all current local contacts with data + self.entrygroup = '' + + ## handlers for dbus callbacks + + # error handler - maybe replace with gui version/gajim facilities + def print_error_callback(self, err): + print "Error:", str(err) + + def new_service_callback(self, interface, protocol, name, stype, domain, flags): + print "Found service '%s' in domain '%s' on %i.%i." % (name, domain, interface, protocol) + + #synchronous resolving + self.server.ResolveService( int(interface), int(protocol), name, stype, domain, avahi.PROTO_UNSPEC, dbus.UInt32(0), reply_handler=self.service_resolved_callback, error_handler=self.print_error_callback) + + def remove_service_callback(self, interface, protocol, name, stype, domain, flags): + print "Service '%s' in domain '%s' on %i.%i disappeared." % (name, domain, interface, protocol) + del self.contacts[(interface, name, domain)] + + def new_service_type(self, interface, protocol, stype, domain, flags): + global service_browsers + + # Are we already browsing this domain for this type? + if service_browsers.has_key((interface, protocol, stype, domain)): + return + + print "Browsing for services of type '%s' in domain '%s' on %i.%i ..." % (stype, domain, interface, protocol) + + b = dbus.Interface(self.bus.get_object(avahi.DBUS_NAME, \ + self.server.ServiceBrowserNew(interface, protocol, \ + stype, domain, dbus.UInt32(0))),avahi.DBUS_INTERFACE_SERVICE_BROWSER) + b.connect_to_signal('ItemNew', self.new_service_callback) + b.connect_to_signal('ItemRemove', self.remove_service_callback) + + service_browsers[(interface, protocol, stype, domain)] = b + + def new_domain_callback(self,interface, protocol, domain, flags): + if domain != "local": + self.browse_domain(interface, protocol, domain) + + def service_resolved_callback(self, interface, protocol, name, stype, domain, host, aprotocol, address, port, txt, flags): + print "Service data for service '%s' in domain '%s' on %i.%i:" % (name, domain, interface, protocol) + print "\tHost %s (%s), port %i, TXT data: %s" % (host, address, port, str(avahi.txt_array_to_string_array(txt))) + + self.contacts[(interface, name, domain)] = (interface, name, protocol, domain, host, address, port, txt) + + + def service_added_callback(self): + print "Service successfully added" + + def service_committed_callback(self): + print "Service successfully committed" + + def service_updated_callback(self): + print "Service successfully updated" + + def service_add_fail_callback(self, err): + print "Error while adding service:", str(err) + self.name = self.server.GetAlternativeServiceName(self.name) + self.create_service() + + def server_state_changed_callback(self, state, error): + print "server.state %s" % state + if state == avahi.SERVER_RUNNING: + self.create_service() + elif state == avahi.SERVER_COLLISION: + self.entrygroup.Reset() +# elif state == avahi.CLIENT_FAILURE: # TODO: add error handling (avahi daemon dies...?) + + def entrygroup_state_changed_callback(self, state, error): + # the name is already present, so ... + if state == avahi.ENTRY_GROUP_COLLISION: + print "Collision with existing service of name %s" % self.name + # ... get a new one and recreate the service + self.name = self.server.GetAlternativeServiceName(self.name) + self.create_service() +# elif state == avahi.ENTRY_GROUP_FAILURE: + + def create_service(self): + if self.entrygroup == '': + # create an EntryGroup for publishing + self.entrygroup = dbus.Interface(self.bus.get_object(avahi.DBUS_NAME, self.server.EntryGroupNew()), avahi.DBUS_INTERFACE_ENTRY_GROUP) + self.entrygroup.connect_to_signal('StateChanged', self.entrygroup_state_changed_callback) + + self.txt[('port.p2pj')] = self.port + self.txt[('version')] = 1 + self.txt[('textvers')] = 1 + + print "Publishing service '%s' of type %s" % (self.name, self.stype) + self.entrygroup.AddService(avahi.IF_UNSPEC, avahi.PROTO_UNSPEC, dbus.UInt32(0), self.name, self.stype, '', '', self.port, avahi.dict_to_txt_array(self.txt), reply_handler=self.service_added_callback, error_handler=self.service_add_fail_callback) + self.entrygroup.Commit(reply_handler=self.service_committed_callback, error_handler=self.print_error_callback) + + def publish(self): + state = self.server.GetState() + + if state == avahi.SERVER_RUNNING: + self.create_service() + + def remove_announce(self): + self.entrygroup.Reset() + self.entrygroup.Free() + + def browse_domain(self, interface, protocol, domain): + self.new_service_type(interface, protocol, self.stype, domain, '') + + # connect to dbus + def connect(self): + self.bus = dbus.SystemBus() + self.server = dbus.Interface(self.bus.get_object(avahi.DBUS_NAME, \ + avahi.DBUS_PATH_SERVER), avahi.DBUS_INTERFACE_SERVER) + + self.server.connect_to_signal('StateChanged', self.server_state_changed_callback) + + # start browsing + if self.domain is None: + # Explicitly browse .local + self.browse_domain(avahi.IF_UNSPEC, avahi.PROTO_UNSPEC, "local") + + # Browse for other browsable domains + db = dbus.Interface(self.bus.get_object(avahi.DBUS_NAME, \ + self.server.DomainBrowserNew(avahi.IF_UNSPEC, \ + avahi.PROTO_UNSPEC, '', avahi.DOMAIN_BROWSER_BROWSE,\ + dbus.UInt32(0))), avahi.DBUS_INTERFACE_DOMAIN_BROWSER) + db.connect_to_signal('ItemNew', self.new_domain_callback) + else: + # Just browse the domain the user wants us to browse + self.browse_domain(avahi.IF_UNSPEC, avahi.PROTO_UNSPEC, domain) + +# def disconnect: +# necessary ? + + # refresh data manually - really ok or too much traffic? + def resolve_all(self): + for key in contacts.keys(): + self.server.ResolveService( int(key.interface), int(key.protocol), key.name, \ + self.stype, key.domain, avahi.PROTO_UNSPEC, dbus.UInt32(0),\ + reply_handler=self.service_resolved_callback, error_handler=self.print_error_callback) + + def get_contacts(self): + self.resolve_all + return self.contacts + + def set_status(self, status): + self.txt[('status')] = status + txt = avahi.dict_to_txt_array(self.txt) + + self.entrygroup.UpdateServiceTxt(avahi.IF_UNSPEC, avahi.PROTO_UNSPEC, dbus.UInt32(0), self.name, self.stype,'', txt, reply_handler=self.service_updated_callback, error_handler=self.print_error_callback) +# self.entrygroup.Commit() # TODO: necessary? + +def main(): + + zeroconf = Zeroconf('foo') + zeroconf.connect() + zeroconf.txt[('last')] = 'foo' + zeroconf.publish() + zeroconf.set_status('avail') + + try: + gobject.MainLoop().run() + except KeyboardInterrupt, k: + pass + +if __name__ == "__main__": + main() From 99e8bf1da83b50e0bbee458754d1d492a60c63e5 Mon Sep 17 00:00:00 2001 From: Stefan Bethge Date: Fri, 26 May 2006 14:27:42 +0000 Subject: [PATCH 002/110] copy classes for zeroconf --- src/common/connection_handlers_zeroconf.py | 1781 ++++++++++++++++++++ src/common/connection_zeroconf.py | 1079 ++++++++++++ 2 files changed, 2860 insertions(+) create mode 100644 src/common/connection_handlers_zeroconf.py create mode 100644 src/common/connection_zeroconf.py diff --git a/src/common/connection_handlers_zeroconf.py b/src/common/connection_handlers_zeroconf.py new file mode 100644 index 000000000..1a82dc682 --- /dev/null +++ b/src/common/connection_handlers_zeroconf.py @@ -0,0 +1,1781 @@ +## +## Copyright (C) 2006 Gajim Team +## +## Contributors for this file: +## - Yann Le Boulanger +## - Nikos Kouremenos +## - Dimitur Kirov +## - Travis Shirk +## +## This program is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published +## by the Free Software Foundation; version 2 only. +## +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. +## + +import os +import time +import base64 +import sha +import socket +import sys + +from calendar import timegm + +import socks5 +import common.xmpp + +from common import GnuPG +from common import helpers +from common import gajim +from common import i18n +_ = i18n._ + +STATUS_LIST = ['offline', 'connecting', 'online', 'chat', 'away', 'xa', 'dnd', + 'invisible'] +# kind of events we can wait for an answer +VCARD_PUBLISHED = 'vcard_published' +VCARD_ARRIVED = 'vcard_arrived' +AGENT_REMOVED = 'agent_removed' +HAS_IDLE = True +try: + import common.idle as idle # when we launch gajim from sources +except: + try: + import idle # when Gajim is installed + except: + gajim.log.debug(_('Unable to load idle module')) + HAS_IDLE = False + +class ConnectionBytestream: + def __init__(self): + self.files_props = {} + + def is_transfer_stoped(self, file_props): + if file_props.has_key('error') and file_props['error'] != 0: + return True + if file_props.has_key('completed') and file_props['completed']: + return True + if file_props.has_key('connected') and file_props['connected'] == False: + return True + if not file_props.has_key('stopped') or not file_props['stopped']: + return False + return True + + def send_success_connect_reply(self, streamhost): + ''' send reply to the initiator of FT that we + made a connection + ''' + if streamhost is None: + return None + iq = common.xmpp.Iq(to = streamhost['initiator'], typ = 'result', + frm = streamhost['target']) + iq.setAttr('id', streamhost['id']) + query = iq.setTag('query') + query.setNamespace(common.xmpp.NS_BYTESTREAM) + stream_tag = query.setTag('streamhost-used') + stream_tag.setAttr('jid', streamhost['jid']) + self.connection.send(iq) + + def remove_transfers_for_contact(self, contact): + ''' stop all active transfer for contact ''' + for file_props in self.files_props.values(): + if self.is_transfer_stoped(file_props): + continue + receiver_jid = unicode(file_props['receiver']).split('/')[0] + if contact.jid == receiver_jid: + file_props['error'] = -5 + self.remove_transfer(file_props) + self.dispatch('FILE_REQUEST_ERROR', (contact.jid, file_props)) + sender_jid = unicode(file_props['sender']).split('/')[0] + if contact.jid == sender_jid: + file_props['error'] = -3 + self.remove_transfer(file_props) + + def remove_all_transfers(self): + ''' stops and removes all active connections from the socks5 pool ''' + for file_props in self.files_props.values(): + self.remove_transfer(file_props, remove_from_list = False) + del(self.files_props) + self.files_props = {} + + def remove_transfer(self, file_props, remove_from_list = True): + if file_props is None: + return + self.disconnect_transfer(file_props) + sid = file_props['sid'] + gajim.socks5queue.remove_file_props(self.name, sid) + + if remove_from_list: + if self.files_props.has_key('sid'): + del(self.files_props['sid']) + + def disconnect_transfer(self, file_props): + if file_props is None: + return + if file_props.has_key('hash'): + gajim.socks5queue.remove_sender(file_props['hash']) + + if file_props.has_key('streamhosts'): + for host in file_props['streamhosts']: + if host.has_key('idx') and host['idx'] > 0: + gajim.socks5queue.remove_receiver(host['idx']) + gajim.socks5queue.remove_sender(host['idx']) + + def send_socks5_info(self, file_props, fast = True, receiver = None, + sender = None): + ''' send iq for the present streamhosts and proxies ''' + if type(self.peerhost) != tuple: + return + port = gajim.config.get('file_transfers_port') + ft_override_host_to_send = gajim.config.get('ft_override_host_to_send') + cfg_proxies = gajim.config.get_per('accounts', self.name, + 'file_transfer_proxies') + if receiver is None: + receiver = file_props['receiver'] + if sender is None: + sender = file_props['sender'] + proxyhosts = [] + if fast and cfg_proxies: + proxies = map(lambda e:e.strip(), cfg_proxies.split(',')) + default = gajim.proxy65_manager.get_default_for_name(self.name) + if default: + # add/move default proxy at top of the others + if proxies.__contains__(default): + proxies.remove(default) + proxies.insert(0, default) + + for proxy in proxies: + (host, _port, jid) = gajim.proxy65_manager.get_proxy(proxy, self.name) + if host is None: + continue + host_dict={ + 'state': 0, + 'target': unicode(receiver), + 'id': file_props['sid'], + 'sid': file_props['sid'], + 'initiator': proxy, + 'host': host, + 'port': unicode(_port), + 'jid': jid + } + proxyhosts.append(host_dict) + sha_str = helpers.get_auth_sha(file_props['sid'], sender, + receiver) + file_props['sha_str'] = sha_str + if not ft_override_host_to_send: + ft_override_host_to_send = self.peerhost[0] + ft_override_host_to_send = socket.gethostbyname(ft_override_host_to_send) + listener = gajim.socks5queue.start_listener(self.peerhost[0], port, + sha_str, self._result_socks5_sid, file_props['sid']) + if listener == None: + file_props['error'] = -5 + self.dispatch('FILE_REQUEST_ERROR', (unicode(receiver), file_props)) + self._connect_error(unicode(receiver), file_props['sid'], + file_props['sid'], code = 406) + return + + iq = common.xmpp.Protocol(name = 'iq', to = unicode(receiver), + typ = 'set') + file_props['request-id'] = 'id_' + file_props['sid'] + iq.setID(file_props['request-id']) + query = iq.setTag('query') + query.setNamespace(common.xmpp.NS_BYTESTREAM) + query.setAttr('mode', 'tcp') + query.setAttr('sid', file_props['sid']) + streamhost = query.setTag('streamhost') + streamhost.setAttr('port', unicode(port)) + streamhost.setAttr('host', ft_override_host_to_send) + streamhost.setAttr('jid', sender) + if fast and proxyhosts != [] and gajim.config.get_per('accounts', + self.name, 'use_ft_proxies'): + file_props['proxy_receiver'] = unicode(receiver) + file_props['proxy_sender'] = unicode(sender) + file_props['proxyhosts'] = proxyhosts + for proxyhost in proxyhosts: + streamhost = common.xmpp.Node(tag = 'streamhost') + query.addChild(node=streamhost) + streamhost.setAttr('port', proxyhost['port']) + streamhost.setAttr('host', proxyhost['host']) + streamhost.setAttr('jid', proxyhost['jid']) + + # don't add the proxy child tag for streamhosts, which are proxies + # proxy = streamhost.setTag('proxy') + # proxy.setNamespace(common.xmpp.NS_STREAM) + self.connection.send(iq) + + def send_file_rejection(self, file_props): + ''' informs sender that we refuse to download the file ''' + # user response to ConfirmationDialog may come after we've disconneted + if not self.connection or self.connected < 2: + return + iq = common.xmpp.Protocol(name = 'iq', + to = unicode(file_props['sender']), typ = 'error') + iq.setAttr('id', file_props['request-id']) + err = common.xmpp.ErrorNode(code = '406', typ = 'auth', name = + 'not-acceptable') + iq.addChild(node=err) + self.connection.send(iq) + + def send_file_approval(self, file_props): + ''' send iq, confirming that we want to download the file ''' + # user response to ConfirmationDialog may come after we've disconneted + if not self.connection or self.connected < 2: + return + iq = common.xmpp.Protocol(name = 'iq', + to = unicode(file_props['sender']), typ = 'result') + iq.setAttr('id', file_props['request-id']) + si = iq.setTag('si') + si.setNamespace(common.xmpp.NS_SI) + if file_props.has_key('offset') and file_props['offset']: + file_tag = si.setTag('file') + file_tag.setNamespace(common.xmpp.NS_FILE) + range_tag = file_tag.setTag('range') + range_tag.setAttr('offset', file_props['offset']) + feature = si.setTag('feature') + feature.setNamespace(common.xmpp.NS_FEATURE) + _feature = common.xmpp.DataForm(typ='submit') + feature.addChild(node=_feature) + field = _feature.setField('stream-method') + field.delAttr('type') + field.setValue(common.xmpp.NS_BYTESTREAM) + self.connection.send(iq) + + def send_file_request(self, file_props): + ''' send iq for new FT request ''' + if not self.connection or self.connected < 2: + return + our_jid = gajim.get_jid_from_account(self.name) + resource = self.server_resource + frm = our_jid + '/' + resource + file_props['sender'] = frm + fjid = file_props['receiver'].jid + '/' + file_props['receiver'].resource + iq = common.xmpp.Protocol(name = 'iq', to = fjid, + typ = 'set') + iq.setID(file_props['sid']) + self.files_props[file_props['sid']] = file_props + si = iq.setTag('si') + si.setNamespace(common.xmpp.NS_SI) + si.setAttr('profile', common.xmpp.NS_FILE) + si.setAttr('id', file_props['sid']) + file_tag = si.setTag('file') + file_tag.setNamespace(common.xmpp.NS_FILE) + file_tag.setAttr('name', file_props['name']) + file_tag.setAttr('size', file_props['size']) + desc = file_tag.setTag('desc') + if file_props.has_key('desc'): + desc.setData(file_props['desc']) + file_tag.setTag('range') + feature = si.setTag('feature') + feature.setNamespace(common.xmpp.NS_FEATURE) + _feature = common.xmpp.DataForm(typ='form') + feature.addChild(node=_feature) + field = _feature.setField('stream-method') + field.setAttr('type', 'list-single') + field.addOption(common.xmpp.NS_BYTESTREAM) + self.connection.send(iq) + + def _result_socks5_sid(self, sid, hash_id): + ''' store the result of sha message from auth. ''' + if not self.files_props.has_key(sid): + return + file_props = self.files_props[sid] + file_props['hash'] = hash_id + return + + def _connect_error(self, to, _id, sid, code = 404): + ''' cb, when there is an error establishing BS connection, or + when connection is rejected''' + msg_dict = { + 404: 'Could not connect to given hosts', + 405: 'Cancel', + 406: 'Not acceptable', + } + msg = msg_dict[code] + iq = None + iq = common.xmpp.Protocol(name = 'iq', to = to, + typ = 'error') + iq.setAttr('id', _id) + err = iq.setTag('error') + err.setAttr('code', unicode(code)) + err.setData(msg) + self.connection.send(iq) + if code == 404: + file_props = gajim.socks5queue.get_file_props(self.name, sid) + if file_props is not None: + self.disconnect_transfer(file_props) + file_props['error'] = -3 + self.dispatch('FILE_REQUEST_ERROR', (to, file_props)) + + def _proxy_auth_ok(self, proxy): + '''cb, called after authentication to proxy server ''' + file_props = self.files_props[proxy['sid']] + iq = common.xmpp.Protocol(name = 'iq', to = proxy['initiator'], + typ = 'set') + auth_id = "au_" + proxy['sid'] + iq.setID(auth_id) + query = iq.setTag('query') + query.setNamespace(common.xmpp.NS_BYTESTREAM) + query.setAttr('sid', proxy['sid']) + activate = query.setTag('activate') + activate.setData(file_props['proxy_receiver']) + iq.setID(auth_id) + self.connection.send(iq) + + # register xmpppy handlers for bytestream and FT stanzas + def _bytestreamErrorCB(self, con, iq_obj): + gajim.log.debug('_bytestreamErrorCB') + id = unicode(iq_obj.getAttr('id')) + frm = helpers.get_full_jid_from_iq(iq_obj) + query = iq_obj.getTag('query') + gajim.proxy65_manager.error_cb(frm, query) + jid = helpers.get_jid_from_iq(iq_obj) + id = id[3:] + if not self.files_props.has_key(id): + return + file_props = self.files_props[id] + file_props['error'] = -4 + self.dispatch('FILE_REQUEST_ERROR', (jid, file_props)) + raise common.xmpp.NodeProcessed + + def _bytestreamSetCB(self, con, iq_obj): + gajim.log.debug('_bytestreamSetCB') + target = unicode(iq_obj.getAttr('to')) + id = unicode(iq_obj.getAttr('id')) + query = iq_obj.getTag('query') + sid = unicode(query.getAttr('sid')) + file_props = gajim.socks5queue.get_file_props( + self.name, sid) + streamhosts=[] + for item in query.getChildren(): + if item.getName() == 'streamhost': + host_dict={ + 'state': 0, + 'target': target, + 'id': id, + 'sid': sid, + 'initiator': helpers.get_full_jid_from_iq(iq_obj) + } + for attr in item.getAttrs(): + host_dict[attr] = item.getAttr(attr) + streamhosts.append(host_dict) + if file_props is None: + if self.files_props.has_key(sid): + file_props = self.files_props[sid] + file_props['fast'] = streamhosts + if file_props['type'] == 's': # FIXME: remove fast xmlns + # only psi do this + + if file_props.has_key('streamhosts'): + file_props['streamhosts'].extend(streamhosts) + else: + file_props['streamhosts'] = streamhosts + if not gajim.socks5queue.get_file_props(self.name, sid): + gajim.socks5queue.add_file_props(self.name, file_props) + gajim.socks5queue.connect_to_hosts(self.name, sid, + self.send_success_connect_reply, None) + raise common.xmpp.NodeProcessed + + file_props['streamhosts'] = streamhosts + if file_props['type'] == 'r': + gajim.socks5queue.connect_to_hosts(self.name, sid, + self.send_success_connect_reply, self._connect_error) + raise common.xmpp.NodeProcessed + + def _ResultCB(self, con, iq_obj): + gajim.log.debug('_ResultCB') + # if we want to respect jep-0065 we have to check for proxy + # activation result in any result iq + real_id = unicode(iq_obj.getAttr('id')) + if real_id[:3] != 'au_': + return + frm = helpers.get_full_jid_from_iq(iq_obj) + id = real_id[3:] + if self.files_props.has_key(id): + file_props = self.files_props[id] + if file_props['streamhost-used']: + for host in file_props['proxyhosts']: + if host['initiator'] == frm and host.has_key('idx'): + gajim.socks5queue.activate_proxy(host['idx']) + raise common.xmpp.NodeProcessed + + def _bytestreamResultCB(self, con, iq_obj): + gajim.log.debug('_bytestreamResultCB') + frm = helpers.get_full_jid_from_iq(iq_obj) + real_id = unicode(iq_obj.getAttr('id')) + query = iq_obj.getTag('query') + gajim.proxy65_manager.resolve_result(frm, query) + + try: + streamhost = query.getTag('streamhost-used') + except: # this bytestream result is not what we need + pass + id = real_id[3:] + if self.files_props.has_key(id): + file_props = self.files_props[id] + else: + raise common.xmpp.NodeProcessed + if streamhost is None: + # proxy approves the activate query + if real_id[:3] == 'au_': + id = real_id[3:] + if not file_props.has_key('streamhost-used') or \ + file_props['streamhost-used'] is False: + raise common.xmpp.NodeProcessed + if not file_props.has_key('proxyhosts'): + raise common.xmpp.NodeProcessed + for host in file_props['proxyhosts']: + if host['initiator'] == frm and \ + unicode(query.getAttr('sid')) == file_props['sid']: + gajim.socks5queue.activate_proxy(host['idx']) + break + raise common.xmpp.NodeProcessed + jid = streamhost.getAttr('jid') + if file_props.has_key('streamhost-used') and \ + file_props['streamhost-used'] is True: + raise common.xmpp.NodeProcessed + + if real_id[:3] == 'au_': + gajim.socks5queue.send_file(file_props, self.name) + raise common.xmpp.NodeProcessed + + proxy = None + if file_props.has_key('proxyhosts'): + for proxyhost in file_props['proxyhosts']: + if proxyhost['jid'] == jid: + proxy = proxyhost + + if proxy != None: + file_props['streamhost-used'] = True + if not file_props.has_key('streamhosts'): + file_props['streamhosts'] = [] + file_props['streamhosts'].append(proxy) + file_props['is_a_proxy'] = True + receiver = socks5.Socks5Receiver(gajim.idlequeue, proxy, file_props['sid'], file_props) + gajim.socks5queue.add_receiver(self.name, receiver) + proxy['idx'] = receiver.queue_idx + gajim.socks5queue.on_success = self._proxy_auth_ok + raise common.xmpp.NodeProcessed + + else: + gajim.socks5queue.send_file(file_props, self.name) + if file_props.has_key('fast'): + fasts = file_props['fast'] + if len(fasts) > 0: + self._connect_error(frm, fasts[0]['id'], file_props['sid'], + code = 406) + + raise common.xmpp.NodeProcessed + + def _siResultCB(self, con, iq_obj): + gajim.log.debug('_siResultCB') + id = iq_obj.getAttr('id') + if not self.files_props.has_key(id): + # no such jid + return + file_props = self.files_props[id] + if file_props is None: + # file properties for jid is none + return + if file_props.has_key('request-id'): + # we have already sent streamhosts info + return + file_props['receiver'] = helpers.get_full_jid_from_iq(iq_obj) + si = iq_obj.getTag('si') + file_tag = si.getTag('file') + range_tag = None + if file_tag: + range_tag = file_tag.getTag('range') + if range_tag: + offset = range_tag.getAttr('offset') + if offset: + file_props['offset'] = int(offset) + length = range_tag.getAttr('length') + if length: + file_props['length'] = int(length) + feature = si.setTag('feature') + if feature.getNamespace() != common.xmpp.NS_FEATURE: + return + form_tag = feature.getTag('x') + form = common.xmpp.DataForm(node=form_tag) + field = form.getField('stream-method') + if field.getValue() != common.xmpp.NS_BYTESTREAM: + return + self.send_socks5_info(file_props, fast = True) + raise common.xmpp.NodeProcessed + + def _siSetCB(self, con, iq_obj): + gajim.log.debug('_siSetCB') + jid = helpers.get_jid_from_iq(iq_obj) + si = iq_obj.getTag('si') + profile = si.getAttr('profile') + mime_type = si.getAttr('mime-type') + if profile != common.xmpp.NS_FILE: + return + file_tag = si.getTag('file') + file_props = {'type': 'r'} + for attribute in file_tag.getAttrs(): + if attribute in ('name', 'size', 'hash', 'date'): + val = file_tag.getAttr(attribute) + if val is None: + continue + file_props[attribute] = val + file_desc_tag = file_tag.getTag('desc') + if file_desc_tag is not None: + file_props['desc'] = file_desc_tag.getData() + + if mime_type is not None: + file_props['mime-type'] = mime_type + our_jid = gajim.get_jid_from_account(self.name) + resource = self.server_resource + file_props['receiver'] = our_jid + '/' + resource + file_props['sender'] = helpers.get_full_jid_from_iq(iq_obj) + file_props['request-id'] = unicode(iq_obj.getAttr('id')) + file_props['sid'] = unicode(si.getAttr('id')) + gajim.socks5queue.add_file_props(self.name, file_props) + self.dispatch('FILE_REQUEST', (jid, file_props)) + raise common.xmpp.NodeProcessed + + def _siErrorCB(self, con, iq_obj): + gajim.log.debug('_siErrorCB') + si = iq_obj.getTag('si') + profile = si.getAttr('profile') + if profile != common.xmpp.NS_FILE: + return + id = iq_obj.getAttr('id') + if not self.files_props.has_key(id): + # no such jid + return + file_props = self.files_props[id] + if file_props is None: + # file properties for jid is none + return + jid = helpers.get_jid_from_iq(iq_obj) + file_props['error'] = -3 + self.dispatch('FILE_REQUEST_ERROR', (jid, file_props)) + raise common.xmpp.NodeProcessed + +class ConnectionDisco: + ''' hold xmpppy handlers and public methods for discover services''' + def discoverItems(self, jid, node = None, id_prefix = None): + '''According to JEP-0030: jid is mandatory, + name, node, action is optional.''' + self._discover(common.xmpp.NS_DISCO_ITEMS, jid, node, id_prefix) + + def discoverInfo(self, jid, node = None, id_prefix = None): + '''According to JEP-0030: + For identity: category, type is mandatory, name is optional. + For feature: var is mandatory''' + self._discover(common.xmpp.NS_DISCO_INFO, jid, node, id_prefix) + + def request_register_agent_info(self, agent): + if not self.connection: + return None + iq=common.xmpp.Iq('get', common.xmpp.NS_REGISTER, to=agent) + id = self.connection.getAnID() + iq.setID(id) + # Wait the answer during 30 secondes + self.awaiting_timeouts[gajim.idlequeue.current_time() + 30] = (id, + _('Registration information for transport %s has not arrived in time' % \ + agent)) + self.connection.SendAndCallForResponse(iq, self._ReceivedRegInfo, + {'agent': agent}) + + def build_data_from_dict(self, query, config): + x = query.setTag(common.xmpp.NS_DATA + ' x', attrs = {'type': 'submit'}) + i = 0 + while config.has_key(i): + if not config[i].has_key('type'): + i += 1 + continue + if config[i]['type'] == 'fixed': + i += 1 + continue + tag = x.addChild('field') + if config[i].has_key('var'): + tag.setAttr('var', config[i]['var']) + if config[i].has_key('values'): + for val in config[i]['values']: + if val == False: + val = '0' + elif val == True: + val = '1' + # Force to create a new child + tag.addChild('value').addData(val) + i += 1 + + def register_agent(self, agent, info, is_form = False): + if not self.connection: + return + if is_form: + iq = common.xmpp.Iq('set', common.xmpp.NS_REGISTER, to = agent) + query = iq.getTag('query') + self.build_data_from_dict(query, info) + self.connection.send(iq) + else: + # fixed: blocking + common.xmpp.features_nb.register(self.connection, agent, info, None) + + + def _discover(self, ns, jid, node = None, id_prefix = None): + if not self.connection: + return + iq = common.xmpp.Iq(typ = 'get', to = jid, queryNS = ns) + if id_prefix: + id = self.connection.getAnID() + iq.setID('%s%s' % (id_prefix, id)) + if node: + iq.setQuerynode(node) + self.connection.send(iq) + + def _ReceivedRegInfo(self, con, resp, agent): + common.xmpp.features_nb._ReceivedRegInfo(con, resp, agent) + self._IqCB(con, resp) + + def _discoGetCB(self, con, iq_obj): + ''' get disco info ''' + frm = helpers.get_full_jid_from_iq(iq_obj) + to = unicode(iq_obj.getAttr('to')) + id = unicode(iq_obj.getAttr('id')) + iq = common.xmpp.Iq(to = frm, typ = 'result', queryNS =\ + common.xmpp.NS_DISCO, frm = to) + iq.setAttr('id', id) + query = iq.setTag('query') + # bytestream transfers + feature = common.xmpp.Node('feature') + feature.setAttr('var', common.xmpp.NS_BYTESTREAM) + query.addChild(node=feature) + # si methods + feature = common.xmpp.Node('feature') + feature.setAttr('var', common.xmpp.NS_SI) + query.addChild(node=feature) + # filetransfers transfers + feature = common.xmpp.Node('feature') + feature.setAttr('var', common.xmpp.NS_FILE) + query.addChild(node=feature) + + self.connection.send(iq) + raise common.xmpp.NodeProcessed + + def _DiscoverItemsErrorCB(self, con, iq_obj): + gajim.log.debug('DiscoverItemsErrorCB') + jid = helpers.get_full_jid_from_iq(iq_obj) + self.dispatch('AGENT_ERROR_ITEMS', (jid)) + + def _DiscoverItemsCB(self, con, iq_obj): + gajim.log.debug('DiscoverItemsCB') + q = iq_obj.getTag('query') + node = q.getAttr('node') + if not node: + node = '' + qp = iq_obj.getQueryPayload() + items = [] + if not qp: + qp = [] + for i in qp: + # CDATA payload is not processed, only nodes + if not isinstance(i, common.xmpp.simplexml.Node): + continue + attr = {} + for key in i.getAttrs(): + attr[key] = i.getAttrs()[key] + items.append(attr) + jid = helpers.get_full_jid_from_iq(iq_obj) + hostname = gajim.config.get_per('accounts', self.name, + 'hostname') + id = iq_obj.getID() + if jid == hostname and id[0] == 'p': + for item in items: + self.discoverInfo(item['jid'], id_prefix='p') + else: + self.dispatch('AGENT_INFO_ITEMS', (jid, node, items)) + + def _DiscoverInfoGetCB(self, con, iq_obj): + gajim.log.debug('DiscoverInfoGetCB') + iq = iq_obj.buildReply('result') + q = iq.getTag('query') + q.addChild('identity', attrs = {'type': 'pc', + 'category': 'client', + 'name': 'Gajim'}) + q.addChild('feature', attrs = {'var': common.xmpp.NS_BYTESTREAM}) + q.addChild('feature', attrs = {'var': common.xmpp.NS_SI}) + q.addChild('feature', attrs = {'var': common.xmpp.NS_FILE}) + q.addChild('feature', attrs = {'var': common.xmpp.NS_MUC}) + self.connection.send(iq) + raise common.xmpp.NodeProcessed + + def _DiscoverInfoErrorCB(self, con, iq_obj): + gajim.log.debug('DiscoverInfoErrorCB') + jid = helpers.get_full_jid_from_iq(iq_obj) + self.dispatch('AGENT_ERROR_INFO', (jid)) + + def _DiscoverInfoCB(self, con, iq_obj): + gajim.log.debug('DiscoverInfoCB') + # According to JEP-0030: + # For identity: category, type is mandatory, name is optional. + # For feature: var is mandatory + identities, features, data = [], [], [] + q = iq_obj.getTag('query') + node = q.getAttr('node') + if not node: + node = '' + qc = iq_obj.getQueryChildren() + if not qc: + qc = [] + for i in qc: + if i.getName() == 'identity': + attr = {} + for key in i.getAttrs().keys(): + attr[key] = i.getAttr(key) + identities.append(attr) + elif i.getName() == 'feature': + features.append(i.getAttr('var')) + elif i.getName() == 'x' and i.getAttr('xmlns') == common.xmpp.NS_DATA: + data.append(common.xmpp.DataForm(node=i)) + jid = helpers.get_full_jid_from_iq(iq_obj) + id = iq_obj.getID() + if not identities: # ejabberd doesn't send identities when we browse online users + #FIXME: see http://www.jabber.ru/bugzilla/show_bug.cgi?id=225 + identities = [{'category': 'server', 'type': 'im', 'name': node}] + if id[0] == 'p': + if features.__contains__(common.xmpp.NS_BYTESTREAM): + gajim.proxy65_manager.resolve(jid, self.connection, self.name) + self.dispatch('AGENT_INFO_INFO', (jid, node, identities, + features, data)) + +class ConnectionVcard: + def __init__(self): + self.vcard_sha = None + self.vcard_shas = {} # sha of contacts + self.room_jids = [] # list of gc jids so that vcard are saved in a folder + + def add_sha(self, p, send_caps = True): + c = p.setTag('x', namespace = common.xmpp.NS_VCARD_UPDATE) + if self.vcard_sha is not None: + c.setTagData('photo', self.vcard_sha) + if send_caps: + return self.add_caps(p) + return p + + def add_caps(self, p): + ''' advertise our capabilities in presence stanza (jep-0115)''' + c = p.setTag('c', namespace = common.xmpp.NS_CAPS) + c.setAttr('node', 'http://gajim.org/caps') + c.setAttr('ext', 'ftrans') + c.setAttr('ver', gajim.version) + return p + + def node_to_dict(self, node): + dict = {} + for info in node.getChildren(): + name = info.getName() + if name in ('ADR', 'TEL', 'EMAIL'): # we can have several + if not dict.has_key(name): + dict[name] = [] + entry = {} + for c in info.getChildren(): + entry[c.getName()] = c.getData() + dict[name].append(entry) + elif info.getChildren() == []: + dict[name] = info.getData() + else: + dict[name] = {} + for c in info.getChildren(): + dict[name][c.getName()] = c.getData() + return dict + + def save_vcard_to_hd(self, full_jid, card): + jid, nick = gajim.get_room_and_nick_from_fjid(full_jid) + puny_jid = helpers.sanitize_filename(jid) + path = os.path.join(gajim.VCARD_PATH, puny_jid) + if jid in self.room_jids or os.path.isdir(path): + # remove room_jid file if needed + if os.path.isfile(path): + os.remove(path) + # create folder if needed + if not os.path.isdir(path): + os.mkdir(path, 0700) + puny_nick = helpers.sanitize_filename(nick) + path_to_file = os.path.join(gajim.VCARD_PATH, puny_jid, puny_nick) + else: + path_to_file = path + fil = open(path_to_file, 'w') + fil.write(str(card)) + fil.close() + + def get_cached_vcard(self, fjid, is_fake_jid = False): + '''return the vcard as a dict + return {} if vcard was too old + return None if we don't have cached vcard''' + jid, nick = gajim.get_room_and_nick_from_fjid(fjid) + puny_jid = helpers.sanitize_filename(jid) + if is_fake_jid: + puny_nick = helpers.sanitize_filename(nick) + path_to_file = os.path.join(gajim.VCARD_PATH, puny_jid, puny_nick) + else: + path_to_file = os.path.join(gajim.VCARD_PATH, puny_jid) + if not os.path.isfile(path_to_file): + return None + # We have the vcard cached + f = open(path_to_file) + c = f.read() + f.close() + card = common.xmpp.Node(node = c) + vcard = self.node_to_dict(card) + if vcard.has_key('PHOTO'): + if not isinstance(vcard['PHOTO'], dict): + del vcard['PHOTO'] + elif vcard['PHOTO'].has_key('SHA'): + cached_sha = vcard['PHOTO']['SHA'] + if self.vcard_shas.has_key(jid) and self.vcard_shas[jid] != \ + cached_sha: + # user change his vcard so don't use the cached one + return {} + vcard['jid'] = jid + vcard['resource'] = gajim.get_resource_from_jid(fjid) + return vcard + + def request_vcard(self, jid = None, is_fake_jid = False): + '''request the VCARD. If is_fake_jid is True, it means we request a vcard + to a fake jid, like in private messages in groupchat''' + if not self.connection: + return + iq = common.xmpp.Iq(typ = 'get') + if jid: + iq.setTo(jid) + iq.setTag(common.xmpp.NS_VCARD + ' vCard') + + id = self.connection.getAnID() + iq.setID(id) + self.awaiting_answers[id] = (VCARD_ARRIVED, jid) + if is_fake_jid: + room_jid, nick = gajim.get_room_and_nick_from_fjid(jid) + if not room_jid in self.room_jids: + self.room_jids.append(room_jid) + self.connection.send(iq) + #('VCARD', {entry1: data, entry2: {entry21: data, ...}, ...}) + + def send_vcard(self, vcard): + if not self.connection: + return + iq = common.xmpp.Iq(typ = 'set') + iq2 = iq.setTag(common.xmpp.NS_VCARD + ' vCard') + for i in vcard: + if i == 'jid': + continue + if isinstance(vcard[i], dict): + iq3 = iq2.addChild(i) + for j in vcard[i]: + iq3.addChild(j).setData(vcard[i][j]) + elif type(vcard[i]) == type([]): + for j in vcard[i]: + iq3 = iq2.addChild(i) + for k in j: + iq3.addChild(k).setData(j[k]) + else: + iq2.addChild(i).setData(vcard[i]) + + id = self.connection.getAnID() + iq.setID(id) + self.connection.send(iq) + + # Add the sha of the avatar + if vcard.has_key('PHOTO') and isinstance(vcard['PHOTO'], dict) and \ + vcard['PHOTO'].has_key('BINVAL'): + photo = vcard['PHOTO']['BINVAL'] + photo_decoded = base64.decodestring(photo) + our_jid = gajim.get_jid_from_account(self.name) + gajim.interface.save_avatar_files(our_jid, photo_decoded) + avatar_sha = sha.sha(photo_decoded).hexdigest() + iq2.getTag('PHOTO').setTagData('SHA', avatar_sha) + + self.awaiting_answers[id] = (VCARD_PUBLISHED, iq2) + + def _IqCB(self, con, iq_obj): + id = iq_obj.getID() + + # Check if we were waiting a timeout for this id + found_tim = None + for tim in self.awaiting_timeouts: + if id == self.awaiting_timeouts[tim][0]: + found_tim = tim + break + if found_tim: + del self.awaiting_timeouts[found_tim] + + if id not in self.awaiting_answers: + return + if self.awaiting_answers[id][0] == VCARD_PUBLISHED: + if iq_obj.getType() == 'result': + vcard_iq = self.awaiting_answers[id][1] + # Save vcard to HD + if vcard_iq.getTag('PHOTO') and vcard_iq.getTag('PHOTO').getTag('SHA'): + new_sha = vcard_iq.getTag('PHOTO').getTagData('SHA') + else: + new_sha = '' + + # Save it to file + our_jid = gajim.get_jid_from_account(self.name) + self.save_vcard_to_hd(our_jid, vcard_iq) + + # Send new presence if sha changed and we are not invisible + if self.vcard_sha != new_sha and STATUS_LIST[self.connected] != \ + 'invisible': + self.vcard_sha = new_sha + sshow = helpers.get_xmpp_show(STATUS_LIST[self.connected]) + prio = unicode(gajim.config.get_per('accounts', self.name, + 'priority')) + p = common.xmpp.Presence(typ = None, priority = prio, + show = sshow, status = self.status) + p = self.add_sha(p) + self.connection.send(p) + self.dispatch('VCARD_PUBLISHED', ()) + elif iq_obj.getType() == 'error': + self.dispatch('VCARD_NOT_PUBLISHED', ()) + elif self.awaiting_answers[id][0] == VCARD_ARRIVED: + # If vcard is empty, we send to the interface an empty vcard so that + # it knows it arrived + if not iq_obj.getTag('vCard'): + jid = self.awaiting_answers[id][1] + our_jid = gajim.get_jid_from_account(self.name) + if jid and jid != our_jid: + # Write an empty file + self.save_vcard_to_hd(jid, '') + self.dispatch('VCARD', {'jid': jid}) + elif jid == our_jid: + self.dispatch('MYVCARD', {'jid': jid}) + elif self.awaiting_answers[id][0] == AGENT_REMOVED: + jid = self.awaiting_answers[id][1] + self.dispatch('AGENT_REMOVED', jid) + del self.awaiting_answers[id] + + def _vCardCB(self, con, vc): + '''Called when we receive a vCard + Parse the vCard and send it to plugins''' + if not vc.getTag('vCard'): + return + frm_iq = vc.getFrom() + our_jid = gajim.get_jid_from_account(self.name) + resource = '' + if frm_iq: + who = helpers.get_full_jid_from_iq(vc) + frm, resource = gajim.get_room_and_nick_from_fjid(who) + else: + who = frm = our_jid + if vc.getTag('vCard').getNamespace() == common.xmpp.NS_VCARD: + card = vc.getChildren()[0] + vcard = self.node_to_dict(card) + photo_decoded = None + if vcard.has_key('PHOTO') and isinstance(vcard['PHOTO'], dict) and \ + vcard['PHOTO'].has_key('BINVAL'): + photo = vcard['PHOTO']['BINVAL'] + try: + photo_decoded = base64.decodestring(photo) + avatar_sha = sha.sha(photo_decoded).hexdigest() + except: + avatar_sha = '' + else: + avatar_sha = '' + + if avatar_sha: + card.getTag('PHOTO').setTagData('SHA', avatar_sha) + + # Save it to file + self.save_vcard_to_hd(who, card) + # Save the decoded avatar to a separate file too, and generate files for dbus notifications + puny_jid = helpers.sanitize_filename(frm) + puny_nick = None + begin_path = os.path.join(gajim.AVATAR_PATH, puny_jid) + if frm in self.room_jids: + puny_nick = helpers.sanitize_filename(resource) + # create folder if needed + if not os.path.isdir(begin_path): + os.mkdir(begin_path, 0700) + begin_path = os.path.join(begin_path, puny_nick) + if photo_decoded: + avatar_file = begin_path + '_notif_size_colored.png' + if frm == our_jid and avatar_sha != self.vcard_sha: + gajim.interface.save_avatar_files(frm, photo_decoded, puny_nick) + elif frm != our_jid and (not os.path.exists(avatar_file) or \ + not self.vcard_shas.has_key(frm) or \ + avatar_sha != self.vcard_shas[frm]): + gajim.interface.save_avatar_files(frm, photo_decoded, puny_nick) + else: + for ext in ('.jpeg', '.png', '_notif_size_bw.png', + '_notif_size_colored.png'): + path = begin_path + ext + if os.path.isfile(path): + os.remove(path) + + if frm != our_jid: + if avatar_sha: + self.vcard_shas[frm] = avatar_sha + elif self.vcard_shas.has_key(frm): + del self.vcard_shas[frm] + + vcard['jid'] = frm + vcard['resource'] = resource + if frm == our_jid: + self.dispatch('MYVCARD', vcard) + # we re-send our presence with sha if has changed and if we are + # not invisible + if self.vcard_sha == avatar_sha: + return + self.vcard_sha = avatar_sha + if STATUS_LIST[self.connected] == 'invisible': + return + sshow = helpers.get_xmpp_show(STATUS_LIST[self.connected]) + prio = unicode(gajim.config.get_per('accounts', self.name, + 'priority')) + p = common.xmpp.Presence(typ = None, priority = prio, show = sshow, + status = self.status) + p = self.add_sha(p) + self.connection.send(p) + else: + self.dispatch('VCARD', vcard) + + +# TODO: remove bytestream and disco, vcard maybe later used? +class ConnectionHandlers(ConnectionVcard, ConnectionBytestream, ConnectionDisco): + def __init__(self): + ConnectionVcard.__init__(self) + ConnectionBytestream.__init__(self) + # List of IDs we are waiting answers for {id: (type_of_request, data), } + self.awaiting_answers = {} + # List of IDs that will produce a timeout is answer doesn't arrive + # {time_of_the_timeout: (id, message to send to gui), } + self.awaiting_timeouts = {} + # keep the jids we auto added (transports contacts) to not send the + # SUBSCRIBED event to gui + self.automatically_added = [] + try: + idle.init() + except: + HAS_IDLE = False + + def build_http_auth_answer(self, iq_obj, answer): + if answer == 'yes': + iq = iq_obj.buildReply('result') + elif answer == 'no': + iq = iq_obj.buildReply('error') + iq.setError('not-authorized', 401) + self.connection.send(iq) + + def _HttpAuthCB(self, con, iq_obj): + gajim.log.debug('HttpAuthCB') + opt = gajim.config.get_per('accounts', self.name, 'http_auth') + if opt in ('yes', 'no'): + self.build_http_auth_answer(iq_obj, opt) + else: + id = iq_obj.getTagAttr('confirm', 'id') + method = iq_obj.getTagAttr('confirm', 'method') + url = iq_obj.getTagAttr('confirm', 'url') + self.dispatch('HTTP_AUTH', (method, url, id, iq_obj)); + raise common.xmpp.NodeProcessed + + def _ErrorCB(self, con, iq_obj): + errmsg = iq_obj.getError() + errcode = iq_obj.getErrorCode() + jid_from = helpers.get_full_jid_from_iq(iq_obj) + id = unicode(iq_obj.getID()) + self.dispatch('ERROR_ANSWER', (id, jid_from, errmsg, errcode)) + + def _PrivateCB(self, con, iq_obj): + ''' + Private Data (JEP 048 and 049) + ''' + gajim.log.debug('PrivateCB') + query = iq_obj.getTag('query') + storage = query.getTag('storage') + if storage: + ns = storage.getNamespace() + if ns == 'storage:bookmarks': + # Bookmarked URLs and Conferences + # http://www.jabber.org/jeps/jep-0048.html + confs = storage.getTags('conference') + for conf in confs: + autojoin_val = conf.getAttr('autojoin') + if autojoin_val is None: # not there (it's optional) + autojoin_val = False + print_status = conf.getTagData('print_status') + if not print_status: + print_status = conf.getTagData('show_status') + bm = {'name': conf.getAttr('name'), + 'jid': conf.getAttr('jid'), + 'autojoin': autojoin_val, + 'password': conf.getTagData('password'), + 'nick': conf.getTagData('nick'), + 'print_status': print_status} + + self.bookmarks.append(bm) + self.dispatch('BOOKMARKS', self.bookmarks) + + elif ns == 'storage:metacontacts': + # Metacontact tags + # http://www.jabber.org/jeps/jep-XXXX.html + meta_list = {} + metas = storage.getTags('meta') + for meta in metas: + jid = meta.getAttr('jid') + tag = meta.getAttr('tag') + data = {'jid': jid} + order = meta.getAttr('order') + if order != None: + data['order'] = order + if meta_list.has_key(tag): + meta_list[tag].append(data) + else: + meta_list[tag] = [data] + self.dispatch('METACONTACTS', meta_list) + # We can now continue connection by requesting the roster + self.connection.initRoster() + + elif ns == 'gajim:prefs': + # Preferences data + # http://www.jabber.org/jeps/jep-0049.html + #TODO: implement this + pass + + def _PrivateErrorCB(self, con, iq_obj): + gajim.log.debug('PrivateErrorCB') + query = iq_obj.getTag('query') + storage_tag = query.getTag('storage') + if storage_tag: + ns = storage_tag.getNamespace() + if ns == 'storage:metacontacts': + # Private XML Storage (JEP49) is not supported by server + # Continue connecting + self.connection.initRoster() + + def _rosterSetCB(self, con, iq_obj): + gajim.log.debug('rosterSetCB') + for item in iq_obj.getTag('query').getChildren(): + jid = helpers.parse_jid(item.getAttr('jid')) + name = item.getAttr('name') + sub = item.getAttr('subscription') + ask = item.getAttr('ask') + groups = [] + for group in item.getTags('group'): + groups.append(group.getData()) + self.dispatch('ROSTER_INFO', (jid, name, sub, ask, groups)) + raise common.xmpp.NodeProcessed + + def _VersionCB(self, con, iq_obj): + gajim.log.debug('VersionCB') + iq_obj = iq_obj.buildReply('result') + qp = iq_obj.getTag('query') + qp.setTagData('name', 'Gajim') + qp.setTagData('version', gajim.version) + send_os = gajim.config.get('send_os_info') + if send_os: + qp.setTagData('os', helpers.get_os_info()) + self.connection.send(iq_obj) + raise common.xmpp.NodeProcessed + + def _LastCB(self, con, iq_obj): + gajim.log.debug('IdleCB') + iq_obj = iq_obj.buildReply('result') + qp = iq_obj.getTag('query') + if not HAS_IDLE: + qp.attrs['seconds'] = '0'; + else: + qp.attrs['seconds'] = idle.getIdleSec() + + self.connection.send(iq_obj) + raise common.xmpp.NodeProcessed + + def _LastResultCB(self, con, iq_obj): + gajim.log.debug('LastResultCB') + qp = iq_obj.getTag('query') + seconds = qp.getAttr('seconds') + status = qp.getData() + try: + seconds = int(seconds) + except: + return + who = helpers.get_full_jid_from_iq(iq_obj) + jid_stripped, resource = gajim.get_room_and_nick_from_fjid(who) + self.dispatch('LAST_STATUS_TIME', (jid_stripped, resource, seconds, status)) + + def _VersionResultCB(self, con, iq_obj): + gajim.log.debug('VersionResultCB') + client_info = '' + os_info = '' + qp = iq_obj.getTag('query') + if qp.getTag('name'): + client_info += qp.getTag('name').getData() + if qp.getTag('version'): + client_info += ' ' + qp.getTag('version').getData() + if qp.getTag('os'): + os_info += qp.getTag('os').getData() + who = helpers.get_full_jid_from_iq(iq_obj) + jid_stripped, resource = gajim.get_room_and_nick_from_fjid(who) + self.dispatch('OS_INFO', (jid_stripped, resource, client_info, os_info)) + + + def _gMailNewMailCB(self, con, gm): + '''Called when we get notified of new mail messages in gmail account''' + if not gm.getTag('new-mail'): + return + if gm.getTag('new-mail').getNamespace() == common.xmpp.NS_GMAILNOTIFY: + # we'll now ask the server for the exact number of new messages + jid = gajim.get_jid_from_account(self.name) + gajim.log.debug('Got notification of new gmail e-mail on %s. Asking the server for more info.' % jid) + iq = common.xmpp.Iq(typ = 'get') + iq.setAttr('id', '13') + query = iq.setTag('query') + query.setNamespace(common.xmpp.NS_GMAILNOTIFY) + self.connection.send(iq) + raise common.xmpp.NodeProcessed + + def _gMailQueryCB(self, con, gm): + '''Called when we receive results from Querying the server for mail messages in gmail account''' + if not gm.getTag('mailbox'): + return + if gm.getTag('mailbox').getNamespace() == common.xmpp.NS_GMAILNOTIFY: + newmsgs = gm.getTag('mailbox').getAttr('total-matched') + if newmsgs != '0': + # there are new messages + jid = gajim.get_jid_from_account(self.name) + gajim.log.debug(('You have %s new gmail e-mails on %s.') % (newmsgs, jid)) + self.dispatch('GMAIL_NOTIFY', (jid, newmsgs)) + raise common.xmpp.NodeProcessed + + def _messageCB(self, con, msg): + '''Called when we receive a message''' + msgtxt = msg.getBody() + mtype = msg.getType() + subject = msg.getSubject() # if not there, it's None + tim = msg.getTimestamp() + tim = time.strptime(tim, '%Y%m%dT%H:%M:%S') + tim = time.localtime(timegm(tim)) + frm = helpers.get_full_jid_from_iq(msg) + jid = helpers.get_jid_from_iq(msg) + no_log_for = gajim.config.get_per('accounts', self.name, + 'no_log_for').split() + encrypted = False + chatstate = None + encTag = msg.getTag('x', namespace = common.xmpp.NS_ENCRYPTED) + decmsg = '' + # invitations + invite = None + if not encTag: + invite = msg.getTag('x', namespace = common.xmpp.NS_MUC_USER) + if invite and not invite.getTag('invite'): + invite = None + delayed = msg.getTag('x', namespace = common.xmpp.NS_DELAY) != None + msg_id = None + composing_jep = None + # FIXME: Msn transport (CMSN1.2.1 and PyMSN0.10) do NOT RECOMMENDED + # invitation + # stanza (MUC JEP) remove in 2007, as we do not do NOT RECOMMENDED + xtags = msg.getTags('x') + for xtag in xtags: + if xtag.getNamespace() == common.xmpp.NS_CONFERENCE and not invite: + room_jid = xtag.getAttr('jid') + self.dispatch('GC_INVITATION', (room_jid, frm, '', None)) + return + # chatstates - look for chatstate tags in a message if not delayed + if not delayed: + composing_jep = False + children = msg.getChildren() + for child in children: + if child.getNamespace() == 'http://jabber.org/protocol/chatstates': + chatstate = child.getName() + composing_jep = 'JEP-0085' + break + # No JEP-0085 support, fallback to JEP-0022 + if not chatstate: + chatstate_child = msg.getTag('x', namespace = common.xmpp.NS_EVENT) + if chatstate_child: + chatstate = 'active' + composing_jep = 'JEP-0022' + if not msgtxt and chatstate_child.getTag('composing'): + chatstate = 'composing' + + if encTag and GnuPG.USE_GPG: + #decrypt + encmsg = encTag.getData() + + keyID = gajim.config.get_per('accounts', self.name, 'keyid') + if keyID: + decmsg = self.gpg.decrypt(encmsg, keyID) + if decmsg: + msgtxt = decmsg + encrypted = True + if mtype == 'error': + error_msg = msg.getError() + if not error_msg: + error_msg = msgtxt + msgtxt = None + if self.name not in no_log_for: + gajim.logger.write('error', frm, error_msg, tim = tim, + subject = subject) + self.dispatch('MSGERROR', (frm, msg.getErrorCode(), error_msg, msgtxt, + tim)) + elif mtype == 'groupchat': + if subject: + self.dispatch('GC_SUBJECT', (frm, subject, msgtxt)) + else: + if not msg.getTag('body'): #no + return + # Ignore message from room in which we are not + if not self.last_history_line.has_key(jid): + return + self.dispatch('GC_MSG', (frm, msgtxt, tim)) + if self.name not in no_log_for and jid in self.last_history_line \ + and not int(float(time.mktime(tim))) <= \ + self.last_history_line[jid] and msgtxt: + gajim.logger.write('gc_msg', frm, msgtxt, tim = tim) + elif mtype == 'chat': # it's type 'chat' + if not msg.getTag('body') and chatstate is None: #no + return + if msg.getTag('body') and self.name not in no_log_for and jid not in\ + no_log_for and msgtxt: + msg_id = gajim.logger.write('chat_msg_recv', frm, msgtxt, tim = tim, + subject = subject) + self.dispatch('MSG', (frm, msgtxt, tim, encrypted, mtype, subject, + chatstate, msg_id, composing_jep)) + else: # it's single message + if self.name not in no_log_for and jid not in no_log_for and msgtxt: + gajim.logger.write('single_msg_recv', frm, msgtxt, tim = tim, + subject = subject) + if invite is not None: + item = invite.getTag('invite') + jid_from = item.getAttr('from') + reason = item.getTagData('reason') + item = invite.getTag('password') + password = invite.getTagData('password') + self.dispatch('GC_INVITATION',(frm, jid_from, reason, password)) + else: + self.dispatch('MSG', (frm, msgtxt, tim, encrypted, 'normal', + subject, chatstate, msg_id, composing_jep)) + # END messageCB + + def _presenceCB(self, con, prs): + '''Called when we receive a presence''' + ptype = prs.getType() + if ptype == 'available': + ptype = None + gajim.log.debug('PresenceCB: %s' % ptype) + who = helpers.get_full_jid_from_iq(prs) + jid_stripped, resource = gajim.get_room_and_nick_from_fjid(who) + timestamp = None + is_gc = False # is it a GC presence ? + sigTag = None + avatar_sha = None + transport_auto_auth = False + xtags = prs.getTags('x') + for x in xtags: + if x.getNamespace().startswith(common.xmpp.NS_MUC): + is_gc = True + if x.getNamespace() == common.xmpp.NS_SIGNED: + sigTag = x + if x.getNamespace() == common.xmpp.NS_VCARD_UPDATE: + avatar_sha = x.getTagData('photo') + if x.getNamespace() == common.xmpp.NS_DELAY: + # JEP-0091 + tim = prs.getTimestamp() + tim = time.strptime(tim, '%Y%m%dT%H:%M:%S') + timestamp = time.localtime(timegm(tim)) + if x.getNamespace() == 'http://delx.cjb.net/protocol/roster-subsync': + # see http://trac.gajim.org/ticket/326 + agent = gajim.get_server_from_jid(jid_stripped) + if self.connection.getRoster().getItem(agent): # to be sure it's a transport contact + transport_auto_auth = True + + no_log_for = gajim.config.get_per('accounts', self.name, + 'no_log_for').split() + status = prs.getStatus() + show = prs.getShow() + if not show in STATUS_LIST: + show = '' # We ignore unknown show + if not ptype and not show: + show = 'online' + elif ptype == 'unavailable': + show = 'offline' + + prio = prs.getPriority() + try: + prio = int(prio) + except: + prio = 0 + keyID = '' + if sigTag and GnuPG.USE_GPG: + #verify + sigmsg = sigTag.getData() + keyID = self.gpg.verify(status, sigmsg) + + if is_gc: + if ptype == 'error': + errmsg = prs.getError() + errcode = prs.getErrorCode() + if errcode == '502': # Internal Timeout: + self.dispatch('NOTIFY', (jid_stripped, 'error', errmsg, resource, + prio, keyID, timestamp)) + elif errcode == '401': # password required to join + self.dispatch('ERROR', (_('Unable to join room'), + _('A password is required to join this room.'))) + elif errcode == '403': # we are banned + self.dispatch('ERROR', (_('Unable to join room'), + _('You are banned from this room.'))) + elif errcode == '404': # room does not exist + self.dispatch('ERROR', (_('Unable to join room'), + _('Such room does not exist.'))) + elif errcode == '405': + self.dispatch('ERROR', (_('Unable to join room'), + _('Room creation is restricted.'))) + elif errcode == '406': + self.dispatch('ERROR', (_('Unable to join room'), + _('Your registered nickname must be used.'))) + elif errcode == '407': + self.dispatch('ERROR', (_('Unable to join room'), + _('You are not in the members list.'))) + elif errcode == '409': # nick conflict + # the jid_from in this case is FAKE JID: room_jid/nick + # resource holds the bad nick so propose a new one + proposed_nickname = resource + \ + gajim.config.get('gc_proposed_nick_char') + room_jid = gajim.get_room_from_fjid(who) + self.dispatch('ASK_NEW_NICK', (room_jid, _('Unable to join room'), + _('Your desired nickname is in use or registered by another occupant.\nPlease specify another nickname below:'), proposed_nickname)) + else: # print in the window the error + self.dispatch('ERROR_ANSWER', ('', jid_stripped, + errmsg, errcode)) + if not ptype or ptype == 'unavailable': + if gajim.config.get('log_contact_status_changes') and self.name\ + not in no_log_for and jid_stripped not in no_log_for: + gajim.logger.write('gcstatus', who, status, show) + if avatar_sha: + if self.vcard_shas.has_key(who): + if avatar_sha != self.vcard_shas[who]: + # avatar has been updated + self.request_vcard(who, True) + else: + self.vcard_shas[who] = avatar_sha + self.dispatch('GC_NOTIFY', (jid_stripped, show, status, resource, + prs.getRole(), prs.getAffiliation(), prs.getJid(), + prs.getReason(), prs.getActor(), prs.getStatusCode(), + prs.getNewNick())) + return + + if ptype == 'subscribe': + gajim.log.debug('subscribe request from %s' % who) + if gajim.config.get('alwaysauth') or who.find("@") <= 0 or \ + jid_stripped in self.jids_for_auto_auth or transport_auto_auth: + if self.connection: + p = common.xmpp.Presence(who, 'subscribed') + p = self.add_sha(p) + self.connection.send(p) + if who.find("@") <= 0 or transport_auto_auth: + self.dispatch('NOTIFY', (jid_stripped, 'offline', 'offline', + resource, prio, keyID, timestamp)) + if transport_auto_auth: + self.automatically_added.append(jid_stripped) + self.request_subscription(jid_stripped) + else: + if not status: + status = _('I would like to add you to my roster.') + self.dispatch('SUBSCRIBE', (who, status)) + elif ptype == 'subscribed': + if jid_stripped in self.automatically_added: + self.automatically_added.remove(jid_stripped) + else: + self.dispatch('SUBSCRIBED', (jid_stripped, resource)) + # BE CAREFUL: no con.updateRosterItem() in a callback + gajim.log.debug(_('we are now subscribed to %s') % who) + elif ptype == 'unsubscribe': + gajim.log.debug(_('unsubscribe request from %s') % who) + elif ptype == 'unsubscribed': + gajim.log.debug(_('we are now unsubscribed from %s') % who) + self.dispatch('UNSUBSCRIBED', jid_stripped) + elif ptype == 'error': + errmsg = prs.getError() + errcode = prs.getErrorCode() + if errcode == '502': # Internal Timeout: + self.dispatch('NOTIFY', (jid_stripped, 'error', errmsg, resource, + prio, keyID, timestamp)) + else: # print in the window the error + self.dispatch('ERROR_ANSWER', ('', jid_stripped, + errmsg, errcode)) + + if avatar_sha and ptype != 'error': + if not self.vcard_shas.has_key(jid_stripped): + cached_vcard = self.get_cached_vcard(jid_stripped) + if cached_vcard and cached_vcard.has_key('PHOTO') and \ + cached_vcard['PHOTO'].has_key('SHA'): + self.vcard_shas[jid_stripped] = cached_vcard['PHOTO']['SHA'] + else: + self.vcard_shas[jid_stripped] = '' + if avatar_sha != self.vcard_shas[jid_stripped]: + # avatar has been updated + self.request_vcard(jid_stripped) + if not ptype or ptype == 'unavailable': + if gajim.config.get('log_contact_status_changes') and self.name\ + not in no_log_for and jid_stripped not in no_log_for: + gajim.logger.write('status', jid_stripped, status, show) + self.dispatch('NOTIFY', (jid_stripped, show, status, resource, prio, + keyID, timestamp)) + # END presenceCB + def _StanzaArrivedCB(self, con, obj): + self.last_io = gajim.idlequeue.current_time() + + + def parse_data_form(self, node): + dic = {} + tag = node.getTag('title') + if tag: + dic['title'] = tag.getData() + tag = node.getTag('instructions') + if tag: + dic['instructions'] = tag.getData() + i = 0 + for child in node.getChildren(): + if child.getName() != 'field': + continue + var = child.getAttr('var') + ctype = child.getAttr('type') + label = child.getAttr('label') + if not var and ctype != 'fixed': # We must have var if type != fixed + continue + dic[i] = {} + if var: + dic[i]['var'] = var + if ctype: + dic[i]['type'] = ctype + if label: + dic[i]['label'] = label + tags = child.getTags('value') + if len(tags): + dic[i]['values'] = [] + for tag in tags: + data = tag.getData() + if ctype == 'boolean': + if data in ('yes', 'true', 'assent', '1'): + data = True + else: + data = False + dic[i]['values'].append(data) + tag = child.getTag('desc') + if tag: + dic[i]['desc'] = tag.getData() + option_tags = child.getTags('option') + if len(option_tags): + dic[i]['options'] = {} + j = 0 + for option_tag in option_tags: + dic[i]['options'][j] = {} + label = option_tag.getAttr('label') + tags = option_tag.getTags('value') + dic[i]['options'][j]['values'] = [] + for tag in tags: + dic[i]['options'][j]['values'].append(tag.getData()) + if not label: + label = dic[i]['options'][j]['values'][0] + dic[i]['options'][j]['label'] = label + j += 1 + if not dic[i].has_key('values'): + dic[i]['values'] = [dic[i]['options'][0]['values'][0]] + i += 1 + return dic + + def _MucOwnerCB(self, con, iq_obj): + gajim.log.debug('MucOwnerCB') + qp = iq_obj.getQueryPayload() + node = None + for q in qp: + if q.getNamespace() == common.xmpp.NS_DATA: + node = q + if not node: + return + dic = self.parse_data_form(node) + self.dispatch('GC_CONFIG', (helpers.get_full_jid_from_iq(iq_obj), dic)) + + def _MucAdminCB(self, con, iq_obj): + gajim.log.debug('MucAdminCB') + items = iq_obj.getTag('query', namespace = common.xmpp.NS_MUC_ADMIN).getTags('item') + list = {} + affiliation = '' + for item in items: + if item.has_attr('jid') and item.has_attr('affiliation'): + jid = item.getAttr('jid') + affiliation = item.getAttr('affiliation') + list[jid] = {'affiliation': affiliation} + if item.has_attr('nick'): + list[jid]['nick'] = item.getAttr('nick') + if item.has_attr('role'): + list[jid]['role'] = item.getAttr('role') + reason = item.getTagData('reason') + if reason: + list[jid]['reason'] = reason + + self.dispatch('GC_AFFILIATION', (helpers.get_full_jid_from_iq(iq_obj), + affiliation, list)) + + def _MucErrorCB(self, con, iq_obj): + gajim.log.debug('MucErrorCB') + jid = helpers.get_full_jid_from_iq(iq_obj) + errmsg = iq_obj.getError() + errcode = iq_obj.getErrorCode() + self.dispatch('MSGERROR', (jid, errcode, errmsg)) + + def _getRosterCB(self, con, iq_obj): + if not self.connection: + return + self.connection.getRoster(self._on_roster_set) + if gajim.config.get_per('accounts', self.name, 'use_ft_proxies'): + self.discover_ft_proxies() + + def discover_ft_proxies(self): + cfg_proxies = gajim.config.get_per('accounts', self.name, + 'file_transfer_proxies') + if cfg_proxies: + proxies = map(lambda e:e.strip(), cfg_proxies.split(',')) + for proxy in proxies: + gajim.proxy65_manager.resolve(proxy, self.connection) + self.discoverItems(gajim.config.get_per('accounts', self.name, + 'hostname'), id_prefix='p') + + def _on_roster_set(self, roster): + raw_roster = roster.getRaw() + roster = {} + our_jid = helpers.parse_jid(gajim.get_jid_from_account(self.name)) + for jid in raw_roster: + try: + j = helpers.parse_jid(jid) + except: + print >> sys.stderr, _('JID %s is not RFC compliant. It will not be added to your roster. Use roster management tools such as http://jru.jabberstudio.org/ to remove it') % jid + else: + infos = raw_roster[jid] + if jid != our_jid and (not infos['subscription'] or infos['subscription'] == \ + 'none') and (not infos['ask'] or infos['ask'] == 'none') and not infos['name'] \ + and not infos['groups']: + # remove this useless item, it won't be shown in roster anyway + self.connection.getRoster().delItem(jid) + elif jid != our_jid: # don't add our jid + roster[j] = raw_roster[jid] + + self.dispatch('ROSTER', roster) + + # continue connection + if self.connected > 1 and self.continue_connect_info: + show = self.continue_connect_info[0] + msg = self.continue_connect_info[1] + signed = self.continue_connect_info[2] + self.connected = STATUS_LIST.index(show) + sshow = helpers.get_xmpp_show(show) + # send our presence + if show == 'invisible': + self.send_invisible_presence(msg, signed, True) + return + prio = unicode(gajim.config.get_per('accounts', self.name, + 'priority')) + vcard = self.get_cached_vcard(jid) + if vcard and vcard.has_key('PHOTO') and vcard['PHOTO'].has_key('SHA'): + self.vcard_sha = vcard['PHOTO']['SHA'] + p = common.xmpp.Presence(typ = None, priority = prio, show = sshow) + p = self.add_sha(p) + if msg: + p.setStatus(msg) + if signed: + p.setTag(common.xmpp.NS_SIGNED + ' x').setData(signed) + + if self.connection: + self.connection.send(p) + self.dispatch('STATUS', show) + # ask our VCard + self.request_vcard(None) + + # Get bookmarks from private namespace + self.get_bookmarks() + + # If it's a gmail account, + # inform the server that we want e-mail notifications + if gajim.get_server_from_jid(our_jid) == 'gmail.com': + gajim.log.debug(('%s is a gmail account. Setting option ' + 'to get e-mail notifications on the server.') % (our_jid)) + iq = common.xmpp.Iq(typ = 'set', to = our_jid) + iq.setAttr('id', 'MailNotify') + query = iq.setTag('usersetting') + query.setNamespace(common.xmpp.NS_GTALKSETTING) + query = query.setTag('mailnotifications') + query.setAttr('value', 'true') + self.connection.send(iq) + # Ask how many messages there are now + iq = common.xmpp.Iq(typ = 'get') + iq.setAttr('id', '13') + query = iq.setTag('query') + query.setNamespace(common.xmpp.NS_GMAILNOTIFY) + self.connection.send(iq) + + #Inform GUI we just signed in + self.dispatch('SIGNED_IN', ()) + self.continue_connect_info = None + + def _register_handlers(self, con, con_type): + # try to find another way to register handlers in each class + # that defines handlers + con.RegisterHandler('message', self._messageCB) + con.RegisterHandler('presence', self._presenceCB) + con.RegisterHandler('iq', self._vCardCB, 'result', + common.xmpp.NS_VCARD) + con.RegisterHandler('iq', self._rosterSetCB, 'set', + common.xmpp.NS_ROSTER) + con.RegisterHandler('iq', self._siSetCB, 'set', + common.xmpp.NS_SI) + con.RegisterHandler('iq', self._siErrorCB, 'error', + common.xmpp.NS_SI) + con.RegisterHandler('iq', self._siResultCB, 'result', + common.xmpp.NS_SI) + con.RegisterHandler('iq', self._discoGetCB, 'get', + common.xmpp.NS_DISCO) + con.RegisterHandler('iq', self._bytestreamSetCB, 'set', + common.xmpp.NS_BYTESTREAM) + con.RegisterHandler('iq', self._bytestreamResultCB, 'result', + common.xmpp.NS_BYTESTREAM) + con.RegisterHandler('iq', self._bytestreamErrorCB, 'error', + common.xmpp.NS_BYTESTREAM) + con.RegisterHandler('iq', self._DiscoverItemsCB, 'result', + common.xmpp.NS_DISCO_ITEMS) + con.RegisterHandler('iq', self._DiscoverItemsErrorCB, 'error', + common.xmpp.NS_DISCO_ITEMS) + con.RegisterHandler('iq', self._DiscoverInfoCB, 'result', + common.xmpp.NS_DISCO_INFO) + con.RegisterHandler('iq', self._DiscoverInfoErrorCB, 'error', + common.xmpp.NS_DISCO_INFO) + con.RegisterHandler('iq', self._VersionCB, 'get', + common.xmpp.NS_VERSION) + con.RegisterHandler('iq', self._LastCB, 'get', + common.xmpp.NS_LAST) + con.RegisterHandler('iq', self._LastResultCB, 'result', + common.xmpp.NS_LAST) + con.RegisterHandler('iq', self._VersionResultCB, 'result', + common.xmpp.NS_VERSION) + con.RegisterHandler('iq', self._MucOwnerCB, 'result', + common.xmpp.NS_MUC_OWNER) + con.RegisterHandler('iq', self._MucAdminCB, 'result', + common.xmpp.NS_MUC_ADMIN) + con.RegisterHandler('iq', self._getRosterCB, 'result', + common.xmpp.NS_ROSTER) + con.RegisterHandler('iq', self._PrivateCB, 'result', + common.xmpp.NS_PRIVATE) + con.RegisterHandler('iq', self._PrivateErrorCB, 'error', + common.xmpp.NS_PRIVATE) + con.RegisterHandler('iq', self._HttpAuthCB, 'get', + common.xmpp.NS_HTTP_AUTH) + con.RegisterHandler('iq', self._gMailNewMailCB, 'set', + common.xmpp.NS_GMAILNOTIFY) + con.RegisterHandler('iq', self._gMailQueryCB, 'result', + common.xmpp.NS_GMAILNOTIFY) + con.RegisterHandler('iq', self._DiscoverInfoGetCB, 'get', + common.xmpp.NS_DISCO_INFO) + con.RegisterHandler('iq', self._ErrorCB, 'error') + con.RegisterHandler('iq', self._IqCB) + con.RegisterHandler('iq', self._StanzaArrivedCB) + con.RegisterHandler('iq', self._ResultCB, 'result') + con.RegisterHandler('presence', self._StanzaArrivedCB) + con.RegisterHandler('message', self._StanzaArrivedCB) diff --git a/src/common/connection_zeroconf.py b/src/common/connection_zeroconf.py new file mode 100644 index 000000000..1126659c0 --- /dev/null +++ b/src/common/connection_zeroconf.py @@ -0,0 +1,1079 @@ +## common/connection.py +## +## Contributors for this file: +## - Yann Le Boulanger +## - Nikos Kouremenos +## - Dimitur Kirov +## - Travis Shirk +## +## Copyright (C) 2003-2004 Yann Le Boulanger +## Vincent Hanquez +## Copyright (C) 2005 Yann Le Boulanger +## Vincent Hanquez +## Nikos Kouremenos +## Dimitur Kirov +## Travis Shirk +## Norman Rasmussen +## +## This program is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published +## by the Free Software Foundation; version 2 only. +## +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. +## + + +import os +import random +random.seed() + +import signal +if os.name != 'nt': + signal.signal(signal.SIGPIPE, signal.SIG_DFL) + +import common.xmpp +from common import helpers +from common import gajim +from common import GnuPG + +from connection_handlers_zeroconf import * +USE_GPG = GnuPG.USE_GPG + +from common import i18n +_ = i18n._ + +class ConnectionZeroconf(ConnectionHandlersZeroconf): + '''Connection class''' + def __init__(self, name): + ConnectionHandlersZeroconf.__init__(self) + self.name = name + self.connected = 0 # offline + self.connection = None # xmpppy ClientCommon instance + # this property is used to prevent double connections + self.last_connection = None # last ClientCommon instance + self.gpg = None + self.status = '' + self.old_show = '' + # increase/decrease default timeout for server responses + self.try_connecting_for_foo_secs = 45 + # holds the actual hostname to which we are connected + self.connected_hostname = None + self.time_to_reconnect = None + self.new_account_info = None + self.bookmarks = [] + self.on_purpose = False + self.last_io = gajim.idlequeue.current_time() + self.last_sent = [] + self.last_history_line = {} + self.password = gajim.config.get_per('accounts', name, 'password') + self.server_resource = gajim.config.get_per('accounts', name, 'resource') + if gajim.config.get_per('accounts', self.name, 'keep_alives_enabled'): + self.keepalives = gajim.config.get_per('accounts', self.name,'keep_alive_every_foo_secs') + else: + self.keepalives = 0 + self.privacy_rules_supported = False + # Do we continue connection when we get roster (send presence,get vcard...) + self.continue_connect_info = None + if USE_GPG: + self.gpg = GnuPG.GnuPG() + gajim.config.set('usegpg', True) + else: + gajim.config.set('usegpg', False) + + self.on_connect_success = None + self.on_connect_failure = None + self.retrycount = 0 + self.jids_for_auto_auth = [] # list of jid to auto-authorize + + # END __init__ + def put_event(self, ev): + if gajim.handlers.has_key(ev[0]): + gajim.handlers[ev[0]](self.name, ev[1]) + + def dispatch(self, event, data): + '''always passes account name as first param''' + self.put_event((event, data)) + + + def _reconnect(self): + # Do not try to reco while we are already trying +''' self.time_to_reconnect = None + if self.connected < 2: #connection failed + gajim.log.debug('reconnect') + self.retrycount += 1 + signed = self.get_signed_msg(self.status) + self.on_connect_auth = self._init_roster + self.connect_and_init(self.old_show, self.status, signed) + else: + # reconnect succeeded + self.time_to_reconnect = None + self.retrycount = 0 ''' + + self.time_to_reconnect = None + self.retrycount = 0 + gajim.log.debug('reconnect') + signed = self.get_signed_msg(self.status) + + + # We are doing disconnect at so many places, better use one function in all + def disconnect(self, on_purpose = False): + self.on_purpose = on_purpose + self.connected = 0 + self.time_to_reconnect = None + if self.connection: + # make sure previous connection is completely closed + gajim.proxy65_manager.disconnect(self.connection) + self.connection.disconnect() + self.last_connection = None + self.connection = None + + def _disconnectedReconnCB(self): + '''Called when we are disconnected''' + gajim.log.debug('disconnectedReconnCB') + if self.connected > 1: + # we cannot change our status to offline or connectiong + # after we auth to server + self.old_show = STATUS_LIST[self.connected] + self.connected = 0 + self.dispatch('STATUS', 'offline') + if not self.on_purpose: + self.disconnect() + if gajim.config.get_per('accounts', self.name, 'autoreconnect') \ + and self.retrycount <= 10: + self.connected = 1 + self.dispatch('STATUS', 'connecting') + self.time_to_reconnect = 10 + # this check has moved from _reconnect method + if self.retrycount > 5: + self.time_to_reconnect = 20 + else: + self.time_to_reconnect = 10 + gajim.idlequeue.set_alarm(self._reconnect_alarm, + self.time_to_reconnect) + elif self.on_connect_failure: + self.on_connect_failure() + self.on_connect_failure = None + else: + # show error dialog + self._connection_lost() + else: + self.disconnect() + self.on_purpose = False + # END disconenctedReconnCB + + def _connection_lost(self): + self.disconnect(on_purpose = False) + self.dispatch('STATUS', 'offline') + self.dispatch('ERROR', + (_('Connection with account "%s" has been lost') % self.name, + _('To continue sending and receiving messages, you will need to reconnect.'))) + + def _event_dispatcher(self, realm, event, data): + if realm == common.xmpp.NS_REGISTER: + if event == common.xmpp.features_nb.REGISTER_DATA_RECEIVED: + # data is (agent, DataFrom, is_form) + if self.new_account_info and\ + self.new_account_info['hostname'] == data[0]: + #it's a new account + if not data[1]: # wrong answer + print self.connection.lastErr + self.dispatch('ACC_NOT_OK', ( + _('Transport %s answered wrongly to register request.') % \ + data[0])) + return + req = data[1].asDict() + req['username'] = self.new_account_info['name'] + req['password'] = self.new_account_info['password'] + def _on_register_result(result): + if not common.xmpp.isResultNode(result): + self.dispatch('ACC_NOT_OK', (result.getError())) + return + self.connected = 0 + self.password = self.new_account_info['password'] + if USE_GPG: + self.gpg = GnuPG.GnuPG() + gajim.config.set('usegpg', True) + else: + gajim.config.set('usegpg', False) + gajim.connections[self.name] = self + self.dispatch('ACC_OK', (self.new_account_info)) + self.new_account_info = None + self.connection = None + common.xmpp.features_nb.register(self.connection, data[0], + req, _on_register_result) + return + if not data[1]: # wrong answer + self.dispatch('ERROR', (_('Invalid answer'), + _('Transport %s answered wrongly to register request.') % \ + data[0])) + return + is_form = data[2] + if is_form: + conf = self.parse_data_form(data[1]) + else: + conf = data[1].asDict() + self.dispatch('REGISTER_AGENT_INFO', (data[0], conf, is_form)) + elif realm == '': + if event == common.xmpp.transports.DATA_RECEIVED: + self.dispatch('STANZA_ARRIVED', unicode(data, errors = 'ignore')) + elif event == common.xmpp.transports.DATA_SENT: + self.dispatch('STANZA_SENT', unicode(data)) + + def select_next_host(self, hosts): + hosts_best_prio = [] + best_prio = 65535 + sum_weight = 0 + for h in hosts: + if h['prio'] < best_prio: + hosts_best_prio = [h] + best_prio = h['prio'] + sum_weight = h['weight'] + elif h['prio'] == best_prio: + hosts_best_prio.append(h) + sum_weight += h['weight'] + if len(hosts_best_prio) == 1: + return hosts_best_prio[0] + r = random.randint(0, sum_weight) + min_w = sum_weight + # We return the one for which has the minimum weight and weight >= r + for h in hosts_best_prio: + if h['weight'] >= r: + if h['weight'] <= min_w: + min_w = h['weight'] + return h + + def connect(self, data = None): + # TODO: remove any server connection and get zeroconf instance instead + # get presence information from there + + ''' Start a connection to the Jabber server. + Returns connection, and connection type ('tls', 'ssl', 'tcp', '') + data MUST contain name, hostname, resource, usessl, proxy, + use_custom_host, custom_host (if use_custom_host), custom_port (if + use_custom_host), ''' + if self.connection: + return self.connection, '' + + if data: + name = data['name'] + hostname = data['hostname'] + resource = data['resource'] + usessl = data['usessl'] + self.try_connecting_for_foo_secs = 45 + p = data['proxy'] + use_srv = True + use_custom = data['use_custom_host'] + if use_custom: + custom_h = data['custom_host'] + custom_p = data['custom_port'] + else: + name = gajim.config.get_per('accounts', self.name, 'name') + hostname = gajim.config.get_per('accounts', self.name, 'hostname') + resource = gajim.config.get_per('accounts', self.name, 'resource') + usessl = gajim.config.get_per('accounts', self.name, 'usessl') + self.try_connecting_for_foo_secs = gajim.config.get_per('accounts', + self.name, 'try_connecting_for_foo_secs') + p = gajim.config.get_per('accounts', self.name, 'proxy') + use_srv = gajim.config.get_per('accounts', self.name, 'use_srv') + use_custom = gajim.config.get_per('accounts', self.name, + 'use_custom_host') + custom_h = gajim.config.get_per('accounts', self.name, 'custom_host') + custom_p = gajim.config.get_per('accounts', self.name, 'custom_port') + + #create connection if it doesn't already exist + self.connected = 1 + if p and p in gajim.config.get_per('proxies'): + proxy = {'host': gajim.config.get_per('proxies', p, 'host')} + proxy['port'] = gajim.config.get_per('proxies', p, 'port') + proxy['user'] = gajim.config.get_per('proxies', p, 'user') + proxy['password'] = gajim.config.get_per('proxies', p, 'pass') + else: + proxy = None + + h = hostname + p = 5222 + # autodetect [for SSL in 5223/443 and for TLS if broadcasted] + secur = None + if usessl: + p = 5223 + secur = 1 # 1 means force SSL no matter what the port will be + use_srv = False # wants ssl? disable srv lookup + if use_custom: + h = custom_h + p = custom_p + use_srv = False + + hosts = [] + # SRV resolver + self._proxy = proxy + self._secure = secur + self._hosts = [ {'host': h, 'port': p, 'prio': 10, 'weight': 10} ] + self._hostname = hostname + if use_srv: + # add request for srv query to the resolve, on result '_on_resolve' will be called + gajim.resolver.resolve('_xmpp-client._tcp.' + h.encode('utf-8'), self._on_resolve) + else: + self._on_resolve('', []) + + def _on_resolve(self, host, result_array): + # SRV query returned at least one valid result, we put it in hosts dict + if len(result_array) != 0: + self._hosts = [i for i in result_array] + self.connect_to_next_host() + + def connect_to_next_host(self, retry = False): + if len(self._hosts): + if self.last_connection: + self.last_connection.socket.disconnect() + self.last_connection = None + self.connection = None + if gajim.verbose: + con = common.xmpp.NonBlockingClient(self._hostname, caller = self, + on_connect = self.on_connect_success, + on_connect_failure = self.connect_to_next_host) + else: + con = common.xmpp.NonBlockingClient(self._hostname, debug = [], caller = self, + on_connect = self.on_connect_success, + on_connect_failure = self.connect_to_next_host) + self.last_connection = con + # increase default timeout for server responses + common.xmpp.dispatcher_nb.DEFAULT_TIMEOUT_SECONDS = self.try_connecting_for_foo_secs + con.set_idlequeue(gajim.idlequeue) + host = self.select_next_host(self._hosts) + self._current_host = host + self._hosts.remove(host) + con.connect((host['host'], host['port']), proxy = self._proxy, + secure = self._secure) + return + else: + if not retry or self.retrycount > 10: + self.retrycount = 0 + self.time_to_reconnect = None + if self.on_connect_failure: + self.on_connect_failure() + self.on_connect_failure = None + else: + # shown error dialog + self._connection_lost() + else: + # try reconnect if connection has failed before auth to server + self._disconnectedReconnCB() + + def _connect_failure(self, con_type = None): + if not con_type: + # we are not retrying, and not conecting + if not self.retrycount and self.connected != 0: + self.disconnect(on_purpose = True) + self.dispatch('STATUS', 'offline') + self.dispatch('ERROR', (_('Could not connect to "%s"') % self._hostname, + _('Check your connection or try again later.'))) + + def _connect_success(self, con, con_type): + if not self.connected: # We went offline during connecting process + # FIXME - not possible, maybe it was when we used threads + return + self.hosts = [] + if not con_type: + gajim.log.debug('Could not connect to %s:%s' % (self._current_host['host'], + self._current_host['port'])) + self.connected_hostname = self._current_host['host'] + self.on_connect_failure = None + con.RegisterDisconnectHandler(self._disconnectedReconnCB) + gajim.log.debug(_('Connected to server %s:%s with %s') % (self._current_host['host'], + self._current_host['port'], con_type)) + # Ask metacontacts before roster + self.get_metacontacts() + self._register_handlers(con, con_type) + return True + + def _register_handlers(self, con, con_type): + self.peerhost = con.get_peerhost() + # notify the gui about con_type + self.dispatch('CON_TYPE', con_type) + ConnectionHandlers._register_handlers(self, con, con_type) + name = gajim.config.get_per('accounts', self.name, 'name') + hostname = gajim.config.get_per('accounts', self.name, 'hostname') + resource = gajim.config.get_per('accounts', self.name, 'resource') + self.connection = con + con.auth(name, self.password, resource, 1, self.__on_auth) + + def __on_auth(self, con, auth): + if not con: + self.disconnect(on_purpose = True) + self.dispatch('STATUS', 'offline') + self.dispatch('ERROR', (_('Could not connect to "%s"') % self._hostname, + _('Check your connection or try again later'))) + if self.on_connect_auth: + self.on_connect_auth(None) + self.on_connect_auth = None + return + if not self.connected: # We went offline during connecting process + if self.on_connect_auth: + self.on_connect_auth(None) + self.on_connect_auth = None + return + if hasattr(con, 'Resource'): + self.server_resource = con.Resource + if auth: + self.last_io = gajim.idlequeue.current_time() + self.connected = 2 + if self.on_connect_auth: + self.on_connect_auth(con) + self.on_connect_auth = None + else: + # Forget password if needed + if not gajim.config.get_per('accounts', self.name, 'savepass'): + self.password = None + gajim.log.debug("Couldn't authenticate to %s" % self._hostname) + self.disconnect(on_purpose = True) + self.dispatch('STATUS', 'offline') + self.dispatch('ERROR', (_('Authentication failed with "%s"') % self._hostname, + _('Please check your login and password for correctness.'))) + if self.on_connect_auth: + self.on_connect_auth(None) + self.on_connect_auth = None + # END connect + + def quit(self, kill_core): + if kill_core and self.connected > 1: + self.disconnect(on_purpose = True) + + def build_privacy_rule(self, name, action): + '''Build a Privacy rule stanza for invisibility''' + iq = common.xmpp.Iq('set', common.xmpp.NS_PRIVACY, xmlns = '') + l = iq.getTag('query').setTag('list', {'name': name}) + i = l.setTag('item', {'action': action, 'order': '1'}) + i.setTag('presence-out') + return iq + + def activate_privacy_rule(self, name): + '''activate a privacy rule''' + iq = common.xmpp.Iq('set', common.xmpp.NS_PRIVACY, xmlns = '') + iq.getTag('query').setTag('active', {'name': name}) + self.connection.send(iq) + + def send_invisible_presence(self, msg, signed, initial = False): + # try to set the privacy rule + iq = self.build_privacy_rule('invisible', 'deny') + self.connection.SendAndCallForResponse(iq, self._continue_invisible, + {'msg': msg, 'signed': signed, 'initial': initial}) + + def _continue_invisible(self, con, iq_obj, msg, signed, initial): + ptype = '' + show = '' + # FIXME: JEP 126 need some modifications (see http://lists.jabber.ru/pipermail/ejabberd/2005-July/001252.html). So I disable it for the moment + if 1 or iq_obj.getType() == 'error': #server doesn't support privacy lists + # We use the old way which is not xmpp complient + ptype = 'invisible' + show = 'invisible' + else: + # active the privacy rule + self.privacy_rules_supported = True + self.activate_privacy_rule('invisible') + prio = unicode(gajim.config.get_per('accounts', self.name, 'priority')) + p = common.xmpp.Presence(typ = ptype, priority = prio, show = show) + p = self.add_sha(p, ptype != 'unavailable') + if msg: + p.setStatus(msg) + if signed: + p.setTag(common.xmpp.NS_SIGNED + ' x').setData(signed) + self.connection.send(p) + self.dispatch('STATUS', 'invisible') + if initial: + #ask our VCard + self.request_vcard(None) + + #Get bookmarks from private namespace + self.get_bookmarks() + + #Inform GUI we just signed in + self.dispatch('SIGNED_IN', ()) + + def test_gpg_passphrase(self, password): + self.gpg.passphrase = password + keyID = gajim.config.get_per('accounts', self.name, 'keyid') + signed = self.gpg.sign('test', keyID) + self.gpg.password = None + return signed != 'BAD_PASSPHRASE' + + def get_signed_msg(self, msg): + signed = '' + keyID = gajim.config.get_per('accounts', self.name, 'keyid') + if keyID and USE_GPG: + use_gpg_agent = gajim.config.get('use_gpg_agent') + if self.connected < 2 and self.gpg.passphrase is None and \ + not use_gpg_agent: + # We didn't set a passphrase + self.dispatch('ERROR', (_('OpenPGP passphrase was not given'), + #%s is the account name here + _('You will be connected to %s without OpenPGP.') % self.name)) + elif self.gpg.passphrase is not None or use_gpg_agent: + signed = self.gpg.sign(msg, keyID) + if signed == 'BAD_PASSPHRASE': + signed = '' + if self.connected < 2: + self.dispatch('BAD_PASSPHRASE', ()) + return signed + + def connect_and_auth(self): + self.on_connect_success = self._connect_success + self.on_connect_failure = self._connect_failure + self.connect() + + def connect_and_init(self, show, msg, signed): + self.continue_connect_info = [show, msg, signed] + self.on_connect_auth = self._init_roster + self.connect_and_auth() + + def _init_roster(self, con): + self.connection = con + if self.connection: + con.set_send_timeout(self.keepalives, self.send_keepalive) + self.connection.onreceive(None) + # Ask metacontacts before roster + self.get_metacontacts() + + def change_status(self, show, msg, sync = False, auto = False): + if not show in STATUS_LIST: + return -1 + sshow = helpers.get_xmpp_show(show) + if not msg: + msg = '' + keyID = gajim.config.get_per('accounts', self.name, 'keyid') + if keyID and USE_GPG and not msg: + lowered_uf_status_msg = helpers.get_uf_show(show).lower() + # do not show I'm invisible! + if lowered_uf_status_msg == _('invisible'): + lowered_uf_status_msg = _('offline') + msg = _("I'm %s") % lowered_uf_status_msg + signed = '' + if not auto and not show == 'offline': + signed = self.get_signed_msg(msg) + self.status = msg + if show != 'offline' and not self.connected: + # set old_show to requested 'show' in case we need to + # recconect before we auth to server + self.old_show = show + self.on_purpose = False + self.connect_and_init(show, msg, signed) + + elif show == 'offline' and self.connected: + self.connected = 0 + if self.connection: + self.on_purpose = True + p = common.xmpp.Presence(typ = 'unavailable') + p = self.add_sha(p, False) + if msg: + p.setStatus(msg) + self.remove_all_transfers() + self.time_to_reconnect = None + self.connection.start_disconnect(p, self._on_disconnected) + else: + self.time_to_reconnect = None + self._on_disconnected() + + elif show != 'offline' and self.connected: + # dont'try to connect, when we are in state 'connecting' + if self.connected == 1: + return + was_invisible = self.connected == STATUS_LIST.index('invisible') + self.connected = STATUS_LIST.index(show) + if show == 'invisible': + self.send_invisible_presence(msg, signed) + return + if was_invisible and self.privacy_rules_supported: + iq = self.build_privacy_rule('visible', 'allow') + self.connection.send(iq) + self.activate_privacy_rule('visible') + prio = unicode(gajim.config.get_per('accounts', self.name, + 'priority')) + p = common.xmpp.Presence(typ = None, priority = prio, show = sshow) + p = self.add_sha(p) + if msg: + p.setStatus(msg) + if signed: + p.setTag(common.xmpp.NS_SIGNED + ' x').setData(signed) + if self.connection: + self.connection.send(p) + self.dispatch('STATUS', show) + + def _on_disconnected(self): + ''' called when a disconnect request has completed successfully''' + self.dispatch('STATUS', 'offline') + self.disconnect() + + def get_status(self): + return STATUS_LIST[self.connected] + + def send_motd(self, jid, subject = '', msg = ''): + if not self.connection: + return + msg_iq = common.xmpp.Message(to = jid, body = msg, subject = subject) + self.connection.send(msg_iq) + + def send_message(self, jid, msg, keyID, type = 'chat', subject='', + chatstate = None, msg_id = None, composing_jep = None, resource = None): + if not self.connection: + return + if not msg and chatstate is None: + return + fjid = jid + if resource: + fjid += '/' + resource + msgtxt = msg + msgenc = '' + if keyID and USE_GPG: + #encrypt + msgenc = self.gpg.encrypt(msg, [keyID]) + if msgenc: + msgtxt = '[This message is encrypted]' + lang = os.getenv('LANG') + if lang is not None or lang != 'en': # we're not english + msgtxt = _('[This message is encrypted]') +\ + ' ([This message is encrypted])' # one in locale and one en + if type == 'chat': + msg_iq = common.xmpp.Message(to = fjid, body = msgtxt, typ = type) + else: + if subject: + msg_iq = common.xmpp.Message(to = fjid, body = msgtxt, + typ = 'normal', subject = subject) + else: + msg_iq = common.xmpp.Message(to = fjid, body = msgtxt, + typ = 'normal') + if msgenc: + msg_iq.setTag(common.xmpp.NS_ENCRYPTED + ' x').setData(msgenc) + + # chatstates - if peer supports jep85 or jep22, send chatstates + # please note that the only valid tag inside a message containing a + # tag is the active event + if chatstate is not None: + if composing_jep == 'JEP-0085' or not composing_jep: + # JEP-0085 + msg_iq.setTag(chatstate, namespace = common.xmpp.NS_CHATSTATES) + if composing_jep == 'JEP-0022' or not composing_jep: + # JEP-0022 + chatstate_node = msg_iq.setTag('x', namespace = common.xmpp.NS_EVENT) + if not msgtxt: # when no , add + if not msg_id: # avoid putting 'None' in tag + msg_id = '' + chatstate_node.setTagData('id', msg_id) + # when msgtxt, requests JEP-0022 composing notification + if chatstate is 'composing' or msgtxt: + chatstate_node.addChild(name = 'composing') + + self.connection.send(msg_iq) + no_log_for = gajim.config.get_per('accounts', self.name, 'no_log_for') + ji = gajim.get_jid_without_resource(jid) + if self.name not in no_log_for and ji not in no_log_for: + log_msg = msg + if subject: + log_msg = _('Subject: %s\n%s') % (subject, msg) + if log_msg: + if type == 'chat': + kind = 'chat_msg_sent' + else: + kind = 'single_msg_sent' + gajim.logger.write(kind, jid, log_msg) + self.dispatch('MSGSENT', (jid, msg, keyID)) + + def send_stanza(self, stanza): + ''' send a stanza untouched ''' + if not self.connection: + return + self.connection.send(stanza) + + def ack_subscribed(self, jid): + if not self.connection: + return + gajim.log.debug('ack\'ing subscription complete for %s' % jid) + p = common.xmpp.Presence(jid, 'subscribe') + self.connection.send(p) + + def ack_unsubscribed(self, jid): + if not self.connection: + return + gajim.log.debug('ack\'ing unsubscription complete for %s' % jid) + p = common.xmpp.Presence(jid, 'unsubscribe') + self.connection.send(p) + + def request_subscription(self, jid, msg = '', name = '', groups = [], + auto_auth = False): + if not self.connection: + return + gajim.log.debug('subscription request for %s' % jid) + if auto_auth: + self.jids_for_auto_auth.append(jid) + # RFC 3921 section 8.2 + infos = {'jid': jid} + if name: + infos['name'] = name + iq = common.xmpp.Iq('set', common.xmpp.NS_ROSTER) + q = iq.getTag('query') + item = q.addChild('item', attrs = infos) + for g in groups: + item.addChild('group').setData(g) + self.connection.send(iq) + + p = common.xmpp.Presence(jid, 'subscribe') + p = self.add_sha(p) + if not msg: + msg = _('I would like to add you to my roster.') + p.setStatus(msg) + self.connection.send(p) + + def send_authorization(self, jid): + if not self.connection: + return + p = common.xmpp.Presence(jid, 'subscribed') + p = self.add_sha(p) + self.connection.send(p) + + def refuse_authorization(self, jid): + if not self.connection: + return + p = common.xmpp.Presence(jid, 'unsubscribed') + p = self.add_sha(p) + self.connection.send(p) + + def unsubscribe(self, jid, remove_auth = True): + if not self.connection: + return + if remove_auth: + self.connection.getRoster().delItem(jid) + jid_list = gajim.config.get_per('contacts') + for j in jid_list: + if j.startswith(jid): + gajim.config.del_per('contacts', j) + else: + self.connection.getRoster().Unsubscribe(jid) + self.update_contact(jid, '', []) + + def unsubscribe_agent(self, agent): + if not self.connection: + return + iq = common.xmpp.Iq('set', common.xmpp.NS_REGISTER, to = agent) + iq.getTag('query').setTag('remove') + id = self.connection.getAnID() + iq.setID(id) + self.awaiting_answers[id] = (AGENT_REMOVED, agent) + self.connection.send(iq) + self.connection.getRoster().delItem(agent) + + def update_contact(self, jid, name, groups): + '''update roster item on jabber server''' + if self.connection: + self.connection.getRoster().setItem(jid = jid, name = name, + groups = groups) + + def new_account(self, name, config, sync = False): + # If a connection already exist we cannot create a new account + if self.connection: + return + self._hostname = config['hostname'] + self.new_account_info = config + self.name = name + self.on_connect_success = self._on_new_account + self.on_connect_failure = self._on_new_account + self.connect(config) + + def _on_new_account(self, con = None, con_type = None): + if not con_type: + self.dispatch('ACC_NOT_OK', + (_('Could not connect to "%s"') % self._hostname)) + return + self.on_connect_failure = None + self.connection = con + common.xmpp.features_nb.getRegInfo(con, self._hostname) + + def account_changed(self, new_name): + self.name = new_name + + def request_last_status_time(self, jid, resource): + if not self.connection: + return + to_whom_jid = jid + if resource: + to_whom_jid += '/' + resource + iq = common.xmpp.Iq(to = to_whom_jid, typ = 'get', queryNS =\ + common.xmpp.NS_LAST) + self.connection.send(iq) + + def request_os_info(self, jid, resource): + if not self.connection: + return + to_whom_jid = jid + if resource: + to_whom_jid += '/' + resource + iq = common.xmpp.Iq(to = to_whom_jid, typ = 'get', queryNS =\ + common.xmpp.NS_VERSION) + self.connection.send(iq) + + def get_settings(self): + ''' Get Gajim settings as described in JEP 0049 ''' + if not self.connection: + return + iq = common.xmpp.Iq(typ='get') + iq2 = iq.addChild(name='query', namespace='jabber:iq:private') + iq3 = iq2.addChild(name='gajim', namespace='gajim:prefs') + self.connection.send(iq) + + def get_bookmarks(self): + '''Get Bookmarks from storage as described in JEP 0048''' + self.bookmarks = [] #avoid multiple bookmarks when re-connecting + if not self.connection: + return + iq = common.xmpp.Iq(typ='get') + iq2 = iq.addChild(name='query', namespace='jabber:iq:private') + iq2.addChild(name='storage', namespace='storage:bookmarks') + self.connection.send(iq) + + def store_bookmarks(self): + ''' Send bookmarks to the storage namespace ''' + if not self.connection: + return + iq = common.xmpp.Iq(typ='set') + iq2 = iq.addChild(name='query', namespace='jabber:iq:private') + iq3 = iq2.addChild(name='storage', namespace='storage:bookmarks') + for bm in self.bookmarks: + iq4 = iq3.addChild(name = "conference") + iq4.setAttr('jid', bm['jid']) + iq4.setAttr('autojoin', bm['autojoin']) + iq4.setAttr('name', bm['name']) + # Only add optional elements if not empty + # Note: need to handle both None and '' as empty + # thus shouldn't use "is not None" + if bm['nick']: + iq5 = iq4.setTagData('nick', bm['nick']) + if bm['password']: + iq5 = iq4.setTagData('password', bm['password']) + if bm['print_status']: + iq5 = iq4.setTagData('print_status', bm['print_status']) + self.connection.send(iq) + + def get_metacontacts(self): + '''Get metacontacts list from storage as described in JEP 0049''' + if not self.connection: + return + iq = common.xmpp.Iq(typ='get') + iq2 = iq.addChild(name='query', namespace='jabber:iq:private') + iq2.addChild(name='storage', namespace='storage:metacontacts') + self.connection.send(iq) + + def store_metacontacts(self, tags_list): + ''' Send meta contacts to the storage namespace ''' + if not self.connection: + return + iq = common.xmpp.Iq(typ='set') + iq2 = iq.addChild(name='query', namespace='jabber:iq:private') + iq3 = iq2.addChild(name='storage', namespace='storage:metacontacts') + for tag in tags_list: + for data in tags_list[tag]: + jid = data['jid'] + dict_ = {'jid': jid, 'tag': tag} + if data.has_key('order'): + dict_['order'] = data['order'] + iq3.addChild(name = 'meta', attrs = dict_) + self.connection.send(iq) + + def send_agent_status(self, agent, ptype): + if not self.connection: + return + p = common.xmpp.Presence(to = agent, typ = ptype) + p = self.add_sha(p, ptype != 'unavailable') + self.connection.send(p) + + def join_gc(self, nick, room, server, password): + if not self.connection: + return + show = helpers.get_xmpp_show(STATUS_LIST[self.connected]) + if show == 'invisible': + # Never join a room when invisible + return + p = common.xmpp.Presence(to = '%s@%s/%s' % (room, server, nick), + show = show, status = self.status) + if gajim.config.get('send_sha_in_gc_presence'): + p = self.add_sha(p) + t = p.setTag(common.xmpp.NS_MUC + ' x') + if password: + t.setTagData('password', password) + self.connection.send(p) + #last date/time in history to avoid duplicate + # FIXME: This JID needs to be normalized; see #1364 + jid='%s@%s' % (room, server) + last_log = gajim.logger.get_last_date_that_has_logs(jid, is_room = True) + if last_log is None: + last_log = 0 + self.last_history_line[jid]= last_log + + def send_gc_message(self, jid, msg): + if not self.connection: + return + msg_iq = common.xmpp.Message(jid, msg, typ = 'groupchat') + self.connection.send(msg_iq) + self.dispatch('MSGSENT', (jid, msg)) + + def send_gc_subject(self, jid, subject): + if not self.connection: + return + msg_iq = common.xmpp.Message(jid,typ = 'groupchat', subject = subject) + self.connection.send(msg_iq) + + def request_gc_config(self, room_jid): + iq = common.xmpp.Iq(typ = 'get', queryNS = common.xmpp.NS_MUC_OWNER, + to = room_jid) + self.connection.send(iq) + + def change_gc_nick(self, room_jid, nick): + if not self.connection: + return + p = common.xmpp.Presence(to = '%s/%s' % (room_jid, nick)) + p = self.add_sha(p) + self.connection.send(p) + + def send_gc_status(self, nick, jid, show, status): + if not self.connection: + return + if show == 'invisible': + show = 'offline' + ptype = None + if show == 'offline': + ptype = 'unavailable' + show = helpers.get_xmpp_show(show) + p = common.xmpp.Presence(to = '%s/%s' % (jid, nick), typ = ptype, + show = show, status = status) + if gajim.config.get('send_sha_in_gc_presence'): + p = self.add_sha(p, ptype != 'unavailable') + # send instantly so when we go offline, status is sent to gc before we + # disconnect from jabber server + self.connection.send(p) + + def gc_set_role(self, room_jid, nick, role, reason = ''): + '''role is for all the life of the room so it's based on nick''' + if not self.connection: + return + iq = common.xmpp.Iq(typ = 'set', to = room_jid, queryNS =\ + common.xmpp.NS_MUC_ADMIN) + item = iq.getTag('query').setTag('item') + item.setAttr('nick', nick) + item.setAttr('role', role) + if reason: + item.addChild(name = 'reason', payload = reason) + self.connection.send(iq) + + def gc_set_affiliation(self, room_jid, jid, affiliation, reason = ''): + '''affiliation is for all the life of the room so it's based on jid''' + if not self.connection: + return + iq = common.xmpp.Iq(typ = 'set', to = room_jid, queryNS =\ + common.xmpp.NS_MUC_ADMIN) + item = iq.getTag('query').setTag('item') + item.setAttr('jid', jid) + item.setAttr('affiliation', affiliation) + if reason: + item.addChild(name = 'reason', payload = reason) + self.connection.send(iq) + + def send_gc_affiliation_list(self, room_jid, list): + if not self.connection: + return + iq = common.xmpp.Iq(typ = 'set', to = room_jid, queryNS = \ + common.xmpp.NS_MUC_ADMIN) + item = iq.getTag('query') + for jid in list: + item_tag = item.addChild('item', {'jid': jid, + 'affiliation': list[jid]['affiliation']}) + if list[jid].has_key('reason') and list[jid]['reason']: + item_tag.setTagData('reason', list[jid]['reason']) + self.connection.send(iq) + + def get_affiliation_list(self, room_jid, affiliation): + if not self.connection: + return + iq = common.xmpp.Iq(typ = 'get', to = room_jid, queryNS = \ + common.xmpp.NS_MUC_ADMIN) + item = iq.getTag('query').setTag('item') + item.setAttr('affiliation', affiliation) + self.connection.send(iq) + + def send_gc_config(self, room_jid, config): + iq = common.xmpp.Iq(typ = 'set', to = room_jid, queryNS =\ + common.xmpp.NS_MUC_OWNER) + query = iq.getTag('query') + self.build_data_from_dict(query, config) + self.connection.send(iq) + + def gpg_passphrase(self, passphrase): + if USE_GPG: + use_gpg_agent = gajim.config.get('use_gpg_agent') + if use_gpg_agent: + self.gpg.passphrase = None + else: + self.gpg.passphrase = passphrase + + def ask_gpg_keys(self): + if USE_GPG: + keys = self.gpg.get_keys() + return keys + return None + + def ask_gpg_secrete_keys(self): + if USE_GPG: + keys = self.gpg.get_secret_keys() + return keys + return None + + def change_password(self, password): + if not self.connection: + return + hostname = gajim.config.get_per('accounts', self.name, 'hostname') + username = gajim.config.get_per('accounts', self.name, 'name') + iq = common.xmpp.Iq(typ = 'set', to = hostname) + q = iq.setTag(common.xmpp.NS_REGISTER + ' query') + q.setTagData('username',username) + q.setTagData('password',password) + self.connection.send(iq) + + def unregister_account(self, on_remove_success): + # no need to write this as a class method and keep the value of on_remove_success + # as a class property as pass it as an argument + def _on_unregister_account_connect(con): + self.on_connect_auth = None + if self.connected > 1: + hostname = gajim.config.get_per('accounts', self.name, 'hostname') + iq = common.xmpp.Iq(typ = 'set', to = hostname) + q = iq.setTag(common.xmpp.NS_REGISTER + ' query').setTag('remove') + con.send(iq) + on_remove_success(True) + return + on_remove_success(False) + if self.connected == 0: + self.on_connect_auth = _on_unregister_account_connect + self.connect_and_auth() + else: + _on_unregister_account_connect(self.connection) + + def send_invite(self, room, to, reason=''): + '''sends invitation''' + message=common.xmpp.Message(to = room) + c = message.addChild(name = 'x', namespace = common.xmpp.NS_MUC_USER) + c = c.addChild(name = 'invite', attrs={'to' : to}) + if reason != '': + c.setTagData('reason', reason) + self.connection.send(message) + + def send_keepalive(self): + # nothing received for the last foo seconds (60 secs by default) + if self.connection: + self.connection.send(' ') + + def _reconnect_alarm(self): + if self.time_to_reconnect: + if self.connected < 2: + self._reconnect() + else: + self.time_to_reconnect = None + +# END Connection From e7288176d83b52d1c06c002ebdb50c676a37d205 Mon Sep 17 00:00:00 2001 From: Stefan Bethge Date: Fri, 26 May 2006 14:43:51 +0000 Subject: [PATCH 003/110] remove standalone stuff --- src/zeroconf.py | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/zeroconf.py b/src/zeroconf.py index 57f596cb8..c7a5aee8f 100755 --- a/src/zeroconf.py +++ b/src/zeroconf.py @@ -1,6 +1,5 @@ -#!/usr/bin/python - -import os, sys +import os +import sys try: import avahi, gobject, dbus @@ -12,8 +11,6 @@ try: except ImportError, e: pass -service_browsers = {} - class Zeroconf: def __init__(self, name): self.domain = None # specific domain to browse @@ -22,6 +19,7 @@ class Zeroconf: self.name = name # service name / username self.txt = {} + self.service_browsers = {} self.contacts = {} # all current local contacts with data self.entrygroup = '' @@ -42,10 +40,8 @@ class Zeroconf: del self.contacts[(interface, name, domain)] def new_service_type(self, interface, protocol, stype, domain, flags): - global service_browsers - # Are we already browsing this domain for this type? - if service_browsers.has_key((interface, protocol, stype, domain)): + if self.service_browsers.has_key((interface, protocol, stype, domain)): return print "Browsing for services of type '%s' in domain '%s' on %i.%i ..." % (stype, domain, interface, protocol) @@ -56,7 +52,7 @@ class Zeroconf: b.connect_to_signal('ItemNew', self.new_service_callback) b.connect_to_signal('ItemRemove', self.remove_service_callback) - service_browsers[(interface, protocol, stype, domain)] = b + self.service_browsers[(interface, protocol, stype, domain)] = b def new_domain_callback(self,interface, protocol, domain, flags): if domain != "local": @@ -164,13 +160,16 @@ class Zeroconf: self.resolve_all return self.contacts - def set_status(self, status): + def set_status(self, status): self.txt[('status')] = status txt = avahi.dict_to_txt_array(self.txt) self.entrygroup.UpdateServiceTxt(avahi.IF_UNSPEC, avahi.PROTO_UNSPEC, dbus.UInt32(0), self.name, self.stype,'', txt, reply_handler=self.service_updated_callback, error_handler=self.print_error_callback) # self.entrygroup.Commit() # TODO: necessary? +# END Zeroconf + +''' def main(): zeroconf = Zeroconf('foo') @@ -186,3 +185,4 @@ def main(): if __name__ == "__main__": main() +''' From a9fc3c54cb250b8bb72608488dc5a76897859216 Mon Sep 17 00:00:00 2001 From: Stefan Bethge Date: Fri, 26 May 2006 14:46:13 +0000 Subject: [PATCH 004/110] move zeroconf to common as it is generic --- src/{ => common}/zeroconf.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/{ => common}/zeroconf.py (100%) diff --git a/src/zeroconf.py b/src/common/zeroconf.py similarity index 100% rename from src/zeroconf.py rename to src/common/zeroconf.py From 0d195c15167186a85a7d7df498ba56fed13266a6 Mon Sep 17 00:00:00 2001 From: Stefan Bethge Date: Fri, 26 May 2006 19:18:13 +0000 Subject: [PATCH 005/110] some little name changes --- src/common/zeroconf.py | 56 ++++++++++++++++++++++++------------------ 1 file changed, 32 insertions(+), 24 deletions(-) diff --git a/src/common/zeroconf.py b/src/common/zeroconf.py index c7a5aee8f..5067c1eb9 100755 --- a/src/common/zeroconf.py +++ b/src/common/zeroconf.py @@ -1,5 +1,6 @@ import os import sys +import getpass try: import avahi, gobject, dbus @@ -12,12 +13,12 @@ except ImportError, e: pass class Zeroconf: - def __init__(self, name): + def __init__(self): self.domain = None # specific domain to browse - self.stype = '_presence._tcp' + self.stype = '_presence._tcp' self.port = 5298 # listening port that gets announced - self.name = name # service name / username - self.txt = {} + self.name = getpass.getuser() # service name / username + self.txt = {} # service data self.service_browsers = {} self.contacts = {} # all current local contacts with data @@ -66,21 +67,21 @@ class Zeroconf: def service_added_callback(self): - print "Service successfully added" + print 'Service successfully added' def service_committed_callback(self): - print "Service successfully committed" + print 'Service successfully committed' def service_updated_callback(self): - print "Service successfully updated" + print 'Service successfully updated' def service_add_fail_callback(self, err): - print "Error while adding service:", str(err) + print 'Error while adding service:', str(err) self.name = self.server.GetAlternativeServiceName(self.name) self.create_service() def server_state_changed_callback(self, state, error): - print "server.state %s" % state + print 'server.state %s' % state if state == avahi.SERVER_RUNNING: self.create_service() elif state == avahi.SERVER_COLLISION: @@ -88,12 +89,10 @@ class Zeroconf: # elif state == avahi.CLIENT_FAILURE: # TODO: add error handling (avahi daemon dies...?) def entrygroup_state_changed_callback(self, state, error): - # the name is already present, so ... + # the name is already present, so recreate if state == avahi.ENTRY_GROUP_COLLISION: - print "Collision with existing service of name %s" % self.name - # ... get a new one and recreate the service - self.name = self.server.GetAlternativeServiceName(self.name) - self.create_service() + self.service_add_fail_callback('Local name collision, recreating.') + # elif state == avahi.ENTRY_GROUP_FAILURE: def create_service(self): @@ -110,7 +109,7 @@ class Zeroconf: self.entrygroup.AddService(avahi.IF_UNSPEC, avahi.PROTO_UNSPEC, dbus.UInt32(0), self.name, self.stype, '', '', self.port, avahi.dict_to_txt_array(self.txt), reply_handler=self.service_added_callback, error_handler=self.service_add_fail_callback) self.entrygroup.Commit(reply_handler=self.service_committed_callback, error_handler=self.print_error_callback) - def publish(self): + def announce(self): state = self.server.GetState() if state == avahi.SERVER_RUNNING: @@ -146,8 +145,8 @@ class Zeroconf: # Just browse the domain the user wants us to browse self.browse_domain(avahi.IF_UNSPEC, avahi.PROTO_UNSPEC, domain) -# def disconnect: -# necessary ? + def disconnect(self): + self.remove_announce() # refresh data manually - really ok or too much traffic? def resolve_all(self): @@ -160,8 +159,11 @@ class Zeroconf: self.resolve_all return self.contacts - def set_status(self, status): - self.txt[('status')] = status + def update_txt(self, txt): + # update only given keys + for key in txt.keys(): + self.txt[key]=txt[key] + txt = avahi.dict_to_txt_array(self.txt) self.entrygroup.UpdateServiceTxt(avahi.IF_UNSPEC, avahi.PROTO_UNSPEC, dbus.UInt32(0), self.name, self.stype,'', txt, reply_handler=self.service_updated_callback, error_handler=self.print_error_callback) @@ -172,11 +174,17 @@ class Zeroconf: ''' def main(): - zeroconf = Zeroconf('foo') - zeroconf.connect() - zeroconf.txt[('last')] = 'foo' - zeroconf.publish() - zeroconf.set_status('avail') + zeroconf = Zeroconf() + zeroconf.connect() + zeroconf.txt[('1st')] = 'foo' + zeroconf.txt[('last')] = 'bar' + zeroconf.announce() + + # updating after announcing + txt = {} + txt['status'] = 'avail' # out of avail/away/dnd + txt['msg'] = 'Here I am' + zeroconf.update_txt(txt) try: gobject.MainLoop().run() From e324eb4f32f6cfc8ae982c722923a67610867908 Mon Sep 17 00:00:00 2001 From: Stefan Bethge Date: Sat, 27 May 2006 23:57:43 +0000 Subject: [PATCH 006/110] comment out most things, add some connection/disconnection and status updating --- src/common/connection_zeroconf.py | 367 ++++++++++++++++++++---------- 1 file changed, 249 insertions(+), 118 deletions(-) diff --git a/src/common/connection_zeroconf.py b/src/common/connection_zeroconf.py index 1126659c0..4398d9c31 100644 --- a/src/common/connection_zeroconf.py +++ b/src/common/connection_zeroconf.py @@ -1,4 +1,4 @@ -## common/connection.py +## common/connection_zeroconf.py ## ## Contributors for this file: ## - Yann Le Boulanger @@ -34,10 +34,11 @@ import signal if os.name != 'nt': signal.signal(signal.SIGPIPE, signal.SIG_DFL) -import common.xmpp +# import common.xmpp from common import helpers from common import gajim from common import GnuPG +from common import zeroconf from connection_handlers_zeroconf import * USE_GPG = GnuPG.USE_GPG @@ -50,17 +51,18 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): def __init__(self, name): ConnectionHandlersZeroconf.__init__(self) self.name = name + self.zeroconf = Zeroconf() self.connected = 0 # offline - self.connection = None # xmpppy ClientCommon instance +# self.connection = None # xmpppy ClientCommon instance # this property is used to prevent double connections - self.last_connection = None # last ClientCommon instance +# self.last_connection = None # last ClientCommon instance self.gpg = None self.status = '' self.old_show = '' # increase/decrease default timeout for server responses self.try_connecting_for_foo_secs = 45 # holds the actual hostname to which we are connected - self.connected_hostname = None +# self.connected_hostname = None self.time_to_reconnect = None self.new_account_info = None self.bookmarks = [] @@ -68,12 +70,12 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): self.last_io = gajim.idlequeue.current_time() self.last_sent = [] self.last_history_line = {} - self.password = gajim.config.get_per('accounts', name, 'password') - self.server_resource = gajim.config.get_per('accounts', name, 'resource') - if gajim.config.get_per('accounts', self.name, 'keep_alives_enabled'): - self.keepalives = gajim.config.get_per('accounts', self.name,'keep_alive_every_foo_secs') - else: - self.keepalives = 0 +# self.password = gajim.config.get_per('accounts', name, 'password') +# self.server_resource = gajim.config.get_per('accounts', name, 'resource') +# if gajim.config.get_per('accounts', self.name, 'keep_alives_enabled'): +# self.keepalives = gajim.config.get_per('accounts', self.name,'keep_alive_every_foo_secs') +# else: +# self.keepalives = 0 self.privacy_rules_supported = False # Do we continue connection when we get roster (send presence,get vcard...) self.continue_connect_info = None @@ -99,8 +101,8 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): def _reconnect(self): - # Do not try to reco while we are already trying -''' self.time_to_reconnect = None + '''# Do not try to reco while we are already trying + self.time_to_reconnect = None if self.connected < 2: #connection failed gajim.log.debug('reconnect') self.retrycount += 1 @@ -110,12 +112,13 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): else: # reconnect succeeded self.time_to_reconnect = None - self.retrycount = 0 ''' + self.retrycount = 0 + ''' - self.time_to_reconnect = None - self.retrycount = 0 gajim.log.debug('reconnect') - signed = self.get_signed_msg(self.status) + + # TODO: no gpg for now, add some day + # signed = self.get_signed_msg(self.status) # We are doing disconnect at so many places, better use one function in all @@ -125,13 +128,13 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): self.time_to_reconnect = None if self.connection: # make sure previous connection is completely closed - gajim.proxy65_manager.disconnect(self.connection) - self.connection.disconnect() self.last_connection = None self.connection = None - + self.zeroconf.disconnect() + + ''' def _disconnectedReconnCB(self): - '''Called when we are disconnected''' + # Called when we are disconnected gajim.log.debug('disconnectedReconnCB') if self.connected > 1: # we cannot change our status to offline or connectiong @@ -163,14 +166,17 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): self.disconnect() self.on_purpose = False # END disconenctedReconnCB - + ''' + + ''' def _connection_lost(self): self.disconnect(on_purpose = False) self.dispatch('STATUS', 'offline') self.dispatch('ERROR', (_('Connection with account "%s" has been lost') % self.name, _('To continue sending and receiving messages, you will need to reconnect.'))) - + ''' + ''' def _event_dispatcher(self, realm, event, data): if realm == common.xmpp.NS_REGISTER: if event == common.xmpp.features_nb.REGISTER_DATA_RECEIVED: @@ -221,7 +227,8 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): self.dispatch('STANZA_ARRIVED', unicode(data, errors = 'ignore')) elif event == common.xmpp.transports.DATA_SENT: self.dispatch('STANZA_SENT', unicode(data)) - + ''' + def select_next_host(self, hosts): hosts_best_prio = [] best_prio = 65535 @@ -244,16 +251,20 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): if h['weight'] <= min_w: min_w = h['weight'] return h + def connect(self, data = None): - # TODO: remove any server connection and get zeroconf instance instead - # get presence information from there - + + zeroconf.connect() + + ''' Start a connection to the Jabber server. Returns connection, and connection type ('tls', 'ssl', 'tcp', '') data MUST contain name, hostname, resource, usessl, proxy, use_custom_host, custom_host (if use_custom_host), custom_port (if use_custom_host), ''' + + ''' if self.connection: return self.connection, '' @@ -317,14 +328,17 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): gajim.resolver.resolve('_xmpp-client._tcp.' + h.encode('utf-8'), self._on_resolve) else: self._on_resolve('', []) - + ''' + ''' def _on_resolve(self, host, result_array): # SRV query returned at least one valid result, we put it in hosts dict if len(result_array) != 0: self._hosts = [i for i in result_array] self.connect_to_next_host() - + ''' + ''' def connect_to_next_host(self, retry = False): + if len(self._hosts): if self.last_connection: self.last_connection.socket.disconnect() @@ -361,7 +375,8 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): else: # try reconnect if connection has failed before auth to server self._disconnectedReconnCB() - + ''' + ''' def _connect_failure(self, con_type = None): if not con_type: # we are not retrying, and not conecting @@ -370,7 +385,8 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): self.dispatch('STATUS', 'offline') self.dispatch('ERROR', (_('Could not connect to "%s"') % self._hostname, _('Check your connection or try again later.'))) - + ''' + ''' def _connect_success(self, con, con_type): if not self.connected: # We went offline during connecting process # FIXME - not possible, maybe it was when we used threads @@ -388,7 +404,8 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): self.get_metacontacts() self._register_handlers(con, con_type) return True - + ''' + ''' def _register_handlers(self, con, con_type): self.peerhost = con.get_peerhost() # notify the gui about con_type @@ -399,7 +416,8 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): resource = gajim.config.get_per('accounts', self.name, 'resource') self.connection = con con.auth(name, self.password, resource, 1, self.__on_auth) - + ''' + ''' def __on_auth(self, con, auth): if not con: self.disconnect(on_purpose = True) @@ -436,31 +454,40 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): self.on_connect_auth(None) self.on_connect_auth = None # END connect + ''' + def quit(self, kill_core): + if kill_core and self.connected > 1: self.disconnect(on_purpose = True) + ''' + #invisible == no service announced( privacy rule? ) def build_privacy_rule(self, name, action): - '''Build a Privacy rule stanza for invisibility''' + #Build a Privacy rule stanza for invisibility iq = common.xmpp.Iq('set', common.xmpp.NS_PRIVACY, xmlns = '') l = iq.getTag('query').setTag('list', {'name': name}) i = l.setTag('item', {'action': action, 'order': '1'}) i.setTag('presence-out') return iq - + ''' + + ''' def activate_privacy_rule(self, name): - '''activate a privacy rule''' + activate a privacy rule iq = common.xmpp.Iq('set', common.xmpp.NS_PRIVACY, xmlns = '') iq.getTag('query').setTag('active', {'name': name}) self.connection.send(iq) - + ''' + ''' def send_invisible_presence(self, msg, signed, initial = False): # try to set the privacy rule iq = self.build_privacy_rule('invisible', 'deny') self.connection.SendAndCallForResponse(iq, self._continue_invisible, {'msg': msg, 'signed': signed, 'initial': initial}) - + ''' + ''' def _continue_invisible(self, con, iq_obj, msg, signed, initial): ptype = '' show = '' @@ -491,7 +518,9 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): #Inform GUI we just signed in self.dispatch('SIGNED_IN', ()) - + ''' + + def test_gpg_passphrase(self, password): self.gpg.passphrase = password keyID = gajim.config.get_per('accounts', self.name, 'keyid') @@ -517,91 +546,78 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): if self.connected < 2: self.dispatch('BAD_PASSPHRASE', ()) return signed - + + def connect_and_auth(self): + ''' self.on_connect_success = self._connect_success self.on_connect_failure = self._connect_failure self.connect() + ''' + + pass def connect_and_init(self, show, msg, signed): + ''' self.continue_connect_info = [show, msg, signed] self.on_connect_auth = self._init_roster self.connect_and_auth() + ''' + + if show == 'online': + show = 'avail' + + self.zeroconf.txt['status'] = show + self.zeroconf.txt['msg'] = msg + self.connect() def _init_roster(self, con): + ''' self.connection = con if self.connection: con.set_send_timeout(self.keepalives, self.send_keepalive) self.connection.onreceive(None) # Ask metacontacts before roster self.get_metacontacts() + ''' + + pass def change_status(self, show, msg, sync = False, auto = False): if not show in STATUS_LIST: return -1 - sshow = helpers.get_xmpp_show(show) - if not msg: - msg = '' - keyID = gajim.config.get_per('accounts', self.name, 'keyid') - if keyID and USE_GPG and not msg: - lowered_uf_status_msg = helpers.get_uf_show(show).lower() - # do not show I'm invisible! - if lowered_uf_status_msg == _('invisible'): - lowered_uf_status_msg = _('offline') - msg = _("I'm %s") % lowered_uf_status_msg - signed = '' - if not auto and not show == 'offline': - signed = self.get_signed_msg(msg) - self.status = msg - if show != 'offline' and not self.connected: - # set old_show to requested 'show' in case we need to - # recconect before we auth to server - self.old_show = show - self.on_purpose = False - self.connect_and_init(show, msg, signed) + + if show == 'chat': + show = 'online' + elif show == 'xa': + show = 'away' + # connect + if show != 'offline' and not self.connected: + self.on_purpose = False + self.connect_and_init(show, msg, '') + + # disconnect elif show == 'offline' and self.connected: self.connected = 0 - if self.connection: - self.on_purpose = True - p = common.xmpp.Presence(typ = 'unavailable') - p = self.add_sha(p, False) - if msg: - p.setStatus(msg) - self.remove_all_transfers() - self.time_to_reconnect = None - self.connection.start_disconnect(p, self._on_disconnected) - else: - self.time_to_reconnect = None - self._on_disconnected() + self._on_disconnected() + # update status elif show != 'offline' and self.connected: - # dont'try to connect, when we are in state 'connecting' - if self.connected == 1: - return was_invisible = self.connected == STATUS_LIST.index('invisible') self.connected = STATUS_LIST.index(show) if show == 'invisible': - self.send_invisible_presence(msg, signed) + self.zeroconf.remove_announce() return - if was_invisible and self.privacy_rules_supported: - iq = self.build_privacy_rule('visible', 'allow') - self.connection.send(iq) - self.activate_privacy_rule('visible') - prio = unicode(gajim.config.get_per('accounts', self.name, - 'priority')) - p = common.xmpp.Presence(typ = None, priority = prio, show = sshow) - p = self.add_sha(p) - if msg: - p.setStatus(msg) - if signed: - p.setTag(common.xmpp.NS_SIGNED + ' x').setData(signed) + if was_invisible: + self.zeroconf.announce() if self.connection: - self.connection.send(p) + txt = {} + txt['status'] = show + self.zeroconf.update_txt(txt) self.dispatch('STATUS', show) def _on_disconnected(self): - ''' called when a disconnect request has completed successfully''' self.dispatch('STATUS', 'offline') self.disconnect() @@ -609,13 +625,18 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): return STATUS_LIST[self.connected] def send_motd(self, jid, subject = '', msg = ''): + ''' if not self.connection: return msg_iq = common.xmpp.Message(to = jid, body = msg, subject = subject) self.connection.send(msg_iq) + ''' + + pass def send_message(self, jid, msg, keyID, type = 'chat', subject='', chatstate = None, msg_id = None, composing_jep = None, resource = None): + ''' if not self.connection: return if not msg and chatstate is None: @@ -678,31 +699,47 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): kind = 'single_msg_sent' gajim.logger.write(kind, jid, log_msg) self.dispatch('MSGSENT', (jid, msg, keyID)) + ''' def send_stanza(self, stanza): - ''' send a stanza untouched ''' + # send a stanza untouched + ''' if not self.connection: return self.connection.send(stanza) + ''' + + pass def ack_subscribed(self, jid): if not self.connection: return + pass + + ''' gajim.log.debug('ack\'ing subscription complete for %s' % jid) p = common.xmpp.Presence(jid, 'subscribe') self.connection.send(p) + ''' def ack_unsubscribed(self, jid): if not self.connection: return + pass + + ''' gajim.log.debug('ack\'ing unsubscription complete for %s' % jid) p = common.xmpp.Presence(jid, 'unsubscribe') self.connection.send(p) + ''' def request_subscription(self, jid, msg = '', name = '', groups = [], auto_auth = False): if not self.connection: return + pass + + ''' gajim.log.debug('subscription request for %s' % jid) if auto_auth: self.jids_for_auto_auth.append(jid) @@ -723,24 +760,36 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): msg = _('I would like to add you to my roster.') p.setStatus(msg) self.connection.send(p) + ''' def send_authorization(self, jid): if not self.connection: return + pass + + ''' p = common.xmpp.Presence(jid, 'subscribed') p = self.add_sha(p) self.connection.send(p) + ''' def refuse_authorization(self, jid): if not self.connection: return + pass + + ''' p = common.xmpp.Presence(jid, 'unsubscribed') p = self.add_sha(p) self.connection.send(p) + ''' def unsubscribe(self, jid, remove_auth = True): if not self.connection: return + pass + + ''' if remove_auth: self.connection.getRoster().delItem(jid) jid_list = gajim.config.get_per('contacts') @@ -750,10 +799,14 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): else: self.connection.getRoster().Unsubscribe(jid) self.update_contact(jid, '', []) + ''' def unsubscribe_agent(self, agent): if not self.connection: return + pass + + ''' iq = common.xmpp.Iq('set', common.xmpp.NS_REGISTER, to = agent) iq.getTag('query').setTag('remove') id = self.connection.getAnID() @@ -761,16 +814,20 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): self.awaiting_answers[id] = (AGENT_REMOVED, agent) self.connection.send(iq) self.connection.getRoster().delItem(agent) + ''' def update_contact(self, jid, name, groups): - '''update roster item on jabber server''' + ''' + # update roster item on jabber server if self.connection: self.connection.getRoster().setItem(jid = jid, name = name, groups = groups) + ''' def new_account(self, name, config, sync = False): + ''' # If a connection already exist we cannot create a new account - if self.connection: + if self.connection : return self._hostname = config['hostname'] self.new_account_info = config @@ -778,8 +835,10 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): self.on_connect_success = self._on_new_account self.on_connect_failure = self._on_new_account self.connect(config) + ''' def _on_new_account(self, con = None, con_type = None): + ''' if not con_type: self.dispatch('ACC_NOT_OK', (_('Could not connect to "%s"') % self._hostname)) @@ -787,11 +846,13 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): self.on_connect_failure = None self.connection = con common.xmpp.features_nb.getRegInfo(con, self._hostname) + ''' def account_changed(self, new_name): self.name = new_name def request_last_status_time(self, jid, resource): + ''' if not self.connection: return to_whom_jid = jid @@ -800,8 +861,11 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): iq = common.xmpp.Iq(to = to_whom_jid, typ = 'get', queryNS =\ common.xmpp.NS_LAST) self.connection.send(iq) + ''' + pass def request_os_info(self, jid, resource): + ''' if not self.connection: return to_whom_jid = jid @@ -810,18 +874,24 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): iq = common.xmpp.Iq(to = to_whom_jid, typ = 'get', queryNS =\ common.xmpp.NS_VERSION) self.connection.send(iq) + ''' + pass def get_settings(self): - ''' Get Gajim settings as described in JEP 0049 ''' + ''' + # Get Gajim settings as described in JEP 0049 if not self.connection: return iq = common.xmpp.Iq(typ='get') iq2 = iq.addChild(name='query', namespace='jabber:iq:private') iq3 = iq2.addChild(name='gajim', namespace='gajim:prefs') self.connection.send(iq) + ''' + pass def get_bookmarks(self): - '''Get Bookmarks from storage as described in JEP 0048''' + ''' + # Get Bookmarks from storage as described in JEP 0048 self.bookmarks = [] #avoid multiple bookmarks when re-connecting if not self.connection: return @@ -829,9 +899,12 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): iq2 = iq.addChild(name='query', namespace='jabber:iq:private') iq2.addChild(name='storage', namespace='storage:bookmarks') self.connection.send(iq) - + ''' + pass + def store_bookmarks(self): - ''' Send bookmarks to the storage namespace ''' + ''' + # Send bookmarks to the storage namespace if not self.connection: return iq = common.xmpp.Iq(typ='set') @@ -852,18 +925,23 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): if bm['print_status']: iq5 = iq4.setTagData('print_status', bm['print_status']) self.connection.send(iq) + ''' + pass + ''' def get_metacontacts(self): - '''Get metacontacts list from storage as described in JEP 0049''' + + # Get metacontacts list from storage as described in JEP 0049 if not self.connection: return iq = common.xmpp.Iq(typ='get') iq2 = iq.addChild(name='query', namespace='jabber:iq:private') iq2.addChild(name='storage', namespace='storage:metacontacts') self.connection.send(iq) - + ''' + ''' def store_metacontacts(self, tags_list): - ''' Send meta contacts to the storage namespace ''' + # Send meta contacts to the storage namespace if not self.connection: return iq = common.xmpp.Iq(typ='set') @@ -877,15 +955,21 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): dict_['order'] = data['order'] iq3.addChild(name = 'meta', attrs = dict_) self.connection.send(iq) + ''' def send_agent_status(self, agent, ptype): + ''' if not self.connection: return p = common.xmpp.Presence(to = agent, typ = ptype) p = self.add_sha(p, ptype != 'unavailable') self.connection.send(p) + ''' + pass + def join_gc(self, nick, room, server, password): + ''' if not self.connection: return show = helpers.get_xmpp_show(STATUS_LIST[self.connected]) @@ -907,33 +991,48 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): if last_log is None: last_log = 0 self.last_history_line[jid]= last_log - + ''' + pass + def send_gc_message(self, jid, msg): + ''' if not self.connection: return msg_iq = common.xmpp.Message(jid, msg, typ = 'groupchat') self.connection.send(msg_iq) self.dispatch('MSGSENT', (jid, msg)) - + ''' + pass + def send_gc_subject(self, jid, subject): + ''' if not self.connection: return msg_iq = common.xmpp.Message(jid,typ = 'groupchat', subject = subject) self.connection.send(msg_iq) - + ''' + pass + def request_gc_config(self, room_jid): + ''' iq = common.xmpp.Iq(typ = 'get', queryNS = common.xmpp.NS_MUC_OWNER, to = room_jid) self.connection.send(iq) + ''' + pass def change_gc_nick(self, room_jid, nick): + ''' if not self.connection: return p = common.xmpp.Presence(to = '%s/%s' % (room_jid, nick)) p = self.add_sha(p) self.connection.send(p) - + ''' + pass + def send_gc_status(self, nick, jid, show, status): + ''' if not self.connection: return if show == 'invisible': @@ -949,9 +1048,12 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): # send instantly so when we go offline, status is sent to gc before we # disconnect from jabber server self.connection.send(p) - + ''' + pass + def gc_set_role(self, room_jid, nick, role, reason = ''): - '''role is for all the life of the room so it's based on nick''' + ''' + # role is for all the life of the room so it's based on nick if not self.connection: return iq = common.xmpp.Iq(typ = 'set', to = room_jid, queryNS =\ @@ -962,9 +1064,12 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): if reason: item.addChild(name = 'reason', payload = reason) self.connection.send(iq) - + ''' + pass + def gc_set_affiliation(self, room_jid, jid, affiliation, reason = ''): - '''affiliation is for all the life of the room so it's based on jid''' + ''' + # affiliation is for all the life of the room so it's based on jid if not self.connection: return iq = common.xmpp.Iq(typ = 'set', to = room_jid, queryNS =\ @@ -975,8 +1080,11 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): if reason: item.addChild(name = 'reason', payload = reason) self.connection.send(iq) - + ''' + pass + def send_gc_affiliation_list(self, room_jid, list): + ''' if not self.connection: return iq = common.xmpp.Iq(typ = 'set', to = room_jid, queryNS = \ @@ -988,8 +1096,11 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): if list[jid].has_key('reason') and list[jid]['reason']: item_tag.setTagData('reason', list[jid]['reason']) self.connection.send(iq) - + ''' + pass + def get_affiliation_list(self, room_jid, affiliation): + ''' if not self.connection: return iq = common.xmpp.Iq(typ = 'get', to = room_jid, queryNS = \ @@ -997,14 +1108,19 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): item = iq.getTag('query').setTag('item') item.setAttr('affiliation', affiliation) self.connection.send(iq) - + ''' + pass + def send_gc_config(self, room_jid, config): + ''' iq = common.xmpp.Iq(typ = 'set', to = room_jid, queryNS =\ common.xmpp.NS_MUC_OWNER) query = iq.getTag('query') self.build_data_from_dict(query, config) self.connection.send(iq) - + ''' + pass + def gpg_passphrase(self, passphrase): if USE_GPG: use_gpg_agent = gajim.config.get('use_gpg_agent') @@ -1028,6 +1144,7 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): def change_password(self, password): if not self.connection: return + ''' hostname = gajim.config.get_per('accounts', self.name, 'hostname') username = gajim.config.get_per('accounts', self.name, 'name') iq = common.xmpp.Iq(typ = 'set', to = hostname) @@ -1035,8 +1152,11 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): q.setTagData('username',username) q.setTagData('password',password) self.connection.send(iq) - + ''' + pass + def unregister_account(self, on_remove_success): + ''' # no need to write this as a class method and keep the value of on_remove_success # as a class property as pass it as an argument def _on_unregister_account_connect(con): @@ -1054,26 +1174,37 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): self.connect_and_auth() else: _on_unregister_account_connect(self.connection) - + ''' + pass + def send_invite(self, room, to, reason=''): - '''sends invitation''' + ''' + # sends invitation message=common.xmpp.Message(to = room) c = message.addChild(name = 'x', namespace = common.xmpp.NS_MUC_USER) c = c.addChild(name = 'invite', attrs={'to' : to}) if reason != '': c.setTagData('reason', reason) self.connection.send(message) - + ''' + pass + def send_keepalive(self): + ''' # nothing received for the last foo seconds (60 secs by default) if self.connection: self.connection.send(' ') - + ''' + pass + def _reconnect_alarm(self): + ''' if self.time_to_reconnect: if self.connected < 2: self._reconnect() else: self.time_to_reconnect = None - + ''' + pass + # END Connection From 589abe37f7bd460373d63ed95ab02dd25c2f03ea Mon Sep 17 00:00:00 2001 From: Stefan Bethge Date: Mon, 29 May 2006 15:36:18 +0000 Subject: [PATCH 007/110] Added publishing of status and status changes for account with name 'zeroconf' --- src/common/connection_zeroconf.py | 44 ++++++++++++++++++------------- src/common/zeroconf.py | 27 ++++++++++++++++--- src/gajim.py | 12 +++++++-- 3 files changed, 59 insertions(+), 24 deletions(-) diff --git a/src/common/connection_zeroconf.py b/src/common/connection_zeroconf.py index 4398d9c31..0d31f201f 100644 --- a/src/common/connection_zeroconf.py +++ b/src/common/connection_zeroconf.py @@ -39,8 +39,9 @@ from common import helpers from common import gajim from common import GnuPG from common import zeroconf - +from common import connection_handlers_zeroconf from connection_handlers_zeroconf import * + USE_GPG = GnuPG.USE_GPG from common import i18n @@ -51,9 +52,10 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): def __init__(self, name): ConnectionHandlersZeroconf.__init__(self) self.name = name - self.zeroconf = Zeroconf() + self.zeroconf = zeroconf.Zeroconf() self.connected = 0 # offline -# self.connection = None # xmpppy ClientCommon instance + self.connection = None # dummy connection variable + # this property is used to prevent double connections # self.last_connection = None # last ClientCommon instance self.gpg = None @@ -70,7 +72,7 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): self.last_io = gajim.idlequeue.current_time() self.last_sent = [] self.last_history_line = {} -# self.password = gajim.config.get_per('accounts', name, 'password') + self.password = gajim.config.get_per('accounts', name, 'password') # self.server_resource = gajim.config.get_per('accounts', name, 'resource') # if gajim.config.get_per('accounts', self.name, 'keep_alives_enabled'): # self.keepalives = gajim.config.get_per('accounts', self.name,'keep_alive_every_foo_secs') @@ -253,11 +255,15 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): return h - def connect(self, data = None): + def connect(self, data = None, show = 'online'): + + if self.connection: + return self.connection, '' + + self.zeroconf.connect() + self.connection = 1 + self.connected = STATUS_LIST.index(show) - zeroconf.connect() - - ''' Start a connection to the Jabber server. Returns connection, and connection type ('tls', 'ssl', 'tcp', '') data MUST contain name, hostname, resource, usessl, proxy, @@ -564,12 +570,9 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): self.connect_and_auth() ''' - if show == 'online': - show = 'avail' - self.zeroconf.txt['status'] = show self.zeroconf.txt['msg'] = msg - self.connect() + self.connect('',show) def _init_roster(self, con): ''' @@ -584,38 +587,43 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): pass def change_status(self, show, msg, sync = False, auto = False): + print "change_status: show: %s msg: %s" % (show, msg) if not show in STATUS_LIST: return -1 - if show == 'chat': - show = 'online' - elif show == 'xa': - show = 'away' - # connect if show != 'offline' and not self.connected: + print "connect in change_status" self.on_purpose = False self.connect_and_init(show, msg, '') + if show != 'invisible': + self.zeroconf.announce() + else: + self.connected = STATUS_LIST.index(show) # disconnect elif show == 'offline' and self.connected: + print "disconnect in change_status" self.connected = 0 self._on_disconnected() # update status elif show != 'offline' and self.connected: + print "update in change_status" was_invisible = self.connected == STATUS_LIST.index('invisible') self.connected = STATUS_LIST.index(show) if show == 'invisible': self.zeroconf.remove_announce() return if was_invisible: + print "announce after invisible in change_status" self.zeroconf.announce() if self.connection: txt = {} txt['status'] = show + txt['msg'] = msg self.zeroconf.update_txt(txt) - self.dispatch('STATUS', show) + self.dispatch('STATUS', show) def _on_disconnected(self): self.dispatch('STATUS', 'offline') diff --git a/src/common/zeroconf.py b/src/common/zeroconf.py index 5067c1eb9..0389f0926 100755 --- a/src/common/zeroconf.py +++ b/src/common/zeroconf.py @@ -94,6 +94,16 @@ class Zeroconf: self.service_add_fail_callback('Local name collision, recreating.') # elif state == avahi.ENTRY_GROUP_FAILURE: + + # make zeroconf-valid names + def replace_show(self, show): + if show == 'chat' or show == '': + show = 'online' + elif show == 'xa': + show = 'away' + elif show == 'online': + show = 'avail' + return show def create_service(self): if self.entrygroup == '': @@ -101,9 +111,13 @@ class Zeroconf: self.entrygroup = dbus.Interface(self.bus.get_object(avahi.DBUS_NAME, self.server.EntryGroupNew()), avahi.DBUS_INTERFACE_ENTRY_GROUP) self.entrygroup.connect_to_signal('StateChanged', self.entrygroup_state_changed_callback) - self.txt[('port.p2pj')] = self.port - self.txt[('version')] = 1 - self.txt[('textvers')] = 1 + self.txt['port.p2pj'] = self.port + self.txt['version'] = 1 + self.txt['textvers'] = 1 + + # replace gajim's status messages with proper ones + if self.txt.has_key('status'): + self.txt['status'] = self.replace_show(self.txt['status']) print "Publishing service '%s' of type %s" % (self.name, self.stype) self.entrygroup.AddService(avahi.IF_UNSPEC, avahi.PROTO_UNSPEC, dbus.UInt32(0), self.name, self.stype, '', '', self.port, avahi.dict_to_txt_array(self.txt), reply_handler=self.service_added_callback, error_handler=self.service_add_fail_callback) @@ -118,6 +132,7 @@ class Zeroconf: def remove_announce(self): self.entrygroup.Reset() self.entrygroup.Free() + self.entrygroup = '' def browse_domain(self, interface, protocol, domain): self.new_service_type(interface, protocol, self.stype, domain, '') @@ -159,11 +174,15 @@ class Zeroconf: self.resolve_all return self.contacts + def update_txt(self, txt): # update only given keys for key in txt.keys(): self.txt[key]=txt[key] - + + if txt.has_key('status'): + self.txt['status'] = self.replace_show(txt['status']) + txt = avahi.dict_to_txt_array(self.txt) self.entrygroup.UpdateServiceTxt(avahi.IF_UNSPEC, avahi.PROTO_UNSPEC, dbus.UInt32(0), self.name, self.stype,'', txt, reply_handler=self.service_updated_callback, error_handler=self.print_error_callback) diff --git a/src/gajim.py b/src/gajim.py index ff68d6a2c..cf3a7e758 100755 --- a/src/gajim.py +++ b/src/gajim.py @@ -39,6 +39,8 @@ from chat_control import ChatControlBase from common import exceptions from common import i18n +from common import connection_zeroconf + i18n.init() _ = i18n._ @@ -1738,8 +1740,14 @@ class Interface: gajim.proxy65_manager = proxy65_manager.Proxy65Manager(gajim.idlequeue) self.register_handlers() for account in gajim.config.get_per('accounts'): - gajim.connections[account] = common.connection.Connection(account) - + if account == 'zeroconf': + print 'Added zeroconf account to list' + gajim.connections[account] = common.connection_zeroconf.ConnectionZeroconf(account) + else: + gajim.connections[account] = common.connection.Connection(account) + + + gtk.about_dialog_set_email_hook(self.on_launch_browser_mailer, 'mail') gtk.about_dialog_set_url_hook(self.on_launch_browser_mailer, 'url') From 77e53f7488d930598e63b2d195e8e5cce7456348 Mon Sep 17 00:00:00 2001 From: Stefan Bethge Date: Mon, 29 May 2006 19:57:39 +0000 Subject: [PATCH 008/110] trying to show contacts on the roster --- src/common/client_zeroconf.py | 12 + src/common/connection.py | 1 + src/common/connection_handlers_zeroconf.py | 1505 +------------------- src/common/connection_zeroconf.py | 432 +----- src/common/roster_zeroconf.py | 37 + src/common/zeroconf.py | 39 +- 6 files changed, 117 insertions(+), 1909 deletions(-) create mode 100644 src/common/client_zeroconf.py create mode 100644 src/common/roster_zeroconf.py diff --git a/src/common/client_zeroconf.py b/src/common/client_zeroconf.py new file mode 100644 index 000000000..f4b98aab9 --- /dev/null +++ b/src/common/client_zeroconf.py @@ -0,0 +1,12 @@ + +from common import roster_zeroconf + +class ClientZeroconf: + def __init__(self, zeroconf): + self.roster = roster_zeroconf.Roster(zeroconf) + + def getRoster(self): + return self.roster.getRoster() + + def send(self, str): + pass diff --git a/src/common/connection.py b/src/common/connection.py index 850317ce8..a361b1b59 100644 --- a/src/common/connection.py +++ b/src/common/connection.py @@ -54,6 +54,7 @@ class Connection(ConnectionHandlers): self.connection = None # xmpppy ClientCommon instance # this property is used to prevent double connections self.last_connection = None # last ClientCommon instance + self.is_zeroconf = False self.gpg = None self.status = '' self.old_show = '' diff --git a/src/common/connection_handlers_zeroconf.py b/src/common/connection_handlers_zeroconf.py index 1a82dc682..a912a0846 100644 --- a/src/common/connection_handlers_zeroconf.py +++ b/src/common/connection_handlers_zeroconf.py @@ -51,702 +51,6 @@ except: gajim.log.debug(_('Unable to load idle module')) HAS_IDLE = False -class ConnectionBytestream: - def __init__(self): - self.files_props = {} - - def is_transfer_stoped(self, file_props): - if file_props.has_key('error') and file_props['error'] != 0: - return True - if file_props.has_key('completed') and file_props['completed']: - return True - if file_props.has_key('connected') and file_props['connected'] == False: - return True - if not file_props.has_key('stopped') or not file_props['stopped']: - return False - return True - - def send_success_connect_reply(self, streamhost): - ''' send reply to the initiator of FT that we - made a connection - ''' - if streamhost is None: - return None - iq = common.xmpp.Iq(to = streamhost['initiator'], typ = 'result', - frm = streamhost['target']) - iq.setAttr('id', streamhost['id']) - query = iq.setTag('query') - query.setNamespace(common.xmpp.NS_BYTESTREAM) - stream_tag = query.setTag('streamhost-used') - stream_tag.setAttr('jid', streamhost['jid']) - self.connection.send(iq) - - def remove_transfers_for_contact(self, contact): - ''' stop all active transfer for contact ''' - for file_props in self.files_props.values(): - if self.is_transfer_stoped(file_props): - continue - receiver_jid = unicode(file_props['receiver']).split('/')[0] - if contact.jid == receiver_jid: - file_props['error'] = -5 - self.remove_transfer(file_props) - self.dispatch('FILE_REQUEST_ERROR', (contact.jid, file_props)) - sender_jid = unicode(file_props['sender']).split('/')[0] - if contact.jid == sender_jid: - file_props['error'] = -3 - self.remove_transfer(file_props) - - def remove_all_transfers(self): - ''' stops and removes all active connections from the socks5 pool ''' - for file_props in self.files_props.values(): - self.remove_transfer(file_props, remove_from_list = False) - del(self.files_props) - self.files_props = {} - - def remove_transfer(self, file_props, remove_from_list = True): - if file_props is None: - return - self.disconnect_transfer(file_props) - sid = file_props['sid'] - gajim.socks5queue.remove_file_props(self.name, sid) - - if remove_from_list: - if self.files_props.has_key('sid'): - del(self.files_props['sid']) - - def disconnect_transfer(self, file_props): - if file_props is None: - return - if file_props.has_key('hash'): - gajim.socks5queue.remove_sender(file_props['hash']) - - if file_props.has_key('streamhosts'): - for host in file_props['streamhosts']: - if host.has_key('idx') and host['idx'] > 0: - gajim.socks5queue.remove_receiver(host['idx']) - gajim.socks5queue.remove_sender(host['idx']) - - def send_socks5_info(self, file_props, fast = True, receiver = None, - sender = None): - ''' send iq for the present streamhosts and proxies ''' - if type(self.peerhost) != tuple: - return - port = gajim.config.get('file_transfers_port') - ft_override_host_to_send = gajim.config.get('ft_override_host_to_send') - cfg_proxies = gajim.config.get_per('accounts', self.name, - 'file_transfer_proxies') - if receiver is None: - receiver = file_props['receiver'] - if sender is None: - sender = file_props['sender'] - proxyhosts = [] - if fast and cfg_proxies: - proxies = map(lambda e:e.strip(), cfg_proxies.split(',')) - default = gajim.proxy65_manager.get_default_for_name(self.name) - if default: - # add/move default proxy at top of the others - if proxies.__contains__(default): - proxies.remove(default) - proxies.insert(0, default) - - for proxy in proxies: - (host, _port, jid) = gajim.proxy65_manager.get_proxy(proxy, self.name) - if host is None: - continue - host_dict={ - 'state': 0, - 'target': unicode(receiver), - 'id': file_props['sid'], - 'sid': file_props['sid'], - 'initiator': proxy, - 'host': host, - 'port': unicode(_port), - 'jid': jid - } - proxyhosts.append(host_dict) - sha_str = helpers.get_auth_sha(file_props['sid'], sender, - receiver) - file_props['sha_str'] = sha_str - if not ft_override_host_to_send: - ft_override_host_to_send = self.peerhost[0] - ft_override_host_to_send = socket.gethostbyname(ft_override_host_to_send) - listener = gajim.socks5queue.start_listener(self.peerhost[0], port, - sha_str, self._result_socks5_sid, file_props['sid']) - if listener == None: - file_props['error'] = -5 - self.dispatch('FILE_REQUEST_ERROR', (unicode(receiver), file_props)) - self._connect_error(unicode(receiver), file_props['sid'], - file_props['sid'], code = 406) - return - - iq = common.xmpp.Protocol(name = 'iq', to = unicode(receiver), - typ = 'set') - file_props['request-id'] = 'id_' + file_props['sid'] - iq.setID(file_props['request-id']) - query = iq.setTag('query') - query.setNamespace(common.xmpp.NS_BYTESTREAM) - query.setAttr('mode', 'tcp') - query.setAttr('sid', file_props['sid']) - streamhost = query.setTag('streamhost') - streamhost.setAttr('port', unicode(port)) - streamhost.setAttr('host', ft_override_host_to_send) - streamhost.setAttr('jid', sender) - if fast and proxyhosts != [] and gajim.config.get_per('accounts', - self.name, 'use_ft_proxies'): - file_props['proxy_receiver'] = unicode(receiver) - file_props['proxy_sender'] = unicode(sender) - file_props['proxyhosts'] = proxyhosts - for proxyhost in proxyhosts: - streamhost = common.xmpp.Node(tag = 'streamhost') - query.addChild(node=streamhost) - streamhost.setAttr('port', proxyhost['port']) - streamhost.setAttr('host', proxyhost['host']) - streamhost.setAttr('jid', proxyhost['jid']) - - # don't add the proxy child tag for streamhosts, which are proxies - # proxy = streamhost.setTag('proxy') - # proxy.setNamespace(common.xmpp.NS_STREAM) - self.connection.send(iq) - - def send_file_rejection(self, file_props): - ''' informs sender that we refuse to download the file ''' - # user response to ConfirmationDialog may come after we've disconneted - if not self.connection or self.connected < 2: - return - iq = common.xmpp.Protocol(name = 'iq', - to = unicode(file_props['sender']), typ = 'error') - iq.setAttr('id', file_props['request-id']) - err = common.xmpp.ErrorNode(code = '406', typ = 'auth', name = - 'not-acceptable') - iq.addChild(node=err) - self.connection.send(iq) - - def send_file_approval(self, file_props): - ''' send iq, confirming that we want to download the file ''' - # user response to ConfirmationDialog may come after we've disconneted - if not self.connection or self.connected < 2: - return - iq = common.xmpp.Protocol(name = 'iq', - to = unicode(file_props['sender']), typ = 'result') - iq.setAttr('id', file_props['request-id']) - si = iq.setTag('si') - si.setNamespace(common.xmpp.NS_SI) - if file_props.has_key('offset') and file_props['offset']: - file_tag = si.setTag('file') - file_tag.setNamespace(common.xmpp.NS_FILE) - range_tag = file_tag.setTag('range') - range_tag.setAttr('offset', file_props['offset']) - feature = si.setTag('feature') - feature.setNamespace(common.xmpp.NS_FEATURE) - _feature = common.xmpp.DataForm(typ='submit') - feature.addChild(node=_feature) - field = _feature.setField('stream-method') - field.delAttr('type') - field.setValue(common.xmpp.NS_BYTESTREAM) - self.connection.send(iq) - - def send_file_request(self, file_props): - ''' send iq for new FT request ''' - if not self.connection or self.connected < 2: - return - our_jid = gajim.get_jid_from_account(self.name) - resource = self.server_resource - frm = our_jid + '/' + resource - file_props['sender'] = frm - fjid = file_props['receiver'].jid + '/' + file_props['receiver'].resource - iq = common.xmpp.Protocol(name = 'iq', to = fjid, - typ = 'set') - iq.setID(file_props['sid']) - self.files_props[file_props['sid']] = file_props - si = iq.setTag('si') - si.setNamespace(common.xmpp.NS_SI) - si.setAttr('profile', common.xmpp.NS_FILE) - si.setAttr('id', file_props['sid']) - file_tag = si.setTag('file') - file_tag.setNamespace(common.xmpp.NS_FILE) - file_tag.setAttr('name', file_props['name']) - file_tag.setAttr('size', file_props['size']) - desc = file_tag.setTag('desc') - if file_props.has_key('desc'): - desc.setData(file_props['desc']) - file_tag.setTag('range') - feature = si.setTag('feature') - feature.setNamespace(common.xmpp.NS_FEATURE) - _feature = common.xmpp.DataForm(typ='form') - feature.addChild(node=_feature) - field = _feature.setField('stream-method') - field.setAttr('type', 'list-single') - field.addOption(common.xmpp.NS_BYTESTREAM) - self.connection.send(iq) - - def _result_socks5_sid(self, sid, hash_id): - ''' store the result of sha message from auth. ''' - if not self.files_props.has_key(sid): - return - file_props = self.files_props[sid] - file_props['hash'] = hash_id - return - - def _connect_error(self, to, _id, sid, code = 404): - ''' cb, when there is an error establishing BS connection, or - when connection is rejected''' - msg_dict = { - 404: 'Could not connect to given hosts', - 405: 'Cancel', - 406: 'Not acceptable', - } - msg = msg_dict[code] - iq = None - iq = common.xmpp.Protocol(name = 'iq', to = to, - typ = 'error') - iq.setAttr('id', _id) - err = iq.setTag('error') - err.setAttr('code', unicode(code)) - err.setData(msg) - self.connection.send(iq) - if code == 404: - file_props = gajim.socks5queue.get_file_props(self.name, sid) - if file_props is not None: - self.disconnect_transfer(file_props) - file_props['error'] = -3 - self.dispatch('FILE_REQUEST_ERROR', (to, file_props)) - - def _proxy_auth_ok(self, proxy): - '''cb, called after authentication to proxy server ''' - file_props = self.files_props[proxy['sid']] - iq = common.xmpp.Protocol(name = 'iq', to = proxy['initiator'], - typ = 'set') - auth_id = "au_" + proxy['sid'] - iq.setID(auth_id) - query = iq.setTag('query') - query.setNamespace(common.xmpp.NS_BYTESTREAM) - query.setAttr('sid', proxy['sid']) - activate = query.setTag('activate') - activate.setData(file_props['proxy_receiver']) - iq.setID(auth_id) - self.connection.send(iq) - - # register xmpppy handlers for bytestream and FT stanzas - def _bytestreamErrorCB(self, con, iq_obj): - gajim.log.debug('_bytestreamErrorCB') - id = unicode(iq_obj.getAttr('id')) - frm = helpers.get_full_jid_from_iq(iq_obj) - query = iq_obj.getTag('query') - gajim.proxy65_manager.error_cb(frm, query) - jid = helpers.get_jid_from_iq(iq_obj) - id = id[3:] - if not self.files_props.has_key(id): - return - file_props = self.files_props[id] - file_props['error'] = -4 - self.dispatch('FILE_REQUEST_ERROR', (jid, file_props)) - raise common.xmpp.NodeProcessed - - def _bytestreamSetCB(self, con, iq_obj): - gajim.log.debug('_bytestreamSetCB') - target = unicode(iq_obj.getAttr('to')) - id = unicode(iq_obj.getAttr('id')) - query = iq_obj.getTag('query') - sid = unicode(query.getAttr('sid')) - file_props = gajim.socks5queue.get_file_props( - self.name, sid) - streamhosts=[] - for item in query.getChildren(): - if item.getName() == 'streamhost': - host_dict={ - 'state': 0, - 'target': target, - 'id': id, - 'sid': sid, - 'initiator': helpers.get_full_jid_from_iq(iq_obj) - } - for attr in item.getAttrs(): - host_dict[attr] = item.getAttr(attr) - streamhosts.append(host_dict) - if file_props is None: - if self.files_props.has_key(sid): - file_props = self.files_props[sid] - file_props['fast'] = streamhosts - if file_props['type'] == 's': # FIXME: remove fast xmlns - # only psi do this - - if file_props.has_key('streamhosts'): - file_props['streamhosts'].extend(streamhosts) - else: - file_props['streamhosts'] = streamhosts - if not gajim.socks5queue.get_file_props(self.name, sid): - gajim.socks5queue.add_file_props(self.name, file_props) - gajim.socks5queue.connect_to_hosts(self.name, sid, - self.send_success_connect_reply, None) - raise common.xmpp.NodeProcessed - - file_props['streamhosts'] = streamhosts - if file_props['type'] == 'r': - gajim.socks5queue.connect_to_hosts(self.name, sid, - self.send_success_connect_reply, self._connect_error) - raise common.xmpp.NodeProcessed - - def _ResultCB(self, con, iq_obj): - gajim.log.debug('_ResultCB') - # if we want to respect jep-0065 we have to check for proxy - # activation result in any result iq - real_id = unicode(iq_obj.getAttr('id')) - if real_id[:3] != 'au_': - return - frm = helpers.get_full_jid_from_iq(iq_obj) - id = real_id[3:] - if self.files_props.has_key(id): - file_props = self.files_props[id] - if file_props['streamhost-used']: - for host in file_props['proxyhosts']: - if host['initiator'] == frm and host.has_key('idx'): - gajim.socks5queue.activate_proxy(host['idx']) - raise common.xmpp.NodeProcessed - - def _bytestreamResultCB(self, con, iq_obj): - gajim.log.debug('_bytestreamResultCB') - frm = helpers.get_full_jid_from_iq(iq_obj) - real_id = unicode(iq_obj.getAttr('id')) - query = iq_obj.getTag('query') - gajim.proxy65_manager.resolve_result(frm, query) - - try: - streamhost = query.getTag('streamhost-used') - except: # this bytestream result is not what we need - pass - id = real_id[3:] - if self.files_props.has_key(id): - file_props = self.files_props[id] - else: - raise common.xmpp.NodeProcessed - if streamhost is None: - # proxy approves the activate query - if real_id[:3] == 'au_': - id = real_id[3:] - if not file_props.has_key('streamhost-used') or \ - file_props['streamhost-used'] is False: - raise common.xmpp.NodeProcessed - if not file_props.has_key('proxyhosts'): - raise common.xmpp.NodeProcessed - for host in file_props['proxyhosts']: - if host['initiator'] == frm and \ - unicode(query.getAttr('sid')) == file_props['sid']: - gajim.socks5queue.activate_proxy(host['idx']) - break - raise common.xmpp.NodeProcessed - jid = streamhost.getAttr('jid') - if file_props.has_key('streamhost-used') and \ - file_props['streamhost-used'] is True: - raise common.xmpp.NodeProcessed - - if real_id[:3] == 'au_': - gajim.socks5queue.send_file(file_props, self.name) - raise common.xmpp.NodeProcessed - - proxy = None - if file_props.has_key('proxyhosts'): - for proxyhost in file_props['proxyhosts']: - if proxyhost['jid'] == jid: - proxy = proxyhost - - if proxy != None: - file_props['streamhost-used'] = True - if not file_props.has_key('streamhosts'): - file_props['streamhosts'] = [] - file_props['streamhosts'].append(proxy) - file_props['is_a_proxy'] = True - receiver = socks5.Socks5Receiver(gajim.idlequeue, proxy, file_props['sid'], file_props) - gajim.socks5queue.add_receiver(self.name, receiver) - proxy['idx'] = receiver.queue_idx - gajim.socks5queue.on_success = self._proxy_auth_ok - raise common.xmpp.NodeProcessed - - else: - gajim.socks5queue.send_file(file_props, self.name) - if file_props.has_key('fast'): - fasts = file_props['fast'] - if len(fasts) > 0: - self._connect_error(frm, fasts[0]['id'], file_props['sid'], - code = 406) - - raise common.xmpp.NodeProcessed - - def _siResultCB(self, con, iq_obj): - gajim.log.debug('_siResultCB') - id = iq_obj.getAttr('id') - if not self.files_props.has_key(id): - # no such jid - return - file_props = self.files_props[id] - if file_props is None: - # file properties for jid is none - return - if file_props.has_key('request-id'): - # we have already sent streamhosts info - return - file_props['receiver'] = helpers.get_full_jid_from_iq(iq_obj) - si = iq_obj.getTag('si') - file_tag = si.getTag('file') - range_tag = None - if file_tag: - range_tag = file_tag.getTag('range') - if range_tag: - offset = range_tag.getAttr('offset') - if offset: - file_props['offset'] = int(offset) - length = range_tag.getAttr('length') - if length: - file_props['length'] = int(length) - feature = si.setTag('feature') - if feature.getNamespace() != common.xmpp.NS_FEATURE: - return - form_tag = feature.getTag('x') - form = common.xmpp.DataForm(node=form_tag) - field = form.getField('stream-method') - if field.getValue() != common.xmpp.NS_BYTESTREAM: - return - self.send_socks5_info(file_props, fast = True) - raise common.xmpp.NodeProcessed - - def _siSetCB(self, con, iq_obj): - gajim.log.debug('_siSetCB') - jid = helpers.get_jid_from_iq(iq_obj) - si = iq_obj.getTag('si') - profile = si.getAttr('profile') - mime_type = si.getAttr('mime-type') - if profile != common.xmpp.NS_FILE: - return - file_tag = si.getTag('file') - file_props = {'type': 'r'} - for attribute in file_tag.getAttrs(): - if attribute in ('name', 'size', 'hash', 'date'): - val = file_tag.getAttr(attribute) - if val is None: - continue - file_props[attribute] = val - file_desc_tag = file_tag.getTag('desc') - if file_desc_tag is not None: - file_props['desc'] = file_desc_tag.getData() - - if mime_type is not None: - file_props['mime-type'] = mime_type - our_jid = gajim.get_jid_from_account(self.name) - resource = self.server_resource - file_props['receiver'] = our_jid + '/' + resource - file_props['sender'] = helpers.get_full_jid_from_iq(iq_obj) - file_props['request-id'] = unicode(iq_obj.getAttr('id')) - file_props['sid'] = unicode(si.getAttr('id')) - gajim.socks5queue.add_file_props(self.name, file_props) - self.dispatch('FILE_REQUEST', (jid, file_props)) - raise common.xmpp.NodeProcessed - - def _siErrorCB(self, con, iq_obj): - gajim.log.debug('_siErrorCB') - si = iq_obj.getTag('si') - profile = si.getAttr('profile') - if profile != common.xmpp.NS_FILE: - return - id = iq_obj.getAttr('id') - if not self.files_props.has_key(id): - # no such jid - return - file_props = self.files_props[id] - if file_props is None: - # file properties for jid is none - return - jid = helpers.get_jid_from_iq(iq_obj) - file_props['error'] = -3 - self.dispatch('FILE_REQUEST_ERROR', (jid, file_props)) - raise common.xmpp.NodeProcessed - -class ConnectionDisco: - ''' hold xmpppy handlers and public methods for discover services''' - def discoverItems(self, jid, node = None, id_prefix = None): - '''According to JEP-0030: jid is mandatory, - name, node, action is optional.''' - self._discover(common.xmpp.NS_DISCO_ITEMS, jid, node, id_prefix) - - def discoverInfo(self, jid, node = None, id_prefix = None): - '''According to JEP-0030: - For identity: category, type is mandatory, name is optional. - For feature: var is mandatory''' - self._discover(common.xmpp.NS_DISCO_INFO, jid, node, id_prefix) - - def request_register_agent_info(self, agent): - if not self.connection: - return None - iq=common.xmpp.Iq('get', common.xmpp.NS_REGISTER, to=agent) - id = self.connection.getAnID() - iq.setID(id) - # Wait the answer during 30 secondes - self.awaiting_timeouts[gajim.idlequeue.current_time() + 30] = (id, - _('Registration information for transport %s has not arrived in time' % \ - agent)) - self.connection.SendAndCallForResponse(iq, self._ReceivedRegInfo, - {'agent': agent}) - - def build_data_from_dict(self, query, config): - x = query.setTag(common.xmpp.NS_DATA + ' x', attrs = {'type': 'submit'}) - i = 0 - while config.has_key(i): - if not config[i].has_key('type'): - i += 1 - continue - if config[i]['type'] == 'fixed': - i += 1 - continue - tag = x.addChild('field') - if config[i].has_key('var'): - tag.setAttr('var', config[i]['var']) - if config[i].has_key('values'): - for val in config[i]['values']: - if val == False: - val = '0' - elif val == True: - val = '1' - # Force to create a new child - tag.addChild('value').addData(val) - i += 1 - - def register_agent(self, agent, info, is_form = False): - if not self.connection: - return - if is_form: - iq = common.xmpp.Iq('set', common.xmpp.NS_REGISTER, to = agent) - query = iq.getTag('query') - self.build_data_from_dict(query, info) - self.connection.send(iq) - else: - # fixed: blocking - common.xmpp.features_nb.register(self.connection, agent, info, None) - - - def _discover(self, ns, jid, node = None, id_prefix = None): - if not self.connection: - return - iq = common.xmpp.Iq(typ = 'get', to = jid, queryNS = ns) - if id_prefix: - id = self.connection.getAnID() - iq.setID('%s%s' % (id_prefix, id)) - if node: - iq.setQuerynode(node) - self.connection.send(iq) - - def _ReceivedRegInfo(self, con, resp, agent): - common.xmpp.features_nb._ReceivedRegInfo(con, resp, agent) - self._IqCB(con, resp) - - def _discoGetCB(self, con, iq_obj): - ''' get disco info ''' - frm = helpers.get_full_jid_from_iq(iq_obj) - to = unicode(iq_obj.getAttr('to')) - id = unicode(iq_obj.getAttr('id')) - iq = common.xmpp.Iq(to = frm, typ = 'result', queryNS =\ - common.xmpp.NS_DISCO, frm = to) - iq.setAttr('id', id) - query = iq.setTag('query') - # bytestream transfers - feature = common.xmpp.Node('feature') - feature.setAttr('var', common.xmpp.NS_BYTESTREAM) - query.addChild(node=feature) - # si methods - feature = common.xmpp.Node('feature') - feature.setAttr('var', common.xmpp.NS_SI) - query.addChild(node=feature) - # filetransfers transfers - feature = common.xmpp.Node('feature') - feature.setAttr('var', common.xmpp.NS_FILE) - query.addChild(node=feature) - - self.connection.send(iq) - raise common.xmpp.NodeProcessed - - def _DiscoverItemsErrorCB(self, con, iq_obj): - gajim.log.debug('DiscoverItemsErrorCB') - jid = helpers.get_full_jid_from_iq(iq_obj) - self.dispatch('AGENT_ERROR_ITEMS', (jid)) - - def _DiscoverItemsCB(self, con, iq_obj): - gajim.log.debug('DiscoverItemsCB') - q = iq_obj.getTag('query') - node = q.getAttr('node') - if not node: - node = '' - qp = iq_obj.getQueryPayload() - items = [] - if not qp: - qp = [] - for i in qp: - # CDATA payload is not processed, only nodes - if not isinstance(i, common.xmpp.simplexml.Node): - continue - attr = {} - for key in i.getAttrs(): - attr[key] = i.getAttrs()[key] - items.append(attr) - jid = helpers.get_full_jid_from_iq(iq_obj) - hostname = gajim.config.get_per('accounts', self.name, - 'hostname') - id = iq_obj.getID() - if jid == hostname and id[0] == 'p': - for item in items: - self.discoverInfo(item['jid'], id_prefix='p') - else: - self.dispatch('AGENT_INFO_ITEMS', (jid, node, items)) - - def _DiscoverInfoGetCB(self, con, iq_obj): - gajim.log.debug('DiscoverInfoGetCB') - iq = iq_obj.buildReply('result') - q = iq.getTag('query') - q.addChild('identity', attrs = {'type': 'pc', - 'category': 'client', - 'name': 'Gajim'}) - q.addChild('feature', attrs = {'var': common.xmpp.NS_BYTESTREAM}) - q.addChild('feature', attrs = {'var': common.xmpp.NS_SI}) - q.addChild('feature', attrs = {'var': common.xmpp.NS_FILE}) - q.addChild('feature', attrs = {'var': common.xmpp.NS_MUC}) - self.connection.send(iq) - raise common.xmpp.NodeProcessed - - def _DiscoverInfoErrorCB(self, con, iq_obj): - gajim.log.debug('DiscoverInfoErrorCB') - jid = helpers.get_full_jid_from_iq(iq_obj) - self.dispatch('AGENT_ERROR_INFO', (jid)) - - def _DiscoverInfoCB(self, con, iq_obj): - gajim.log.debug('DiscoverInfoCB') - # According to JEP-0030: - # For identity: category, type is mandatory, name is optional. - # For feature: var is mandatory - identities, features, data = [], [], [] - q = iq_obj.getTag('query') - node = q.getAttr('node') - if not node: - node = '' - qc = iq_obj.getQueryChildren() - if not qc: - qc = [] - for i in qc: - if i.getName() == 'identity': - attr = {} - for key in i.getAttrs().keys(): - attr[key] = i.getAttr(key) - identities.append(attr) - elif i.getName() == 'feature': - features.append(i.getAttr('var')) - elif i.getName() == 'x' and i.getAttr('xmlns') == common.xmpp.NS_DATA: - data.append(common.xmpp.DataForm(node=i)) - jid = helpers.get_full_jid_from_iq(iq_obj) - id = iq_obj.getID() - if not identities: # ejabberd doesn't send identities when we browse online users - #FIXME: see http://www.jabber.ru/bugzilla/show_bug.cgi?id=225 - identities = [{'category': 'server', 'type': 'im', 'name': node}] - if id[0] == 'p': - if features.__contains__(common.xmpp.NS_BYTESTREAM): - gajim.proxy65_manager.resolve(jid, self.connection, self.name) - self.dispatch('AGENT_INFO_INFO', (jid, node, identities, - features, data)) - class ConnectionVcard: def __init__(self): self.vcard_sha = None @@ -754,23 +58,30 @@ class ConnectionVcard: self.room_jids = [] # list of gc jids so that vcard are saved in a folder def add_sha(self, p, send_caps = True): + ''' c = p.setTag('x', namespace = common.xmpp.NS_VCARD_UPDATE) if self.vcard_sha is not None: c.setTagData('photo', self.vcard_sha) if send_caps: return self.add_caps(p) return p + ''' + pass def add_caps(self, p): - ''' advertise our capabilities in presence stanza (jep-0115)''' + ''' + # advertise our capabilities in presence stanza (jep-0115) c = p.setTag('c', namespace = common.xmpp.NS_CAPS) c.setAttr('node', 'http://gajim.org/caps') c.setAttr('ext', 'ftrans') c.setAttr('ver', gajim.version) return p + ''' + pass def node_to_dict(self, node): dict = {} + ''' for info in node.getChildren(): name = info.getName() if name in ('ADR', 'TEL', 'EMAIL'): # we can have several @@ -786,6 +97,7 @@ class ConnectionVcard: dict[name] = {} for c in info.getChildren(): dict[name][c.getName()] = c.getData() + ''' return dict def save_vcard_to_hd(self, full_jid, card): @@ -844,6 +156,7 @@ class ConnectionVcard: to a fake jid, like in private messages in groupchat''' if not self.connection: return + ''' iq = common.xmpp.Iq(typ = 'get') if jid: iq.setTo(jid) @@ -858,10 +171,13 @@ class ConnectionVcard: self.room_jids.append(room_jid) self.connection.send(iq) #('VCARD', {entry1: data, entry2: {entry21: data, ...}, ...}) - + ''' + pass + def send_vcard(self, vcard): if not self.connection: return + ''' iq = common.xmpp.Iq(typ = 'set') iq2 = iq.setTag(common.xmpp.NS_VCARD + ' vCard') for i in vcard: @@ -894,156 +210,12 @@ class ConnectionVcard: iq2.getTag('PHOTO').setTagData('SHA', avatar_sha) self.awaiting_answers[id] = (VCARD_PUBLISHED, iq2) - - def _IqCB(self, con, iq_obj): - id = iq_obj.getID() - - # Check if we were waiting a timeout for this id - found_tim = None - for tim in self.awaiting_timeouts: - if id == self.awaiting_timeouts[tim][0]: - found_tim = tim - break - if found_tim: - del self.awaiting_timeouts[found_tim] - - if id not in self.awaiting_answers: - return - if self.awaiting_answers[id][0] == VCARD_PUBLISHED: - if iq_obj.getType() == 'result': - vcard_iq = self.awaiting_answers[id][1] - # Save vcard to HD - if vcard_iq.getTag('PHOTO') and vcard_iq.getTag('PHOTO').getTag('SHA'): - new_sha = vcard_iq.getTag('PHOTO').getTagData('SHA') - else: - new_sha = '' - - # Save it to file - our_jid = gajim.get_jid_from_account(self.name) - self.save_vcard_to_hd(our_jid, vcard_iq) - - # Send new presence if sha changed and we are not invisible - if self.vcard_sha != new_sha and STATUS_LIST[self.connected] != \ - 'invisible': - self.vcard_sha = new_sha - sshow = helpers.get_xmpp_show(STATUS_LIST[self.connected]) - prio = unicode(gajim.config.get_per('accounts', self.name, - 'priority')) - p = common.xmpp.Presence(typ = None, priority = prio, - show = sshow, status = self.status) - p = self.add_sha(p) - self.connection.send(p) - self.dispatch('VCARD_PUBLISHED', ()) - elif iq_obj.getType() == 'error': - self.dispatch('VCARD_NOT_PUBLISHED', ()) - elif self.awaiting_answers[id][0] == VCARD_ARRIVED: - # If vcard is empty, we send to the interface an empty vcard so that - # it knows it arrived - if not iq_obj.getTag('vCard'): - jid = self.awaiting_answers[id][1] - our_jid = gajim.get_jid_from_account(self.name) - if jid and jid != our_jid: - # Write an empty file - self.save_vcard_to_hd(jid, '') - self.dispatch('VCARD', {'jid': jid}) - elif jid == our_jid: - self.dispatch('MYVCARD', {'jid': jid}) - elif self.awaiting_answers[id][0] == AGENT_REMOVED: - jid = self.awaiting_answers[id][1] - self.dispatch('AGENT_REMOVED', jid) - del self.awaiting_answers[id] - - def _vCardCB(self, con, vc): - '''Called when we receive a vCard - Parse the vCard and send it to plugins''' - if not vc.getTag('vCard'): - return - frm_iq = vc.getFrom() - our_jid = gajim.get_jid_from_account(self.name) - resource = '' - if frm_iq: - who = helpers.get_full_jid_from_iq(vc) - frm, resource = gajim.get_room_and_nick_from_fjid(who) - else: - who = frm = our_jid - if vc.getTag('vCard').getNamespace() == common.xmpp.NS_VCARD: - card = vc.getChildren()[0] - vcard = self.node_to_dict(card) - photo_decoded = None - if vcard.has_key('PHOTO') and isinstance(vcard['PHOTO'], dict) and \ - vcard['PHOTO'].has_key('BINVAL'): - photo = vcard['PHOTO']['BINVAL'] - try: - photo_decoded = base64.decodestring(photo) - avatar_sha = sha.sha(photo_decoded).hexdigest() - except: - avatar_sha = '' - else: - avatar_sha = '' - - if avatar_sha: - card.getTag('PHOTO').setTagData('SHA', avatar_sha) - - # Save it to file - self.save_vcard_to_hd(who, card) - # Save the decoded avatar to a separate file too, and generate files for dbus notifications - puny_jid = helpers.sanitize_filename(frm) - puny_nick = None - begin_path = os.path.join(gajim.AVATAR_PATH, puny_jid) - if frm in self.room_jids: - puny_nick = helpers.sanitize_filename(resource) - # create folder if needed - if not os.path.isdir(begin_path): - os.mkdir(begin_path, 0700) - begin_path = os.path.join(begin_path, puny_nick) - if photo_decoded: - avatar_file = begin_path + '_notif_size_colored.png' - if frm == our_jid and avatar_sha != self.vcard_sha: - gajim.interface.save_avatar_files(frm, photo_decoded, puny_nick) - elif frm != our_jid and (not os.path.exists(avatar_file) or \ - not self.vcard_shas.has_key(frm) or \ - avatar_sha != self.vcard_shas[frm]): - gajim.interface.save_avatar_files(frm, photo_decoded, puny_nick) - else: - for ext in ('.jpeg', '.png', '_notif_size_bw.png', - '_notif_size_colored.png'): - path = begin_path + ext - if os.path.isfile(path): - os.remove(path) - - if frm != our_jid: - if avatar_sha: - self.vcard_shas[frm] = avatar_sha - elif self.vcard_shas.has_key(frm): - del self.vcard_shas[frm] - - vcard['jid'] = frm - vcard['resource'] = resource - if frm == our_jid: - self.dispatch('MYVCARD', vcard) - # we re-send our presence with sha if has changed and if we are - # not invisible - if self.vcard_sha == avatar_sha: - return - self.vcard_sha = avatar_sha - if STATUS_LIST[self.connected] == 'invisible': - return - sshow = helpers.get_xmpp_show(STATUS_LIST[self.connected]) - prio = unicode(gajim.config.get_per('accounts', self.name, - 'priority')) - p = common.xmpp.Presence(typ = None, priority = prio, show = sshow, - status = self.status) - p = self.add_sha(p) - self.connection.send(p) - else: - self.dispatch('VCARD', vcard) - - -# TODO: remove bytestream and disco, vcard maybe later used? -class ConnectionHandlers(ConnectionVcard, ConnectionBytestream, ConnectionDisco): + ''' + pass + +class ConnectionHandlersZeroconf(ConnectionVcard): def __init__(self): ConnectionVcard.__init__(self) - ConnectionBytestream.__init__(self) # List of IDs we are waiting answers for {id: (type_of_request, data), } self.awaiting_answers = {} # List of IDs that will produce a timeout is answer doesn't arrive @@ -1065,466 +237,6 @@ class ConnectionHandlers(ConnectionVcard, ConnectionBytestream, ConnectionDisco) iq.setError('not-authorized', 401) self.connection.send(iq) - def _HttpAuthCB(self, con, iq_obj): - gajim.log.debug('HttpAuthCB') - opt = gajim.config.get_per('accounts', self.name, 'http_auth') - if opt in ('yes', 'no'): - self.build_http_auth_answer(iq_obj, opt) - else: - id = iq_obj.getTagAttr('confirm', 'id') - method = iq_obj.getTagAttr('confirm', 'method') - url = iq_obj.getTagAttr('confirm', 'url') - self.dispatch('HTTP_AUTH', (method, url, id, iq_obj)); - raise common.xmpp.NodeProcessed - - def _ErrorCB(self, con, iq_obj): - errmsg = iq_obj.getError() - errcode = iq_obj.getErrorCode() - jid_from = helpers.get_full_jid_from_iq(iq_obj) - id = unicode(iq_obj.getID()) - self.dispatch('ERROR_ANSWER', (id, jid_from, errmsg, errcode)) - - def _PrivateCB(self, con, iq_obj): - ''' - Private Data (JEP 048 and 049) - ''' - gajim.log.debug('PrivateCB') - query = iq_obj.getTag('query') - storage = query.getTag('storage') - if storage: - ns = storage.getNamespace() - if ns == 'storage:bookmarks': - # Bookmarked URLs and Conferences - # http://www.jabber.org/jeps/jep-0048.html - confs = storage.getTags('conference') - for conf in confs: - autojoin_val = conf.getAttr('autojoin') - if autojoin_val is None: # not there (it's optional) - autojoin_val = False - print_status = conf.getTagData('print_status') - if not print_status: - print_status = conf.getTagData('show_status') - bm = {'name': conf.getAttr('name'), - 'jid': conf.getAttr('jid'), - 'autojoin': autojoin_val, - 'password': conf.getTagData('password'), - 'nick': conf.getTagData('nick'), - 'print_status': print_status} - - self.bookmarks.append(bm) - self.dispatch('BOOKMARKS', self.bookmarks) - - elif ns == 'storage:metacontacts': - # Metacontact tags - # http://www.jabber.org/jeps/jep-XXXX.html - meta_list = {} - metas = storage.getTags('meta') - for meta in metas: - jid = meta.getAttr('jid') - tag = meta.getAttr('tag') - data = {'jid': jid} - order = meta.getAttr('order') - if order != None: - data['order'] = order - if meta_list.has_key(tag): - meta_list[tag].append(data) - else: - meta_list[tag] = [data] - self.dispatch('METACONTACTS', meta_list) - # We can now continue connection by requesting the roster - self.connection.initRoster() - - elif ns == 'gajim:prefs': - # Preferences data - # http://www.jabber.org/jeps/jep-0049.html - #TODO: implement this - pass - - def _PrivateErrorCB(self, con, iq_obj): - gajim.log.debug('PrivateErrorCB') - query = iq_obj.getTag('query') - storage_tag = query.getTag('storage') - if storage_tag: - ns = storage_tag.getNamespace() - if ns == 'storage:metacontacts': - # Private XML Storage (JEP49) is not supported by server - # Continue connecting - self.connection.initRoster() - - def _rosterSetCB(self, con, iq_obj): - gajim.log.debug('rosterSetCB') - for item in iq_obj.getTag('query').getChildren(): - jid = helpers.parse_jid(item.getAttr('jid')) - name = item.getAttr('name') - sub = item.getAttr('subscription') - ask = item.getAttr('ask') - groups = [] - for group in item.getTags('group'): - groups.append(group.getData()) - self.dispatch('ROSTER_INFO', (jid, name, sub, ask, groups)) - raise common.xmpp.NodeProcessed - - def _VersionCB(self, con, iq_obj): - gajim.log.debug('VersionCB') - iq_obj = iq_obj.buildReply('result') - qp = iq_obj.getTag('query') - qp.setTagData('name', 'Gajim') - qp.setTagData('version', gajim.version) - send_os = gajim.config.get('send_os_info') - if send_os: - qp.setTagData('os', helpers.get_os_info()) - self.connection.send(iq_obj) - raise common.xmpp.NodeProcessed - - def _LastCB(self, con, iq_obj): - gajim.log.debug('IdleCB') - iq_obj = iq_obj.buildReply('result') - qp = iq_obj.getTag('query') - if not HAS_IDLE: - qp.attrs['seconds'] = '0'; - else: - qp.attrs['seconds'] = idle.getIdleSec() - - self.connection.send(iq_obj) - raise common.xmpp.NodeProcessed - - def _LastResultCB(self, con, iq_obj): - gajim.log.debug('LastResultCB') - qp = iq_obj.getTag('query') - seconds = qp.getAttr('seconds') - status = qp.getData() - try: - seconds = int(seconds) - except: - return - who = helpers.get_full_jid_from_iq(iq_obj) - jid_stripped, resource = gajim.get_room_and_nick_from_fjid(who) - self.dispatch('LAST_STATUS_TIME', (jid_stripped, resource, seconds, status)) - - def _VersionResultCB(self, con, iq_obj): - gajim.log.debug('VersionResultCB') - client_info = '' - os_info = '' - qp = iq_obj.getTag('query') - if qp.getTag('name'): - client_info += qp.getTag('name').getData() - if qp.getTag('version'): - client_info += ' ' + qp.getTag('version').getData() - if qp.getTag('os'): - os_info += qp.getTag('os').getData() - who = helpers.get_full_jid_from_iq(iq_obj) - jid_stripped, resource = gajim.get_room_and_nick_from_fjid(who) - self.dispatch('OS_INFO', (jid_stripped, resource, client_info, os_info)) - - - def _gMailNewMailCB(self, con, gm): - '''Called when we get notified of new mail messages in gmail account''' - if not gm.getTag('new-mail'): - return - if gm.getTag('new-mail').getNamespace() == common.xmpp.NS_GMAILNOTIFY: - # we'll now ask the server for the exact number of new messages - jid = gajim.get_jid_from_account(self.name) - gajim.log.debug('Got notification of new gmail e-mail on %s. Asking the server for more info.' % jid) - iq = common.xmpp.Iq(typ = 'get') - iq.setAttr('id', '13') - query = iq.setTag('query') - query.setNamespace(common.xmpp.NS_GMAILNOTIFY) - self.connection.send(iq) - raise common.xmpp.NodeProcessed - - def _gMailQueryCB(self, con, gm): - '''Called when we receive results from Querying the server for mail messages in gmail account''' - if not gm.getTag('mailbox'): - return - if gm.getTag('mailbox').getNamespace() == common.xmpp.NS_GMAILNOTIFY: - newmsgs = gm.getTag('mailbox').getAttr('total-matched') - if newmsgs != '0': - # there are new messages - jid = gajim.get_jid_from_account(self.name) - gajim.log.debug(('You have %s new gmail e-mails on %s.') % (newmsgs, jid)) - self.dispatch('GMAIL_NOTIFY', (jid, newmsgs)) - raise common.xmpp.NodeProcessed - - def _messageCB(self, con, msg): - '''Called when we receive a message''' - msgtxt = msg.getBody() - mtype = msg.getType() - subject = msg.getSubject() # if not there, it's None - tim = msg.getTimestamp() - tim = time.strptime(tim, '%Y%m%dT%H:%M:%S') - tim = time.localtime(timegm(tim)) - frm = helpers.get_full_jid_from_iq(msg) - jid = helpers.get_jid_from_iq(msg) - no_log_for = gajim.config.get_per('accounts', self.name, - 'no_log_for').split() - encrypted = False - chatstate = None - encTag = msg.getTag('x', namespace = common.xmpp.NS_ENCRYPTED) - decmsg = '' - # invitations - invite = None - if not encTag: - invite = msg.getTag('x', namespace = common.xmpp.NS_MUC_USER) - if invite and not invite.getTag('invite'): - invite = None - delayed = msg.getTag('x', namespace = common.xmpp.NS_DELAY) != None - msg_id = None - composing_jep = None - # FIXME: Msn transport (CMSN1.2.1 and PyMSN0.10) do NOT RECOMMENDED - # invitation - # stanza (MUC JEP) remove in 2007, as we do not do NOT RECOMMENDED - xtags = msg.getTags('x') - for xtag in xtags: - if xtag.getNamespace() == common.xmpp.NS_CONFERENCE and not invite: - room_jid = xtag.getAttr('jid') - self.dispatch('GC_INVITATION', (room_jid, frm, '', None)) - return - # chatstates - look for chatstate tags in a message if not delayed - if not delayed: - composing_jep = False - children = msg.getChildren() - for child in children: - if child.getNamespace() == 'http://jabber.org/protocol/chatstates': - chatstate = child.getName() - composing_jep = 'JEP-0085' - break - # No JEP-0085 support, fallback to JEP-0022 - if not chatstate: - chatstate_child = msg.getTag('x', namespace = common.xmpp.NS_EVENT) - if chatstate_child: - chatstate = 'active' - composing_jep = 'JEP-0022' - if not msgtxt and chatstate_child.getTag('composing'): - chatstate = 'composing' - - if encTag and GnuPG.USE_GPG: - #decrypt - encmsg = encTag.getData() - - keyID = gajim.config.get_per('accounts', self.name, 'keyid') - if keyID: - decmsg = self.gpg.decrypt(encmsg, keyID) - if decmsg: - msgtxt = decmsg - encrypted = True - if mtype == 'error': - error_msg = msg.getError() - if not error_msg: - error_msg = msgtxt - msgtxt = None - if self.name not in no_log_for: - gajim.logger.write('error', frm, error_msg, tim = tim, - subject = subject) - self.dispatch('MSGERROR', (frm, msg.getErrorCode(), error_msg, msgtxt, - tim)) - elif mtype == 'groupchat': - if subject: - self.dispatch('GC_SUBJECT', (frm, subject, msgtxt)) - else: - if not msg.getTag('body'): #no - return - # Ignore message from room in which we are not - if not self.last_history_line.has_key(jid): - return - self.dispatch('GC_MSG', (frm, msgtxt, tim)) - if self.name not in no_log_for and jid in self.last_history_line \ - and not int(float(time.mktime(tim))) <= \ - self.last_history_line[jid] and msgtxt: - gajim.logger.write('gc_msg', frm, msgtxt, tim = tim) - elif mtype == 'chat': # it's type 'chat' - if not msg.getTag('body') and chatstate is None: #no - return - if msg.getTag('body') and self.name not in no_log_for and jid not in\ - no_log_for and msgtxt: - msg_id = gajim.logger.write('chat_msg_recv', frm, msgtxt, tim = tim, - subject = subject) - self.dispatch('MSG', (frm, msgtxt, tim, encrypted, mtype, subject, - chatstate, msg_id, composing_jep)) - else: # it's single message - if self.name not in no_log_for and jid not in no_log_for and msgtxt: - gajim.logger.write('single_msg_recv', frm, msgtxt, tim = tim, - subject = subject) - if invite is not None: - item = invite.getTag('invite') - jid_from = item.getAttr('from') - reason = item.getTagData('reason') - item = invite.getTag('password') - password = invite.getTagData('password') - self.dispatch('GC_INVITATION',(frm, jid_from, reason, password)) - else: - self.dispatch('MSG', (frm, msgtxt, tim, encrypted, 'normal', - subject, chatstate, msg_id, composing_jep)) - # END messageCB - - def _presenceCB(self, con, prs): - '''Called when we receive a presence''' - ptype = prs.getType() - if ptype == 'available': - ptype = None - gajim.log.debug('PresenceCB: %s' % ptype) - who = helpers.get_full_jid_from_iq(prs) - jid_stripped, resource = gajim.get_room_and_nick_from_fjid(who) - timestamp = None - is_gc = False # is it a GC presence ? - sigTag = None - avatar_sha = None - transport_auto_auth = False - xtags = prs.getTags('x') - for x in xtags: - if x.getNamespace().startswith(common.xmpp.NS_MUC): - is_gc = True - if x.getNamespace() == common.xmpp.NS_SIGNED: - sigTag = x - if x.getNamespace() == common.xmpp.NS_VCARD_UPDATE: - avatar_sha = x.getTagData('photo') - if x.getNamespace() == common.xmpp.NS_DELAY: - # JEP-0091 - tim = prs.getTimestamp() - tim = time.strptime(tim, '%Y%m%dT%H:%M:%S') - timestamp = time.localtime(timegm(tim)) - if x.getNamespace() == 'http://delx.cjb.net/protocol/roster-subsync': - # see http://trac.gajim.org/ticket/326 - agent = gajim.get_server_from_jid(jid_stripped) - if self.connection.getRoster().getItem(agent): # to be sure it's a transport contact - transport_auto_auth = True - - no_log_for = gajim.config.get_per('accounts', self.name, - 'no_log_for').split() - status = prs.getStatus() - show = prs.getShow() - if not show in STATUS_LIST: - show = '' # We ignore unknown show - if not ptype and not show: - show = 'online' - elif ptype == 'unavailable': - show = 'offline' - - prio = prs.getPriority() - try: - prio = int(prio) - except: - prio = 0 - keyID = '' - if sigTag and GnuPG.USE_GPG: - #verify - sigmsg = sigTag.getData() - keyID = self.gpg.verify(status, sigmsg) - - if is_gc: - if ptype == 'error': - errmsg = prs.getError() - errcode = prs.getErrorCode() - if errcode == '502': # Internal Timeout: - self.dispatch('NOTIFY', (jid_stripped, 'error', errmsg, resource, - prio, keyID, timestamp)) - elif errcode == '401': # password required to join - self.dispatch('ERROR', (_('Unable to join room'), - _('A password is required to join this room.'))) - elif errcode == '403': # we are banned - self.dispatch('ERROR', (_('Unable to join room'), - _('You are banned from this room.'))) - elif errcode == '404': # room does not exist - self.dispatch('ERROR', (_('Unable to join room'), - _('Such room does not exist.'))) - elif errcode == '405': - self.dispatch('ERROR', (_('Unable to join room'), - _('Room creation is restricted.'))) - elif errcode == '406': - self.dispatch('ERROR', (_('Unable to join room'), - _('Your registered nickname must be used.'))) - elif errcode == '407': - self.dispatch('ERROR', (_('Unable to join room'), - _('You are not in the members list.'))) - elif errcode == '409': # nick conflict - # the jid_from in this case is FAKE JID: room_jid/nick - # resource holds the bad nick so propose a new one - proposed_nickname = resource + \ - gajim.config.get('gc_proposed_nick_char') - room_jid = gajim.get_room_from_fjid(who) - self.dispatch('ASK_NEW_NICK', (room_jid, _('Unable to join room'), - _('Your desired nickname is in use or registered by another occupant.\nPlease specify another nickname below:'), proposed_nickname)) - else: # print in the window the error - self.dispatch('ERROR_ANSWER', ('', jid_stripped, - errmsg, errcode)) - if not ptype or ptype == 'unavailable': - if gajim.config.get('log_contact_status_changes') and self.name\ - not in no_log_for and jid_stripped not in no_log_for: - gajim.logger.write('gcstatus', who, status, show) - if avatar_sha: - if self.vcard_shas.has_key(who): - if avatar_sha != self.vcard_shas[who]: - # avatar has been updated - self.request_vcard(who, True) - else: - self.vcard_shas[who] = avatar_sha - self.dispatch('GC_NOTIFY', (jid_stripped, show, status, resource, - prs.getRole(), prs.getAffiliation(), prs.getJid(), - prs.getReason(), prs.getActor(), prs.getStatusCode(), - prs.getNewNick())) - return - - if ptype == 'subscribe': - gajim.log.debug('subscribe request from %s' % who) - if gajim.config.get('alwaysauth') or who.find("@") <= 0 or \ - jid_stripped in self.jids_for_auto_auth or transport_auto_auth: - if self.connection: - p = common.xmpp.Presence(who, 'subscribed') - p = self.add_sha(p) - self.connection.send(p) - if who.find("@") <= 0 or transport_auto_auth: - self.dispatch('NOTIFY', (jid_stripped, 'offline', 'offline', - resource, prio, keyID, timestamp)) - if transport_auto_auth: - self.automatically_added.append(jid_stripped) - self.request_subscription(jid_stripped) - else: - if not status: - status = _('I would like to add you to my roster.') - self.dispatch('SUBSCRIBE', (who, status)) - elif ptype == 'subscribed': - if jid_stripped in self.automatically_added: - self.automatically_added.remove(jid_stripped) - else: - self.dispatch('SUBSCRIBED', (jid_stripped, resource)) - # BE CAREFUL: no con.updateRosterItem() in a callback - gajim.log.debug(_('we are now subscribed to %s') % who) - elif ptype == 'unsubscribe': - gajim.log.debug(_('unsubscribe request from %s') % who) - elif ptype == 'unsubscribed': - gajim.log.debug(_('we are now unsubscribed from %s') % who) - self.dispatch('UNSUBSCRIBED', jid_stripped) - elif ptype == 'error': - errmsg = prs.getError() - errcode = prs.getErrorCode() - if errcode == '502': # Internal Timeout: - self.dispatch('NOTIFY', (jid_stripped, 'error', errmsg, resource, - prio, keyID, timestamp)) - else: # print in the window the error - self.dispatch('ERROR_ANSWER', ('', jid_stripped, - errmsg, errcode)) - - if avatar_sha and ptype != 'error': - if not self.vcard_shas.has_key(jid_stripped): - cached_vcard = self.get_cached_vcard(jid_stripped) - if cached_vcard and cached_vcard.has_key('PHOTO') and \ - cached_vcard['PHOTO'].has_key('SHA'): - self.vcard_shas[jid_stripped] = cached_vcard['PHOTO']['SHA'] - else: - self.vcard_shas[jid_stripped] = '' - if avatar_sha != self.vcard_shas[jid_stripped]: - # avatar has been updated - self.request_vcard(jid_stripped) - if not ptype or ptype == 'unavailable': - if gajim.config.get('log_contact_status_changes') and self.name\ - not in no_log_for and jid_stripped not in no_log_for: - gajim.logger.write('status', jid_stripped, status, show) - self.dispatch('NOTIFY', (jid_stripped, show, status, resource, prio, - keyID, timestamp)) - # END presenceCB - def _StanzaArrivedCB(self, con, obj): - self.last_io = gajim.idlequeue.current_time() - - def parse_data_form(self, node): dic = {} tag = node.getTag('title') @@ -1583,63 +295,7 @@ class ConnectionHandlers(ConnectionVcard, ConnectionBytestream, ConnectionDisco) i += 1 return dic - def _MucOwnerCB(self, con, iq_obj): - gajim.log.debug('MucOwnerCB') - qp = iq_obj.getQueryPayload() - node = None - for q in qp: - if q.getNamespace() == common.xmpp.NS_DATA: - node = q - if not node: - return - dic = self.parse_data_form(node) - self.dispatch('GC_CONFIG', (helpers.get_full_jid_from_iq(iq_obj), dic)) - def _MucAdminCB(self, con, iq_obj): - gajim.log.debug('MucAdminCB') - items = iq_obj.getTag('query', namespace = common.xmpp.NS_MUC_ADMIN).getTags('item') - list = {} - affiliation = '' - for item in items: - if item.has_attr('jid') and item.has_attr('affiliation'): - jid = item.getAttr('jid') - affiliation = item.getAttr('affiliation') - list[jid] = {'affiliation': affiliation} - if item.has_attr('nick'): - list[jid]['nick'] = item.getAttr('nick') - if item.has_attr('role'): - list[jid]['role'] = item.getAttr('role') - reason = item.getTagData('reason') - if reason: - list[jid]['reason'] = reason - - self.dispatch('GC_AFFILIATION', (helpers.get_full_jid_from_iq(iq_obj), - affiliation, list)) - - def _MucErrorCB(self, con, iq_obj): - gajim.log.debug('MucErrorCB') - jid = helpers.get_full_jid_from_iq(iq_obj) - errmsg = iq_obj.getError() - errcode = iq_obj.getErrorCode() - self.dispatch('MSGERROR', (jid, errcode, errmsg)) - - def _getRosterCB(self, con, iq_obj): - if not self.connection: - return - self.connection.getRoster(self._on_roster_set) - if gajim.config.get_per('accounts', self.name, 'use_ft_proxies'): - self.discover_ft_proxies() - - def discover_ft_proxies(self): - cfg_proxies = gajim.config.get_per('accounts', self.name, - 'file_transfer_proxies') - if cfg_proxies: - proxies = map(lambda e:e.strip(), cfg_proxies.split(',')) - for proxy in proxies: - gajim.proxy65_manager.resolve(proxy, self.connection) - self.discoverItems(gajim.config.get_per('accounts', self.name, - 'hostname'), id_prefix='p') - def _on_roster_set(self, roster): raw_roster = roster.getRaw() roster = {} @@ -1651,131 +307,16 @@ class ConnectionHandlers(ConnectionVcard, ConnectionBytestream, ConnectionDisco) print >> sys.stderr, _('JID %s is not RFC compliant. It will not be added to your roster. Use roster management tools such as http://jru.jabberstudio.org/ to remove it') % jid else: infos = raw_roster[jid] + if jid != our_jid and (not infos['subscription'] or infos['subscription'] == \ 'none') and (not infos['ask'] or infos['ask'] == 'none') and not infos['name'] \ and not infos['groups']: # remove this useless item, it won't be shown in roster anyway - self.connection.getRoster().delItem(jid) + #self.connection.getRoster().delItem(jid) + pass elif jid != our_jid: # don't add our jid roster[j] = raw_roster[jid] + self.dispatch('ROSTER', roster) - - # continue connection - if self.connected > 1 and self.continue_connect_info: - show = self.continue_connect_info[0] - msg = self.continue_connect_info[1] - signed = self.continue_connect_info[2] - self.connected = STATUS_LIST.index(show) - sshow = helpers.get_xmpp_show(show) - # send our presence - if show == 'invisible': - self.send_invisible_presence(msg, signed, True) - return - prio = unicode(gajim.config.get_per('accounts', self.name, - 'priority')) - vcard = self.get_cached_vcard(jid) - if vcard and vcard.has_key('PHOTO') and vcard['PHOTO'].has_key('SHA'): - self.vcard_sha = vcard['PHOTO']['SHA'] - p = common.xmpp.Presence(typ = None, priority = prio, show = sshow) - p = self.add_sha(p) - if msg: - p.setStatus(msg) - if signed: - p.setTag(common.xmpp.NS_SIGNED + ' x').setData(signed) - - if self.connection: - self.connection.send(p) - self.dispatch('STATUS', show) - # ask our VCard - self.request_vcard(None) - - # Get bookmarks from private namespace - self.get_bookmarks() - - # If it's a gmail account, - # inform the server that we want e-mail notifications - if gajim.get_server_from_jid(our_jid) == 'gmail.com': - gajim.log.debug(('%s is a gmail account. Setting option ' - 'to get e-mail notifications on the server.') % (our_jid)) - iq = common.xmpp.Iq(typ = 'set', to = our_jid) - iq.setAttr('id', 'MailNotify') - query = iq.setTag('usersetting') - query.setNamespace(common.xmpp.NS_GTALKSETTING) - query = query.setTag('mailnotifications') - query.setAttr('value', 'true') - self.connection.send(iq) - # Ask how many messages there are now - iq = common.xmpp.Iq(typ = 'get') - iq.setAttr('id', '13') - query = iq.setTag('query') - query.setNamespace(common.xmpp.NS_GMAILNOTIFY) - self.connection.send(iq) - - #Inform GUI we just signed in - self.dispatch('SIGNED_IN', ()) - self.continue_connect_info = None - - def _register_handlers(self, con, con_type): - # try to find another way to register handlers in each class - # that defines handlers - con.RegisterHandler('message', self._messageCB) - con.RegisterHandler('presence', self._presenceCB) - con.RegisterHandler('iq', self._vCardCB, 'result', - common.xmpp.NS_VCARD) - con.RegisterHandler('iq', self._rosterSetCB, 'set', - common.xmpp.NS_ROSTER) - con.RegisterHandler('iq', self._siSetCB, 'set', - common.xmpp.NS_SI) - con.RegisterHandler('iq', self._siErrorCB, 'error', - common.xmpp.NS_SI) - con.RegisterHandler('iq', self._siResultCB, 'result', - common.xmpp.NS_SI) - con.RegisterHandler('iq', self._discoGetCB, 'get', - common.xmpp.NS_DISCO) - con.RegisterHandler('iq', self._bytestreamSetCB, 'set', - common.xmpp.NS_BYTESTREAM) - con.RegisterHandler('iq', self._bytestreamResultCB, 'result', - common.xmpp.NS_BYTESTREAM) - con.RegisterHandler('iq', self._bytestreamErrorCB, 'error', - common.xmpp.NS_BYTESTREAM) - con.RegisterHandler('iq', self._DiscoverItemsCB, 'result', - common.xmpp.NS_DISCO_ITEMS) - con.RegisterHandler('iq', self._DiscoverItemsErrorCB, 'error', - common.xmpp.NS_DISCO_ITEMS) - con.RegisterHandler('iq', self._DiscoverInfoCB, 'result', - common.xmpp.NS_DISCO_INFO) - con.RegisterHandler('iq', self._DiscoverInfoErrorCB, 'error', - common.xmpp.NS_DISCO_INFO) - con.RegisterHandler('iq', self._VersionCB, 'get', - common.xmpp.NS_VERSION) - con.RegisterHandler('iq', self._LastCB, 'get', - common.xmpp.NS_LAST) - con.RegisterHandler('iq', self._LastResultCB, 'result', - common.xmpp.NS_LAST) - con.RegisterHandler('iq', self._VersionResultCB, 'result', - common.xmpp.NS_VERSION) - con.RegisterHandler('iq', self._MucOwnerCB, 'result', - common.xmpp.NS_MUC_OWNER) - con.RegisterHandler('iq', self._MucAdminCB, 'result', - common.xmpp.NS_MUC_ADMIN) - con.RegisterHandler('iq', self._getRosterCB, 'result', - common.xmpp.NS_ROSTER) - con.RegisterHandler('iq', self._PrivateCB, 'result', - common.xmpp.NS_PRIVATE) - con.RegisterHandler('iq', self._PrivateErrorCB, 'error', - common.xmpp.NS_PRIVATE) - con.RegisterHandler('iq', self._HttpAuthCB, 'get', - common.xmpp.NS_HTTP_AUTH) - con.RegisterHandler('iq', self._gMailNewMailCB, 'set', - common.xmpp.NS_GMAILNOTIFY) - con.RegisterHandler('iq', self._gMailQueryCB, 'result', - common.xmpp.NS_GMAILNOTIFY) - con.RegisterHandler('iq', self._DiscoverInfoGetCB, 'get', - common.xmpp.NS_DISCO_INFO) - con.RegisterHandler('iq', self._ErrorCB, 'error') - con.RegisterHandler('iq', self._IqCB) - con.RegisterHandler('iq', self._StanzaArrivedCB) - con.RegisterHandler('iq', self._ResultCB, 'result') - con.RegisterHandler('presence', self._StanzaArrivedCB) - con.RegisterHandler('message', self._StanzaArrivedCB) +# self.dispatch('SIGNED_IN', ()) diff --git a/src/common/connection_zeroconf.py b/src/common/connection_zeroconf.py index 0d31f201f..e5728793c 100644 --- a/src/common/connection_zeroconf.py +++ b/src/common/connection_zeroconf.py @@ -34,12 +34,12 @@ import signal if os.name != 'nt': signal.signal(signal.SIGPIPE, signal.SIG_DFL) -# import common.xmpp from common import helpers from common import gajim from common import GnuPG from common import zeroconf from common import connection_handlers_zeroconf +from common import client_zeroconf from connection_handlers_zeroconf import * USE_GPG = GnuPG.USE_GPG @@ -55,10 +55,10 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): self.zeroconf = zeroconf.Zeroconf() self.connected = 0 # offline self.connection = None # dummy connection variable - # this property is used to prevent double connections # self.last_connection = None # last ClientCommon instance self.gpg = None + self.is_zeroconf = True self.status = '' self.old_show = '' # increase/decrease default timeout for server responses @@ -119,8 +119,7 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): gajim.log.debug('reconnect') - # TODO: no gpg for now, add some day - # signed = self.get_signed_msg(self.status) + signed = self.get_signed_msg(self.status) # We are doing disconnect at so many places, better use one function in all @@ -133,103 +132,6 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): self.last_connection = None self.connection = None self.zeroconf.disconnect() - - ''' - def _disconnectedReconnCB(self): - # Called when we are disconnected - gajim.log.debug('disconnectedReconnCB') - if self.connected > 1: - # we cannot change our status to offline or connectiong - # after we auth to server - self.old_show = STATUS_LIST[self.connected] - self.connected = 0 - self.dispatch('STATUS', 'offline') - if not self.on_purpose: - self.disconnect() - if gajim.config.get_per('accounts', self.name, 'autoreconnect') \ - and self.retrycount <= 10: - self.connected = 1 - self.dispatch('STATUS', 'connecting') - self.time_to_reconnect = 10 - # this check has moved from _reconnect method - if self.retrycount > 5: - self.time_to_reconnect = 20 - else: - self.time_to_reconnect = 10 - gajim.idlequeue.set_alarm(self._reconnect_alarm, - self.time_to_reconnect) - elif self.on_connect_failure: - self.on_connect_failure() - self.on_connect_failure = None - else: - # show error dialog - self._connection_lost() - else: - self.disconnect() - self.on_purpose = False - # END disconenctedReconnCB - ''' - - ''' - def _connection_lost(self): - self.disconnect(on_purpose = False) - self.dispatch('STATUS', 'offline') - self.dispatch('ERROR', - (_('Connection with account "%s" has been lost') % self.name, - _('To continue sending and receiving messages, you will need to reconnect.'))) - ''' - ''' - def _event_dispatcher(self, realm, event, data): - if realm == common.xmpp.NS_REGISTER: - if event == common.xmpp.features_nb.REGISTER_DATA_RECEIVED: - # data is (agent, DataFrom, is_form) - if self.new_account_info and\ - self.new_account_info['hostname'] == data[0]: - #it's a new account - if not data[1]: # wrong answer - print self.connection.lastErr - self.dispatch('ACC_NOT_OK', ( - _('Transport %s answered wrongly to register request.') % \ - data[0])) - return - req = data[1].asDict() - req['username'] = self.new_account_info['name'] - req['password'] = self.new_account_info['password'] - def _on_register_result(result): - if not common.xmpp.isResultNode(result): - self.dispatch('ACC_NOT_OK', (result.getError())) - return - self.connected = 0 - self.password = self.new_account_info['password'] - if USE_GPG: - self.gpg = GnuPG.GnuPG() - gajim.config.set('usegpg', True) - else: - gajim.config.set('usegpg', False) - gajim.connections[self.name] = self - self.dispatch('ACC_OK', (self.new_account_info)) - self.new_account_info = None - self.connection = None - common.xmpp.features_nb.register(self.connection, data[0], - req, _on_register_result) - return - if not data[1]: # wrong answer - self.dispatch('ERROR', (_('Invalid answer'), - _('Transport %s answered wrongly to register request.') % \ - data[0])) - return - is_form = data[2] - if is_form: - conf = self.parse_data_form(data[1]) - else: - conf = data[1].asDict() - self.dispatch('REGISTER_AGENT_INFO', (data[0], conf, is_form)) - elif realm == '': - if event == common.xmpp.transports.DATA_RECEIVED: - self.dispatch('STANZA_ARRIVED', unicode(data, errors = 'ignore')) - elif event == common.xmpp.transports.DATA_SENT: - self.dispatch('STANZA_SENT', unicode(data)) - ''' def select_next_host(self, hosts): hosts_best_prio = [] @@ -254,279 +156,12 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): min_w = h['weight'] return h - - def connect(self, data = None, show = 'online'): - - if self.connection: - return self.connection, '' - - self.zeroconf.connect() - self.connection = 1 - self.connected = STATUS_LIST.index(show) - - ''' Start a connection to the Jabber server. - Returns connection, and connection type ('tls', 'ssl', 'tcp', '') - data MUST contain name, hostname, resource, usessl, proxy, - use_custom_host, custom_host (if use_custom_host), custom_port (if - use_custom_host), ''' - - ''' - if self.connection: - return self.connection, '' - - if data: - name = data['name'] - hostname = data['hostname'] - resource = data['resource'] - usessl = data['usessl'] - self.try_connecting_for_foo_secs = 45 - p = data['proxy'] - use_srv = True - use_custom = data['use_custom_host'] - if use_custom: - custom_h = data['custom_host'] - custom_p = data['custom_port'] - else: - name = gajim.config.get_per('accounts', self.name, 'name') - hostname = gajim.config.get_per('accounts', self.name, 'hostname') - resource = gajim.config.get_per('accounts', self.name, 'resource') - usessl = gajim.config.get_per('accounts', self.name, 'usessl') - self.try_connecting_for_foo_secs = gajim.config.get_per('accounts', - self.name, 'try_connecting_for_foo_secs') - p = gajim.config.get_per('accounts', self.name, 'proxy') - use_srv = gajim.config.get_per('accounts', self.name, 'use_srv') - use_custom = gajim.config.get_per('accounts', self.name, - 'use_custom_host') - custom_h = gajim.config.get_per('accounts', self.name, 'custom_host') - custom_p = gajim.config.get_per('accounts', self.name, 'custom_port') - - #create connection if it doesn't already exist - self.connected = 1 - if p and p in gajim.config.get_per('proxies'): - proxy = {'host': gajim.config.get_per('proxies', p, 'host')} - proxy['port'] = gajim.config.get_per('proxies', p, 'port') - proxy['user'] = gajim.config.get_per('proxies', p, 'user') - proxy['password'] = gajim.config.get_per('proxies', p, 'pass') - else: - proxy = None - - h = hostname - p = 5222 - # autodetect [for SSL in 5223/443 and for TLS if broadcasted] - secur = None - if usessl: - p = 5223 - secur = 1 # 1 means force SSL no matter what the port will be - use_srv = False # wants ssl? disable srv lookup - if use_custom: - h = custom_h - p = custom_p - use_srv = False - - hosts = [] - # SRV resolver - self._proxy = proxy - self._secure = secur - self._hosts = [ {'host': h, 'port': p, 'prio': 10, 'weight': 10} ] - self._hostname = hostname - if use_srv: - # add request for srv query to the resolve, on result '_on_resolve' will be called - gajim.resolver.resolve('_xmpp-client._tcp.' + h.encode('utf-8'), self._on_resolve) - else: - self._on_resolve('', []) - ''' - ''' - def _on_resolve(self, host, result_array): - # SRV query returned at least one valid result, we put it in hosts dict - if len(result_array) != 0: - self._hosts = [i for i in result_array] - self.connect_to_next_host() - ''' - ''' - def connect_to_next_host(self, retry = False): - - if len(self._hosts): - if self.last_connection: - self.last_connection.socket.disconnect() - self.last_connection = None - self.connection = None - if gajim.verbose: - con = common.xmpp.NonBlockingClient(self._hostname, caller = self, - on_connect = self.on_connect_success, - on_connect_failure = self.connect_to_next_host) - else: - con = common.xmpp.NonBlockingClient(self._hostname, debug = [], caller = self, - on_connect = self.on_connect_success, - on_connect_failure = self.connect_to_next_host) - self.last_connection = con - # increase default timeout for server responses - common.xmpp.dispatcher_nb.DEFAULT_TIMEOUT_SECONDS = self.try_connecting_for_foo_secs - con.set_idlequeue(gajim.idlequeue) - host = self.select_next_host(self._hosts) - self._current_host = host - self._hosts.remove(host) - con.connect((host['host'], host['port']), proxy = self._proxy, - secure = self._secure) - return - else: - if not retry or self.retrycount > 10: - self.retrycount = 0 - self.time_to_reconnect = None - if self.on_connect_failure: - self.on_connect_failure() - self.on_connect_failure = None - else: - # shown error dialog - self._connection_lost() - else: - # try reconnect if connection has failed before auth to server - self._disconnectedReconnCB() - ''' - ''' - def _connect_failure(self, con_type = None): - if not con_type: - # we are not retrying, and not conecting - if not self.retrycount and self.connected != 0: - self.disconnect(on_purpose = True) - self.dispatch('STATUS', 'offline') - self.dispatch('ERROR', (_('Could not connect to "%s"') % self._hostname, - _('Check your connection or try again later.'))) - ''' - ''' - def _connect_success(self, con, con_type): - if not self.connected: # We went offline during connecting process - # FIXME - not possible, maybe it was when we used threads - return - self.hosts = [] - if not con_type: - gajim.log.debug('Could not connect to %s:%s' % (self._current_host['host'], - self._current_host['port'])) - self.connected_hostname = self._current_host['host'] - self.on_connect_failure = None - con.RegisterDisconnectHandler(self._disconnectedReconnCB) - gajim.log.debug(_('Connected to server %s:%s with %s') % (self._current_host['host'], - self._current_host['port'], con_type)) - # Ask metacontacts before roster - self.get_metacontacts() - self._register_handlers(con, con_type) - return True - ''' - ''' - def _register_handlers(self, con, con_type): - self.peerhost = con.get_peerhost() - # notify the gui about con_type - self.dispatch('CON_TYPE', con_type) - ConnectionHandlers._register_handlers(self, con, con_type) - name = gajim.config.get_per('accounts', self.name, 'name') - hostname = gajim.config.get_per('accounts', self.name, 'hostname') - resource = gajim.config.get_per('accounts', self.name, 'resource') - self.connection = con - con.auth(name, self.password, resource, 1, self.__on_auth) - ''' - ''' - def __on_auth(self, con, auth): - if not con: - self.disconnect(on_purpose = True) - self.dispatch('STATUS', 'offline') - self.dispatch('ERROR', (_('Could not connect to "%s"') % self._hostname, - _('Check your connection or try again later'))) - if self.on_connect_auth: - self.on_connect_auth(None) - self.on_connect_auth = None - return - if not self.connected: # We went offline during connecting process - if self.on_connect_auth: - self.on_connect_auth(None) - self.on_connect_auth = None - return - if hasattr(con, 'Resource'): - self.server_resource = con.Resource - if auth: - self.last_io = gajim.idlequeue.current_time() - self.connected = 2 - if self.on_connect_auth: - self.on_connect_auth(con) - self.on_connect_auth = None - else: - # Forget password if needed - if not gajim.config.get_per('accounts', self.name, 'savepass'): - self.password = None - gajim.log.debug("Couldn't authenticate to %s" % self._hostname) - self.disconnect(on_purpose = True) - self.dispatch('STATUS', 'offline') - self.dispatch('ERROR', (_('Authentication failed with "%s"') % self._hostname, - _('Please check your login and password for correctness.'))) - if self.on_connect_auth: - self.on_connect_auth(None) - self.on_connect_auth = None - # END connect - ''' - def quit(self, kill_core): if kill_core and self.connected > 1: self.disconnect(on_purpose = True) - ''' - #invisible == no service announced( privacy rule? ) - def build_privacy_rule(self, name, action): - #Build a Privacy rule stanza for invisibility - iq = common.xmpp.Iq('set', common.xmpp.NS_PRIVACY, xmlns = '') - l = iq.getTag('query').setTag('list', {'name': name}) - i = l.setTag('item', {'action': action, 'order': '1'}) - i.setTag('presence-out') - return iq - ''' - - ''' - def activate_privacy_rule(self, name): - activate a privacy rule - iq = common.xmpp.Iq('set', common.xmpp.NS_PRIVACY, xmlns = '') - iq.getTag('query').setTag('active', {'name': name}) - self.connection.send(iq) - ''' - ''' - def send_invisible_presence(self, msg, signed, initial = False): - # try to set the privacy rule - iq = self.build_privacy_rule('invisible', 'deny') - self.connection.SendAndCallForResponse(iq, self._continue_invisible, - {'msg': msg, 'signed': signed, 'initial': initial}) - ''' - ''' - def _continue_invisible(self, con, iq_obj, msg, signed, initial): - ptype = '' - show = '' - # FIXME: JEP 126 need some modifications (see http://lists.jabber.ru/pipermail/ejabberd/2005-July/001252.html). So I disable it for the moment - if 1 or iq_obj.getType() == 'error': #server doesn't support privacy lists - # We use the old way which is not xmpp complient - ptype = 'invisible' - show = 'invisible' - else: - # active the privacy rule - self.privacy_rules_supported = True - self.activate_privacy_rule('invisible') - prio = unicode(gajim.config.get_per('accounts', self.name, 'priority')) - p = common.xmpp.Presence(typ = ptype, priority = prio, show = show) - p = self.add_sha(p, ptype != 'unavailable') - if msg: - p.setStatus(msg) - if signed: - p.setTag(common.xmpp.NS_SIGNED + ' x').setData(signed) - self.connection.send(p) - self.dispatch('STATUS', 'invisible') - if initial: - #ask our VCard - self.request_vcard(None) - - #Get bookmarks from private namespace - self.get_bookmarks() - - #Inform GUI we just signed in - self.dispatch('SIGNED_IN', ()) - ''' - - def test_gpg_passphrase(self, password): self.gpg.passphrase = password keyID = gajim.config.get_per('accounts', self.name, 'keyid') @@ -553,45 +188,27 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): self.dispatch('BAD_PASSPHRASE', ()) return signed - - def connect_and_auth(self): - ''' - self.on_connect_success = self._connect_success - self.on_connect_failure = self._connect_failure - self.connect() - ''' - - pass + def connect(self, data = None, show = 'online'): + if self.connection: + return self.connection, '' + self.zeroconf.connect() + self.connection = client_zeroconf.ClientZeroconf(self.zeroconf) + self.connected = STATUS_LIST.index(show) + def connect_and_init(self, show, msg, signed): - ''' self.continue_connect_info = [show, msg, signed] - self.on_connect_auth = self._init_roster - self.connect_and_auth() - ''' - + self.zeroconf.txt['status'] = show self.zeroconf.txt['msg'] = msg self.connect('',show) - def _init_roster(self, con): - ''' - self.connection = con - if self.connection: - con.set_send_timeout(self.keepalives, self.send_keepalive) - self.connection.onreceive(None) - # Ask metacontacts before roster - self.get_metacontacts() - ''' - - pass - def change_status(self, show, msg, sync = False, auto = False): print "change_status: show: %s msg: %s" % (show, msg) if not show in STATUS_LIST: return -1 - # connect + # 'connect' if show != 'offline' and not self.connected: print "connect in change_status" self.on_purpose = False @@ -601,11 +218,13 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): else: self.connected = STATUS_LIST.index(show) - # disconnect + # 'disconnect' elif show == 'offline' and self.connected: print "disconnect in change_status" self.connected = 0 - self._on_disconnected() + self.dispatch('STATUS', 'offline') + self.disconnect() + #self._on_disconnected() # update status elif show != 'offline' and self.connected: @@ -625,10 +244,12 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): self.zeroconf.update_txt(txt) self.dispatch('STATUS', show) + ''' def _on_disconnected(self): self.dispatch('STATUS', 'offline') self.disconnect() - + ''' + def get_status(self): return STATUS_LIST[self.connected] @@ -1198,21 +819,8 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): pass def send_keepalive(self): - ''' # nothing received for the last foo seconds (60 secs by default) if self.connection: self.connection.send(' ') - ''' - pass - def _reconnect_alarm(self): - ''' - if self.time_to_reconnect: - if self.connected < 2: - self._reconnect() - else: - self.time_to_reconnect = None - ''' - pass - -# END Connection +# END ConnectionZeroconf diff --git a/src/common/roster_zeroconf.py b/src/common/roster_zeroconf.py new file mode 100644 index 000000000..9e2befc48 --- /dev/null +++ b/src/common/roster_zeroconf.py @@ -0,0 +1,37 @@ +from common import zeroconf + +class Roster: + def __init__(self, zeroconf): + self._data = {} + self.zeroconf = zeroconf # our zeroconf instance + + def getRoster(self): + print 'getRoster in Roster' + self._data = self.zeroconf.get_contacts() + return self + + def getItem(self, jid): + print 'getItem(%s) in Roster' % jid + if self._data.has_key(jid): + return self._data[jid] + + def __getitem__(self,item): + print '__getitem__ in Roster' + return self._data[item] + + def getRaw(self): + return self._data + + def getResources(self, jid): + print 'getResources(%s) in Roster' % jid +# return self + + ''' + getRaw() + delItem(jid) + getItem(jid) + getResources(jid) + getStatus(jid) + getPriority(jid) + getShow(jid) + ''' diff --git a/src/common/zeroconf.py b/src/common/zeroconf.py index 0389f0926..091982e07 100755 --- a/src/common/zeroconf.py +++ b/src/common/zeroconf.py @@ -34,11 +34,13 @@ class Zeroconf: print "Found service '%s' in domain '%s' on %i.%i." % (name, domain, interface, protocol) #synchronous resolving - self.server.ResolveService( int(interface), int(protocol), name, stype, domain, avahi.PROTO_UNSPEC, dbus.UInt32(0), reply_handler=self.service_resolved_callback, error_handler=self.print_error_callback) + self.server.ResolveService( int(interface), int(protocol), name, stype, \ + domain, avahi.PROTO_UNSPEC, dbus.UInt32(0), \ + reply_handler=self.service_resolved_callback, error_handler=self.print_error_callback) def remove_service_callback(self, interface, protocol, name, stype, domain, flags): print "Service '%s' in domain '%s' on %i.%i disappeared." % (name, domain, interface, protocol) - del self.contacts[(interface, name, domain)] + del self.contacts[(name, stype, domain, interface)] def new_service_type(self, interface, protocol, stype, domain, flags): # Are we already browsing this domain for this type? @@ -59,11 +61,26 @@ class Zeroconf: if domain != "local": self.browse_domain(interface, protocol, domain) + def txt_array_to_dict(self,t): + l = {} + + for s in t: + str = avahi.byte_array_to_string(s) + poseq = str.find('=') + l[str[:poseq]] = str[poseq+1:] + return l + def service_resolved_callback(self, interface, protocol, name, stype, domain, host, aprotocol, address, port, txt, flags): print "Service data for service '%s' in domain '%s' on %i.%i:" % (name, domain, interface, protocol) print "\tHost %s (%s), port %i, TXT data: %s" % (host, address, port, str(avahi.txt_array_to_string_array(txt))) - - self.contacts[(interface, name, domain)] = (interface, name, protocol, domain, host, address, port, txt) + + # add domain to stay unique + if domain != 'local': + add_domain = '%'+domain + else: + add_domain = '' + + self.contacts[name+add_domain+'@'+host] = (name, stype, domain, interface, protocol, host, address, port, txt) def service_added_callback(self): @@ -191,8 +208,8 @@ class Zeroconf: # END Zeroconf ''' -def main(): - +# how to use... + zeroconf = Zeroconf() zeroconf.connect() zeroconf.txt[('1st')] = 'foo' @@ -201,15 +218,7 @@ def main(): # updating after announcing txt = {} - txt['status'] = 'avail' # out of avail/away/dnd + txt['status'] = 'avail' txt['msg'] = 'Here I am' zeroconf.update_txt(txt) - - try: - gobject.MainLoop().run() - except KeyboardInterrupt, k: - pass - -if __name__ == "__main__": - main() ''' From 43e44b51dd83364a26d07869ca4f4f134c5d3df0 Mon Sep 17 00:00:00 2001 From: Stefan Bethge Date: Mon, 29 May 2006 22:17:13 +0000 Subject: [PATCH 009/110] fix zeroconf.resolve_all() --- src/common/roster_zeroconf.py | 3 +-- src/common/zeroconf.py | 13 ++++++++----- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/common/roster_zeroconf.py b/src/common/roster_zeroconf.py index 9e2befc48..3830d539d 100644 --- a/src/common/roster_zeroconf.py +++ b/src/common/roster_zeroconf.py @@ -20,6 +20,7 @@ class Roster: return self._data[item] def getRaw(self): + print 'getRaw in Roster' return self._data def getResources(self, jid): @@ -27,10 +28,8 @@ class Roster: # return self ''' - getRaw() delItem(jid) getItem(jid) - getResources(jid) getStatus(jid) getPriority(jid) getShow(jid) diff --git a/src/common/zeroconf.py b/src/common/zeroconf.py index 091982e07..ba1c0a3c0 100755 --- a/src/common/zeroconf.py +++ b/src/common/zeroconf.py @@ -63,7 +63,7 @@ class Zeroconf: def txt_array_to_dict(self,t): l = {} - + for s in t: str = avahi.byte_array_to_string(s) poseq = str.find('=') @@ -180,15 +180,18 @@ class Zeroconf: def disconnect(self): self.remove_announce() + + # refresh data manually - really ok or too much traffic? def resolve_all(self): - for key in contacts.keys(): - self.server.ResolveService( int(key.interface), int(key.protocol), key.name, \ - self.stype, key.domain, avahi.PROTO_UNSPEC, dbus.UInt32(0),\ + for val in self.contacts.values(): + #val:(name, stype, domain, interface, protocol, host, address, port, txt) + self.server.ResolveService( int(val[3]), int(val[4]), val[0], \ + self.stype, val[2], avahi.PROTO_UNSPEC, dbus.UInt32(0),\ reply_handler=self.service_resolved_callback, error_handler=self.print_error_callback) def get_contacts(self): - self.resolve_all + self.resolve_all() return self.contacts From e88186d669cf1c06a2616ec5f137e626ce1dd3e2 Mon Sep 17 00:00:00 2001 From: Stefan Bethge Date: Mon, 29 May 2006 23:03:20 +0000 Subject: [PATCH 010/110] changed published service name to name@hostname as in jep-0174 changed contact index to name@hostname --- src/common/roster_zeroconf.py | 1 - src/common/zeroconf.py | 55 +++++++++++++++++++---------------- 2 files changed, 30 insertions(+), 26 deletions(-) diff --git a/src/common/roster_zeroconf.py b/src/common/roster_zeroconf.py index 3830d539d..10a230bda 100644 --- a/src/common/roster_zeroconf.py +++ b/src/common/roster_zeroconf.py @@ -29,7 +29,6 @@ class Roster: ''' delItem(jid) - getItem(jid) getStatus(jid) getPriority(jid) getShow(jid) diff --git a/src/common/zeroconf.py b/src/common/zeroconf.py index ba1c0a3c0..c6b442430 100755 --- a/src/common/zeroconf.py +++ b/src/common/zeroconf.py @@ -1,6 +1,7 @@ import os import sys import getpass +import socket try: import avahi, gobject, dbus @@ -17,9 +18,11 @@ class Zeroconf: self.domain = None # specific domain to browse self.stype = '_presence._tcp' self.port = 5298 # listening port that gets announced - self.name = getpass.getuser() # service name / username + + self.name = getpass.getuser()+'@'+socket.gethostname() # service name / username + self.txt = {} # service data - + self.service_browsers = {} self.contacts = {} # all current local contacts with data self.entrygroup = '' @@ -40,7 +43,7 @@ class Zeroconf: def remove_service_callback(self, interface, protocol, name, stype, domain, flags): print "Service '%s' in domain '%s' on %i.%i disappeared." % (name, domain, interface, protocol) - del self.contacts[(name, stype, domain, interface)] + del self.contacts[name] def new_service_type(self, interface, protocol, stype, domain, flags): # Are we already browsing this domain for this type? @@ -62,33 +65,36 @@ class Zeroconf: self.browse_domain(interface, protocol, domain) def txt_array_to_dict(self,t): - l = {} + l = {} - for s in t: + for s in t: str = avahi.byte_array_to_string(s) poseq = str.find('=') l[str[:poseq]] = str[poseq+1:] - return l + return l def service_resolved_callback(self, interface, protocol, name, stype, domain, host, aprotocol, address, port, txt, flags): print "Service data for service '%s' in domain '%s' on %i.%i:" % (name, domain, interface, protocol) print "\tHost %s (%s), port %i, TXT data: %s" % (host, address, port, str(avahi.txt_array_to_string_array(txt))) + ''' # add domain to stay unique if domain != 'local': - add_domain = '%'+domain + add_domain = '.'+domain else: add_domain = '' - self.contacts[name+add_domain+'@'+host] = (name, stype, domain, interface, protocol, host, address, port, txt) + self.contacts[name'@'+host+add_domain] = (name, stype, domain, interface, protocol, host, address, port, txt) + ''' + self.contacts[name] = (name, stype, domain, interface, protocol, host, address, port, txt) def service_added_callback(self): print 'Service successfully added' - + def service_committed_callback(self): print 'Service successfully committed' - + def service_updated_callback(self): print 'Service successfully updated' @@ -96,7 +102,7 @@ class Zeroconf: print 'Error while adding service:', str(err) self.name = self.server.GetAlternativeServiceName(self.name) self.create_service() - + def server_state_changed_callback(self, state, error): print 'server.state %s' % state if state == avahi.SERVER_RUNNING: @@ -104,14 +110,14 @@ class Zeroconf: elif state == avahi.SERVER_COLLISION: self.entrygroup.Reset() # elif state == avahi.CLIENT_FAILURE: # TODO: add error handling (avahi daemon dies...?) - + def entrygroup_state_changed_callback(self, state, error): # the name is already present, so recreate if state == avahi.ENTRY_GROUP_COLLISION: self.service_add_fail_callback('Local name collision, recreating.') - + # elif state == avahi.ENTRY_GROUP_FAILURE: - + # make zeroconf-valid names def replace_show(self, show): if show == 'chat' or show == '': @@ -127,7 +133,7 @@ class Zeroconf: # create an EntryGroup for publishing self.entrygroup = dbus.Interface(self.bus.get_object(avahi.DBUS_NAME, self.server.EntryGroupNew()), avahi.DBUS_INTERFACE_ENTRY_GROUP) self.entrygroup.connect_to_signal('StateChanged', self.entrygroup_state_changed_callback) - + self.txt['port.p2pj'] = self.port self.txt['version'] = 1 self.txt['textvers'] = 1 @@ -139,13 +145,13 @@ class Zeroconf: print "Publishing service '%s' of type %s" % (self.name, self.stype) self.entrygroup.AddService(avahi.IF_UNSPEC, avahi.PROTO_UNSPEC, dbus.UInt32(0), self.name, self.stype, '', '', self.port, avahi.dict_to_txt_array(self.txt), reply_handler=self.service_added_callback, error_handler=self.service_add_fail_callback) self.entrygroup.Commit(reply_handler=self.service_committed_callback, error_handler=self.print_error_callback) - + def announce(self): state = self.server.GetState() if state == avahi.SERVER_RUNNING: self.create_service() - + def remove_announce(self): self.entrygroup.Reset() self.entrygroup.Free() @@ -153,7 +159,7 @@ class Zeroconf: def browse_domain(self, interface, protocol, domain): self.new_service_type(interface, protocol, self.stype, domain, '') - + # connect to dbus def connect(self): self.bus = dbus.SystemBus() @@ -161,7 +167,7 @@ class Zeroconf: avahi.DBUS_PATH_SERVER), avahi.DBUS_INTERFACE_SERVER) self.server.connect_to_signal('StateChanged', self.server_state_changed_callback) - + # start browsing if self.domain is None: # Explicitly browse .local @@ -181,7 +187,6 @@ class Zeroconf: self.remove_announce() - # refresh data manually - really ok or too much traffic? def resolve_all(self): for val in self.contacts.values(): @@ -194,15 +199,14 @@ class Zeroconf: self.resolve_all() return self.contacts - def update_txt(self, txt): # update only given keys for key in txt.keys(): self.txt[key]=txt[key] - + if txt.has_key('status'): self.txt['status'] = self.replace_show(txt['status']) - + txt = avahi.dict_to_txt_array(self.txt) self.entrygroup.UpdateServiceTxt(avahi.IF_UNSPEC, avahi.PROTO_UNSPEC, dbus.UInt32(0), self.name, self.stype,'', txt, reply_handler=self.service_updated_callback, error_handler=self.print_error_callback) @@ -215,8 +219,9 @@ class Zeroconf: zeroconf = Zeroconf() zeroconf.connect() - zeroconf.txt[('1st')] = 'foo' - zeroconf.txt[('last')] = 'bar' + zeroconf.txt['1st'] = 'foo' + zeroconf.txt['last'] = 'bar' + zeroconfptxt['email'] = foo@bar.org zeroconf.announce() # updating after announcing From cf5ad66259c7aaacf5438093d69ea34882ae4ef4 Mon Sep 17 00:00:00 2001 From: Stefan Bethge Date: Tue, 30 May 2006 23:13:36 +0000 Subject: [PATCH 011/110] added callback that put a jid in _data of Roster (though something is wrong with it) --- src/common/connection_handlers_zeroconf.py | 30 +++------------------- src/common/connection_zeroconf.py | 14 ++++++++-- src/common/roster_zeroconf.py | 6 +++++ src/common/zeroconf.py | 22 ++++++++++------ 4 files changed, 35 insertions(+), 37 deletions(-) diff --git a/src/common/connection_handlers_zeroconf.py b/src/common/connection_handlers_zeroconf.py index a912a0846..6eaf9dd05 100644 --- a/src/common/connection_handlers_zeroconf.py +++ b/src/common/connection_handlers_zeroconf.py @@ -228,7 +228,7 @@ class ConnectionHandlersZeroconf(ConnectionVcard): idle.init() except: HAS_IDLE = False - + ''' def build_http_auth_answer(self, iq_obj, answer): if answer == 'yes': iq = iq_obj.buildReply('result') @@ -236,6 +236,7 @@ class ConnectionHandlersZeroconf(ConnectionVcard): iq = iq_obj.buildReply('error') iq.setError('not-authorized', 401) self.connection.send(iq) + ''' def parse_data_form(self, node): dic = {} @@ -294,29 +295,4 @@ class ConnectionHandlersZeroconf(ConnectionVcard): dic[i]['values'] = [dic[i]['options'][0]['values'][0]] i += 1 return dic - - - def _on_roster_set(self, roster): - raw_roster = roster.getRaw() - roster = {} - our_jid = helpers.parse_jid(gajim.get_jid_from_account(self.name)) - for jid in raw_roster: - try: - j = helpers.parse_jid(jid) - except: - print >> sys.stderr, _('JID %s is not RFC compliant. It will not be added to your roster. Use roster management tools such as http://jru.jabberstudio.org/ to remove it') % jid - else: - infos = raw_roster[jid] - - if jid != our_jid and (not infos['subscription'] or infos['subscription'] == \ - 'none') and (not infos['ask'] or infos['ask'] == 'none') and not infos['name'] \ - and not infos['groups']: - # remove this useless item, it won't be shown in roster anyway - #self.connection.getRoster().delItem(jid) - pass - elif jid != our_jid: # don't add our jid - roster[j] = raw_roster[jid] - - - self.dispatch('ROSTER', roster) -# self.dispatch('SIGNED_IN', ()) + diff --git a/src/common/connection_zeroconf.py b/src/common/connection_zeroconf.py index e5728793c..69a57431e 100644 --- a/src/common/connection_zeroconf.py +++ b/src/common/connection_zeroconf.py @@ -52,7 +52,7 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): def __init__(self, name): ConnectionHandlersZeroconf.__init__(self) self.name = name - self.zeroconf = zeroconf.Zeroconf() + self.zeroconf = zeroconf.Zeroconf(self._on_new_service, self._on_remove_service) self.connected = 0 # offline self.connection = None # dummy connection variable # this property is used to prevent double connections @@ -187,13 +187,23 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): if self.connected < 2: self.dispatch('BAD_PASSPHRASE', ()) return signed - + + def _on_new_service(self,jid): + self.roster.setItem(jid) + self.dispatch('ROSTER', self.roster) + + def _on_remove_service(self,jid): + # roster.delItem(jid) + # self.dispatch('ROSTER', roster) + pass + def connect(self, data = None, show = 'online'): if self.connection: return self.connection, '' self.zeroconf.connect() self.connection = client_zeroconf.ClientZeroconf(self.zeroconf) + self.roster = self.connection.getRoster() self.connected = STATUS_LIST.index(show) def connect_and_init(self, show, msg, signed): diff --git a/src/common/roster_zeroconf.py b/src/common/roster_zeroconf.py index 10a230bda..95880e643 100644 --- a/src/common/roster_zeroconf.py +++ b/src/common/roster_zeroconf.py @@ -15,6 +15,12 @@ class Roster: if self._data.has_key(jid): return self._data[jid] + def setItem(self, item): + print 'setItem in Roster: jid: %s' % item + # data is maybe not already resolved + # what data is expected here? + self._data[item] = self.zeroconf.get_contact(item) + def __getitem__(self,item): print '__getitem__ in Roster' return self._data[item] diff --git a/src/common/zeroconf.py b/src/common/zeroconf.py index c6b442430..c0051b395 100755 --- a/src/common/zeroconf.py +++ b/src/common/zeroconf.py @@ -14,18 +14,19 @@ except ImportError, e: pass class Zeroconf: - def __init__(self): + def __init__(self, new_serviceCB, remove_serviceCB): self.domain = None # specific domain to browse self.stype = '_presence._tcp' - self.port = 5298 # listening port that gets announced - - self.name = getpass.getuser()+'@'+socket.gethostname() # service name / username - + self.port = 5298 # listening port that gets announced + self.name = getpass.getuser()+'@'+socket.gethostname() # service name self.txt = {} # service data + self.new_serviceCB = new_serviceCB + self.remove_serviceCB = remove_serviceCB + self.service_browsers = {} self.contacts = {} # all current local contacts with data - self.entrygroup = '' + self.entrygroup = None ## handlers for dbus callbacks @@ -40,10 +41,12 @@ class Zeroconf: self.server.ResolveService( int(interface), int(protocol), name, stype, \ domain, avahi.PROTO_UNSPEC, dbus.UInt32(0), \ reply_handler=self.service_resolved_callback, error_handler=self.print_error_callback) + self.new_serviceCB(name) def remove_service_callback(self, interface, protocol, name, stype, domain, flags): print "Service '%s' in domain '%s' on %i.%i disappeared." % (name, domain, interface, protocol) del self.contacts[name] + self.remove_serviceCB(name) def new_service_type(self, interface, protocol, stype, domain, flags): # Are we already browsing this domain for this type? @@ -129,7 +132,7 @@ class Zeroconf: return show def create_service(self): - if self.entrygroup == '': + if not self.entrygroup: # create an EntryGroup for publishing self.entrygroup = dbus.Interface(self.bus.get_object(avahi.DBUS_NAME, self.server.EntryGroupNew()), avahi.DBUS_INTERFACE_ENTRY_GROUP) self.entrygroup.connect_to_signal('StateChanged', self.entrygroup_state_changed_callback) @@ -155,7 +158,7 @@ class Zeroconf: def remove_announce(self): self.entrygroup.Reset() self.entrygroup.Free() - self.entrygroup = '' + self.entrygroup = None def browse_domain(self, interface, protocol, domain): self.new_service_type(interface, protocol, self.stype, domain, '') @@ -199,6 +202,9 @@ class Zeroconf: self.resolve_all() return self.contacts + def get_contact(self, jid): + return self.contacts[jid] + def update_txt(self, txt): # update only given keys for key in txt.keys(): From 40fc5202a5e1c58cdadf1d4443ed4282b83938eb Mon Sep 17 00:00:00 2001 From: Stefan Bethge Date: Fri, 2 Jun 2006 18:46:52 +0000 Subject: [PATCH 012/110] more methods in roster_zeroconf, on_new_service when service is resolved --- src/common/connection_zeroconf.py | 39 ++++--------- src/common/roster_zeroconf.py | 94 ++++++++++++++++++++++++++----- src/common/zeroconf.py | 35 ++++++------ 3 files changed, 106 insertions(+), 62 deletions(-) diff --git a/src/common/connection_zeroconf.py b/src/common/connection_zeroconf.py index 69a57431e..921792af4 100644 --- a/src/common/connection_zeroconf.py +++ b/src/common/connection_zeroconf.py @@ -190,12 +190,12 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): def _on_new_service(self,jid): self.roster.setItem(jid) - self.dispatch('ROSTER', self.roster) - + #self.dispatch('ROSTER', self.roster) + self.dispatch('NOTIFY', (jid, self.roster.getStatus(jid), '', 'Gajim', 0, None, 0)) + def _on_remove_service(self,jid): - # roster.delItem(jid) - # self.dispatch('ROSTER', roster) - pass + self.roster.delItem(jid) + #self.dispatch('NOTIFY', self, ) def connect(self, data = None, show = 'online'): if self.connection: @@ -204,6 +204,7 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): self.zeroconf.connect() self.connection = client_zeroconf.ClientZeroconf(self.zeroconf) self.roster = self.connection.getRoster() + self.dispatch('ROSTER', self.roster) self.connected = STATUS_LIST.index(show) def connect_and_init(self, show, msg, signed): @@ -254,25 +255,9 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): self.zeroconf.update_txt(txt) self.dispatch('STATUS', show) - ''' - def _on_disconnected(self): - self.dispatch('STATUS', 'offline') - self.disconnect() - ''' - def get_status(self): return STATUS_LIST[self.connected] - def send_motd(self, jid, subject = '', msg = ''): - ''' - if not self.connection: - return - msg_iq = common.xmpp.Message(to = jid, body = msg, subject = subject) - self.connection.send(msg_iq) - ''' - - pass - def send_message(self, jid, msg, keyID, type = 'chat', subject='', chatstate = None, msg_id = None, composing_jep = None, resource = None): ''' @@ -455,13 +440,10 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): self.connection.getRoster().delItem(agent) ''' - def update_contact(self, jid, name, groups): - ''' - # update roster item on jabber server + def update_contact(self, jid, name, groups): if self.connection: self.connection.getRoster().setItem(jid = jid, name = name, groups = groups) - ''' def new_account(self, name, config, sync = False): ''' @@ -567,9 +549,8 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): ''' pass - ''' def get_metacontacts(self): - + ''' # Get metacontacts list from storage as described in JEP 0049 if not self.connection: return @@ -577,7 +558,9 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): iq2 = iq.addChild(name='query', namespace='jabber:iq:private') iq2.addChild(name='storage', namespace='storage:metacontacts') self.connection.send(iq) - ''' + ''' + pass + ''' def store_metacontacts(self, tags_list): # Send meta contacts to the storage namespace diff --git a/src/common/roster_zeroconf.py b/src/common/roster_zeroconf.py index 95880e643..480afbe76 100644 --- a/src/common/roster_zeroconf.py +++ b/src/common/roster_zeroconf.py @@ -15,27 +15,91 @@ class Roster: if self._data.has_key(jid): return self._data[jid] - def setItem(self, item): - print 'setItem in Roster: jid: %s' % item - # data is maybe not already resolved - # what data is expected here? - self._data[item] = self.zeroconf.get_contact(item) + def setItem(self, jid, name = '', groups = ''): + print 'setItem %s in Roster' % jid + (service_jid, domain, interface, protocol, host, address, port, txt) \ + = self.zeroconf.get_contact(jid) + + self._data[jid]={} + self._data[jid]['name']=jid[:jid.find('@')] + self._data[jid]['ask'] = 'no' #? + self._data[jid]['subscription'] = 'both' + self._data[jid]['groups'] = [] + self._data[jid]['resources'] = {} + self._data[jid]['address'] = address + self._data[jid]['host'] = host + self._data[jid]['port'] = port + self._data[jid]['txt'] = txt + txt_dict = self.zeroconf.txt_array_to_dict(txt) + if txt_dict.has_key('status'): + status = txt_dict['status'] + else: + status = '' + if status == 'avail': status = 'online' + self._data[jid]['status'] = status + self._data[jid]['show'] = status + print self._data[jid] + + def delItem(self, jid): + print 'delItem %s in Roster' % jid + if self._data.has_key(jid): + del self._data[jid] - def __getitem__(self,item): + def __getitem__(self,jid): print '__getitem__ in Roster' - return self._data[item] - + return self._data[jid] + + def getItems(self): + print 'getItems in Roster' + # Return list of all [bare] JIDs that the roster is currently tracks. + return self._data.keys() + + def keys(self): + print 'keys in Roster' + return self._data.keys() + def getRaw(self): print 'getRaw in Roster' return self._data def getResources(self, jid): print 'getResources(%s) in Roster' % jid -# return self + return {} + + def getStatus(self, jid): + print 'getStatus %s in Roster' % jid + txt = self._data[jid]['txt'] + txt_dict = self.zeroconf.txt_array_to_dict(txt) + if txt_dict.has_key('status'): + status = txt_dict['status'] + else: + status = '' - ''' - delItem(jid) - getStatus(jid) - getPriority(jid) - getShow(jid) - ''' + if status == 'avail' or status == '': + return 'online' + else: + return status + + def getShow(self, jid): + print 'getShow in Roster' + return getStatus(jid) + + + def getPriority(jid): + return 5 + + def getSubscription(self,jid): + print 'getSubscription in Roster' + return 'both' + + def Subscribe(self,jid): + pass + + def Unsubscribe(self,jid): + pass + + def Authorize(self,jid): + pass + + def Unauthorize(self,jid): + pass diff --git a/src/common/zeroconf.py b/src/common/zeroconf.py index c0051b395..518491f80 100755 --- a/src/common/zeroconf.py +++ b/src/common/zeroconf.py @@ -41,7 +41,6 @@ class Zeroconf: self.server.ResolveService( int(interface), int(protocol), name, stype, \ domain, avahi.PROTO_UNSPEC, dbus.UInt32(0), \ reply_handler=self.service_resolved_callback, error_handler=self.print_error_callback) - self.new_serviceCB(name) def remove_service_callback(self, interface, protocol, name, stype, domain, flags): print "Service '%s' in domain '%s' on %i.%i disappeared." % (name, domain, interface, protocol) @@ -76,21 +75,16 @@ class Zeroconf: l[str[:poseq]] = str[poseq+1:] return l - def service_resolved_callback(self, interface, protocol, name, stype, domain, host, aprotocol, address, port, txt, flags): - print "Service data for service '%s' in domain '%s' on %i.%i:" % (name, domain, interface, protocol) - print "\tHost %s (%s), port %i, TXT data: %s" % (host, address, port, str(avahi.txt_array_to_string_array(txt))) - - ''' - # add domain to stay unique - if domain != 'local': - add_domain = '.'+domain - else: - add_domain = '' - - self.contacts[name'@'+host+add_domain] = (name, stype, domain, interface, protocol, host, address, port, txt) - ''' + def service_resolved_callback(self, interface, protocol, name, stype, domain, host, aprotocol, address, port, txt, flags): + self.contacts[name] = (name, domain, interface, protocol, host, address, port, txt) + self.new_serviceCB(name) - self.contacts[name] = (name, stype, domain, interface, protocol, host, address, port, txt) + # different handler when resolving all contacts + def service_resolved_all_callback(self, interface, protocol, name, stype, domain, host, aprotocol, address, port, txt, flags): + print "Service data for service '%s' in domain '%s' on %i.%i:" % (name, domain, interface, protocol) + print "\tHost %s (%s), port %i, TXT data: %s" % (host, address, port, str(avahi.txt_array_to_string_array(txt))) + + self.contacts[name] = (name, domain, interface, protocol, host, address, port, txt) def service_added_callback(self): print 'Service successfully added' @@ -150,6 +144,9 @@ class Zeroconf: self.entrygroup.Commit(reply_handler=self.service_committed_callback, error_handler=self.print_error_callback) def announce(self): + #for testing + #self.contacts['stefan@munin'] = ('stefan@munin', 'local', '8', '0', 'munin', '192.168.1.29', '5121',avahi.string_array_to_txt_array(['status','avail'])) + #self.new_serviceCB('stefan@munin') state = self.server.GetState() if state == avahi.SERVER_RUNNING: @@ -193,10 +190,10 @@ class Zeroconf: # refresh data manually - really ok or too much traffic? def resolve_all(self): for val in self.contacts.values(): - #val:(name, stype, domain, interface, protocol, host, address, port, txt) - self.server.ResolveService( int(val[3]), int(val[4]), val[0], \ - self.stype, val[2], avahi.PROTO_UNSPEC, dbus.UInt32(0),\ - reply_handler=self.service_resolved_callback, error_handler=self.print_error_callback) + #val:(name, domain, interface, protocol, host, address, port, txt) + self.server.ResolveService( int(val[2]), int(val[3]), val[0], \ + self.stype, val[1], avahi.PROTO_UNSPEC, dbus.UInt32(0),\ + reply_handler=self.service_resolved_all_callback, error_handler=self.print_error_callback) def get_contacts(self): self.resolve_all() From 7da0b4c220feafca3362ebe6944a1d7f1ea4a66f Mon Sep 17 00:00:00 2001 From: Stefan Bethge Date: Tue, 13 Jun 2006 21:19:39 +0000 Subject: [PATCH 013/110] added timeout for resolving added proper dispatch signals so contacts get shown fixed some errors with roster data --- src/common/connection_handlers_zeroconf.py | 41 ++++++++ src/common/connection_zeroconf.py | 112 +++++++++------------ src/common/roster_zeroconf.py | 58 +++++------ src/common/zeroconf.py | 23 +++-- 4 files changed, 125 insertions(+), 109 deletions(-) diff --git a/src/common/connection_handlers_zeroconf.py b/src/common/connection_handlers_zeroconf.py index 6eaf9dd05..f0f17b7df 100644 --- a/src/common/connection_handlers_zeroconf.py +++ b/src/common/connection_handlers_zeroconf.py @@ -295,4 +295,45 @@ class ConnectionHandlersZeroconf(ConnectionVcard): dic[i]['values'] = [dic[i]['options'][0]['values'][0]] i += 1 return dic + + def remove_transfers_for_contact(self, contact): + ''' stop all active transfer for contact ''' + '''for file_props in self.files_props.values(): + if self.is_transfer_stoped(file_props): + continue + receiver_jid = unicode(file_props['receiver']).split('/')[0] + if contact.jid == receiver_jid: + file_props['error'] = -5 + self.remove_transfer(file_props) + self.dispatch('FILE_REQUEST_ERROR', (contact.jid, file_props)) + sender_jid = unicode(file_props['sender']).split('/')[0] + if contact.jid == sender_jid: + file_props['error'] = -3 + self.remove_transfer(file_props) + ''' + pass + def remove_all_transfers(self): + ''' stops and removes all active connections from the socks5 pool ''' + ''' + for file_props in self.files_props.values(): + self.remove_transfer(file_props, remove_from_list = False) + del(self.files_props) + self.files_props = {} + ''' + pass + + def remove_transfer(self, file_props, remove_from_list = True): + ''' + if file_props is None: + return + self.disconnect_transfer(file_props) + sid = file_props['sid'] + gajim.socks5queue.remove_file_props(self.name, sid) + + if remove_from_list: + if self.files_props.has_key('sid'): + del(self.files_props['sid']) + ''' + pass + diff --git a/src/common/connection_zeroconf.py b/src/common/connection_zeroconf.py index 921792af4..f666be930 100644 --- a/src/common/connection_zeroconf.py +++ b/src/common/connection_zeroconf.py @@ -34,6 +34,8 @@ import signal if os.name != 'nt': signal.signal(signal.SIGPIPE, signal.SIG_DFL) +import gobject + from common import helpers from common import gajim from common import GnuPG @@ -54,30 +56,26 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): self.name = name self.zeroconf = zeroconf.Zeroconf(self._on_new_service, self._on_remove_service) self.connected = 0 # offline - self.connection = None # dummy connection variable - # this property is used to prevent double connections -# self.last_connection = None # last ClientCommon instance + self.connection = None self.gpg = None self.is_zeroconf = True self.status = '' self.old_show = '' - # increase/decrease default timeout for server responses - self.try_connecting_for_foo_secs = 45 - # holds the actual hostname to which we are connected -# self.connected_hostname = None - self.time_to_reconnect = None - self.new_account_info = None - self.bookmarks = [] + + self.call_resolve_timeout = False + + #self.time_to_reconnect = None + #self.new_account_info = None + #self.bookmarks = [] + self.on_purpose = False - self.last_io = gajim.idlequeue.current_time() - self.last_sent = [] - self.last_history_line = {} - self.password = gajim.config.get_per('accounts', name, 'password') -# self.server_resource = gajim.config.get_per('accounts', name, 'resource') -# if gajim.config.get_per('accounts', self.name, 'keep_alives_enabled'): -# self.keepalives = gajim.config.get_per('accounts', self.name,'keep_alive_every_foo_secs') -# else: -# self.keepalives = 0 + #self.last_io = gajim.idlequeue.current_time() + #self.last_sent = [] + #self.last_history_line = {} + + #we don't need a password + self.password = 'dummy' # gajim.config.get_per('accounts', name, 'password') + self.privacy_rules_supported = False # Do we continue connection when we get roster (send presence,get vcard...) self.continue_connect_info = None @@ -91,7 +89,10 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): self.on_connect_failure = None self.retrycount = 0 self.jids_for_auto_auth = [] # list of jid to auto-authorize - + + gajim.config.set_per('accounts', name, 'name', self.zeroconf.username) + gajim.config.set_per('accounts', name, 'hostname', self.zeroconf.host) + # END __init__ def put_event(self, ev): if gajim.handlers.has_key(ev[0]): @@ -103,20 +104,6 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): def _reconnect(self): - '''# Do not try to reco while we are already trying - self.time_to_reconnect = None - if self.connected < 2: #connection failed - gajim.log.debug('reconnect') - self.retrycount += 1 - signed = self.get_signed_msg(self.status) - self.on_connect_auth = self._init_roster - self.connect_and_init(self.old_show, self.status, signed) - else: - # reconnect succeeded - self.time_to_reconnect = None - self.retrycount = 0 - ''' - gajim.log.debug('reconnect') signed = self.get_signed_msg(self.status) @@ -131,32 +118,9 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): # make sure previous connection is completely closed self.last_connection = None self.connection = None + self.call_resolve_timeout = False self.zeroconf.disconnect() - def select_next_host(self, hosts): - hosts_best_prio = [] - best_prio = 65535 - sum_weight = 0 - for h in hosts: - if h['prio'] < best_prio: - hosts_best_prio = [h] - best_prio = h['prio'] - sum_weight = h['weight'] - elif h['prio'] == best_prio: - hosts_best_prio.append(h) - sum_weight += h['weight'] - if len(hosts_best_prio) == 1: - return hosts_best_prio[0] - r = random.randint(0, sum_weight) - min_w = sum_weight - # We return the one for which has the minimum weight and weight >= r - for h in hosts_best_prio: - if h['weight'] >= r: - if h['weight'] <= min_w: - min_w = h['weight'] - return h - - def quit(self, kill_core): if kill_core and self.connected > 1: @@ -188,24 +152,39 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): self.dispatch('BAD_PASSPHRASE', ()) return signed + def _on_resolve_timeout(self): + if self.connected: + self.zeroconf.resolve_all() + return self.call_resolve_timeout + + # callbacks called from zeroconf def _on_new_service(self,jid): self.roster.setItem(jid) - #self.dispatch('ROSTER', self.roster) + self.dispatch('ROSTER_INFO', (jid, jid, 'both', 'no', self.roster.getGroups(jid))) self.dispatch('NOTIFY', (jid, self.roster.getStatus(jid), '', 'Gajim', 0, None, 0)) + def _on_remove_service(self,jid): self.roster.delItem(jid) - #self.dispatch('NOTIFY', self, ) + # 'NOTIFY' (account, (jid, status, status message, resource, priority, + # keyID, timestamp)) + self.dispatch('NOTIFY', (jid, 'offline', '', 'Gajim', 0 +, None, 0)) + def connect(self, data = None, show = 'online'): if self.connection: return self.connection, '' - + self.zeroconf.connect() self.connection = client_zeroconf.ClientZeroconf(self.zeroconf) self.roster = self.connection.getRoster() self.dispatch('ROSTER', self.roster) self.connected = STATUS_LIST.index(show) + + # refresh all contacts data all 10 seconds + self.call_timeout = True + gobject.timeout_add(10000, self._on_resolve_timeout) def connect_and_init(self, show, msg, signed): self.continue_connect_info = [show, msg, signed] @@ -215,13 +194,13 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): self.connect('',show) def change_status(self, show, msg, sync = False, auto = False): - print "change_status: show: %s msg: %s" % (show, msg) + print "connection_zeroconf.py: show: %s msg: %s in change_status" % (show, msg) if not show in STATUS_LIST: return -1 # 'connect' if show != 'offline' and not self.connected: - print "connect in change_status" + print "connection_zeroconf.py: connect in change_status" self.on_purpose = False self.connect_and_init(show, msg, '') if show != 'invisible': @@ -231,22 +210,21 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): # 'disconnect' elif show == 'offline' and self.connected: - print "disconnect in change_status" + print "connection_zeroconf.py: disconnect in change_status" self.connected = 0 self.dispatch('STATUS', 'offline') self.disconnect() - #self._on_disconnected() # update status elif show != 'offline' and self.connected: - print "update in change_status" + print "connection_zeroconf.py: update in change_status" was_invisible = self.connected == STATUS_LIST.index('invisible') self.connected = STATUS_LIST.index(show) if show == 'invisible': self.zeroconf.remove_announce() return if was_invisible: - print "announce after invisible in change_status" + print "connection_zeroconf.py: reannounce after invisible in change_status" self.zeroconf.announce() if self.connection: txt = {} diff --git a/src/common/roster_zeroconf.py b/src/common/roster_zeroconf.py index 480afbe76..6ec8bf070 100644 --- a/src/common/roster_zeroconf.py +++ b/src/common/roster_zeroconf.py @@ -6,17 +6,12 @@ class Roster: self.zeroconf = zeroconf # our zeroconf instance def getRoster(self): - print 'getRoster in Roster' - self._data = self.zeroconf.get_contacts() + print 'roster_zeroconf.py: getRoster' + self._data = self.zeroconf.get_contacts().copy() return self - def getItem(self, jid): - print 'getItem(%s) in Roster' % jid - if self._data.has_key(jid): - return self._data[jid] - def setItem(self, jid, name = '', groups = ''): - print 'setItem %s in Roster' % jid + print 'roster_zeroconf.py: setItem %s' % jid (service_jid, domain, interface, protocol, host, address, port, txt) \ = self.zeroconf.get_contact(jid) @@ -29,67 +24,66 @@ class Roster: self._data[jid]['address'] = address self._data[jid]['host'] = host self._data[jid]['port'] = port - self._data[jid]['txt'] = txt txt_dict = self.zeroconf.txt_array_to_dict(txt) if txt_dict.has_key('status'): status = txt_dict['status'] else: status = '' if status == 'avail': status = 'online' + self._data[jid]['txt_dict'] = txt_dict self._data[jid]['status'] = status self._data[jid]['show'] = status - print self._data[jid] + + # print self._data[jid] def delItem(self, jid): - print 'delItem %s in Roster' % jid + print 'roster_zeroconf.py: delItem %s' % jid if self._data.has_key(jid): del self._data[jid] + def getItem(self, jid): + print 'roster_zeroconf.py: getItem: %s' % jid + if self._data.has_key(jid): + return self._data[jid] + def __getitem__(self,jid): - print '__getitem__ in Roster' + print 'roster_zeroconf.py: __getitem__' return self._data[jid] def getItems(self): - print 'getItems in Roster' - # Return list of all [bare] JIDs that the roster is currently tracks. + print 'roster_zeroconf.py: getItems' + # Return list of all [bare] JIDs that the roster currently tracks. return self._data.keys() def keys(self): - print 'keys in Roster' + print 'roster_zeroconf.py: keys' return self._data.keys() def getRaw(self): - print 'getRaw in Roster' + print 'roster_zeroconf.py: getRaw' return self._data def getResources(self, jid): - print 'getResources(%s) in Roster' % jid + print 'roster_zeroconf.py: getResources(%s)' % jid return {} + + def getGroups(self, jid): + print 'roster_zeroconf.py: getGroups(%s)' % jid + return self._data[jid]['groups'] def getStatus(self, jid): - print 'getStatus %s in Roster' % jid - txt = self._data[jid]['txt'] - txt_dict = self.zeroconf.txt_array_to_dict(txt) - if txt_dict.has_key('status'): - status = txt_dict['status'] - else: - status = '' - - if status == 'avail' or status == '': - return 'online' - else: - return status + print 'roster_zeroconf.py: getStatus %s' % jid + return self._data[jid]['status'] def getShow(self, jid): - print 'getShow in Roster' + print 'roster_zeroconf.py: getShow' return getStatus(jid) - def getPriority(jid): return 5 def getSubscription(self,jid): - print 'getSubscription in Roster' + print 'roster_zeroconf.py: getSubscription' return 'both' def Subscribe(self,jid): diff --git a/src/common/zeroconf.py b/src/common/zeroconf.py index 518491f80..af052b0a8 100755 --- a/src/common/zeroconf.py +++ b/src/common/zeroconf.py @@ -18,7 +18,9 @@ class Zeroconf: self.domain = None # specific domain to browse self.stype = '_presence._tcp' self.port = 5298 # listening port that gets announced - self.name = getpass.getuser()+'@'+socket.gethostname() # service name + self.username = getpass.getuser() + self.host = socket.gethostname() + self.name = self.username+'@'+ self.host # service name self.txt = {} # service data self.new_serviceCB = new_serviceCB @@ -35,10 +37,11 @@ class Zeroconf: print "Error:", str(err) def new_service_callback(self, interface, protocol, name, stype, domain, flags): - print "Found service '%s' in domain '%s' on %i.%i." % (name, domain, interface, protocol) - - #synchronous resolving - self.server.ResolveService( int(interface), int(protocol), name, stype, \ + if name != self.name: + print "Found service '%s' in domain '%s' on %i.%i." % (name, domain, interface, protocol) + + #synchronous resolving + self.server.ResolveService( int(interface), int(protocol), name, stype, \ domain, avahi.PROTO_UNSPEC, dbus.UInt32(0), \ reply_handler=self.service_resolved_callback, error_handler=self.print_error_callback) @@ -186,21 +189,21 @@ class Zeroconf: def disconnect(self): self.remove_announce() - # refresh data manually - really ok or too much traffic? def resolve_all(self): for val in self.contacts.values(): #val:(name, domain, interface, protocol, host, address, port, txt) - self.server.ResolveService( int(val[2]), int(val[3]), val[0], \ + self.server.ResolveService(int(val[2]), int(val[3]), val[0], \ self.stype, val[1], avahi.PROTO_UNSPEC, dbus.UInt32(0),\ reply_handler=self.service_resolved_all_callback, error_handler=self.print_error_callback) - + print "zeroconf.py: resolve_all" + def get_contacts(self): - self.resolve_all() return self.contacts def get_contact(self, jid): - return self.contacts[jid] + if self.contacts.has_key(jid): + return self.contacts[jid] def update_txt(self, txt): # update only given keys From d69327630c72c76402d741bd972d71270b04cb14 Mon Sep 17 00:00:00 2001 From: Stefan Bethge Date: Tue, 13 Jun 2006 22:42:37 +0000 Subject: [PATCH 014/110] updating the roster with status changes --- src/common/connection_zeroconf.py | 13 +++++++++---- src/common/roster_zeroconf.py | 25 +++++++++++++++++++++---- src/common/zeroconf.py | 28 +++++++++++++++++----------- 3 files changed, 47 insertions(+), 19 deletions(-) diff --git a/src/common/connection_zeroconf.py b/src/common/connection_zeroconf.py index f666be930..39260a303 100644 --- a/src/common/connection_zeroconf.py +++ b/src/common/connection_zeroconf.py @@ -155,11 +155,16 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): def _on_resolve_timeout(self): if self.connected: self.zeroconf.resolve_all() + diffs = self.roster.getDiffs() + for key in diffs: + # display_key = self.zeroconf.check_jid(key) + self.dispatch('NOTIFY', (key, diffs[key], '', 'Gajim', 0, None, 0)) return self.call_resolve_timeout # callbacks called from zeroconf def _on_new_service(self,jid): - self.roster.setItem(jid) + self.roster.setItem(jid) + # display_jid = self.zeroconf.check_jid(jid) self.dispatch('ROSTER_INFO', (jid, jid, 'both', 'no', self.roster.getGroups(jid))) self.dispatch('NOTIFY', (jid, self.roster.getStatus(jid), '', 'Gajim', 0, None, 0)) @@ -168,8 +173,8 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): self.roster.delItem(jid) # 'NOTIFY' (account, (jid, status, status message, resource, priority, # keyID, timestamp)) - self.dispatch('NOTIFY', (jid, 'offline', '', 'Gajim', 0 -, None, 0)) + # jid = self.zeroconf.check_jid(jid) + self.dispatch('NOTIFY', (jid, 'offline', '', 'Gajim', 0, None, 0)) def connect(self, data = None, show = 'online'): @@ -183,7 +188,7 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): self.connected = STATUS_LIST.index(show) # refresh all contacts data all 10 seconds - self.call_timeout = True + self.call_resolve_timeout = True gobject.timeout_add(10000, self._on_resolve_timeout) def connect_and_init(self, show, msg, signed): diff --git a/src/common/roster_zeroconf.py b/src/common/roster_zeroconf.py index 6ec8bf070..562ff9da8 100644 --- a/src/common/roster_zeroconf.py +++ b/src/common/roster_zeroconf.py @@ -5,13 +5,32 @@ class Roster: self._data = {} self.zeroconf = zeroconf # our zeroconf instance + def update_roster(self): + for (jid, dom, interf, proto, host, addr, port, txt) in self.zeroconf.get_contacts().values(): + self.setItem(jid) + def getRoster(self): print 'roster_zeroconf.py: getRoster' - self._data = self.zeroconf.get_contacts().copy() + self.update_roster() return self + def getDiffs(self): + ''' update the roster with new data and return dict with + jid -> new status pairs to do notifications and stuff ''' + + diffs = {} + old_data = self._data.copy() + self.update_roster() + for key in old_data.keys(): + if self._data.has_key(key): + if old_data[key] != self._data[key]: + diffs[key] = self._data[key]['status'] + print 'roster_zeroconf.py: diffs:', + print diffs + return diffs + def setItem(self, jid, name = '', groups = ''): - print 'roster_zeroconf.py: setItem %s' % jid + #print 'roster_zeroconf.py: setItem %s' % jid (service_jid, domain, interface, protocol, host, address, port, txt) \ = self.zeroconf.get_contact(jid) @@ -68,11 +87,9 @@ class Roster: return {} def getGroups(self, jid): - print 'roster_zeroconf.py: getGroups(%s)' % jid return self._data[jid]['groups'] def getStatus(self, jid): - print 'roster_zeroconf.py: getStatus %s' % jid return self._data[jid]['status'] def getShow(self, jid): diff --git a/src/common/zeroconf.py b/src/common/zeroconf.py index af052b0a8..109f35b7c 100755 --- a/src/common/zeroconf.py +++ b/src/common/zeroconf.py @@ -38,7 +38,7 @@ class Zeroconf: def new_service_callback(self, interface, protocol, name, stype, domain, flags): if name != self.name: - print "Found service '%s' in domain '%s' on %i.%i." % (name, domain, interface, protocol) + # print "Found service '%s' in domain '%s' on %i.%i." % (name, domain, interface, protocol) #synchronous resolving self.server.ResolveService( int(interface), int(protocol), name, stype, \ @@ -46,7 +46,7 @@ class Zeroconf: reply_handler=self.service_resolved_callback, error_handler=self.print_error_callback) def remove_service_callback(self, interface, protocol, name, stype, domain, flags): - print "Service '%s' in domain '%s' on %i.%i disappeared." % (name, domain, interface, protocol) + # print "Service '%s' in domain '%s' on %i.%i disappeared." % (name, domain, interface, protocol) del self.contacts[name] self.remove_serviceCB(name) @@ -55,7 +55,7 @@ class Zeroconf: if self.service_browsers.has_key((interface, protocol, stype, domain)): return - print "Browsing for services of type '%s' in domain '%s' on %i.%i ..." % (stype, domain, interface, protocol) + # print "Browsing for services of type '%s' in domain '%s' on %i.%i ..." % (stype, domain, interface, protocol) b = dbus.Interface(self.bus.get_object(avahi.DBUS_NAME, \ self.server.ServiceBrowserNew(interface, protocol, \ @@ -69,6 +69,13 @@ class Zeroconf: if domain != "local": self.browse_domain(interface, protocol, domain) + def check_jid(self, jid): + # miranda uses bad service names, so change them... + if jid.find('@') == -1: + return 'miranda@' + jid + else: + return jid + def txt_array_to_dict(self,t): l = {} @@ -90,13 +97,16 @@ class Zeroconf: self.contacts[name] = (name, domain, interface, protocol, host, address, port, txt) def service_added_callback(self): - print 'Service successfully added' + # print 'Service successfully added' + pass def service_committed_callback(self): - print 'Service successfully committed' + # print 'Service successfully committed' + pass def service_updated_callback(self): - print 'Service successfully updated' + # print 'Service successfully updated' + pass def service_add_fail_callback(self, err): print 'Error while adding service:', str(err) @@ -142,14 +152,11 @@ class Zeroconf: if self.txt.has_key('status'): self.txt['status'] = self.replace_show(self.txt['status']) - print "Publishing service '%s' of type %s" % (self.name, self.stype) + # print "Publishing service '%s' of type %s" % (self.name, self.stype) self.entrygroup.AddService(avahi.IF_UNSPEC, avahi.PROTO_UNSPEC, dbus.UInt32(0), self.name, self.stype, '', '', self.port, avahi.dict_to_txt_array(self.txt), reply_handler=self.service_added_callback, error_handler=self.service_add_fail_callback) self.entrygroup.Commit(reply_handler=self.service_committed_callback, error_handler=self.print_error_callback) def announce(self): - #for testing - #self.contacts['stefan@munin'] = ('stefan@munin', 'local', '8', '0', 'munin', '192.168.1.29', '5121',avahi.string_array_to_txt_array(['status','avail'])) - #self.new_serviceCB('stefan@munin') state = self.server.GetState() if state == avahi.SERVER_RUNNING: @@ -196,7 +203,6 @@ class Zeroconf: self.server.ResolveService(int(val[2]), int(val[3]), val[0], \ self.stype, val[1], avahi.PROTO_UNSPEC, dbus.UInt32(0),\ reply_handler=self.service_resolved_all_callback, error_handler=self.print_error_callback) - print "zeroconf.py: resolve_all" def get_contacts(self): return self.contacts From 908a4782d46fec77c28f313f1b5eaad95f7a5336 Mon Sep 17 00:00:00 2001 From: Stefan Bethge Date: Tue, 13 Jun 2006 22:50:18 +0000 Subject: [PATCH 015/110] add bookmarks variable again (for right click account menu) --- src/common/connection_zeroconf.py | 2 +- src/gajim.py | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/common/connection_zeroconf.py b/src/common/connection_zeroconf.py index 39260a303..5fd0506a4 100644 --- a/src/common/connection_zeroconf.py +++ b/src/common/connection_zeroconf.py @@ -66,7 +66,7 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): #self.time_to_reconnect = None #self.new_account_info = None - #self.bookmarks = [] + self.bookmarks = [] self.on_purpose = False #self.last_io = gajim.idlequeue.current_time() diff --git a/src/gajim.py b/src/gajim.py index cf3a7e758..63b5dcb6c 100755 --- a/src/gajim.py +++ b/src/gajim.py @@ -1741,7 +1741,6 @@ class Interface: self.register_handlers() for account in gajim.config.get_per('accounts'): if account == 'zeroconf': - print 'Added zeroconf account to list' gajim.connections[account] = common.connection_zeroconf.ConnectionZeroconf(account) else: gajim.connections[account] = common.connection.Connection(account) From 9921ce24f4c888354d3b07d678ee8b13f32abdaa Mon Sep 17 00:00:00 2001 From: Stefan Bethge Date: Tue, 27 Jun 2006 22:28:49 +0000 Subject: [PATCH 016/110] simple (hackish) sending of messages, needs improvement removed some debug messages --- src/common/connection_zeroconf.py | 88 +++++++++++++++++-------------- src/common/roster_zeroconf.py | 32 ++++++----- src/common/zeroconf.py | 61 +++++++++++++++++---- 3 files changed, 119 insertions(+), 62 deletions(-) diff --git a/src/common/connection_zeroconf.py b/src/common/connection_zeroconf.py index 5fd0506a4..b33685e6c 100644 --- a/src/common/connection_zeroconf.py +++ b/src/common/connection_zeroconf.py @@ -73,9 +73,9 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): #self.last_sent = [] #self.last_history_line = {} - #we don't need a password - self.password = 'dummy' # gajim.config.get_per('accounts', name, 'password') - + #we don't need a password, but must be non-empty + self.password = 'dummy' + self.privacy_rules_supported = False # Do we continue connection when we get roster (send presence,get vcard...) self.continue_connect_info = None @@ -92,7 +92,7 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): gajim.config.set_per('accounts', name, 'name', self.zeroconf.username) gajim.config.set_per('accounts', name, 'hostname', self.zeroconf.host) - + # END __init__ def put_event(self, ev): if gajim.handlers.has_key(ev[0]): @@ -109,17 +109,6 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): signed = self.get_signed_msg(self.status) - # We are doing disconnect at so many places, better use one function in all - def disconnect(self, on_purpose = False): - self.on_purpose = on_purpose - self.connected = 0 - self.time_to_reconnect = None - if self.connection: - # make sure previous connection is completely closed - self.last_connection = None - self.connection = None - self.call_resolve_timeout = False - self.zeroconf.disconnect() def quit(self, kill_core): @@ -157,24 +146,25 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): self.zeroconf.resolve_all() diffs = self.roster.getDiffs() for key in diffs: - # display_key = self.zeroconf.check_jid(key) - self.dispatch('NOTIFY', (key, diffs[key], '', 'Gajim', 0, None, 0)) + self.roster.setItem(key) + display_key = self.zeroconf.check_jid(key) + self.dispatch('NOTIFY', (display_key, self.roster.getStatus(key), self.roster.getMessage(key), 'local', 0, None, 0)) return self.call_resolve_timeout # callbacks called from zeroconf def _on_new_service(self,jid): self.roster.setItem(jid) - # display_jid = self.zeroconf.check_jid(jid) - self.dispatch('ROSTER_INFO', (jid, jid, 'both', 'no', self.roster.getGroups(jid))) - self.dispatch('NOTIFY', (jid, self.roster.getStatus(jid), '', 'Gajim', 0, None, 0)) + display_jid = self.zeroconf.check_jid(jid) + self.dispatch('ROSTER_INFO', (display_jid, display_jid, 'both', 'no', self.roster.getGroups(jid))) + self.dispatch('NOTIFY', (display_jid, self.roster.getStatus(jid), self.roster.getMessage(jid), 'local', 0, None, 0)) def _on_remove_service(self,jid): self.roster.delItem(jid) # 'NOTIFY' (account, (jid, status, status message, resource, priority, # keyID, timestamp)) - # jid = self.zeroconf.check_jid(jid) - self.dispatch('NOTIFY', (jid, 'offline', '', 'Gajim', 0, None, 0)) + jid = self.zeroconf.check_jid(jid) + self.dispatch('NOTIFY', (jid, 'offline', '', 'local', 0, None, 0)) def connect(self, data = None, show = 'online'): @@ -185,6 +175,13 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): self.connection = client_zeroconf.ClientZeroconf(self.zeroconf) self.roster = self.connection.getRoster() self.dispatch('ROSTER', self.roster) + + #display contacts already detected and resolved + for jid in self.roster.keys(): + display_jid = self.zeroconf.check_jid(jid) + self.dispatch('ROSTER_INFO', (display_jid, display_jid, 'both', 'no', self.roster.getGroups(jid))) + self.dispatch('NOTIFY', (display_jid, self.roster.getStatus(jid), self.roster.getMessage(jid), 'local', 0, None, 0)) + self.connected = STATUS_LIST.index(show) # refresh all contacts data all 10 seconds @@ -198,14 +195,25 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): self.zeroconf.txt['msg'] = msg self.connect('',show) + + def disconnect(self, on_purpose = False): + self.on_purpose = on_purpose + self.connected = 0 + self.time_to_reconnect = None + if self.connection: + # make sure previous connection is completely closed + self.last_connection = None + self.connection = None + # stop calling the timeout + self.call_resolve_timeout = False + self.zeroconf.disconnect() + def change_status(self, show, msg, sync = False, auto = False): - print "connection_zeroconf.py: show: %s msg: %s in change_status" % (show, msg) if not show in STATUS_LIST: return -1 # 'connect' if show != 'offline' and not self.connected: - print "connection_zeroconf.py: connect in change_status" self.on_purpose = False self.connect_and_init(show, msg, '') if show != 'invisible': @@ -215,21 +223,18 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): # 'disconnect' elif show == 'offline' and self.connected: - print "connection_zeroconf.py: disconnect in change_status" self.connected = 0 self.dispatch('STATUS', 'offline') self.disconnect() # update status elif show != 'offline' and self.connected: - print "connection_zeroconf.py: update in change_status" was_invisible = self.connected == STATUS_LIST.index('invisible') self.connected = STATUS_LIST.index(show) if show == 'invisible': self.zeroconf.remove_announce() return if was_invisible: - print "connection_zeroconf.py: reannounce after invisible in change_status" self.zeroconf.announce() if self.connection: txt = {} @@ -243,14 +248,15 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): def send_message(self, jid, msg, keyID, type = 'chat', subject='', chatstate = None, msg_id = None, composing_jep = None, resource = None): - ''' + print 'connection_zeroconf.py: send_message' + + fjid = jid + if not self.connection: return if not msg and chatstate is None: return - fjid = jid - if resource: - fjid += '/' + resource + msgtxt = msg msgenc = '' if keyID and USE_GPG: @@ -262,8 +268,11 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): if lang is not None or lang != 'en': # we're not english msgtxt = _('[This message is encrypted]') +\ ' ([This message is encrypted])' # one in locale and one en + + if type == 'chat': msg_iq = common.xmpp.Message(to = fjid, body = msgtxt, typ = type) + else: if subject: msg_iq = common.xmpp.Message(to = fjid, body = msgtxt, @@ -271,9 +280,11 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): else: msg_iq = common.xmpp.Message(to = fjid, body = msgtxt, typ = 'normal') + + if msgenc: msg_iq.setTag(common.xmpp.NS_ENCRYPTED + ' x').setData(msgenc) - + # chatstates - if peer supports jep85 or jep22, send chatstates # please note that the only valid tag inside a message containing a # tag is the active event @@ -292,7 +303,6 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): if chatstate is 'composing' or msgtxt: chatstate_node.addChild(name = 'composing') - self.connection.send(msg_iq) no_log_for = gajim.config.get_per('accounts', self.name, 'no_log_for') ji = gajim.get_jid_without_resource(jid) if self.name not in no_log_for and ji not in no_log_for: @@ -305,17 +315,17 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): else: kind = 'single_msg_sent' gajim.logger.write(kind, jid, log_msg) + + self.zeroconf.send_message(jid, msgtxt) + self.dispatch('MSGSENT', (jid, msg, keyID)) - ''' - + def send_stanza(self, stanza): # send a stanza untouched - ''' + print 'connection_zeroconf.py: send_stanza' if not self.connection: return - self.connection.send(stanza) - ''' - + #self.connection.send(stanza) pass def ack_subscribed(self, jid): diff --git a/src/common/roster_zeroconf.py b/src/common/roster_zeroconf.py index 562ff9da8..aeda3fb67 100644 --- a/src/common/roster_zeroconf.py +++ b/src/common/roster_zeroconf.py @@ -10,7 +10,7 @@ class Roster: self.setItem(jid) def getRoster(self): - print 'roster_zeroconf.py: getRoster' + #print 'roster_zeroconf.py: getRoster' self.update_roster() return self @@ -25,8 +25,7 @@ class Roster: if self._data.has_key(key): if old_data[key] != self._data[key]: diffs[key] = self._data[key]['status'] - print 'roster_zeroconf.py: diffs:', - print diffs + #print 'roster_zeroconf.py: diffs:' + diffs return diffs def setItem(self, jid, name = '', groups = ''): @@ -50,57 +49,64 @@ class Roster: status = '' if status == 'avail': status = 'online' self._data[jid]['txt_dict'] = txt_dict + if not self._data[jid]['txt_dict'].has_key('msg'): + self._data[jid]['txt_dict']['msg'] = '' self._data[jid]['status'] = status self._data[jid]['show'] = status # print self._data[jid] def delItem(self, jid): - print 'roster_zeroconf.py: delItem %s' % jid + #print 'roster_zeroconf.py: delItem %s' % jid if self._data.has_key(jid): del self._data[jid] def getItem(self, jid): - print 'roster_zeroconf.py: getItem: %s' % jid + #print 'roster_zeroconf.py: getItem: %s' % jid if self._data.has_key(jid): return self._data[jid] def __getitem__(self,jid): - print 'roster_zeroconf.py: __getitem__' + #print 'roster_zeroconf.py: __getitem__' return self._data[jid] def getItems(self): - print 'roster_zeroconf.py: getItems' + #print 'roster_zeroconf.py: getItems' # Return list of all [bare] JIDs that the roster currently tracks. return self._data.keys() def keys(self): - print 'roster_zeroconf.py: keys' + #print 'roster_zeroconf.py: keys' return self._data.keys() def getRaw(self): - print 'roster_zeroconf.py: getRaw' + #print 'roster_zeroconf.py: getRaw' return self._data def getResources(self, jid): - print 'roster_zeroconf.py: getResources(%s)' % jid + #print 'roster_zeroconf.py: getResources(%s)' % jid return {} def getGroups(self, jid): return self._data[jid]['groups'] def getStatus(self, jid): - return self._data[jid]['status'] + if self._data.has_key(jid): + return self._data[jid]['status'] + + def getMessage(self, jid): + if self._data.has_key(jid): + return self._data[jid]['txt_dict']['msg'] def getShow(self, jid): - print 'roster_zeroconf.py: getShow' + #print 'roster_zeroconf.py: getShow' return getStatus(jid) def getPriority(jid): return 5 def getSubscription(self,jid): - print 'roster_zeroconf.py: getSubscription' + #print 'roster_zeroconf.py: getSubscription' return 'both' def Subscribe(self,jid): diff --git a/src/common/zeroconf.py b/src/common/zeroconf.py index 109f35b7c..20a40b7f5 100755 --- a/src/common/zeroconf.py +++ b/src/common/zeroconf.py @@ -70,12 +70,19 @@ class Zeroconf: self.browse_domain(interface, protocol, domain) def check_jid(self, jid): - # miranda uses bad service names, so change them... + # TODO: at least miranda uses bad service names(only host name), so change them - probabaly not so nice... need to find a better solution if jid.find('@') == -1: - return 'miranda@' + jid + return 'bad-client@' + jid else: return jid - + + def recreate_bad_jid(self,jid): + at = jid.find('@') + if jid[:at] == 'bad-client': + return jid[at+1:] + else: + return jid + def txt_array_to_dict(self,t): l = {} @@ -91,8 +98,8 @@ class Zeroconf: # different handler when resolving all contacts def service_resolved_all_callback(self, interface, protocol, name, stype, domain, host, aprotocol, address, port, txt, flags): - print "Service data for service '%s' in domain '%s' on %i.%i:" % (name, domain, interface, protocol) - print "\tHost %s (%s), port %i, TXT data: %s" % (host, address, port, str(avahi.txt_array_to_string_array(txt))) + #print "Service data for service '%s' in domain '%s' on %i.%i:" % (name, domain, interface, protocol) + #print "\tHost %s (%s), port %i, TXT data: %s" % (host, address, port, str(avahi.txt_array_to_string_array(txt))) self.contacts[name] = (name, domain, interface, protocol, host, address, port, txt) @@ -163,9 +170,10 @@ class Zeroconf: self.create_service() def remove_announce(self): - self.entrygroup.Reset() - self.entrygroup.Free() - self.entrygroup = None + if self.entrygroup: + self.entrygroup.Reset() + self.entrygroup.Free() + self.entrygroup = None def browse_domain(self, interface, protocol, domain): self.new_service_type(interface, protocol, self.stype, domain, '') @@ -190,7 +198,6 @@ class Zeroconf: dbus.UInt32(0))), avahi.DBUS_INTERFACE_DOMAIN_BROWSER) db.connect_to_signal('ItemNew', self.new_domain_callback) else: - # Just browse the domain the user wants us to browse self.browse_domain(avahi.IF_UNSPEC, avahi.PROTO_UNSPEC, domain) def disconnect(self): @@ -224,10 +231,44 @@ class Zeroconf: self.entrygroup.UpdateServiceTxt(avahi.IF_UNSPEC, avahi.PROTO_UNSPEC, dbus.UInt32(0), self.name, self.stype,'', txt, reply_handler=self.service_updated_callback, error_handler=self.print_error_callback) # self.entrygroup.Commit() # TODO: necessary? + + def send (self, msg, sock): + print 'send:'+msg + totalsent = 0 + while totalsent < len(msg): + sent = sock.send(msg[totalsent:]) + if sent == 0: + raise RuntimeError, "socket connection broken" + totalsent = totalsent + sent + + def send_message(self, jid, msg): + print 'zeroconf.py: send_message:'+ msg + jid = self.recreate_bad_jid(jid) + + sock = socket.socket ( socket.AF_INET, socket.SOCK_STREAM ) + #sock.setblocking(False) + sock.connect ( ( self.contacts[jid][4], self.contacts[jid][6] ) ) + + try : recvd = sock.recv(16384) + except: recvd = '' + + print 'receive:' + recvd + + self.send("", sock) + + self.send("" + msg + "" + msg +"", sock) + + try: recvd = sock.recv(16384) + except: recvd = '' + print 'receive:' + recvd + + self.send('', sock) + sock.close() + # END Zeroconf ''' -# how to use... +# how to use zeroconf = Zeroconf() zeroconf.connect() From 22c02ee2d3bad832c2ff057973ac3106e589ce2b Mon Sep 17 00:00:00 2001 From: Stefan Bethge Date: Tue, 27 Jun 2006 22:51:07 +0000 Subject: [PATCH 017/110] move everything zeroconf to src/zeroconf --- src/common/{ => zeroconf}/client_zeroconf.py | 0 src/common/{ => zeroconf}/connection_handlers_zeroconf.py | 0 src/common/{ => zeroconf}/connection_zeroconf.py | 0 src/common/{ => zeroconf}/roster_zeroconf.py | 0 src/common/{ => zeroconf}/zeroconf.py | 0 5 files changed, 0 insertions(+), 0 deletions(-) rename src/common/{ => zeroconf}/client_zeroconf.py (100%) rename src/common/{ => zeroconf}/connection_handlers_zeroconf.py (100%) rename src/common/{ => zeroconf}/connection_zeroconf.py (100%) rename src/common/{ => zeroconf}/roster_zeroconf.py (100%) rename src/common/{ => zeroconf}/zeroconf.py (100%) diff --git a/src/common/client_zeroconf.py b/src/common/zeroconf/client_zeroconf.py similarity index 100% rename from src/common/client_zeroconf.py rename to src/common/zeroconf/client_zeroconf.py diff --git a/src/common/connection_handlers_zeroconf.py b/src/common/zeroconf/connection_handlers_zeroconf.py similarity index 100% rename from src/common/connection_handlers_zeroconf.py rename to src/common/zeroconf/connection_handlers_zeroconf.py diff --git a/src/common/connection_zeroconf.py b/src/common/zeroconf/connection_zeroconf.py similarity index 100% rename from src/common/connection_zeroconf.py rename to src/common/zeroconf/connection_zeroconf.py diff --git a/src/common/roster_zeroconf.py b/src/common/zeroconf/roster_zeroconf.py similarity index 100% rename from src/common/roster_zeroconf.py rename to src/common/zeroconf/roster_zeroconf.py diff --git a/src/common/zeroconf.py b/src/common/zeroconf/zeroconf.py similarity index 100% rename from src/common/zeroconf.py rename to src/common/zeroconf/zeroconf.py From b43d9ffd5eb88649c71eca28eddd74db346c76d1 Mon Sep 17 00:00:00 2001 From: Stefan Bethge Date: Tue, 27 Jun 2006 23:09:21 +0000 Subject: [PATCH 018/110] fix module imports (woops :) --- src/common/zeroconf/client_zeroconf.py | 2 +- src/common/zeroconf/connection_handlers_zeroconf.py | 2 +- src/common/zeroconf/connection_zeroconf.py | 6 +++--- src/common/zeroconf/roster_zeroconf.py | 2 +- src/gajim.py | 4 ++-- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/common/zeroconf/client_zeroconf.py b/src/common/zeroconf/client_zeroconf.py index f4b98aab9..d189a7d22 100644 --- a/src/common/zeroconf/client_zeroconf.py +++ b/src/common/zeroconf/client_zeroconf.py @@ -1,5 +1,5 @@ -from common import roster_zeroconf +from common.zeroconf import roster_zeroconf class ClientZeroconf: def __init__(self, zeroconf): diff --git a/src/common/zeroconf/connection_handlers_zeroconf.py b/src/common/zeroconf/connection_handlers_zeroconf.py index f0f17b7df..d73c385ba 100644 --- a/src/common/zeroconf/connection_handlers_zeroconf.py +++ b/src/common/zeroconf/connection_handlers_zeroconf.py @@ -26,7 +26,7 @@ import sys from calendar import timegm -import socks5 +#import socks5 import common.xmpp from common import GnuPG diff --git a/src/common/zeroconf/connection_zeroconf.py b/src/common/zeroconf/connection_zeroconf.py index b33685e6c..2a3fabfc7 100644 --- a/src/common/zeroconf/connection_zeroconf.py +++ b/src/common/zeroconf/connection_zeroconf.py @@ -39,9 +39,9 @@ import gobject from common import helpers from common import gajim from common import GnuPG -from common import zeroconf -from common import connection_handlers_zeroconf -from common import client_zeroconf +from common.zeroconf import zeroconf +from common.zeroconf import connection_handlers_zeroconf +from common.zeroconf import client_zeroconf from connection_handlers_zeroconf import * USE_GPG = GnuPG.USE_GPG diff --git a/src/common/zeroconf/roster_zeroconf.py b/src/common/zeroconf/roster_zeroconf.py index aeda3fb67..503b0a2e1 100644 --- a/src/common/zeroconf/roster_zeroconf.py +++ b/src/common/zeroconf/roster_zeroconf.py @@ -1,4 +1,4 @@ -from common import zeroconf +from common.zeroconf import zeroconf class Roster: def __init__(self, zeroconf): diff --git a/src/gajim.py b/src/gajim.py index 63b5dcb6c..35de76b8b 100755 --- a/src/gajim.py +++ b/src/gajim.py @@ -39,7 +39,7 @@ from chat_control import ChatControlBase from common import exceptions from common import i18n -from common import connection_zeroconf +from common.zeroconf import connection_zeroconf i18n.init() _ = i18n._ @@ -1741,7 +1741,7 @@ class Interface: self.register_handlers() for account in gajim.config.get_per('accounts'): if account == 'zeroconf': - gajim.connections[account] = common.connection_zeroconf.ConnectionZeroconf(account) + gajim.connections[account] = common.zeroconf.connection_zeroconf.ConnectionZeroconf(account) else: gajim.connections[account] = common.connection.Connection(account) From 661d0d65500e0bae236f8a8f782501c9aafa4fd9 Mon Sep 17 00:00:00 2001 From: Stefan Bethge Date: Tue, 27 Jun 2006 23:12:14 +0000 Subject: [PATCH 019/110] __init__.py was missing --- src/common/zeroconf/__init__.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/common/zeroconf/__init__.py diff --git a/src/common/zeroconf/__init__.py b/src/common/zeroconf/__init__.py new file mode 100644 index 000000000..e69de29bb From f2f911c91e54a8710d1eb25c02ae9a08766926c1 Mon Sep 17 00:00:00 2001 From: Dimitur Kirov Date: Thu, 6 Jul 2006 14:26:44 +0000 Subject: [PATCH 020/110] don't update roster, on each getRoster request --- src/common/zeroconf/roster_zeroconf.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/common/zeroconf/roster_zeroconf.py b/src/common/zeroconf/roster_zeroconf.py index 503b0a2e1..3a428a38c 100644 --- a/src/common/zeroconf/roster_zeroconf.py +++ b/src/common/zeroconf/roster_zeroconf.py @@ -2,7 +2,7 @@ from common.zeroconf import zeroconf class Roster: def __init__(self, zeroconf): - self._data = {} + self._data = None self.zeroconf = zeroconf # our zeroconf instance def update_roster(self): @@ -11,7 +11,9 @@ class Roster: def getRoster(self): #print 'roster_zeroconf.py: getRoster' - self.update_roster() + if self._data is None: + self._data = {} + self.update_roster() return self def getDiffs(self): @@ -25,7 +27,7 @@ class Roster: if self._data.has_key(key): if old_data[key] != self._data[key]: diffs[key] = self._data[key]['status'] - #print 'roster_zeroconf.py: diffs:' + diffs + #print 'roster_zeroconf.py: diffs:' + str(diffs) return diffs def setItem(self, jid, name = '', groups = ''): From 6bdc8eb210b0a63ad8226a050106669d69ca2952 Mon Sep 17 00:00:00 2001 From: Dimitur Kirov Date: Tue, 11 Jul 2006 10:44:52 +0000 Subject: [PATCH 021/110] make sure 'jid' is unicode --- src/tooltips.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tooltips.py b/src/tooltips.py index f09cccbdd..cd41c22a9 100644 --- a/src/tooltips.py +++ b/src/tooltips.py @@ -508,7 +508,7 @@ class RosterTooltip(NotificationAreaTooltip): vcard_table.set_homogeneous(False) vcard_current_row = 1 properties = [] - jid_markup = '' + prim_contact.jid + '' + jid_markup = '' + unicode(prim_contact.jid) + '' properties.append((jid_markup, None)) properties.append((_('Name: '), gtkgui_helpers.escape_for_pango_markup( prim_contact.get_shown_name()))) From 56cd8ba43b49445968a3c08c6ad53b2bc3a7a74a Mon Sep 17 00:00:00 2001 From: Dimitur Kirov Date: Tue, 11 Jul 2006 15:22:59 +0000 Subject: [PATCH 022/110] config option 'zeroconf_enabled' indicates that zeroconf connection should be used. Create the neccessary config values if zeroconf account is not present --- src/common/config.py | 1 + src/common/zeroconf/connection_zeroconf.py | 31 +++++++++++++++++----- src/common/zeroconf/zeroconf.py | 24 ++++++++++------- src/gajim.py | 6 ++--- src/tooltips.py | 2 +- 5 files changed, 44 insertions(+), 20 deletions(-) diff --git a/src/common/config.py b/src/common/config.py index 0f8a2a00d..da7cc93f1 100644 --- a/src/common/config.py +++ b/src/common/config.py @@ -200,6 +200,7 @@ class Config: 'hide_groupchat_occupants_list': [opt_bool, False, _('Hides the room occupants list in groupchat window')], 'chat_merge_consecutive_nickname': [opt_bool, False, _('Merge consecutive nickname in chat window')], 'chat_merge_consecutive_nickname_indent': [opt_str, ' ', _('Indentation when using merge consecutive nickame')], + 'zeroconf_enabled': [opt_bool, True, _('Enable zeroconf network')], } __options_per_key = { diff --git a/src/common/zeroconf/connection_zeroconf.py b/src/common/zeroconf/connection_zeroconf.py index 2a3fabfc7..f8e091092 100644 --- a/src/common/zeroconf/connection_zeroconf.py +++ b/src/common/zeroconf/connection_zeroconf.py @@ -33,7 +33,7 @@ random.seed() import signal if os.name != 'nt': signal.signal(signal.SIGPIPE, signal.SIG_DFL) - +import getpass import gobject from common import helpers @@ -54,7 +54,6 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): def __init__(self, name): ConnectionHandlersZeroconf.__init__(self) self.name = name - self.zeroconf = zeroconf.Zeroconf(self._on_new_service, self._on_remove_service) self.connected = 0 # offline self.connection = None self.gpg = None @@ -74,7 +73,7 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): #self.last_history_line = {} #we don't need a password, but must be non-empty - self.password = 'dummy' + self.password = 'zeroconf' self.privacy_rules_supported = False # Do we continue connection when we get roster (send presence,get vcard...) @@ -89,10 +88,30 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): self.on_connect_failure = None self.retrycount = 0 self.jids_for_auto_auth = [] # list of jid to auto-authorize + self.get_config_values_or_default() + + def get_config_values_or_default(self): + ''' get name, host, port from config, or + create zeroconf account with default values''' + if not gajim.config.get_per('accounts', 'zeroconf', 'name'): + print 'Creating zeroconf account' + gajim.config.add_per('accounts', 'zeroconf') + gajim.config.set_per('accounts', 'zeroconf', 'autoconnect', True) + gajim.config.set_per('accounts', 'zeroconf', 'password', 'zeroconf') + gajim.config.set_per('accounts', 'zeroconf', 'sync_with_global_status', True) + username = unicode(getpass.getuser()) + gajim.config.set_per('accounts', 'zeroconf', 'name', username) + #XXX make sure host is US-ASCII + host = unicode(socket.gethostname()) + gajim.config.set_per('accounts', 'zeroconf', 'hostname', host) + port = 5298 + gajim.config.set_per('accounts', 'zeroconf', 'custom_port', 5298) + else: + username = gajim.config.get_per('accounts', 'zeroconf', 'name') + host = gajim.config.get_per('accounts', 'zeroconf', 'hostname') + port = gajim.config.get_per('accounts', 'zeroconf', 'custom_port') + self.zeroconf = zeroconf.Zeroconf(self._on_new_service, self._on_remove_service, username, host, port) - gajim.config.set_per('accounts', name, 'name', self.zeroconf.username) - gajim.config.set_per('accounts', name, 'hostname', self.zeroconf.host) - # END __init__ def put_event(self, ev): if gajim.handlers.has_key(ev[0]): diff --git a/src/common/zeroconf/zeroconf.py b/src/common/zeroconf/zeroconf.py index 20a40b7f5..5aa793156 100755 --- a/src/common/zeroconf/zeroconf.py +++ b/src/common/zeroconf/zeroconf.py @@ -1,8 +1,7 @@ import os import sys -import getpass import socket - +from common import gajim try: import avahi, gobject, dbus except ImportError: @@ -14,12 +13,12 @@ except ImportError, e: pass class Zeroconf: - def __init__(self, new_serviceCB, remove_serviceCB): + def __init__(self, new_serviceCB, remove_serviceCB, name, host, port): self.domain = None # specific domain to browse self.stype = '_presence._tcp' - self.port = 5298 # listening port that gets announced - self.username = getpass.getuser() - self.host = socket.gethostname() + self.port = port # listening port that gets announced + self.username = name + self.host = host self.name = self.username+'@'+ self.host # service name self.txt = {} # service data @@ -37,7 +36,8 @@ class Zeroconf: print "Error:", str(err) def new_service_callback(self, interface, protocol, name, stype, domain, flags): - if name != self.name: + if True: + #XXX name != self.name # print "Found service '%s' in domain '%s' on %i.%i." % (name, domain, interface, protocol) #synchronous resolving @@ -183,9 +183,13 @@ class Zeroconf: self.bus = dbus.SystemBus() self.server = dbus.Interface(self.bus.get_object(avahi.DBUS_NAME, \ avahi.DBUS_PATH_SERVER), avahi.DBUS_INTERFACE_SERVER) - - self.server.connect_to_signal('StateChanged', self.server_state_changed_callback) - + try: + self.server.connect_to_signal('StateChanged', self.server_state_changed_callback) + except dbus.dbus_bindings.DBusException, e: + # Avahi service is not present + gajim.log.debug(str(e)) + self.remove_announce() + return # start browsing if self.domain is None: # Explicitly browse .local diff --git a/src/gajim.py b/src/gajim.py index 35de76b8b..703a089f5 100755 --- a/src/gajim.py +++ b/src/gajim.py @@ -1739,10 +1739,10 @@ class Interface: self.handle_event_file_progress) gajim.proxy65_manager = proxy65_manager.Proxy65Manager(gajim.idlequeue) self.register_handlers() + if gajim.config.get('zeroconf_enabled'): + gajim.connections['zeroconf'] = common.zeroconf.connection_zeroconf.ConnectionZeroconf('zeroconf') for account in gajim.config.get_per('accounts'): - if account == 'zeroconf': - gajim.connections[account] = common.zeroconf.connection_zeroconf.ConnectionZeroconf(account) - else: + if account != 'zeroconf': gajim.connections[account] = common.connection.Connection(account) diff --git a/src/tooltips.py b/src/tooltips.py index cd41c22a9..f09cccbdd 100644 --- a/src/tooltips.py +++ b/src/tooltips.py @@ -508,7 +508,7 @@ class RosterTooltip(NotificationAreaTooltip): vcard_table.set_homogeneous(False) vcard_current_row = 1 properties = [] - jid_markup = '' + unicode(prim_contact.jid) + '' + jid_markup = '' + prim_contact.jid + '' properties.append((jid_markup, None)) properties.append((_('Name: '), gtkgui_helpers.escape_for_pango_markup( prim_contact.get_shown_name()))) From e1ae03d32e16db54a6a28015574e079d3ce45fae Mon Sep 17 00:00:00 2001 From: Dimitur Kirov Date: Tue, 11 Jul 2006 18:03:50 +0000 Subject: [PATCH 023/110] better var names --- src/common/zeroconf/zeroconf.py | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/common/zeroconf/zeroconf.py b/src/common/zeroconf/zeroconf.py index 5aa793156..6d44bd5ff 100755 --- a/src/common/zeroconf/zeroconf.py +++ b/src/common/zeroconf/zeroconf.py @@ -71,6 +71,7 @@ class Zeroconf: def check_jid(self, jid): # TODO: at least miranda uses bad service names(only host name), so change them - probabaly not so nice... need to find a better solution + # [dkirov] maybe turn it into host+'@'+host, instead ? if jid.find('@') == -1: return 'bad-client@' + jid else: @@ -83,14 +84,15 @@ class Zeroconf: else: return jid - def txt_array_to_dict(self,t): - l = {} + def txt_array_to_dict(self,txt_array): + items = {} - for s in t: - str = avahi.byte_array_to_string(s) - poseq = str.find('=') - l[str[:poseq]] = str[poseq+1:] - return l + for byte_array in txt_array: + # 'str' is used for string type in python + value = avahi.byte_array_to_string(byte_array) + poseq = value.find('=') + items[value[:poseq]] = value[poseq+1:] + return items def service_resolved_callback(self, interface, protocol, name, stype, domain, host, aprotocol, address, port, txt, flags): self.contacts[name] = (name, domain, interface, protocol, host, address, port, txt) From dbbf1b6b7731018f068073649244e29c77609480 Mon Sep 17 00:00:00 2001 From: Dimitur Kirov Date: Tue, 11 Jul 2006 18:17:25 +0000 Subject: [PATCH 024/110] prepare useless methos for removal --- src/common/zeroconf/connection_zeroconf.py | 400 ++------------------- 1 file changed, 32 insertions(+), 368 deletions(-) diff --git a/src/common/zeroconf/connection_zeroconf.py b/src/common/zeroconf/connection_zeroconf.py index f8e091092..827c541cb 100644 --- a/src/common/zeroconf/connection_zeroconf.py +++ b/src/common/zeroconf/connection_zeroconf.py @@ -205,7 +205,7 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): # refresh all contacts data all 10 seconds self.call_resolve_timeout = True - gobject.timeout_add(10000, self._on_resolve_timeout) + gobject.timeout_add(1000, self._on_resolve_timeout) def connect_and_init(self, show, msg, signed): self.continue_connect_info = [show, msg, signed] @@ -348,109 +348,26 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): pass def ack_subscribed(self, jid): - if not self.connection: - return - pass - - ''' - gajim.log.debug('ack\'ing subscription complete for %s' % jid) - p = common.xmpp.Presence(jid, 'subscribe') - self.connection.send(p) - ''' + gajim.debug.log('This should not happen (ack_subscribed)') def ack_unsubscribed(self, jid): - if not self.connection: - return - pass - - ''' - gajim.log.debug('ack\'ing unsubscription complete for %s' % jid) - p = common.xmpp.Presence(jid, 'unsubscribe') - self.connection.send(p) - ''' + gajim.debug.log('This should not happen (ack_unsubscribed)') def request_subscription(self, jid, msg = '', name = '', groups = [], auto_auth = False): - if not self.connection: - return - pass - - ''' - gajim.log.debug('subscription request for %s' % jid) - if auto_auth: - self.jids_for_auto_auth.append(jid) - # RFC 3921 section 8.2 - infos = {'jid': jid} - if name: - infos['name'] = name - iq = common.xmpp.Iq('set', common.xmpp.NS_ROSTER) - q = iq.getTag('query') - item = q.addChild('item', attrs = infos) - for g in groups: - item.addChild('group').setData(g) - self.connection.send(iq) - - p = common.xmpp.Presence(jid, 'subscribe') - p = self.add_sha(p) - if not msg: - msg = _('I would like to add you to my roster.') - p.setStatus(msg) - self.connection.send(p) - ''' + gajim.debug.log('This should not happen (request_subscription)') def send_authorization(self, jid): - if not self.connection: - return - pass - - ''' - p = common.xmpp.Presence(jid, 'subscribed') - p = self.add_sha(p) - self.connection.send(p) - ''' + gajim.debug.log('This should not happen (send_authorization)') def refuse_authorization(self, jid): - if not self.connection: - return - pass - - ''' - p = common.xmpp.Presence(jid, 'unsubscribed') - p = self.add_sha(p) - self.connection.send(p) - ''' + gajim.debug.log('This should not happen (refuse_authorization)') def unsubscribe(self, jid, remove_auth = True): - if not self.connection: - return - pass - - ''' - if remove_auth: - self.connection.getRoster().delItem(jid) - jid_list = gajim.config.get_per('contacts') - for j in jid_list: - if j.startswith(jid): - gajim.config.del_per('contacts', j) - else: - self.connection.getRoster().Unsubscribe(jid) - self.update_contact(jid, '', []) - ''' + gajim.debug.log('This should not happen (unsubscribe)') def unsubscribe_agent(self, agent): - if not self.connection: - return - pass - - ''' - iq = common.xmpp.Iq('set', common.xmpp.NS_REGISTER, to = agent) - iq.getTag('query').setTag('remove') - id = self.connection.getAnID() - iq.setID(id) - self.awaiting_answers[id] = (AGENT_REMOVED, agent) - self.connection.send(iq) - self.connection.getRoster().delItem(agent) - ''' + gajim.debug.log('This should not happen (unsubscribe_agent)') def update_contact(self, jid, name, groups): if self.connection: @@ -458,44 +375,16 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): groups = groups) def new_account(self, name, config, sync = False): - ''' - # If a connection already exist we cannot create a new account - if self.connection : - return - self._hostname = config['hostname'] - self.new_account_info = config - self.name = name - self.on_connect_success = self._on_new_account - self.on_connect_failure = self._on_new_account - self.connect(config) - ''' + gajim.debug.log('This should not happen (new_account)') def _on_new_account(self, con = None, con_type = None): - ''' - if not con_type: - self.dispatch('ACC_NOT_OK', - (_('Could not connect to "%s"') % self._hostname)) - return - self.on_connect_failure = None - self.connection = con - common.xmpp.features_nb.getRegInfo(con, self._hostname) - ''' + gajim.debug.log('This should not happen (_on_new_account)') def account_changed(self, new_name): self.name = new_name def request_last_status_time(self, jid, resource): - ''' - if not self.connection: - return - to_whom_jid = jid - if resource: - to_whom_jid += '/' + resource - iq = common.xmpp.Iq(to = to_whom_jid, typ = 'get', queryNS =\ - common.xmpp.NS_LAST) - self.connection.send(iq) - ''' - pass + gajim.debug.log('This should not happen (request_last_status_time)') def request_os_info(self, jid, resource): ''' @@ -511,249 +400,52 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): pass def get_settings(self): - ''' - # Get Gajim settings as described in JEP 0049 - if not self.connection: - return - iq = common.xmpp.Iq(typ='get') - iq2 = iq.addChild(name='query', namespace='jabber:iq:private') - iq3 = iq2.addChild(name='gajim', namespace='gajim:prefs') - self.connection.send(iq) - ''' - pass + gajim.debug.log('This should not happen (get_settings)') def get_bookmarks(self): - ''' - # Get Bookmarks from storage as described in JEP 0048 - self.bookmarks = [] #avoid multiple bookmarks when re-connecting - if not self.connection: - return - iq = common.xmpp.Iq(typ='get') - iq2 = iq.addChild(name='query', namespace='jabber:iq:private') - iq2.addChild(name='storage', namespace='storage:bookmarks') - self.connection.send(iq) - ''' - pass + gajim.debug.log('This should not happen (get_bookmarks)') def store_bookmarks(self): - ''' - # Send bookmarks to the storage namespace - if not self.connection: - return - iq = common.xmpp.Iq(typ='set') - iq2 = iq.addChild(name='query', namespace='jabber:iq:private') - iq3 = iq2.addChild(name='storage', namespace='storage:bookmarks') - for bm in self.bookmarks: - iq4 = iq3.addChild(name = "conference") - iq4.setAttr('jid', bm['jid']) - iq4.setAttr('autojoin', bm['autojoin']) - iq4.setAttr('name', bm['name']) - # Only add optional elements if not empty - # Note: need to handle both None and '' as empty - # thus shouldn't use "is not None" - if bm['nick']: - iq5 = iq4.setTagData('nick', bm['nick']) - if bm['password']: - iq5 = iq4.setTagData('password', bm['password']) - if bm['print_status']: - iq5 = iq4.setTagData('print_status', bm['print_status']) - self.connection.send(iq) - ''' - pass - + gajim.debug.log('This should not happen (store_bookmarks)') + def get_metacontacts(self): - ''' - # Get metacontacts list from storage as described in JEP 0049 - if not self.connection: - return - iq = common.xmpp.Iq(typ='get') - iq2 = iq.addChild(name='query', namespace='jabber:iq:private') - iq2.addChild(name='storage', namespace='storage:metacontacts') - self.connection.send(iq) - ''' - pass - - ''' - def store_metacontacts(self, tags_list): - # Send meta contacts to the storage namespace - if not self.connection: - return - iq = common.xmpp.Iq(typ='set') - iq2 = iq.addChild(name='query', namespace='jabber:iq:private') - iq3 = iq2.addChild(name='storage', namespace='storage:metacontacts') - for tag in tags_list: - for data in tags_list[tag]: - jid = data['jid'] - dict_ = {'jid': jid, 'tag': tag} - if data.has_key('order'): - dict_['order'] = data['order'] - iq3.addChild(name = 'meta', attrs = dict_) - self.connection.send(iq) - ''' - + gajim.debug.log('This should not happen (get_metacontacts)') + def send_agent_status(self, agent, ptype): - ''' - if not self.connection: - return - p = common.xmpp.Presence(to = agent, typ = ptype) - p = self.add_sha(p, ptype != 'unavailable') - self.connection.send(p) - ''' - pass - + gajim.debug.log('This should not happen (send_agent_status)') def join_gc(self, nick, room, server, password): - ''' - if not self.connection: - return - show = helpers.get_xmpp_show(STATUS_LIST[self.connected]) - if show == 'invisible': - # Never join a room when invisible - return - p = common.xmpp.Presence(to = '%s@%s/%s' % (room, server, nick), - show = show, status = self.status) - if gajim.config.get('send_sha_in_gc_presence'): - p = self.add_sha(p) - t = p.setTag(common.xmpp.NS_MUC + ' x') - if password: - t.setTagData('password', password) - self.connection.send(p) - #last date/time in history to avoid duplicate - # FIXME: This JID needs to be normalized; see #1364 - jid='%s@%s' % (room, server) - last_log = gajim.logger.get_last_date_that_has_logs(jid, is_room = True) - if last_log is None: - last_log = 0 - self.last_history_line[jid]= last_log - ''' - pass + gajim.debug.log('This should not happen (join_gc)') def send_gc_message(self, jid, msg): - ''' - if not self.connection: - return - msg_iq = common.xmpp.Message(jid, msg, typ = 'groupchat') - self.connection.send(msg_iq) - self.dispatch('MSGSENT', (jid, msg)) - ''' - pass + gajim.debug.log('This should not happen (send_gc_message)') def send_gc_subject(self, jid, subject): - ''' - if not self.connection: - return - msg_iq = common.xmpp.Message(jid,typ = 'groupchat', subject = subject) - self.connection.send(msg_iq) - ''' - pass + gajim.debug.log('This should not happen (send_gc_subject)') def request_gc_config(self, room_jid): - ''' - iq = common.xmpp.Iq(typ = 'get', queryNS = common.xmpp.NS_MUC_OWNER, - to = room_jid) - self.connection.send(iq) - ''' - pass - + gajim.debug.log('This should not happen (request_gc_config)') + def change_gc_nick(self, room_jid, nick): - ''' - if not self.connection: - return - p = common.xmpp.Presence(to = '%s/%s' % (room_jid, nick)) - p = self.add_sha(p) - self.connection.send(p) - ''' - pass + gajim.debug.log('This should not happen (change_gc_nick)') def send_gc_status(self, nick, jid, show, status): - ''' - if not self.connection: - return - if show == 'invisible': - show = 'offline' - ptype = None - if show == 'offline': - ptype = 'unavailable' - show = helpers.get_xmpp_show(show) - p = common.xmpp.Presence(to = '%s/%s' % (jid, nick), typ = ptype, - show = show, status = status) - if gajim.config.get('send_sha_in_gc_presence'): - p = self.add_sha(p, ptype != 'unavailable') - # send instantly so when we go offline, status is sent to gc before we - # disconnect from jabber server - self.connection.send(p) - ''' - pass + gajim.debug.log('This should not happen (send_gc_status)') def gc_set_role(self, room_jid, nick, role, reason = ''): - ''' - # role is for all the life of the room so it's based on nick - if not self.connection: - return - iq = common.xmpp.Iq(typ = 'set', to = room_jid, queryNS =\ - common.xmpp.NS_MUC_ADMIN) - item = iq.getTag('query').setTag('item') - item.setAttr('nick', nick) - item.setAttr('role', role) - if reason: - item.addChild(name = 'reason', payload = reason) - self.connection.send(iq) - ''' - pass + gajim.debug.log('This should not happen (gc_set_role)') def gc_set_affiliation(self, room_jid, jid, affiliation, reason = ''): - ''' - # affiliation is for all the life of the room so it's based on jid - if not self.connection: - return - iq = common.xmpp.Iq(typ = 'set', to = room_jid, queryNS =\ - common.xmpp.NS_MUC_ADMIN) - item = iq.getTag('query').setTag('item') - item.setAttr('jid', jid) - item.setAttr('affiliation', affiliation) - if reason: - item.addChild(name = 'reason', payload = reason) - self.connection.send(iq) - ''' - pass + gajim.debug.log('This should not happen (gc_set_affiliation)') def send_gc_affiliation_list(self, room_jid, list): - ''' - if not self.connection: - return - iq = common.xmpp.Iq(typ = 'set', to = room_jid, queryNS = \ - common.xmpp.NS_MUC_ADMIN) - item = iq.getTag('query') - for jid in list: - item_tag = item.addChild('item', {'jid': jid, - 'affiliation': list[jid]['affiliation']}) - if list[jid].has_key('reason') and list[jid]['reason']: - item_tag.setTagData('reason', list[jid]['reason']) - self.connection.send(iq) - ''' - pass + gajim.debug.log('This should not happen (send_gc_affiliation_list)') def get_affiliation_list(self, room_jid, affiliation): - ''' - if not self.connection: - return - iq = common.xmpp.Iq(typ = 'get', to = room_jid, queryNS = \ - common.xmpp.NS_MUC_ADMIN) - item = iq.getTag('query').setTag('item') - item.setAttr('affiliation', affiliation) - self.connection.send(iq) - ''' - pass + gajim.debug.log('This should not happen (get_affiliation_list)') def send_gc_config(self, room_jid, config): - ''' - iq = common.xmpp.Iq(typ = 'set', to = room_jid, queryNS =\ - common.xmpp.NS_MUC_OWNER) - query = iq.getTag('query') - self.build_data_from_dict(query, config) - self.connection.send(iq) - ''' - pass + gajim.debug.log('This should not happen (send_gc_config)') def gpg_passphrase(self, passphrase): if USE_GPG: @@ -790,38 +482,10 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): pass def unregister_account(self, on_remove_success): - ''' - # no need to write this as a class method and keep the value of on_remove_success - # as a class property as pass it as an argument - def _on_unregister_account_connect(con): - self.on_connect_auth = None - if self.connected > 1: - hostname = gajim.config.get_per('accounts', self.name, 'hostname') - iq = common.xmpp.Iq(typ = 'set', to = hostname) - q = iq.setTag(common.xmpp.NS_REGISTER + ' query').setTag('remove') - con.send(iq) - on_remove_success(True) - return - on_remove_success(False) - if self.connected == 0: - self.on_connect_auth = _on_unregister_account_connect - self.connect_and_auth() - else: - _on_unregister_account_connect(self.connection) - ''' - pass + gajim.debug.log('This should not happen (unregister_account)') def send_invite(self, room, to, reason=''): - ''' - # sends invitation - message=common.xmpp.Message(to = room) - c = message.addChild(name = 'x', namespace = common.xmpp.NS_MUC_USER) - c = c.addChild(name = 'invite', attrs={'to' : to}) - if reason != '': - c.setTagData('reason', reason) - self.connection.send(message) - ''' - pass + gajim.debug.log('This should not happen (send_invite)') def send_keepalive(self): # nothing received for the last foo seconds (60 secs by default) From d7719e73b36fcba9e05a60361e8006bcb06d1290 Mon Sep 17 00:00:00 2001 From: Stefan Bethge Date: Thu, 27 Jul 2006 20:36:21 +0000 Subject: [PATCH 025/110] display full name on roster if available --- src/common/zeroconf/client_zeroconf.py | 14 +++++++++++ .../zeroconf/connection_handlers_zeroconf.py | 1 + src/common/zeroconf/connection_zeroconf.py | 15 ++++++----- src/common/zeroconf/roster_zeroconf.py | 25 +++++++++++++++++-- src/common/zeroconf/zeroconf.py | 18 ++++++++++++- 5 files changed, 62 insertions(+), 11 deletions(-) diff --git a/src/common/zeroconf/client_zeroconf.py b/src/common/zeroconf/client_zeroconf.py index d189a7d22..e487ec5e6 100644 --- a/src/common/zeroconf/client_zeroconf.py +++ b/src/common/zeroconf/client_zeroconf.py @@ -1,3 +1,17 @@ +## common/zeroconf/client_zeroconf.py +## +## Copyright (C) 2006 Stefan Bethge +## +## This program is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published +## by the Free Software Foundation; version 2 only. +## +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. +## + from common.zeroconf import roster_zeroconf diff --git a/src/common/zeroconf/connection_handlers_zeroconf.py b/src/common/zeroconf/connection_handlers_zeroconf.py index d73c385ba..68cc14a41 100644 --- a/src/common/zeroconf/connection_handlers_zeroconf.py +++ b/src/common/zeroconf/connection_handlers_zeroconf.py @@ -6,6 +6,7 @@ ## - Nikos Kouremenos ## - Dimitur Kirov ## - Travis Shirk +## - Stefan Bethge ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published diff --git a/src/common/zeroconf/connection_zeroconf.py b/src/common/zeroconf/connection_zeroconf.py index 827c541cb..561980dda 100644 --- a/src/common/zeroconf/connection_zeroconf.py +++ b/src/common/zeroconf/connection_zeroconf.py @@ -1,19 +1,21 @@ -## common/connection_zeroconf.py +## common/zeroconf/connection_zeroconf.py ## ## Contributors for this file: ## - Yann Le Boulanger ## - Nikos Kouremenos ## - Dimitur Kirov ## - Travis Shirk +## - Stefan Bethge ## ## Copyright (C) 2003-2004 Yann Le Boulanger ## Vincent Hanquez -## Copyright (C) 2005 Yann Le Boulanger +## Copyright (C) 2006 Yann Le Boulanger ## Vincent Hanquez ## Nikos Kouremenos ## Dimitur Kirov ## Travis Shirk ## Norman Rasmussen +## Stefan Bethge ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published @@ -121,14 +123,11 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): '''always passes account name as first param''' self.put_event((event, data)) - def _reconnect(self): gajim.log.debug('reconnect') signed = self.get_signed_msg(self.status) - - def quit(self, kill_core): if kill_core and self.connected > 1: @@ -172,9 +171,9 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): # callbacks called from zeroconf def _on_new_service(self,jid): - self.roster.setItem(jid) + self.roster.setItem(jid) display_jid = self.zeroconf.check_jid(jid) - self.dispatch('ROSTER_INFO', (display_jid, display_jid, 'both', 'no', self.roster.getGroups(jid))) + self.dispatch('ROSTER_INFO', (display_jid, self.roster.getName(jid), 'both', 'no', self.roster.getGroups(jid))) self.dispatch('NOTIFY', (display_jid, self.roster.getStatus(jid), self.roster.getMessage(jid), 'local', 0, None, 0)) @@ -198,7 +197,7 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): #display contacts already detected and resolved for jid in self.roster.keys(): display_jid = self.zeroconf.check_jid(jid) - self.dispatch('ROSTER_INFO', (display_jid, display_jid, 'both', 'no', self.roster.getGroups(jid))) + self.dispatch('ROSTER_INFO', (display_jid, self.roster.getName(jid), 'both', 'no', self.roster.getGroups(jid))) self.dispatch('NOTIFY', (display_jid, self.roster.getStatus(jid), self.roster.getMessage(jid), 'local', 0, None, 0)) self.connected = STATUS_LIST.index(show) diff --git a/src/common/zeroconf/roster_zeroconf.py b/src/common/zeroconf/roster_zeroconf.py index 3a428a38c..1a8a3e351 100644 --- a/src/common/zeroconf/roster_zeroconf.py +++ b/src/common/zeroconf/roster_zeroconf.py @@ -1,3 +1,18 @@ +## common/zeroconf/roster_zeroconf.py +## +## Copyright (C) 2006 Stefan Bethge +## +## This program is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published +## by the Free Software Foundation; version 2 only. +## +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. +## + + from common.zeroconf import zeroconf class Roster: @@ -36,7 +51,6 @@ class Roster: = self.zeroconf.get_contact(jid) self._data[jid]={} - self._data[jid]['name']=jid[:jid.find('@')] self._data[jid]['ask'] = 'no' #? self._data[jid]['subscription'] = 'both' self._data[jid]['groups'] = [] @@ -49,6 +63,10 @@ class Roster: status = txt_dict['status'] else: status = '' + if txt_dict.has_key('1st') and txt_dict.has_key('last'): + self._data[jid]['name']=txt_dict['1st']+' '+txt_dict['last'] + else: + self._data[jid]['name']=jid if status == 'avail': status = 'online' self._data[jid]['txt_dict'] = txt_dict if not self._data[jid]['txt_dict'].has_key('msg'): @@ -91,7 +109,10 @@ class Roster: def getGroups(self, jid): return self._data[jid]['groups'] - + def getName(self, jid): + if self._data.has_key(jid): + return self._data[jid]['name'] + def getStatus(self, jid): if self._data.has_key(jid): return self._data[jid]['status'] diff --git a/src/common/zeroconf/zeroconf.py b/src/common/zeroconf/zeroconf.py index 6d44bd5ff..ccab0430d 100755 --- a/src/common/zeroconf/zeroconf.py +++ b/src/common/zeroconf/zeroconf.py @@ -1,3 +1,17 @@ +## common/zeroconf/zeroconf.py +## +## Copyright (C) 2006 Stefan Bethge +## +## This program is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published +## by the Free Software Foundation; version 2 only. +## +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. +## + import os import sys import socket @@ -95,6 +109,8 @@ class Zeroconf: return items def service_resolved_callback(self, interface, protocol, name, stype, domain, host, aprotocol, address, port, txt, flags): + print "Service data for service '%s' in domain '%s' on %i.%i:" % (name, domain, interface, protocol) + print "\tHost %s (%s), port %i, TXT data: %s" % (host, address, port, str(avahi.txt_array_to_string_array(txt))) self.contacts[name] = (name, domain, interface, protocol, host, address, port, txt) self.new_serviceCB(name) @@ -155,7 +171,7 @@ class Zeroconf: self.txt['port.p2pj'] = self.port self.txt['version'] = 1 - self.txt['textvers'] = 1 + self.txt['txtvers'] = 1 # replace gajim's status messages with proper ones if self.txt.has_key('status'): From da06dfb6caa59b2a1cdd64af3d00d4d1104783c0 Mon Sep 17 00:00:00 2001 From: Stefan Bethge Date: Tue, 1 Aug 2006 00:44:51 +0000 Subject: [PATCH 026/110] Improve behaviour when no avahi-daemon is present or being stopped while running --- src/common/zeroconf/connection_zeroconf.py | 54 +++++++----- src/common/zeroconf/zeroconf.py | 99 ++++++++++++++-------- 2 files changed, 95 insertions(+), 58 deletions(-) diff --git a/src/common/zeroconf/connection_zeroconf.py b/src/common/zeroconf/connection_zeroconf.py index 561980dda..072c9b674 100644 --- a/src/common/zeroconf/connection_zeroconf.py +++ b/src/common/zeroconf/connection_zeroconf.py @@ -189,23 +189,26 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): if self.connection: return self.connection, '' - self.zeroconf.connect() - self.connection = client_zeroconf.ClientZeroconf(self.zeroconf) - self.roster = self.connection.getRoster() - self.dispatch('ROSTER', self.roster) + if self.zeroconf.connect(): + self.connection = client_zeroconf.ClientZeroconf(self.zeroconf) + self.roster = self.connection.getRoster() + self.dispatch('ROSTER', self.roster) - #display contacts already detected and resolved - for jid in self.roster.keys(): - display_jid = self.zeroconf.check_jid(jid) - self.dispatch('ROSTER_INFO', (display_jid, self.roster.getName(jid), 'both', 'no', self.roster.getGroups(jid))) - self.dispatch('NOTIFY', (display_jid, self.roster.getStatus(jid), self.roster.getMessage(jid), 'local', 0, None, 0)) + #display contacts already detected and resolved + for jid in self.roster.keys(): + display_jid = self.zeroconf.check_jid(jid) + self.dispatch('ROSTER_INFO', (display_jid, self.roster.getName(jid), 'both', 'no', self.roster.getGroups(jid))) + self.dispatch('NOTIFY', (display_jid, self.roster.getStatus(jid), self.roster.getMessage(jid), 'local', 0, None, 0)) - self.connected = STATUS_LIST.index(show) + self.connected = STATUS_LIST.index(show) + + # refresh all contacts data every second + self.call_resolve_timeout = True + gobject.timeout_add(1000, self._on_resolve_timeout) + else: + pass + # display visual notification that we could not connect to avahi - # refresh all contacts data all 10 seconds - self.call_resolve_timeout = True - gobject.timeout_add(1000, self._on_resolve_timeout) - def connect_and_init(self, show, msg, signed): self.continue_connect_info = [show, msg, signed] @@ -230,36 +233,41 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): if not show in STATUS_LIST: return -1 + check = True #to check for errors from zeroconf + # 'connect' if show != 'offline' and not self.connected: self.on_purpose = False self.connect_and_init(show, msg, '') if show != 'invisible': - self.zeroconf.announce() + check = self.zeroconf.announce() else: self.connected = STATUS_LIST.index(show) # 'disconnect' elif show == 'offline' and self.connected: self.connected = 0 - self.dispatch('STATUS', 'offline') self.disconnect() + self.dispatch('STATUS', 'offline') # update status elif show != 'offline' and self.connected: was_invisible = self.connected == STATUS_LIST.index('invisible') self.connected = STATUS_LIST.index(show) if show == 'invisible': - self.zeroconf.remove_announce() - return - if was_invisible: - self.zeroconf.announce() - if self.connection: + check = check and self.zeroconf.remove_announce() + elif was_invisible: + check = check and self.zeroconf.announce() + if self.connection and not show == 'invisible': txt = {} txt['status'] = show txt['msg'] = msg - self.zeroconf.update_txt(txt) - self.dispatch('STATUS', show) + check = check and self.zeroconf.update_txt(txt) + + if check: + self.dispatch('STATUS', show) + else: + self.dispatch('STATUS', 'offline') def get_status(self): return STATUS_LIST[self.connected] diff --git a/src/common/zeroconf/zeroconf.py b/src/common/zeroconf/zeroconf.py index ccab0430d..a1ac54d5f 100755 --- a/src/common/zeroconf/zeroconf.py +++ b/src/common/zeroconf/zeroconf.py @@ -42,7 +42,8 @@ class Zeroconf: self.service_browsers = {} self.contacts = {} # all current local contacts with data self.entrygroup = None - + self.connected = False + ## handlers for dbus callbacks # error handler - maybe replace with gui version/gajim facilities @@ -85,7 +86,9 @@ class Zeroconf: def check_jid(self, jid): # TODO: at least miranda uses bad service names(only host name), so change them - probabaly not so nice... need to find a better solution + # this is necessary so they don't get displayed as a transport # [dkirov] maybe turn it into host+'@'+host, instead ? + # [sb] that would mean we can't do recreate below if jid.find('@') == -1: return 'bad-client@' + jid else: @@ -150,8 +153,8 @@ class Zeroconf: # the name is already present, so recreate if state == avahi.ENTRY_GROUP_COLLISION: self.service_add_fail_callback('Local name collision, recreating.') - -# elif state == avahi.ENTRY_GROUP_FAILURE: + elif state == avahi.ENTRY_GROUP_FAILURE: + print 'zeroconf.py: ENTRY_GROUP_FAILURE reached(that should not happen)' # make zeroconf-valid names def replace_show(self, show): @@ -164,34 +167,51 @@ class Zeroconf: return show def create_service(self): - if not self.entrygroup: - # create an EntryGroup for publishing - self.entrygroup = dbus.Interface(self.bus.get_object(avahi.DBUS_NAME, self.server.EntryGroupNew()), avahi.DBUS_INTERFACE_ENTRY_GROUP) - self.entrygroup.connect_to_signal('StateChanged', self.entrygroup_state_changed_callback) + try: + if not self.entrygroup: + # create an EntryGroup for publishing + self.entrygroup = dbus.Interface(self.bus.get_object(avahi.DBUS_NAME, self.server.EntryGroupNew()), avahi.DBUS_INTERFACE_ENTRY_GROUP) + self.entrygroup.connect_to_signal('StateChanged', self.entrygroup_state_changed_callback) - self.txt['port.p2pj'] = self.port - self.txt['version'] = 1 - self.txt['txtvers'] = 1 + self.txt['port.p2pj'] = self.port + self.txt['version'] = 1 + self.txt['txtvers'] = 1 + + # replace gajim's show messages with compatible ones + if self.txt.has_key('status'): + self.txt['status'] = self.replace_show(self.txt['status']) + + # print "Publishing service '%s' of type %s" % (self.name, self.stype) + self.entrygroup.AddService(avahi.IF_UNSPEC, avahi.PROTO_UNSPEC, dbus.UInt32(0), self.name, self.stype, '', '', self.port, avahi.dict_to_txt_array(self.txt), reply_handler=self.service_added_callback, error_handler=self.service_add_fail_callback) + self.entrygroup.Commit(reply_handler=self.service_committed_callback, error_handler=self.print_error_callback) + + return True - # replace gajim's status messages with proper ones - if self.txt.has_key('status'): - self.txt['status'] = self.replace_show(self.txt['status']) - - # print "Publishing service '%s' of type %s" % (self.name, self.stype) - self.entrygroup.AddService(avahi.IF_UNSPEC, avahi.PROTO_UNSPEC, dbus.UInt32(0), self.name, self.stype, '', '', self.port, avahi.dict_to_txt_array(self.txt), reply_handler=self.service_added_callback, error_handler=self.service_add_fail_callback) - self.entrygroup.Commit(reply_handler=self.service_committed_callback, error_handler=self.print_error_callback) - + except dbus.dbus_bindings.DBusException, e: + gajim.log.debug(str(e)) + return False + def announce(self): - state = self.server.GetState() + if self.connected: + state = self.server.GetState() - if state == avahi.SERVER_RUNNING: - self.create_service() + if state == avahi.SERVER_RUNNING: + self.create_service() + return True + else: + return False def remove_announce(self): - if self.entrygroup: - self.entrygroup.Reset() - self.entrygroup.Free() - self.entrygroup = None + try: + if self.entrygroup.GetState() != avahi.ENTRY_GROUP_FAILURE: + self.entrygroup.Reset() + self.entrygroup.Free() + self.entrygroup = None + return True + else: + return False + except dbus.dbus_bindings.DBusException, e: + print "zeroconf.py: Can't remove service, avahi daemon not running?" def browse_domain(self, interface, protocol, domain): self.new_service_type(interface, protocol, self.stype, domain, '') @@ -199,15 +219,20 @@ class Zeroconf: # connect to dbus def connect(self): self.bus = dbus.SystemBus() - self.server = dbus.Interface(self.bus.get_object(avahi.DBUS_NAME, \ - avahi.DBUS_PATH_SERVER), avahi.DBUS_INTERFACE_SERVER) try: + # is there any way to check, if a dbus name exists? + # that might make the Introspect Error go away... + self.server = dbus.Interface(self.bus.get_object(avahi.DBUS_NAME, \ + avahi.DBUS_PATH_SERVER), avahi.DBUS_INTERFACE_SERVER) + self.server.connect_to_signal('StateChanged', self.server_state_changed_callback) except dbus.dbus_bindings.DBusException, e: # Avahi service is not present gajim.log.debug(str(e)) - self.remove_announce() - return + return False + + self.connected = True + # start browsing if self.domain is None: # Explicitly browse .local @@ -222,17 +247,20 @@ class Zeroconf: else: self.browse_domain(avahi.IF_UNSPEC, avahi.PROTO_UNSPEC, domain) + return True + def disconnect(self): + self.connected = False self.remove_announce() - # refresh data manually - really ok or too much traffic? + # refresh txt data of all contacts manually (no callback available) def resolve_all(self): for val in self.contacts.values(): #val:(name, domain, interface, protocol, host, address, port, txt) self.server.ResolveService(int(val[2]), int(val[3]), val[0], \ self.stype, val[1], avahi.PROTO_UNSPEC, dbus.UInt32(0),\ reply_handler=self.service_resolved_all_callback, error_handler=self.print_error_callback) - + def get_contacts(self): return self.contacts @@ -249,11 +277,12 @@ class Zeroconf: self.txt['status'] = self.replace_show(txt['status']) txt = avahi.dict_to_txt_array(self.txt) + if self.entrygroup: + self.entrygroup.UpdateServiceTxt(avahi.IF_UNSPEC, avahi.PROTO_UNSPEC, dbus.UInt32(0), self.name, self.stype,'', txt, reply_handler=self.service_updated_callback, error_handler=self.print_error_callback) + return True + else: + return False - self.entrygroup.UpdateServiceTxt(avahi.IF_UNSPEC, avahi.PROTO_UNSPEC, dbus.UInt32(0), self.name, self.stype,'', txt, reply_handler=self.service_updated_callback, error_handler=self.print_error_callback) -# self.entrygroup.Commit() # TODO: necessary? - - def send (self, msg, sock): print 'send:'+msg totalsent = 0 From 9ac7e753f1c8711e4b6e4cc333ec1b624c5e2b7c Mon Sep 17 00:00:00 2001 From: Stefan Bethge Date: Wed, 2 Aug 2006 00:04:47 +0000 Subject: [PATCH 027/110] make sending compatible with ichat and adium --- src/common/zeroconf/connection_zeroconf.py | 5 ++- src/common/zeroconf/zeroconf.py | 40 +++++++++++++--------- 2 files changed, 26 insertions(+), 19 deletions(-) diff --git a/src/common/zeroconf/connection_zeroconf.py b/src/common/zeroconf/connection_zeroconf.py index 072c9b674..1ff695585 100644 --- a/src/common/zeroconf/connection_zeroconf.py +++ b/src/common/zeroconf/connection_zeroconf.py @@ -232,7 +232,7 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): def change_status(self, show, msg, sync = False, auto = False): if not show in STATUS_LIST: return -1 - + check = True #to check for errors from zeroconf # 'connect' @@ -307,7 +307,6 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): msg_iq = common.xmpp.Message(to = fjid, body = msgtxt, typ = 'normal') - if msgenc: msg_iq.setTag(common.xmpp.NS_ENCRYPTED + ' x').setData(msgenc) @@ -342,7 +341,7 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): kind = 'single_msg_sent' gajim.logger.write(kind, jid, log_msg) - self.zeroconf.send_message(jid, msgtxt) + self.zeroconf.send_message(jid, msgtxt, type) self.dispatch('MSGSENT', (jid, msg, keyID)) diff --git a/src/common/zeroconf/zeroconf.py b/src/common/zeroconf/zeroconf.py index a1ac54d5f..b3f534b23 100755 --- a/src/common/zeroconf/zeroconf.py +++ b/src/common/zeroconf/zeroconf.py @@ -43,6 +43,7 @@ class Zeroconf: self.contacts = {} # all current local contacts with data self.entrygroup = None self.connected = False + self.announced = False ## handlers for dbus callbacks @@ -158,12 +159,10 @@ class Zeroconf: # make zeroconf-valid names def replace_show(self, show): - if show == 'chat' or show == '': - show = 'online' + if show == 'chat' or show == 'online' or show == '': + show = 'avail' elif show == 'xa': show = 'away' - elif show == 'online': - show = 'avail' return show def create_service(self): @@ -197,16 +196,20 @@ class Zeroconf: if state == avahi.SERVER_RUNNING: self.create_service() + self.announced = True return True else: return False def remove_announce(self): + if self.announced == False: + return False try: if self.entrygroup.GetState() != avahi.ENTRY_GROUP_FAILURE: self.entrygroup.Reset() self.entrygroup.Free() self.entrygroup = None + self.announced = False return True else: return False @@ -250,8 +253,9 @@ class Zeroconf: return True def disconnect(self): - self.connected = False - self.remove_announce() + if self.connected: + self.connected = False + self.remove_announce() # refresh txt data of all contacts manually (no callback available) def resolve_all(self): @@ -292,26 +296,30 @@ class Zeroconf: raise RuntimeError, "socket connection broken" totalsent = totalsent + sent - def send_message(self, jid, msg): + def send_message(self, jid, msg, type = 'chat'): print 'zeroconf.py: send_message:'+ msg jid = self.recreate_bad_jid(jid) sock = socket.socket ( socket.AF_INET, socket.SOCK_STREAM ) #sock.setblocking(False) - sock.connect ( ( self.contacts[jid][4], self.contacts[jid][6] ) ) - - try : recvd = sock.recv(16384) - except: recvd = '' - - print 'receive:' + recvd - - self.send("", sock) - self.send("" + msg + "" + msg +"", sock) + # jep-0174 wants clients to use the port from the srv record + # but at least adium uses the txt record (port.p2pj) + #sock.connect ( ( self.contacts[jid][4], self.contacts[jid][6] ) ) + + sock.connect ( ( self.contacts[jid][4], int((self.txt_array_to_dict(self.contacts[jid][7]))['port.p2pj']) ) ) + #TODO: better use an xml-class for this... + self.send("", sock) + try: recvd = sock.recv(16384) except: recvd = '' print 'receive:' + recvd + + #adium requires the html parts + self.send("" + msg + "" + msg +"", sock) + +# self.send("" + msg + "", sock) self.send('', sock) sock.close() From 61dab0d59abf005c977d0449c5cd48b42bb012e8 Mon Sep 17 00:00:00 2001 From: Stefan Bethge Date: Wed, 13 Sep 2006 18:49:34 +0000 Subject: [PATCH 028/110] client code uses common.xmpp.Message to build xml --- src/common/zeroconf/zeroconf.py | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/src/common/zeroconf/zeroconf.py b/src/common/zeroconf/zeroconf.py index b3f534b23..e1bf4fbed 100755 --- a/src/common/zeroconf/zeroconf.py +++ b/src/common/zeroconf/zeroconf.py @@ -16,6 +16,8 @@ import os import sys import socket from common import gajim +from common import xmpp + try: import avahi, gobject, dbus except ImportError: @@ -303,23 +305,30 @@ class Zeroconf: sock = socket.socket ( socket.AF_INET, socket.SOCK_STREAM ) #sock.setblocking(False) - # jep-0174 wants clients to use the port from the srv record - # but at least adium uses the txt record (port.p2pj) - #sock.connect ( ( self.contacts[jid][4], self.contacts[jid][6] ) ) - - sock.connect ( ( self.contacts[jid][4], int((self.txt_array_to_dict(self.contacts[jid][7]))['port.p2pj']) ) ) + sock.connect ( ( self.contacts[jid][4], self.contacts[jid][6] ) ) + + print (self.txt_array_to_dict(self.contacts[jid][7]))['port.p2pj'] + + #was for adium which uses the txt record + #sock.connect ( ( self.contacts[jid][5], int((self.txt_array_to_dict(self.contacts[jid][7]))['port.p2pj']) ) ) - #TODO: better use an xml-class for this... self.send("", sock) try: recvd = sock.recv(16384) except: recvd = '' print 'receive:' + recvd - #adium requires the html parts - self.send("" + msg + "" + msg +"", sock) + message = xmpp.Message(typ=type, to=jid, frm=self.name) + message.setBody(msg) +# no html for now, necessary for anything else but adium? +# html = message.getTag('html', namespace = 'html://www.w3.org/1999/xhtml') +# html.addChild(... + message.addChild(name = 'x', namespace = xmpp.NS_EVENT).addChild(name = 'composing') -# self.send("" + msg + "", sock) + self.send(str(message),sock) + + #adium requires the html parts + #self.send("" + msg + "" + msg +"", sock) self.send('', sock) sock.close() @@ -333,7 +342,7 @@ class Zeroconf: zeroconf.connect() zeroconf.txt['1st'] = 'foo' zeroconf.txt['last'] = 'bar' - zeroconfptxt['email'] = foo@bar.org + zeroconf.txt['email'] = foo@bar.org zeroconf.announce() # updating after announcing From 2b3120244fe0314eebe03f6b4147b2c67cdeaacb Mon Sep 17 00:00:00 2001 From: Stefan Bethge Date: Thu, 14 Sep 2006 16:48:03 +0000 Subject: [PATCH 029/110] merged trunk r6780 removed i18n imports from zeroconf/connection files --- src/Makefile | 11 +- src/advanced.py | 9 +- src/chat_control.py | 369 ++-- src/common/GnuPG.py | 2 +- src/common/Makefile | 12 +- src/common/check_paths.py | 9 +- src/common/config.py | 92 +- src/common/connection.py | 124 +- src/common/connection_handlers.py | 247 ++- src/common/contacts.py | 9 +- src/common/events.py | 233 +++ src/common/exceptions.py | 3 - src/common/fuzzyclock.py | 134 ++ src/common/gajim.py | 39 +- src/common/helpers.py | 123 +- src/common/i18n.py | 20 +- src/common/logger.py | 220 ++- src/common/optparser.py | 66 +- src/common/proxy65_manager.py | 3 + src/common/socks5.py | 15 +- src/common/xmpp/client_nb.py | 11 +- src/common/xmpp/dispatcher_nb.py | 1 + src/common/xmpp/features.py | 3 + src/common/xmpp/features_nb.py | 80 +- src/common/xmpp/protocol.py | 11 +- src/common/xmpp/transports_nb.py | 14 +- .../zeroconf/connection_handlers_zeroconf.py | 2 - src/common/zeroconf/connection_zeroconf.py | 3 - src/config.py | 243 ++- src/conversation_textview.py | 118 +- src/dbus_support.py | 2 - src/dialogs.py | 1515 +++++++++++++---- src/disco.py | 31 +- src/filetransfers_window.py | 58 +- src/gajim-remote.py | 74 +- src/gajim.py | 418 +++-- src/gajim_themes_window.py | 7 +- src/groupchat_control.py | 242 +-- src/gtkexcepthook.py | 6 +- src/gtkgui_helpers.py | 87 +- src/history_manager.py | 10 +- src/history_window.py | 17 +- src/message_control.py | 22 +- src/message_textview.py | 4 +- src/message_window.py | 52 +- src/migrate_logs_to_dot9_db.py | 271 --- src/notify.py | 155 +- src/profile_window.py | 283 +++ src/remote_control.py | 148 +- src/roster_window.py | 1086 ++++++++---- src/systray.py | 88 +- src/systraywin32.py | 62 +- src/tooltips.py | 65 +- src/vcard.py | 291 +--- 54 files changed, 4924 insertions(+), 2296 deletions(-) create mode 100644 src/common/events.py create mode 100755 src/common/fuzzyclock.py delete mode 100755 src/migrate_logs_to_dot9_db.py create mode 100644 src/profile_window.py diff --git a/src/Makefile b/src/Makefile index 6b40fc1df..7d5053885 100644 --- a/src/Makefile +++ b/src/Makefile @@ -1,21 +1,24 @@ # Set the C flags to include the GTK+ and Python libraries PYTHON ?= python PYTHONVER = `$(PYTHON) -c 'import sys; print sys.version[:3]'` -CFLAGS = `pkg-config --cflags gtk+-2.0 pygtk-2.0` -fPIC -I/usr/include/python$(PYTHONVER) -I. -LDFLAGS = `pkg-config --libs gtk+-2.0 pygtk-2.0` -lpython$(PYTHONVER) +gtk_CFLAGS = `pkg-config --cflags gtk+-2.0 pygtk-2.0` -fPIC -I/usr/include/python$(PYTHONVER) -I. +gtk_LDFLAGS = `pkg-config --libs gtk+-2.0 pygtk-2.0` -lpython$(PYTHONVER) all: trayicon.so gtkspell.so # Build the shared objects trayicon.so: trayicon.o eggtrayicon.o trayiconmodule.o - $(CC) -shared $^ -o $@ $(LDFLAGS) + $(CC) -shared $^ -o $@ $(LDFLAGS) $(gtk_LDFLAGS) gtkspell.so: - $(CC) $(OPTFLAGS) $(CFLAGS) `pkg-config --cflags gtkspell-2.0` -shared gtkspellmodule.c $^ -o $@ $(LDFLAGS) `pkg-config --libs gtkspell-2.0` + $(CC) $(OPTFLAGS) $(CFLAGS) $(LDFLAGS) $(gtk_CFLAGS) $(gtk_LDFLAGS) `pkg-config --libs --cflags gtkspell-2.0` -shared gtkspellmodule.c $^ -o $@ # The path to the GTK+ python types DEFS=`pkg-config --variable=defsdir pygtk-2.0` +%.o: %.c + $(CC) -o $@ -c $< $(CFLAGS) $(gtk_CFLAGS) + # Generate the C wrapper from the defs and our override file trayicon.c: trayicon.defs trayicon.override pygtk-codegen-2.0 --prefix trayicon \ diff --git a/src/advanced.py b/src/advanced.py index c58917bb5..76bf6ed4f 100644 --- a/src/advanced.py +++ b/src/advanced.py @@ -25,16 +25,9 @@ ## import gtk -import gtk.glade import gtkgui_helpers from common import gajim -from common import i18n - -_ = i18n._ -APP = i18n.APP -gtk.glade.bindtextdomain(APP, i18n.DIR) -gtk.glade.textdomain(APP) ( OPT_TYPE, @@ -53,6 +46,8 @@ class AdvancedConfigurationWindow: def __init__(self): self.xml = gtkgui_helpers.get_glade('advanced_configuration_window.glade') self.window = self.xml.get_widget('advanced_configuration_window') + self.window.set_transient_for( + gajim.interface.instances['preferences'].window) self.entry = self.xml.get_widget('advanced_entry') self.desc_label = self.xml.get_widget('advanced_desc_label') self.restart_label = self.xml.get_widget('restart_label') diff --git a/src/chat_control.py b/src/chat_control.py index c1092fea8..b9cf730a7 100644 --- a/src/chat_control.py +++ b/src/chat_control.py @@ -18,13 +18,13 @@ import os import time import gtk -import gtk.glade import pango import gobject import gtkgui_helpers import message_control import dialogs import history_window +import notify from common import gajim from common import helpers @@ -41,11 +41,14 @@ try: except: HAS_GTK_SPELL = False -#################### -# FIXME: Can't this stuff happen once? -from common import i18n -_ = i18n._ -APP = i18n.APP + +# the next script, executed in the "po" directory, +# generates the following list. +##!/bin/sh +#LANG=$(for i in *.po; do j=${i/.po/}; echo -n "_('"$j"')":" '"$j"', " ; done) +#echo "{_('en'):'en'",$LANG"}" +langs = {_('English'): 'en', _('Bulgarian'): 'bg', _('Briton'): 'br', _('Czech'): 'cs', _('German'): 'de', _('Greek'): 'el', _('Esperanto'): 'eo', _('Spanish'): 'es', _('Basc'): 'eu', _('French'): 'fr', _('Croatian'): 'hr', _('Italian'): 'it', _('Norvegian b'): 'nb', _('Dutch'): 'nl', _('Norvegian'): 'no', _('Polish'): 'pl', _('Portuguese'): 'pt', _('Brazilian Portuguese'): 'pt_BR', _('Russian'): 'ru', _('Slovak'): 'sk', _('Swedish'): 'sv', _('Chinese (Ch)'): 'zh_CN'} + ################################################################################ class ChatControlBase(MessageControl): @@ -56,7 +59,7 @@ class ChatControlBase(MessageControl): theme = gajim.config.get('roster_theme') bannerfont = gajim.config.get_per('themes', theme, 'bannerfont') bannerfontattrs = gajim.config.get_per('themes', theme, 'bannerfontattrs') - + if bannerfont: font = pango.FontDescription(bannerfont) else: @@ -67,16 +70,24 @@ class ChatControlBase(MessageControl): font.set_weight(pango.WEIGHT_HEAVY) if 'I' in bannerfontattrs: font.set_style(pango.STYLE_ITALIC) - + font_attrs = 'font_desc="%s"' % font.to_string() - + # in case there is no font specified we use x-large font size if font.get_size() == 0: font_attrs = '%s size="x-large"' % font_attrs font.set_weight(pango.WEIGHT_NORMAL) font_attrs_small = 'font_desc="%s" size="small"' % font.to_string() return (font_attrs, font_attrs_small) - + + def get_nb_unread(self): + jid = self.contact.jid + if self.resource: + jid += '/' + self.resource + type_ = self.type_id + return len(gajim.events.get_events(self.account, jid, ['printed_' + type_, + type_])) + def draw_banner(self): self._paint_banner() self._update_banner_state_image() @@ -97,14 +108,15 @@ class ChatControlBase(MessageControl): event_keymod): pass # Derived should implement this rather than connecting to the event itself. - def __init__(self, type_id, parent_win, widget_name, display_names, contact, acct, resource = None): + def __init__(self, type_id, parent_win, widget_name, display_names, contact, + acct, resource = None): MessageControl.__init__(self, type_id, parent_win, widget_name, display_names, contact, acct, resource = resource); # when/if we do XHTML we will but formatting buttons back widget = self.xml.get_widget('emoticons_button') id = widget.connect('clicked', self.on_emoticons_button_clicked) self.handlers[id] = widget - + id = self.widget.connect('key_press_event', self._on_keypress_event) self.handlers[id] = self.widget @@ -112,10 +124,10 @@ class ChatControlBase(MessageControl): id = widget.connect('button-press-event', self._on_banner_eventbox_button_press_event) self.handlers[id] = widget - + # Create textviews and connect signals self.conv_textview = ConversationTextview(self.account) - + self.conv_scrolledwindow = self.xml.get_widget( 'conversation_scrolledwindow') self.conv_scrolledwindow.add(self.conv_textview.tv) @@ -127,20 +139,23 @@ class ChatControlBase(MessageControl): self.msg_scrolledwindow = self.xml.get_widget('message_scrolledwindow') self.msg_textview = MessageTextView() id = self.msg_textview.connect('mykeypress', - self._on_message_textview_mykeypress_event) + self._on_message_textview_mykeypress_event) self.handlers[id] = self.msg_textview self.msg_scrolledwindow.add(self.msg_textview) id = self.msg_textview.connect('key_press_event', - self._on_message_textview_key_press_event) + self._on_message_textview_key_press_event) self.handlers[id] = self.msg_textview id = self.msg_textview.connect('size-request', self.size_request) self.handlers[id] = self.msg_textview + id = self.msg_textview.connect('populate_popup', + self.on_msg_textview_populate_popup) + self.handlers[id] = self.msg_textview + self.update_font() # Hook up send button widget = self.xml.get_widget('send_button') - id = widget.connect('clicked', - self._on_send_button_clicked) + id = widget.connect('clicked', self._on_send_button_clicked) self.handlers[id] = widget # the following vars are used to keep history of user's messages @@ -149,8 +164,6 @@ class ChatControlBase(MessageControl): self.typing_new = False self.orig_msg = '' - self.nb_unread = 0 - # Emoticons menu # set image no matter if user wants at this time emoticons or not # (so toggle works ok) @@ -162,8 +175,27 @@ class ChatControlBase(MessageControl): # Attach speller if gajim.config.get('use_speller') and HAS_GTK_SPELL: try: - gtkspell.Spell(self.msg_textview) - except gobject.GError, msg: + spell = gtkspell.Spell(self.msg_textview) + # loop removing non-existant dictionaries + # iterating on a copy + for lang in dict(langs): + try: + spell.set_language(langs[lang]) + except: + del langs[lang] + # now set the one the user selected + per_type = 'contacts' + if self.type_id == message_control.TYPE_GC: + per_type = 'rooms' + lang = gajim.config.get_per(per_type, self.contact.jid, + 'speller_language') + if not lang: + # use the default one + lang = gajim.config.get('speller_language') + if lang: + self.msg_textview.lang = lang + spell.set_language(lang) + except (gobject.GError, RuntimeError), msg: #FIXME: add a ui for this use spell.set_language() dialogs.ErrorDialog(unicode(msg), _('If that is not your language ' 'for which you want to highlight misspelled words, then please ' @@ -175,6 +207,48 @@ class ChatControlBase(MessageControl): self.style_event_id = 0 self.conv_textview.tv.show() + + # For JEP-0172 + self.user_nick = None + + def on_msg_textview_populate_popup(self, textview, menu): + '''we override the default context menu and we prepend an option to switch languages''' + def _on_select_dictionary(widget, lang): + per_type = 'contacts' + if self.type_id == message_control.TYPE_GC: + per_type = 'rooms' + if not gajim.config.get_per(per_type, self.contact.jid): + gajim.config.add_per(per_type, self.contact.jid) + gajim.config.set_per(per_type, self.contact.jid, 'speller_language', + lang) + spell = gtkspell.get_from_text_view(self.msg_textview) + self.msg_textview.lang = lang + spell.set_language(lang) + widget.set_active(True) + + item = gtk.SeparatorMenuItem() + menu.prepend(item) + + if gajim.config.get('use_speller') and HAS_GTK_SPELL: + item = gtk.MenuItem(_('Spelling language')) + menu.prepend(item) + submenu = gtk.Menu() + item.set_submenu(submenu) + for lang in sorted(langs): + item = gtk.CheckMenuItem(lang) + if langs[lang] == self.msg_textview.lang: + item.set_active(True) + submenu.append(item) + id = item.connect('activate', _on_select_dictionary, langs[lang]) + self.handlers[id] = item + + item = gtk.ImageMenuItem(gtk.STOCK_CLEAR) + menu.prepend(item) + id = item.connect('activate', self.msg_textview.clear) + self.handlers[id] = item + + menu.show_all() + # moved from ChatControl def _on_banner_eventbox_button_press_event(self, widget, event): '''If right-clicked, show popup''' @@ -251,7 +325,7 @@ class ChatControlBase(MessageControl): if event.state & gtk.gdk.CONTROL_MASK: # CTRL + l|L: clear conv_textview if event.keyval == gtk.keysyms.l or event.keyval == gtk.keysyms.L: - self.conv_textview.tv.get_buffer().set_text('') + self.conv_textview.clear() return True # CTRL + v: Paste into msg_textview elif event.keyval == gtk.keysyms.v: @@ -425,13 +499,18 @@ class ChatControlBase(MessageControl): if not message or message == '\n': return + if not self._process_command(message): MessageControl.send_message(self, message, keyID, type = type, chatstate = chatstate, msg_id = msg_id, - composing_jep = composing_jep, resource = resource) + composing_jep = composing_jep, resource = resource, + user_nick = self.user_nick) # Record message history self.save_sent_message(message) + # Be sure to send user nickname only once according to JEP-0172 + self.user_nick = None + # Clear msg input message_buffer = self.msg_textview.get_buffer() message_buffer.set_text('') # clear message buffer (and tv of course) @@ -473,12 +552,25 @@ class ChatControlBase(MessageControl): gajim.last_message_time[self.account][full_jid] = time.time() urgent = True if (not self.parent_win.get_active_jid() or \ - full_jid != self.parent_win.get_active_jid() or \ - not self.parent_win.is_active() or not end) and \ - kind in ('incoming', 'incoming_queue'): - self.nb_unread += 1 - if gajim.interface.systray_enabled and self.notify_on_new_messages(): - gajim.interface.systray.add_jid(full_jid, self.account, self.type_id) + full_jid != self.parent_win.get_active_jid() or \ + not self.parent_win.is_active() or not end) and \ + kind in ('incoming', 'incoming_queue'): + if self.notify_on_new_messages(): + type_ = 'printed_' + self.type_id + if self.type_id == message_control.TYPE_GC: + type_ = 'printed_gc_msg' + show_in_roster = notify.get_show_in_roster('message_received', + self.account, self.contact) + show_in_systray = notify.get_show_in_systray('message_received', + self.account, self.contact) + event = gajim.events.create_event(type_, None, + show_in_roster = show_in_roster, + show_in_systray = show_in_systray) + gajim.events.add_event(self.account, full_jid, event) + # We need to redraw contact if we show in roster + if show_in_roster: + gajim.interface.roster.draw_contact(self.contact.jid, + self.account) self.parent_win.redraw_tab(self) if not self.parent_win.is_active(): ctrl = gajim.interface.msg_win_mgr.get_control(full_jid, @@ -503,6 +595,7 @@ class ChatControlBase(MessageControl): else: # we are the beginning of buffer buffer.insert_at_cursor('%s ' % str_) self.msg_textview.grab_focus() + def on_emoticons_button_clicked(self, widget): '''popup emoticons menu''' gajim.interface.emoticon_menuitem_clicked = self.append_emoticon @@ -510,12 +603,10 @@ class ChatControlBase(MessageControl): def on_actions_button_clicked(self, widget): '''popup action menu''' - #FIXME: BUG http://bugs.gnome.org/show_bug.cgi?id=316786 - self.button_clicked = widget - menu = self.prepare_context_menu() menu.show_all() - gtkgui_helpers.popup_emoticons_under_button(menu, widget, self.parent_win) + gtkgui_helpers.popup_emoticons_under_button(menu, widget, + self.parent_win) def update_font(self): font = pango.FontDescription(gajim.config.get('conversation_font')) @@ -549,15 +640,24 @@ class ChatControlBase(MessageControl): if state: jid = self.contact.jid if self.conv_textview.at_the_end(): - #we are at the end - if self.nb_unread > 0: - self.nb_unread = self.get_specific_unread() + # we are at the end + type_ = 'printed_' + self.type_id + if self.type_id == message_control.TYPE_GC: + type_ = 'printed_gc_msg' + if not gajim.events.remove_events(self.account, self.get_full_jid(), + types = [type_]): + # There were events to remove self.parent_win.redraw_tab(self) self.parent_win.show_title() - if gajim.interface.systray_enabled: - gajim.interface.systray.remove_jid(self.get_full_jid(), - self.account, - self.type_id) + # redraw roster + if self.type_id == message_control.TYPE_PM: + room_jid, nick = gajim.get_room_and_nick_from_fjid(jid) + groupchat_control = gajim.interface.msg_win_mgr.get_control( + room_jid, self.account) + groupchat_control.draw_contact(nick) + else: + gajim.interface.roster.draw_contact(jid, self.account) + gajim.interface.roster.show_title() self.msg_textview.grab_focus() # Note, we send None chatstate to preserve current self.parent_win.redraw_tab(self) @@ -630,19 +730,28 @@ class ChatControlBase(MessageControl): return True def on_conversation_vadjustment_value_changed(self, widget): - if not self.nb_unread: + if self.resource: + jid = self.contact.get_full_jid() + else: + jid = self.contact.jid + type_ = self.type_id + if type_ == message_control.TYPE_GC: + type_ = 'gc_msg' + if not len(gajim.events.get_events(self.account, jid, ['printed_' + type_, + type_])): return - jid = self.contact.jid if self.conv_textview.at_the_end() and \ self.parent_win.get_active_control() == self and \ self.parent_win.window.is_active(): - #we are at the end - self.nb_unread = self.get_specific_unread() - self.parent_win.redraw_tab(self) - self.parent_win.show_title() - if gajim.interface.systray_enabled: - gajim.interface.systray.remove_jid(jid, self.account, - self.type_id) + # we are at the end + type_ = self.type_id + if type_ == message_control.TYPE_GC: + type_ = 'gc_msg' + if not gajim.events.remove_events(self.account, self.get_full_jid(), + types = ['printed_' + type_, type_]): + # There were events to remove + self.parent_win.redraw_tab(self) + self.parent_win.show_title() def sent_messages_scroll(self, direction, conv_buf): size = len(self.sent_history) @@ -701,6 +810,7 @@ class ChatControlBase(MessageControl): def got_disconnected(self): self.msg_textview.set_sensitive(False) self.msg_textview.set_editable(False) + self.conv_textview.tv.grab_focus() self.xml.get_widget('send_button').set_sensitive(False) ################################################################################ @@ -754,10 +864,12 @@ class ChatControl(ChatControlBase): id = widget.connect('enter-notify-event', self.on_avatar_eventbox_enter_notify_event) self.handlers[id] = widget - widget = self.xml.get_widget('avatar_eventbox') id = widget.connect('leave-notify-event', self.on_avatar_eventbox_leave_notify_event) self.handlers[id] = widget + id = widget.connect('button-press-event', self.on_avatar_eventbox_button_press_event) + self.handlers[id] = widget + widget = self.xml.get_widget('gpg_togglebutton') id = widget.connect('clicked', self.on_toggle_gpg_togglebutton) self.handlers[id] = widget @@ -769,6 +881,8 @@ class ChatControl(ChatControlBase): self.update_ui() # restore previous conversation self.restore_conversation() + # is account displayed after nick in banner ? + self.account_displayed= False def notify_on_new_messages(self): return gajim.config.get('trayicon_notification_on_new_messages') @@ -803,6 +917,23 @@ class ChatControl(ChatControlBase): if self.show_bigger_avatar_timeout_id is not None: gobject.source_remove(self.show_bigger_avatar_timeout_id) + def on_avatar_eventbox_button_press_event(self, widget, event): + '''If right-clicked, show popup''' + if event.button == 3: # right click + menu = gtk.Menu() + menuitem = gtk.ImageMenuItem(gtk.STOCK_SAVE_AS) + id = menuitem.connect('activate', + gtkgui_helpers.on_avatar_save_as_menuitem_activate, + self.contact.jid, self.account, self.contact.name + '.jpeg') + self.handlers[id] = menuitem + menu.append(menuitem) + menu.show_all() + menu.connect('selection-done', lambda w:w.destroy()) + # show the menu + menu.show_all() + menu.popup(None, None, None, event.button, event.time) + return True + def _on_window_motion_notify(self, widget, event): '''it gets called no matter if it is the active window or not''' if self.parent_win.get_active_jid() == self.contact.jid: @@ -874,17 +1005,27 @@ class ChatControl(ChatControlBase): if self.resource: name += '/' + self.resource avoid_showing_account_too = True + if self.TYPE_ID == message_control.TYPE_PM: + room_jid = self.contact.jid.split('/')[0] + room_ctrl = gajim.interface.msg_win_mgr.get_control(room_jid, + self.account) + name = _('%s from room %s') % (name, room_ctrl.name) name = gtkgui_helpers.escape_for_pango_markup(name) # We know our contacts nick, but if there are any other controls # with the same nick we need to also display the account # except if we are talking to two different resources of the same contact acct_info = '' + self.account_displayed = False for ctrl in self.parent_win.controls(): if ctrl == self: continue if self.contact.get_shown_name() == ctrl.contact.get_shown_name()\ and not avoid_showing_account_too: + self.account_displayed = True + if not ctrl.account_displayed: + # do that after this instance exists + gobject.idle_add(ctrl.draw_banner) acct_info = ' (%s)' % \ gtkgui_helpers.escape_for_pango_markup(self.account) break @@ -901,9 +1042,9 @@ class ChatControl(ChatControlBase): if cs and st in ('composing_only', 'all'): if contact.show == 'offline': chatstate = '' - elif st == 'all' and contact.composing_jep == 'JEP-0085': + elif contact.composing_jep == 'JEP-0085': chatstate = helpers.get_uf_chatstate(cs) - elif st == 'composing_only' or contact.composing_jep == 'JEP-0022': + elif contact.composing_jep == 'JEP-0022': if cs in ('composing', 'paused'): # only print composing, paused chatstate = helpers.get_uf_chatstate(cs) @@ -911,16 +1052,16 @@ class ChatControl(ChatControlBase): chatstate = '' elif chatstate is None: chatstate = helpers.get_uf_chatstate(cs) - + label_text = '%s%s %s' % \ - (font_attrs, name, font_attrs_small, acct_info, chatstate) + (font_attrs, name, font_attrs_small, acct_info, chatstate) else: # weight="heavy" size="x-large" label_text = '%s%s' % \ - (font_attrs, name, font_attrs_small, acct_info) + (font_attrs, name, font_attrs_small, acct_info) if status_escaped: label_text += '\n%s' %\ - (font_attrs_small, status_escaped) + (font_attrs_small, status_escaped) banner_eventbox = self.xml.get_widget('banner_eventbox') self.status_tooltip.set_tip(banner_eventbox, status) self.status_tooltip.enable() @@ -928,7 +1069,7 @@ class ChatControl(ChatControlBase): self.status_tooltip.disable() # setup the label that holds name and jid banner_name_label.set_markup(label_text) - + def on_toggle_gpg_togglebutton(self, widget): gajim.config.set_per('contacts', self.contact.get_full_jid(), 'gpg_enabled', widget.get_active()) @@ -943,12 +1084,12 @@ class ChatControl(ChatControlBase): tt = _('OpenPGP Encryption') # restore gpg pref - gpg_pref = gajim.config.get_per('contacts', - self.contact.get_full_jid(), 'gpg_enabled') + gpg_pref = gajim.config.get_per('contacts', self.contact.jid, + 'gpg_enabled') if gpg_pref == None: - gajim.config.add_per('contacts', self.contact.get_full_jid()) - gpg_pref = gajim.config.get_per('contacts', - self.contact.get_full_jid(), 'gpg_enabled') + gajim.config.add_per('contacts', self.contact.jid) + gpg_pref = gajim.config.get_per('contacts', self.contact.jid, + 'gpg_enabled') tb.set_active(gpg_pref) else: @@ -1108,7 +1249,12 @@ class ChatControl(ChatControlBase): def get_tab_label(self, chatstate): unread = '' - num_unread = self.nb_unread + if self.resource: + jid = self.contact.get_full_jid() + else: + jid = self.contact.jid + num_unread = len(gajim.events.get_events(self.account, jid, + ['printed_' + self.type_id, self.type_id])) if num_unread == 1 and not gajim.config.get('show_unread_tab_icon'): unread = '*' elif num_unread > 1: @@ -1151,7 +1297,12 @@ class ChatControl(ChatControlBase): return (label_str, color) def get_tab_image(self): - num_unread = self.nb_unread + if self.resource: + jid = self.contact.get_full_jid() + else: + jid = self.contact.jid + num_unread = len(gajim.events.get_events(self.account, jid, + ['printed_' + self.type_id, self.type_id])) # Set tab image (always 16x16); unread messages show the 'message' image tab_img = None @@ -1160,8 +1311,8 @@ class ChatControl(ChatControlBase): self.contact.jid, icon_name = 'message') tab_img = img_16['message'] else: - contact = gajim.contacts.get_contact_with_highest_priority(self.account, - self.contact.jid) + contact = gajim.contacts.get_contact_with_highest_priority( + self.account, self.contact.jid) if not contact or self.resource: # For transient contacts contact = self.contact @@ -1334,10 +1485,12 @@ class ChatControl(ChatControlBase): # Disconnect timer callbacks gobject.source_remove(self.possible_paused_timeout_id) gobject.source_remove(self.possible_inactive_timeout_id) - # Clean up systray - if gajim.interface.systray_enabled and self.nb_unread > 0: - gajim.interface.systray.remove_jid(self.contact.jid, self.account, - self.type_id) + # Remove bigger avatar window + if self.bigger_avatar_window: + self.bigger_avatar_window.destroy() + # Clean events + gajim.events.remove_events(self.account, self.get_full_jid(), + types = ['printed_' + self.type_id, self.type_id]) # remove all register handlers on wigets, created by self.xml # to prevent circular references among objects for i in self.handlers.keys(): @@ -1354,7 +1507,7 @@ class ChatControl(ChatControlBase): # 2 seconds dialog = dialogs.ConfirmationDialog( #%s is being replaced in the code with JID - _('You just received a new message from "%s"' % self.contact.jid), + _('You just received a new message from "%s"') % self.contact.jid, _('If you close this tab and you have history disabled, '\ 'this message will be lost.')) if dialog.get_response() != gtk.RESPONSE_OK: @@ -1439,17 +1592,14 @@ class ChatControl(ChatControlBase): if restore_how_many <= 0: return timeout = gajim.config.get('restore_timeout') # in minutes - # number of messages that are in queue and are already logged - pending_how_many = 0 # we want to avoid duplication - if gajim.awaiting_events[self.account].has_key(jid): - events = gajim.awaiting_events[self.account][jid] - for event in events: - if event[0] == 'chat': - pending_how_many += 1 + events = gajim.events.get_events(self.account, jid, ['chat']) + # number of messages that are in queue and are already logged, we want + # to avoid duplication + pending_how_many = len(events) rows = gajim.logger.get_last_conversation_lines(jid, restore_how_many, - pending_how_many, timeout) + pending_how_many, timeout, self.account) local_old_kind = None for row in rows: # row[0] time, row[1] has kind, row[2] the message if not row[2]: # message is empty, we don't print it @@ -1465,10 +1615,14 @@ class ChatControl(ChatControlBase): tim = time.localtime(float(row[0])) + if gajim.config.get('restored_messages_small'): + small_attr = ['small'] + else: + small_attr = [] ChatControlBase.print_conversation_line(self, row[2], kind, name, tim, - ['small'], - ['small', 'restored_message'], - ['small', 'restored_message'], + small_attr, + small_attr + ['restored_message'], + small_attr + ['restored_message'], False, old_kind = local_old_kind) if row[2].startswith('/me ') or row[2].startswith('/me\n'): local_old_kind = None @@ -1483,7 +1637,7 @@ class ChatControl(ChatControlBase): jid_with_resource = jid if self.resource: jid_with_resource += '/' + self.resource - l = gajim.awaiting_events[self.account][jid_with_resource] + events = gajim.events.get_events(self.account, jid_with_resource) # Is it a pm ? is_pm = False @@ -1491,15 +1645,12 @@ class ChatControl(ChatControlBase): control = gajim.interface.msg_win_mgr.get_control(room_jid, self.account) if control and control.type_id == message_control.TYPE_GC: is_pm = True - events_to_keep = [] # list of message ids which should be marked as read message_ids = [] - for event in l: - typ = event[0] - if typ != 'chat': - events_to_keep.append(event) + for event in events: + if event.type_ != self.type_id: continue - data = event[1] + data = event.parameters kind = data[2] if kind == 'error': kind = 'info' @@ -1509,33 +1660,31 @@ class ChatControl(ChatControlBase): encrypted = data[4], subject = data[1]) if len(data) > 6 and isinstance(data[6], int): message_ids.append(data[6]) - # remove from gc nb_unread if it's pm or from roster - if is_pm: - control.nb_unread -= 1 - else: - gajim.interface.roster.nb_unread -= 1 if message_ids: gajim.logger.set_read_messages(message_ids) - if is_pm: - control.parent_win.show_title() - else: - gajim.interface.roster.show_title() - # Keep only non-messages events - if len(events_to_keep): - gajim.awaiting_events[self.account][jid_with_resource] = events_to_keep - else: - del gajim.awaiting_events[self.account][jid_with_resource] + gajim.events.remove_events(self.account, jid_with_resource, + types = [self.type_id]) + + self.parent_win.show_title() + self.parent_win.redraw_tab(self) + # redraw roster + gajim.interface.roster.show_title() + typ = 'chat' # Is it a normal chat or a pm ? # reset to status image in gc if it is a pm if is_pm: control.update_ui() typ = 'pm' - gajim.interface.roster.draw_contact(jid, self.account) + if is_pm: + room_jid, nick = gajim.get_room_and_nick_from_fjid(jid) + groupchat_control = gajim.interface.msg_win_mgr.get_control( + room_jid, self.account) + groupchat_control.draw_contact(nick) + else: + gajim.interface.roster.draw_contact(jid, self.account) # Redraw parent too gajim.interface.roster.draw_parent_contact(jid, self.account) - if gajim.interface.systray_enabled: - gajim.interface.systray.remove_jid(jid_with_resource, self.account, typ) if (self.contact.show == 'offline' or self.contact.show == 'error'): showOffline = gajim.config.get('showoffline') if not showOffline and typ == 'chat' and \ @@ -1548,6 +1697,9 @@ class ChatControl(ChatControlBase): def show_bigger_avatar(self, small_avatar): '''resizes the avatar, if needed, so it has at max half the screen size and shows it''' + if not small_avatar.window: + # Tab has been closed since we hovered the avatar + return is_fake = False if self.type_id == message_control.TYPE_PM: is_fake = True @@ -1562,7 +1714,7 @@ class ChatControl(ChatControlBase): # It's why I set it transparent. image = self.xml.get_widget('avatar_image') pixbuf = image.get_pixbuf() - pixbuf.fill(0xffffff00) # RGBA + pixbuf.fill(0xffffff00L) # RGBA image.queue_draw() screen_w = gtk.gdk.screen_width() @@ -1612,6 +1764,7 @@ class ChatControl(ChatControlBase): def _on_window_avatar_leave_notify_event(self, widget, event): '''we just left the popup window that holds avatar''' self.bigger_avatar_window.destroy() + self.bigger_avatar_window = None # Re-show the small avatar self.show_avatar() diff --git a/src/common/GnuPG.py b/src/common/GnuPG.py index 28b9c2987..bb6753fca 100644 --- a/src/common/GnuPG.py +++ b/src/common/GnuPG.py @@ -138,7 +138,7 @@ else: def verify(self, str, sign): if not USE_GPG: return str - if not str: + if str == None: return '' f = tmpfile() fd = f.fileno() diff --git a/src/common/Makefile b/src/common/Makefile index aa7ec66f7..c6d05a2d4 100644 --- a/src/common/Makefile +++ b/src/common/Makefile @@ -6,19 +6,19 @@ HAVE_XSCRNSAVER = $(shell pkg-config --exists xscrnsaver && echo 'YES') ifeq ($(HAVE_XSCRNSAVER),YES) # We link with libXScrnsaver from modular X.Org X11 -CFLAGS = `pkg-config --cflags gtk+-2.0 pygtk-2.0 xscrnsaver` -fpic -I/usr/include/python$(PYTHONVER) -I. -LDFLAGS = `pkg-config --libs gtk+-2.0 pygtk-2.0 xscrnsaver` -lpython$(PYTHONVER) +gtk_and_x_CFLAGS = `pkg-config --cflags gtk+-2.0 pygtk-2.0 xscrnsaver` -fpic -I/usr/include/python$(PYTHONVER) -I. +gtk_and_x_LDFLAGS = `pkg-config --libs gtk+-2.0 pygtk-2.0 xscrnsaver` -lpython$(PYTHONVER) else # # We link with libXScrnsaver from monolithic X.Org X11 -CFLAGS = `pkg-config --cflags gtk+-2.0 pygtk-2.0` -fpic -I/usr/include/python$(PYTHONVER) -I. -LDFLAGS = `pkg-config --libs gtk+-2.0 pygtk-2.0` -L/usr/X11R6$(LIBDIR) -lX11 \ - -lXss -lXext -lpython$(PYTHONVER) +gtk_and_x_CFLAGS = `pkg-config --cflags gtk+-2.0 pygtk-2.0` -fpic -I/usr/include/python$(PYTHONVER) -I. +gtk_and_x_LDFLAGS = `pkg-config --libs gtk+-2.0 pygtk-2.0` \ + -L/usr/X11R6$(LIBDIR) -lX11 -lXss -lXext -lpython$(PYTHONVER) endif all: idle.so idle.so: - $(CC) $(OPTFLAGS) $(CFLAGS) $(LDFLAGS) -shared idle.c $^ -o $@ + $(CC) $(OPTFLAGS) $(CFLAGS) $(LDFLAGS) $(gtk_and_x_CFLAGS) $(gtk_and_x_LDFLAGS) -shared idle.c $^ -o $@ clean: rm -f *.so diff --git a/src/common/check_paths.py b/src/common/check_paths.py index 396db51da..03913473d 100644 --- a/src/common/check_paths.py +++ b/src/common/check_paths.py @@ -28,10 +28,6 @@ import stat from common import gajim import logger -import i18n - -_ = i18n._ -Q_ = i18n.Q_ from pysqlite2 import dbapi2 as sqlite # DO NOT MOVE ABOVE OF import gajim @@ -61,6 +57,11 @@ def create_log_db(): jid_id INTEGER ); + CREATE TABLE transports_cache ( + transport TEXT UNIQUE, + type INTEGER + ); + CREATE TABLE logs( log_line_id INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE, jid_id INTEGER, diff --git a/src/common/config.py b/src/common/config.py index da7cc93f1..43f717404 100644 --- a/src/common/config.py +++ b/src/common/config.py @@ -20,8 +20,6 @@ import sre import copy -import i18n -_ = i18n._ ( @@ -50,7 +48,7 @@ class Config: 'notify_on_signout': [ opt_bool, False ], 'notify_on_new_message': [ opt_bool, True ], 'autopopupaway': [ opt_bool, False ], - 'use_notif_daemon': [ opt_bool, True , _('Use DBus and Notification-Daemon to show notifications') ], + 'use_notif_daemon': [ opt_bool, True , _('Use D-Bus and Notification-Daemon to show notifications') ], 'ignore_unknown_contacts': [ opt_bool, False ], 'showoffline': [ opt_bool, False, '', True ], 'autoaway': [ opt_bool, True ], @@ -76,17 +74,19 @@ class Config: 'statusmsgcolor': [ opt_color, '#1eaa1e', '', True ], 'markedmsgcolor': [ opt_color, '#ff8080', '', True ], 'urlmsgcolor': [ opt_color, '#0000ff', '', True ], - 'collapsed_rows': [ opt_str, '', _('List (space separated) of rows (accounts and groups) that are collapsed'), True ], + 'collapsed_rows': [ opt_str, '', _('List (space separated) of rows (accounts and groups) that are collapsed.'), True ], 'roster_theme': [ opt_str, 'gtk+', '', True ], 'saveposition': [ opt_bool, True ], 'mergeaccounts': [ opt_bool, False, '', True ], 'sort_by_show': [ opt_bool, True, '', True ], 'use_speller': [ opt_bool, False, ], + 'speller_language': [ opt_str, '', _('Language used by speller')], 'print_time': [ opt_str, 'always', _('\'always\' - print time for every message.\n\'sometimes\' - print time every print_ichat_every_foo_minutes minute.\n\'never\' - never print time.')], + 'print_time_fuzzy': [ opt_int, 0, _('Value of fuzziness from 1 to 4 or 0 to disable fuzzyclock. 1 is the most precise clock, 4 the less precise one.') ], 'emoticons_theme': [opt_str, 'static', '', True ], 'ascii_formatting': [ opt_bool, True, _('Treat * / _ pairs as possible formatting characters.'), True], - 'show_ascii_formatting_chars': [ opt_bool, False , _('If True, do not ' + 'show_ascii_formatting_chars': [ opt_bool, True , _('If True, do not ' 'remove */_ . So *abc* will be bold but with * * not removed.')], 'sounds_on': [ opt_bool, True ], # 'aplay', 'play', 'esdplay', 'artsplay' detected first time only @@ -95,12 +95,12 @@ class Config: 'custombrowser': [ opt_str, 'firefox' ], 'custommailapp': [ opt_str, 'mozilla-thunderbird -compose' ], 'custom_file_manager': [ opt_str, 'xffm' ], - 'gc-hpaned-position': [opt_int, 540], - 'gc_refer_to_nick_char': [opt_str, ',', _('Character to add after nickname when using nick completion (tab) in group chat')], - 'gc_proposed_nick_char': [opt_str, '_', _('Character to propose to add after desired nickname when desired nickname is used by someone else in group chat')], + 'gc-hpaned-position': [opt_int, 430], + 'gc_refer_to_nick_char': [opt_str, ',', _('Character to add after nickname when using nick completion (tab) in group chat.')], + 'gc_proposed_nick_char': [opt_str, '_', _('Character to propose to add after desired nickname when desired nickname is used by someone else in group chat.')], 'msgwin-x-position': [opt_int, -1], # Default is to let the window manager decide 'msgwin-y-position': [opt_int, -1], # Default is to let the window manager decide - 'msgwin-width': [opt_int, 480], + 'msgwin-width': [opt_int, 500], 'msgwin-height': [opt_int, 440], 'chat-msgwin-x-position': [opt_int, -1], # Default is to let the window manager decide 'chat-msgwin-y-position': [opt_int, -1], # Default is to let the window manager decide @@ -108,7 +108,7 @@ class Config: 'chat-msgwin-height': [opt_int, 440], 'gc-msgwin-x-position': [opt_int, -1], # Default is to let the window manager decide 'gc-msgwin-y-position': [opt_int, -1], # Default is to let the window manager decide - 'gc-msgwin-width': [opt_int, 480], + 'gc-msgwin-width': [opt_int, 600], 'gc-msgwin-height': [opt_int, 440], 'single-msg-x-position': [opt_int, 0], 'single-msg-y-position': [opt_int, 0], @@ -126,6 +126,7 @@ class Config: 'after_nickname': [ opt_str, ':' ], 'send_os_info': [ opt_bool, True ], 'notify_on_new_gmail_email': [ opt_bool, True ], + 'notify_on_new_gmail_email_extra': [ opt_bool, False ], 'usegpg': [ opt_bool, False, '', True ], 'use_gpg_agent': [ opt_bool, False ], 'change_roster_title': [ opt_bool, True, _('Add * and [n] in roster title?')], @@ -134,7 +135,7 @@ class Config: 'send_on_ctrl_enter': [opt_bool, False, _('Send message on Ctrl+Enter and with Enter make new line (Mirabilis ICQ Client default behaviour).')], 'show_roster_on_startup': [opt_bool, True], 'key_up_lines': [opt_int, 25, _('How many lines to store for Ctrl+KeyUP.')], - 'version': [ opt_str, '0.10.0.1' ], # which version created the config + 'version': [ opt_str, '0.10.1.3' ], # which version created the config 'search_engine': [opt_str, 'http://www.google.com/search?&q=%s&sourceid=gajim'], 'dictionary_url': [opt_str, 'WIKTIONARY', _("Either custom url with %s in it where %s is the word/phrase or 'WIKTIONARY' which means use wiktionary.")], 'always_english_wikipedia': [opt_bool, False], @@ -142,7 +143,7 @@ class Config: 'remote_control': [opt_bool, True, _('If checked, Gajim can be controlled remotely using gajim-remote.'), True], 'chat_state_notifications': [opt_str, 'all'], # 'all', 'composing_only', 'disabled' 'autodetect_browser_mailer': [opt_bool, False, '', True], - 'print_ichat_every_foo_minutes': [opt_int, 5, _('When not printing time for every message (print_time==sometimes), print it every x minutes')], + 'print_ichat_every_foo_minutes': [opt_int, 5, _('When not printing time for every message (print_time==sometimes), print it every x minutes.')], 'confirm_close_muc': [opt_bool, True, _('Ask before closing a group chat tab/window.')], 'confirm_close_muc_rooms': [opt_str, '', _('Always ask before closing group chat tab/window in this space separated list of room jids.')], 'noconfirm_close_muc_rooms': [opt_str, '', _('Never ask before closing group chat tab/window in this space separated list of room jids.')], @@ -177,29 +178,33 @@ class Config: 'quit_on_roster_x_button': [opt_bool, False, _('If True, quits Gajim when X button of Window Manager is clicked. This setting is taken into account only if trayicon is used.')], 'set_xmpp://_handler_everytime': [opt_bool, False, _('If True, Gajim registers for xmpp:// on each startup.')], 'show_unread_tab_icon': [opt_bool, False, _('If True, Gajim will display an icon on each tab containing unread messages. Depending on the theme, this icon may be animated.')], - 'show_status_msgs_in_roster': [opt_bool, True, _('If True, Gajim will display the status message, if not empty, for every contact under the contact name in roster window'), True], + 'show_status_msgs_in_roster': [opt_bool, True, _('If True, Gajim will display the status message, if not empty, for every contact under the contact name in roster window.'), True], 'show_avatars_in_roster': [opt_bool, True, '', True], 'ask_avatars_on_startup': [opt_bool, True, _('If True, Gajim will ask for avatar each contact that did not have an avatar last time or has one cached that is too old.')], 'print_status_in_chats': [opt_bool, True, _('If False, Gajim will no longer print status line in chats when a contact changes his or her status and/or his or her status message.')], - 'print_status_in_muc': [opt_str, 'in_and_out', _('can be "none", "all" or "in_and_out". If "none", Gajim will no longer print status line in groupchats when a member changes his or her status and/or his or her status message. If "all" Gajim will print all status messages. If "in_and_out", gajim will only print FOO enters/leaves room')], + 'print_status_in_muc': [opt_str, 'in_and_out', _('can be "none", "all" or "in_and_out". If "none", Gajim will no longer print status line in groupchats when a member changes his or her status and/or his or her status message. If "all" Gajim will print all status messages. If "in_and_out", gajim will only print FOO enters/leaves room.')], 'log_contact_status_changes': [opt_bool, False], 'restored_messages_color': [opt_str, 'grey'], + 'restored_messages_small': [opt_bool, True, _('If True, restored messages will use a smaller font than the default one.')], 'hide_avatar_of_transport': [opt_bool, False, _('Don\'t show avatar for the transport itself.')], 'roster_window_skip_taskbar': [opt_bool, False], 'use_urgency_hint': [opt_bool, True, _('If True and installed GTK+ and PyGTK versions are at least 2.8, make the window flash (the default behaviour in most Window Managers) when holding pending events.')], 'notification_timeout': [opt_int, 5], - 'send_sha_in_gc_presence': [opt_bool, True, _('Jabberd1.4 does not like sha info when one join a password protected room. Turn this option to False to stop sending sha info in groupchat presences')], + 'send_sha_in_gc_presence': [opt_bool, True, _('Jabberd1.4 does not like sha info when one join a password protected room. Turn this option to False to stop sending sha info in group chat presences.')], 'one_message_window': [opt_str, 'always', - _('Controls the window where new messages are placed.\n\'always\' - All messages are sent to a single window.\n\'never\' - All messages get their own window.\n\'peracct\' - Messages for each account are sent to a specific window.\n\'pertype\' - Each message type (e.g., chats vs. groupchats) are sent to a specific window. Note, changing this option requires restarting Gajim before the changes will take effect')], - 'show_avatar_in_chat': [opt_bool, True, _('If False, you will no longer see the avatar in the chat window')], - 'escape_key_closes': [opt_bool, True, _('If True, pressing the escape key closes a tab/window')], - 'always_hide_groupchat_buttons': [opt_bool, False, _('Hides the buttons in group chat window')], - 'always_hide_chat_buttons': [opt_bool, False, _('Hides the buttons in two persons chat window')], +#always, never, peracct, pertype should not be translated + _('Controls the window where new messages are placed.\n\'always\' - All messages are sent to a single window.\n\'never\' - All messages get their own window.\n\'peracct\' - Messages for each account are sent to a specific window.\n\'pertype\' - Each message type (e.g., chats vs. groupchats) are sent to a specific window. Note, changing this option requires restarting Gajim before the changes will take effect.')], + 'show_avatar_in_chat': [opt_bool, True, _('If False, you will no longer see the avatar in the chat window.')], + 'escape_key_closes': [opt_bool, True, _('If True, pressing the escape key closes a tab/window.')], + 'always_hide_groupchat_buttons': [opt_bool, False, _('Hides the buttons in group chat window.')], + 'always_hide_chat_buttons': [opt_bool, False, _('Hides the buttons in two persons chat window.')], 'hide_groupchat_banner': [opt_bool, False, _('Hides the banner in a group chat window')], 'hide_chat_banner': [opt_bool, False, _('Hides the banner in two persons chat window')], - 'hide_groupchat_occupants_list': [opt_bool, False, _('Hides the room occupants list in groupchat window')], - 'chat_merge_consecutive_nickname': [opt_bool, False, _('Merge consecutive nickname in chat window')], - 'chat_merge_consecutive_nickname_indent': [opt_str, ' ', _('Indentation when using merge consecutive nickame')], + 'hide_groupchat_occupants_list': [opt_bool, False, _('Hides the room occupants list in group chat window.')], + 'chat_merge_consecutive_nickname': [opt_bool, False, _('Merge consecutive nickname in chat window.')], + 'chat_merge_consecutive_nickname_indent': [opt_str, ' ', _('Indentation when using merge consecutive nickame.')], + 'gc_nicknames_colors': [ opt_str, '#a34526:#c000ff:#0012ff:#388a99:#38995d:#519938:#ff8a00:#94452d:#244b5a:#32645a', _('List of colors that will be used to color nicknames in group chats.'), True ], + 'ctrl_tab_go_to_next_composing': [opt_bool, True, _('Ctrl-Tab go to next composing tab when none is unread.')], 'zeroconf_enabled': [opt_bool, True, _('Enable zeroconf network')], } @@ -246,6 +251,10 @@ class Config: 'statusmsg': ({ 'message': [ opt_str, '' ], }, {}), + 'defaultstatusmsg': ({ + 'enabled': [ opt_bool, False ], + 'message': [ opt_str, '' ], + }, {}), 'soundevents': ({ 'enabled': [ opt_bool, True ], 'path': [ opt_str, '' ], @@ -288,7 +297,27 @@ class Config: 'state_muc_directed_msg_color': [ opt_color, 'red2' ], }, {}), 'contacts': ({ - 'gpg_enabled': [ opt_bool, True ], + 'gpg_enabled': [ opt_bool, True, _('Is OpenPGP enabled for this contact?')], + 'speller_language': [ opt_str, '', _('Language for which we want to check misspelled words')], + }, {}), + 'rooms': ({ + 'speller_language': [ opt_str, '', _('Language for which we want to check misspelled words')], + }, {}), + 'notifications': ({ + 'event': [opt_str, ''], + 'recipient_type': [opt_str, 'all'], + 'recipients': [opt_str, ''], + 'status': [opt_str, 'all', _('all or space separated status')], + 'tab_opened': [opt_str, 'both', _("'yes', 'no', or 'both'")], + 'sound': [opt_str, '', _("'yes', 'no' or ''")], + 'sound_file': [opt_str, ''], + 'popup': [opt_str, '', _("'yes', 'no' or ''")], + 'auto_open': [opt_str, '', _("'yes', 'no' or ''")], + 'run_command': [opt_bool, False], + 'command': [opt_str, ''], + 'systray': [opt_str, '', _("'yes', 'no' or ''")], + 'roster': [opt_str, '', _("'yes', 'no' or ''")], + 'urgency_hint': [opt_bool, False], }, {}), } @@ -302,6 +331,16 @@ class Config: _('Out'): _("I'm out enjoying life"), } + defaultstatusmsg_default = { + 'online': [ False, _("I'm available") ], + 'chat': [ False, _("I'm free for chat") ], + 'away': [ False, _('Be right back') ], + 'xa': [ False, _("I'm not available") ], + 'dnd': [ False, _('Do not disturb') ], + 'invisible': [ False, _('Bye!') ], + 'offline': [ False, _('Bye!') ], + } + soundevents_default = { 'first_message_received': [ True, '../data/sounds/message1.wav' ], 'next_message_received': [ True, '../data/sounds/message2.wav' ], @@ -515,3 +554,8 @@ class Config: self.set_per('soundevents', event, 'enabled', default[0]) self.set_per('soundevents', event, 'path', default[1]) + for status in self.defaultstatusmsg_default: + default = self.defaultstatusmsg_default[status] + self.add_per('defaultstatusmsg', status) + self.set_per('defaultstatusmsg', status, 'enabled', default[0]) + self.set_per('defaultstatusmsg', status, 'message', default[1]) diff --git a/src/common/connection.py b/src/common/connection.py index a361b1b59..96abbc3c8 100644 --- a/src/common/connection.py +++ b/src/common/connection.py @@ -42,9 +42,6 @@ from common import GnuPG from connection_handlers import * USE_GPG = GnuPG.USE_GPG -from common import i18n -_ = i18n._ - class Connection(ConnectionHandlers): '''Connection class''' def __init__(self, name): @@ -88,8 +85,12 @@ class Connection(ConnectionHandlers): self.on_connect_failure = None self.retrycount = 0 self.jids_for_auto_auth = [] # list of jid to auto-authorize - + self.muc_jid = {} # jid of muc server for each transport type + self.available_transports = {} # list of available transports on this + # server {'icq': ['icq.server.com', 'icq2.server.com'], } + self.vcard_supported = True # END __init__ + def put_event(self, ev): if gajim.handlers.has_key(ev[0]): gajim.handlers[ev[0]](self.name, ev[1]) @@ -137,22 +138,21 @@ class Connection(ConnectionHandlers): if not self.on_purpose: self.disconnect() if gajim.config.get_per('accounts', self.name, 'autoreconnect') \ - and self.retrycount <= 10: + and self.retrycount <= 10: self.connected = 1 self.dispatch('STATUS', 'connecting') - self.time_to_reconnect = 10 # this check has moved from _reconnect method if self.retrycount > 5: self.time_to_reconnect = 20 else: self.time_to_reconnect = 10 - gajim.idlequeue.set_alarm(self._reconnect_alarm, - self.time_to_reconnect) + gajim.idlequeue.set_alarm(self._reconnect_alarm, + self.time_to_reconnect) elif self.on_connect_failure: self.on_connect_failure() self.on_connect_failure = None else: - # show error dialog + # show error dialog self._connection_lost() else: self.disconnect() @@ -162,9 +162,9 @@ class Connection(ConnectionHandlers): def _connection_lost(self): self.disconnect(on_purpose = False) self.dispatch('STATUS', 'offline') - self.dispatch('ERROR', - (_('Connection with account "%s" has been lost') % self.name, - _('To continue sending and receiving messages, you will need to reconnect.'))) + self.dispatch('CONNECTION_LOST', + (_('Connection with account "%s" has been lost') % self.name, + _('To continue sending and receiving messages, you will need to reconnect.'))) def _event_dispatcher(self, realm, event, data): if realm == common.xmpp.NS_REGISTER: @@ -211,6 +211,34 @@ class Connection(ConnectionHandlers): else: conf = data[1].asDict() self.dispatch('REGISTER_AGENT_INFO', (data[0], conf, is_form)) + elif realm == common.xmpp.NS_PRIVACY: + if event == common.xmpp.features_nb.PRIVACY_LISTS_RECEIVED: + # data is (list) + self.dispatch('PRIVACY_LISTS_RECEIVED', (data)) + elif event == common.xmpp.features_nb.PRIVACY_LIST_RECEIVED: + # data is (resp) + if not data: + return + rules = [] + name = data.getTag('query').getTag('list').getAttr('name') + for child in data.getTag('query').getTag('list').getChildren(): + dict_item = child.getAttrs() + childs = [] + if dict_item.has_key('type'): + for scnd_child in child.getChildren(): + childs += [scnd_child.getName()] + rules.append({'action':dict_item['action'], + 'type':dict_item['type'], 'order':dict_item['order'], + 'value':dict_item['value'], 'child':childs}) + else: + for scnd_child in child.getChildren(): + childs.append(scnd_child.getName()) + rules.append({'action':dict_item['action'], + 'order':dict_item['order'], 'child':childs}) + self.dispatch('PRIVACY_LIST_RECEIVED', (name, rules)) + elif event == common.xmpp.features_nb.PRIVACY_LISTS_ACTIVE_DEFAULT: + # data is (dict) + self.dispatch('PRIVACY_LISTS_ACTIVE_DEFAULT', (data)) elif realm == '': if event == common.xmpp.transports.DATA_RECEIVED: self.dispatch('STANZA_ARRIVED', unicode(data, errors = 'ignore')) @@ -360,7 +388,8 @@ class Connection(ConnectionHandlers): if not self.retrycount and self.connected != 0: self.disconnect(on_purpose = True) self.dispatch('STATUS', 'offline') - self.dispatch('ERROR', (_('Could not connect to "%s"') % self._hostname, + self.dispatch('CONNECTION_LOST', + (_('Could not connect to "%s"') % self._hostname, _('Check your connection or try again later.'))) def _connect_success(self, con, con_type): @@ -396,7 +425,8 @@ class Connection(ConnectionHandlers): if not con: self.disconnect(on_purpose = True) self.dispatch('STATUS', 'offline') - self.dispatch('ERROR', (_('Could not connect to "%s"') % self._hostname, + self.dispatch('CONNECTION_LOST', + (_('Could not connect to "%s"') % self._hostname, _('Check your connection or try again later'))) if self.on_connect_auth: self.on_connect_auth(None) @@ -433,6 +463,41 @@ class Connection(ConnectionHandlers): if kill_core and self.connected > 1: self.disconnect(on_purpose = True) + def get_privacy_lists(self): + if not self.connection: + return + common.xmpp.features_nb.getPrivacyLists(self.connection) + + def get_active_default_lists(self): + if not self.connection: + return + common.xmpp.features_nb.getActiveAndDefaultPrivacyLists(self.connection) + + def del_privacy_list(self, privacy_list): + if not self.connection: + return + common.xmpp.features_nb.delPrivacyList(self.connection, privacy_list) + + def get_privacy_list(self, title): + if not self.connection: + return + common.xmpp.features_nb.getPrivacyList(self.connection, title) + + def set_privacy_list(self, listname, tags): + if not self.connection: + return + common.xmpp.features_nb.setPrivacyList(self.connection, listname, tags) + + def set_active_list(self, listname): + if not self.connection: + return + common.xmpp.features_nb.setActivePrivacyList(self.connection, listname, 'active') + + def set_default_list(self, listname): + if not self.connection: + return + common.xmpp.features_nb.setDefaultPrivacyList(self.connection, listname) + def build_privacy_rule(self, name, action): '''Build a Privacy rule stanza for invisibility''' iq = common.xmpp.Iq('set', common.xmpp.NS_PRIVACY, xmlns = '') @@ -442,6 +507,8 @@ class Connection(ConnectionHandlers): return iq def activate_privacy_rule(self, name): + if not self.connection: + return '''activate a privacy rule''' iq = common.xmpp.Iq('set', common.xmpp.NS_PRIVACY, xmlns = '') iq.getTag('query').setTag('active', {'name': name}) @@ -528,7 +595,7 @@ class Connection(ConnectionHandlers): # Ask metacontacts before roster self.get_metacontacts() - def change_status(self, show, msg, sync = False, auto = False): + def change_status(self, show, msg, auto = False): if not show in STATUS_LIST: return -1 sshow = helpers.get_xmpp_show(show) @@ -607,7 +674,8 @@ class Connection(ConnectionHandlers): self.connection.send(msg_iq) def send_message(self, jid, msg, keyID, type = 'chat', subject='', - chatstate = None, msg_id = None, composing_jep = None, resource = None): + chatstate = None, msg_id = None, composing_jep = None, resource = None, + user_nick = None): if not self.connection: return if not msg and chatstate is None: @@ -638,6 +706,11 @@ class Connection(ConnectionHandlers): if msgenc: msg_iq.setTag(common.xmpp.NS_ENCRYPTED + ' x').setData(msgenc) + # JEP-0172: user_nickname + if user_nick: + msg_iq.setTag('nick', namespace = common.xmpp.NS_NICK).setData( + user_nick) + # chatstates - if peer supports jep85 or jep22, send chatstates # please note that the only valid tag inside a message containing a # tag is the active event @@ -692,7 +765,7 @@ class Connection(ConnectionHandlers): self.connection.send(p) def request_subscription(self, jid, msg = '', name = '', groups = [], - auto_auth = False): + auto_auth = False, user_nick = ''): if not self.connection: return gajim.log.debug('subscription request for %s' % jid) @@ -710,10 +783,11 @@ class Connection(ConnectionHandlers): self.connection.send(iq) p = common.xmpp.Presence(jid, 'subscribe') + if user_nick: + p.setTag('nick', namespace = common.xmpp.NS_NICK).setData(user_nick) p = self.add_sha(p) - if not msg: - msg = _('I would like to add you to my roster.') - p.setStatus(msg) + if msg: + p.setStatus(msg) self.connection.send(p) def send_authorization(self, jid): @@ -796,6 +870,10 @@ class Connection(ConnectionHandlers): def request_os_info(self, jid, resource): if not self.connection: return + # If we are invisible, do not request + if self.connected == gajim.SHOW_LIST.index('invisible'): + self.dispatch('OS_INFO', (jid, resource, _('Not fetched because of invisible status'), _('Not fetched because of invisible status'))) + return to_whom_jid = jid if resource: to_whom_jid += '/' + resource @@ -852,6 +930,9 @@ class Connection(ConnectionHandlers): iq = common.xmpp.Iq(typ='get') iq2 = iq.addChild(name='query', namespace='jabber:iq:private') iq2.addChild(name='storage', namespace='storage:metacontacts') + id = self.connection.getAnID() + iq.setID(id) + self.awaiting_answers[id] = (METACONTACTS_ARRIVED, ) self.connection.send(iq) def store_metacontacts(self, tags_list): @@ -873,7 +954,8 @@ class Connection(ConnectionHandlers): def send_agent_status(self, agent, ptype): if not self.connection: return - p = common.xmpp.Presence(to = agent, typ = ptype) + show = helpers.get_xmpp_show(STATUS_LIST[self.connected]) + p = common.xmpp.Presence(to = agent, typ = ptype, show = show) p = self.add_sha(p, ptype != 'unavailable') self.connection.send(p) diff --git a/src/common/connection_handlers.py b/src/common/connection_handlers.py index 082148b4a..dc15c9b8e 100644 --- a/src/common/connection_handlers.py +++ b/src/common/connection_handlers.py @@ -24,6 +24,7 @@ import sha import socket import sys +from time import localtime, strftime, gmtime from calendar import timegm import socks5 @@ -32,8 +33,6 @@ import common.xmpp from common import GnuPG from common import helpers from common import gajim -from common import i18n -_ = i18n._ STATUS_LIST = ['offline', 'connecting', 'online', 'chat', 'away', 'xa', 'dnd', 'invisible'] @@ -41,6 +40,7 @@ STATUS_LIST = ['offline', 'connecting', 'online', 'chat', 'away', 'xa', 'dnd', VCARD_PUBLISHED = 'vcard_published' VCARD_ARRIVED = 'vcard_arrived' AGENT_REMOVED = 'agent_removed' +METACONTACTS_ARRIVED = 'metacontacts_arrived' HAS_IDLE = True try: import common.idle as idle # when we launch gajim from sources @@ -90,7 +90,7 @@ class ConnectionBytestream: if contact.jid == receiver_jid: file_props['error'] = -5 self.remove_transfer(file_props) - self.dispatch('FILE_REQUEST_ERROR', (contact.jid, file_props)) + self.dispatch('FILE_REQUEST_ERROR', (contact.jid, file_props, '')) sender_jid = unicode(file_props['sender']).split('/')[0] if contact.jid == sender_jid: file_props['error'] = -3 @@ -169,12 +169,18 @@ class ConnectionBytestream: file_props['sha_str'] = sha_str if not ft_override_host_to_send: ft_override_host_to_send = self.peerhost[0] - ft_override_host_to_send = socket.gethostbyname(ft_override_host_to_send) + try: + ft_override_host_to_send = socket.gethostbyname( + ft_override_host_to_send) + except socket.gaierror: + self.dispatch('ERROR', (_('Wrong host'), _('The host you configured as the ft_override_host_to_send advanced option is not valid, so ignored.'))) + ft_override_host_to_send = self.peerhost[0] listener = gajim.socks5queue.start_listener(self.peerhost[0], port, sha_str, self._result_socks5_sid, file_props['sid']) if listener == None: file_props['error'] = -5 - self.dispatch('FILE_REQUEST_ERROR', (unicode(receiver), file_props)) + self.dispatch('FILE_REQUEST_ERROR', (unicode(receiver), file_props, + '')) self._connect_error(unicode(receiver), file_props['sid'], file_props['sid'], code = 406) return @@ -216,8 +222,8 @@ class ConnectionBytestream: iq = common.xmpp.Protocol(name = 'iq', to = unicode(file_props['sender']), typ = 'error') iq.setAttr('id', file_props['request-id']) - err = common.xmpp.ErrorNode(code = '406', typ = 'auth', name = - 'not-acceptable') + err = common.xmpp.ErrorNode(code = '403', typ = 'cancel', name = + 'forbidden', text = 'Offer Declined') iq.addChild(node=err) self.connection.send(iq) @@ -309,8 +315,8 @@ class ConnectionBytestream: if file_props is not None: self.disconnect_transfer(file_props) file_props['error'] = -3 - self.dispatch('FILE_REQUEST_ERROR', (to, file_props)) - + self.dispatch('FILE_REQUEST_ERROR', (to, file_props, msg)) + def _proxy_auth_ok(self, proxy): '''cb, called after authentication to proxy server ''' file_props = self.files_props[proxy['sid']] @@ -339,7 +345,7 @@ class ConnectionBytestream: return file_props = self.files_props[id] file_props['error'] = -4 - self.dispatch('FILE_REQUEST_ERROR', (jid, file_props)) + self.dispatch('FILE_REQUEST_ERROR', (jid, file_props, '')) raise common.xmpp.NodeProcessed def _bytestreamSetCB(self, con, iq_obj): @@ -556,7 +562,7 @@ class ConnectionBytestream: return jid = helpers.get_jid_from_iq(iq_obj) file_props['error'] = -3 - self.dispatch('FILE_REQUEST_ERROR', (jid, file_props)) + self.dispatch('FILE_REQUEST_ERROR', (jid, file_props, '')) raise common.xmpp.NodeProcessed class ConnectionDisco: @@ -580,8 +586,8 @@ class ConnectionDisco: iq.setID(id) # Wait the answer during 30 secondes self.awaiting_timeouts[gajim.idlequeue.current_time() + 30] = (id, - _('Registration information for transport %s has not arrived in time' % \ - agent)) + _('Registration information for transport %s has not arrived in time') % \ + agent) self.connection.SendAndCallForResponse(iq, self._ReceivedRegInfo, {'agent': agent}) @@ -726,17 +732,28 @@ class ConnectionDisco: qc = iq_obj.getQueryChildren() if not qc: qc = [] + is_muc = False + transport_type = '' for i in qc: if i.getName() == 'identity': attr = {} for key in i.getAttrs().keys(): attr[key] = i.getAttr(key) + if attr.has_key('category') and attr['category'] in ('gateway', 'headline')\ + and attr.has_key('type'): + transport_type = attr['type'] + if attr.has_key('category') and attr['category'] == 'conference' \ + and attr.has_key('type') and attr['type'] == 'text': + is_muc = True identities.append(attr) elif i.getName() == 'feature': features.append(i.getAttr('var')) - elif i.getName() == 'x' and i.getAttr('xmlns') == common.xmpp.NS_DATA: + elif i.getName() == 'x' and i.getNamespace() == common.xmpp.NS_DATA: data.append(common.xmpp.DataForm(node=i)) jid = helpers.get_full_jid_from_iq(iq_obj) + if transport_type and jid not in gajim.transport_type: + gajim.transport_type[jid] = transport_type + gajim.logger.save_transport_type(jid, transport_type) id = iq_obj.getID() if not identities: # ejabberd doesn't send identities when we browse online users #FIXME: see http://www.jabber.ru/bugzilla/show_bug.cgi?id=225 @@ -744,6 +761,14 @@ class ConnectionDisco: if id[0] == 'p': if features.__contains__(common.xmpp.NS_BYTESTREAM): gajim.proxy65_manager.resolve(jid, self.connection, self.name) + if features.__contains__(common.xmpp.NS_MUC) and is_muc: + type_ = transport_type or 'jabber' + self.muc_jid[type_] = jid + if transport_type: + if self.available_transports.has_key(transport_type): + self.available_transports[transport_type].append(jid) + else: + self.available_transports[transport_type] = [jid] self.dispatch('AGENT_INFO_INFO', (jid, node, identities, features, data)) @@ -851,7 +876,10 @@ class ConnectionVcard: id = self.connection.getAnID() iq.setID(id) - self.awaiting_answers[id] = (VCARD_ARRIVED, jid) + j = jid + if not j: + j = gajim.get_jid_from_account(self.name) + self.awaiting_answers[id] = (VCARD_ARRIVED, j) if is_fake_jid: room_jid, nick = gajim.get_room_and_nick_from_fjid(jid) if not room_jid in self.room_jids: @@ -939,9 +967,12 @@ class ConnectionVcard: elif self.awaiting_answers[id][0] == VCARD_ARRIVED: # If vcard is empty, we send to the interface an empty vcard so that # it knows it arrived - if not iq_obj.getTag('vCard'): - jid = self.awaiting_answers[id][1] - our_jid = gajim.get_jid_from_account(self.name) + jid = self.awaiting_answers[id][1] + our_jid = gajim.get_jid_from_account(self.name) + if iq_obj.getType() == 'error' and jid == our_jid: + # our server doesn't support vcard + self.vcard_supported = False + if not iq_obj.getTag('vCard') or iq_obj.getType() == 'error': if jid and jid != our_jid: # Write an empty file self.save_vcard_to_hd(jid, '') @@ -951,6 +982,29 @@ class ConnectionVcard: elif self.awaiting_answers[id][0] == AGENT_REMOVED: jid = self.awaiting_answers[id][1] self.dispatch('AGENT_REMOVED', jid) + elif self.awaiting_answers[id][0] == METACONTACTS_ARRIVED: + if iq_obj.getType() == 'result': + # Metacontact tags + # http://www.jabber.org/jeps/jep-XXXX.html + meta_list = {} + query = iq_obj.getTag('query') + storage = query.getTag('storage') + metas = storage.getTags('meta') + for meta in metas: + jid = meta.getAttr('jid') + tag = meta.getAttr('tag') + data = {'jid': jid} + order = meta.getAttr('order') + if order != None: + data['order'] = order + if meta_list.has_key(tag): + meta_list[tag].append(data) + else: + meta_list[tag] = [data] + self.dispatch('METACONTACTS', meta_list) + # We can now continue connection by requesting the roster + self.connection.initRoster() + del self.awaiting_answers[id] def _vCardCB(self, con, vc): @@ -1051,6 +1105,9 @@ class ConnectionHandlers(ConnectionVcard, ConnectionBytestream, ConnectionDisco) # keep the jids we auto added (transports contacts) to not send the # SUBSCRIBED event to gui self.automatically_added = [] + # keep the latest subscribed event for each jid to prevent loop when we + # acknoledge presences + self.subscribed_events = {} try: idle.init() except: @@ -1077,7 +1134,7 @@ class ConnectionHandlers(ConnectionVcard, ConnectionBytestream, ConnectionDisco) raise common.xmpp.NodeProcessed def _ErrorCB(self, con, iq_obj): - errmsg = iq_obj.getError() + errmsg = iq_obj.getErrorMsg() errcode = iq_obj.getErrorCode() jid_from = helpers.get_full_jid_from_iq(iq_obj) id = unicode(iq_obj.getID()) @@ -1113,26 +1170,6 @@ class ConnectionHandlers(ConnectionVcard, ConnectionBytestream, ConnectionDisco) self.bookmarks.append(bm) self.dispatch('BOOKMARKS', self.bookmarks) - elif ns == 'storage:metacontacts': - # Metacontact tags - # http://www.jabber.org/jeps/jep-XXXX.html - meta_list = {} - metas = storage.getTags('meta') - for meta in metas: - jid = meta.getAttr('jid') - tag = meta.getAttr('tag') - data = {'jid': jid} - order = meta.getAttr('order') - if order != None: - data['order'] = order - if meta_list.has_key(tag): - meta_list[tag].append(data) - else: - meta_list[tag] = [data] - self.dispatch('METACONTACTS', meta_list) - # We can now continue connection by requesting the roster - self.connection.initRoster() - elif ns == 'gajim:prefs': # Preferences data # http://www.jabber.org/jeps/jep-0049.html @@ -1215,6 +1252,16 @@ class ConnectionHandlers(ConnectionVcard, ConnectionBytestream, ConnectionDisco) jid_stripped, resource = gajim.get_room_and_nick_from_fjid(who) self.dispatch('OS_INFO', (jid_stripped, resource, client_info, os_info)) + def _TimeCB(self, con, iq_obj): + gajim.log.debug('TimeCB') + iq_obj = iq_obj.buildReply('result') + qp = iq_obj.getTag('query') + qp.setTagData('utc', strftime("%Y%m%dT%T", gmtime())) + qp.setTagData('tz', strftime("%Z", gmtime())) + qp.setTagData('display', strftime("%c", localtime())) + self.connection.send(iq_obj) + raise common.xmpp.NodeProcessed + def _gMailNewMailCB(self, con, gm): '''Called when we get notified of new mail messages in gmail account''' @@ -1239,9 +1286,20 @@ class ConnectionHandlers(ConnectionVcard, ConnectionBytestream, ConnectionDisco) newmsgs = gm.getTag('mailbox').getAttr('total-matched') if newmsgs != '0': # there are new messages + gmail_messages_list = [] + if gm.getTag('mailbox').getTag('mail-thread-info'): + gmail_messages = gm.getTag('mailbox').getTags('mail-thread-info') + for gmessage in gmail_messages: + gmail_from = gmessage.getTag('senders').getTag('sender').getAttr('address') + gmail_subject = gmessage.getTag('subject').getData() + gmail_snippet = gmessage.getTag('snippet').getData() + gmail_messages_list.append({ \ + 'From': gmail_from, \ + 'Subject': gmail_subject, \ + 'Snippet': gmail_snippet}) jid = gajim.get_jid_from_account(self.name) gajim.log.debug(('You have %s new gmail e-mails on %s.') % (newmsgs, jid)) - self.dispatch('GMAIL_NOTIFY', (jid, newmsgs)) + self.dispatch('GMAIL_NOTIFY', (jid, newmsgs, gmail_messages_list)) raise common.xmpp.NodeProcessed def _messageCB(self, con, msg): @@ -1295,7 +1353,11 @@ class ConnectionHandlers(ConnectionVcard, ConnectionBytestream, ConnectionDisco) composing_jep = 'JEP-0022' if not msgtxt and chatstate_child.getTag('composing'): chatstate = 'composing' - + # JEP-0172 User Nickname + user_nick = msg.getTagData('nick') + if not user_nick: + user_nick = '' + if encTag and GnuPG.USE_GPG: #decrypt encmsg = encTag.getData() @@ -1325,9 +1387,11 @@ class ConnectionHandlers(ConnectionVcard, ConnectionBytestream, ConnectionDisco) # Ignore message from room in which we are not if not self.last_history_line.has_key(jid): return - self.dispatch('GC_MSG', (frm, msgtxt, tim)) - if self.name not in no_log_for and jid in self.last_history_line \ - and not int(float(time.mktime(tim))) <= \ + has_timestamp = False + if msg.timestamp: + has_timestamp = True + self.dispatch('GC_MSG', (frm, msgtxt, tim, has_timestamp)) + if self.name not in no_log_for and not int(float(time.mktime(tim))) <= \ self.last_history_line[jid] and msgtxt: gajim.logger.write('gc_msg', frm, msgtxt, tim = tim) elif mtype == 'chat': # it's type 'chat' @@ -1338,7 +1402,7 @@ class ConnectionHandlers(ConnectionVcard, ConnectionBytestream, ConnectionDisco) msg_id = gajim.logger.write('chat_msg_recv', frm, msgtxt, tim = tim, subject = subject) self.dispatch('MSG', (frm, msgtxt, tim, encrypted, mtype, subject, - chatstate, msg_id, composing_jep)) + chatstate, msg_id, composing_jep, user_nick)) else: # it's single message if self.name not in no_log_for and jid not in no_log_for and msgtxt: gajim.logger.write('single_msg_recv', frm, msgtxt, tim = tim, @@ -1352,7 +1416,7 @@ class ConnectionHandlers(ConnectionVcard, ConnectionBytestream, ConnectionDisco) self.dispatch('GC_INVITATION',(frm, jid_from, reason, password)) else: self.dispatch('MSG', (frm, msgtxt, tim, encrypted, 'normal', - subject, chatstate, msg_id, composing_jep)) + subject, chatstate, msg_id, composing_jep, user_nick)) # END messageCB def _presenceCB(self, con, prs): @@ -1361,27 +1425,42 @@ class ConnectionHandlers(ConnectionVcard, ConnectionBytestream, ConnectionDisco) if ptype == 'available': ptype = None gajim.log.debug('PresenceCB: %s' % ptype) - who = helpers.get_full_jid_from_iq(prs) + try: + who = helpers.get_full_jid_from_iq(prs) + except: + if prs.getTag('error').getTag('jid-malformed'): + # wrong jid, we probably tried to change our nick in a room to a non valid + # one + who = str(prs.getFrom()) + jid_stripped, resource = gajim.get_room_and_nick_from_fjid(who) + self.dispatch('GC_MSG', (jid_stripped, _('Nickname not allowed: %s') % \ + resource, None, False)) + return jid_stripped, resource = gajim.get_room_and_nick_from_fjid(who) timestamp = None is_gc = False # is it a GC presence ? sigTag = None avatar_sha = None + # JEP-0172 User Nickname + user_nick = prs.getTagData('nick') + if not user_nick: + user_nick = '' transport_auto_auth = False xtags = prs.getTags('x') for x in xtags: - if x.getNamespace().startswith(common.xmpp.NS_MUC): + namespace = x.getNamespace() + if namespace.startswith(common.xmpp.NS_MUC): is_gc = True - if x.getNamespace() == common.xmpp.NS_SIGNED: + if namespace == common.xmpp.NS_SIGNED: sigTag = x - if x.getNamespace() == common.xmpp.NS_VCARD_UPDATE: + if namespace == common.xmpp.NS_VCARD_UPDATE: avatar_sha = x.getTagData('photo') - if x.getNamespace() == common.xmpp.NS_DELAY: + if namespace == common.xmpp.NS_DELAY: # JEP-0091 tim = prs.getTimestamp() tim = time.strptime(tim, '%Y%m%dT%H:%M:%S') timestamp = time.localtime(timegm(tim)) - if x.getNamespace() == 'http://delx.cjb.net/protocol/roster-subsync': + if namespace == 'http://delx.cjb.net/protocol/roster-subsync': # see http://trac.gajim.org/ticket/326 agent = gajim.get_server_from_jid(jid_stripped) if self.connection.getRoster().getItem(agent): # to be sure it's a transport contact @@ -1389,7 +1468,7 @@ class ConnectionHandlers(ConnectionVcard, ConnectionBytestream, ConnectionDisco) no_log_for = gajim.config.get_per('accounts', self.name, 'no_log_for').split() - status = prs.getStatus() + status = prs.getStatus() or '' show = prs.getShow() if not show in STATUS_LIST: show = '' # We ignore unknown show @@ -1448,7 +1527,16 @@ class ConnectionHandlers(ConnectionVcard, ConnectionBytestream, ConnectionDisco) if not ptype or ptype == 'unavailable': if gajim.config.get('log_contact_status_changes') and self.name\ not in no_log_for and jid_stripped not in no_log_for: - gajim.logger.write('gcstatus', who, status, show) + gc_c = gajim.contacts.get_gc_contact(self.name, jid_stripped, resource) + st = status or '' + if gc_c: + jid = gc_c.jid + else: + jid = prs.getJid() + if jid: + # we know real jid, save it in db + st += ' (%s)' % jid + gajim.logger.write('gcstatus', who, st, show) if avatar_sha: if self.vcard_shas.has_key(who): if avatar_sha != self.vcard_shas[who]: @@ -1475,23 +1563,49 @@ class ConnectionHandlers(ConnectionVcard, ConnectionBytestream, ConnectionDisco) resource, prio, keyID, timestamp)) if transport_auto_auth: self.automatically_added.append(jid_stripped) - self.request_subscription(jid_stripped) + self.request_subscription(jid_stripped, name = user_nick) else: if not status: status = _('I would like to add you to my roster.') - self.dispatch('SUBSCRIBE', (who, status)) + self.dispatch('SUBSCRIBE', (who, status, user_nick)) elif ptype == 'subscribed': if jid_stripped in self.automatically_added: self.automatically_added.remove(jid_stripped) else: - self.dispatch('SUBSCRIBED', (jid_stripped, resource)) + # detect a subscription loop + if not self.subscribed_events.has_key(jid_stripped): + self.subscribed_events[jid_stripped] = [] + self.subscribed_events[jid_stripped].append(time.time()) + block = False + if len(self.subscribed_events[jid_stripped]) > 5: + if time.time() - self.subscribed_events[jid_stripped][0] < 5: + block = True + self.subscribed_events[jid_stripped] = self.subscribed_events[jid_stripped][1:] + if block: + gajim.config.set_per('account', self.name, + 'dont_ack_subscription', True) + else: + self.dispatch('SUBSCRIBED', (jid_stripped, resource)) # BE CAREFUL: no con.updateRosterItem() in a callback gajim.log.debug(_('we are now subscribed to %s') % who) elif ptype == 'unsubscribe': gajim.log.debug(_('unsubscribe request from %s') % who) elif ptype == 'unsubscribed': gajim.log.debug(_('we are now unsubscribed from %s') % who) - self.dispatch('UNSUBSCRIBED', jid_stripped) + # detect a unsubscription loop + if not self.subscribed_events.has_key(jid_stripped): + self.subscribed_events[jid_stripped] = [] + self.subscribed_events[jid_stripped].append(time.time()) + block = False + if len(self.subscribed_events[jid_stripped]) > 5: + if time.time() - self.subscribed_events[jid_stripped][0] < 5: + block = True + self.subscribed_events[jid_stripped] = self.subscribed_events[jid_stripped][1:] + if block: + gajim.config.set_per('account', self.name, 'dont_ack_subscription', + True) + else: + self.dispatch('UNSUBSCRIBED', jid_stripped) elif ptype == 'error': errmsg = prs.getError() errcode = prs.getErrorCode() @@ -1650,13 +1764,18 @@ class ConnectionHandlers(ConnectionVcard, ConnectionBytestream, ConnectionDisco) print >> sys.stderr, _('JID %s is not RFC compliant. It will not be added to your roster. Use roster management tools such as http://jru.jabberstudio.org/ to remove it') % jid else: infos = raw_roster[jid] - if jid != our_jid and (not infos['subscription'] or infos['subscription'] == \ - 'none') and (not infos['ask'] or infos['ask'] == 'none') and not infos['name'] \ - and not infos['groups']: + if jid != our_jid and (not infos['subscription'] or \ + infos['subscription'] == 'none') and (not infos['ask'] or \ + infos['ask'] == 'none') and not infos['name'] and \ + not infos['groups']: # remove this useless item, it won't be shown in roster anyway self.connection.getRoster().delItem(jid) elif jid != our_jid: # don't add our jid roster[j] = raw_roster[jid] + if gajim.jid_is_transport(jid) and \ + not gajim.get_transport_name_from_jid(jid): + # we can't determine which iconset to use + self.discoverInfo(jid) self.dispatch('ROSTER', roster) @@ -1694,7 +1813,7 @@ class ConnectionHandlers(ConnectionVcard, ConnectionBytestream, ConnectionDisco) # If it's a gmail account, # inform the server that we want e-mail notifications - if gajim.get_server_from_jid(our_jid) == 'gmail.com': + if gajim.get_server_from_jid(our_jid) in gajim.gmail_domains: gajim.log.debug(('%s is a gmail account. Setting option ' 'to get e-mail notifications on the server.') % (our_jid)) iq = common.xmpp.Iq(typ = 'set', to = our_jid) @@ -1748,6 +1867,8 @@ class ConnectionHandlers(ConnectionVcard, ConnectionBytestream, ConnectionDisco) common.xmpp.NS_DISCO_INFO) con.RegisterHandler('iq', self._VersionCB, 'get', common.xmpp.NS_VERSION) + con.RegisterHandler('iq', self._TimeCB, 'get', + common.xmpp.NS_TIME) con.RegisterHandler('iq', self._LastCB, 'get', common.xmpp.NS_LAST) con.RegisterHandler('iq', self._LastResultCB, 'result', @@ -1762,8 +1883,6 @@ class ConnectionHandlers(ConnectionVcard, ConnectionBytestream, ConnectionDisco) common.xmpp.NS_ROSTER) con.RegisterHandler('iq', self._PrivateCB, 'result', common.xmpp.NS_PRIVATE) - con.RegisterHandler('iq', self._PrivateErrorCB, 'error', - common.xmpp.NS_PRIVATE) con.RegisterHandler('iq', self._HttpAuthCB, 'get', common.xmpp.NS_HTTP_AUTH) con.RegisterHandler('iq', self._gMailNewMailCB, 'set', diff --git a/src/common/contacts.py b/src/common/contacts.py index e04df52d2..e6d095641 100644 --- a/src/common/contacts.py +++ b/src/common/contacts.py @@ -210,7 +210,7 @@ class Contacts: contacts = self.get_contacts_from_jid(account, jid) if not contacts and '/' in jid: # jid may be a fake jid, try it - room, nick = jid.split('/') + room, nick = jid.split('/', 1) contact = self.get_gc_contact(account, room, nick) return contact return self.get_highest_prio_contact_from_contacts(contacts) @@ -324,8 +324,11 @@ class Contacts: max_order = data_['order'] contact = self.get_contact_with_highest_priority(account, jid) score = (max_order - order)*10000 - if not common.gajim.jid_is_transport(jid): - score += contact.priority*10 + + if common.gajim.get_transport_name_from_jid(jid) is None: + score += 10 + if contact.priority > 0: + score += contact.priority * 10 score += ['not in roster', 'error', 'offline', 'invisible', 'dnd', 'xa', 'away', 'chat', 'online', 'requested', 'message'].index(contact.show) return score diff --git a/src/common/events.py b/src/common/events.py new file mode 100644 index 000000000..4a7ba9e87 --- /dev/null +++ b/src/common/events.py @@ -0,0 +1,233 @@ +## common/events.py +## +## Contributors for this file: +## - Yann Le Boulanger +## +## Copyright (C) 2006 Yann Le Boulanger +## Vincent Hanquez +## Nikos Kouremenos +## Dimitur Kirov +## Travis Shirk +## Norman Rasmussen +## +## This program is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published +## by the Free Software Foundation; version 2 only. +## +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. +## + +import time +import gajim + +class Event: + '''Information concerning each event''' + def __init__(self, type_, time_, parameters, show_in_roster = False, + show_in_systray = True): + ''' type_ in chat, normal, file-request, file-error, file-completed, + file-request-error, file-send-error, file-stopped, gc_msg, pm, + printed_chat, printed_gc_msg, printed_pm + parameters is (per type_): + chat, normal: [message, subject, kind, time, encrypted, resource, + msg_id] + where kind in error, incoming + file-*: file_props + gc_msg: None + printed_*: None + messages that are already printed in chat, but not read''' + self.type_ = type_ + self.time_ = time_ + self.parameters = parameters + self.show_in_roster = show_in_roster + self.show_in_systray = show_in_systray + +class Events: + '''Information concerning all events''' + def __init__(self): + self._events = {} # list of events {acct: {jid1: [E1, E2]}, } + + def change_account_name(self, old_name, new_name): + if self._events.has_key(old_name): + self._events[new_name] = self._events[old_name] + del self._events[old_name] + + def add_account(self, account): + self._events[account] = {} + + def get_accounts(self): + return self._events.keys() + + def remove_account(self, account): + del self._events[account] + + def create_event(self, type_, parameters, time_ = time.time(), + show_in_roster = False, show_in_systray = True): + return Event(type_, time_, parameters, show_in_roster, + show_in_systray) + + def add_event(self, account, jid, event): + # No such account before ? + if not self._events.has_key(account): + self._events[account] = {jid: [event]} + # no such jid before ? + elif not self._events[account].has_key(jid): + self._events[account][jid] = [event] + else: + self._events[account][jid].append(event) + if event.show_in_systray and gajim.interface.systray_capabilities: + gajim.interface.systray.set_img() + + def remove_events(self, account, jid, event = None, types = []): + '''if event is not speficied, remove all events from this jid, + optionnaly only from given type + return True if no such event found''' + if not self._events.has_key(account): + return True + if not self._events[account].has_key(jid): + return True + if event: # remove only one event + if event in self._events[account][jid]: + if len(self._events[account][jid]) == 1: + del self._events[account][jid] + else: + self._events[account][jid].remove(event) + if event.show_in_systray and gajim.interface.systray_capabilities: + gajim.interface.systray.set_img() + return + else: + return True + if types: + new_list = [] # list of events to keep + for ev in self._events[account][jid]: + if ev.type_ not in types: + new_list.append(ev) + if len(new_list) == len(self._events[account][jid]): + return True + if new_list: + self._events[account][jid] = new_list + else: + del self._events[account][jid] + if gajim.interface.systray_capabilities: + gajim.interface.systray.set_img() + return + # no event nor type given, remove them all + del self._events[account][jid] + if gajim.interface.systray_capabilities: + gajim.interface.systray.set_img() + + def get_nb_events(self, types = []): + return self._get_nb_events(types = types) + + def get_events(self, account, jid = None, types = []): + '''if event is not speficied, remove all events from this jid, + optionnaly only from given type''' + if not self._events.has_key(account): + return [] + if not jid: + return self._events[account] + if not self._events[account].has_key(jid): + return [] + events_list = [] # list of events + for ev in self._events[account][jid]: + if not types or ev.type_ in types: + events_list.append(ev) + return events_list + + def get_first_event(self, account, jid = None, type_ = None): + '''Return the first event of type type_ if given''' + events_list = self.get_events(account, jid, type_) + # be sure it's bigger than latest event + first_event_time = time.time() + 1 + first_event = None + for event in events_list: + if event.time_ < first_event_time: + first_event_time = event.time_ + first_event = event + return first_event + + def _get_nb_events(self, account = None, jid = None, attribute = None, types = []): + '''return the number of events''' + nb = 0 + if account: + accounts = [account] + else: + accounts = self._events.keys() + for acct in accounts: + if not self._events.has_key(acct): + continue + if jid: + jids = [jid] + else: + jids = self._events[acct].keys() + for j in jids: + if not self._events[acct].has_key(j): + continue + for event in self._events[acct][j]: + if types and event.type_ not in types: + continue + if not attribute or \ + attribute == 'systray' and event.show_in_systray or \ + attribute == 'roster' and event.show_in_roster: + nb += 1 + return nb + + def _get_some_events(self, attribute): + '''attribute in systray, roster''' + events = {} + for account in self._events: + events[account] = {} + for jid in self._events[account]: + events[account][jid] = [] + for event in self._events[account][jid]: + if attribute == 'systray' and event.show_in_systray or \ + attribute == 'roster' and event.show_in_roster: + events[account][jid].append(event) + if not events[account][jid]: + del events[account][jid] + if not events[account]: + del events[account] + return events + + def _get_first_event_with_attribute(self, events): + '''get the first event + events is in the form {account1: {jid1: [ev1, ev2], },. }''' + # be sure it's bigger than latest event + first_event_time = time.time() + 1 + first_account = None + first_jid = None + first_event = None + for account in events: + for jid in events[account]: + for event in events[account][jid]: + if event.time_ < first_event_time: + first_event_time = event.time_ + first_account = account + first_jid = jid + first_event = event + return first_account, first_jid, first_event + + def get_nb_systray_events(self, types = []): + '''returns the number of events displayedin roster''' + return self._get_nb_events(attribute = 'systray', types = types) + + def get_systray_events(self): + '''return all events that must be displayed in systray: + {account1: {jid1: [ev1, ev2], },. }''' + return self._get_some_events('systray') + + def get_first_systray_event(self): + events = self.get_systray_events() + return self._get_first_event_with_attribute(events) + + def get_nb_roster_events(self, account = None, jid = None, types = []): + '''returns the number of events displayedin roster''' + return self._get_nb_events(attribute = 'roster', account = account, + jid = jid, types = types) + + def get_roster_events(self): + '''return all events that must be displayed in roster: + {account1: {jid1: [ev1, ev2], },. }''' + return self._get_some_events('roster') diff --git a/src/common/exceptions.py b/src/common/exceptions.py index 3389f3aab..0b1bc8c4a 100644 --- a/src/common/exceptions.py +++ b/src/common/exceptions.py @@ -23,9 +23,6 @@ ## GNU General Public License for more details. ## -from common import i18n -_ = i18n._ - class PysqliteNotAvailable(Exception): '''sqlite2 is not installed or python bindings are missing''' def __init__(self): diff --git a/src/common/fuzzyclock.py b/src/common/fuzzyclock.py new file mode 100755 index 000000000..c7e1f6732 --- /dev/null +++ b/src/common/fuzzyclock.py @@ -0,0 +1,134 @@ +## fuzzyclock.py +## +## Contributors for this file: +## +## - Yann Le Boulanger +## - Christoph Neuroth +## +## Copyright (C) 2006 Christoph Neuroth +## Yann Le Boulanger +## Dimitur Kirov +## Travis Shirk +## +## This program is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published +## by the Free Software Foundation; version 2 only. +## +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. +## + +''' +Python class to show a "fuzzy clock". +Homepage: http://home.gna.org/fuzzyclock/ +Project Page: http://gna.org/projects/fuzzyclock + +The class has been ported from PHP code by +Henrique Recidive which was +in turn based on the Fuzzy Clock Applet of Frerich Raabe (KDE). +So most of the credit goes to this guys, thanks :-) +''' + +import time + +class FuzzyClock: + def __init__(self): + self.__hour = 0 + self.__minute = 0 + self.__dayOfWeek = 0 + + self.__hourNames = [ _('one'), _('two'), _('three'), _('four'), _('five'), _('six'), + _('seven'), _('eight'), _('nine'), _('ten'), _('eleven'), + _('twelve')] + + #Strings to use for the output. %0 will be replaced with the preceding hour (e.g. "x PAST %0"), %1 with the coming hour (e.g. "x TO %1). ''' + self.__normalFuzzy = [ _("%0 o'clock"), _('five past %0'), _('ten past %0'), + _('quarter past %0'), _('twenty past %0'), + _('twenty five past %0'), _('half past %0'), + _('twenty five to %1'), _('twenty to %1'), + _('quarter to %1'), _('ten to %1'), _('five to %1'), + _("%1 o'clock") ] + + #A "singular-form". It is used when talking about hour 0 + self.__normalFuzzyOne = [ _("%0 o'clock"), _('five past %0'), + _('ten past %0'), _('quarter past %0'), + _('twenty past %0'), _('twenty five past %0'), + _('half past %0'), _('twenty five to %1'), + _('twenty to %1'), _('quarter to %1'), + _('ten to %1'), _('five to %1'), _("%1 o'clock") ] + + self.__dayTime = [ _('Night'), _('Early morning'), _('Morning'), _('Almost noon'), + _('Noon'), _('Afternoon'), _('Evening'), _('Late evening') ] + + self.__fuzzyWeek = [ _('Start of week'), _('Middle of week'), _('End of week'), + _('Weekend!') ] + + self.setCurrent() + + def setHour(self,hour): + self.__hour = int(hour) + + def setMinute(self,minute): + self.__minute=int(minute) + + def setDayOfWeek(self,day): + self.__dayOfWeek=int(day) + + def setTime(self,time): + timeArray = time.split(":") + self.setHour(timeArray[0]) + self.setMinute(timeArray[1]) + + def setCurrent(self): + hour=time.strftime("%H") + minute=time.strftime("%M") + day=time.strftime("%w") + + self.setTime(hour+":"+minute) + self.setDayOfWeek(day) + + def getFuzzyTime(self, fuzzyness = 1): + sector = 0 + realHour = 0 + + if fuzzyness == 1 or fuzzyness == 2: + if fuzzyness == 1: + if self.__minute >2: + sector = (self.__minute - 3) / 5 +1 + else: + if self.__minute > 6: + sector = ((self.__minute - 7) / 15 + 1) * 3 + + newTimeStr = self.__normalFuzzy[sector] + #%0 or %1? + deltaHour = int(newTimeStr[newTimeStr.find("%")+1]) + + if (self.__hour + deltaHour) % 12 > 0: + realHour = (self.__hour + deltaHour) % 12 - 1 + else: + realHour = 12 - ((self.__hour + deltaHour) % 12 + 1) + + if realHour == 0: + newTimeStr = self.__normalFuzzyOne[sector] + + newTimeStr = newTimeStr.replace("%"+str(deltaHour), + self.__hourNames[realHour]) + + + elif fuzzyness == 3: + newTimeStr = self.__dayTime[self.__hour / 3] + + else: + dayOfWeek = self.__dayOfWeek + if dayOfWeek == 1: + newTimeStr = self.__fuzzyWeek[0] + elif dayOfWeek >= 2 and dayOfWeek <= 4: + newTimeStr = self.__fuzzyWeek[1] + elif dayOfWeek == 5: + newTimeStr = self.__fuzzyWeek[2] + else: + newTimeStr = self.__fuzzyWeek[3] + + return newTimeStr diff --git a/src/common/gajim.py b/src/common/gajim.py index b4afc2508..dc7794e6e 100644 --- a/src/common/gajim.py +++ b/src/common/gajim.py @@ -23,10 +23,11 @@ import locale import config from contacts import Contacts +from events import Events interface = None # The actual interface (the gtk one for the moment) -version = '0.10' config = config.Config() +version = config.get('version') connections = {} verbose = False @@ -81,6 +82,10 @@ if LANG is None: else: LANG = LANG[:2] # en, fr, el etc.. +gmail_domains = ['gmail.com', 'googlemail.com'] + +transport_type = {} # list the type of transport + last_message_time = {} # list of time of the latest incomming message # {acct1: {jid1: time1, jid2: time2}, } encrypted_chats = {} # list of encrypted chats {acct1: [jid1, jid2], ..} @@ -88,23 +93,20 @@ encrypted_chats = {} # list of encrypted chats {acct1: [jid1, jid2], ..} contacts = Contacts() gc_connected = {} # tell if we are connected to the room or not {acct: {room_jid: True}} gc_passwords = {} # list of the pass required to enter a room {room_jid: password} +automatic_rooms = {} # list of rooms that must be automaticaly configured and for which we have a list of invities {account: {room_jid: {'invities': []}}} groups = {} # list of groups newly_added = {} # list of contacts that has just signed in to_be_removed = {} # list of contacts that has just signed out -awaiting_events = {} # list of messages/FT reveived but not printed - # awaiting_events[jid] = (type, (data1, data2, ...)) - # if type in ('chat', 'normal'): data = (message, subject, kind, time, - # encrypted, resource) - # kind can be (incoming, error) - # if type in file-request, file-request-error, file-send-error, file-error, - # file-completed, file-stopped: - # data = file_props +events = Events() + nicks = {} # list of our nick names in each account # should we block 'contact signed in' notifications for this account? # this is only for the first 30 seconds after we change our show # to something else than offline +# can also contain account/transport_jid to block notifications for contacts +# from this transport block_signed_in_notifications = {} con_types = {} # type of each connection (ssl, tls, tcp, ...) @@ -218,8 +220,11 @@ def get_transport_name_from_jid(jid, use_config_setting = True): # jid was None. Yann why? if not jid or (use_config_setting and not config.get('use_transports_iconsets')): return - + host = get_server_from_jid(jid) + if host in transport_type: + return transport_type[host] + # host is now f.e. icq.foo.org or just icq (sometimes on hacky transports) host_splitted = host.split('.') if len(host_splitted) != 0: @@ -229,7 +234,7 @@ def get_transport_name_from_jid(jid, use_config_setting = True): if host == 'aim': return 'aim' elif host == 'gg': - return 'gadugadu' + return 'gadu-gadu' elif host == 'irc': return 'irc' elif host == 'icq': @@ -277,18 +282,6 @@ def get_hostname_from_account(account_name, use_srv = False): return config.get_per('accounts', account_name, 'custom_host') return config.get_per('accounts', account_name, 'hostname') -def get_first_event(account, jid, typ = None): - '''returns the first event of the given type from the awaiting_events queue''' - if not awaiting_events[account].has_key(jid): - return None - q = awaiting_events[account][jid] - if not typ: - return q[0] - for ev in q: - if ev[0] == typ: - return ev - return None - def get_notification_image_prefix(jid): '''returns the prefix for the notification images''' transport_name = get_transport_name_from_jid(jid) diff --git a/src/common/helpers.py b/src/common/helpers.py index a5574cc96..1226f2cd5 100644 --- a/src/common/helpers.py +++ b/src/common/helpers.py @@ -18,6 +18,7 @@ import sre import os +import subprocess import urllib import errno import select @@ -26,7 +27,7 @@ import sha from encodings.punycode import punycode_encode import gajim -import i18n +from i18n import Q_ from xmpp_stringprep import nodeprep, resourceprep, nameprep try: @@ -36,9 +37,6 @@ try: except: pass -_ = i18n._ -Q_ = i18n.Q_ - special_groups = (_('Transports'), _('Not in Roster'), _('Observers')) class InvalidFormat(Exception): @@ -363,6 +361,11 @@ def is_in_path(name_of_command, return_abs_path = False): else: return is_in_dir +def exec_command(command): + '''command is a string that contain arguments''' +# os.system(command) + subprocess.Popen(command.split()) + def launch_browser_mailer(kind, uri): #kind = 'url' or 'mail' if os.name == 'nt': @@ -386,11 +389,9 @@ def launch_browser_mailer(kind, uri): command = gajim.config.get('custommailapp') if command == '': # if no app is configured return - # we add the uri in "" so we have good parsing from shell - uri = uri.replace('"', '\\"') # escape " - command = command + ' "' + uri + '" &' - try: #FIXME: when we require python2.4+ use subprocess module - os.system(command) + command = command + ' ' + uri + try: + exec_command(command) except: pass @@ -409,11 +410,9 @@ def launch_file_manager(path_to_open): command = gajim.config.get('custom_file_manager') if command == '': # if no app is configured return - # we add the path in "" so we have good parsing from shell - path_to_open = path_to_open.replace('"', '\\"') # escape " - command = command + ' "' + path_to_open + '" &' - try: #FIXME: when we require python2.4+ use subprocess module - os.system(command) + command = command + ' ' + path_to_open + try: + exec_command(command) except: pass @@ -421,6 +420,9 @@ def play_sound(event): if not gajim.config.get('sounds_on'): return path_to_soundfile = gajim.config.get_per('soundevents', event, 'path') + play_sound_file(path_to_soundfile) + +def play_sound_file(path_to_soundfile): if path_to_soundfile == 'beep': print '\a' # make a speaker beep return @@ -436,11 +438,8 @@ def play_sound(event): if gajim.config.get('soundplayer') == '': return player = gajim.config.get('soundplayer') - # we add the path in "" so we have good parsing from shell - path_to_soundfile = path_to_soundfile.replace('"', '\\"') # escape " - command = player + ' "' + path_to_soundfile + '" &' - #FIXME: when we require 2.4+ use subprocess module - os.system(command) + command = player + ' ' + path_to_soundfile + exec_command(command) def get_file_path_from_dnd_dropped_uri(uri): path = urllib.url2pathname(uri) # escape special chars @@ -464,14 +463,6 @@ def from_xs_boolean_to_python_boolean(value): return val -def ensure_unicode_string(s): - # py23 u'abc'.decode('utf-8') raises - # python24 does not. if python23 is ooold we can remove this func - # FIXME: remove this when we abandon py23 - if isinstance(s, str): - s = s.decode('utf-8') - return s - def get_xmpp_show(show): if show in ('online', 'offline'): return None @@ -514,9 +505,9 @@ def get_global_status(): def get_icon_name_to_show(contact, account = None): '''Get the icon name to show in online, away, requested, ...''' - if account and gajim.awaiting_events[account].has_key(contact.jid): + if account and gajim.events.get_nb_roster_events(account, contact.jid): return 'message' - if account and gajim.awaiting_events[account].has_key( + if account and gajim.events.get_nb_roster_events(account, contact.get_full_jid()): return 'message' if contact.jid.find('@') <= 0: # if not '@' or '@' starts the jid ==> agent @@ -543,6 +534,14 @@ def decode_string(string): return string +def ensure_utf8_string(string): + '''make sure string is in UTF-8''' + try: + string = decode_string(string).encode('utf-8') + except: + pass + return string + def get_windows_reg_env(varname, default=''): '''asks for paths commonly used but not exposed as ENVs in english Windows 2003 those are: @@ -692,8 +691,11 @@ def get_os_info(): text = fd.readline().strip() # get only first line fd.close() if path_to_file.endswith('version'): - # sourcemage_version has all the info we need - if not os.path.basename(path_to_file).startswith('sourcemage'): + # sourcemage_version and slackware-version files + # have all the info we need (name and version of distro) + if not os.path.basename(path_to_file).startswith( + 'sourcemage') or not\ + os.path.basename(path_to_file).startswith('slackware'): text = distro_name + ' ' + text elif path_to_file.endswith('aurox-release'): # file doesn't have version @@ -724,20 +726,73 @@ def sanitize_filename(filename): return filename -def allow_showing_notification(account): +def allow_showing_notification(account, type = None, advanced_notif_num = None, +first = True): '''is it allowed to show nofication? - check OUR status and if we allow notifications for that status''' + check OUR status and if we allow notifications for that status + type is the option that need to be True ex: notify_on_signing + first: set it to false when it's not the first message''' + if advanced_notif_num != None: + popup = gajim.config.get_per('notifications', str(advanced_notif_num), + 'popup') + if popup == 'yes': + return True + if popup == 'no': + return False + if type and (not gajim.config.get(type) or not first): + return False + if type and gajim.config.get(type) and first: + return True if gajim.config.get('autopopupaway'): # always show notification return True if gajim.connections[account].connected in (2, 3): # we're online or chat return True return False -def allow_popup_window(account): +def allow_popup_window(account, advanced_notif_num = None): '''is it allowed to popup windows?''' + if advanced_notif_num != None: + popup = gajim.config.get_per('notifications', str(advanced_notif_num), + 'auto_open') + if popup == 'yes': + return True + if popup == 'no': + return False autopopup = gajim.config.get('autopopup') autopopupaway = gajim.config.get('autopopupaway') if autopopup and (autopopupaway or \ gajim.connections[account].connected in (2, 3)): # we're online or chat return True return False + +def allow_sound_notification(sound_event, advanced_notif_num = None): + if advanced_notif_num != None: + sound = gajim.config.get_per('notifications', str(advanced_notif_num), + 'sound') + if sound == 'yes': + return True + if sound == 'no': + return False + if gajim.config.get_per('soundevents', sound_event, 'enabled'): + return True + return False + +def get_chat_control(account, contact): + full_jid_with_resource = contact.jid + if contact.resource: + full_jid_with_resource += '/' + contact.resource + highest_contact = gajim.contacts.get_contact_with_highest_priority( + account, contact.jid) + # Look for a chat control that has the given resource, or default to + # one without resource + ctrl = gajim.interface.msg_win_mgr.get_control(full_jid_with_resource, + account) + if ctrl: + return ctrl + elif not highest_contact or not highest_contact.resource: + # unknow contact or offline message + return gajim.interface.msg_win_mgr.get_control(contact.jid, account) + elif highest_contact and contact.resource != \ + highest_contact.resource: + return None + return gajim.interface.msg_win_mgr.get_control(contact.jid, account) diff --git a/src/common/i18n.py b/src/common/i18n.py index 7af267990..ae23f0e2f 100644 --- a/src/common/i18n.py +++ b/src/common/i18n.py @@ -48,21 +48,11 @@ if os.name == 'nt': if lang: os.environ['LANG'] = lang -_translation = None - -def init(): - global _translation - try: - _translation = gettext.translation(APP, DIR) - except IOError: - _translation = gettext.NullTranslations() - -init() - -def _(s): - if s == '': - return s - return _translation.ugettext(s) +gettext.install(APP, DIR, unicode = True) +if gettext._translations: + _translation = gettext._translations.values()[0] +else: + _translation = gettext.NullTranslations() def Q_(s): # Qualified translatable strings diff --git a/src/common/logger.py b/src/common/logger.py index 01077cc78..11f784406 100644 --- a/src/common/logger.py +++ b/src/common/logger.py @@ -29,8 +29,7 @@ import time import datetime import exceptions -import i18n -_ = i18n._ +import gajim try: from pysqlite2 import dbapi2 as sqlite @@ -79,30 +78,50 @@ class Constants: self.SHOW_OFFLINE ) = range(6) + ( + self.TYPE_AIM, + self.TYPE_GG, + self.TYPE_HTTP_WS, + self.TYPE_ICQ, + self.TYPE_MSN, + self.TYPE_QQ, + self.TYPE_SMS, + self.TYPE_SMTP, + self.TYPE_TLEN, + self.TYPE_YAHOO, + self.TYPE_NEWMAIL, + self.TYPE_RSS, + self.TYPE_WEATHER, + ) = range(13) + constants = Constants() class Logger: def __init__(self): self.jids_already_in = [] # holds jids that we already have in DB - + self.con = None + if not os.path.exists(LOG_DB_PATH): # this can happen only the first time (the time we create the db) # db is not created here but in src/common/checks_paths.py return self.init_vars() - + def init_vars(self): # if locked, wait up to 20 sec to unlock # before raise (hopefully should be enough) + if self.con: + self.con.close() self.con = sqlite.connect(LOG_DB_PATH, timeout = 20.0, isolation_level = 'IMMEDIATE') self.cur = self.con.cursor() - + self.get_jids_already_in_db() def get_jids_already_in_db(self): self.cur.execute('SELECT jid FROM jids') rows = self.cur.fetchall() # list of tupples: [(u'aaa@bbb',), (u'cc@dd',)] + self.jids_already_in = [] for row in rows: # row[0] is first item of row (the only result here, the jid) self.jids_already_in.append(row[0]) @@ -193,7 +212,66 @@ class Logger: show_col = 'UNKNOWN' return kind_col, show_col - + + def convert_human_transport_type_to_db_api_values(self, type_): + '''converts from string style to constant ints for db''' + if type_ == 'aim': + return constants.TYPE_AIM + if type_ == 'gadu-gadu': + return constants.TYPE_GG + if type_ == 'http-ws': + return constants.TYPE_HTTP_WS + if type_ == 'icq': + return constants.TYPE_ICQ + if type_ == 'msn': + return constants.TYPE_MSN + if type_ == 'qq': + return constants.TYPE_QQ + if type_ == 'sms': + return constants.TYPE_SMS + if type_ == 'smtp': + return constants.TYPE_SMTP + if type_ == 'tlen': + return constants.TYPE_TLEN + if type_ == 'yahoo': + return constants.TYPE_YAHOO + if type_ == 'newmail': + return constants.TYPE_NEWMAIL + if type_ == 'rss': + return constants.TYPE_RSS + if type_ == 'weather': + return constants.TYPE_WEATHER + return None + + def convert_api_values_to_human_transport_type(self, type_id): + '''converts from constant ints for db to string style''' + if type_id == constants.TYPE_AIM: + return 'aim' + if type_id == constants.TYPE_GG: + return 'gadu-gadu' + if type_id == constants.TYPE_HTTP_WS: + return 'http-ws' + if type_id == constants.TYPE_ICQ: + return 'icq' + if type_id == constants.TYPE_MSN: + return 'msn' + if type_id == constants.TYPE_QQ: + return 'qq' + if type_id == constants.TYPE_SMS: + return 'sms' + if type_id == constants.TYPE_SMTP: + return 'smtp' + if type_id == constants.TYPE_TLEN: + return 'tlen' + if type_id == constants.TYPE_YAHOO: + return 'yahoo' + if type_id == constants.TYPE_NEWMAIL: + return 'newmail' + if type_id == constants.TYPE_RSS: + return 'rss' + if type_id == constants.TYPE_WEATHER: + return 'weather' + def commit_to_db(self, values, write_unread = False): #print 'saving', values sql = 'INSERT INTO logs (jid_id, contact_name, time, kind, show, message, subject) VALUES (?, ?, ?, ?, ?, ?, ?)' @@ -239,25 +317,8 @@ class Logger: self.cur.execute( 'SELECT message_id from unread_messages WHERE jid_id = %d' % jid_id) results = self.cur.fetchall() - # Remove before 0.10 except: - try: - self.cur.executescript('DROP TABLE unread_messages;') - self.con.commit() - except: - pass - try: - self.cur.executescript('''CREATE TABLE unread_messages( - message_id INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE, - jid_id INTEGER - );''') - self.con.commit() - except: - pass - self.con.close() - self.jids_already_in = [] - self.init_vars() - return [] + pass for message in results: msg_id = message[0] @@ -340,7 +401,7 @@ class Logger: return self.commit_to_db(values, write_unread) def get_last_conversation_lines(self, jid, restore_how_many_rows, - pending_how_many, timeout): + pending_how_many, timeout, account): '''accepts how many rows to restore and when to time them out (in minutes) (mark them as too old) and number of messages that are in queue and are already logged but pending to be viewed, @@ -348,15 +409,17 @@ class Logger: list with empty tupple if nothing found to meet our demands''' jid = jid.lower() jid_id = self.get_jid_id(jid) + where_sql = self._build_contact_where(account, jid) + now = int(float(time.time())) timed_out = now - (timeout * 60) # before that they are too old # so if we ask last 5 lines and we have 2 pending we get # 3 - 8 (we avoid the last 2 lines but we still return 5 asked) self.cur.execute(''' SELECT time, kind, message FROM logs - WHERE jid_id = %d AND kind IN (%d, %d, %d, %d) AND time > %d + WHERE (%s) AND kind IN (%d, %d, %d, %d) AND time > %d ORDER BY time DESC LIMIT %d OFFSET %d - ''' % (jid_id, constants.KIND_SINGLE_MSG_RECV, constants.KIND_CHAT_MSG_RECV, + ''' % (where_sql, constants.KIND_SINGLE_MSG_RECV, constants.KIND_CHAT_MSG_RECV, constants.KIND_SINGLE_MSG_SENT, constants.KIND_CHAT_MSG_SENT, timed_out, restore_how_many_rows, pending_how_many) ) @@ -374,35 +437,36 @@ class Logger: start_of_day = int(time.mktime(local_time)) # we have time since epoch baby :) return start_of_day - def get_conversation_for_date(self, jid, year, month, day): + def get_conversation_for_date(self, jid, year, month, day, account): '''returns contact_name, time, kind, show, message for each row in a list of tupples, returns list with empty tupple if we found nothing to meet our demands''' jid = jid.lower() jid_id = self.get_jid_id(jid) - + where_sql = self._build_contact_where(account, jid) + start_of_day = self.get_unix_time_from_date(year, month, day) - seconds_in_a_day = 86400 # 60 * 60 * 24 last_second_of_day = start_of_day + seconds_in_a_day - 1 self.cur.execute(''' SELECT contact_name, time, kind, show, message FROM logs - WHERE jid_id = %d + WHERE (%s) AND time BETWEEN %d AND %d ORDER BY time - ''' % (jid_id, start_of_day, last_second_of_day)) + ''' % (where_sql, start_of_day, last_second_of_day)) results = self.cur.fetchall() return results - def get_search_results_for_query(self, jid, query): + def get_search_results_for_query(self, jid, query, account): '''returns contact_name, time, kind, show, message for each row in a list of tupples, returns list with empty tupple if we found nothing to meet our demands''' jid = jid.lower() jid_id = self.get_jid_id(jid) - if False: #query.startswith('SELECT '): # it's SQL query + + if False: #query.startswith('SELECT '): # it's SQL query (FIXME) try: self.cur.execute(query) except sqlite.OperationalError, e: @@ -410,22 +474,24 @@ class Logger: return results else: # user just typed something, we search in message column + where_sql = self._build_contact_where(account, jid) like_sql = '%' + query + '%' self.cur.execute(''' SELECT contact_name, time, kind, show, message, subject FROM logs - WHERE jid_id = ? AND message LIKE ? + WHERE (%s) AND message LIKE '%s' ORDER BY time - ''', (jid_id, like_sql)) + ''' % (where_sql, like_sql)) results = self.cur.fetchall() return results - def get_days_with_logs(self, jid, year, month, max_day): + def get_days_with_logs(self, jid, year, month, max_day, account): '''returns the list of days that have logs (not status messages)''' jid = jid.lower() jid_id = self.get_jid_id(jid) days_with_logs = [] - + where_sql = self._build_contact_where(account, jid) + # First select all date of month whith logs we want start_of_month = self.get_unix_time_from_date(year, month, 1) seconds_in_a_day = 86400 # 60 * 60 * 24 @@ -433,11 +499,11 @@ class Logger: self.cur.execute(''' SELECT time FROM logs - WHERE jid_id = %d + WHERE (%s) AND time BETWEEN %d AND %d AND kind NOT IN (%d, %d) ORDER BY time - ''' % (jid_id, start_of_month, last_second_of_month, + ''' % (where_sql, start_of_month, last_second_of_month, constants.KIND_STATUS, constants.KIND_GCSTATUS)) result = self.cur.fetchall() @@ -468,17 +534,23 @@ class Logger: result = self.cur.fetchone() return days_with_logs - def get_last_date_that_has_logs(self, jid, is_room = False): + def get_last_date_that_has_logs(self, jid, account = None, is_room = False): '''returns last time (in seconds since EPOCH) for which we had logs (excluding statuses)''' jid = jid.lower() - jid_id = self.get_jid_id(jid, 'ROOM') + + where_sql = '' + if not is_room: + where_sql = self._build_contact_where(account, jid) + else: + jid_id = self.get_jid_id(jid, 'ROOM') + where_sql = 'jid_id = %s' % jid_id self.cur.execute(''' SELECT time FROM logs - WHERE jid_id = ? - AND kind NOT IN (?, ?) + WHERE (%s) + AND kind NOT IN (%d, %d) ORDER BY time DESC LIMIT 1 - ''', (jid_id, constants.KIND_STATUS, constants.KIND_GCSTATUS)) + ''' % (where_sql, constants.KIND_STATUS, constants.KIND_GCSTATUS)) results = self.cur.fetchone() if results is not None: @@ -487,3 +559,61 @@ class Logger: result = None return result + + def _build_contact_where(self, account, jid): + '''build the where clause for a jid, including metacontacts + jid(s) if any''' + where_sql = '' + # will return empty list if jid is not associated with + # any metacontacts + family = gajim.contacts.get_metacontacts_family(account, jid) + if family: + for user in family: + jid_id = self.get_jid_id(user['jid']) + where_sql += 'jid_id = %s' % jid_id + if user != family[-1]: + where_sql += ' OR ' + else: # if jid was not associated with metacontacts + jid_id = self.get_jid_id(jid) + where_sql = 'jid_id = %s' % jid_id + return where_sql + + def save_transport_type(self, jid, type_): + '''save the type of the transport in DB''' + type_id = self.convert_human_transport_type_to_db_api_values(type_) + if not type_id: + # unknown type + return + self.cur.execute( + 'SELECT type from transports_cache WHERE transport = "%s"' % jid) + results = self.cur.fetchall() + if results: + result = results[0][0] + if result == type_id: + return + self.cur.execute( + 'UPDATE transports_cache SET type = %d WHERE transport = "%s"' % (type_id, + jid)) + try: + self.con.commit() + except sqlite.OperationalError, e: + print >> sys.stderr, str(e) + return + self.cur.execute( + 'INSERT INTO transports_cache VALUES ("%s", %d)' % (jid, type_id)) + try: + self.con.commit() + except sqlite.OperationalError, e: + print >> sys.stderr, str(e) + + def get_transports_type(self): + '''return all the type of the transports in DB''' + self.cur.execute( + 'SELECT * from transports_cache') + results = self.cur.fetchall() + if not results: + return {} + answer = {} + for result in results: + answer[result[0]] = self.convert_api_values_to_human_transport_type(result[1]) + return answer diff --git a/src/common/optparser.py b/src/common/optparser.py index e2167c2c4..5459905b7 100644 --- a/src/common/optparser.py +++ b/src/common/optparser.py @@ -26,8 +26,6 @@ import os import sys import locale from common import gajim -from common import i18n -_ = i18n._ class OptionsParser: def __init__(self, filename): @@ -129,21 +127,28 @@ class OptionsParser: def update_config(self, old_version, new_version): # Convert '0.x.y' to (0, x, y) - old_version = old_version.split('.') + old_version_list = old_version.split('.') old = [] - while len(old_version): - old.append(int(old_version.pop(0))) - new_version = new_version.split('.') + while len(old_version_list): + old.append(int(old_version_list.pop(0))) + new_version_list = new_version.split('.') new = [] - while len(new_version): - new.append(int(new_version.pop(0))) + while len(new_version_list): + new.append(int(new_version_list.pop(0))) if old < [0, 9] and new >= [0, 9]: self.update_config_x_to_09() if old < [0, 10] and new >= [0, 10]: self.update_config_09_to_010() - if old < [0, 10, 0, 1] and new >= [0, 10, 0, 1]: - self.update_config_to_01001() + if old < [0, 10, 1, 1] and new >= [0, 10, 1, 1]: + self.update_config_to_01011() + if old < [0, 10, 1, 2] and new >= [0, 10, 1, 2]: + self.update_config_to_01012() + if old < [0, 10, 1, 3] and new >= [0, 10, 1, 3]: + self.update_config_to_01013() + + gajim.logger.init_vars() + gajim.config.set('version', new_version) def update_config_x_to_09(self): # Var name that changed: @@ -258,6 +263,41 @@ class OptionsParser: gajim.config.set('version', '0.10') - def update_config_to_01001(self): - gajim.config.set('print_status_in_muc', 'in_and_out') - gajim.config.set('version', '0.10.0.1') + def update_config_to_01011(self): + if self.old_values.has_key('print_status_in_muc') and \ + self.old_values['print_status_in_muc'] in (True, False): + gajim.config.set('print_status_in_muc', 'in_and_out') + gajim.config.set('version', '0.10.1.1') + + def update_config_to_01012(self): + # See [6456] + if self.old_values.has_key('emoticons_theme') and \ + self.old_values['emoticons_theme'] == 'Disabled': + gajim.config.set('emoticons_theme', '') + gajim.config.set('version', '0.10.1.2') + + def update_config_to_01013(self): + '''create table transports_cache if there is no such table''' + import exceptions + try: + from pysqlite2 import dbapi2 as sqlite + except ImportError: + raise exceptions.PysqliteNotAvailable + import logger + + con = sqlite.connect(logger.LOG_DB_PATH) + cur = con.cursor() + try: + cur.executescript( + ''' + CREATE TABLE transports_cache ( + transport TEXT UNIQUE, + type INTEGER + ); + ''' + ) + con.commit() + except sqlite.OperationalError, e: + pass + con.close() + gajim.config.set('version', '0.10.1.3') diff --git a/src/common/proxy65_manager.py b/src/common/proxy65_manager.py index 5f2a9f528..5145632db 100644 --- a/src/common/proxy65_manager.py +++ b/src/common/proxy65_manager.py @@ -186,6 +186,9 @@ class HostTester(Socks5, IdleObject): def connect(self): ''' create the socket and plug it to the idlequeue ''' + if self.host is None: + self.on_failure() + return None self._sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self._sock.setblocking(False) self.fd = self._sock.fileno() diff --git a/src/common/socks5.py b/src/common/socks5.py index da74297bd..6e472e1b8 100644 --- a/src/common/socks5.py +++ b/src/common/socks5.py @@ -32,6 +32,7 @@ import os import struct import sha import time +from dialogs import BindPortError from errno import EWOULDBLOCK from errno import ENOBUFS @@ -84,12 +85,9 @@ class SocksQueue: self.listener.bind() if self.listener.started is False: self.listener = None - import sys - print >> sys.stderr, '=================================================' - print >> sys.stderr, 'Unable to bind to port %s.' % port - print >> sys.stderr, 'Maybe you have another running instance of Gajim.' - print >> sys.stderr, 'File Transfer will be canceled.' - print >> sys.stderr, '=================================================' + # We cannot bind port, call error + # dialog from dialogs.py and fail + BindPortError(port) return None self.connected += 1 return self.listener @@ -352,7 +350,10 @@ class SocksQueue: class Socks5: def __init__(self, idlequeue, host, port, initiator, target, sid): if host is not None: - self.host = socket.gethostbyname(host) + try: + self.host = socket.gethostbyname(host) + except socket.gaierror: + self.host = None self.idlequeue = idlequeue self.fd = -1 self.port = port diff --git a/src/common/xmpp/client_nb.py b/src/common/xmpp/client_nb.py index 145b17113..40753ef4e 100644 --- a/src/common/xmpp/client_nb.py +++ b/src/common/xmpp/client_nb.py @@ -126,12 +126,11 @@ class NBCommonClient(CommonClient): def _on_connected(self): self.connected = 'tcp' - if (self._Ssl is None and self.Connection.getPort() in (5223, 443)) or self._Ssl: - try: - transports_nb.NonBlockingTLS().PlugIn(self, now=1) - self.connected = 'ssl' - except socket.sslerror: + if self._Ssl: + transports_nb.NonBlockingTLS().PlugIn(self, now=1) + if not self.Connection: # ssl error, stream is closed return + self.connected = 'ssl' self.onreceive(self._on_receive_document_attrs) dispatcher_nb.Dispatcher().PlugIn(self) @@ -194,6 +193,8 @@ class NonBlockingClient(NBCommonClient): self.isplugged = True self.onreceive(None) transports_nb.NonBlockingTLS().PlugIn(self) + if not self.Connection: # ssl error, stream is closed + return True if not self.Dispatcher.Stream._document_attrs.has_key('version') or \ not self.Dispatcher.Stream._document_attrs['version']=='1.0': self._is_connected() diff --git a/src/common/xmpp/dispatcher_nb.py b/src/common/xmpp/dispatcher_nb.py index dbdaf4d63..ca13af184 100644 --- a/src/common/xmpp/dispatcher_nb.py +++ b/src/common/xmpp/dispatcher_nb.py @@ -134,6 +134,7 @@ class Dispatcher(PlugIn): return 0 except ExpatError: sys.exc_clear() + self.DEBUG('Invalid XML received from server. Forcing disconnect.') self._owner.Connection.pollend() return 0 if len(self._pendingExceptions) > 0: diff --git a/src/common/xmpp/features.py b/src/common/xmpp/features.py index 8fad7fc24..5b4b6fea6 100644 --- a/src/common/xmpp/features.py +++ b/src/common/xmpp/features.py @@ -27,6 +27,9 @@ All these methods takes 'disp' first argument that should be already connected from protocol import * REGISTER_DATA_RECEIVED='REGISTER DATA RECEIVED' +PRIVACY_LISTS_RECEIVED='PRIVACY LISTS RECEIVED' +PRIVACY_LIST_RECEIVED='PRIVACY LIST RECEIVED' +PRIVACY_LISTS_ACTIVE_DEFAULT='PRIVACY LISTS ACTIVE DEFAULT' ### DISCO ### http://jabber.org/protocol/disco ### JEP-0030 #################### ### Browse ### jabber:iq:browse ### JEP-0030 ################################### diff --git a/src/common/xmpp/features_nb.py b/src/common/xmpp/features_nb.py index 453f7229b..ed195ceca 100644 --- a/src/common/xmpp/features_nb.py +++ b/src/common/xmpp/features_nb.py @@ -14,7 +14,7 @@ # $Id: features.py,v 1.22 2005/09/30 20:13:04 mikealbon Exp $ -from features import REGISTER_DATA_RECEIVED +from features import REGISTER_DATA_RECEIVED, PRIVACY_LISTS_RECEIVED, PRIVACY_LIST_RECEIVED, PRIVACY_LISTS_ACTIVE_DEFAULT from protocol import * def _on_default_response(disp, iq, cb): @@ -146,9 +146,9 @@ def register(disp, host, info, cb): attributes lastErrNode, lastErr and lastErrCode. """ iq=Iq('set', NS_REGISTER, to=host) - if not isinstance(info, dict): + if not isinstance(info, dict): info=info.asDict() - for i in info.keys(): + for i in info.keys(): iq.setTag('query').setTagData(i,info[i]) disp.SendAndCallForResponse(iq, cb) @@ -172,37 +172,46 @@ def changePasswordTo(disp, newpassword, host=None, cb = None): #type=[jid|group|subscription] #action=[allow|deny] -def getPrivacyLists(disp, cb): +def getPrivacyLists(disp): """ Requests privacy lists from connected server. Returns dictionary of existing lists on success.""" iq = Iq('get', NS_PRIVACY) def _on_response(resp): dict = {'lists': []} - try: - if not isResultNode(resp): - cb(False) - return - for list in resp.getQueryPayload(): - if list.getName()=='list': - dict['lists'].append(list.getAttr('name')) - else: - dict[list.getName()]=list.getAttr('name') - cb(dict) - except: - pass - cb(False) - disp.SendAndCallForResponse(iq, _on_respons) + if not isResultNode(resp): + disp.Event(NS_PRIVACY, PRIVACY_LISTS_RECEIVED, (False)) + return + for list in resp.getQueryPayload(): + if list.getName()=='list': + dict['lists'].append(list.getAttr('name')) + else: + dict[list.getName()]=list.getAttr('name') + disp.Event(NS_PRIVACY, PRIVACY_LISTS_RECEIVED, (dict)) + disp.SendAndCallForResponse(iq, _on_response) -def getPrivacyList(disp, listname, cb): +def getActiveAndDefaultPrivacyLists(disp): + iq = Iq('get', NS_PRIVACY) + def _on_response(resp): + dict = {'active': '', 'default': ''} + if not isResultNode(resp): + disp.Event(NS_PRIVACY, PRIVACY_LISTS_ACTIVE_DEFAULT, (False)) + return + for list in resp.getQueryPayload(): + if list.getName() == 'active': + dict['active'] = list.getAttr('name') + elif list.getName() == 'default': + dict['default'] = list.getAttr('name') + disp.Event(NS_PRIVACY, PRIVACY_LISTS_ACTIVE_DEFAULT, (dict)) + disp.SendAndCallForResponse(iq, _on_response) + +def getPrivacyList(disp, listname): """ Requests specific privacy list listname. Returns list of XML nodes (rules) taken from the server responce.""" def _on_response(resp): - try: - if isResultNode(resp): - return cb(resp.getQueryPayload()[0]) - except: - pass - cb(False) + if not isResultNode(resp): + disp.Event(NS_PRIVACY, PRIVACY_LIST_RECEIVED, (False)) + return + disp.Event(NS_PRIVACY, PRIVACY_LIST_RECEIVED, (resp)) iq = Iq('get', NS_PRIVACY, payload=[Node('list', {'name': listname})]) disp.SendAndCallForResponse(iq, _on_response) @@ -220,14 +229,25 @@ def setDefaultPrivacyList(disp, listname=None): """ Sets the default privacy list as 'listname'. Returns true on success.""" return setActivePrivacyList(disp, listname,'default') -def setPrivacyList(disp, list, cb): +def setPrivacyList(disp, listname, tags): """ Set the ruleset. 'list' should be the simpleXML node formatted according to RFC 3921 (XMPP-IM) (I.e. Node('list',{'name':listname},payload=[...]) ) Returns true on success.""" - iq=Iq('set',NS_PRIVACY,payload=[list]) - _on_default_response(disp, iq, cb) + iq = Iq('set', NS_PRIVACY, xmlns = '') + list_query = iq.getTag('query').setTag('list', {'name': listname}) + for item in tags: + if item.has_key('type') and item.has_key('value'): + item_tag = list_query.setTag('item', {'action': item['action'], + 'order': item['order'], 'type': item['type'], 'value': item['value']}) + else: + item_tag = list_query.setTag('item', {'action': item['action'], + 'order': item['order']}) + if item.has_key('child'): + for child_tag in item['child']: + item_tag.setTag(child_tag) + _on_default_response(disp, iq, None) -def delPrivacyList(disp,listname, cb): +def delPrivacyList(disp,listname): """ Deletes privacy list 'listname'. Returns true on success.""" iq = Iq('set',NS_PRIVACY,payload=[Node('list',{'name':listname})]) - _on_default_response(disp, iq, cb) + _on_default_response(disp, iq, None) diff --git a/src/common/xmpp/protocol.py b/src/common/xmpp/protocol.py index 9b0224e44..2ac25069d 100644 --- a/src/common/xmpp/protocol.py +++ b/src/common/xmpp/protocol.py @@ -62,11 +62,13 @@ NS_MUC ='http://jabber.org/protocol/muc' NS_MUC_USER =NS_MUC+'#user' NS_MUC_ADMIN =NS_MUC+'#admin' NS_MUC_OWNER =NS_MUC+'#owner' +NS_NICK ='http://jabber.org/protocol/nick' # JEP-0172 NS_OFFLINE ='http://www.jabber.org/jeps/jep-0030.html' # JEP-0013 NS_PHYSLOC ='http://jabber.org/protocol/physloc' # JEP-0112 NS_PRESENCE ='presence' # Jabberd2 NS_PRIVACY ='jabber:iq:privacy' NS_PRIVATE ='jabber:iq:private' +NS_PROFILE ='http://jabber.org/protocol/profile' # JEP-0154 NS_PUBSUB ='http://jabber.org/protocol/pubsub' # JEP-0060 NS_REGISTER ='jabber:iq:register' NS_ROSTER ='jabber:iq:roster' @@ -82,7 +84,7 @@ NS_SIGNED ='jabber:x:signed' # JEP-00 NS_STANZAS ='urn:ietf:params:xml:ns:xmpp-stanzas' NS_STREAM ='http://affinix.com/jabber/stream' NS_STREAMS ='http://etherx.jabber.org/streams' -NS_TIME ='jabber:iq:time' +NS_TIME ='jabber:iq:time' # JEP-0900 NS_TLS ='urn:ietf:params:xml:ns:xmpp-tls' NS_VACATION ='http://jabber.org/protocol/vacation' NS_VCARD ='vcard-temp' @@ -346,6 +348,13 @@ class Protocol(Node): for tag in errtag.getChildren(): if tag.getName()<>'text': return tag.getName() return errtag.getData() + def getErrorMsg(self): + """ Return the textual description of the error (if present) or the error condition """ + errtag=self.getTag('error') + if errtag: + for tag in errtag.getChildren(): + if tag.getName()=='text': return tag.getData() + return self.getError() def getErrorCode(self): """ Return the error code. Obsolette. """ return self.getTagAttr('error','code') diff --git a/src/common/xmpp/transports_nb.py b/src/common/xmpp/transports_nb.py index b21b436dd..ad3456e6a 100644 --- a/src/common/xmpp/transports_nb.py +++ b/src/common/xmpp/transports_nb.py @@ -371,8 +371,12 @@ class NonBlockingTLS(PlugIn): PlugIn.PlugIn(self, owner) DBG_LINE='NonBlockingTLS' self.on_tls_start = on_tls_start - if now: - res = self._startSSL() + if now: + try: + res = self._startSSL() + except Exception, e: + self._owner.socket.pollend() + return self.tls_start() return res if self._owner.Dispatcher.Stream.features: @@ -434,7 +438,11 @@ class NonBlockingTLS(PlugIn): self.DEBUG('Got starttls response: ' + self.starttls,'error') return self.DEBUG('Got starttls proceed response. Switching to TLS/SSL...','ok') - self._startSSL() + try: + self._startSSL() + except Exception, e: + self._owner.socket.pollend() + return self._owner.Dispatcher.PlugOut() dispatcher_nb.Dispatcher().PlugIn(self._owner) diff --git a/src/common/zeroconf/connection_handlers_zeroconf.py b/src/common/zeroconf/connection_handlers_zeroconf.py index 68cc14a41..12d46ab3a 100644 --- a/src/common/zeroconf/connection_handlers_zeroconf.py +++ b/src/common/zeroconf/connection_handlers_zeroconf.py @@ -33,8 +33,6 @@ import common.xmpp from common import GnuPG from common import helpers from common import gajim -from common import i18n -_ = i18n._ STATUS_LIST = ['offline', 'connecting', 'online', 'chat', 'away', 'xa', 'dnd', 'invisible'] diff --git a/src/common/zeroconf/connection_zeroconf.py b/src/common/zeroconf/connection_zeroconf.py index 1ff695585..544553158 100644 --- a/src/common/zeroconf/connection_zeroconf.py +++ b/src/common/zeroconf/connection_zeroconf.py @@ -48,9 +48,6 @@ from connection_handlers_zeroconf import * USE_GPG = GnuPG.USE_GPG -from common import i18n -_ = i18n._ - class ConnectionZeroconf(ConnectionHandlersZeroconf): '''Connection class''' def __init__(self, name): diff --git a/src/config.py b/src/config.py index 6093239f6..dd8e7bce3 100644 --- a/src/config.py +++ b/src/config.py @@ -16,7 +16,6 @@ ## import gtk -import gtk.glade import gobject import os import common.config @@ -38,12 +37,6 @@ except: from common import helpers from common import gajim from common import connection -from common import i18n - -_ = i18n._ -APP = i18n.APP -gtk.glade.bindtextdomain (APP, i18n.DIR) -gtk.glade.textdomain (APP) #---------- PreferencesWindow class -------------# class PreferencesWindow: @@ -60,6 +53,7 @@ class PreferencesWindow: '''Initialize Preferences window''' self.xml = gtkgui_helpers.get_glade('preferences_window.glade') self.window = self.xml.get_widget('preferences_window') + self.window.set_transient_for(gajim.interface.roster.window) self.iconset_combobox = self.xml.get_widget('iconset_combobox') self.notify_on_new_message_radiobutton = self.xml.get_widget( 'notify_on_new_message_radiobutton') @@ -124,7 +118,7 @@ class PreferencesWindow: for dir in emoticons_list: if dir != '.svn': l.append(dir) - l.append('Disabled') + l.append(_('Disabled')) for i in xrange(len(l)): model.append([l[i]]) if gajim.config.get('emoticons_theme') == l[i]: @@ -256,11 +250,6 @@ class PreferencesWindow: # try to set default font for the current desktop env fontbutton = self.xml.get_widget('conversation_fontbutton') if font == '': - font = gtkgui_helpers.get_default_font() - if font is not None: - font = 'Sans 10' - gajim.config.set('conversation_font', font) - fontbutton.set_font_name(font) fontbutton.set_sensitive(False) self.xml.get_widget('default_chat_font').set_active(True) else: @@ -322,6 +311,8 @@ class PreferencesWindow: commands = ('aplay', 'play', 'esdplay', 'artsplay') for command in commands: if helpers.is_in_path(command): + if command == 'aplay': + command += ' -q' self.xml.get_widget('soundplayer_entry').set_text(command) gajim.config.set('soundplayer', command) break @@ -385,6 +376,32 @@ class PreferencesWindow: self.xml.get_widget('prompt_offline_status_message_checkbutton').\ set_active(st) + # Default Status messages + self.default_msg_tree = self.xml.get_widget('default_msg_treeview') + # (status, translated_status, message, enabled) + model = gtk.ListStore(str, str, str, bool) + self.default_msg_tree.set_model(model) + col = gtk.TreeViewColumn('Status') + self.default_msg_tree.append_column(col) + renderer = gtk.CellRendererText() + col.pack_start(renderer, False) + col.set_attributes(renderer, text = 1) + col = gtk.TreeViewColumn('Message') + self.default_msg_tree.append_column(col) + renderer = gtk.CellRendererText() + col.pack_start(renderer, True) + col.set_attributes(renderer, text = 2) + renderer.connect('edited', self.on_default_msg_cell_edited) + renderer.set_property('editable', True) + col = gtk.TreeViewColumn('Enabled') + self.default_msg_tree.append_column(col) + renderer = gtk.CellRendererToggle() + col.pack_start(renderer, False) + col.set_attributes(renderer, active = 3) + renderer.set_property('activatable', True) + renderer.connect('toggled', self.default_msg_toggled_cb) + self.fill_default_msg_treeview() + #Status messages self.msg_tree = self.xml.get_widget('msg_treeview') model = gtk.ListStore(str, str) @@ -440,17 +457,22 @@ class PreferencesWindow: # Notify user of new gmail e-mail messages, # only show checkbox if user has a gtalk account + frame_gmail = self.xml.get_widget('frame_gmail') notify_gmail_checkbutton = self.xml.get_widget('notify_gmail_checkbutton') - notify_gmail_checkbutton.set_no_show_all(True) + notify_gmail_extra_checkbutton = self.xml.get_widget('notify_gmail_extra_checkbutton') + frame_gmail.set_no_show_all(True) + for account in gajim.config.get_per('accounts'): jid = gajim.get_jid_from_account(account) - if gajim.get_server_from_jid(jid) == 'gmail.com': + if gajim.get_server_from_jid(jid) in gajim.gmail_domains: + frame_gmail.show_all() st = gajim.config.get('notify_on_new_gmail_email') notify_gmail_checkbutton.set_active(st) - notify_gmail_checkbutton.show() + st = gajim.config.get('notify_on_new_gmail_email_extra') + notify_gmail_extra_checkbutton.set_active(st) break else: - notify_gmail_checkbutton.hide() + frame_gmail.hide() self.xml.signal_autoconnect(self) @@ -460,11 +482,14 @@ class PreferencesWindow: self.on_msg_treemodel_row_changed) self.msg_tree.get_model().connect('row-deleted', self.on_msg_treemodel_row_deleted) + self.default_msg_tree.get_model().connect('row-changed', + self.on_default_msg_treemodel_row_changed) self.theme_preferences = None self.notebook.set_current_page(0) self.window.show_all() + gtkgui_helpers.possibly_move_window_in_current_desktop(self.window) def on_preferences_window_key_press_event(self, widget, event): if event.keyval == gtk.keysyms.Escape: @@ -595,7 +620,23 @@ class PreferencesWindow: gajim.config.set('use_speller', active) gajim.interface.save_config() if active: - self.apply_speller() + lang = gajim.config.get('speller_language') + if not lang: + lang = gajim.LANG + tv = gtk.TextView() + try: + spell = gtkspell.Spell(tv, lang) + except: + dialogs.ErrorDialog( + _('Dictionary for lang %s not available') % lang, + _('You have to install %s dictionary to use spellchecking, or ' + 'choose another language by setting the speller_language option.' + ) % lang) + gajim.config.set('use_speller', False) + widget.set_active(False) + else: + gajim.config.set('speller_language', lang) + self.apply_speller() else: self.remove_speller() @@ -792,6 +833,36 @@ class PreferencesWindow: def on_auto_xa_message_entry_changed(self, widget): gajim.config.set('autoxa_message', widget.get_text().decode('utf-8')) + def fill_default_msg_treeview(self): + model = self.default_msg_tree.get_model() + model.clear() + status = [] + for status_ in gajim.config.get_per('defaultstatusmsg'): + status.append(status_) + status.sort() + for status_ in status: + msg = gajim.config.get_per('defaultstatusmsg', status_, 'message') + enabled = gajim.config.get_per('defaultstatusmsg', status_, 'enabled') + iter = model.append() + uf_show = helpers.get_uf_show(status_) + model.set(iter, 0, status_, 1, uf_show, 2, msg, 3, enabled) + + def on_default_msg_cell_edited(self, cell, row, new_text): + model = self.default_msg_tree.get_model() + iter = model.get_iter_from_string(row) + model.set_value(iter, 2, new_text) + + def default_msg_toggled_cb(self, cell, path): + model = self.default_msg_tree.get_model() + model[path][3] = not model[path][3] + + def on_default_msg_treemodel_row_changed(self, model, path, iter): + status = model[iter][0] + message = model[iter][2].decode('utf-8') + gajim.config.set_per('defaultstatusmsg', status, 'enabled', + model[iter][3]) + gajim.config.set_per('defaultstatusmsg', status, 'message', message) + def save_status_messages(self, model): for msg in gajim.config.get_per('statusmsg'): gajim.config.del_per('statusmsg', msg) @@ -846,18 +917,25 @@ class PreferencesWindow: def on_send_os_info_checkbutton_toggled(self, widget): self.on_checkbutton_toggled(widget, 'send_os_info') - def on_notify_gmail_checkbutton_toggled(self, widget): + def on_notify_gmail_checkbutton_toggled(self, widget): self.on_checkbutton_toggled(widget, 'notify_on_new_gmail_email') + + def on_notify_gmail_extra_checkbutton_toggled(self, widget): + self.on_checkbutton_toggled(widget, 'notify_on_new_gmail_email_extra') def fill_msg_treeview(self): self.xml.get_widget('delete_msg_button').set_sensitive(False) model = self.msg_tree.get_model() model.clear() - for msg in gajim.config.get_per('statusmsg'): + preset_status = [] + for msg_name in gajim.config.get_per('statusmsg'): + preset_status.append(msg_name) + preset_status.sort() + for msg_name in preset_status: + msg_text = gajim.config.get_per('statusmsg', msg_name, 'message') + msg_text = helpers.from_one_line(msg_text) iter = model.append() - val = gajim.config.get_per('statusmsg', msg, 'message') - val = helpers.from_one_line(val) - model.set(iter, 0, msg, 1, val) + model.set(iter, 0, msg_name, 1, msg_text) def on_msg_cell_edited(self, cell, row, new_text): model = self.msg_tree.get_model() @@ -970,7 +1048,6 @@ class PreferencesWindow: path_to_snd_file = widget.get_text() model, iter = self.sound_tree.get_selection().get_selected() model[iter][2] = path_to_snd_file # set new path to sounds_model - model[iter][0] = True # set the sound to enabled def on_play_button_clicked(self, widget): model, iter = self.sound_tree.get_selection().get_selected() @@ -1004,6 +1081,7 @@ class AccountModificationWindow: def __init__(self, account): self.xml = gtkgui_helpers.get_glade('account_modification_window.glade') self.window = self.xml.get_widget('account_modification_window') + self.window.set_transient_for(gajim.interface.roster.window) self.account = account # init proxy list @@ -1152,7 +1230,7 @@ class AccountModificationWindow: _('You are currently connected to the server'), _('To change the account name, you must be disconnected.')) return - if len(gajim.awaiting_events[self.account]): + if len(gajim.events.get_events(self.account)): dialogs.ErrorDialog(_('Unread events'), _('To change the account name, you must read all pending ' 'events.')) @@ -1261,12 +1339,12 @@ class AccountModificationWindow: if name != self.account: #update variables gajim.interface.instances[name] = gajim.interface.instances[self.account] - gajim.awaiting_events[name] = gajim.awaiting_events[self.account] gajim.nicks[name] = gajim.nicks[self.account] gajim.block_signed_in_notifications[name] = \ gajim.block_signed_in_notifications[self.account] gajim.groups[name] = gajim.groups[self.account] gajim.gc_connected[name] = gajim.gc_connected[self.account] + gajim.automatic_rooms[name] = gajim.automatic_rooms[self.account] gajim.newly_added[name] = gajim.newly_added[self.account] gajim.to_be_removed[name] = gajim.to_be_removed[self.account] gajim.sleeper_state[name] = gajim.sleeper_state[self.account] @@ -1277,27 +1355,25 @@ class AccountModificationWindow: gajim.status_before_autoaway[self.account] gajim.contacts.change_account_name(self.account, name) + gajim.events.change_account_name(self.account, name) - #upgrade account variable in opened windows - for kind in ('infos', 'disco', 'chats', 'gc', 'gc_config'): + # change account variable for chat / gc controls + for ctrl in gajim.interface.msg_win_mgr.get_controls(): + ctrl.account = name + # upgrade account variable in opened windows + for kind in ('infos', 'disco', 'gc_config'): for j in gajim.interface.instances[name][kind]: gajim.interface.instances[name][kind][j].account = name - #upgrade account in systray - if gajim.interface.systray_enabled: - for list in gajim.interface.systray.jids: - if list[0] == self.account: - list[0] = name - # ServiceCache object keep old property account if hasattr(gajim.connections[self.account], 'services_cache'): gajim.connections[self.account].services_cache.account = name del gajim.interface.instances[self.account] - del gajim.awaiting_events[self.account] del gajim.nicks[self.account] del gajim.block_signed_in_notifications[self.account] del gajim.groups[self.account] del gajim.gc_connected[self.account] + del gajim.automatic_rooms[self.account] del gajim.newly_added[self.account] del gajim.to_be_removed[self.account] del gajim.sleeper_state[self.account] @@ -1316,11 +1392,13 @@ class AccountModificationWindow: relogin_needed = False else: # we're connected to the account we want to apply changes # check if relogin is needed - relogin_needed = self.options_changed_need_relogin(config, + relogin_needed = False + if self.options_changed_need_relogin(config, ('resource', 'proxy', 'usessl', 'keyname', - 'use_custom_host', 'custom_host')) + 'use_custom_host', 'custom_host')): + relogin_needed = True - if config['use_custom_host'] and (self.option_changed(config, + elif config['use_custom_host'] and (self.option_changed(config, 'custom_host') or self.option_changed(config, 'custom_port')): relogin_needed = True @@ -1400,7 +1478,6 @@ class AccountModificationWindow: dialogs.ErrorDialog(_('No such account available'), _('You must create your account before editing your personal information.')) return - jid = self.xml.get_widget('jid_entry').get_text().decode('utf-8') # show error dialog if account is newly created (not in gajim.connections) if not gajim.connections.has_key(self.account) or \ @@ -1409,12 +1486,12 @@ class AccountModificationWindow: _('Without a connection, you can not edit your personal information.')) return - # in infos the key jid is OUR jid so we save the vcardwindow instance there - if gajim.interface.instances[self.account]['infos'].has_key(jid): - gajim.interface.instances[self.account]['infos'][jid].window.present() - else: - gajim.interface.instances[self.account]['infos'][jid] = \ - vcard.VcardWindow(jid, self.account, True) + if not gajim.connections[self.account].vcard_supported: + dialogs.ErrorDialog(_("Your server doesn't support Vcard"), + _("Your server can't save your personal information.")) + return + + gajim.interface.edit_own_details(self.account) def on_manage_proxies_button_clicked(self, widget): if gajim.interface.instances.has_key('manage_proxies'): @@ -1438,7 +1515,7 @@ class AccountModificationWindow: dialogs.ErrorDialog(_('Failed to get secret keys'), _('There was a problem retrieving your OpenPGP secret keys.')) return - secret_keys['None'] = 'None' + secret_keys[_('None')] = _('None') instance = dialogs.ChooseGPGKeyDialog(_('OpenPGP Key Selection'), _('Choose your OpenPGP key'), secret_keys) keyID = instance.run() @@ -1447,7 +1524,7 @@ class AccountModificationWindow: checkbutton = self.xml.get_widget('gpg_save_password_checkbutton') gpg_key_label = self.xml.get_widget('gpg_key_label') gpg_name_label = self.xml.get_widget('gpg_name_label') - if keyID[0] == 'None': + if keyID[0] == _('None'): gpg_key_label.set_text(_('No key selected')) gpg_name_label.set_text('') checkbutton.set_sensitive(False) @@ -1495,6 +1572,7 @@ class ManageProxiesWindow: def __init__(self): self.xml = gtkgui_helpers.get_glade('manage_proxies_window.glade') self.window = self.xml.get_widget('manage_proxies_window') + self.window.set_transient_for(gajim.interface.roster.window) self.proxies_treeview = self.xml.get_widget('proxies_treeview') self.proxyname_entry = self.xml.get_widget('proxyname_entry') self.init_list() @@ -1659,6 +1737,7 @@ class AccountsWindow: def __init__(self): self.xml = gtkgui_helpers.get_glade('accounts_window.glade') self.window = self.xml.get_widget('accounts_window') + self.window.set_transient_for(gajim.interface.roster.window) self.accounts_treeview = self.xml.get_widget('accounts_treeview') self.modify_button = self.xml.get_widget('modify_button') self.remove_button = self.xml.get_widget('remove_button') @@ -1714,7 +1793,7 @@ class AccountsWindow: if not iter: return account = model.get_value(iter, 0).decode('utf-8') - if len(gajim.awaiting_events[account]): + if len(gajim.events.get_events(account)): dialogs.ErrorDialog(_('Unread events'), _('Read all pending events before removing this account.')) return @@ -1761,6 +1840,7 @@ class DataFormWindow: self.config = config self.xml = gtkgui_helpers.get_glade('data_form_window.glade') self.window = self.xml.get_widget('data_form_window') + self.window.set_transient_for(gajim.interface.roster.window) self.config_vbox = self.xml.get_widget('config_vbox') if config: self.fill_vbox() @@ -1910,10 +1990,11 @@ class ServiceRegistrationWindow(DataFormWindow): else: self.xml = gtkgui_helpers.get_glade('service_registration_window.glade') self.window = self.xml.get_widget('service_registration_window') + self.window.set_transient_for(gajim.interface.roster.window) if infos.has_key('registered'): - self.window.set_title(_('Edit %s' % service)) + self.window.set_title(_('Edit %s') % service) else: - self.window.set_title(_('Register to %s' % service)) + self.window.set_title(_('Register to %s') % service) self.xml.get_widget('label').set_text(infos['instructions']) self.entries = {} self.draw_table() @@ -1983,7 +2064,7 @@ class GroupchatConfigWindow(DataFormWindow): self.room_jid = room_jid self.remove_button = {} self.affiliation_treeview = {} - self.removed_jid = {} + self.list_init = {} # list at the begining ui_list = {'outcast': _('Ban List'), 'member': _('Member List'), 'owner': _('Owner List'), @@ -1993,7 +2074,7 @@ class GroupchatConfigWindow(DataFormWindow): add_on_vbox = self.xml.get_widget('add_on_vbox') for affiliation in ('outcast', 'member', 'owner', 'admin'): - self.removed_jid[affiliation] = [] + self.list_init[affiliation] = {} hbox = gtk.HBox(spacing = 5) add_on_vbox.pack_start(hbox, False) @@ -2086,8 +2167,6 @@ class GroupchatConfigWindow(DataFormWindow): return model = self.affiliation_treeview[affiliation].get_model() model.append((jid,'', '', '')) - if jid in self.removed_jid[affiliation]: - self.removed_jid[affiliation].remove(jid) def on_remove_button_clicked(self, widget, affiliation): selection = self.affiliation_treeview[affiliation].get_selection() @@ -2100,7 +2179,6 @@ class GroupchatConfigWindow(DataFormWindow): iter = model.get_iter(path) jid = model[iter][0] model.remove(iter) - self.removed_jid[affiliation].append(jid) self.remove_button[affiliation].set_sensitive(False) def on_affiliation_treeview_cursor_changed(self, widget, affiliation): @@ -2108,6 +2186,7 @@ class GroupchatConfigWindow(DataFormWindow): def affiliation_list_received(self, affiliation, list): '''Fill the affiliation treeview''' + self.list_init[affiliation] = list if not affiliation: return tv = self.affiliation_treeview[affiliation] @@ -2134,18 +2213,28 @@ class GroupchatConfigWindow(DataFormWindow): self.config) for affiliation in ('outcast', 'member', 'owner', 'admin'): list = {} + actual_jid_list = [] model = self.affiliation_treeview[affiliation].get_model() iter = model.get_iter_first() + # add new jid while iter: jid = model[iter][0].decode('utf-8') - list[jid] = {'affiliation': affiliation} - if affiliation == 'outcast': - list[jid]['reason'] = model[iter][1].decode('utf-8') + actual_jid_list.append(jid) + if jid not in self.list_init[affiliation] or \ + (affiliation == 'outcast' and self.list_init[affiliation]\ + [jid].has_key('reason') and self.list_init[affiliation][jid]\ + ['reason'] != model[iter][1].decode('utf-8')): + list[jid] = {'affiliation': affiliation} + if affiliation == 'outcast': + list[jid]['reason'] = model[iter][1].decode('utf-8') iter = model.iter_next(iter) - for jid in self.removed_jid[affiliation]: - list[jid] = {'affiliation': 'none'} - gajim.connections[self.account].send_gc_affiliation_list(self.room_jid, - list) + # remove removed one + for jid in self.list_init[affiliation]: + if jid not in actual_jid_list: + list[jid] = {'affiliation': 'none'} + if list: + gajim.connections[self.account].send_gc_affiliation_list( + self.room_jid, list) self.window.destroy() #---------- RemoveAccountWindow class -------------# @@ -2164,8 +2253,9 @@ class RemoveAccountWindow: self.account = account xml = gtkgui_helpers.get_glade('remove_account_window.glade') self.window = xml.get_widget('remove_account_window') + self.window.set_transient_for(gajim.interface.roster.window) self.remove_and_unregister_radiobutton = xml.get_widget( - 'remove_and_unregister_radiobutton') + 'remove_and_unregister_radiobutton') self.window.set_title(_('Removing %s account') % self.account) xml.signal_autoconnect(self) self.window.show_all() @@ -2198,7 +2288,7 @@ class RemoveAccountWindow: self.dialog = None if gajim.connections[self.account].connected: self.dialog = dialogs.ConfirmationDialog( - _('Account "%s" is connected to the server' % self.account), + _('Account "%s" is connected to the server') % self.account, _('If you remove it, the connection will be lost.'), on_response_ok = remove) else: @@ -2210,18 +2300,18 @@ class RemoveAccountWindow: if not res: return # Close all opened windows - gajim.interface.roster.close_all(gajim.interface.instances[self.account]) + gajim.interface.roster.close_all(self.account) gajim.connections[self.account].disconnect(on_purpose = True) del gajim.connections[self.account] gajim.config.del_per('accounts', self.account) gajim.interface.save_config() del gajim.interface.instances[self.account] - del gajim.awaiting_events[self.account] del gajim.nicks[self.account] del gajim.block_signed_in_notifications[self.account] del gajim.groups[self.account] gajim.contacts.remove_account(self.account) del gajim.gc_connected[self.account] + del gajim.automatic_rooms[self.account] del gajim.to_be_removed[self.account] del gajim.newly_added[self.account] del gajim.sleeper_state[self.account] @@ -2243,6 +2333,7 @@ class ManageBookmarksWindow: def __init__(self): self.xml = gtkgui_helpers.get_glade('manage_bookmarks_window.glade') self.window = self.xml.get_widget('manage_bookmarks_window') + self.window.set_transient_for(gajim.interface.roster.window) #Account-JID, RoomName, Room-JID, Autojoin, Passowrd, Nick, Show_Status self.treestore = gtk.TreeStore(str, str, str, bool, str, str, str) @@ -2541,8 +2632,11 @@ class AccountCreationWizardWindow: # Connect events from comboboxentry.child server_comboboxentry = self.xml.get_widget('server_comboboxentry') - server_comboboxentry.child.connect('key_press_event', - self.on_server_comboboxentry_key_press_event) + entry = server_comboboxentry.child + entry.connect('key_press_event', + self.on_server_comboboxentry_key_press_event) + completion = gtk.EntryCompletion() + entry.set_completion(completion) # parse servers.xml servers_xml = os.path.join(gajim.DATA_DIR, 'other', 'servers.xml') @@ -2551,6 +2645,9 @@ class AccountCreationWizardWindow: for server in servers: servers_model.append((str(server[0]), int(server[1]))) + completion.set_model(servers_model) + completion.set_text_column(0) + # Put servers into comboboxentries server_comboboxentry.set_model(servers_model) server_comboboxentry.set_text_column(0) @@ -2563,7 +2660,8 @@ class AccountCreationWizardWindow: self.finish_button = self.xml.get_widget('finish_button') self.advanced_button = self.xml.get_widget('advanced_button') self.finish_label = self.xml.get_widget('finish_label') - self.go_online_checkbutton = self.xml.get_widget('go_online_checkbutton') + self.go_online_checkbutton = self.xml.get_widget( + 'go_online_checkbutton') self.show_vcard_checkbutton = self.xml.get_widget( 'show_vcard_checkbutton') self.progressbar = self.xml.get_widget('progressbar') @@ -2581,7 +2679,8 @@ class AccountCreationWizardWindow: del gajim.interface.instances['account_creation_wizard'] def on_register_server_features_button_clicked(self, widget): - helpers.launch_browser_mailer('url', 'http://www.jabber.org/network/oldnetwork.shtml') + helpers.launch_browser_mailer('url', + 'http://www.jabber.org/network/oldnetwork.shtml') def on_save_password_checkbutton_toggled(self, widget): self.xml.get_widget('pass1_entry').grab_focus() @@ -2837,12 +2936,12 @@ _('You can set advanced account options by pressing Advanced button, or later by # update variables gajim.interface.instances[self.account] = {'infos': {}, 'disco': {}, - 'chats': {}, 'gc': {}, 'gc_config': {}} - gajim.awaiting_events[self.account] = {} + 'gc_config': {}} gajim.connections[self.account].connected = 0 gajim.groups[self.account] = {} gajim.contacts.add_account(self.account) gajim.gc_connected[self.account] = {} + gajim.automatic_rooms[self.account] = {} gajim.newly_added[self.account] = [] gajim.to_be_removed[self.account] = [] gajim.nicks[self.account] = config['name'] diff --git a/src/conversation_textview.py b/src/conversation_textview.py index 50c20d55f..888c9d2b3 100644 --- a/src/conversation_textview.py +++ b/src/conversation_textview.py @@ -24,11 +24,11 @@ ## import gtk -import gtk.glade import pango import gobject import time import sys +import os import tooltips import dialogs import locale @@ -36,13 +36,8 @@ import locale import gtkgui_helpers from common import gajim from common import helpers -from common import i18n from calendar import timegm - -_ = i18n._ -APP = i18n.APP -gtk.glade.bindtextdomain(APP, i18n.DIR) -gtk.glade.textdomain(APP) +from common.fuzzyclock import FuzzyClock class ConversationTextview: '''Class for the conversation textview (where user reads already said messages) @@ -56,7 +51,7 @@ class ConversationTextview: self.tv.set_accepts_tab(True) self.tv.set_editable(False) self.tv.set_cursor_visible(False) - self.tv.set_wrap_mode(gtk.WRAP_WORD) + self.tv.set_wrap_mode(gtk.WRAP_WORD_CHAR) self.tv.set_left_margin(2) self.tv.set_right_margin(2) self.handlers = {} @@ -89,6 +84,14 @@ class ConversationTextview: color = gajim.config.get('statusmsgcolor') self.tagStatus.set_property('foreground', color) + colors = gajim.config.get('gc_nicknames_colors') + colors = colors.split(':') + for color in xrange(len(colors)): + tagname = 'gc_nickname_color_' + str(color) + tag = buffer.create_tag(tagname) + color = colors[color] + tag.set_property('foreground', color) + tag = buffer.create_tag('marked') color = gajim.config.get('markedmsgcolor') tag.set_property('foreground', color) @@ -130,6 +133,10 @@ class ConversationTextview: buffer.create_tag('focus-out-line', justification = gtk.JUSTIFY_CENTER) + self.allow_focus_out_line = True + # holds the iter's offset which points to the end of --- line + self.focus_out_end_iter_offset = None + self.line_tooltip = tooltips.BaseTooltip() def del_handlers(self): @@ -180,9 +187,73 @@ class ConversationTextview: def scroll_to_end_iter(self): buffer = self.tv.get_buffer() end_iter = buffer.get_end_iter() + if not end_iter: + return False self.tv.scroll_to_iter(end_iter, 0, False, 1, 1) return False # when called in an idle_add, just do it once + def show_focus_out_line(self): + if not self.allow_focus_out_line: + # if room did not receive focus-in from the last time we added + # --- line then do not readd + return + + print_focus_out_line = False + buffer = self.tv.get_buffer() + + if self.focus_out_end_iter_offset is None: + # this happens only first time we focus out on this room + print_focus_out_line = True + + else: + if self.focus_out_end_iter_offset != buffer.get_end_iter().\ + get_offset(): + # this means after last-focus something was printed + # (else end_iter's offset is the same as before) + # only then print ---- line (eg. we avoid printing many following + # ---- lines) + print_focus_out_line = True + + if print_focus_out_line and buffer.get_char_count() > 0: + buffer.begin_user_action() + + # remove previous focus out line if such focus out line exists + if self.focus_out_end_iter_offset is not None: + end_iter_for_previous_line = buffer.get_iter_at_offset( + self.focus_out_end_iter_offset) + begin_iter_for_previous_line = end_iter_for_previous_line.copy() + # img_char+1 (the '\n') + begin_iter_for_previous_line.backward_chars(2) + + # remove focus out line + buffer.delete(begin_iter_for_previous_line, + end_iter_for_previous_line) + + # add the new focus out line + # FIXME: Why is this loaded from disk everytime + path_to_file = os.path.join(gajim.DATA_DIR, 'pixmaps', 'muc_separator.png') + focus_out_line_pixbuf = gtk.gdk.pixbuf_new_from_file(path_to_file) + end_iter = buffer.get_end_iter() + buffer.insert(end_iter, '\n') + buffer.insert_pixbuf(end_iter, focus_out_line_pixbuf) + + end_iter = buffer.get_end_iter() + before_img_iter = end_iter.copy() + before_img_iter.backward_char() # one char back (an image also takes one char) + buffer.apply_tag_by_name('focus-out-line', before_img_iter, end_iter) + #FIXME: remove this workaround when bug is fixed + # c http://bugzilla.gnome.org/show_bug.cgi?id=318569 + + self.allow_focus_out_line = False + + # update the iter we hold to make comparison the next time + self.focus_out_end_iter_offset = buffer.get_end_iter().get_offset() + + buffer.end_user_action() + + # scroll to the end (via idle in case the scrollbar has appeared) + gobject.idle_add(self.scroll_to_end) + def show_line_tooltip(self): pointer = self.tv.get_pointer() x, y = self.tv.window_to_buffer_coords(gtk.TEXT_WINDOW_TEXT, pointer[0], @@ -237,6 +308,7 @@ class ConversationTextview: buffer = self.tv.get_buffer() start, end = buffer.get_bounds() buffer.delete(start, end) + self.focus_out_end_iter_offset = None def visit_url_from_menuitem(self, widget, link): '''basically it filters out the widget instance''' @@ -572,9 +644,6 @@ class ConversationTextview: other_tags_for_name = [], other_tags_for_time = [], other_tags_for_text = [], subject = None, old_kind = None): '''prints 'chat' type messages''' - # kind = info, we print things as if it was a status: same color, ... - if kind == 'info': - kind = 'status' buffer = self.tv.get_buffer() buffer.begin_user_action() end_iter = buffer.get_end_iter() @@ -593,7 +662,7 @@ class ConversationTextview: # We don't have tim for outgoing messages... tim = time.localtime() current_print_time = gajim.config.get('print_time') - if current_print_time == 'always': + if current_print_time == 'always' and kind != 'info': before_str = gajim.config.get('before_time') after_str = gajim.config.get('after_time') # get difference in days since epoch (86400 = 24*3600) @@ -612,25 +681,38 @@ class ConversationTextview: if day_str: format += day_str + ' ' format += '%X' + after_str - # format comes as unicode, because of day_str. - # we convert it to the encoding that we want - tim_format = time.strftime(format, tim).encode('utf-8') + tim_format = time.strftime(format, tim) + # if tim_format comes as unicode because of day_str. + # we convert it to the encoding that we want (and that is utf-8) + tim_format = helpers.ensure_utf8_string(tim_format) + tim_format = tim_format.encode('utf-8') buffer.insert_with_tags_by_name(end_iter, tim_format + ' ', *other_tags_for_time) - elif current_print_time == 'sometimes': + elif current_print_time == 'sometimes' and kind != 'info': every_foo_seconds = 60 * gajim.config.get( 'print_ichat_every_foo_minutes') seconds_passed = time.mktime(tim) - self.last_time_printout if seconds_passed > every_foo_seconds: self.last_time_printout = time.mktime(tim) end_iter = buffer.get_end_iter() - tim_format = time.strftime('%H:%M', tim).decode( - locale.getpreferredencoding()) + if gajim.config.get('print_time_fuzzy') > 0: + fc = FuzzyClock() + fc.setTime(time.strftime('%H:%M', tim)) + ft = fc.getFuzzyTime(gajim.config.get('print_time_fuzzy')) + tim_format = ft.decode(locale.getpreferredencoding()) + else: + tim_format = time.strftime('%H:%M', tim).decode( + locale.getpreferredencoding()) + buffer.insert_with_tags_by_name(end_iter, tim_format + '\n', 'time_sometimes') + # kind = info, we print things as if it was a status: same color, ... + if kind == 'info': + kind = 'status' other_text_tag = self.detect_other_text_tag(text, kind) text_tags = other_tags_for_text[:] # create a new list if other_text_tag: + # note that color of /me may be overwritten in gc_control text_tags.append(other_text_tag) else: # not status nor /me if gajim.config.get( diff --git a/src/dbus_support.py b/src/dbus_support.py index 9d8d74bd6..59e751c41 100644 --- a/src/dbus_support.py +++ b/src/dbus_support.py @@ -20,8 +20,6 @@ import sys from common import gajim from common import exceptions -from common import i18n -_ = i18n._ try: import dbus diff --git a/src/dialogs.py b/src/dialogs.py index 699987a7b..6a8ec5de3 100644 --- a/src/dialogs.py +++ b/src/dialogs.py @@ -19,10 +19,8 @@ ## import gtk -import gtk.glade import gobject import os -import sys import gtkgui_helpers import vcard @@ -42,88 +40,100 @@ from advanced import AdvancedConfigurationWindow from common import gajim from common import helpers -from common import i18n - -_ = i18n._ -APP = i18n.APP -gtk.glade.bindtextdomain (APP, i18n.DIR) -gtk.glade.textdomain (APP) class EditGroupsDialog: '''Class for the edit group dialog window''' - def __init__(self, user, account): + def __init__(self, list_): + '''list_ is a list of (contact, account) tuples''' self.xml = gtkgui_helpers.get_glade('edit_groups_dialog.glade') self.dialog = self.xml.get_widget('edit_groups_dialog') - self.account = account - self.user = user + self.dialog.set_transient_for(gajim.interface.roster.window) + self.list_ = list_ self.changes_made = False self.list = self.xml.get_widget('groups_treeview') - self.xml.get_widget('nickname_label').set_markup( - _("Contact's name: %s") % user.get_shown_name()) - self.xml.get_widget('jid_label').set_markup( - _('JID: %s') % user.jid) - + if len(list_) == 1: + contact = list_[0][0] + self.xml.get_widget('nickname_label').set_markup( + _("Contact name: %s") % contact.get_shown_name()) + self.xml.get_widget('jid_label').set_markup( + _('JID: %s') % contact.jid) + else: + self.xml.get_widget('nickname_label').set_no_show_all(True) + self.xml.get_widget('nickname_label').hide() + self.xml.get_widget('jid_label').set_no_show_all(True) + self.xml.get_widget('jid_label').hide() + self.xml.signal_autoconnect(self) self.init_list() def run(self): self.dialog.show_all() if self.changes_made: - gajim.connections[self.account].update_contact(self.user.jid, - self.user.name, self.user.groups) + for (contact, account) in self.list_: + gajim.connections[account].update_contact(contact.jid, contact.name, + contact.groups) def on_edit_groups_dialog_response(self, widget, response_id): if response_id == gtk.RESPONSE_CLOSE: self.dialog.destroy() def update_contact(self): - tag = gajim.contacts.get_metacontacts_tag(self.account, self.user.jid) - if not tag: - gajim.interface.roster.remove_contact(self.user, self.account) - gajim.interface.roster.add_contact_to_roster(self.user.jid, - self.account) - gajim.connections[self.account].update_contact(self.user.jid, - self.user.name, self.user.groups) - return - all_jid = gajim.contacts.get_metacontacts_jids(tag) - for _account in all_jid: - for _jid in all_jid[_account]: - c = gajim.contacts.get_first_contact_from_jid(_account, _jid) - if not c: + for (contact, account) in self.list_: + tag = gajim.contacts.get_metacontacts_tag(account, contact.jid) + if not tag: + gajim.interface.roster.remove_contact(contact, account) + gajim.interface.roster.add_contact_to_roster(contact.jid, account) + gajim.connections[account].update_contact(contact.jid, contact.name, + contact.groups) + continue + all_jid = gajim.contacts.get_metacontacts_jids(tag) + for _account in all_jid: + if not gajim.interface.roster.regroup and _account != account: continue - gajim.interface.roster.remove_contact(c, _account) - gajim.interface.roster.add_contact_to_roster(_jid, _account) - gajim.connections[_account].update_contact(_jid, c.name, c.groups) + for _jid in all_jid[_account]: + c = gajim.contacts.get_first_contact_from_jid(_account, _jid) + if not c: + continue + gajim.interface.roster.remove_contact(c, _account) + gajim.interface.roster.add_contact_to_roster(_jid, _account) + gajim.connections[_account].update_contact(_jid, c.name, + c.groups) def remove_group(self, group): - '''add group group to self.user and all his brothers''' - tag = gajim.contacts.get_metacontacts_tag(self.account, self.user.jid) - if not tag: - if group in self.user.groups: - self.user.groups.remove(group) - return - all_jid = gajim.contacts.get_metacontacts_jids(tag) - for _account in all_jid: - for _jid in all_jid[_account]: - contacts = gajim.contacts.get_contact(_account, _jid) - for contact in contacts: - if group in contact.groups: - contact.groups.remove(group) + '''remove group group from all contacts and all their brothers''' + for (contact, account) in self.list_: + tag = gajim.contacts.get_metacontacts_tag(account, contact.jid) + if not tag: + if group in contact.groups: + contact.groups.remove(group) + continue + all_jid = gajim.contacts.get_metacontacts_jids(tag) + for _account in all_jid: + if not gajim.interface.roster.regroup and _account != account: + continue + for _jid in all_jid[_account]: + contacts = gajim.contacts.get_contact(_account, _jid) + for c in contacts: + if group in c.groups: + c.groups.remove(group) def add_group(self, group): - '''add group group to self.user and all his brothers''' - tag = gajim.contacts.get_metacontacts_tag(self.account, self.user.jid) - if not tag: - if group not in self.user.groups: - self.user.groups.append(group) - return - all_jid = gajim.contacts.get_metacontacts_jids(tag) - for _account in all_jid: - for _jid in all_jid[_account]: - contacts = gajim.contacts.get_contact(_account, _jid) - for contact in contacts: - if not group in contact.groups: - contact.groups.append(group) + '''add group group to all contacts and all their brothers''' + for (contact, account) in self.list_: + tag = gajim.contacts.get_metacontacts_tag(account, contact.jid) + if not tag: + if group not in contact.groups: + contact.groups.append(group) + continue + all_jid = gajim.contacts.get_metacontacts_jids(tag) + for _account in all_jid: + if not gajim.interface.roster.regroup and _account != account: + continue + for _jid in all_jid[_account]: + contacts = gajim.contacts.get_contact(_account, _jid) + for c in contacts: + if not group in c.groups: + c.groups.append(group) def on_add_button_clicked(self, widget): group = self.xml.get_widget('group_entry').get_text().decode('utf-8') @@ -137,7 +147,7 @@ class EditGroupsDialog: return iter = model.iter_next(iter) self.changes_made = True - model.append((group, True)) + model.append((group, True, False)) self.add_group(group) self.update_contact() self.init_list() # Re-draw list to sort new item @@ -145,7 +155,11 @@ class EditGroupsDialog: def group_toggled_cb(self, cell, path): self.changes_made = True model = self.list.get_model() - model[path][1] = not model[path][1] + if model[path][2]: + model[path][2] = False + model[path][1] = True + else: + model[path][1] = not model[path][1] group = model[path][0].decode('utf-8') if model[path][1]: self.add_group(group) @@ -154,23 +168,39 @@ class EditGroupsDialog: self.update_contact() def init_list(self): - store = gtk.ListStore(str, bool) + store = gtk.ListStore(str, bool, bool) self.list.set_model(store) for column in self.list.get_columns(): # Clear treeview when re-drawing self.list.remove_column(column) - groups = [] # Store accounts in a list so we can sort them - for g in gajim.groups[self.account].keys(): - if g in helpers.special_groups: - continue - in_group = False - if g in self.user.groups: - in_group = True - groups.append([g, in_group]) - groups.sort() - for group in groups: + accounts = [] + # Store groups in a list so we can sort them and the number of contacts in + # it + groups = {} + for (contact, account) in self.list_: + if account not in accounts: + accounts.append(account) + for g in gajim.groups[account].keys(): + if g in helpers.special_groups: + continue + if g in groups: + continue + groups[g] = 0 + for g in contact.groups: + groups[g] += 1 + group_list = groups.keys() + group_list.sort() + for group in group_list: iter = store.append() - store.set(iter, 0, group[0]) # Group name - store.set(iter, 1, group[1]) # In group boolean + store.set(iter, 0, group) # Group name + if groups[group] == 0: + store.set(iter, 1, False) + else: + store.set(iter, 1, True) + if groups[group] == len(self.list_): + # all contacts are in this group + store.set(iter, 2, False) + else: + store.set(iter, 2, True) column = gtk.TreeViewColumn(_('Group')) column.set_expand(True) self.list.append_column(column) @@ -185,7 +215,7 @@ class EditGroupsDialog: column.pack_start(renderer) renderer.set_property('activatable', True) renderer.connect('toggled', self.group_toggled_cb) - column.set_attributes(renderer, active = 1) + column.set_attributes(renderer, active = 1, inconsistent = 2) class PassphraseDialog: '''Class for Passphrase dialog''' @@ -224,6 +254,7 @@ class ChooseGPGKeyDialog: prompt_label = xml.get_widget('prompt_label') prompt_label.set_text(prompt_text) model = gtk.ListStore(str, str) + model.set_sort_func(1, self.sort_keys) model.set_sort_column_id(1, gtk.SORT_ASCENDING) self.keys_treeview.set_model(model) #columns @@ -236,6 +267,17 @@ class ChooseGPGKeyDialog: self.fill_tree(secret_keys, selected) self.window.show_all() + def sort_keys(self, model, iter1, iter2): + value1 = model[iter1][1] + value2 = model[iter2][1] + if value1 == _('None'): + return -1 + elif value2 == _('None'): + return 1 + elif value1 < value2: + return -1 + return 1 + def run(self): rep = self.window.run() if rep == gtk.RESPONSE_OK: @@ -262,6 +304,7 @@ class ChangeStatusMessageDialog: self.show = show self.xml = gtkgui_helpers.get_glade('change_status_message_dialog.glade') self.window = self.xml.get_widget('change_status_message_dialog') + self.window.set_transient_for(gajim.interface.roster.window) if show: uf_show = helpers.get_uf_show(show) title_text = _('%s Status Message') % uf_show @@ -362,7 +405,14 @@ class ChangeStatusMessageDialog: class AddNewContactWindow: '''Class for AddNewContactWindow''' - def __init__(self, account = None, jid = None): + uid_labels = {'jabber': _('Jabber ID'), + 'aim': _('AIM Address'), + 'gadu-gadu': _('GG Number'), + 'icq': _('ICQ Number'), + 'msn': _('MSN Address'), + 'yahoo': _('Yahoo! Address')} + def __init__(self, account = None, jid = None, user_nick = None, + group = None): self.account = account if account == None: # fill accounts with active accounts @@ -376,80 +426,123 @@ class AddNewContactWindow: self.account = account else: accounts = [self.account] + if self.account: + location = gajim.interface.instances[self.account] + else: + location = gajim.interface.instances + if location.has_key('add_contact'): + location['add_contact'].window.present() + # An instance is already opened + return + location['add_contact'] = self self.xml = gtkgui_helpers.get_glade('add_new_contact_window.glade') - self.account_combobox = self.xml.get_widget('account_combobox') - self.account_hbox = self.xml.get_widget('account_hbox') - self.account_label = self.xml.get_widget('account_label') self.window = self.xml.get_widget('add_new_contact_window') - self.uid_entry = self.xml.get_widget('uid_entry') - self.protocol_combobox = self.xml.get_widget('protocol_combobox') - self.protocol_hbox = self.xml.get_widget('protocol_hbox') - self.jid_entry = self.xml.get_widget('jid_entry') - self.nickname_entry = self.xml.get_widget('nickname_entry') + for w in ('account_combobox', 'account_hbox', 'account_label', + 'uid_label', 'uid_entry', 'protocol_combobox', 'protocol_jid_combobox', + 'protocol_hbox', 'nickname_entry', 'message_scrolledwindow', + 'register_hbox', 'subscription_table', 'add_button', + 'message_textview', 'connected_label', 'group_comboboxentry'): + self.__dict__[w] = self.xml.get_widget(w) if account and len(gajim.connections) >= 2: prompt_text =\ _('Please fill in the data of the contact you want to add in account %s') %account else: prompt_text = _('Please fill in the data of the contact you want to add') self.xml.get_widget('prompt_label').set_text(prompt_text) - self.old_uid_value = '' - liststore = gtk.ListStore(str, str) - liststore.append(['Jabber', '']) - self.agents = ['Jabber'] - jid_agents = [] + self.agents = {'jabber': []} + # types to which we are not subscribed but account has an agent for it + self.available_types = [] for acct in accounts: for j in gajim.contacts.get_jid_list(acct): contact = gajim.contacts.get_first_contact_from_jid(acct, j) - if _('Transports') in contact.groups and contact.show != 'offline' and\ - contact.show != 'error': - jid_agents.append(j) - for a in jid_agents: - if a.find('aim') > -1: - name = 'AIM' - elif a.find('icq') > -1: - name = 'ICQ' - elif a.find('msn') > -1: - name = 'MSN' - elif a.find('yahoo') > -1: - name = 'Yahoo!' - else: - name = a - liststore.append([name, a]) - self.agents.append(name) - self.protocol_combobox.set_model(liststore) - self.protocol_combobox.set_active(0) - self.fill_jid() - if jid: - self.jid_entry.set_text(jid) - self.uid_entry.set_sensitive(False) - jid_splited = jid.split('@') - if jid_splited[1] in jid_agents: - uid = jid_splited[0].replace('%', '@') - self.uid_entry.set_text(uid) - self.protocol_combobox.set_active(jid_agents.index(jid_splited[1])\ - + 1) - else: - self.uid_entry.set_text(jid) - self.protocol_combobox.set_active(0) - self.set_nickname() - self.nickname_entry.grab_focus() - self.group_comboboxentry = self.xml.get_widget('group_comboboxentry') + if _('Transports') in contact.groups: + type_ = gajim.get_transport_name_from_jid(j) + if self.agents.has_key(type_): + self.agents[type_].append(j) + else: + self.agents[type_] = [j] + # Now add the one to which we can register + for acct in accounts: + for type_ in gajim.connections[account].available_transports: + if type_ in self.agents: + continue + self.agents[type_] = [] + for jid_ in gajim.connections[account].available_transports[type_]: + self.agents[type_].append(jid_) + self.available_types.append(type_) liststore = gtk.ListStore(str) self.group_comboboxentry.set_model(liststore) + liststore = gtk.ListStore(str, str) + uf_type = {'jabber': 'Jabber', 'aim': 'AIM', 'gadu-gadu': 'Gadu Gadu', + 'icq': 'ICQ', 'msn': 'MSN', 'yahoo': 'Yahoo'} + # Jabber as first + liststore.append(['Jabber', 'jabber']) + for type_ in self.agents: + if type_ == 'jabber': + continue + if type_ in uf_type: + liststore.append([uf_type[type_], type_]) + else: + liststore.append([type_, type_]) + self.protocol_combobox.set_model(liststore) + self.protocol_combobox.set_active(0) + self.protocol_jid_combobox.set_sensitive(False) + self.subscription_table.set_no_show_all(True) + self.message_scrolledwindow.set_no_show_all(True) + self.register_hbox.set_no_show_all(True) + self.register_hbox.hide() + self.connected_label.set_no_show_all(True) + self.connected_label.hide() + liststore = gtk.ListStore(str) + self.protocol_jid_combobox.set_model(liststore) + self.xml.signal_autoconnect(self) + if jid: + type_ = gajim.get_transport_name_from_jid(jid) or 'jabber' + if type_ == 'jabber': + self.uid_entry.set_text(jid) + else: + uid, transport = gajim.get_room_name_and_server_from_room_jid(jid) + self.uid_entry.set_text(uid.replace('%', '@', 1)) + #set protocol_combobox + model = self.protocol_combobox.get_model() + iter = model.get_iter_first() + i = 0 + while iter: + if model[iter][1] == type_: + self.protocol_combobox.set_active(i) + break + iter = model.iter_next(iter) + i += 1 + + # set protocol_jid_combobox + self.protocol_combobox.set_active(0) + model = self.protocol_jid_combobox.get_model() + iter = model.get_iter_first() + i = 0 + while iter: + if model[iter][0] == transport: + self.protocol_combobox.set_active(i) + break + iter = model.iter_next(iter) + i += 1 + if user_nick: + self.nickname_entry.set_text(user_nick) + self.nickname_entry.grab_focus() + else: + self.uid_entry.grab_focus() group_names = [] for acct in accounts: for g in gajim.groups[acct].keys(): if g not in helpers.special_groups and g not in group_names: group_names.append(g) - self.group_comboboxentry.append_text(g) + group_names.sort() + i = 0 + for g in group_names: + self.group_comboboxentry.append_text(g) + if group == g: + self.group_comboboxentry.set_active(i) + i += 1 - if not jid_agents: - # There are no transports, so hide the protocol combobox and label - self.protocol_hbox.hide() - self.protocol_hbox.set_no_show_all(True) - protocol_label = self.xml.get_widget('protocol_label') - protocol_label.hide() - protocol_label.set_no_show_all(True) if self.account: self.account_label.hide() self.account_hbox.hide() @@ -461,9 +554,19 @@ _('Please fill in the data of the contact you want to add in account %s') %accou liststore.append([acct, acct]) self.account_combobox.set_model(liststore) self.account_combobox.set_active(0) - self.xml.signal_autoconnect(self) self.window.show_all() + def on_add_new_contact_window_destroy(self, widget): + if self.account: + location = gajim.interface.instances[self.account] + else: + location = gajim.interface.instances + del location['add_contact'] + + def on_register_button_clicked(self, widget): + jid = self.protocol_jid_combobox.get_active_text().decode('utf-8') + gajim.connections[self.account].request_register_agent_info(jid) + def on_add_new_contact_window_key_press_event(self, widget, event): if event.keyval == gtk.keysyms.Escape: # ESCAPE self.window.destroy() @@ -472,13 +575,20 @@ _('Please fill in the data of the contact you want to add in account %s') %accou '''When Cancel button is clicked''' self.window.destroy() - def on_subscribe_button_clicked(self, widget): + def on_add_button_clicked(self, widget): '''When Subscribe button is clicked''' - jid = self.jid_entry.get_text().decode('utf-8') - nickname = self.nickname_entry.get_text().decode('utf-8') + jid = self.uid_entry.get_text().decode('utf-8') if not jid: return - + + model = self.protocol_combobox.get_model() + iter = self.protocol_combobox.get_active_iter() + type_ = model[iter][1] + if type_ != 'jabber': + transport = self.protocol_jid_combobox.get_active_text().decode( + 'utf-8') + jid = jid.replace('@', '%') + '@' + transport + # check if jid is conform to RFC and stringprep it try: jid = helpers.parse_jid(jid) @@ -493,6 +603,7 @@ _('Please fill in the data of the contact you want to add in account %s') %accou ErrorDialog(pritext, _('The user ID must not contain a resource.')) return + nickname = self.nickname_entry.get_text().decode('utf-8') or '' # get value of account combobox, if account was not specified if not self.account: model = self.account_combobox.get_model() @@ -507,57 +618,81 @@ _('Please fill in the data of the contact you want to add in account %s') %accou _('This contact is already listed in your roster.')) return - message_buffer = self.xml.get_widget('message_textview').get_buffer() - start_iter = message_buffer.get_start_iter() - end_iter = message_buffer.get_end_iter() - message = message_buffer.get_text(start_iter, end_iter).decode('utf-8') + if type_ == 'jabber': + message_buffer = self.message_textview.get_buffer() + start_iter = message_buffer.get_start_iter() + end_iter = message_buffer.get_end_iter() + message = message_buffer.get_text(start_iter, end_iter).decode('utf-8') + else: + message= '' group = self.group_comboboxentry.child.get_text().decode('utf-8') auto_auth = self.xml.get_widget('auto_authorize_checkbutton').get_active() gajim.interface.roster.req_sub(self, jid, message, self.account, group = group, pseudo = nickname, auto_auth = auto_auth) self.window.destroy() - - def fill_jid(self): - model = self.protocol_combobox.get_model() - index = self.protocol_combobox.get_active() - jid = self.uid_entry.get_text().decode('utf-8').strip() - if index > 0: # it's not jabber but a transport - jid = jid.replace('@', '%') - agent = model[index][1].decode('utf-8') - if agent: - jid += '@' + agent - self.jid_entry.set_text(jid) def on_protocol_combobox_changed(self, widget): - self.fill_jid() + model = widget.get_model() + iter = widget.get_active_iter() + type_ = model[iter][1] + model = self.protocol_jid_combobox.get_model() + model.clear() + if len(self.agents[type_]): + for jid_ in self.agents[type_]: + model.append([jid_]) + self.protocol_jid_combobox.set_active(0) + self.protocol_jid_combobox.set_sensitive(True) + else: + self.protocol_jid_combobox.set_sensitive(False) + if type_ in self.uid_labels: + self.uid_label.set_text(self.uid_labels[type_]) + else: + self.uid_label.set_text(_('User ID')) + if type_ == 'jabber': + self.message_scrolledwindow.show() + else: + self.message_scrolledwindow.hide() + if type_ in self.available_types: + self.register_hbox.set_no_show_all(False) + self.register_hbox.show_all() + self.connected_label.hide() + self.subscription_table.hide() + self.add_button.set_sensitive(False) + else: + self.register_hbox.hide() + if type_ != 'jabber': + jid = self.protocol_jid_combobox.get_active_text() + contact = gajim.contacts.get_first_contact_from_jid(self.account, + jid) + if contact.show in ('offline', 'error'): + self.subscription_table.hide() + self.connected_label.show() + self.add_button.set_sensitive(False) + return + self.subscription_table.set_no_show_all(False) + self.subscription_table.show_all() + self.connected_label.hide() + self.add_button.set_sensitive(True) - def guess_agent(self): - uid = self.uid_entry.get_text().decode('utf-8') - model = self.protocol_combobox.get_model() - - #If login contains only numbers, it's probably an ICQ number - if uid.isdigit(): - if 'ICQ' in self.agents: - self.protocol_combobox.set_active(self.agents.index('ICQ')) - return + def transport_signed_in(self, jid): + if self.protocol_jid_combobox.get_active_text() == jid: + self.register_hbox.hide() + self.connected_label.hide() + self.subscription_table.set_no_show_all(False) + self.subscription_table.show_all() + self.add_button.set_sensitive(True) - def set_nickname(self): - uid = self.uid_entry.get_text().decode('utf-8') - nickname = self.nickname_entry.get_text().decode('utf-8') - if nickname == self.old_uid_value: - self.nickname_entry.set_text(uid.split('@')[0]) - - def on_uid_entry_changed(self, widget): - uid = self.uid_entry.get_text().decode('utf-8') - self.guess_agent() - self.set_nickname() - self.fill_jid() - self.old_uid_value = uid.split('@')[0] + def transport_signed_out(self, jid): + if self.protocol_jid_combobox.get_active_text() == jid: + self.subscription_table.hide() + self.connected_label.show() + self.add_button.set_sensitive(False) class AboutDialog: '''Class for about dialog''' def __init__(self): dlg = gtk.AboutDialog() + dlg.set_transient_for(gajim.interface.roster.window) dlg.set_name('Gajim') dlg.set_version(gajim.version) s = u'Copyright © 2003-2006 Gajim Team' @@ -565,30 +700,28 @@ class AboutDialog: text = open('../COPYING').read() dlg.set_license(text) - #FIXME: do versions strings translatable after .10 - #FIXME: use %s then - dlg.set_comments(_('A GTK+ jabber client') + '\nGTK+ Version: ' + \ - self.tuple2str(gtk.gtk_version) + '\nPyGTK Version: ' + \ - self.tuple2str(gtk.pygtk_version)) - dlg.set_website('http://www.gajim.org') - - #FIXME: do current devs a translatable string - authors = [ - 'Current Developers:', - 'Yann Le Boulanger ', - 'Dimitur Kirov ', - 'Travis Shirk ', - '', - _('Past Developers:'), - 'Nikos Kouremenos ', - 'Vincent Hanquez ', - '', - _('THANKS:'), - ] + dlg.set_comments('%s\n%s %s\n%s %s' + % (_('A GTK+ jabber client'), \ + _('GTK+ Version:'), self.tuple2str(gtk.gtk_version), \ + _('PyGTK Version:'), self.tuple2str(gtk.pygtk_version))) + dlg.set_website('http://www.gajim.org/') + authors = [] + authors_file = open('../AUTHORS').read() + authors_file = authors_file.split('\n') + for author in authors_file: + if author == 'CURRENT DEVELOPERS:': + authors.append(_('Current Developers:')) + elif author == 'PAST DEVELOPERS:': + authors.append('\n' + _('Past Developers:')) + elif author != '': # Real author line + authors.append(author) + + authors.append('\n' + _('THANKS:')) + text = open('../THANKS').read() text_splitted = text.split('\n') - text = '\n'.join(text_splitted[:-2]) # remove one english setence + text = '\n'.join(text_splitted[:-2]) # remove one english sentence # and add it manually as translatable text += '\n%s\n' % _('Last but not least, we would like to thank all ' 'the package maintainers.') @@ -728,6 +861,12 @@ class FileChooserDialog(gtk.FileChooserDialog): def just_destroy(self, widget): self.destroy() +class BindPortError(HigDialog): + def __init__(self, port): + ErrorDialog(_('Unable to bind to port %s.') % port, + _('Maybe you have another running instance of Gajim. ' + 'File Transfer will be canceled.')) + class ConfirmationDialog(HigDialog): '''HIG compliant confirmation dialog.''' def __init__(self, pritext, sectext='', on_response_ok = None, @@ -860,11 +999,12 @@ ok_handler = None): return response class SubscriptionRequestWindow: - def __init__(self, jid, text, account): + def __init__(self, jid, text, account, user_nick = None): xml = gtkgui_helpers.get_glade('subscription_request_window.glade') self.window = xml.get_widget('subscription_request_window') self.jid = jid self.account = account + self.user_nick = user_nick if len(gajim.connections) >= 2: prompt_text = _('Subscription request for account %s from %s')\ % (account, self.jid) @@ -883,7 +1023,7 @@ class SubscriptionRequestWindow: gajim.connections[self.account].send_authorization(self.jid) self.window.destroy() if self.jid not in gajim.contacts.get_jid_list(self.account): - AddNewContactWindow(self.account, self.jid) + AddNewContactWindow(self.account, self.jid, self.user_nick) def on_contact_info_button_clicked(self, widget): '''ask vcard''' @@ -905,8 +1045,18 @@ class SubscriptionRequestWindow: self.window.destroy() class JoinGroupchatWindow: - def __init__(self, account, server = '', room = '', nick = ''): + def __init__(self, account, server = '', room = '', nick = '', + automatic = False): + '''automatic is a dict like {'invities': []} + If automatic is not empty, this means room must be automaticaly configured + and when done, invities must be automatically invited''' + if server and room: + jid = room + '@' + server + if jid in gajim.gc_connected[account] and gajim.gc_connected[account][jid]: + ErrorDialog(_('You are already in room %s') % jid) + raise RuntimeError, 'You are already in this room' self.account = account + self.automatic = automatic if nick == '': nick = gajim.nicks[self.account] if gajim.connections[account].connected < 2: @@ -1007,10 +1157,12 @@ _('You can not join a group chat unless you are connected.')) def on_join_button_clicked(self, widget): '''When Join button is clicked''' - nickname = self.xml.get_widget('nickname_entry').get_text().decode('utf-8') + nickname = self.xml.get_widget('nickname_entry').get_text().decode( + 'utf-8') room = self.xml.get_widget('room_entry').get_text().decode('utf-8') server = self.xml.get_widget('server_entry').get_text().decode('utf-8') - password = self.xml.get_widget('password_entry').get_text().decode('utf-8') + password = self.xml.get_widget('password_entry').get_text().decode( + 'utf-8') jid = '%s@%s' % (room, server) try: jid = helpers.parse_jid(jid) @@ -1025,7 +1177,9 @@ _('You can not join a group chat unless you are connected.')) if len(self.recently_groupchat) > 10: self.recently_groupchat = self.recently_groupchat[0:10] gajim.config.set('recently_groupchat', ' '.join(self.recently_groupchat)) - + + if self.automatic: + gajim.automatic_rooms[self.account][jid] = self.automatic gajim.interface.roster.join_gc_room(self.account, jid, nickname, password) self.window.destroy() @@ -1064,11 +1218,20 @@ class NewChatDialog(InputDialog): if gajim.connections[self.account].connected <= 1: #if offline or connecting ErrorDialog(_('Connection not available'), - _('Please make sure you are connected with "%s".' % self.account)) + _('Please make sure you are connected with "%s".') % self.account) return if self.completion_dict.has_key(jid): jid = self.completion_dict[jid].jid + else: + try: + jid = helpers.parse_jid(jid) + except helpers.InvalidFormat, e: + ErrorDialog(_('Invalid JID'), e[0]) + return + except: + ErrorDialog(_('Invalid JID'), _('Unable to parse "%s".') % jid) + return gajim.interface.roster.new_chat_from_jid(self.account, jid) class ChangePasswordDialog: @@ -1261,12 +1424,15 @@ class SingleMessageWindow: self.to_entry.set_text(to) - if gajim.config.get('use_speller') and HAS_GTK_SPELL: + if gajim.config.get('use_speller') and HAS_GTK_SPELL and action == 'send': try: - gtkspell.Spell(self.conversation_textview.tv) - gtkspell.Spell(self.message_textview) + spell1 = gtkspell.Spell(self.conversation_textview.tv) + spell2 = gtkspell.Spell(self.message_textview) + lang = gajim.config.get('speller_language') + if lang: + spell1.set_language(lang) + spell2.set_language(lang) except gobject.GError, msg: - #FIXME: add a ui for this use spell.set_language() ErrorDialog(unicode(msg), _('If that is not your language for which you want to highlight misspelled words, then please set your $LANG as appropriate. Eg. for French do export LANG=fr_FR or export LANG=fr_FR.UTF-8 in ~/.bash_profile or to make it global in /etc/profile.\n\nHighlighting misspelled words feature will not be used')) gajim.config.set('use_speller', False) @@ -1334,8 +1500,10 @@ class SingleMessageWindow: def prepare_widgets_for(self, action): if len(gajim.connections) > 1: - #FIXME: for Received with should become 'in' - title = _('Single Message with account %s') % self.account + if action == 'send': + title = _('Single Message using account %s') % self.account + else: + title = _('Single Message in account %s') % self.account else: title = _('Single Message') @@ -1404,7 +1572,7 @@ class SingleMessageWindow: if gajim.connections[self.account].connected <= 1: # if offline or connecting ErrorDialog(_('Connection not available'), - _('Please make sure you are connected with "%s".' % self.account)) + _('Please make sure you are connected with "%s".') % self.account) return to_whom_jid = self.to_entry.get_text().decode('utf-8') if self.completion_dict.has_key(to_whom_jid): @@ -1431,7 +1599,7 @@ class SingleMessageWindow: def on_reply_button_clicked(self, widget): # we create a new blank window to send and we preset RE: and to jid self.subject = _('RE: %s') % self.subject - self.message = _('%s wrote:\n' % self.from_whom) + self.message + self.message = _('%s wrote:\n') % self.from_whom + self.message # add > at the begining of each line self.message = self.message.replace('\n', '\n> ') + '\n\n' self.window.destroy() @@ -1498,8 +1666,10 @@ class XMLConsoleWindow: def scroll_to_end(self, ): parent = self.stanzas_log_textview.get_parent() buffer = self.stanzas_log_textview.get_buffer() - self.stanzas_log_textview.scroll_to_mark(buffer.get_mark('end'), 0, True, - 0, 1) + end_mark = buffer.get_mark('end') + if not end_mark: + return False + self.stanzas_log_textview.scroll_to_mark(end_mark, 0, True, 0, 1) adjustment = parent.get_hadjustment() adjustment.set_value(0) return False @@ -1526,7 +1696,7 @@ class XMLConsoleWindow: if gajim.connections[self.account].connected <= 1: #if offline or connecting ErrorDialog(_('Connection not available'), - _('Please make sure you are connected with "%s".' % self.account)) + _('Please make sure you are connected with "%s".') % self.account) return begin_iter, end_iter = self.input_tv_buffer.get_bounds() stanza = self.input_tv_buffer.get_text(begin_iter, end_iter).decode('utf-8') @@ -1554,6 +1724,406 @@ class XMLConsoleWindow: # it's expanded!! self.input_textview.grab_focus() +class PrivacyListWindow: + def __init__(self, account, privacy_list, list_type): + '''list_type can be 0 if list is created or 1 if it id edited''' + self.account = account + self.privacy_list = privacy_list + + # Dicts and Default Values + self.active_rule = '' + self.global_rules = {} + self.list_of_groups = {} + + # Default Edit Values + self.edit_rule_type = 'jid' + self.allow_deny = 'allow' + + # Connect to glade + self.xml = gtkgui_helpers.get_glade('privacy_list_edit_window.glade') + self.window = self.xml.get_widget('privacy_list_edit_window') + + # Add Widgets + + for widget_to_add in ['title_hbox', 'privacy_lists_title_label', + 'list_of_rules_label', 'add_edit_rule_label', 'delete_open_buttons_hbox', + 'privacy_list_active_checkbutton', 'privacy_list_default_checkbutton', + 'list_of_rules_combobox', 'delete_open_buttons_hbox', + 'delete_rule_button', 'open_rule_button', 'edit_allow_radiobutton', + 'edit_deny_radiobutton', 'edit_type_jabberid_radiobutton', + 'edit_type_jabberid_entry', 'edit_type_group_radiobutton', + 'edit_type_group_combobox', 'edit_type_subscription_radiobutton', + 'edit_type_subscription_combobox', 'edit_type_select_all_radiobutton', + 'edit_queries_send_checkbutton', 'edit_send_messages_checkbutton', + 'edit_view_status_checkbutton', 'edit_order_spinbutton', + 'new_rule_button', 'save_rule_button', 'privacy_list_refresh_button', + 'privacy_list_close_button', 'edit_send_status_checkbutton', + 'add_edit_vbox', 'privacy_list_active_checkbutton', + 'privacy_list_default_checkbutton']: + self.__dict__[widget_to_add] = self.xml.get_widget(widget_to_add) + + # Send translations + self.privacy_lists_title_label.set_label( + _('Privacy List %s') % \ + gtkgui_helpers.escape_for_pango_markup(self.privacy_list)) + + if len(gajim.connections) > 1: + title = _('Privacy List for %s') % self.account + else: + title = _('Privacy List') + + self.delete_rule_button.set_sensitive(False) + self.open_rule_button.set_sensitive(False) + self.privacy_list_active_checkbutton.set_sensitive(False) + self.privacy_list_default_checkbutton.set_sensitive(False) + + # Check if list is created (0) or edited (1) + if list_type == 1: + self.refresh_rules() + + count = 0 + for group in gajim.groups[self.account]: + self.list_of_groups[group] = count + count += 1 + self.edit_type_group_combobox.append_text(group) + self.edit_type_group_combobox.set_active(0) + + self.window.set_title(title) + + self.add_edit_vbox.set_no_show_all(True) + self.window.show_all() + self.add_edit_vbox.hide() + + self.xml.signal_autoconnect(self) + + def on_privacy_list_edit_window_destroy(self, widget): + '''close window''' + if gajim.interface.instances[self.account].has_key('privacy_list_%s' % \ + self.privacy_list): + del gajim.interface.instances[self.account]['privacy_list_%s' % \ + self.privacy_list] + + def check_active_default(self, a_d_dict): + if a_d_dict['active'] == self.privacy_list: + self.privacy_list_active_checkbutton.set_active(True) + else: + self.privacy_list_active_checkbutton.set_active(False) + if a_d_dict['default'] == self.privacy_list: + self.privacy_list_default_checkbutton.set_active(True) + else: + self.privacy_list_default_checkbutton.set_active(False) + + def privacy_list_received(self, rules): + self.list_of_rules_combobox.get_model().clear() + self.global_rules = {} + for rule in rules: + if rule.has_key('type'): + text_item = 'Order: %s, action: %s, type: %s, value: %s' % \ + (rule['order'], rule['action'], rule['type'], + rule['value']) + else: + text_item = 'Order: %s, action: %s' % (rule['order'], + rule['action']) + self.global_rules[text_item] = rule + self.list_of_rules_combobox.append_text(text_item) + if len(rules) == 0: + self.title_hbox.set_sensitive(False) + self.list_of_rules_combobox.set_sensitive(False) + self.delete_rule_button.set_sensitive(False) + self.open_rule_button.set_sensitive(False) + self.privacy_list_active_checkbutton.set_sensitive(False) + self.privacy_list_default_checkbutton.set_sensitive(False) + else: + self.list_of_rules_combobox.set_active(0) + self.title_hbox.set_sensitive(True) + self.list_of_rules_combobox.set_sensitive(True) + self.delete_rule_button.set_sensitive(True) + self.open_rule_button.set_sensitive(True) + self.privacy_list_active_checkbutton.set_sensitive(True) + self.privacy_list_default_checkbutton.set_sensitive(True) + self.reset_fields() + gajim.connections[self.account].get_active_default_lists() + + def refresh_rules(self): + gajim.connections[self.account].get_privacy_list(self.privacy_list) + + def on_delete_rule_button_clicked(self, widget): + tags = [] + for rule in self.global_rules: + if rule != \ + self.list_of_rules_combobox.get_active_text().decode('utf-8'): + tags.append(self.global_rules[rule]) + gajim.connections[self.account].set_privacy_list( + self.privacy_list, tags) + self.privacy_list_received(tags) + self.add_edit_vbox.hide() + + def on_open_rule_button_clicked(self, widget): + self.add_edit_rule_label.set_label( + _('Edit a rule')) + active_num = self.list_of_rules_combobox.get_active() + if active_num == -1: + self.active_rule = '' + else: + self.active_rule = \ + self.list_of_rules_combobox.get_active_text().decode('utf-8') + if self.active_rule != '': + rule_info = self.global_rules[self.active_rule] + self.edit_order_spinbutton.set_value(int(rule_info['order'])) + if rule_info.has_key('type'): + if rule_info['type'] == 'jid': + self.edit_type_jabberid_radiobutton.set_active(True) + self.edit_type_jabberid_entry.set_text(rule_info['value']) + elif rule_info['type'] == 'group': + self.edit_type_group_radiobutton.set_active(True) + if self.list_of_groups.has_key(rule_info['value']): + self.edit_type_group_combobox.set_active( + self.list_of_groups[rule_info['value']]) + else: + self.edit_type_group_combobox.set_active(0) + elif rule_info['type'] == 'subscription': + self.edit_type_subscription_radiobutton.set_active(True) + sub_value = rule_info['value'] + if sub_value == 'none': + self.edit_type_subscription_combobox.set_active(0) + elif sub_value == 'both': + self.edit_type_subscription_combobox.set_active(1) + elif sub_value == 'from': + self.edit_type_subscription_combobox.set_active(2) + elif sub_value == 'to': + self.edit_type_subscription_combobox.set_active(3) + else: + self.edit_type_select_all_radiobutton.set_active(True) + else: + self.edit_type_select_all_radiobutton.set_active(True) + self.edit_send_messages_checkbutton.set_active(False) + self.edit_queries_send_checkbutton.set_active(False) + self.edit_view_status_checkbutton.set_active(False) + self.edit_send_status_checkbutton.set_active(False) + for child in rule_info['child']: + if child == 'presence-out': + self.edit_send_status_checkbutton.set_active(True) + elif child == 'presence-in': + self.edit_view_status_checkbutton.set_active(True) + elif child == 'iq': + self.edit_queries_send_checkbutton.set_active(True) + elif child == 'message': + self.edit_send_messages_checkbutton.set_active(True) + + if rule_info['action'] == 'allow': + self.edit_allow_radiobutton.set_active(True) + else: + self.edit_deny_radiobutton.set_active(True) + self.add_edit_vbox.show() + + def on_privacy_list_active_checkbutton_toggled(self, widget): + if widget.get_active(): + gajim.connections[self.account].set_active_list(self.privacy_list) + else: + gajim.connections[self.account].set_active_list(None) + + def on_privacy_list_default_checkbutton_toggled(self, widget): + if widget.get_active(): + gajim.connections[self.account].set_default_list(self.privacy_list) + else: + gajim.connections[self.account].set_default_list(None) + + def on_new_rule_button_clicked(self, widget): + self.reset_fields() + self.add_edit_vbox.show() + + def reset_fields(self): + self.edit_type_jabberid_entry.set_text('') + self.edit_allow_radiobutton.set_active(True) + self.edit_type_jabberid_radiobutton.set_active(True) + self.active_rule = '' + self.edit_send_messages_checkbutton.set_active(False) + self.edit_queries_send_checkbutton.set_active(False) + self.edit_view_status_checkbutton.set_active(False) + self.edit_send_status_checkbutton.set_active(False) + self.edit_order_spinbutton.set_value(1) + self.edit_type_group_combobox.set_active(0) + self.edit_type_subscription_combobox.set_active(0) + self.add_edit_rule_label.set_label( + _('Add a rule')) + + def get_current_tags(self): + if self.edit_type_jabberid_radiobutton.get_active(): + edit_type = 'jid' + edit_value = \ + self.edit_type_jabberid_entry.get_text().decode('utf-8') + elif self.edit_type_group_radiobutton.get_active(): + edit_type = 'group' + edit_value = \ + self.edit_type_group_combobox.get_active_text().decode('utf-8') + elif self.edit_type_subscription_radiobutton.get_active(): + edit_type = 'subscription' + subs = ['none', 'both', 'from', 'to'] + edit_value = subs[self.edit_type_subscription_combobox.get_active()] + elif self.edit_type_select_all_radiobutton.get_active(): + edit_type = '' + edit_value = '' + edit_order = str(self.edit_order_spinbutton.get_value_as_int()) + if self.edit_allow_radiobutton.get_active(): + edit_deny = 'allow' + else: + edit_deny = 'deny' + child = [] + if self.edit_send_messages_checkbutton.get_active(): + child.append('message') + if self.edit_queries_send_checkbutton.get_active(): + child.append('iq') + if self.edit_send_status_checkbutton.get_active(): + child.append('presence-out') + if self.edit_view_status_checkbutton.get_active(): + child.append('presence-in') + if edit_type != '': + return {'order': edit_order, 'action': edit_deny, + 'type': edit_type, 'value': edit_value, 'child': child} + return {'order': edit_order, 'action': edit_deny, 'child': child} + + def on_save_rule_button_clicked(self, widget): + tags=[] + current_tags = self.get_current_tags() + if self.active_rule == '': + tags.append(current_tags) + + for rule in self.global_rules: + if rule != self.active_rule: + tags.append(self.global_rules[rule]) + else: + tags.append(current_tags) + + gajim.connections[self.account].set_privacy_list(self.privacy_list, tags) + self.privacy_list_received(tags) + self.add_edit_vbox.hide() + + def on_list_of_rules_combobox_changed(self, widget): + self.add_edit_vbox.hide() + + def on_edit_type_radiobutton_changed(self, widget, radiobutton): + active_bool = widget.get_active() + if active_bool: + self.edit_rule_type = radiobutton + + def on_edit_allow_radiobutton_changed(self, widget, radiobutton): + active_bool = widget.get_active() + if active_bool: + self.allow_deny = radiobutton + + def on_privacy_list_close_button_clicked(self, widget): + self.window.destroy() + + def on_privacy_list_refresh_button_clicked(self, widget): + self.refresh_rules() + self.add_edit_vbox.hide() + +class PrivacyListsWindow: +# To do: UTF-8 ??????? + def __init__(self, account): + self.account = account + + self.privacy_lists = [] + + self.privacy_lists_save = [] + + self.xml = gtkgui_helpers.get_glade('privacy_lists_first_window.glade') + + self.window = self.xml.get_widget('privacy_lists_first_window') + for widget_to_add in ['list_of_privacy_lists_combobox', + 'delete_privacy_list_button', 'open_privacy_list_button', + 'new_privacy_list_button', 'new_privacy_list_entry', 'buttons_hbox', + 'privacy_lists_refresh_button', 'close_privacy_lists_window_button']: + self.__dict__[widget_to_add] = self.xml.get_widget(widget_to_add) + + self.draw_privacy_lists_in_combobox() + self.privacy_lists_refresh() + + self.enabled = True + + if len(gajim.connections) > 1: + title = _('Privacy Lists for %s') % self.account + else: + title = _('Privacy Lists') + + self.window.set_title(title) + + self.window.show_all() + + self.xml.signal_autoconnect(self) + + def on_privacy_lists_first_window_destroy(self, widget): + '''close window''' + if gajim.interface.instances[self.account].has_key('privacy_lists'): + del gajim.interface.instances[self.account]['privacy_lists'] + + def draw_privacy_lists_in_combobox(self): + self.list_of_privacy_lists_combobox.set_active(-1) + self.list_of_privacy_lists_combobox.get_model().clear() + self.privacy_lists_save = self.privacy_lists + for add_item in self.privacy_lists: + self.list_of_privacy_lists_combobox.append_text(add_item) + if len(self.privacy_lists) == 0: + self.list_of_privacy_lists_combobox.set_sensitive(False) + self.buttons_hbox.set_sensitive(False) + elif len(self.privacy_lists) == 1: + self.list_of_privacy_lists_combobox.set_active(0) + self.list_of_privacy_lists_combobox.set_sensitive(False) + self.buttons_hbox.set_sensitive(True) + else: + self.list_of_privacy_lists_combobox.set_sensitive(True) + self.buttons_hbox.set_sensitive(True) + self.list_of_privacy_lists_combobox.set_active(0) + self.privacy_lists = [] + + def on_privacy_lists_refresh_button_clicked(self, widget): + self.privacy_lists_refresh() + + def on_close_button_clicked(self, widget): + self.window.destroy() + + def on_delete_privacy_list_button_clicked(self, widget): + active_list = self.privacy_lists_save[ + self.list_of_privacy_lists_combobox.get_active()] + gajim.connections[self.account].del_privacy_list(active_list) + self.privacy_lists_save.remove(active_list) + self.privacy_lists_received({'lists':self.privacy_lists_save}) + + def privacy_lists_received(self, lists): + if not lists: + return + for privacy_list in lists['lists']: + self.privacy_lists += [privacy_list] + self.draw_privacy_lists_in_combobox() + + def privacy_lists_refresh(self): + gajim.connections[self.account].get_privacy_lists() + + def on_new_privacy_list_button_clicked(self, widget): + name = self.new_privacy_list_entry.get_text().decode('utf-8') + if gajim.interface.instances[self.account].has_key( + 'privacy_list_%s' % name): + gajim.interface.instances[self.account]['privacy_list_%s' % name].\ + window.present() + else: + gajim.interface.instances[self.account]['privacy_list_%s' % name] = \ + PrivacyListWindow(self.account, name, 0) + self.new_privacy_list_entry.set_text('') + + def on_privacy_lists_refresh_button_clicked(self, widget): + self.privacy_lists_refresh() + + def on_open_privacy_list_button_clicked(self, widget): + name = self.privacy_lists_save[ + self.list_of_privacy_lists_combobox.get_active()] + if gajim.interface.instances[self.account].has_key( + 'privacy_list_%s' % name): + gajim.interface.instances[self.account]['privacy_list_%s' % name].\ + window.present() + else: + gajim.interface.instances[self.account]['privacy_list_%s' % name] = \ + PrivacyListWindow(self.account, name, 1) + class InvitationReceivedDialog: def __init__(self, account, room_jid, contact_jid, password = None, comment = None): @@ -1561,7 +2131,7 @@ class InvitationReceivedDialog: self.account = account xml = gtkgui_helpers.get_glade('invitation_received_dialog.glade') self.dialog = xml.get_widget('invitation_received_dialog') - + #FIXME: use nickname instead of contact_jid pritext = _('%(contact_jid)s has invited you to %(room_jid)s room') % { 'room_jid': room_jid, 'contact_jid': contact_jid } @@ -1586,7 +2156,10 @@ class InvitationReceivedDialog: def on_accept_button_clicked(self, widget): self.dialog.destroy() room, server = gajim.get_room_name_and_server_from_room_jid(self.room_jid) - JoinGroupchatWindow(self.account, server = server, room = room) + try: + JoinGroupchatWindow(self.account, server = server, room = room) + except RuntimeError: + pass class ProgressDialog: def __init__(self, title_text, during_text, messages_queue): @@ -1659,6 +2232,8 @@ class ImageChooserDialog(FileChooserDialog): def on_ok(widget, callback): '''check if file exists and call callback''' path_to_file = self.get_filename() + if not path_to_file: + return path_to_file = gtkgui_helpers.decode_filechooser_file_paths( (path_to_file,))[0] if os.path.exists(path_to_file): @@ -1768,16 +2343,26 @@ class AddSpecialNotificationDialog: print listen_sound_model[active_iter][0] class AdvancedNotificationsWindow: + events_list = ['message_received', 'contact_connected', + 'contact_disconnected', 'contact_change_status', 'gc_msg_highlight', + 'gc_msg', 'ft_request', 'ft_started', 'ft_finished'] + recipient_types_list = ['contact', 'group', 'all'] + config_options = ['event', 'recipient_type', 'recipients', 'status', + 'tab_opened', 'sound', 'sound_file', 'popup', 'auto_open', + 'run_command', 'command', 'systray', 'roster', 'urgency_hint'] def __init__(self): self.xml = gtkgui_helpers.get_glade('advanced_notifications_window.glade') self.window = self.xml.get_widget('advanced_notifications_window') - self.xml.signal_autoconnect(self) - self.conditions_treeview = self.xml.get_widget('conditions_treeview') - self.recipient_type_combobox = self.xml.get_widget('recipient_type_combobox') - self.recipient_list = self.xml.get_widget('recipient_list') - self.list_expander = self.xml.get_widget('list_expander') - - self.status_hbox = self.xml.get_widget('status_hbox') + for w in ('conditions_treeview', 'config_vbox', 'event_combobox', + 'recipient_type_combobox', 'recipient_list_entry', 'delete_button', + 'status_hbox', 'use_sound_cb', 'disable_sound_cb', 'use_popup_cb', + 'disable_popup_cb', 'use_auto_open_cb', 'disable_auto_open_cb', + 'use_systray_cb', 'disable_systray_cb', 'use_roster_cb', + 'disable_roster_cb', 'tab_opened_cb', 'not_tab_opened_cb', + 'sound_entry', 'sound_file_hbox', 'up_button', 'down_button', + 'run_command_cb', 'command_entry', 'urgency_hint_cb'): + self.__dict__[w] = self.xml.get_widget(w) + # Contains status checkboxes childs = self.status_hbox.get_children() @@ -1785,130 +2370,438 @@ class AdvancedNotificationsWindow: self.special_status_rb = childs[1] self.online_cb = childs[2] self.away_cb = childs[3] - self.not_available_cb = childs[4] - self.busy_cb = childs[5] + self.xa_cb = childs[4] + self.dnd_cb = childs[5] self.invisible_cb = childs[6] - - self.use_sound_cb = self.xml.get_widget('use_sound_cb') - self.disable_sound_cb = self.xml.get_widget('disable_sound_cb') - self.use_popup_cb = self.xml.get_widget('use_popup_cb') - self.disable_popup_cb = self.xml.get_widget('disable_popup_cb') - self.use_auto_open_cb = self.xml.get_widget('use_auto_open_cb') - self.disable_auto_open_cb = self.xml.get_widget('disable_auto_open_cb') - self.use_systray_cb = self.xml.get_widget('use_systray_cb') - self.disable_systray_cb = self.xml.get_widget('disable_systray_cb') - self.use_roster_cb = self.xml.get_widget('use_roster_cb') - self.disable_roster_cb = self.xml.get_widget('disable_roster_cb') - - self.tab_opened_cb = self.xml.get_widget('tab_opened_cb') - self.not_tab_opened_cb = self.xml.get_widget('not_tab_opened_cb') - - model = gtk.ListStore(str) + + model = gtk.ListStore(int, str) + model.set_sort_column_id(0, gtk.SORT_ASCENDING) model.clear() self.conditions_treeview.set_model(model) + ## means number + col = gtk.TreeViewColumn(_('#')) + self.conditions_treeview.append_column(col) + renderer = gtk.CellRendererText() + col.pack_start(renderer, expand = False) + col.set_attributes(renderer, text = 0) + col = gtk.TreeViewColumn(_('Condition')) self.conditions_treeview.append_column(col) renderer = gtk.CellRendererText() col.pack_start(renderer, expand = True) - col.set_attributes(renderer, text = 0) - - if (0==0): # No rule set yet - self.list_expander.set_expanded(False) - - if (0==1): # We have existing rule(s) - #temporary example - model.append(("When Contact Connected for contact Asterix when I am Available",)) + col.set_attributes(renderer, text = 1) + + self.xml.signal_autoconnect(self) + + # Fill conditions_treeview + num = 0 + while gajim.config.get_per('notifications', str(num)): + iter = model.append((num, '')) + path = model.get_path(iter) + self.conditions_treeview.set_cursor(path) + self.active_num = num + self.initiate_rule_state() + self.set_treeview_string() + num += 1 - # TODO : add a "New rule" line - - self.window.show_all() - # No rule selected at init time - self.initiate_new_rule_state() - - def initiate_new_rule_state(self): - '''Set default value to all widgets''' - # Deal with status line - self.all_status_rb.set_active(True) + self.conditions_treeview.get_selection().unselect_all() + self.active_num = -1 + self.config_vbox.set_sensitive(False) + self.delete_button.set_sensitive(False) + self.down_button.set_sensitive(False) + self.up_button.set_sensitive(False) + self.recipient_list_entry.set_no_show_all(True) + for st in ['online', 'away', 'xa', 'dnd', 'invisible']: + self.__dict__[st + '_cb'].set_no_show_all(True) + + self.window.show_all() + + def initiate_rule_state(self): + '''Set values for all widgets''' + if self.active_num < 0: + return + # event + value = gajim.config.get_per('notifications', str(self.active_num), + 'event') + if value: + self.event_combobox.set_active(self.events_list.index(value)) + else: + self.event_combobox.set_active(-1) + # recipient_type + value = gajim.config.get_per('notifications', str(self.active_num), + 'recipient_type') + if value: + self.recipient_type_combobox.set_active( + self.recipient_types_list.index(value)) + else: + self.recipient_type_combobox.set_active(-1) + # recipient + value = gajim.config.get_per('notifications', str(self.active_num), + 'recipients') + if not value: + value = '' + self.recipient_list_entry.set_text(value) + # status + value = gajim.config.get_per('notifications', str(self.active_num), + 'status') + if value == 'all': + self.all_status_rb.set_active(True) + else: + self.special_status_rb.set_active(True) + values = value.split() + for v in ['online', 'away', 'xa', 'dnd', 'invisible']: + if v in values: + self.__dict__[v + '_cb'].set_active(True) + else: + self.__dict__[v + '_cb'].set_active(False) self.on_status_radiobutton_toggled(self.all_status_rb) - - self.recipient_type_combobox.set_active(0) # 'Contact(s)' - self.not_tab_opened_cb.set_active(True) + # tab_opened + value = gajim.config.get_per('notifications', str(self.active_num), + 'tab_opened') self.tab_opened_cb.set_active(True) + self.not_tab_opened_cb.set_active(True) + if value == 'no': + self.tab_opened_cb.set_active(False) + elif value == 'yes': + self.not_tab_opened_cb.set_active(False) + # sound_file + value = gajim.config.get_per('notifications', str(self.active_num), + 'sound_file') + self.sound_entry.set_text(value) + # sound, popup, auto_open, systray, roster + for option in ['sound', 'popup', 'auto_open', 'systray', 'roster']: + value = gajim.config.get_per('notifications', str(self.active_num), + option) + if value == 'yes': + self.__dict__['use_' + option + '_cb'].set_active(True) + else: + self.__dict__['use_' + option + '_cb'].set_active(False) + if value == 'no': + self.__dict__['disable_' + option + '_cb'].set_active(True) + else: + self.__dict__['disable_' + option + '_cb'].set_active(False) + # run_command + value = gajim.config.get_per('notifications', str(self.active_num), + 'run_command') + self.run_command_cb.set_active(value) + # command + value = gajim.config.get_per('notifications', str(self.active_num), + 'command') + self.command_entry.set_text(value) + # urgency_hint + value = gajim.config.get_per('notifications', str(self.active_num), + 'urgency_hint') + self.urgency_hint_cb.set_active(value) + + def set_treeview_string(self): + (model, iter) = self.conditions_treeview.get_selection().get_selected() + if not iter: + return + event = self.event_combobox.get_active_text() + recipient_type = self.recipient_type_combobox.get_active_text() + recipient = '' + if recipient_type != 'everybody': + recipient = self.recipient_list_entry.get_text() + if self.all_status_rb.get_active(): + status = '' + else: + status = _('when I am ') + for st in ['online', 'away', 'xa', 'dnd', 'invisible']: + if self.__dict__[st + '_cb'].get_active(): + status += helpers.get_uf_show(st) + ' ' + model[iter][1] = "When %s for %s %s %s" % (event, recipient_type, + recipient, status) + + def on_conditions_treeview_cursor_changed(self, widget): + (model, iter) = widget.get_selection().get_selected() + if not iter: + self.active_num = -1 + return + self.active_num = model[iter][0] + if self.active_num == 0: + self.up_button.set_sensitive(False) + else: + self.up_button.set_sensitive(True) + max = self.conditions_treeview.get_model().iter_n_children(None) + if self.active_num == max - 1: + self.down_button.set_sensitive(False) + else: + self.down_button.set_sensitive(True) + self.initiate_rule_state() + self.config_vbox.set_sensitive(True) + self.delete_button.set_sensitive(True) + + def on_new_button_clicked(self, widget): + model = self.conditions_treeview.get_model() + num = self.conditions_treeview.get_model().iter_n_children(None) + gajim.config.add_per('notifications', str(num)) + iter = model.append((num, '')) + path = model.get_path(iter) + self.conditions_treeview.set_cursor(path) + self.active_num = num + self.set_treeview_string() + self.config_vbox.set_sensitive(True) + + def on_delete_button_clicked(self, widget): + (model, iter) = self.conditions_treeview.get_selection().get_selected() + if not iter: + return + # up all others + iter2 = model.iter_next(iter) + num = self.active_num + while iter2: + num = model[iter2][0] + model[iter2][0] = num - 1 + for opt in self.config_options: + val = gajim.config.get_per('notifications', str(num), opt) + gajim.config.set_per('notifications', str(num - 1), opt, val) + iter2 = model.iter_next(iter2) + model.remove(iter) + gajim.config.del_per('notifications', str(num)) # delete latest + self.active_num = -1 + self.config_vbox.set_sensitive(False) + self.delete_button.set_sensitive(False) + self.up_button.set_sensitive(False) + self.down_button.set_sensitive(False) + + def on_up_button_clicked(self, widget): + (model, iter) = self.conditions_treeview.get_selection().\ + get_selected() + if not iter: + return + for opt in self.config_options: + val = gajim.config.get_per('notifications', str(self.active_num), opt) + val2 = gajim.config.get_per('notifications', str(self.active_num - 1), + opt) + gajim.config.set_per('notifications', str(self.active_num), opt, val2) + gajim.config.set_per('notifications', str(self.active_num - 1), opt, + val) + + model[iter][0] = self.active_num - 1 + # get previous iter + path = model.get_path(iter) + iter = model.get_iter((path[0] - 1,)) + model[iter][0] = self.active_num + self.on_conditions_treeview_cursor_changed(self.conditions_treeview) + + def on_down_button_clicked(self, widget): + (model, iter) = self.conditions_treeview.get_selection().get_selected() + if not iter: + return + for opt in self.config_options: + val = gajim.config.get_per('notifications', str(self.active_num), opt) + val2 = gajim.config.get_per('notifications', str(self.active_num + 1), + opt) + gajim.config.set_per('notifications', str(self.active_num), opt, val2) + gajim.config.set_per('notifications', str(self.active_num + 1), opt, + val) + + model[iter][0] = self.active_num + 1 + iter = model.iter_next(iter) + model[iter][0] = self.active_num + self.on_conditions_treeview_cursor_changed(self.conditions_treeview) + + def on_event_combobox_changed(self, widget): + if self.active_num < 0: + return + active = self.event_combobox.get_active() + if active == -1: + event = '' + else: + event = self.events_list[active] + gajim.config.set_per('notifications', str(self.active_num), 'event', + event) + self.set_treeview_string() + + def on_recipient_type_combobox_changed(self, widget): + if self.active_num < 0: + return + recipient_type = self.recipient_types_list[self.recipient_type_combobox.\ + get_active()] + gajim.config.set_per('notifications', str(self.active_num), + 'recipient_type', recipient_type) + if recipient_type == 'all': + self.recipient_list_entry.hide() + else: + self.recipient_list_entry.show() + self.set_treeview_string() + + def on_recipient_list_entry_changed(self, widget): + if self.active_num < 0: + return + recipients = widget.get_text().decode('utf-8') + #TODO: do some check + gajim.config.set_per('notifications', str(self.active_num), + 'recipients', recipients) + self.set_treeview_string() + + def set_status_config(self): + if self.active_num < 0: + return + status = '' + for st in ['online', 'away', 'xa', 'dnd', 'invisible']: + if self.__dict__[st + '_cb'].get_active(): + status += st + ' ' + if status: + status = status[:-1] + gajim.config.set_per('notifications', str(self.active_num), 'status', + status) + self.set_treeview_string() def on_status_radiobutton_toggled(self, widget): + if self.active_num < 0: + return if self.all_status_rb.get_active(): + gajim.config.set_per('notifications', str(self.active_num), 'status', + 'all') # 'All status' clicked - self.online_cb.hide() - self.away_cb.hide() - self.not_available_cb.hide() - self.busy_cb.hide() - self.invisible_cb.hide() - - self.online_cb.set_active(False) - self.away_cb.set_active(False) - self.not_available_cb.set_active(False) - self.busy_cb.set_active(False) - self.invisible_cb.set_active(False) - + for st in ['online', 'away', 'xa', 'dnd', 'invisible']: + self.__dict__[st + '_cb'].hide() + self.special_status_rb.show() else: + self.set_status_config() # 'special status' clicked - self.online_cb.show() - self.away_cb.show() - self.not_available_cb.show() - self.busy_cb.show() - self.invisible_cb.show() - + for st in ['online', 'away', 'xa', 'dnd', 'invisible']: + self.__dict__[st + '_cb'].show() + self.special_status_rb.hide() - def on_recipient_type_combobox_changed(self, widget): - if (self.recipient_type_combobox.get_active()==2 ): - self.recipient_list.hide() - else: - self.recipient_list.show() + self.set_treeview_string() + + def on_status_cb_toggled(self, widget): + if self.active_num < 0: + return + self.set_status_config() # tab_opened OR (not xor) not_tab_opened must be active def on_tab_opened_cb_toggled(self, widget): - if not self.tab_opened_cb.get_active() and not self.not_tab_opened_cb.get_active(): + if self.active_num < 0: + return + if self.tab_opened_cb.get_active(): + if self.not_tab_opened_cb.get_active(): + gajim.config.set_per('notifications', str(self.active_num), + 'tab_opened', 'both') + else: + gajim.config.set_per('notifications', str(self.active_num), + 'tab_opened', 'yes') + elif not self.not_tab_opened_cb.get_active(): self.not_tab_opened_cb.set_active(True) + gajim.config.set_per('notifications', str(self.active_num), + 'tab_opened', 'no') + def on_not_tab_opened_cb_toggled(self, widget): - if not self.tab_opened_cb.get_active() and not self.not_tab_opened_cb.get_active(): + if self.active_num < 0: + return + if self.not_tab_opened_cb.get_active(): + if self.tab_opened_cb.get_active(): + gajim.config.set_per('notifications', str(self.active_num), + 'tab_opened', 'both') + else: + gajim.config.set_per('notifications', str(self.active_num), + 'tab_opened', 'no') + elif not self.tab_opened_cb.get_active(): self.tab_opened_cb.set_active(True) - - # 10 next functions : Forbid two incompatible actions to be checked together + gajim.config.set_per('notifications', str(self.active_num), + 'tab_opened', 'yes') + + def on_use_it_toggled(self, widget, oposite_widget, option): + if widget.get_active(): + if oposite_widget.get_active(): + oposite_widget.set_active(False) + gajim.config.set_per('notifications', str(self.active_num), option, + 'yes') + elif oposite_widget.get_active(): + gajim.config.set_per('notifications', str(self.active_num), option, + 'no') + else: + gajim.config.set_per('notifications', str(self.active_num), option, '') + + def on_disable_it_toggled(self, widget, oposite_widget, option): + if widget.get_active(): + if oposite_widget.get_active(): + oposite_widget.set_active(False) + gajim.config.set_per('notifications', str(self.active_num), option, + 'no') + elif oposite_widget.get_active(): + gajim.config.set_per('notifications', str(self.active_num), option, + 'yes') + else: + gajim.config.set_per('notifications', str(self.active_num), option, '') + def on_use_sound_cb_toggled(self, widget): - if self.use_sound_cb.get_active() and self.disable_sound_cb.get_active(): - self.disable_sound_cb.set_active(False) + self.on_use_it_toggled(widget, self.disable_sound_cb, 'sound') + if widget.get_active(): + self.sound_file_hbox.set_sensitive(True) + else: + self.sound_file_hbox.set_sensitive(False) + + def on_browse_for_sounds_button_clicked(self, widget, data = None): + if self.active_num < 0: + return + + def on_ok(widget, path_to_snd_file): + dialog.destroy() + if not path_to_snd_file: + path_to_snd_file = '' + gajim.config.set_per('notifications', str(self.active_num), + 'sound_file', path_to_snd_file) + self.sound_entry.set_text(path_to_snd_file) + + path_to_snd_file = self.sound_entry.get_text().decode('utf-8') + path_to_snd_file = os.path.join(os.getcwd(), path_to_snd_file) + dialog = SoundChooserDialog(path_to_snd_file, on_ok) + + def on_play_button_clicked(self, widget): + helpers.play_sound_file(self.sound_entry.get_text().decode('utf-8')) + def on_disable_sound_cb_toggled(self, widget): - if self.use_sound_cb.get_active() and self.disable_sound_cb.get_active(): - self.use_sound_cb.set_active(False) + self.on_disable_it_toggled(widget, self.use_sound_cb, 'sound') + + def on_sound_entry_changed(self, widget): + gajim.config.set_per('notifications', str(self.active_num), + 'sound_file', widget.get_text().decode('utf-8')) + def on_use_popup_cb_toggled(self, widget): - if self.use_popup_cb.get_active() and self.disable_popup_cb.get_active(): - self.disable_popup_cb.set_active(False) + self.on_use_it_toggled(widget, self.disable_popup_cb, 'popup') + def on_disable_popup_cb_toggled(self, widget): - if self.use_popup_cb.get_active() and self.disable_popup_cb.get_active(): - self.use_popup_cb.set_active(False) + self.on_disable_it_toggled(widget, self.use_popup_cb, 'popup') + def on_use_auto_open_cb_toggled(self, widget): - if self.use_auto_open_cb.get_active() and\ - self.disable_auto_open_cb.get_active(): - self.disable_auto_open_cb.set_active(False) + self.on_use_it_toggled(widget, self.disable_auto_open_cb, 'auto_open') + def on_disable_auto_open_cb_toggled(self, widget): - if self.use_auto_open_cb.get_active() and\ - self.disable_auto_open_cb.get_active(): - self.use_auto_open_cb.set_active(False) + self.on_disable_it_toggled(widget, self.use_auto_open_cb, 'auto_open') + + def on_run_command_cb_toggled(self, widget): + gajim.config.set_per('notifications', str(self.active_num), 'run_command', + widget.get_active()) + if widget.get_active(): + self.command_entry.set_sensitive(True) + else: + self.command_entry.set_sensitive(False) + + def on_command_entry_changed(self, widget): + gajim.config.set_per('notifications', str(self.active_num), 'command', + widget.get_text().decode('utf-8')) + def on_use_systray_cb_toggled(self, widget): - if self.use_systray_cb.get_active() and self.disable_systray_cb.get_active(): - self.disable_systray_cb.set_active(False) + self.on_use_it_toggled(widget, self.disable_systray_cb, 'systray') + def on_disable_systray_cb_toggled(self, widget): - if self.use_systray_cb.get_active() and self.disable_systray_cb.get_active(): - self.use_systray_cb.set_active(False) + self.on_disable_it_toggled(widget, self.use_systray_cb, 'systray') + def on_use_roster_cb_toggled(self, widget): - if self.use_roster_cb.get_active() and self.disable_roster_cb.get_active(): - self.disable_roster_cb.set_active(False) + self.on_use_it_toggled(widget, self.disable_roster_cb, 'roster') + def on_disable_roster_cb_toggled(self, widget): - if self.use_roster_cb.get_active() and self.disable_roster_cb.get_active(): - self.use_roster_cb.set_active(False) - + self.on_disable_it_toggled(widget, self.use_roster_cb, 'roster') + + def on_urgency_hint_cb_toggled(self, widget): + gajim.config.set_per('notifications', str(self.active_num), + 'uregency_hint', widget.get_active()) + def on_close_window(self, widget): self.window.destroy() diff --git a/src/disco.py b/src/disco.py index 2730b68f2..f56f70a1c 100644 --- a/src/disco.py +++ b/src/disco.py @@ -51,7 +51,6 @@ import inspect import weakref import gobject import gtk -import gtk.glade import pango import dialogs @@ -60,12 +59,6 @@ import gtkgui_helpers from common import gajim from common import xmpp -from common import i18n - -_ = i18n._ -APP = i18n.APP -gtk.glade.bindtextdomain (APP, i18n.DIR) -gtk.glade.textdomain (APP) # Dictionary mapping category, type pairs to browser class, image pairs. # This is a function, so we can call it after the classes are declared. @@ -92,7 +85,7 @@ def _gen_agent_type_info(): ('proxy', 'bytestreams'): (None, 'bytestreams.png'), # Socks5 FT proxy # Transports - ('conference', 'irc'): (False, 'irc.png'), + ('conference', 'irc'): (ToplevelAgentBrowser, 'irc.png'), ('_jid', 'irc'): (False, 'irc.png'), ('gateway', 'aim'): (False, 'aim.png'), ('_jid', 'aim'): (False, 'aim.png'), @@ -140,7 +133,8 @@ class CacheDictionary: def _expire_timeout(self, key): '''The timeout has expired, remove the object.''' - del self.cache[key] + if key in self.cache: + del self.cache[key] return False def _refresh_timeout(self, key): @@ -278,7 +272,7 @@ class ServicesCache: except KeyError: continue browser = info[0] - if browser is not None: + if browser: break # Note: possible outcome here is browser=False if browser is None: @@ -449,7 +443,7 @@ _('Without a connection, you can not browse available services')) # Address combobox self.address_comboboxentry = None - address_hbox = self.xml.get_widget('address_hbox') + address_table = self.xml.get_widget('address_table') if address_entry: self.address_comboboxentry = self.xml.get_widget( 'address_comboboxentry') @@ -461,7 +455,6 @@ _('Without a connection, you can not browse available services')) self.address_comboboxentry.set_text_column(0) self.latest_addresses = gajim.config.get( 'latest_disco_addresses').split() - jid = gajim.get_hostname_from_account(self.account) if jid in self.latest_addresses: self.latest_addresses.remove(jid) self.latest_addresses.insert(0, jid) @@ -472,8 +465,8 @@ _('Without a connection, you can not browse available services')) self.address_comboboxentry.child.set_text(jid) else: # Don't show it at all if we didn't ask for it - address_hbox.set_no_show_all(True) - address_hbox.hide() + address_table.set_no_show_all(True) + address_table.hide() self._initial_state() self.xml.signal_autoconnect(self) @@ -1205,7 +1198,10 @@ class ToplevelAgentBrowser(AgentBrowser): else: room = '' if not gajim.interface.instances[self.account].has_key('join_gc'): - dialogs.JoinGroupchatWindow(self.account, service, room) + try: + dialogs.JoinGroupchatWindow(self.account, service, room) + except RuntimeError: + pass else: gajim.interface.instances[self.account]['join_gc'].window.present() self.window.destroy(chain = True) @@ -1535,7 +1531,10 @@ class MucBrowser(AgentBrowser): else: room = model[iter][1].decode('utf-8') if not gajim.interface.instances[self.account].has_key('join_gc'): - dialogs.JoinGroupchatWindow(self.account, service, room) + try: + dialogs.JoinGroupchatWindow(self.account, service, room) + except RuntimeError: + pass else: gajim.interface.instances[self.account]['join_gc'].window.present() self.window.destroy(chain = True) diff --git a/src/filetransfers_window.py b/src/filetransfers_window.py index d4ef4860b..0e31e8a4e 100644 --- a/src/filetransfers_window.py +++ b/src/filetransfers_window.py @@ -18,7 +18,6 @@ ## import gtk -import gtk.glade import gobject import pango import os @@ -30,12 +29,6 @@ import dialogs from common import gajim from common import helpers -from common import i18n - -_ = i18n._ -APP = i18n.APP -gtk.glade.bindtextdomain (APP, i18n.DIR) -gtk.glade.textdomain (APP) C_IMAGE = 0 C_LABELS = 1 @@ -153,9 +146,8 @@ class FileTransfersWindow: ''' show a dialog saying that file (file_props) has been transferred''' self.window.present() self.window.window.focus() - def on_open(widget, file_props): - self.dialog.destroy() + dialog.destroy() if not file_props.has_key('file-name'): return (path, file) = os.path.split(file_props['file-name']) @@ -192,17 +184,17 @@ class FileTransfersWindow: sectext += recipient if file_props['type'] == 'r': sectext += '\n\t' +_('Saved in: %s') % file_path - self.dialog = dialogs.HigDialog(None, gtk.MESSAGE_INFO, gtk.BUTTONS_NONE, + dialog = dialogs.HigDialog(None, gtk.MESSAGE_INFO, gtk.BUTTONS_NONE, _('File transfer completed'), sectext) if file_props['type'] == 'r': button = gtk.Button(_('_Open Containing Folder')) button.connect('clicked', on_open, file_props) - self.dialog.action_area.pack_start(button) - ok_button = self.dialog.add_button(gtk.STOCK_OK, gtk.RESPONSE_OK) + dialog.action_area.pack_start(button) + ok_button = dialog.add_button(gtk.STOCK_OK, gtk.RESPONSE_OK) def on_ok(widget): - self.dialog.destroy() + dialog.destroy() ok_button.connect('clicked', on_ok) - self.dialog.show_all() + dialog.show_all() def show_request_error(self, file_props): ''' show error dialog to the recipient saying that transfer @@ -221,7 +213,7 @@ class FileTransfersWindow: _('Connection with peer cannot be established.')) self.tree.get_selection().unselect_all() - def show_stopped(self, jid, file_props): + def show_stopped(self, jid, file_props, error_msg = ''): self.window.present() self.window.window.focus() if file_props['type'] == 'r': @@ -229,7 +221,9 @@ _('Connection with peer cannot be established.')) else: file_name = file_props['name'] sectext = '\t' + _('Filename: %s') % file_name - sectext += '\n\t' + _('Sender: %s') % jid + sectext += '\n\t' + _('Recipient: %s') % jid + if error_msg: + sectext += '\n\t' + _('Error message: %s') % error_msg dialogs.ErrorDialog(_('File transfer stopped by the contact of the other side'), \ sectext) self.tree.get_selection().unselect_all() @@ -237,7 +231,7 @@ _('Connection with peer cannot be established.')) def show_file_send_request(self, account, contact): def on_ok(widget): file_dir = None - files_path_list = self.dialog.get_filenames() + files_path_list = dialog.get_filenames() files_path_list = gtkgui_helpers.decode_filechooser_file_paths( files_path_list) for file_path in files_path_list: @@ -245,16 +239,16 @@ _('Connection with peer cannot be established.')) file_dir = os.path.dirname(file_path) if file_dir: gajim.config.set('last_send_dir', file_dir) - self.dialog.destroy() + dialog.destroy() - self.dialog = dialogs.FileChooserDialog(_('Choose File to Send...'), + dialog = dialogs.FileChooserDialog(_('Choose File to Send...'), gtk.FILE_CHOOSER_ACTION_OPEN, (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL), gtk.RESPONSE_OK, True, # select multiple true as we can select many files to send gajim.config.get('last_send_dir'), ) - btn = self.dialog.add_button(_('_Send'), gtk.RESPONSE_OK) + btn = dialog.add_button(_('_Send'), gtk.RESPONSE_OK) btn.set_use_stock(True) # FIXME: add send icon to this button (JUMP_TO) btn.connect('clicked', on_ok) @@ -313,6 +307,12 @@ _('Connection with peer cannot be established.')) file_path = gtkgui_helpers.decode_filechooser_file_paths( (file_path,))[0] if os.path.exists(file_path): + # check if we have write permissions + if not os.access(file_path, os.W_OK): + file_name = os.path.basename(file_path) + dialogs.ErrorDialog(_('Cannot overwrite existing file "%s"' % file_name), + _('A file with this name already exists and you do not have permission to overwrite it.')) + return stat = os.stat(file_path) dl_size = stat.st_size file_size = file_props['size'] @@ -327,6 +327,11 @@ _('Connection with peer cannot be established.')) return elif response == 100: file_props['offset'] = dl_size + else: + dirname = os.path.dirname(file_path) + if not os.access(dirname, os.W_OK): + dialogs.ErrorDialog(_('Directory "%s" is not writable') % dirname, _('You do not have permission to create files in this directory.')) + return dialog2.destroy() self._start_receive(file_path, account, contact, file_props) @@ -442,12 +447,11 @@ _('Connection with peer cannot be established.')) jid = gajim.get_jid_without_resource(other) else: # It's a Contact instance jid = other.jid - if gajim.awaiting_events[account].has_key(jid): - for event in gajim.awaiting_events[account][jid]: - if event[0] in ('file-error', 'file-completed', - 'file-request-error', 'file-send-error', 'file-stopped') and \ - event[1]['sid'] == file_props['sid']: - gajim.interface.remove_event(account, jid, event) + for ev_type in ('file-error', 'file-completed', 'file-request-error', + 'file-send-error', 'file-stopped'): + for event in gajim.events.get_events(account, jid, [ev_type]): + if event.parameters[1]['sid'] == file_props['sid']: + gajim.events.remove_events(account, jid, event) del(self.files_props[sid[0]][sid[1:]]) del(file_props) @@ -832,9 +836,9 @@ _('Connection with peer cannot be established.')) self.set_buttons_sensitive(path, True) event_button = gtkgui_helpers.get_possible_button_event(event) + self.file_transfers_menu.show_all() self.file_transfers_menu.popup(None, self.tree, None, event_button, event.time) - self.file_transfers_menu.show_all() def on_transfers_list_key_press_event(self, widget, event): '''when a key is pressed in the treeviews''' diff --git a/src/gajim-remote.py b/src/gajim-remote.py index 478990092..563cc121a 100755 --- a/src/gajim-remote.py +++ b/src/gajim-remote.py @@ -38,8 +38,6 @@ signal.signal(signal.SIGINT, signal.SIG_DFL) # ^C exits the application from common import exceptions from common import i18n -_ = i18n._ -i18n.init() try: PREFERRED_ENCODING = locale.getpreferredencoding() except: @@ -68,7 +66,7 @@ BASENAME = 'gajim-remote' class GajimRemote: - + def __init__(self): self.argv_len = len(sys.argv) # define commands dict. Prototype : @@ -81,7 +79,7 @@ class GajimRemote: # self.commands = { 'help':[ - _('shows a help on specific command'), + _('Shows a help on specific command'), [ #User gets help for the command, specified by this parameter (_('command'), @@ -101,7 +99,7 @@ class GajimRemote: [ (_('account'), _('show only contacts of the given account'), False) ] - + ], 'list_accounts': [ _('Prints a list of registered accounts'), @@ -110,6 +108,7 @@ class GajimRemote: 'change_status': [ _('Changes the status of account or accounts'), [ +#offline, online, chat, away, xa, dnd, invisible should not be translated (_('status'), _('one of: offline, online, chat, away, xa, dnd, invisible '), True), (_('message'), _('status message'), False), (_('account'), _('change status of account "account". ' @@ -127,7 +126,7 @@ class GajimRemote: ] ], 'send_message':[ - _('Sends new message to a contact in the roster. Both OpenPGP key ' + _('Sends new chat message to a contact in the roster. Both OpenPGP key ' 'and account are optional. If you want to set only \'account\', ' 'without \'OpenPGP key\', just set \'OpenPGP key\' to \'\'.'), [ @@ -138,6 +137,20 @@ class GajimRemote: (_('account'), _('if specified, the message will be sent ' 'using this account'), False), ] + ], + 'send_single_message':[ + _('Sends new single message to a contact in the roster. Both OpenPGP key ' + 'and account are optional. If you want to set only \'account\', ' + 'without \'OpenPGP key\', just set \'OpenPGP key\' to \'\'.'), + [ + ('jid', _('JID of the contact that will receive the message'), True), + (_('subject'), _('message subject'), True), + (_('message'), _('message contents'), True), + (_('pgp key'), _('if specified, the message will be encrypted ' + 'using this public key'), False), + (_('account'), _('if specified, the message will be sent ' + 'using this account'), False), + ] ], 'contact_info': [ _('Gets detailed info on a contact'), @@ -188,7 +201,7 @@ class GajimRemote: ('jid', _('JID of the contact'), True), (_('account'), _('if specified, contact is taken from the ' 'contact list of this account'), False) - + ] ], 'add_contact': [ @@ -198,14 +211,14 @@ class GajimRemote: (_('account'), _('Adds new contact to this account'), False) ] ], - + 'get_status': [ _('Returns current status (the global one unless account is specified)'), [ (_('account'), _(''), False) ] ], - + 'get_status_message': [ _('Returns current status message(the global one unless account is specified)'), [ @@ -218,11 +231,20 @@ class GajimRemote: [ ] ], 'start_chat': [ - _('Open \'Start Chat\' dialog'), + _('Opens \'Start Chat\' dialog'), [ (_('account'), _('Starts chat, using this account'), True) ] ], + 'send_xml': [ + _('Sends custom XML'), + [ + ('xml', _('XML to send'), True), + ('account', _('Account in which the xml will be sent; ' + 'if not specified, xml will be sent to all accounts'), + False) + ] + ], } if self.argv_len < 2 or \ sys.argv[1] not in self.commands.keys(): # no args or bad args @@ -234,14 +256,14 @@ class GajimRemote: else: print self.compose_help().encode(PREFERRED_ENCODING) sys.exit(0) - + self.init_connection() self.check_arguments() - + if self.command == 'contact_info': if self.argv_len < 3: send_error(_('Missing argument "contact_jid"')) - + try: res = self.call_remote_method() except exceptions.ServiceNotAvailable: @@ -249,14 +271,14 @@ class GajimRemote: sys.exit(1) else: self.print_result(res) - + def print_result(self, res): ''' Print retrieved result to the output ''' if res is not None: - if self.command in ('open_chat', 'send_message', 'start_chat'): - if self.command == 'send_message': + if self.command in ('open_chat', 'send_message', 'send_single_message', 'start_chat'): + if self.command in ('send_message', 'send_single_message'): self.argv_len -= 2 - + if res is False: if self.argv_len < 4: send_error(_('\'%s\' is not in your roster.\n' @@ -289,7 +311,7 @@ class GajimRemote: print self.print_info(0, res, True) elif res: print unicode(res).encode(PREFERRED_ENCODING) - + def init_connection(self): ''' create the onnection to the session dbus, or exit if it is not possible ''' @@ -297,7 +319,7 @@ class GajimRemote: self.sbus = dbus.SessionBus() except: raise exceptions.SessionBusNotPresent - + if _version[1] >= 30: obj = self.sbus.get_object(SERVICE, OBJ_PATH) interface = dbus.Interface(obj, INTERFACE) @@ -306,10 +328,10 @@ class GajimRemote: interface = self.service.get_object(OBJ_PATH, INTERFACE) else: send_error(_('Unknown D-Bus version: %s') % _version[1]) - + # get the function asked self.method = interface.__getattr__(self.command) - + def make_arguments_row(self, args): ''' return arguments list. Mandatory arguments are enclosed with: '<', '>', optional arguments - with '[', ']' ''' @@ -326,7 +348,7 @@ class GajimRemote: else: str += ']' return str - + def help_on_command(self, command): ''' return help message for a given command ''' if command in self.commands: @@ -340,7 +362,7 @@ class GajimRemote: str += ' ' + argument[0] + ' - ' + argument[1] + '\n' return str send_error(_('%s not found') % command) - + def compose_help(self): ''' print usage, and list available commands ''' str = _('Usage: %s command [arguments]\nCommand is one of:\n' ) % BASENAME @@ -361,7 +383,7 @@ class GajimRemote: str += ']' str += '\n' return str - + def print_info(self, level, prop_dict, encode_return = False): ''' return formated string from data structure ''' if prop_dict is None or not isinstance(prop_dict, (dict, list, tuple)): @@ -410,7 +432,7 @@ class GajimRemote: except: pass return ret_str - + def check_arguments(self): ''' Make check if all necessary arguments are given ''' argv_len = self.argv_len - 2 @@ -420,7 +442,7 @@ class GajimRemote: send_error(_('Argument "%s" is not specified. \n' 'Type "%s help %s" for more info') % (args[argv_len][0], BASENAME, self.command)) - + def call_remote_method(self): ''' calls self.method with arguments from sys.argv[2:] ''' args = sys.argv[2:] diff --git a/src/gajim.py b/src/gajim.py index 703a089f5..a15c769cd 100755 --- a/src/gajim.py +++ b/src/gajim.py @@ -33,16 +33,22 @@ import sys import os import urllib +from common import i18n + import message_control from chat_control import ChatControlBase from common import exceptions -from common import i18n from common.zeroconf import connection_zeroconf -i18n.init() -_ = i18n._ +if os.name == 'posix': # dl module is Unix Only + try: # rename the process name to gajim + import dl + libc = dl.open('/lib/libc.so.6') + libc.call('prctl', 15, 'gajim\0', 0, 0, 0) + except: + pass try: import gtk @@ -73,6 +79,15 @@ except exceptions.PysqliteNotAvailable, e: pritext = _('Gajim needs PySQLite2 to run') sectext = str(e) +if os.name == 'nt': + try: + import winsound # windows-only built-in module for playing wav + import win32api + import win32con + except: + pritext = _('Gajim needs pywin32 to run') + sectext = _('Please make sure that Pywin32 is installed on your system. You can get it at %s') % 'http://sourceforge.net/project/showfiles.php?group_id=78018' + if pritext: dlg = gtk.MessageDialog(None, gtk.DIALOG_DESTROY_WITH_PARENT | gtk.DIALOG_MODAL, @@ -129,40 +144,60 @@ for o, a in opts: elif o in ('-p', '--profile'): # gajim --profile name profile = a +pid_filename = os.path.expanduser('~/.gajim/gajim') config_filename = os.path.expanduser('~/.gajim/config') if os.name == 'nt': try: # Documents and Settings\[User Name]\Application Data\Gajim\logs config_filename = os.environ['appdata'] + '/Gajim/config' + pid_filename = os.environ['appdata'] + '/Gajim/gajim' except KeyError: # win9x so ./config config_filename = 'config' + pid_filename = 'gajim' if profile: config_filename += '.%s' % profile + pid_filename += '.%s' % profile + +pid_filename += '.pid' +import dialogs +if os.path.exists(pid_filename): + path_to_file = os.path.join(gajim.DATA_DIR, 'pixmaps/gajim.png') + pix = gtk.gdk.pixbuf_new_from_file(path_to_file) + gtk.window_set_default_icon(pix) # set the icon to all newly opened wind + pritext = _('Gajim is already running') + sectext = _('Another instance of Gajim seems to be running\nRun anyway?') + dialog = dialogs.YesNoDialog(pritext, sectext) + if dialog.get_response() != gtk.RESPONSE_YES: + sys.exit(3) + if os.path.exists(pid_filename): + os.remove(pid_filename) + dialog.destroy() + +# Create .gajim dir +pid_dir = os.path.dirname(pid_filename) +if not os.path.exists(pid_dir): + check_paths.create_path(pid_dir) +# Create pid file +f = open(pid_filename, 'a') +f.close() + +def on_exit(): + # delete pid file on normal exit + if os.path.exists(pid_filename): + os.remove(pid_filename) + +import atexit +atexit.register(on_exit) parser = optparser.OptionsParser(config_filename) import roster_window import systray -import dialogs -import vcard +import profile_window import config -class MigrateCommand(nslookup.IdleCommand): - def __init__(self, on_result): - nslookup.IdleCommand.__init__(self, on_result) - self.commandtimeout = 10 - - def _compose_command_args(self): - return ['python', 'migrate_logs_to_dot9_db.py', 'dont_wait'] - - def _return_result(self): - print self.result - if self.result_handler: - self.result_handler(self.result) - self.result_handler = None - class GlibIdleQueue(idlequeue.IdleQueue): ''' Extends IdleQueue to use glib io_add_wath, instead of select/poll @@ -239,7 +274,7 @@ class Interface: on_response_no = (response, account, data[3], 'no')) def handle_event_error_answer(self, account, array): - #('ERROR_ANSWER', account, (id, jid_from. errmsg, errcode)) + #('ERROR_ANSWER', account, (id, jid_from, errmsg, errcode)) id, jid_from, errmsg, errcode = array if unicode(errcode) in ('403', '406') and id: # show the error dialog @@ -251,7 +286,7 @@ class Interface: file_props = ft.files_props['s'][sid] file_props['error'] = -4 self.handle_event_file_request_error(account, - (jid_from, file_props)) + (jid_from, file_props, errmsg)) conn = gajim.connections[account] conn.disconnect_transfer(file_props) return @@ -275,6 +310,14 @@ class Interface: gajim.con_types[account] = con_type self.roster.draw_account(account) + def handle_event_connection_lost(self, account, array): + # ('CONNECTION_LOST', account, [title, text]) + path = os.path.join(gajim.DATA_DIR, 'pixmaps', 'events', + 'connection_lost.png') + path = gtkgui_helpers.get_path_to_generic_or_avatar(path) + notify.popup(_('Connection Failed'), account, account, + 'connection_failed', path, array[0], array[1]) + def unblock_signed_in_notifications(self, account): gajim.block_signed_in_notifications[account] = False @@ -314,9 +357,9 @@ class Interface: def edit_own_details(self, account): jid = gajim.get_jid_from_account(account) - if not self.instances[account]['infos'].has_key(jid): - self.instances[account]['infos'][jid] = \ - vcard.VcardWindow(jid, account, True) + if not self.instances[account].has_key('profile'): + self.instances[account]['profile'] = \ + profile_window.ProfileWindow(account) gajim.connections[account].request_vcard(jid) def handle_event_notify(self, account, array): @@ -346,7 +389,7 @@ class Interface: # Update contact jid_list = gajim.contacts.get_jid_list(account) - if ji in jid_list: + if ji in jid_list or jid == gajim.get_jid_from_account(account): lcontact = gajim.contacts.get_contacts_from_jid(account, ji) contact1 = None resources = [] @@ -363,7 +406,20 @@ class Interface: return else: contact1 = gajim.contacts.get_first_contact_from_jid(account, ji) - if contact1.show in statuss: + if not contact1: + # presence of another resource of our jid + if resource == gajim.connections[account].server_resource: + return + contact1 = gajim.contacts.create_contact(jid = ji, + name = gajim.nicks[account], groups = [], + show = array[1], status = status_message, sub = 'both', + ask = 'none', priority = priority, keyID = keyID, + resource = resource) + old_show = 0 + gajim.contacts.add_contact(account, contact1) + lcontact.append(contact1) + self.roster.add_self_contact(account) + elif contact1.show in statuss: old_show = statuss.index(contact1.show) if (resources != [''] and (len(lcontact) != 1 or lcontact[0].show != 'offline')) and jid.find('@') > 0: @@ -403,9 +459,21 @@ class Interface: if ji in jid_list: # Update existing iter self.roster.draw_contact(ji, account) - elif jid == gajim.get_jid_from_account(account): - # It's another of our resources. We don't need to see that! - return + # transport just signed in/out, don't show popup notifications + # for 30s + account_ji = account + '/' + ji + gajim.block_signed_in_notifications[account_ji] = True + gobject.timeout_add(30000, self.unblock_signed_in_notifications, + account_ji) + locations = (self.instances, self.instances[account]) + for location in locations: + if location.has_key('add_contact'): + if old_show == 0 and new_show > 1: + location['add_contact'].transport_signed_in(jid) + break + elif old_show > 1 and new_show == 0: + location['add_contact'].transport_signed_out(jid) + break elif ji in jid_list: # It isn't an agent # reset chatstate if needed: @@ -416,20 +484,21 @@ class Interface: gajim.connections[account].remove_transfers_for_contact(contact1) self.roster.chg_contact_status(contact1, array[1], status_message, account) - # play sound + # Notifications if old_show < 2 and new_show > 1: notify.notify('contact_connected', jid, account, status_message) if self.remote_ctrl: self.remote_ctrl.raise_signal('ContactPresence', (account, array)) - + elif old_show > 1 and new_show < 2: notify.notify('contact_disconnected', jid, account, status_message) if self.remote_ctrl: self.remote_ctrl.raise_signal('ContactAbsence', (account, array)) # FIXME: stop non active file transfers elif new_show > 1: # Status change (not connected/disconnected or error (<1)) - notify.notify('status_change', jid, account, [new_show, status_message]) + notify.notify('status_change', jid, account, [new_show, + status_message]) else: # FIXME: Msn transport (CMSN1.2.1 and PyMSN0.10) doesn't follow the JEP # remove in 2007 @@ -440,7 +509,7 @@ class Interface: def handle_event_msg(self, account, array): # 'MSG' (account, (jid, msg, time, encrypted, msg_type, subject, - # chatstate)) + # chatstate, msg_id, composing_jep, user_nick)) user_nick is JEP-0172 full_jid_with_resource = array[0] jid = gajim.get_jid_without_resource(full_jid_with_resource) @@ -448,6 +517,7 @@ class Interface: message = array[1] msg_type = array[4] + subject = array[5] chatstate = array[6] msg_id = array[7] composing_jep = array[8] @@ -513,10 +583,13 @@ class Interface: not gajim.contacts.get_contact(account, jid) and not pm: return + advanced_notif_num = notify.get_advanced_notification('message_received', + account, contact) + # Is it a first or next message received ? first = False - if not chat_control and not gajim.awaiting_events[account].has_key( - jid_of_control): + if not chat_control and not gajim.events.get_events(account, + jid_of_control, ['chat']): # It's a first message and not a Private Message first = True @@ -527,10 +600,14 @@ class Interface: else: # array: (jid, msg, time, encrypted, msg_type, subject) self.roster.on_message(jid, message, array[2], account, array[3], - msg_type, array[5], resource, msg_id) + msg_type, subject, resource, msg_id, array[9], advanced_notif_num) nickname = gajim.get_name_from_jid(account, jid) # Check and do wanted notifications - notify.notify('new_message', jid, account, [msg_type, first, nickname, message]) + msg = message + if subject: + msg = _('Subject: %s') % subject + '\n' + msg + notify.notify('new_message', jid, account, [msg_type, first, nickname, + msg], advanced_notif_num) if self.remote_ctrl: self.remote_ctrl.raise_signal('NewMessage', (account, array)) @@ -583,8 +660,8 @@ class Interface: helpers.play_sound('message_sent') def handle_event_subscribe(self, account, array): - #('SUBSCRIBE', account, (jid, text)) - dialogs.SubscriptionRequestWindow(array[0], array[1], account) + #('SUBSCRIBE', account, (jid, text, user_nick)) user_nick is JEP-0172 + dialogs.SubscriptionRequestWindow(array[0], array[1], account, array[2]) if self.remote_ctrl: self.remote_ctrl.raise_signal('Subscribe', (account, array)) @@ -664,8 +741,8 @@ class Interface: config.ServiceRegistrationWindow(array[0], array[1], account, array[2]) else: - dialogs.ErrorDialog(_('Contact with "%s" cannot be established'\ -% array[0]), _('Check your connection or try again later.')) + dialogs.ErrorDialog(_('Contact with "%s" cannot be established')\ +% array[0], _('Check your connection or try again later.')) def handle_event_agent_info_items(self, account, array): #('AGENT_INFO_ITEMS', account, (agent, node, items)) @@ -705,8 +782,8 @@ class Interface: nick = array['NICKNAME'] if nick: gajim.nicks[account] = nick - if self.instances[account]['infos'].has_key(array['jid']): - win = self.instances[account]['infos'][array['jid']] + if self.instances[account].has_key('profile'): + win = self.instances[account]['profile'] win.set_values(array) if account in self.show_vcard_when_connect: self.show_vcard_when_connect.remove(account) @@ -763,7 +840,7 @@ class Interface: c = gajim.contacts.get_contact(account, array[0], array[1]) # c is a list when no resource is given. it probably means that contact # is offline, so only on Contact instance - if isinstance(c, list): + if isinstance(c, list) and len(c): c = c[0] if c: # c can be none if it's a gc contact c.last_status_time = time.localtime(time.time() - array[2]) @@ -811,14 +888,13 @@ class Interface: uf_show = helpers.get_uf_show(show) ctrl.print_conversation(_('%s is now %s (%s)') % (nick, uf_show, status), 'status') - ctrl.draw_banner() ctrl.parent_win.redraw_tab(ctrl) if self.remote_ctrl: self.remote_ctrl.raise_signal('GCPresence', (account, array)) def handle_event_gc_msg(self, account, array): - # ('GC_MSG', account, (jid, msg, time)) + # ('GC_MSG', account, (jid, msg, time, has_timestamp)) jids = array[0].split('/', 1) room_jid = jids[0] gc_control = self.msg_win_mgr.get_control(room_jid, account) @@ -830,7 +906,7 @@ class Interface: else: # message from someone nick = jids[1] - gc_control.on_message(nick, array[1], array[2]) + gc_control.on_message(nick, array[1], array[2], array[3]) if self.remote_ctrl: self.remote_ctrl.raise_signal('GCMessage', (account, array)) @@ -851,10 +927,18 @@ class Interface: def handle_event_gc_config(self, account, array): #('GC_CONFIG', account, (jid, config)) config is a dict - jid = array[0].split('/')[0] - if not self.instances[account]['gc_config'].has_key(jid): - self.instances[account]['gc_config'][jid] = \ - config.GroupchatConfigWindow(account, jid, array[1]) + room_jid = array[0].split('/')[0] + if room_jid in gajim.automatic_rooms[account]: + # use default configuration + gajim.connections[account].send_gc_config(room_jid, array[1]) + # invite contacts + if gajim.automatic_rooms[account][room_jid].has_key('invities'): + for jid in gajim.automatic_rooms[account][room_jid]['invities']: + gajim.connections[account].send_invite(room_jid, jid) + del gajim.automatic_rooms[account][room_jid] + elif not self.instances[account]['gc_config'].has_key(room_jid): + self.instances[account]['gc_config'][room_jid] = \ + config.GroupchatConfigWindow(account, room_jid, array[1]) def handle_event_gc_affiliation(self, account, array): #('GC_AFFILIATION', account, (room_jid, affiliation, list)) list is list @@ -875,8 +959,7 @@ class Interface: self.add_event(account, jid, 'gc-invitation', (room_jid, array[2], array[3])) - if gajim.config.get('notify_on_new_message') and \ - helpers.allow_showing_notification(account): + if helpers.allow_showing_notification(account, 'notify_on_new_message'): path = os.path.join(gajim.DATA_DIR, 'pixmaps', 'events', 'gc_invitation.png') path = gtkgui_helpers.get_path_to_generic_or_avatar(path) @@ -908,7 +991,7 @@ class Interface: c = contacts[0] self.roster.remove_contact(c, account) gajim.contacts.remove_jid(account, jid) - if gajim.awaiting_events[account].has_key(c.jid): + if gajim.events.get_events(account, c.jid): keyID = '' attached_keys = gajim.config.get_per('accounts', account, 'attached_gpg_keys').split() @@ -989,12 +1072,20 @@ class Interface: def handle_event_gmail_notify(self, account, array): jid = array[0] gmail_new_messages = int(array[1]) + gmail_messages_list = array[2] if gajim.config.get('notify_on_new_gmail_email'): img = os.path.join(gajim.DATA_DIR, 'pixmaps', 'events', 'single_msg_recv.png') #FIXME: find a better image title = _('New E-mail on %(gmail_mail_address)s') % \ {'gmail_mail_address': jid} text = i18n.ngettext('You have %d new E-mail message', 'You have %d new E-mail messages', gmail_new_messages, gmail_new_messages, gmail_new_messages) + + if gajim.config.get('notify_on_new_gmail_email_extra'): + for gmessage in gmail_messages_list: + # each message has a 'From', 'Subject' and 'Snippet' field + text += _('\nFrom: %(from_address)s') % \ + {'from_address': gmessage['From']} + path = gtkgui_helpers.get_path_to_generic_or_avatar(img) notify.popup(_('New E-mail'), jid, account, 'gmail', path_to_image = path, title = title, text = text) @@ -1035,71 +1126,59 @@ class Interface: path_to_bw_file = path_to_file + '_notif_size_bw.png' bwbuf.save(path_to_bw_file, 'png') - def add_event(self, account, jid, typ, args): - '''add an event to the awaiting_events var''' - # We add it to the awaiting_events queue + def add_event(self, account, jid, type_, args): + '''add an event to the gajim.events var''' + # We add it to the gajim.events queue # Do we have a queue? jid = gajim.get_jid_without_resource(jid) - qs = gajim.awaiting_events[account] - no_queue = False - if not qs.has_key(jid): - no_queue = True - qs[jid] = [] - qs[jid].append((typ, args)) - self.roster.nb_unread += 1 + no_queue = len(gajim.events.get_events(account, jid)) == 0 + event_type = None + # type_ can be gc-invitation file-send-error file-error file-request-error + # file-request file-completed file-stopped + # event_type can be in advancedNotificationWindow.events_list + event_types = {'file-request': 'ft_request', + 'file-completed': 'ft_finished'} + if type_ in event_types: + event_type = event_types[type_] + show_in_roster = notify.get_show_in_roster(event_type, account, jid) + show_in_systray = notify.get_show_in_systray(event_type, account, jid) + event = gajim.events.create_event(type_, args, + show_in_roster = show_in_roster, + show_in_systray = show_in_systray) + gajim.events.add_event(account, jid, event) self.roster.show_title() if no_queue: # We didn't have a queue: we change icons self.roster.draw_contact(jid, account) - if self.systray_enabled: - self.systray.add_jid(jid, account, typ) - def redraw_roster_systray(self, account, jid, typ = None): - self.roster.nb_unread -= 1 - self.roster.show_title() - self.roster.draw_contact(jid, account) - if self.systray_enabled: - self.systray.remove_jid(jid, account, typ) + def remove_first_event(self, account, jid, type_ = None): + event = gajim.events.get_first_event(account, jid, type_) + self.remove_event(account, jid, event) - def remove_first_event(self, account, jid, typ = None): - qs = gajim.awaiting_events[account] - event = gajim.get_first_event(account, jid, typ) - qs[jid].remove(event) - # Is it the last event? - if not len(qs[jid]): - del qs[jid] + def remove_event(self, account, jid, event): + if gajim.events.remove_events(account, jid, event): + # No such event found + return + # no other event? + if not len(gajim.events.get_events(account, jid)): if not gajim.config.get('showoffline'): contact = gajim.contacts.get_contact_with_highest_priority(account, jid) if contact: self.roster.really_remove_contact(contact, account) - self.redraw_roster_systray(account, jid, typ) - - def remove_event(self, account, jid, event): - qs = gajim.awaiting_events[account] - if not event in qs[jid]: - return - qs[jid].remove(event) - # Is it the last event? - if not len(qs[jid]): - del qs[jid] - if not gajim.config.get('showoffline'): - contact = gajim.contacts.get_contact_with_highest_priority(account, - jid) - if contact: - self.roster.really_remove_contact(contact, account) - self.redraw_roster_systray(account, jid, event[0]) + self.roster.show_title() + self.roster.draw_contact(jid, account) def handle_event_file_request_error(self, account, array): - jid = array[0] - file_props = array[1] + # ('FILE_REQUEST_ERROR', account, (jid, file_props, error_msg)) + jid, file_props, errmsg = array ft = self.instances['file_transfers'] ft.set_status(file_props['type'], file_props['sid'], 'stop') errno = file_props['error'] if helpers.allow_popup_window(account): if errno in (-4, -5): - ft.show_stopped(jid, file_props) + ft.show_stopped(jid, file_props, errmsg) else: ft.show_request_error(file_props) return @@ -1114,7 +1193,7 @@ class Interface: if helpers.allow_showing_notification(account): # check if we should be notified img = os.path.join(gajim.DATA_DIR, 'pixmaps', 'events', 'ft_error.png') - + path = gtkgui_helpers.get_path_to_generic_or_avatar(img) event_type = _('File Transfer Error') notify.popup(event_type, jid, account, msg_type, path, @@ -1137,7 +1216,8 @@ class Interface: if helpers.allow_showing_notification(account): img = os.path.join(gajim.DATA_DIR, 'pixmaps', 'events', 'ft_request.png') - txt = _('%s wants to send you a file.') % gajim.get_name_from_jid(account, jid) + txt = _('%s wants to send you a file.') % gajim.get_name_from_jid( + account, jid) path = gtkgui_helpers.get_path_to_generic_or_avatar(img) event_type = _('File Transfer Request') notify.popup(event_type, jid, account, 'file-request', @@ -1146,7 +1226,7 @@ class Interface: def handle_event_file_progress(self, account, file_props): self.instances['file_transfers'].set_progress(file_props['type'], file_props['sid'], file_props['received-len']) - + def handle_event_file_rcv_completed(self, account, file_props): ft = self.instances['file_transfers'] if file_props['error'] == 0: @@ -1172,13 +1252,14 @@ class Interface: msg_type = '' event_type = '' - if file_props['error'] == 0 and gajim.config.get('notify_on_file_complete'): + if file_props['error'] == 0 and gajim.config.get( + 'notify_on_file_complete'): msg_type = 'file-completed' event_type = _('File Transfer Completed') elif file_props['error'] == -1: msg_type = 'file-stopped' event_type = _('File Transfer Stopped') - + if event_type == '': # FIXME: ugly workaround (this can happen Gajim sent, Gaim recvs) # this should never happen but it does. see process_result() in socks5.py @@ -1188,7 +1269,7 @@ class Interface: if msg_type: self.add_event(account, jid, msg_type, file_props) - + if file_props is not None: if file_props['type'] == 'r': # get the name of the sender, as it is in the roster @@ -1260,6 +1341,8 @@ class Interface: def handle_event_signed_in(self, account, empty): '''SIGNED_IN event is emitted when we sign in, so handle it''' + # block signed in notifications for 30 seconds + gajim.block_signed_in_notifications[account] = True self.roster.actions_menu_needs_rebuild = True if gajim.interface.sleeper.getState() != common.sleepy.STATE_UNKNOWN and \ gajim.connections[account].connected in (2, 3): @@ -1289,6 +1372,31 @@ class Interface: def handle_event_metacontacts(self, account, tags_list): gajim.contacts.define_metacontacts(account, tags_list) + def handle_event_privacy_lists_received(self, account, data): + # ('PRIVACY_LISTS_RECEIVED', account, list) + if not self.instances.has_key(account): + return + if self.instances[account].has_key('privacy_lists'): + self.instances[account]['privacy_lists'].privacy_lists_received(data) + + def handle_event_privacy_list_received(self, account, data): + # ('PRIVACY_LISTS_RECEIVED', account, (name, rules)) + if not self.instances.has_key(account): + return + name = data[0] + rules = data[1] + if self.instances[account].has_key('privacy_list_%s' % name): + self.instances[account]['privacy_list_%s' % name].\ + privacy_list_received(rules) + + def handle_event_privacy_lists_active_default(self, account, data): + if not data: + return + # Send to all privacy_list_* windows as we can't know which one asked + for win in self.instances[account]: + if win.startswith('privacy_list_'): + self.instances[account][win].check_active_default(data) + def read_sleepy(self): '''Check idle status and change that status if needed''' if not self.sleeper.poll(): @@ -1342,12 +1450,12 @@ class Interface: return False def show_systray(self): - self.systray.show_icon() self.systray_enabled = True + self.systray.show_icon() def hide_systray(self): - self.systray.hide_icon() self.systray_enabled = False + self.systray.hide_icon() def image_is_ok(self, image): if not os.path.exists(image): @@ -1577,6 +1685,7 @@ class Interface: 'ROSTER_INFO': self.handle_event_roster_info, 'BOOKMARKS': self.handle_event_bookmarks, 'CON_TYPE': self.handle_event_con_type, + 'CONNECTION_LOST': self.handle_event_connection_lost, 'FILE_REQUEST': self.handle_event_file_request, 'GMAIL_NOTIFY': self.handle_event_gmail_notify, 'FILE_REQUEST_ERROR': self.handle_event_file_request_error, @@ -1589,6 +1698,10 @@ class Interface: 'ASK_NEW_NICK': self.handle_event_ask_new_nick, 'SIGNED_IN': self.handle_event_signed_in, 'METACONTACTS': self.handle_event_metacontacts, + 'PRIVACY_LISTS_RECEIVED': self.handle_event_privacy_lists_received, + 'PRIVACY_LIST_RECEIVED': self.handle_event_privacy_list_received, + 'PRIVACY_LISTS_ACTIVE_DEFAULT': \ + self.handle_event_privacy_lists_active_default, } gajim.handlers = self.handlers @@ -1608,14 +1721,14 @@ class Interface: err_str) sys.exit() - def handle_event(self, account, jid, typ): + def handle_event(self, account, jid, type_): w = None fjid = jid resource = gajim.get_resource_from_jid(jid) jid = gajim.get_jid_without_resource(jid) - if typ == message_control.TYPE_GC: + if type_ in ('printed_gc_msg', 'gc_msg'): w = self.msg_win_mgr.get_window(jid, account) - elif typ == message_control.TYPE_CHAT: + elif type_ in ('printed_chat', 'chat'): if self.msg_win_mgr.has_window(fjid, account): w = self.msg_win_mgr.get_window(fjid, account) else: @@ -1625,30 +1738,30 @@ class Interface: self.roster.new_chat(contact, account, resource = resource) w = self.msg_win_mgr.get_window(fjid, account) gajim.last_message_time[account][jid] = 0 # long time ago - elif typ == message_control.TYPE_PM: + elif type_ in ('printed_pm', 'pm'): if self.msg_win_mgr.has_window(fjid, account): w = self.msg_win_mgr.get_window(fjid, account) else: room_jid = jid nick = resource gc_contact = gajim.contacts.get_gc_contact(account, room_jid, - nick) + nick) if gc_contact: show = gc_contact.show else: show = 'offline' - gc_contact = gajim.contacts.create_gc_contact(room_jid = room_jid, - name = nick, show = show) + gc_contact = gajim.contacts.create_gc_contact( + room_jid = room_jid, name = nick, show = show) c = gajim.contacts.contact_from_gc_contact(gc_contact) self.roster.new_chat(c, account, private_chat = True) w = self.msg_win_mgr.get_window(fjid, account) - elif typ in ('normal', 'file-request', 'file-request-error', - 'file-send-error', 'file-error', 'file-stopped', 'file-completed'): + elif type_ in ('normal', 'file-request', 'file-request-error', + 'file-send-error', 'file-error', 'file-stopped', 'file-completed'): # Get the first single message event - ev = gajim.get_first_event(account, jid, typ) + event = gajim.events.get_first_event(account, jid, type_) # Open the window - self.roster.open_event(account, jid, ev) - elif typ == 'gmail': + self.roster.open_event(account, jid, event) + elif type_ == 'gmail': if gajim.config.get_per('accounts', account, 'savepass'): url = ('http://www.google.com/accounts/ServiceLoginAuth?service=mail&Email=%s&Passwd=%s&continue=https://mail.google.com/mail') %\ (urllib.quote(gajim.config.get_per('accounts', account, 'name')), @@ -1656,12 +1769,12 @@ class Interface: else: url = ('http://mail.google.com/') helpers.launch_browser_mailer('url', url) - elif typ == 'gc-invitation': - ev = gajim.get_first_event(account, jid, typ) - data = ev[1] + elif type_ == 'gc-invitation': + event = gajim.events.get_first_event(account, jid, type_) + data = event.parameters dialogs.InvitationReceivedDialog(account, data[0], jid, data[2], data[1]) - self.remove_first_event(account, jid, typ) + gajim.events.remove_events(account, jid, event) if w: w.set_active_tab(fjid, account) w.window.present() @@ -1753,14 +1866,13 @@ class Interface: self.instances = {'logs': {}} for a in gajim.connections: - self.instances[a] = {'infos': {}, 'disco': {}, 'chats': {}, - 'gc': {}, 'gc_config': {}} + self.instances[a] = {'infos': {}, 'disco': {}, 'gc_config': {}} gajim.contacts.add_account(a) gajim.groups[a] = {} gajim.gc_connected[a] = {} + gajim.automatic_rooms[a] = {} gajim.newly_added[a] = [] gajim.to_be_removed[a] = [] - gajim.awaiting_events[a] = {} gajim.nicks[a] = gajim.config.get_per('accounts', a, 'name') gajim.block_signed_in_notifications[a] = True gajim.sleeper_state[a] = 0 @@ -1814,12 +1926,34 @@ class Interface: # get instances for windows/dialogs that will show_all()/hide() self.instances['file_transfers'] = dialogs.FileTransfersWindow() + # get transports type from DB + gajim.transport_type = gajim.logger.get_transports_type() + + # test is dictionnary is present for speller + if gajim.config.get('use_speller'): + lang = gajim.config.get('speller_language') + if not lang: + lang = gajim.LANG + tv = gtk.TextView() + try: + import gtkspell + spell = gtkspell.Spell(tv, lang) + except: + dialogs.ErrorDialog( + _('Dictionary for lang %s not available') % lang, + _('You have to install %s dictionary to use spellchecking, or ' + 'choose another language by setting the speller_language option.' + ) % lang) + gajim.config.set('use_speller', False) gobject.timeout_add(100, self.autoconnect) gobject.timeout_add(200, self.process_connections) gobject.timeout_add(500, self.read_sleepy) if __name__ == '__main__': - signal.signal(signal.SIGINT, signal.SIG_DFL) # ^C exits the application + def sigint_cb(num, stack): + sys.exit(5) + # ^C exits the application normally to delete pid file + signal.signal(signal.SIGINT, sigint_cb) if os.name != 'nt': # Session Management support @@ -1847,33 +1981,7 @@ if __name__ == '__main__': cli.set_restart_command(len(argv), argv) gtkgui_helpers.possibly_set_gajim_as_xmpp_handler() - - - # Migrate old logs if we have such olds logs - from common import logger - from migrate_logs_to_dot9_db import PATH_TO_LOGS_BASE_DIR - LOG_DB_PATH = logger.LOG_DB_PATH - if not os.path.exists(LOG_DB_PATH) and os.path.isdir(PATH_TO_LOGS_BASE_DIR): - import Queue - q = Queue.Queue(100) - dialog = dialogs.ProgressDialog(_('Migrating Logs...'), - _('Please wait while logs are being migrated...'), q) - if os.name == 'nt' and gtk.pygtk_version > (2, 8, 0): - idlequeue = idlequeue.SelectIdleQueue() - else: - idlequeue = GlibIdleQueue() - def on_result(*arg): - dialog.dialog.destroy() - dialog.dialog = None - gobject.source_remove(dialog.update_progressbar_timeout_id) - gajim.logger.init_vars() - check_paths.check_and_possibly_create_paths() - Interface() - m = MigrateCommand(on_result) - m.set_idlequeue(idlequeue) - m.start() - else: - check_paths.check_and_possibly_create_paths() - Interface() + + check_paths.check_and_possibly_create_paths() + Interface() gtk.main() - diff --git a/src/gajim_themes_window.py b/src/gajim_themes_window.py index c57ed2665..cc9b1742e 100644 --- a/src/gajim_themes_window.py +++ b/src/gajim_themes_window.py @@ -25,23 +25,18 @@ ## import gtk -import gtk.glade import pango import dialogs import gtkgui_helpers from common import gajim -from common import i18n -_ = i18n._ -APP = i18n.APP -gtk.glade.bindtextdomain (APP, i18n.DIR) -gtk.glade.textdomain (APP) class GajimThemesWindow: def __init__(self): self.xml = gtkgui_helpers.get_glade('gajim_themes_window.glade') self.window = self.xml.get_widget('gajim_themes_window') + self.window.set_transient_for(gajim.interface.roster.window) self.options = ['account', 'group', 'contact', 'banner'] self.options_combobox = self.xml.get_widget('options_combobox') diff --git a/src/groupchat_control.py b/src/groupchat_control.py index bd7a40dc2..38e20e5bf 100644 --- a/src/groupchat_control.py +++ b/src/groupchat_control.py @@ -23,7 +23,6 @@ import os import time import gtk -import gtk.glade import pango import gobject import gtkgui_helpers @@ -40,13 +39,6 @@ from common import helpers from chat_control import ChatControl from chat_control import ChatControlBase from conversation_textview import ConversationTextview -from common import i18n - -_ = i18n._ -Q_ = i18n.Q_ -APP = i18n.APP -gtk.glade.bindtextdomain(APP, i18n.DIR) -gtk.glade.textdomain(APP) #(status_image, type, nick, shown_nick) ( @@ -127,6 +119,13 @@ class PrivateChatControl(ChatControl): return ChatControl.send_message(self, message) + + def update_ui(self): + if self.contact.show == 'offline': + self.got_disconnected() + else: + self.got_connected() + ChatControl.update_ui(self) class GroupchatControl(ChatControlBase): @@ -183,7 +182,7 @@ class GroupchatControl(ChatControlBase): # alphanum sorted self.muc_cmds = ['ban', 'chat', 'query', 'clear', 'close', 'compact', 'help', 'invite', 'join', 'kick', 'leave', 'me', 'msg', 'nick', 'part', - 'say', 'topic'] + 'names', 'say', 'topic'] # muc attention flag (when we are mentioned in a muc) # if True, the room has mentioned us self.attention_flag = False @@ -197,10 +196,6 @@ class GroupchatControl(ChatControlBase): self.tooltip = tooltips.GCTooltip() - self.allow_focus_out_line = True - # holds the iter's offset which points to the end of --- line - self.focus_out_end_iter_offset = None - # connect the menuitems to their respective functions xm = gtkgui_helpers.get_glade('gc_control_popup_menu.glade') @@ -292,12 +287,9 @@ class GroupchatControl(ChatControlBase): column.set_visible(False) self.list_treeview.set_expander_column(column) - id = self.msg_textview.connect('populate_popup', - self.on_msg_textview_populate_popup) - self.handlers[id] = self.msg_textview # set an empty subject to show the room_jid self.set_subject('') - self.got_disconnected() #init some variables + self.got_disconnected() # init some variables self.update_ui() self.conv_textview.tv.grab_focus() @@ -306,20 +298,18 @@ class GroupchatControl(ChatControlBase): def on_msg_textview_populate_popup(self, textview, menu): '''we override the default context menu and we prepend Clear and the ability to insert a nick''' + ChatControlBase.on_msg_textview_populate_popup(self, textview, menu) item = gtk.SeparatorMenuItem() menu.prepend(item) - item = gtk.ImageMenuItem(gtk.STOCK_CLEAR) - menu.prepend(item) - id = item.connect('activate', self.msg_textview.clear) - self.handlers[id] = item item = gtk.MenuItem(_('Insert Nickname')) menu.prepend(item) submenu = gtk.Menu() item.set_submenu(submenu) - for nick in gajim.contacts.get_nick_list(self.account, self.room_jid): - item = gtk.MenuItem(nick) + for nick in sorted(gajim.contacts.get_nick_list(self.account, + self.room_jid)): + item = gtk.MenuItem(nick, use_underline = False) submenu.append(item) id = item.connect('activate', self.append_nick_in_msg_textview, nick) self.handlers[id] = item @@ -333,7 +323,7 @@ class GroupchatControl(ChatControlBase): def _on_window_focus_in_event(self, widget, event): '''When window gets focus''' if self.parent_win.get_active_jid() == self.room_jid: - self.allow_focus_out_line = True + self.conv_textview.allow_focus_out_line = True def on_treeview_size_allocate(self, widget, allocation): '''The MUC treeview has resized. Move the hpaned in all tabs to match''' @@ -440,21 +430,21 @@ class GroupchatControl(ChatControlBase): childs[3].set_sensitive(False) return menu - def on_message(self, nick, msg, tim): + def on_message(self, nick, msg, tim, has_timestamp = False): if not nick: # message from server self.print_conversation(msg, tim = tim) else: # message from someone - self.print_conversation(msg, nick, tim) + if has_timestamp: + self.print_old_conversation(msg, nick, tim) + else: + self.print_conversation(msg, nick, tim) def on_private_message(self, nick, msg, tim): # Do we have a queue? fjid = self.room_jid + '/' + nick - qs = gajim.awaiting_events[self.account] - no_queue = True - if qs.has_key(fjid): - no_queue = False + no_queue = len(gajim.events.get_events(self.account, fjid)) == 0 # We print if window is opened pm_control = gajim.interface.msg_win_mgr.get_control(fjid, self.account) @@ -462,9 +452,9 @@ class GroupchatControl(ChatControlBase): pm_control.print_conversation(msg, tim = tim) return - if no_queue: - qs[fjid] = [] - qs[fjid].append(('chat', (msg, '', 'incoming', tim, False, ''))) + event = gajim.events.create_event('pm', (msg, '', 'incoming', tim, + False, '', None)) + gajim.events.add_event(self.account, fjid, event) autopopup = gajim.config.get('autopopup') autopopupaway = gajim.config.get('autopopupaway') @@ -479,8 +469,6 @@ class GroupchatControl(ChatControlBase): self.room_jid, icon_name = 'message') image = state_images['message'] model[iter][C_IMG] = image - if gajim.interface.systray_enabled: - gajim.interface.systray.add_jid(fjid, self.account, 'pm') self.parent_win.show_title() else: self._start_private_message(nick) @@ -511,6 +499,24 @@ class GroupchatControl(ChatControlBase): fin = True return None + gc_count_nicknames_colors = 0 + gc_custom_colors = {} + + def print_old_conversation(self, text, contact, tim = None): + if isinstance(text, str): + text = unicode(text, 'utf-8') + if contact == self.nick: # it's us + kind = 'outgoing' + else: + kind = 'incoming' + if gajim.config.get('restored_messages_small'): + small_attr = ['small'] + else: + small_attr = [] + ChatControlBase.print_conversation_line(self, text, kind, contact, tim, + small_attr, small_attr + ['restored_message'], + small_attr + ['restored_message']) + def print_conversation(self, text, contact = '', tim = None): '''Print a line in the conversation: if contact is set: it's a message from someone or an info message (contact @@ -536,6 +542,19 @@ class GroupchatControl(ChatControlBase): if kind == 'incoming': # it's a message NOT from us # highlighting and sounds (highlight, sound) = self.highlighting_for_message(text, tim) + if self.gc_custom_colors.has_key(contact): + other_tags_for_name.append('gc_nickname_color_' + \ + str(self.gc_custom_colors[contact])) + else: + self.gc_count_nicknames_colors += 1 + number_of_colors = len(gajim.config.get('gc_nicknames_colors').\ + split(':')) + if self.gc_count_nicknames_colors == number_of_colors: + self.gc_count_nicknames_colors = 0 + self.gc_custom_colors[contact] = \ + self.gc_count_nicknames_colors + other_tags_for_name.append('gc_nickname_color_' + \ + str(self.gc_count_nicknames_colors)) if highlight: # muc-specific chatstate self.parent_win.redraw_tab(self, 'attention') @@ -545,12 +564,23 @@ class GroupchatControl(ChatControlBase): helpers.play_sound('muc_message_received') elif sound == 'highlight': helpers.play_sound('muc_message_highlight') + if text.startswith('/me ') or text.startswith('/me\n'): + other_tags_for_text.append('gc_nickname_color_' + \ + str(self.gc_custom_colors[contact])) self.check_and_possibly_add_focus_out_line() ChatControlBase.print_conversation_line(self, text, kind, contact, tim, other_tags_for_name, [], other_tags_for_text) + def get_nb_unread(self): + nb = len(gajim.events.get_events(self.account, self.room_jid, + ['printed_gc_msg'])) + for nick in gajim.contacts.get_nick_list(self.account, self.room_jid): + nb += len(gajim.events.get_events(self.account, self.room_jid + '/' + \ + nick, ['pm'])) + return nb + def highlighting_for_message(self, text, tim): '''Returns a 2-Tuple. The first says whether or not to highlight the text, the second, what sound to play.''' @@ -587,64 +617,7 @@ class GroupchatControl(ChatControlBase): # we have full focus (we are reading it!) return - if not self.allow_focus_out_line: - # if room did not receive focus-in from the last time we added - # --- line then do not readd - return - - print_focus_out_line = False - buffer = self.conv_textview.tv.get_buffer() - - if self.focus_out_end_iter_offset is None: - # this happens only first time we focus out on this room - print_focus_out_line = True - - else: - if self.focus_out_end_iter_offset != buffer.get_end_iter().get_offset(): - # this means after last-focus something was printed - # (else end_iter's offset is the same as before) - # only then print ---- line (eg. we avoid printing many following - # ---- lines) - print_focus_out_line = True - - if print_focus_out_line and buffer.get_char_count() > 0: - buffer.begin_user_action() - - # remove previous focus out line if such focus out line exists - if self.focus_out_end_iter_offset is not None: - end_iter_for_previous_line = buffer.get_iter_at_offset( - self.focus_out_end_iter_offset) - begin_iter_for_previous_line = end_iter_for_previous_line.copy() - begin_iter_for_previous_line.backward_chars(2) # img_char+1 (the '\n') - - # remove focus out line - buffer.delete(begin_iter_for_previous_line, - end_iter_for_previous_line) - - # add the new focus out line - # FIXME: Why is this loaded from disk everytime - path_to_file = os.path.join(gajim.DATA_DIR, 'pixmaps', 'muc_separator.png') - focus_out_line_pixbuf = gtk.gdk.pixbuf_new_from_file(path_to_file) - end_iter = buffer.get_end_iter() - buffer.insert(end_iter, '\n') - buffer.insert_pixbuf(end_iter, focus_out_line_pixbuf) - - end_iter = buffer.get_end_iter() - before_img_iter = end_iter.copy() - before_img_iter.backward_char() # one char back (an image also takes one char) - buffer.apply_tag_by_name('focus-out-line', before_img_iter, end_iter) - #FIXME: remove this workaround when bug is fixed - # c http://bugzilla.gnome.org/show_bug.cgi?id=318569 - - self.allow_focus_out_line = False - - # update the iter we hold to make comparison the next time - self.focus_out_end_iter_offset = buffer.get_end_iter().get_offset() - - buffer.end_user_action() - - # scroll to the end (via idle in case the scrollbar has appeared) - gobject.idle_add(self.conv_textview.scroll_to_end) + self.conv_textview.show_focus_out_line() def needs_visual_notification(self, text): '''checks text to see whether any of the words in (muc_highlight_words @@ -740,7 +713,7 @@ class GroupchatControl(ChatControlBase): model = self.list_treeview.get_model() gc_contact = gajim.contacts.get_gc_contact(self.account, self.room_jid, nick) state_images = gajim.interface.roster.jabber_state_images['16'] - if gajim.awaiting_events[self.account].has_key(self.room_jid + '/' + nick): + if len(gajim.events.get_events(self.account, self.room_jid + '/' + nick)): image = state_images['message'] else: image = state_images[gc_contact.show] @@ -823,9 +796,29 @@ class GroupchatControl(ChatControlBase): # after that, but that doesn't hurt self.add_contact_to_roster(new_nick, show, role, affiliation, status, jid) + # keep nickname color + if nick in self.gc_custom_colors: + self.gc_custom_colors[new_nick] = self.gc_custom_colors[nick] + # rename vcard / avatar + puny_jid = helpers.sanitize_filename(self.room_jid) + puny_nick = helpers.sanitize_filename(nick) + puny_new_nick = helpers.sanitize_filename(new_nick) + old_path = os.path.join(gajim.VCARD_PATH, puny_jid, puny_nick) + new_path = os.path.join(gajim.VCARD_PATH, puny_jid, puny_new_nick) + files = {old_path: new_path} + path = os.path.join(gajim.AVATAR_PATH, puny_jid) + # possible extensions + for ext in ('.png', '.jpeg', '_notif_size_bw.png', + '_notif_size_colored.png'): + files[os.path.join(path, puny_nick + ext)] = \ + os.path.join(path, puny_new_nick + ext) + for old_file in files: + if os.path.exists(old_file): + os.rename(old_file, files[old_file]) self.print_conversation(s, 'info') - if not gajim.awaiting_events[self.account].has_key(self.room_jid + '/' + nick): + if len(gajim.events.get_events(self.account, + self.room_jid + '/' + nick)) == 0: self.remove_contact(nick) else: c = gajim.contacts.get_gc_contact(self.account, self.room_jid, nick) @@ -870,15 +863,18 @@ class GroupchatControl(ChatControlBase): break if print_status is None: print_status = gajim.config.get('print_status_in_muc') + nick_jid = nick + if jid: + nick_jid += ' (%s)' % jid if show == 'offline' and print_status in ('all', 'in_and_out'): - st = _('%s has left') % nick + st = _('%s has left') % nick_jid if reason: st += ' [%s]' % reason else: if newly_created and print_status in ('all', 'in_and_out'): - st = _('%s has joined the room') % nick + st = _('%s has joined the room') % nick_jid elif print_status == 'all': - st = _('%s is now %s') % (nick, helpers.get_uf_show(show)) + st = _('%s is now %s') % (nick_jid, helpers.get_uf_show(show)) if st: if status: st += ' (' + status + ')' @@ -974,7 +970,7 @@ class GroupchatControl(ChatControlBase): if command == 'nick': # example: /nick foo - if len(message_array): + if len(message_array) and message_array[0] != self.nick: nick = message_array[0] gajim.connections[self.account].change_gc_nick(self.room_jid, nick) self.clear(self.msg_textview) @@ -985,14 +981,19 @@ class GroupchatControl(ChatControlBase): # Open a chat window to the specified nick # example: /query foo if len(message_array): - nick = message_array.pop(0) - nicks = gajim.contacts.get_nick_list(self.account, self.room_jid) - if nick in nicks: - self.on_send_pm(nick = nick) - self.clear(self.msg_textview) + nick0 = message_array.pop(0) + if nick0[-1] == ' ': + nick1 = nick0[:-1] else: - self.print_conversation(_('Nickname not found: %s') % nick, - 'info') + nick1 = nick0 + nicks = gajim.contacts.get_nick_list(self.account, self.room_jid) + for nick in [nick0, nick1]: + if nick in nicks: + self.on_send_pm(nick = nick) + self.clear(self.msg_textview) + return True + self.print_conversation(_('Nickname not found: %s') % \ + nick0, 'info') else: self.get_command_help(command) return True @@ -1002,7 +1003,8 @@ class GroupchatControl(ChatControlBase): if len(message_array): message_array = message_array[0].split() nick = message_array.pop(0) - room_nicks = gajim.contacts.get_nick_list(self.account, self.room_jid) + room_nicks = gajim.contacts.get_nick_list(self.account, + self.room_jid) if nick in room_nicks: privmsg = ' '.join(message_array) self.on_send_pm(nick=nick, msg=privmsg) @@ -1122,6 +1124,21 @@ class GroupchatControl(ChatControlBase): else: self.get_command_help(command) return True + elif command == 'names': + # print the list of participants + nicklist='' + i=0 + for contact in self.iter_contact_rows(): + nicklist += '[ %-12.12s ] ' % (contact[C_NICK].decode('utf-8')) + i=i+1 + if i == 3: + i=0 + self.print_conversation(nicklist, 'info') + nicklist='' + if nicklist: + self.print_conversation(nicklist, 'info') + self.clear(self.msg_textview) + return True elif command == 'help': if len(message_array): subcommand = message_array.pop(0) @@ -1205,6 +1222,10 @@ class GroupchatControl(ChatControlBase): s = _('Usage: /%s , changes your nickname in current room.')\ % command self.print_conversation(s, 'info') + elif command == 'names': + s = _('Usage: /%s , display the names of room occupants.')\ + % command + self.print_conversation(s, 'info') elif command == 'topic': self.print_conversation(_('Usage: /%s [topic], displays or updates the' ' current room topic.') % command, 'info') @@ -1287,9 +1308,8 @@ class GroupchatControl(ChatControlBase): nb = 0 for nick in gajim.contacts.get_nick_list(self.account, self.room_jid): fjid = self.room_jid + '/' + nick - if gajim.awaiting_events[self.account].has_key(fjid): - # gc can only have messages as event - nb += len(gajim.awaiting_events[self.account][fjid]) + nb += len(gajim.events.get_events(self.account, fjid)) + # gc can only have messages as event return nb def _on_change_subject_menuitem_activate(self, widget): @@ -1559,8 +1579,8 @@ class GroupchatControl(ChatControlBase): # show the popup now! menu = xml.get_widget('gc_occupants_menu') - menu.popup(None, None, None, event.button, event.time) menu.show_all() + menu.popup(None, None, None, event.button, event.time) def _start_private_message(self, nick): gc_c = gajim.contacts.get_gc_contact(self.account, self.room_jid, nick) diff --git a/src/gtkexcepthook.py b/src/gtkexcepthook.py index 45dc13ec0..875da8ee4 100644 --- a/src/gtkexcepthook.py +++ b/src/gtkexcepthook.py @@ -27,6 +27,7 @@ ## import sys +import os import traceback import threading @@ -36,9 +37,7 @@ import dialogs from cStringIO import StringIO from common import helpers -from common import i18n -_ = i18n._ _exception_in_progress = threading.Lock() def _info(type, value, tb): @@ -102,7 +101,8 @@ def _info(type, value, tb): _exception_in_progress.release() -if not sys.stderr.isatty(): # gdb/kdm etc if we use startx this is not True +# gdb/kdm etc if we use startx this is not True +if os.name == 'nt' or not sys.stderr.isatty(): #FIXME: maybe always show dialog? _excepthook_save = sys.excepthook sys.excepthook = _info diff --git a/src/gtkgui_helpers.py b/src/gtkgui_helpers.py index e6657b04d..fb6e3eaa8 100644 --- a/src/gtkgui_helpers.py +++ b/src/gtkgui_helpers.py @@ -19,12 +19,14 @@ import xml.sax.saxutils import gtk +import gtk.glade import gobject import pango import os import sys import vcard +import dialogs HAS_PYWIN32 = True @@ -37,11 +39,12 @@ if os.name == 'nt': HAS_PYWIN32 = False from common import i18n -i18n.init() -_ = i18n._ from common import gajim from common import helpers +gtk.glade.bindtextdomain(i18n.APP, i18n.DIR) +gtk.glade.textdomain(i18n.APP) + screen_w = gtk.gdk.screen_width() screen_h = gtk.gdk.screen_height() @@ -123,8 +126,8 @@ def get_default_font(): # in try because daemon may not be there client = gconf.client_get_default() - return helpers.ensure_unicode_string( - client.get_string('/desktop/gnome/interface/font_name')) + return client.get_string('/desktop/gnome/interface/font_name' + ).decode('utf-8') except: pass @@ -144,8 +147,7 @@ def get_default_font(): for line in file(xfce_config_file): if line.find('name="Gtk/FontName"') != -1: start = line.find('value="') + 7 - return helpers.ensure_unicode_string( - line[start:line.find('"', start)]) + return line[start:line.find('"', start)].decode('utf-8') except: #we talk about file print >> sys.stderr, _('Error: cannot open %s for reading') % xfce_config_file @@ -160,7 +162,7 @@ def get_default_font(): font_name = values[0] font_size = values[1] font_string = '%s %s' % (font_name, font_size) # Verdana 9 - return helpers.ensure_unicode_string(font_string) + return font_string.decode('utf-8') except: #we talk about file print >> sys.stderr, _('Error: cannot open %s for reading') % kde_config_file @@ -403,7 +405,7 @@ def possibly_move_window_in_current_desktop(window): if current_virtual_desktop_no != window_virtual_desktop: # we are in another VD that the window was # so show it in current VD - window.show() + window.present() def file_is_locked(path_to_file): '''returns True if file is locked (WINDOWS ONLY)''' @@ -455,7 +457,7 @@ def _get_fade_color(treeview, selected, focused): def get_scaled_pixbuf(pixbuf, kind): '''returns scaled pixbuf, keeping ratio etc or None - kind is either "chat" or "roster" or "notification" or "tooltip"''' + kind is either "chat", "roster", "notification", "tooltip", "vcard"''' # resize to a width / height for the avatar not to have distortion # (keep aspect ratio) @@ -666,3 +668,70 @@ def get_possible_button_event(event): def destroy_widget(widget): widget.destroy() + +def on_avatar_save_as_menuitem_activate(widget, jid, account, +default_name = ''): + def on_ok(widget): + def on_ok2(widget, file_path, pixbuf): + pixbuf.save(file_path, 'jpeg') + dialog2.destroy() + dialog.destroy() + + file_path = dialog.get_filename() + file_path = decode_filechooser_file_paths((file_path,))[0] + if os.path.exists(file_path): + dialog2 = dialogs.FTOverwriteConfirmationDialog( + _('This file already exists'), _('What do you want to do?'), + False) + dialog2.set_transient_for(dialog) + dialog2.set_destroy_with_parent(True) + response = dialog2.get_response() + if response < 0: + return + + # Get pixbuf + pixbuf = None + is_fake = False + if account and gajim.contacts.is_pm_from_jid(account, jid): + is_fake = True + pixbuf = get_avatar_pixbuf_from_cache(jid, is_fake) + ext = file_path.split('.')[-1] + type_ = '' + if not ext: + # Silently save as Jpeg image + file_path += '.jpeg' + type_ = 'jpeg' + elif ext == 'jpg': + type_ = 'jpeg' + else: + type_ = ext + + # Save image + try: + pixbuf.save(file_path, type_) + except: + #XXX Check for permissions + os.remove(file_path) + new_file_path = '.'.join(file_path.split('.')[:-1]) + '.jpeg' + dialog2 = dialogs.ConfirmationDialog(_('Extension not supported'), + _('Image cannot be saved in %(type)s format. Save as %(new_filename)s?') % {'type': type_, 'new_filename': new_file_path}, + on_response_ok = (on_ok2, new_file_path, pixbuf)) + else: + dialog.destroy() + + def on_cancel(widget): + dialog.destroy() + + dialog = dialogs.FileChooserDialog( + title_text = _('Save Image as...'), + action = gtk.FILE_CHOOSER_ACTION_SAVE, + buttons = (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, + gtk.STOCK_SAVE, gtk.RESPONSE_OK), + default_response = gtk.RESPONSE_OK, + current_folder = gajim.config.get('last_save_dir'), + on_response_ok = on_ok, + on_response_cancel = on_cancel) + + dialog.set_current_name(default_name) + dialog.connect('delete-event', lambda widget, event: + on_cancel(widget)) diff --git a/src/history_manager.py b/src/history_manager.py index 8ddc0f29e..21d74491f 100755 --- a/src/history_manager.py +++ b/src/history_manager.py @@ -24,21 +24,17 @@ import sys import os import signal import gtk -import gtk.glade import time import locale +from common import i18n import exceptions import dialogs import gtkgui_helpers from common.logger import LOG_DB_PATH, constants from common import gajim -from common import i18n from common import helpers -_ = i18n._ -gtk.glade.bindtextdomain(i18n.APP, i18n.DIR) -gtk.glade.textdomain(i18n.APP) # time, message, subject ( @@ -468,8 +464,8 @@ class HistoryManager: except ValueError: pass - file_.write(_('%(who)s on %(time)s said: %(message)s\n' % {'who': who, - 'time': time_, 'message': message})) + file_.write(_('%(who)s on %(time)s said: %(message)s\n') % {'who': who, + 'time': time_, 'message': message}) def _delete_jid_logs(self, liststore, list_of_paths): paths_len = len(list_of_paths) diff --git a/src/history_window.py b/src/history_window.py index 4214b734c..fba1684ff 100644 --- a/src/history_window.py +++ b/src/history_window.py @@ -24,7 +24,6 @@ ## import gtk -import gtk.glade import gobject import time import calendar @@ -34,17 +33,11 @@ import conversation_textview from common import gajim from common import helpers -from common import i18n from common.logger import Constants constants = Constants() -_ = i18n._ -APP = i18n.APP -gtk.glade.bindtextdomain(APP, i18n.DIR) -gtk.glade.textdomain(APP) - # contact_name, date, message, time ( C_CONTACT_NAME, @@ -120,7 +113,7 @@ class HistoryWindow: # select and show logs for last date we have logs with contact # and if we don't have logs at all, default to today - result = gajim.logger.get_last_date_that_has_logs(self.jid) + result = gajim.logger.get_last_date_that_has_logs(self.jid, self.account) if result is None: date = time.localtime() else: @@ -157,7 +150,7 @@ class HistoryWindow: asks for days in this month if they have logs it bolds them (marks them)''' weekday, days_in_this_month = calendar.monthrange(year, month) log_days = gajim.logger.get_days_with_logs(self.jid, year, - month, days_in_this_month) + month, days_in_this_month, self.account) for day in log_days: widget.mark_day(day) yield True @@ -197,7 +190,8 @@ class HistoryWindow: '''adds all the lines for given date in textbuffer''' self.history_buffer.set_text('') # clear the buffer first self.last_time_printout = 0 - lines = gajim.logger.get_conversation_for_date(self.jid, year, month, day) + + lines = gajim.logger.get_conversation_for_date(self.jid, year, month, day, self.account) # lines holds list with tupples that have: # contact_name, time, kind, show, message for line in lines: @@ -325,7 +319,8 @@ class HistoryWindow: if text == '': return # contact_name, time, kind, show, message, subject - results = gajim.logger.get_search_results_for_query(self.jid, text) + results = gajim.logger.get_search_results_for_query( + self.jid, text, self.account) #FIXME: # add "subject: | message: " in message column if kind is single # also do we need show at all? (we do not search on subject) diff --git a/src/message_control.py b/src/message_control.py index df19f570f..1c1b0aa50 100644 --- a/src/message_control.py +++ b/src/message_control.py @@ -11,8 +11,6 @@ ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## -import gtk -import gtk.glade import gtkgui_helpers from common import gajim @@ -22,12 +20,6 @@ TYPE_CHAT = 'chat' TYPE_GC = 'gc' TYPE_PM = 'pm' -#################### -# FIXME: Can't this stuff happen once? -from common import i18n -_ = i18n._ -APP = i18n.APP - #################### class MessageControl: @@ -47,7 +39,6 @@ class MessageControl: self.account = account self.hide_chat_buttons_always = False self.hide_chat_buttons_current = False - self.nb_unread = 0 self.resource = resource gajim.last_message_time[self.account][self.get_full_jid()] = 0 @@ -125,16 +116,15 @@ class MessageControl: pass def get_specific_unread(self): - n = 0 - if gajim.awaiting_events[self.account].has_key(self.contact.jid): - n = len(gajim.awaiting_events[self.account][self.contact.jid]) - return n + return len(gajim.events.get_events(self.account, self.contact.jid)) def send_message(self, message, keyID = '', type = 'chat', - chatstate = None, msg_id = None, composing_jep = None, resource = None): + chatstate = None, msg_id = None, composing_jep = None, resource = None, + user_nick = None): '''Send the given message to the active tab''' jid = self.contact.jid # Send and update history gajim.connections[self.account].send_message(jid, message, keyID, - type = type, chatstate = chatstate, msg_id = msg_id, - composing_jep = composing_jep, resource = self.resource) + type = type, chatstate = chatstate, msg_id = msg_id, + composing_jep = composing_jep, resource = self.resource, + user_nick = user_nick) diff --git a/src/message_textview.py b/src/message_textview.py index 179827880..cdf21ab54 100644 --- a/src/message_textview.py +++ b/src/message_textview.py @@ -44,12 +44,14 @@ class MessageTextView(gtk.TextView): self.set_accepts_tab(True) self.set_editable(True) self.set_cursor_visible(True) - self.set_wrap_mode(gtk.WRAP_WORD) + self.set_wrap_mode(gtk.WRAP_WORD_CHAR) self.set_left_margin(2) self.set_right_margin(2) self.set_pixels_above_lines(2) self.set_pixels_below_lines(2) + self.lang = None # Lang used for spell checking + def destroy(self): import gc gobject.idle_add(lambda:gc.collect()) diff --git a/src/message_window.py b/src/message_window.py index be1585a24..f190956c8 100644 --- a/src/message_window.py +++ b/src/message_window.py @@ -22,7 +22,7 @@ ## import gtk -import gtk.glade +import gobject import common import gtkgui_helpers @@ -31,12 +31,6 @@ from chat_control import ChatControlBase from common import gajim -#################### -# FIXME: Can't this stuff happen once? -from common import i18n -_ = i18n._ -APP = i18n.APP - #################### class MessageWindow: @@ -156,8 +150,17 @@ class MessageWindow: fjid = control.get_full_jid() self._controls[control.account][fjid] = control - if self.get_num_controls() > 1: + if self.get_num_controls() == 2: + # is first conversation_textview scrolled down ? + scrolled = False + first_widget = self.notebook.get_nth_page(0) + ctrl = self._widget_to_control(first_widget) + conv_textview = ctrl.conv_textview + if conv_textview.at_the_end(): + scrolled = True self.notebook.set_show_tabs(True) + if scrolled: + gobject.idle_add(conv_textview.scroll_to_end_iter) self.alignment.set_property('top-padding', 2) # Add notebook page and connect up to the tab's close button @@ -221,7 +224,7 @@ class MessageWindow: gajim.config.get('notify_on_all_muc_messages') and not \ ctrl.attention_flag: continue - unread += ctrl.nb_unread + unread += ctrl.get_nb_unread() unread_str = '' if unread > 1: @@ -277,9 +280,8 @@ class MessageWindow: ctrl.shutdown() # Update external state - if gajim.interface.systray_enabled: - gajim.interface.systray.remove_jid(ctrl.get_full_jid(), ctrl.account, - ctrl.type_id) + gajim.events.remove_events(ctrl.account, ctrl.get_full_jid, + types = ['printed_msg', 'chat', 'gc_msg']) del gajim.last_message_time[ctrl.account][ctrl.get_full_jid()] self.disconnect_tab_dnd(ctrl.widget) @@ -416,6 +418,8 @@ class MessageWindow: ind = self.notebook.get_current_page() current = ind found = False + first_composing_ind = -1 # id of first composing ctrl to switch to + # if no others controls have awaiting events # loop until finding an unread tab or having done a complete cycle while True: if forward == True: # look for the first unread tab on the right @@ -426,15 +430,22 @@ class MessageWindow: ind = ind - 1 if ind < 0: ind = self.notebook.get_n_pages() - 1 - if ind == current: - break # a complete cycle without finding an unread tab ctrl = self.get_control(ind, None) - if ctrl.nb_unread > 0: + if ctrl.get_nb_unread() > 0: found = True break # found + elif gajim.config.get('ctrl_tab_go_to_next_composing') : # Search for a composing contact + contact = ctrl.contact + if first_composing_ind == -1 and contact.chatstate == 'composing': + # If no composing contact found yet, check if this one is composing + first_composing_ind = ind + if ind == current: + break # a complete cycle without finding an unread tab if found: self.notebook.set_current_page(ind) - else: # not found + elif first_composing_ind != -1: + self.notebook.set_current_page(first_composing_ind) + else: # not found and nobody composing if forward: # CTRL + TAB if current < (self.notebook.get_n_pages() - 1): self.notebook.next_page() @@ -641,13 +652,13 @@ class MessageWindowMgr: if not gajim.config.get('saveposition'): return - if self.mode in (self.ONE_MSG_WINDOW_NEVER, self.ONE_MSG_WINDOW_ALWAYS): + if self.mode == self.ONE_MSG_WINDOW_ALWAYS: size = (gajim.config.get('msgwin-width'), gajim.config.get('msgwin-height')) elif self.mode == self.ONE_MSG_WINDOW_PERACCT: size = (gajim.config.get_per('accounts', acct, 'msgwin-width'), gajim.config.get_per('accounts', acct, 'msgwin-height')) - elif self.mode == self.ONE_MSG_WINDOW_PERTYPE: + elif self.mode in (self.ONE_MSG_WINDOW_NEVER, self.ONE_MSG_WINDOW_PERTYPE): if type == message_control.TYPE_PM: type = message_control.TYPE_CHAT opt_width = type + '-msgwin-width' @@ -705,6 +716,7 @@ class MessageWindowMgr: win_type = type win_role = type elif self.mode == self.ONE_MSG_WINDOW_NEVER: + win_type = type win_role = contact.jid win = None @@ -792,6 +804,10 @@ class MessageWindowMgr: pos_y_key = type + '-msgwin-y-position' size_width_key = type + '-msgwin-width' size_height_key = type + '-msgwin-height' + elif self.mode == self.ONE_MSG_WINDOW_NEVER: + type = msg_win.type + size_width_key = type + '-msgwin-width' + size_height_key = type + '-msgwin-height' if acct: gajim.config.set_per('accounts', acct, size_width_key, width) diff --git a/src/migrate_logs_to_dot9_db.py b/src/migrate_logs_to_dot9_db.py deleted file mode 100755 index 7bb402822..000000000 --- a/src/migrate_logs_to_dot9_db.py +++ /dev/null @@ -1,271 +0,0 @@ -#!/bin/sh -''':' -exec python -OOt "$0" ${1+"$@"} -' ''' -## Contributors for this file: -## - Yann Le Boulanger -## - Nikos Kouremenos -## -## Copyright (C) 2003-2004 Yann Le Boulanger -## Vincent Hanquez -## Copyright (C) 2005 Yann Le Boulanger -## Vincent Hanquez -## Nikos Kouremenos -## Dimitur Kirov -## Travis Shirk -## Norman Rasmussen -## -## This program is free software; you can redistribute it and/or modify -## it under the terms of the GNU General Public License as published -## by the Free Software Foundation; version 2 only. -## -## This program is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -## GNU General Public License for more details. -## - -import os -import sre -import sys -import time -import signal -from common import logger -from common import i18n - -_ = i18n._ -try: - PREFERRED_ENCODING = sys.getpreferredencoding() -except: - PREFERRED_ENCODING = 'utf-8' -from common.helpers import from_one_line, decode_string - -signal.signal(signal.SIGINT, signal.SIG_DFL) # ^C exits the application - -from pysqlite2 import dbapi2 as sqlite - -if os.name == 'nt': - try: - PATH_TO_LOGS_BASE_DIR = os.path.join(os.environ['appdata'], 'Gajim', 'Logs') - PATH_TO_DB = os.path.join(os.environ['appdata'], 'Gajim', 'logs.db') # database is called logs.db - except KeyError: - # win9x - PATH_TO_LOGS_BASE_DIR = '../src/Logs' - PATH_TO_DB = '../src/logs.db' -else: - PATH_TO_LOGS_BASE_DIR = os.path.expanduser('~/.gajim/logs') - PATH_TO_DB = os.path.expanduser('~/.gajim/logs.db') # database is called logs.db - - - -class Migration: - def __init__(self): - self.constants = logger.Constants() - self.DONE = False - self.PROCESSING = False - - if os.path.exists(PATH_TO_DB): - print '%s already exists. Exiting..' % PATH_TO_DB - sys.exit() - - self.jids_already_in = [] # jid we already put in DB - - def get_jid(self, dirname, filename): - # jids.jid text column will be JID if TC-related, room_jid if GC-related, - # ROOM_JID/nick if pm-related. Here I get names from filenames - if dirname.endswith('logs') or dirname.endswith('Logs'): - # we have file (not dir) in logs base dir, so it's TC - jid = filename # file is JID - else: - # we are in a room folder (so it can be either pm or message in room) - if filename == os.path.basename(dirname): # room/room - jid = dirname # filename is ROOM_JID - else: #room/nick it's pm - jid = dirname + '/' + filename - - if jid.startswith('/'): - p = len(PATH_TO_LOGS_BASE_DIR) - jid = jid[p+1:] - jid = jid.lower() - return jid - - def decode_jid(self, string): - '''try to decode (to make it Unicode instance) given jid''' - string = decode_string(string) - if isinstance(string, str): - return None # decode failed - return string - - def visit(self, arg, dirname, filenames): - s = _('Visiting %s') % dirname - if self.queue: - self.queue.put(s) - else: - print s - for filename in filenames: - # Don't take this file into account, this is dup info - # notifications are also in contact log file - if filename in ('notify.log', 'README'): - continue - path_to_text_file = os.path.join(dirname, filename) - if os.path.isdir(path_to_text_file): - continue - - jid = self.get_jid(dirname, filename) - - jid = self.decode_jid(jid) - if not jid: - continue - - if filename == os.path.basename(dirname): # gajim@conf/gajim@conf then gajim@conf is type room - jid_type = self.constants.JID_ROOM_TYPE - #Type of log - typ = 'room' - else: - jid_type = self.constants.JID_NORMAL_TYPE - #Type of log - typ = _('normal') - s = _('Processing %s of type %s') % (jid, typ) - if self.queue: - self.queue.put(s.encode(PREFERRED_ENCODING)) - else: - print s.encode(PREFERRED_ENCODING) - - JID_ID = None - f = open(path_to_text_file, 'r') - lines = f.readlines() - for line in lines: - line = from_one_line(line) - splitted_line = line.split(':') - if len(splitted_line) > 2: - # type in logs is one of - # 'gc', 'gcstatus', 'recv', 'sent' and if nothing of those - # it is status - # new db has: - # status, gcstatus, gc_msg, (we only recv those 3), - # single_msg_recv, chat_msg_recv, chat_msg_sent, single_msg_sent - # to meet all our needs - # here I convert - # gc ==> gc_msg, gcstatus ==> gcstatus, recv ==> chat_msg_recv - # sent ==> chat_msg_sent, status ==> status - typ = splitted_line[1] # line[1] has type of logged message - message_data = splitted_line[2:] # line[2:] has message data - # line[0] is date, - # some lines can be fucked up, just drop them - try: - tim = int(float(splitted_line[0])) - except: - continue - - contact_name = None - show = None - if typ == 'gc': - contact_name = message_data[0] - message = ':'.join(message_data[1:]) - kind = self.constants.KIND_GC_MSG - elif typ == 'gcstatus': - contact_name = message_data[0] - show = message_data[1] - message = ':'.join(message_data[2:]) # status msg - kind = self.constants.KIND_GCSTATUS - elif typ == 'recv': - message = ':'.join(message_data[0:]) - kind = self.constants.KIND_CHAT_MSG_RECV - elif typ == 'sent': - message = ':'.join(message_data[0:]) - kind = self.constants.KIND_CHAT_MSG_SENT - else: # status - kind = self.constants.KIND_STATUS - show = message_data[0] - message = ':'.join(message_data[1:]) # status msg - - message = message[:-1] # remove last \n - if not message: - continue - - # jid is already in the DB, don't create a new row, just get his jid_id - if not JID_ID: - if jid in self.jids_already_in: - self.cur.execute('SELECT jid_id FROM jids WHERE jid = "%s"' % jid) - JID_ID = self.cur.fetchone()[0] - else: - self.jids_already_in.append(jid) - self.cur.execute('INSERT INTO jids (jid, type) VALUES (?, ?)', - (jid, jid_type)) - self.con.commit() - JID_ID = self.cur.lastrowid - - sql = 'INSERT INTO logs (jid_id, contact_name, time, kind, show, message) '\ - 'VALUES (?, ?, ?, ?, ?, ?)' - - values = (JID_ID, contact_name, tim, kind, show, message) - self.cur.execute(sql, values) - self.con.commit() - - def migrate(self, queue = None): - self.queue = queue - self.con = sqlite.connect(PATH_TO_DB) - os.chmod(PATH_TO_DB, 0600) # rw only for us - self.cur = self.con.cursor() - # create the tables - # kind can be - # status, gcstatus, gc_msg, (we only recv for those 3), - # single_msg_recv, chat_msg_recv, chat_msg_sent, single_msg_sent - # to meet all our needs - # logs.jid_id --> jids.jid_id but Sqlite doesn't do FK etc so it's done in python code - self.cur.executescript( - ''' - CREATE TABLE jids( - jid_id INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE, - jid TEXT UNIQUE, - type INTEGER - ); - - CREATE TABLE unread_messages( - message_id INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE, - jid_id INTEGER - ); - - CREATE TABLE logs( - log_line_id INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE, - jid_id INTEGER, - contact_name TEXT, - time INTEGER, - kind INTEGER, - show INTEGER, - message TEXT, - subject TEXT - ); - ''' - ) - - self.con.commit() - - self.PROCESSING = True - os.path.walk(PATH_TO_LOGS_BASE_DIR, self.visit, None) - s = ''' - -We do not use plain-text files anymore, because they do not meet our needs. -Those files here are logs for Gajim up until 0.8.2 -We now use an sqlite database called logs.db found in %s -You can now safely remove your %s folder -Thank you''' % (os.path.dirname(PATH_TO_LOGS_BASE_DIR), PATH_TO_LOGS_BASE_DIR) - f = open(os.path.join(PATH_TO_LOGS_BASE_DIR, 'README'), 'w') - f.write(s) - f.close() - if queue: - queue.put(s) - self.DONE = True - -if __name__ == '__main__': - # magic argumen 'dont_wait' tells us that script is run from Gajim - if len(sys.argv) < 2 or sys.argv[1] != 'dont_wait': - print 'IMPORTNANT: PLEASE READ http://trac.gajim.org/wiki/MigrateLogToDot9DB' - print 'Migration will start in 40 seconds unless you press Ctrl+C' - time.sleep(40) # give the user time to act - print - print 'Starting Logs Migration' - print '=======================' - print 'Please do NOT run Gajim until this script is over' - m = Migration() - m.migrate() diff --git a/src/notify.py b/src/notify.py index 201392899..908ff25d9 100644 --- a/src/notify.py +++ b/src/notify.py @@ -23,10 +23,7 @@ import dialogs import gtkgui_helpers from common import gajim -from common import i18n from common import helpers -i18n.init() -_ = i18n._ import dbus_support if dbus_support.supported: @@ -35,29 +32,112 @@ if dbus_support.supported: import dbus.glib import dbus.service -def notify(event, jid, account, parameters): +def get_show_in_roster(event, account, contact): + '''Return True if this event must be shown in roster, else False''' + num = get_advanced_notification(event, account, contact) + if num != None: + if gajim.config.get_per('notifications', str(num), 'roster') == 'yes': + return True + if gajim.config.get_per('notifications', str(num), 'roster') == 'no': + return False + if event == 'message_received': + chat_control = helpers.get_chat_control(account, contact) + if not chat_control: + return True + elif event == 'ft_request': + return True + return False + +def get_show_in_systray(event, account, contact): + '''Return True if this event must be shown in roster, else False''' + num = get_advanced_notification(event, account, contact) + if num != None: + if gajim.config.get_per('notifications', str(num), 'systray') == 'yes': + return True + if gajim.config.get_per('notifications', str(num), 'systray') == 'no': + return False + if event in ('message_received', 'ft_request', 'gc_msg_highlight', + 'ft_request'): + return True + return False + +def get_advanced_notification(event, account, contact): + '''Returns the number of the first advanced notification or None''' + num = 0 + notif = gajim.config.get_per('notifications', str(num)) + while notif: + recipient_ok = False + status_ok = False + tab_opened_ok = False + # test event + if gajim.config.get_per('notifications', str(num), 'event') == event: + # test recipient + recipient_type = gajim.config.get_per('notifications', str(num), + 'recipient_type') + recipients = gajim.config.get_per('notifications', str(num), + 'recipients').split() + if recipient_type == 'all': + recipient_ok = True + elif recipient_type == 'contact' and contact.jid in recipients: + recipient_ok = True + elif recipient_type == 'group': + for group in contact.groups: + if group in contact.groups: + recipient_ok = True + break + if recipient_ok: + # test status + our_status = gajim.SHOW_LIST[gajim.connections[account].connected] + status = gajim.config.get_per('notifications', str(num), 'status') + if status == 'all' or our_status in status.split(): + status_ok = True + if status_ok: + # test window_opened + tab_opened = gajim.config.get_per('notifications', str(num), + 'tab_opened') + if tab_opened == 'both': + tab_opened_ok = True + else: + chat_control = helper.get_chat_control(account, contact) + if (chat_control and tab_opened == 'yes') or (not chat_control and \ + tab_opened == 'no'): + tab_opened_ok = True + if tab_opened_ok: + return num + + num += 1 + notif = gajim.config.get_per('notifications', str(num)) + +def notify(event, jid, account, parameters, advanced_notif_num = None): '''Check what type of notifications we want, depending on basic configuration of notifications and advanced one and do these notifications''' # First, find what notifications we want do_popup = False do_sound = False + do_cmd = False if (event == 'status_change'): new_show = parameters[0] status_message = parameters[1] # Default : No popup for status change elif (event == 'contact_connected'): status_message = parameters - if gajim.config.get('notify_on_signin') and \ - not gajim.block_signed_in_notifications[account]\ - and helpers.allow_showing_notification(account): + j = gajim.get_jid_without_resource(jid) + server = gajim.get_server_from_jid(j) + account_server = account + '/' + server + block_transport = False + if account_server in gajim.block_signed_in_notifications and \ + gajim.block_signed_in_notifications[account_server]: + block_transport = True + if helpers.allow_showing_notification(account, 'notify_on_signin') and \ + not gajim.block_signed_in_notifications[account] and not block_transport: do_popup = True if gajim.config.get_per('soundevents', 'contact_connected', - 'enabled') and not gajim.block_signed_in_notifications[account]: + 'enabled') and not gajim.block_signed_in_notifications[account] and \ + not block_transport: do_sound = True elif (event == 'contact_disconnected'): status_message = parameters - if gajim.config.get('notify_on_signout') \ - and helpers.allow_showing_notification(account): + if helpers.allow_showing_notification(account, 'notify_on_signout'): do_popup = True if gajim.config.get_per('soundevents', 'contact_disconnected', 'enabled'): @@ -67,17 +147,21 @@ def notify(event, jid, account, parameters): first = parameters[1] nickname = parameters[2] message = parameters[3] - if gajim.config.get('notify_on_new_message') and \ - helpers.allow_showing_notification(account) and first: + if helpers.allow_showing_notification(account, 'notify_on_new_message', + advanced_notif_num, first): do_popup = True - if first and gajim.config.get_per('soundevents', 'first_message_received', - 'enabled'): + if first and helpers.allow_sound_notification('first_message_received', + advanced_notif_num): do_sound = True - elif not first and gajim.config.get_per('soundevents', 'next_message_received', - 'enabled'): + elif not first and helpers.allow_sound_notification( + 'next_message_received', advanced_notif_num): do_sound = True else: print '*Event not implemeted yet*' + + if advanced_notif_num != None and gajim.config.get_per('notifications', + str(advanced_notif_num), 'run_command'): + do_cmd = True # Do the wanted notifications if (do_popup): @@ -138,8 +222,7 @@ def notify(event, jid, account, parameters): text = message elif message_type == 'pm': # private message event_type = _('New Private Message') - room_name, t = gajim.get_room_name_and_server_from_room_jid( - jid) + room_name, t = gajim.get_room_name_and_server_from_room_jid(jid) img = os.path.join(gajim.DATA_DIR, 'pixmaps', 'events', 'priv_msg_recv.png') title = _('New Private Message from room %s') % room_name @@ -151,20 +234,40 @@ def notify(event, jid, account, parameters): 'chat_msg_recv.png') title = _('New Message from %(nickname)s') % \ {'nickname': nickname} - text = message + text = message path = gtkgui_helpers.get_path_to_generic_or_avatar(img) popup(event_type, jid, account, message_type, path_to_image = path, title = title, text = text) if (do_sound): + snd_file = None + snd_event = None # If not snd_file, play the event if (event == 'new_message'): - if first: - helpers.play_sound('first_message_received') + if advanced_notif_num != None and gajim.config.get_per('notifications', + str(advanced_notif_num), 'sound') == 'yes': + snd_file = gajim.config.get_per('notifications', + str(advanced_notif_num), 'sound_file') + elif advanced_notif_num != None and gajim.config.get_per( + 'notifications', str(advanced_notif_num), 'sound') == 'no': + pass # do not set snd_event + elif first: + snd_event = 'first_message_received' else: - helpers.play_sound('next_message_received') - elif (event == 'contact_connected' or event == 'contact_disconnected'): - helpers.play_sound(event) - + snd_event = 'next_message_received' + elif event in ('contact_connected', 'contact_disconnected'): + snd_event = event + if snd_file: + helpers.play_sound_file(snd_file) + if snd_event: + helpers.play_sound(snd_event) + + if do_cmd: + command = gajim.config.get_per('notifications', str(advanced_notif_num), + 'command') + try: + helpers.exec_command(command) + except: + pass def popup(event_type, jid, account, msg_type = '', path_to_image = None, title = None, text = None): @@ -279,6 +382,8 @@ class DesktopNotification: ntype = 'im.invitation' elif event_type == _('Contact Changed Status'): ntype = 'presence.status' + elif event_type == _('Connection Failed'): + ntype = 'connection.failed' else: # default failsafe values self.path_to_image = os.path.abspath( diff --git a/src/profile_window.py b/src/profile_window.py new file mode 100644 index 000000000..41bbd8de3 --- /dev/null +++ b/src/profile_window.py @@ -0,0 +1,283 @@ +## profile_window.py +## +## Copyright (C) 2003-2006 Yann Le Boulanger +## Copyright (C) 2005-2006 Nikos Kouremenos +## +## This program is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published +## by the Free Software Foundation; version 2 only. +## +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. +## + +import gtk +import gobject +import base64 +import mimetypes +import os +import time +import locale + +import gtkgui_helpers +import dialogs + +from common import helpers +from common import gajim +from common.i18n import Q_ + +def get_avatar_pixbuf_encoded_mime(photo): + '''return the pixbuf of the image + photo is a dictionary containing PHOTO information''' + if not isinstance(photo, dict): + return None, None, None + img_decoded = None + avatar_encoded = None + avatar_mime_type = None + if photo.has_key('BINVAL'): + img_encoded = photo['BINVAL'] + avatar_encoded = img_encoded + try: + img_decoded = base64.decodestring(img_encoded) + except: + pass + if img_decoded: + if photo.has_key('TYPE'): + avatar_mime_type = photo['TYPE'] + pixbuf = gtkgui_helpers.get_pixbuf_from_data(img_decoded) + else: + pixbuf, avatar_mime_type = gtkgui_helpers.get_pixbuf_from_data( + img_decoded, want_type=True) + else: + pixbuf = None + return pixbuf, avatar_encoded, avatar_mime_type + +class ProfileWindow: + '''Class for our information window''' + + def __init__(self, account): + self.xml = gtkgui_helpers.get_glade('profile_window.glade') + self.window = self.xml.get_widget('profile_window') + + self.account = account + self.jid = gajim.get_jid_from_account(account) + + self.avatar_mime_type = None + self.avatar_encoded = None + + self.xml.signal_autoconnect(self) + self.window.show_all() + + def on_profile_window_destroy(self, widget): + del gajim.interface.instances[self.account]['profile'] + + def on_profile_window_key_press_event(self, widget, event): + if event.keyval == gtk.keysyms.Escape: + self.window.destroy() + + def on_clear_button_clicked(self, widget): + # empty the image + self.xml.get_widget('PHOTO_image').set_from_icon_name('stock_person', + gtk.ICON_SIZE_DIALOG) + self.avatar_encoded = None + self.avatar_mime_type = None + + def on_set_avatar_button_clicked(self, widget): + f = None + def on_ok(widget, path_to_file): + filesize = os.path.getsize(path_to_file) # in bytes + #FIXME: use messages for invalid file for 0.11 + invalid_file = False + msg = '' + if os.path.isfile(path_to_file): + stat = os.stat(path_to_file) + if stat[6] == 0: + invalid_file = True + else: + invalid_file = True + if not invalid_file and filesize > 16384: # 16 kb + try: + pixbuf = gtk.gdk.pixbuf_new_from_file(path_to_file) + # get the image at 'notification size' + # and use that user did not specify in ACE crazy size + scaled_pixbuf = gtkgui_helpers.get_scaled_pixbuf(pixbuf, + 'tooltip') + except gobject.GError, msg: # unknown format + # msg should be string, not object instance + msg = str(msg) + invalid_file = True + if invalid_file: + if True: # keep identation + dialogs.ErrorDialog(_('Could not load image'), msg) + return + if filesize > 16384: + if scaled_pixbuf: + path_to_file = os.path.join(gajim.TMP, + 'avatar_scaled.png') + scaled_pixbuf.save(path_to_file, 'png') + self.dialog.destroy() + + fd = open(path_to_file, 'rb') + data = fd.read() + pixbuf = gtkgui_helpers.get_pixbuf_from_data(data) + # rescale it + pixbuf = gtkgui_helpers.get_scaled_pixbuf(pixbuf, 'vcard') + image = self.xml.get_widget('PHOTO_image') + image.set_from_pixbuf(pixbuf) + self.avatar_encoded = base64.encodestring(data) + # returns None if unknown type + self.avatar_mime_type = mimetypes.guess_type(path_to_file)[0] + + self.dialog = dialogs.ImageChooserDialog(on_response_ok = on_ok) + + def on_PHOTO_button_press_event(self, widget, event): + '''If right-clicked, show popup''' + if event.button == 3 and self.avatar_encoded: # right click + menu = gtk.Menu() + nick = gajim.config.get_per('accounts', self.account, 'name') + menuitem = gtk.ImageMenuItem(gtk.STOCK_SAVE_AS) + menuitem.connect('activate', + gtkgui_helpers.on_avatar_save_as_menuitem_activate, + self.jid, None, nick + '.jpeg') + menu.append(menuitem) + # show clear + menuitem = gtk.ImageMenuItem(gtk.STOCK_CLEAR) + menuitem.connect('activate', self.on_clear_button_clicked) + menu.append(menuitem) + menu.connect('selection-done', lambda w:w.destroy()) + # show the menu + menu.show_all() + menu.popup(None, None, None, event.button, event.time) + elif event.button == 1: # left click + self.on_set_avatar_button_clicked(widget) + + def set_value(self, entry_name, value): + try: + self.xml.get_widget(entry_name).set_text(value) + except AttributeError: + pass + + def set_values(self, vcard): + if not 'PHOTO' in vcard: + # set default image + image = self.xml.get_widget('PHOTO_image') + image.set_from_icon_name('stock_person', gtk.ICON_SIZE_DIALOG) + for i in vcard.keys(): + if i == 'PHOTO': + pixbuf, self.avatar_encoded, self.avatar_mime_type = \ + get_avatar_pixbuf_encoded_mime(vcard[i]) + image = self.xml.get_widget('PHOTO_image') + if not pixbuf: + image.set_from_icon_name('stock_person', gtk.ICON_SIZE_DIALOG) + continue + pixbuf = gtkgui_helpers.get_scaled_pixbuf(pixbuf, 'vcard') + image.set_from_pixbuf(pixbuf) + continue + if i == 'ADR' or i == 'TEL' or i == 'EMAIL': + for entry in vcard[i]: + add_on = '_HOME' + if 'WORK' in entry: + add_on = '_WORK' + for j in entry.keys(): + self.set_value(i + add_on + '_' + j + '_entry', entry[j]) + if isinstance(vcard[i], dict): + for j in vcard[i].keys(): + self.set_value(i + '_' + j + '_entry', vcard[i][j]) + else: + if i == 'DESC': + self.xml.get_widget('DESC_textview').get_buffer().set_text( + vcard[i], 0) + else: + self.set_value(i + '_entry', vcard[i]) + + def add_to_vcard(self, vcard, entry, txt): + '''Add an information to the vCard dictionary''' + entries = entry.split('_') + loc = vcard + if len(entries) == 3: # We need to use lists + if not loc.has_key(entries[0]): + loc[entries[0]] = [] + found = False + for e in loc[entries[0]]: + if entries[1] in e: + found = True + break + if found: + e[entries[2]] = txt + else: + loc[entries[0]].append({entries[1]: '', entries[2]: txt}) + return vcard + while len(entries) > 1: + if not loc.has_key(entries[0]): + loc[entries[0]] = {} + loc = loc[entries[0]] + del entries[0] + loc[entries[0]] = txt + return vcard + + def make_vcard(self): + '''make the vCard dictionary''' + entries = ['FN', 'NICKNAME', 'BDAY', 'EMAIL_HOME_USERID', 'URL', + 'TEL_HOME_NUMBER', 'N_FAMILY', 'N_GIVEN', 'N_MIDDLE', 'N_PREFIX', + 'N_SUFFIX', 'ADR_HOME_STREET', 'ADR_HOME_EXTADR', 'ADR_HOME_LOCALITY', + 'ADR_HOME_REGION', 'ADR_HOME_PCODE', 'ADR_HOME_CTRY', 'ORG_ORGNAME', + 'ORG_ORGUNIT', 'TITLE', 'ROLE', 'TEL_WORK_NUMBER', 'EMAIL_WORK_USERID', + 'ADR_WORK_STREET', 'ADR_WORK_EXTADR', 'ADR_WORK_LOCALITY', + 'ADR_WORK_REGION', 'ADR_WORK_PCODE', 'ADR_WORK_CTRY'] + vcard = {} + for e in entries: + txt = self.xml.get_widget(e + '_entry').get_text().decode('utf-8') + if txt != '': + vcard = self.add_to_vcard(vcard, e, txt) + + # DESC textview + buff = self.xml.get_widget('DESC_textview').get_buffer() + start_iter = buff.get_start_iter() + end_iter = buff.get_end_iter() + txt = buff.get_text(start_iter, end_iter, 0) + if txt != '': + vcard['DESC'] = txt.decode('utf-8') + + # Avatar + if self.avatar_encoded: + vcard['PHOTO'] = {'BINVAL': self.avatar_encoded} + if self.avatar_mime_type: + vcard['PHOTO']['TYPE'] = self.avatar_mime_type + return vcard + + def on_publish_button_clicked(self, widget): + if gajim.connections[self.account].connected < 2: + dialogs.ErrorDialog(_('You are not connected to the server'), + _('Without a connection you can not publish your contact ' + 'information.')) + return + vcard = self.make_vcard() + nick = '' + if vcard.has_key('NICKNAME'): + nick = vcard['NICKNAME'] + if nick == '': + nick = gajim.config.get_per('accounts', self.account, 'name') + gajim.nicks[self.account] = nick + gajim.connections[self.account].send_vcard(vcard) + + def on_retrieve_button_clicked(self, widget): + entries = ['FN', 'NICKNAME', 'BDAY', 'EMAIL_HOME_USERID', 'URL', + 'TEL_HOME_NUMBER', 'N_FAMILY', 'N_GIVEN', 'N_MIDDLE', 'N_PREFIX', + 'N_SUFFIX', 'ADR_HOME_STREET', 'ADR_HOME_EXTADR', 'ADR_HOME_LOCALITY', + 'ADR_HOME_REGION', 'ADR_HOME_PCODE', 'ADR_HOME_CTRY', 'ORG_ORGNAME', + 'ORG_ORGUNIT', 'TITLE', 'ROLE', 'ADR_WORK_STREET', 'ADR_WORK_EXTADR', + 'ADR_WORK_LOCALITY', 'ADR_WORK_REGION', 'ADR_WORK_PCODE', + 'ADR_WORK_CTRY'] + if gajim.connections[self.account].connected > 1: + # clear all entries + for e in entries: + self.xml.get_widget(e + '_entry').set_text('') + self.xml.get_widget('DESC_textview').get_buffer().set_text('') + self.xml.get_widget('PHOTO_image').set_from_icon_name('stock_person', + gtk.ICON_SIZE_DIALOG) + gajim.connections[self.account].request_vcard(self.jid) + else: + dialogs.ErrorDialog(_('You are not connected to the server'), + _('Without a connection, you can not get your contact information.')) diff --git a/src/remote_control.py b/src/remote_control.py index 52b36acb9..05156cf84 100644 --- a/src/remote_control.py +++ b/src/remote_control.py @@ -31,9 +31,7 @@ import os from common import gajim from common import helpers from time import time -from common import i18n from dialogs import AddNewContactWindow, NewChatDialog -_ = i18n._ import dbus_support if dbus_support.supported: @@ -56,7 +54,7 @@ ident = lambda e: e if dbus_support.version[1] >= 43: # in most cases it is a utf-8 string DBUS_STRING = dbus.String - + # general type (for use in dicts, # where all values should have the same type) DBUS_VARIANT = dbus.Variant @@ -69,7 +67,7 @@ if dbus_support.version[1] >= 43: DBUS_DICT_SS = lambda : dbus.Dictionary({}, signature="ss") # empty type DBUS_NONE = lambda : dbus.Variant(0) - + else: # 33, 35, 36 DBUS_DICT_SV = lambda : {} DBUS_DICT_SS = lambda : {} @@ -124,7 +122,7 @@ class Remote: def __init__(self): self.signal_object = None session_bus = dbus_support.session_bus.SessionBus() - + if dbus_support.version[1] >= 41: service = dbus.service.BusName(SERVICE, bus=session_bus) self.signal_object = SignalObject(service) @@ -141,7 +139,7 @@ class Remote: class SignalObject(DbusPrototype): ''' Local object definition for /org/gajim/dbus/RemoteObject. This doc must not be visible, because the clients can access only the remote object. ''' - + def __init__(self, service): self.first_show = True self.vcard_account = None @@ -161,6 +159,7 @@ class SignalObject(DbusPrototype): self.change_status, self.open_chat, self.send_message, + self.send_single_message, self.contact_info, self.send_file, self.prefs_list, @@ -172,6 +171,7 @@ class SignalObject(DbusPrototype): self.get_status, self.get_status_message, self.start_chat, + self.send_xml, ]) def raise_signal(self, signal, arg): @@ -181,7 +181,7 @@ class SignalObject(DbusPrototype): i = message.get_iter(True) i.append(arg) self._connection.send(message) - + def get_status(self, *args): '''get_status(account = None) returns status (show to be exact) which is the global one @@ -194,7 +194,7 @@ class SignalObject(DbusPrototype): # return show for the given account index = gajim.connections[account].connected return DBUS_STRING(STATUS_LIST[index]) - + def get_status_message(self, *args): '''get_status(account = None) returns status which is the global one @@ -207,7 +207,7 @@ class SignalObject(DbusPrototype): # return show for the given account status = gajim.connections[account].status return DBUS_STRING(status) - + def get_account_and_contact(self, account, jid): ''' get the account (if not given) and contact instance from jid''' @@ -233,7 +233,7 @@ class SignalObject(DbusPrototype): break if not contact: contact = jid - + return connected_account, contact def send_file(self, *args): @@ -241,34 +241,50 @@ class SignalObject(DbusPrototype): send file, located at 'file_path' to 'jid', using account (optional) 'account' ''' file_path, jid, account = self._get_real_arguments(args, 3) - + jid = self._get_real_jid(jid, account) connected_account, contact = self.get_account_and_contact(account, jid) if connected_account: + if file_path[:7] == 'file://': + file_path=file_path[7:] if os.path.isfile(file_path): # is it file? gajim.interface.instances['file_transfers'].send_file( connected_account, contact, file_path) return True return False - def send_message(self, *args): - ''' send_message(jid, message, keyID=None, account=None) - send 'message' to 'jid', using account (optional) 'account'. - if keyID is specified, encrypt the message with the pgp key ''' - jid, message, keyID, account = self._get_real_arguments(args, 4) + def _send_message(self, jid, message, keyID, account, type = 'chat', subject = None): + ''' can be called from send_chat_message (default when send_message) + or send_single_message''' if not jid or not message: return None # or raise error if not keyID: keyID = '' - + connected_account, contact = self.get_account_and_contact(account, jid) - + if connected_account: connection = gajim.connections[connected_account] - res = connection.send_message(jid, message, keyID) + res = connection.send_message(jid, message, keyID, type, subject) return True return False + def send_chat_message(self, *args): + ''' send_message(jid, message, keyID=None, account=None) + send chat 'message' to 'jid', using account (optional) 'account'. + if keyID is specified, encrypt the message with the pgp key ''' + jid, message, keyID, account = self._get_real_arguments(args, 4) + jid = self._get_real_jid(jid, account) + return self._send_message(jid, message, keyID, account) + + def send_single_message(self, *args): + ''' send_single_message(jid, subject, message, keyID=None, account=None) + send single 'message' to 'jid', using account (optional) 'account'. + if keyID is specified, encrypt the message with the pgp key ''' + jid, subject, message, keyID, account = self._get_real_arguments(args, 5) + jid = self._get_real_jid(jid, account) + return self._send_message(jid, message, keyID, account, type, subject) + def open_chat(self, *args): ''' start_chat(jid, account=None) -> shows the tabbed window for new message to 'jid', using account(optional) 'account' ''' @@ -276,9 +292,8 @@ class SignalObject(DbusPrototype): if not jid: # FIXME: raise exception for missing argument (dbus0.35+) return None - if jid.startswith('xmpp:'): - jid = jid[5:] # len('xmpp:') = 5 - + jid = self._get_real_jid(jid, account) + if account: accounts = [account] else: @@ -303,11 +318,11 @@ class SignalObject(DbusPrototype): connected_account = acct elif first_connected_acct is None: first_connected_acct = acct - + # if jid is not a conntact, open-chat with first connected account if connected_account is None and first_connected_acct: connected_account = first_connected_acct - + if connected_account: gajim.interface.roster.new_chat_from_jid(connected_account, jid) # preserve the 'steal focus preservation' @@ -316,7 +331,7 @@ class SignalObject(DbusPrototype): win.window.focus() return True return False - + def change_status(self, *args, **keywords): ''' change_status(status, message, account). account is optional - if not specified status is changed for all accounts. ''' @@ -331,16 +346,17 @@ class SignalObject(DbusPrototype): else: # account not specified, so change the status of all accounts for acc in gajim.contacts.get_accounts(): + if not gajim.config.get_per('accounts', acc, 'sync_with_global_status'): + continue gobject.idle_add(gajim.interface.roster.send_status, acc, status, message) return None - + def show_next_unread(self, *args): ''' Show the window(s) with next waiting messages in tabbed/group chats. ''' - #FIXME: when systray is disabled this method does nothing. - if len(gajim.interface.systray.jids) != 0: + if gajim.events.get_nb_events(): gajim.interface.systray.handle_first_event() - + def contact_info(self, *args): ''' get vcard info for a contact. Return cached value of the vcard. ''' @@ -350,14 +366,15 @@ class SignalObject(DbusPrototype): if not jid: # FIXME: raise exception for missing argument (0.3+) return None - + jid = self._get_real_jid(jid, account) + cached_vcard = gajim.connections.values()[0].get_cached_vcard(jid) if cached_vcard: return get_dbus_struct(cached_vcard) - + # return empty dict return DBUS_DICT_SV() - + def list_accounts(self, *args): ''' list register accounts ''' result = gajim.contacts.get_accounts() @@ -367,7 +384,7 @@ class SignalObject(DbusPrototype): result_array.append(DBUS_STRING(account)) return result_array return None - + def account_info(self, *args): ''' show info on account: resource, jid, nick, prio, message ''' [for_account] = self._get_real_arguments(args, 1) @@ -386,7 +403,7 @@ class SignalObject(DbusPrototype): result['resource'] = DBUS_STRING(unicode(gajim.config.get_per('accounts', account.name, 'resource'))) return result - + def list_contacts(self, *args): ''' list all contacts in the roster. If the first argument is specified, then return the contacts for the specified account ''' @@ -410,7 +427,7 @@ class SignalObject(DbusPrototype): if result == []: return None return result - + def toggle_roster_appearance(self, *args): ''' shows/hides the roster window ''' win = gajim.interface.roster.window @@ -437,14 +454,14 @@ class SignalObject(DbusPrototype): prefs_dict[DBUS_STRING(key)] = DBUS_STRING(value[1]) gajim.config.foreach(get_prefs) return prefs_dict - + def prefs_store(self, *args): try: gajim.interface.save_config() except Exception, e: return False return True - + def prefs_del(self, *args): [key] = self._get_real_arguments(args, 1) if not key: @@ -457,7 +474,7 @@ class SignalObject(DbusPrototype): else: gajim.config.del_per(key_path[0], key_path[1], key_path[2]) return True - + def prefs_put(self, *args): [key] = self._get_real_arguments(args, 1) if not key: @@ -470,7 +487,7 @@ class SignalObject(DbusPrototype): subname, value = key_path[2].split('=', 1) gajim.config.set_per(key_path[0], key_path[1], subname, value) return True - + def add_contact(self, *args): [jid, account] = self._get_real_arguments(args, 2) if account: @@ -485,11 +502,12 @@ class SignalObject(DbusPrototype): # if account is not given, show account combobox AddNewContactWindow(account = None, jid = jid) return True - + def remove_contact(self, *args): [jid, account] = self._get_real_arguments(args, 2) + jid = self._get_real_jid(jid, account) accounts = gajim.contacts.get_accounts() - + # if there is only one account in roster, take it as default if account: accounts = [account] @@ -503,7 +521,7 @@ class SignalObject(DbusPrototype): gajim.contacts.remove_jid(account, jid) contact_exists = True return contact_exists - + def _is_first(self): if self.first_show: self.first_show = False @@ -523,7 +541,35 @@ class SignalObject(DbusPrototype): args.extend([None] * (desired_length - len(args))) args = args[:desired_length] return args - + + def _get_real_jid(self, jid, account = None): + '''get the real jid from the given one: removes xmpp: or get jid from nick + if account is specified, search only in this account + ''' + if account: + accounts = [account] + else: + accounts = gajim.connections.keys() + if jid.startswith('xmpp:'): + return jid[5:] # len('xmpp:') = 5 + nick_in_roster = None # Is jid a nick ? + for account in accounts: + # Does jid exists in roster of one account ? + if gajim.contacts.get_contacts_from_jid(account, jid): + return jid + if not nick_in_roster: + # look in all contact if one has jid as nick + for jid_ in gajim.contacts.get_jid_list(account): + c = gajim.contacts.get_contacts_from_jid(account, jid_) + if c[0].name == jid: + nick_in_roster = jid_ + break + if nick_in_roster: + # We have not found jid in roster, but we found is as a nick + return nick_in_roster + # We have not found it as jid nor as nick, probably a not in roster jid + return jid + def _contacts_as_dbus_structure(self, contacts): ''' get info from list of Contact objects and create dbus dict ''' if not contacts: @@ -552,7 +598,7 @@ class SignalObject(DbusPrototype): return contact_dict def get_unread_msgs_number(self, *args): - return str(gajim.interface.roster.nb_unread) + return str(gajim.events.get_nb_events) def start_chat(self, *args): [account] = self._get_real_arguments(args, 1) @@ -562,13 +608,21 @@ class SignalObject(DbusPrototype): NewChatDialog(account) return True + def send_xml(self, *args): + xml, account = self._get_real_arguments(args, 2) + if account: + gajim.connections[account[0]].send_stanza(xml) + else: + for acc in gajim.contacts.get_accounts(): + gajim.connections[acc].send_stanza(xml) + if dbus_support.version[1] >= 30 and dbus_support.version[1] <= 40: method = dbus.method signal = dbus.signal elif dbus_support.version[1] >= 41: method = dbus.service.method signal = dbus.service.signal - + # prevent using decorators, because they are not supported # on python < 2.4 # FIXME: use decorators when python2.3 (and dbus 0.23) is OOOOOOLD @@ -579,7 +633,8 @@ class SignalObject(DbusPrototype): change_status = method(INTERFACE)(change_status) open_chat = method(INTERFACE)(open_chat) contact_info = method(INTERFACE)(contact_info) - send_message = method(INTERFACE)(send_message) + send_message = method(INTERFACE)(send_chat_message) + send_single_message = method(INTERFACE)(send_single_message) send_file = method(INTERFACE)(send_file) prefs_list = method(INTERFACE)(prefs_list) prefs_put = method(INTERFACE)(prefs_put) @@ -592,3 +647,4 @@ class SignalObject(DbusPrototype): account_info = method(INTERFACE)(account_info) get_unread_msgs_number = method(INTERFACE)(get_unread_msgs_number) start_chat = method(INTERFACE)(start_chat) + send_xml = method(INTERFACE)(send_xml) diff --git a/src/roster_window.py b/src/roster_window.py index 9aa53b9e4..b7f46ba33 100644 --- a/src/roster_window.py +++ b/src/roster_window.py @@ -15,10 +15,10 @@ ## import gtk -import gtk.glade import gobject import os import time +import urllib import common.sleepy import history_window @@ -30,20 +30,15 @@ import gtkgui_helpers import cell_renderer_image import tooltips import message_control +import notify from common import gajim from common import helpers -from common import i18n from message_window import MessageWindowMgr from chat_control import ChatControl from groupchat_control import GroupchatControl from groupchat_control import PrivateChatControl -_ = i18n._ -APP = i18n.APP -gtk.glade.bindtextdomain(APP, i18n.DIR) -gtk.glade.textdomain(APP) - #(icon, name, type, jid, account, editable, second pixbuf) ( C_IMG, # image to show state (online, new message etc) @@ -69,7 +64,7 @@ class RosterWindow: if self.regroup: return account_iter while account_iter: - account_name = model[account_iter][C_NAME].decode('utf-8') + account_name = model[account_iter][C_ACCOUNT].decode('utf-8') if name == account_name: break account_iter = model.iter_next(account_iter) @@ -89,6 +84,12 @@ class RosterWindow: return group_iter def get_contact_iter(self, jid, account): + if jid == gajim.get_jid_from_account(account): + iter = self.get_self_contact_iter(account) + if iter: + return [iter] + else: + return [] model = self.tree.get_model() acct = self.get_account_iter(account) found = [] @@ -190,6 +191,13 @@ class RosterWindow: model[iter][C_SECPIXBUF] = tls_pixbuf else: model[iter][C_SECPIXBUF] = None + path = model.get_path(iter) + if self.regroup: + account = _('Merged accounts') + if not self.tree.row_expanded(path) and model.iter_has_child(iter): + model[iter][C_NAME] = '[%s]' % account + else: + model[iter][C_NAME] = account def remove_newly_added(self, jid, account): if jid in gajim.newly_added[account]: @@ -210,6 +218,9 @@ class RosterWindow: # If contact already in roster, do not add it if len(self.get_contact_iter(jid, account)): return + if jid == gajim.get_jid_from_account(account): + self.add_self_contact(account) + return if gajim.jid_is_transport(contact.jid): contact.groups = [_('Transports')] @@ -244,25 +255,24 @@ class RosterWindow: if family: for data in family: _account = data['account'] - #XXX When we support metacontacts from different servers, make - # sure that loop from #1953 is fixed and remove next 2 lines! - if _account != account: + # Metacontacts over different accounts only in merged mode + if _account != account and not self.regroup: continue _jid = data['jid'] if self.get_contact_iter(_jid, _account): shown_family.append(data) - if _jid == jid: + if _jid == jid and _account == account: our_data = data shown_family.append(our_data) big_brother_data = gajim.contacts.get_metacontacts_big_brother( shown_family) big_brother_jid = big_brother_data['jid'] big_brother_account = big_brother_data['account'] - if big_brother_jid != jid: + if big_brother_jid != jid or big_brother_account != account: # We are adding a child contact if contact.show in ('offline', 'error') and \ - not showOffline and not gajim.awaiting_events[account].has_key(jid): + not showOffline and len(gajim.events.get_events(account, jid)) == 0: return parent_iters = self.get_contact_iter(big_brother_jid, big_brother_account) @@ -280,7 +290,8 @@ class RosterWindow: if (contact.show in ('offline', 'error') or hide) and \ not showOffline and (not _('Transports') in contact.groups or \ gajim.connections[account].connected < 2) and \ - not gajim.awaiting_events[account].has_key(jid): + len(gajim.events.get_events(account, jid)) == 0 and \ + not _('Not in Roster') in contact.groups: return # Remove brother contacts that are already in roster to add them @@ -331,6 +342,38 @@ class RosterWindow: data['jid']) self.add_contact_to_roster(data['jid'], data['account']) + def get_self_contact_iter(self, account): + model = self.tree.get_model() + iterAcct = self.get_account_iter(account) + iter = model.iter_children(iterAcct) + if not iter: + return None + if model[iter][C_TYPE] == 'self_contact': + return iter + return None + + def add_self_contact(self, account): + jid = gajim.get_jid_from_account(account) + if self.get_self_contact_iter(account): + self.draw_contact(jid, account) + self.draw_avatar(jid, account) + return + + contact = gajim.contacts.get_first_contact_from_jid(account, jid) + if not contact: + return + showOffline = gajim.config.get('showoffline') + if (contact.show in ('offline', 'error')) and not showOffline and \ + len(gajim.events.get_events(account, jid)) == 0: + return + + model = self.tree.get_model() + iterAcct = self.get_account_iter(account) + model.append(iterAcct, (None, gajim.nicks[account], 'self_contact', jid, + account, False, None)) + self.draw_contact(jid, account) + self.draw_avatar(jid, account) + def add_transport_to_roster(self, account, transport): c = gajim.contacts.create_contact(jid = transport, name = transport, groups = [_('Transports')], show = 'offline', status = 'offline', @@ -339,6 +382,9 @@ class RosterWindow: gajim.interface.roster.add_contact_to_roster(transport, account) def really_remove_contact(self, contact, account): + if not gajim.interface.instances.has_key(account): + # Account has been deleted during the timeout that called us + return if contact.jid in gajim.newly_added[account]: return if contact.jid.find('@') < 1 and gajim.connections[account].connected > 1: @@ -359,7 +405,7 @@ class RosterWindow: if (contact.show in ('offline', 'error') or hide) and \ not showOffline and (not _('Transports') in contact.groups or \ gajim.connections[account].connected < 2) and \ - not gajim.awaiting_events[account].has_key(contact.jid): + len(gajim.events.get_events(account, contact.jid, ['chat'])) == 0: self.remove_contact(contact, account) else: self.draw_contact(contact.jid, account) @@ -416,8 +462,9 @@ class RosterWindow: transport: transport iconset doesn't contain all icons, so we fall back to jabber one''' transport = gajim.get_transport_name_from_jid(jid) - if transport and icon_name in \ - self.transports_state_images[size][transport]: + if transport and self.transports_state_images.has_key(size) and \ + self.transports_state_images[size].has_key(transport) and icon_name in \ + self.transports_state_images[size][transport]: return self.transports_state_images[size][transport] return self.jabber_state_images[size] @@ -468,7 +515,7 @@ class RosterWindow: iter = iters[0] # choose the icon with the first iter icon_name = helpers.get_icon_name_to_show(contact, account) - # look if anotherresource has awaiting events + # look if another resource has awaiting events for c in contact_instances: c_icon_name = helpers.get_icon_name_to_show(c, account) if c_icon_name == 'message': @@ -481,15 +528,18 @@ class RosterWindow: if icon_name in ('error', 'offline'): # get the icon from the first child as they are sorted by show child_jid = model[child_iter][C_JID].decode('utf-8') + child_account = model[child_iter][C_ACCOUNT].decode('utf-8') child_contact = gajim.contacts.get_contact_with_highest_priority( - account, child_jid) - child_icon_name = helpers.get_icon_name_to_show(child_contact, account) + child_account, child_jid) + child_icon_name = helpers.get_icon_name_to_show(child_contact, + child_account) if child_icon_name not in ('error', 'not in roster'): icon_name = child_icon_name while child_iter: # a child has awaiting messages ? child_jid = model[child_iter][C_JID].decode('utf-8') - if gajim.awaiting_events[account].has_key(child_jid): + child_account = model[child_iter][C_ACCOUNT].decode('utf-8') + if len(gajim.events.get_events(child_account, child_jid)): icon_name = 'message' break child_iter = model.iter_next(child_iter) @@ -521,7 +571,8 @@ class RosterWindow: # parent is not a contact return parent_jid = model[parent_iter][C_JID].decode('utf-8') - self.draw_contact(parent_jid, account) + parent_account = model[parent_iter][C_ACCOUNT].decode('utf-8') + self.draw_contact(parent_jid, parent_account) def draw_avatar(self, jid, account): '''draw the avatar''' @@ -588,6 +639,13 @@ class RosterWindow: gajim.interface.instances[account]['xml_console'] = \ dialogs.XMLConsoleWindow(account) + def on_privacy_lists_menuitem_activate(self, widget, account): + if gajim.interface.instances[account].has_key('privacy_lists'): + gajim.interface.instances[account]['privacy_lists'].window.present() + else: + gajim.interface.instances[account]['privacy_lists'] = \ + dialogs.PrivacyListsWindow(account) + def on_set_motd_menuitem_activate(self, widget, account): server = gajim.config.get_per('accounts', account, 'hostname') server += '/announce/motd' @@ -606,14 +664,11 @@ class RosterWindow: def on_history_manager_menuitem_activate(self, widget): if os.name == 'nt': if os.path.exists('history_manager.exe'): # user is running stable - os.startfile('history_manager.exe') + helpers.exec_command('history_manager.exe') else: # user is running svn - try: - os.startfile('history_manager.py') - except: # user doesn't have pywin32, too bad for him - pass + helpers.exec_command('python history_manager.py') else: # Unix user - os.system('python history_manager.py &') + helpers.exec_command('python history_manager.py &') def get_and_connect_advanced_menuitem_menu(self, account): '''adds FOR ACCOUNT options''' @@ -623,6 +678,7 @@ class RosterWindow: send_single_message_menuitem = xml.get_widget( 'send_single_message_menuitem') xml_console_menuitem = xml.get_widget('xml_console_menuitem') + privacy_lists_menuitem = xml.get_widget('privacy_lists_menuitem') administrator_menuitem = xml.get_widget('administrator_menuitem') send_server_message_menuitem = xml.get_widget( 'send_server_message_menuitem') @@ -636,6 +692,9 @@ class RosterWindow: xml_console_menuitem.connect('activate', self.on_xml_console_menuitem_activate, account) + privacy_lists_menuitem.connect('activate', + self.on_privacy_lists_menuitem_activate, account) + send_server_message_menuitem.connect('activate', self.on_send_server_message_menuitem_activate, account) @@ -716,8 +775,7 @@ class RosterWindow: add_sub_menu = gtk.Menu() disco_sub_menu = gtk.Menu() new_chat_sub_menu = gtk.Menu() - profile_avatar_sub_menu = gtk.Menu() - + for account in gajim.connections: if gajim.connections[account].connected <= 1: # if offline or connecting @@ -741,16 +799,12 @@ class RosterWindow: add_item = gtk.MenuItem(_('to %s account') % account, False) add_sub_menu.append(add_item) add_item.connect('activate', self.on_add_new_contact, account) - add_new_contact_menuitem.set_submenu(add_sub_menu) - add_sub_menu.show_all() # disco disco_item = gtk.MenuItem(_('using %s account') % account, False) disco_sub_menu.append(disco_item) disco_item.connect('activate', self.on_service_disco_menuitem_activate, account) - service_disco_menuitem.set_submenu(disco_sub_menu) - disco_sub_menu.show_all() # new chat new_chat_item = gtk.MenuItem(_('using account %s') % account, @@ -758,17 +812,13 @@ class RosterWindow: new_chat_sub_menu.append(new_chat_item) new_chat_item.connect('activate', self.on_new_chat_menuitem_activate, account) - new_chat_menuitem.set_submenu(new_chat_sub_menu) - new_chat_sub_menu.show_all() - - # profile, avatar - profile_avatar_item = gtk.MenuItem(_('of account %s') % account, - False) - profile_avatar_sub_menu.append(profile_avatar_item) - profile_avatar_item.connect('activate', - self.on_profile_avatar_menuitem_activate, account) - profile_avatar_menuitem.set_submenu(profile_avatar_sub_menu) - profile_avatar_sub_menu.show_all() + + add_new_contact_menuitem.set_submenu(add_sub_menu) + add_sub_menu.show_all() + service_disco_menuitem.set_submenu(disco_sub_menu) + disco_sub_menu.show_all() + new_chat_menuitem.set_submenu(new_chat_sub_menu) + new_chat_sub_menu.show_all() elif connected_accounts == 1: # user has only one account for account in gajim.connections: @@ -796,12 +846,6 @@ class RosterWindow: gtk.keysyms.n, gtk.gdk.CONTROL_MASK, gtk.ACCEL_VISIBLE) self.have_new_chat_accel = True - # profile, avatar - if not self.profile_avatar_menuitem_handler_id: - self.profile_avatar_menuitem_handler_id = \ - profile_avatar_menuitem.connect('activate', self.\ - on_profile_avatar_menuitem_activate, account) - break # No other account connected if connected_accounts == 0: @@ -810,17 +854,45 @@ class RosterWindow: join_gc_menuitem.set_sensitive(False) add_new_contact_menuitem.set_sensitive(False) service_disco_menuitem.set_sensitive(False) - profile_avatar_menuitem.set_sensitive(False) else: # we have one or more connected accounts new_chat_menuitem.set_sensitive(True) join_gc_menuitem.set_sensitive(True) add_new_contact_menuitem.set_sensitive(True) service_disco_menuitem.set_sensitive(True) - profile_avatar_menuitem.set_sensitive(True) # show the 'manage gc bookmarks' item newitem = gtk.SeparatorMenuItem() # separator gc_sub_menu.append(newitem) + connected_accounts_with_vcard = [] + for account in gajim.connections: + if gajim.connections[account].connected > 1 and \ + gajim.connections[account].vcard_supported: + connected_accounts_with_vcard.append(account) + if len(connected_accounts_with_vcard) > 1: + # 2 or more accounts? make submenus + profile_avatar_sub_menu = gtk.Menu() + for account in connected_accounts_with_vcard: + # profile, avatar + profile_avatar_item = gtk.MenuItem(_('of account %s') % account, + False) + profile_avatar_sub_menu.append(profile_avatar_item) + profile_avatar_item.connect('activate', + self.on_profile_avatar_menuitem_activate, account) + profile_avatar_menuitem.set_submenu(profile_avatar_sub_menu) + profile_avatar_sub_menu.show_all() + elif len(connected_accounts_with_vcard) == 1: # user has only one account + account = connected_accounts_with_vcard[0] + # profile, avatar + if not self.profile_avatar_menuitem_handler_id: + self.profile_avatar_menuitem_handler_id = \ + profile_avatar_menuitem.connect('activate', self.\ + on_profile_avatar_menuitem_activate, account) + + if len(connected_accounts_with_vcard) == 0: + profile_avatar_menuitem.set_sensitive(False) + else: + profile_avatar_menuitem.set_sensitive(True) + newitem = gtk.ImageMenuItem(_('Manage Bookmarks...')) img = gtk.image_new_from_stock(gtk.STOCK_PREFERENCES, gtk.ICON_SIZE_MENU) @@ -922,6 +994,7 @@ class RosterWindow: '''adds contacts of group to roster treeview''' for jid in gajim.contacts.get_jid_list(account): self.add_contact_to_roster(jid, account) + self.draw_account(account) def fire_up_unread_messages_events(self, account): '''reads from db the unread messages, and fire them up''' @@ -995,7 +1068,7 @@ class RosterWindow: contact.show = show contact.status = status if show in ('offline', 'error') and \ - not gajim.awaiting_events[account].has_key(contact.jid): + len(gajim.events.get_events(account, contact.jid)) == 0: if len(contact_instances) > 1: # if multiple resources gajim.contacts.remove_contact(account, contact) @@ -1068,7 +1141,7 @@ class RosterWindow: except: self.tooltip.hide_tooltip() return - if model[iter][C_TYPE] == 'contact': + if model[iter][C_TYPE] in ('contact', 'self_contact'): # we're on a contact entry in the roster account = model[iter][C_ACCOUNT].decode('utf-8') jid = model[iter][C_JID].decode('utf-8') @@ -1130,26 +1203,41 @@ class RosterWindow: '''When we want to modify the agent registration''' gajim.connections[account].request_register_agent_info(contact.jid) - def on_remove_agent(self, widget, contact, account): - '''When an agent is requested to log in or off''' - if gajim.config.get_per('accounts', account, 'hostname') == contact.jid: - # We remove the server contact - # remove it from treeview - gajim.connections[account].unsubscribe(contact.jid) - self.remove_contact(contact, account) - gajim.contacts.remove_contact(account, contact) - return + def on_remove_agent(self, widget, list_): + '''When an agent is requested to log in or off. list_ is a list of + (contact, account) tuple''' + for (contact, account) in list_: + if gajim.config.get_per('accounts', account, 'hostname') == \ + contact.jid: + # We remove the server contact + # remove it from treeview + gajim.connections[account].unsubscribe(contact.jid) + self.remove_contact(contact, account) + gajim.contacts.remove_contact(account, contact) + return - def remove(widget, contact, account): + def remove(widget, list_): self.dialog.destroy() - full_jid = contact.get_full_jid() - gajim.connections[account].unsubscribe_agent(full_jid) - # remove transport from treeview - self.remove_contact(contact, account) - gajim.contacts.remove_jid(account, contact.jid) - gajim.contacts.remove_contact(account, contact) + for (contact, account) in list_: + full_jid = contact.get_full_jid() + gajim.connections[account].unsubscribe_agent(full_jid) + # remove transport from treeview + self.remove_contact(contact, account) + gajim.contacts.remove_jid(account, contact.jid) + gajim.contacts.remove_contact(account, contact) - self.dialog = dialogs.ConfirmationDialog(_('Transport "%s" will be removed') % contact.jid, _('You will no longer be able to send and receive messages to contacts from this transport.'), on_response_ok = (remove, contact, account)) + if len(list_) == 1: + pritext = _('Transport "%s" will be removed') % contact.jid + sectext = _('You will no longer be able to send and receive messages to contacts from this transport.') + else: + pritext = _('Transports will be removed') + jids = '' + for (contact, account) in list_: + jids += '\n ' + contact.get_shown_name() + ',' + jids = jids[:-1] + '.' + sectext = _('You will no longer be able to send and receive messages to contacts from these transports:%s') % jids + self.dialog = dialogs.ConfirmationDialog(pritext, sectext, + on_response_ok = (remove, list_)) def on_rename(self, widget, iter, path): # this function is called either by F2 or by Rename menuitem @@ -1158,7 +1246,7 @@ class RosterWindow: # focus-in callback checks on this var and if is NOT None # it redraws the selected contact resulting in stopping our rename # procedure. So set this to None to stop that - self._last_selected_contact = None + self._last_selected_contact = [] model = self.tree.get_model() row_type = model[iter][C_TYPE] @@ -1211,8 +1299,8 @@ class RosterWindow: keys_str += jid + ' ' + keys[jid] + ' ' gajim.config.set_per('accounts', account, 'attached_gpg_keys', keys_str) - def on_edit_groups(self, widget, contact, account): - dlg = dialogs.EditGroupsDialog(contact, account) + def on_edit_groups(self, widget, list_): + dlg = dialogs.EditGroupsDialog(list_) dlg.run() def on_history(self, widget, contact, account): @@ -1228,7 +1316,10 @@ class RosterWindow: if contact is None: dialogs.SingleMessageWindow(account, action = 'send') else: - dialogs.SingleMessageWindow(account, contact.jid, 'send') + jid = contact.jid + if contact.jid == gajim.get_jid_from_account(account): + jid += '/' + contact.resource + dialogs.SingleMessageWindow(account, jid, 'send') def on_send_file_menuitem_activate(self, widget, account, contact): gajim.interface.instances['file_transfers'].show_file_send_request( @@ -1243,6 +1334,7 @@ class RosterWindow: jid = model[iter][C_JID].decode('utf-8') path = model.get_path(iter) account = model[iter][C_ACCOUNT].decode('utf-8') + our_jid = jid == gajim.get_jid_from_account(account) contact = gajim.contacts.get_contact_with_highest_priority(account, jid) if not contact: return @@ -1254,6 +1346,7 @@ class RosterWindow: start_chat_menuitem = xml.get_widget('start_chat_menuitem') send_single_message_menuitem = xml.get_widget( 'send_single_message_menuitem') + invite_menuitem = xml.get_widget('invite_menuitem') rename_menuitem = xml.get_widget('rename_menuitem') edit_groups_menuitem = xml.get_widget('edit_groups_menuitem') # separator has with send file, assign_openpgp_key_menuitem, etc.. @@ -1266,20 +1359,24 @@ class RosterWindow: add_special_notification_menuitem.hide() add_special_notification_menuitem.set_no_show_all(True) - - # add a special img for rename menuitem - path_to_kbd_input_img = os.path.join(gajim.DATA_DIR, 'pixmaps', - 'kbd_input.png') - img = gtk.Image() - img.set_from_file(path_to_kbd_input_img) - rename_menuitem.set_image(img) - # skip a separator + if not our_jid: + # add a special img for rename menuitem + path_to_kbd_input_img = os.path.join(gajim.DATA_DIR, 'pixmaps', + 'kbd_input.png') + img = gtk.Image() + img.set_from_file(path_to_kbd_input_img) + rename_menuitem.set_image(img) + + above_subscription_separator = xml.get_widget( + 'above_subscription_separator') subscription_menuitem = xml.get_widget('subscription_menuitem') send_auth_menuitem, ask_auth_menuitem, revoke_auth_menuitem =\ subscription_menuitem.get_submenu().get_children() add_to_roster_menuitem = xml.get_widget('add_to_roster_menuitem') - remove_from_roster_menuitem = xml.get_widget('remove_from_roster_menuitem') + remove_from_roster_menuitem = xml.get_widget( + 'remove_from_roster_menuitem') + # skip a separator information_menuitem = xml.get_widget('information_menuitem') history_menuitem = xml.get_widget('history_menuitem') @@ -1317,9 +1414,39 @@ class RosterWindow: send_single_message_menuitem.connect('activate', self.on_send_single_message_menuitem_activate, account, contact) + + submenu = gtk.Menu() + invite_menuitem.set_submenu(submenu) + menuitem = gtk.ImageMenuItem(_('_New room')) + icon = gtk.image_new_from_stock(gtk.STOCK_NEW, gtk.ICON_SIZE_MENU) + menuitem.set_image(icon) + menuitem.connect('activate', self.on_invite_to_new_room, [(contact, + account)]) + contact_transport = gajim.get_transport_name_from_jid(contact.jid) + t = contact_transport or 'jabber' # transform None in 'jabber' + if not gajim.connections[account].muc_jid.has_key(t): + menuitem.set_sensitive(False) + submenu.append(menuitem) + rooms = [] # a list of (room_jid, account) tuple + for gc_control in gajim.interface.msg_win_mgr.get_controls( + message_control.TYPE_GC): + acct = gc_control.account + room_jid = gc_control.room_jid + if gajim.gc_connected[acct].has_key(room_jid) and \ + gajim.gc_connected[acct][room_jid] and \ + contact_transport == gajim.get_transport_name_from_jid(room_jid): + rooms.append((room_jid, acct)) + if len(rooms): + item = gtk.SeparatorMenuItem() # separator + submenu.append(item) + for (room_jid, acct) in rooms: + menuitem = gtk.MenuItem(room_jid.split('@')[0]) + menuitem.connect('activate', self.on_invite_to_room, + [(contact, account)], room_jid, acct) + submenu.append(menuitem) rename_menuitem.connect('activate', self.on_rename, iter, path) remove_from_roster_menuitem.connect('activate', self.on_req_usub, - contact, account) + [(contact, account)]) information_menuitem.connect('activate', self.on_info, contact, account) history_menuitem.connect('activate', self.on_history, contact, @@ -1331,8 +1458,8 @@ class RosterWindow: assign_openpgp_key_menuitem.set_no_show_all(False) add_to_roster_menuitem.hide() add_to_roster_menuitem.set_no_show_all(True) - edit_groups_menuitem.connect('activate', self.on_edit_groups, contact, - account) + edit_groups_menuitem.connect('activate', self.on_edit_groups, [( + contact,account)]) if gajim.config.get('usegpg'): assign_openpgp_key_menuitem.connect('activate', @@ -1370,6 +1497,14 @@ class RosterWindow: add_to_roster_menuitem.connect('activate', self.on_add_to_roster, contact, account) + # Remove many items when it's self contact row + if our_jid: + for menuitem in (rename_menuitem, edit_groups_menuitem, + above_subscription_separator, subscription_menuitem, + remove_from_roster_menuitem): + menuitem.set_no_show_all(True) + menuitem.hide() + # Unsensitive many items when account is offline if gajim.connections[account].connected < 2: for widget in [start_chat_menuitem, send_single_message_menuitem, @@ -1378,16 +1513,132 @@ class RosterWindow: remove_from_roster_menuitem]: widget.set_sensitive(False) - #FIXME: create menu for sub contacts - event_button = gtkgui_helpers.get_possible_button_event(event) roster_contact_context_menu.attach_to_widget(self.tree, None) roster_contact_context_menu.connect('selection-done', gtkgui_helpers.destroy_widget) + roster_contact_context_menu.show_all() roster_contact_context_menu.popup(None, None, None, event_button, event.time) - roster_contact_context_menu.show_all() + + def on_invite_to_new_room(self, widget, list_): + account_list = [] + jid_list = [] + for (contact, account) in list_: + if contact.jid not in jid_list: + jid_list.append(contact.jid) + if account not in account_list: + account_list.append(account) + # transform None in 'jabber' + type_ = gajim.get_transport_name_from_jid(jid_list[0]) or 'jabber' + for account in account_list: + if gajim.connections[account].muc_jid[type_]: + # create the room on this muc server + if gajim.interface.instances[account].has_key('join_gc'): + gajim.interface.instances[account]['join_gc'].window.destroy() + try: + gajim.interface.instances[account]['join_gc'] = \ + dialogs.JoinGroupchatWindow(account, + server = gajim.connections[account].muc_jid[type_], + automatic = {'invities': jid_list}) + except RuntimeError: + continue + break + + def on_invite_to_room(self, widget, list_, room_jid, account): + for (contact, acct) in list_: + gajim.connections[account].send_invite(room_jid, contact.jid) + + + def make_multiple_contact_menu(self, event, iters): + '''Make group's popup menu''' + model = self.tree.get_model() + list_ = [] # list of (jid, account) tuples + one_account_offline = False + connected_accounts = [] + contacts_transport = -1 + # -1 is at start, False when not from the same, None when jabber + for iter in iters: + jid = model[iter][C_JID].decode('utf-8') + account = model[iter][C_ACCOUNT].decode('utf-8') + if gajim.connections[account].connected < 2: + one_account_offline = True + elif not account in connected_accounts: + connected_accounts.append(account) + contact = gajim.contacts.get_contact_with_highest_priority(account, + jid) + transport = gajim.get_transport_name_from_jid(contact.jid) + if contacts_transport == -1: + contacts_transport = transport + if contacts_transport != transport: + contacts_transport = False + list_.append((contact, account)) + + menu = gtk.Menu() + + remove_item = gtk.ImageMenuItem(_('_Remove from Roster')) + icon = gtk.image_new_from_stock(gtk.STOCK_REMOVE, gtk.ICON_SIZE_MENU) + remove_item.set_image(icon) + menu.append(remove_item) + remove_item.connect('activate', self.on_req_usub, list_) + + invite_item = gtk.ImageMenuItem(_('In_vite to')) + icon = gtk.image_new_from_stock(gtk.STOCK_GO_BACK, gtk.ICON_SIZE_MENU) + invite_item.set_image(icon) + if contacts_transport == False: + # they are not all from the same transport + invite_item.set_sensitive(False) + else: + + sub_menu = gtk.Menu() + menuitem = gtk.ImageMenuItem(_('_New room')) + icon = gtk.image_new_from_stock(gtk.STOCK_NEW, gtk.ICON_SIZE_MENU) + menuitem.set_image(icon) + menuitem.connect('activate', self.on_invite_to_new_room, list_) + muc_jid = {} + c_t = contacts_transport or 'jabber' # transform None in 'jabber' + for account in connected_accounts: + for t in gajim.connections[account].muc_jid: + muc_jid[t] = gajim.connections[account].muc_jid[t] + if not muc_jid.has_key(c_t): + menuitem.set_sensitive(False) + sub_menu.append(menuitem) + rooms = [] # a list of (room_jid, account) tuple + for gc_control in gajim.interface.msg_win_mgr.get_controls( + message_control.TYPE_GC): + account = gc_control.account + room_jid = gc_control.room_jid + if gajim.gc_connected[account].has_key(room_jid) and \ + gajim.gc_connected[account][room_jid] and \ + contacts_transport == gajim.get_transport_name_from_jid(room_jid): + rooms.append((room_jid, account)) + if len(rooms): + item = gtk.SeparatorMenuItem() # separator + sub_menu.append(item) + for (room_jid, account) in rooms: + menuitem = gtk.MenuItem(room_jid.split('@')[0]) + menuitem.connect('activate', self.on_invite_to_room, list_, + room_jid, account) + sub_menu.append(menuitem) + + invite_item.set_submenu(sub_menu) + menu.append(invite_item) + + edit_groups_item = gtk.MenuItem(_('Edit _Groups')) + menu.append(edit_groups_item) + edit_groups_item.connect('activate', self.on_edit_groups, list_) + + # unsensitive if one account is not connected + if one_account_offline: + remove_item.set_sensitive(False) + + event_button = gtkgui_helpers.get_possible_button_event(event) + + menu.attach_to_widget(self.tree, None) + menu.connect('selection-done', gtkgui_helpers.destroy_widget) + menu.show_all() + menu.popup(None, None, None, event_button, event.time) def make_group_menu(self, event, iter): '''Make group's popup menu''' @@ -1418,8 +1669,8 @@ class RosterWindow: menu.attach_to_widget(self.tree, None) menu.connect('selection-done', gtkgui_helpers.destroy_widget) - menu.popup(None, None, None, event_button, event.time) menu.show_all() + menu.popup(None, None, None, event_button, event.time) def make_transport_menu(self, event, iter): '''Make transport's popup menu''' @@ -1476,7 +1727,7 @@ class RosterWindow: icon = gtk.image_new_from_stock(gtk.STOCK_REMOVE, gtk.ICON_SIZE_MENU) item.set_image(icon) menu.append(item) - item.connect('activate', self.on_remove_agent, contact, account) + item.connect('activate', self.on_remove_agent, [(contact, account)]) if not is_connected: item.set_sensitive(False) @@ -1484,8 +1735,8 @@ class RosterWindow: menu.attach_to_widget(self.tree, None) menu.connect('selection-done', gtkgui_helpers.destroy_widget) - menu.popup(None, None, None, event_button, event.time) menu.show_all() + menu.popup(None, None, None, event_button, event.time) def on_edit_account(self, widget, account): if gajim.interface.instances[account].has_key('account_modification'): @@ -1495,6 +1746,15 @@ class RosterWindow: gajim.interface.instances[account]['account_modification'] = \ config.AccountModificationWindow(account) + def on_open_gmail_inbox(self, widget, account): + if gajim.config.get_per('accounts', account, 'savepass'): + url = ('http://www.google.com/accounts/ServiceLoginAuth?service=mail&Email=%s&Passwd=%s&continue=https://mail.google.com/mail') %\ + (urllib.quote(gajim.config.get_per('accounts', account, 'name')), + urllib.quote(gajim.config.get_per('accounts', account, 'password'))) + else: + url = ('http://mail.google.com/') + helpers.launch_browser_mailer('url', url) + def on_change_status_message_activate(self, widget, account): show = gajim.SHOW_LIST[gajim.connections[account].connected] dlg = dialogs.ChangeStatusMessageDialog(show) @@ -1513,14 +1773,14 @@ class RosterWindow: xml = gtkgui_helpers.get_glade('account_context_menu.glade') account_context_menu = xml.get_widget('account_context_menu') - childs = account_context_menu.get_children() - status_menuitem = childs[0] - join_group_chat_menuitem = childs[1] - new_message_menuitem = childs[2] - add_contact_menuitem = childs[3] - service_discovery_menuitem = childs[4] - edit_account_menuitem = childs[5] + status_menuitem = xml.get_widget('status_menuitem') + join_group_chat_menuitem =xml.get_widget('join_group_chat_menuitem') + open_gmail_inbox_menuitem = xml.get_widget('open_gmail_inbox_menuitem') + new_message_menuitem = xml.get_widget('new_message_menuitem') + add_contact_menuitem = xml.get_widget('add_contact_menuitem') + service_discovery_menuitem = xml.get_widget('service_discovery_menuitem') + edit_account_menuitem = xml.get_widget('edit_account_menuitem') sub_menu = gtk.Menu() status_menuitem.set_submenu(sub_menu) @@ -1552,6 +1812,13 @@ class RosterWindow: sub_menu.append(item) item.connect('activate', self.change_status, account, 'offline') + if gajim.config.get_per('accounts', account, 'hostname') not in gajim.gmail_domains: + open_gmail_inbox_menuitem.set_no_show_all(True) + open_gmail_inbox_menuitem.hide() + else: + open_gmail_inbox_menuitem.connect('activate', self.on_open_gmail_inbox, + account) + edit_account_menuitem.connect('activate', self.on_edit_account, account) add_contact_menuitem.connect('activate', self.on_add_new_contact, account) service_discovery_menuitem.connect('activate', @@ -1602,11 +1869,11 @@ class RosterWindow: menu.attach_to_widget(self.tree, None) menu.connect('selection-done', gtkgui_helpers.destroy_widget) - menu.popup(None, self.tree, None, event_button, event.time) menu.show_all() + menu.popup(None, self.tree, None, event_button, event.time) def on_add_to_roster(self, widget, contact, account): - dialogs.AddNewContactWindow(account, contact.jid) + dialogs.AddNewContactWindow(account, contact.jid, contact.name) def authorize(self, widget, jid, account): '''Authorize a contact (by re-sending auth menuitem)''' @@ -1622,7 +1889,7 @@ class RosterWindow: else: group = [] gajim.connections[account].request_subscription(jid, txt, pseudo, group, - auto_auth) + auto_auth, gajim.nicks[account]) contact = gajim.contacts.get_contact_with_highest_priority(account, jid) if not contact: keyID = '' @@ -1664,57 +1931,74 @@ _('If "%s" accepts this request you will know his or her status.') % jid) self.tree.get_selection().unselect_all() elif event.keyval == gtk.keysyms.F2: treeselection = self.tree.get_selection() - model, iter = treeselection.get_selected() - if not iter: + model, list_of_paths = treeselection.get_selected_rows() + if len(list_of_paths) != 1: return - type = model[iter][C_TYPE] + path = list_of_paths[0] + type = model[path][C_TYPE] if type in ('contact', 'group', 'agent'): - path = model.get_path(iter) - self.on_rename(widget, iter, path) + if not model[path][C_EDITABLE]: + # we are NOT already renaming it + iter = model.get_iter(path) + self.on_rename(widget, iter, path) elif event.keyval == gtk.keysyms.Delete: treeselection = self.tree.get_selection() - model, iter = treeselection.get_selected() - if not iter: + model, list_of_paths = treeselection.get_selected_rows() + if not len(list_of_paths): return - jid = model[iter][C_JID].decode('utf-8') - account = model[iter][C_ACCOUNT].decode('utf-8') - type = model[iter][C_TYPE] - if type in ('account', 'group'): + type = model[list_of_paths[0]][C_TYPE] + list_ = [] + for path in list_of_paths: + if model[path][C_TYPE] != type: + return + jid = model[path][C_JID].decode('utf-8') + account = model[path][C_ACCOUNT].decode('utf-8') + contact = gajim.contacts.get_contact_with_highest_priority(account, + jid) + list_.append((contact, account)) + if type in ('account', 'group', 'self_contact'): return - contact = gajim.contacts.get_contact_with_highest_priority(account, - jid) if type == 'contact': - self.on_req_usub(widget, contact, account) + self.on_req_usub(widget, list_) elif type == 'agent': - self.on_remove_agent(widget, contact, account) + self.on_remove_agent(widget, list_) - def show_appropriate_context_menu(self, event, iter): + def show_appropriate_context_menu(self, event, iters): + # iters must be all of the same type model = self.tree.get_model() - type = model[iter][C_TYPE] - if type == 'group': - self.make_group_menu(event, iter) - elif type == 'agent': - self.make_transport_menu(event, iter) - elif type == 'contact': - self.make_contact_menu(event, iter) - elif type == 'account': - self.make_account_menu(event, iter) + type = model[iters[0]][C_TYPE] + for iter in iters[1:]: + if model[iter][C_TYPE] != type: + return + if type == 'group' and len(iters) == 1: + self.make_group_menu(event, iters[0]) + elif type == 'agent' and len(iters) == 1: + self.make_transport_menu(event, iters[0]) + elif type in ('contact', 'self_contact') and len(iters) == 1: + self.make_contact_menu(event, iters[0]) + elif type == 'contact': + self.make_multiple_contact_menu(event, iters) + elif type == 'account' and len(iters) == 1: + self.make_account_menu(event, iters[0]) def show_treeview_menu(self, event): try: - store, iter = self.tree.get_selection().get_selected() + model, list_of_paths = self.tree.get_selection().get_selected_rows() except TypeError: self.tree.get_selection().unselect_all() return - if not iter: + if not len(list_of_paths): # no row is selected return - model = self.tree.get_model() - path = model.get_path(iter) - self.tree.get_selection().select_path(path) - - self.show_appropriate_context_menu(event, iter) + if len(list_of_paths) > 1: + iters = [] + for path in list_of_paths: + iters.append(model.get_iter(path)) + else: + path = list_of_paths[0] + iters = [model.get_iter(path)] + self.show_appropriate_context_menu(event, iters) return True @@ -1729,21 +2013,30 @@ _('If "%s" accepts this request you will know his or her status.') % jid) return False if event.button == 3: # Right click - self.tree.get_selection().select_path(path) - model = self.tree.get_model() - iter = model.get_iter(path) - self.show_appropriate_context_menu(event, iter) - return True + try: + model, list_of_paths = self.tree.get_selection().get_selected_rows() + except TypeError: + list_of_paths = [] + pass + if path not in list_of_paths: + self.tree.get_selection().unselect_all() + self.tree.get_selection().select_path(path) + return self.show_treeview_menu(event) elif event.button == 2: # Middle click - self.tree.get_selection().select_path(path) - model = self.tree.get_model() - iter = model.get_iter(path) - type = model[iter][C_TYPE] - if type in ('agent', 'contact'): + try: + model, list_of_paths = self.tree.get_selection().get_selected_rows() + except TypeError: + list_of_paths = [] + pass + if list_of_paths != [path]: + self.tree.get_selection().unselect_all() + self.tree.get_selection().select_path(path) + type = model[path][C_TYPE] + if type in ('agent', 'contact', 'self_contact'): self.on_roster_treeview_row_activated(widget, path) elif type == 'account': - account = model[iter][C_ACCOUNT].decode('utf-8') + account = model[path][C_ACCOUNT].decode('utf-8') if account != 'all': show = gajim.connections[account].connected if show > 1: # We are connected @@ -1766,51 +2059,90 @@ _('If "%s" accepts this request you will know his or her status.') % jid) elif event.button == 1: # Left click model = self.tree.get_model() - iter = model.get_iter(path) - type = model[iter][C_TYPE] - if type in ('group', 'contact'): - if x < 27: # first cell in 1st column (the arrow SINGLE clicked) + type = model[path][C_TYPE] + if type == 'group' and x < 27: + # first cell in 1st column (the arrow SINGLE clicked) + if (self.tree.row_expanded(path)): + self.tree.collapse_row(path) + else: + self.tree.expand_row(path, False) + + elif type == 'contact' and x < 27: + account = model[path][C_ACCOUNT].decode('utf-8') + jid = model[path][C_JID].decode('utf-8') + # first cell in 1st column (the arrow SINGLE clicked) + iters = self.get_contact_iter(jid, account) + for iter in iters: + path = model.get_path(iter) if (self.tree.row_expanded(path)): self.tree.collapse_row(path) else: self.tree.expand_row(path, False) - def on_req_usub(self, widget, contact, account): - '''Remove a contact''' - def on_ok(widget, contact, account): + def on_req_usub(self, widget, list_): + '''Remove a contact. list_ is a list of (contact, account) tuples''' + def on_ok(widget, list_): self.dialog.destroy() remove_auth = True - if contact.sub != 'to' and self.dialog.is_checked(): - remove_auth = False - gajim.connections[account].unsubscribe(contact.jid, remove_auth) - for c in gajim.contacts.get_contact(account, contact.jid): - self.remove_contact(c, account) - gajim.contacts.remove_jid(account, c.jid) - if not remove_auth and contact.sub == 'both': - contact.name = '' - contact.groups = [] - contact.sub = 'from' - gajim.contacts.add_contact(account, contact) - self.add_contact_to_roster(contact.jid, account) - elif gajim.interface.msg_win_mgr.has_window(contact.jid, account) or \ - gajim.awaiting_events[account].has_key(contact.jid): - c = gajim.contacts.create_contact(jid = contact.jid, - name = '', groups = [_('Not in Roster')], - show = 'not in roster', status = '', ask = 'none', - keyID = contact.keyID) - gajim.contacts.add_contact(account, c) - self.add_contact_to_roster(contact.jid, account) - pritext = _('Contact "%s" will be removed from your roster') % \ - contact.get_shown_name() - if contact.sub == 'to': - self.dialog = dialogs.ConfirmationDialog(pritext, - _('By removing this contact you also remove authorization resulting in him or her always seeing you as offline.'), - on_response_ok = (on_ok, contact, account)) + if len(list_) == 1: + contact = list_[0][0] + if contact.sub != 'to' and self.dialog.is_checked(): + remove_auth = False + for (contact, account) in list_: + gajim.connections[account].unsubscribe(contact.jid, remove_auth) + for c in gajim.contacts.get_contact(account, contact.jid): + self.remove_contact(c, account) + gajim.contacts.remove_jid(account, c.jid) + need_readd = False + if not remove_auth and contact.sub == 'both': + contact.name = '' + contact.groups = [] + contact.sub = 'from' + gajim.contacts.add_contact(account, contact) + self.add_contact_to_roster(contact.jid, account) + elif len(gajim.events.get_events(account, contact.jid)): + need_readd = True + elif gajim.interface.msg_win_mgr.has_window(contact.jid, account): + if _('Not in Roster') in contact.groups: + # Close chat window + msg_win = gajim.interface.msg_win_mgr.get_window(contact.jid, + account) + ctrl = gajim.interface.msg_win_mgr.get_control(contact.jid, + account) + msg_win.remove_tab(ctrl) + else: + need_readd = True + if need_readd: + c = gajim.contacts.create_contact(jid = contact.jid, + name = '', groups = [_('Not in Roster')], + show = 'not in roster', status = '', ask = 'none', + keyID = contact.keyID) + gajim.contacts.add_contact(account, c) + self.add_contact_to_roster(contact.jid, account) + if len(list_) == 1: + contact = list_[0][0] + account = list_[0][1] + pritext = _('Contact "%s" will be removed from your roster') % \ + contact.get_shown_name() + if contact.sub == 'to': + self.dialog = dialogs.ConfirmationDialog(pritext, + _('By removing this contact you also remove authorization resulting in him or her always seeing you as offline.'), + on_response_ok = (on_ok, list_)) + else: + self.dialog = dialogs.ConfirmationDialogCheck(pritext, + _('By removing this contact you also by default remove authorization resulting in him or her always seeing you as offline.'), + _('I want this contact to know my status after removal'), + on_response_ok = (on_ok, list_)) else: - self.dialog = dialogs.ConfirmationDialogCheck(pritext, - _('By removing this contact you also by default remove authorization resulting in him or her always seeing you as offline.'), - _('I want this contact to know my status after removal'), - on_response_ok = (on_ok, contact, account)) + # several contact to remove at the same time + pritext = _('Contacts will be removed from your roster') + jids = '' + for (contact, account) in list_: + jids += '\n ' + contact.get_shown_name() + ',' + sectext = _('By removing these contacts:%s\nyou also remove authorization resulting in them always seeing you as offline.') % jids + self.dialog = dialogs.ConfirmationDialog(pritext, sectext, + on_response_ok = (on_ok, list_)) + def forget_gpg_passphrase(self, keyid): if self.gpg_passphrase.has_key(keyid): @@ -1825,7 +2157,7 @@ _('If "%s" accepts this request you will know his or her status.') % jid) if gajim.interface.systray_enabled: gajim.interface.systray.change_status('connecting') - def send_status(self, account, status, txt, sync = False, auto = False): + def send_status(self, account, status, txt, auto = False): model = self.tree.get_model() accountIter = self.get_account_iter(account) if status != 'offline': @@ -1912,9 +2244,12 @@ _('If "%s" accepts this request you will know his or her status.') % jid) gajim.sleeper_state[account] = 'online' else: gajim.sleeper_state[account] = 'off' - gajim.connections[account].change_status(status, txt, sync, auto) + gajim.connections[account].change_status(status, txt, auto) def get_status_message(self, show): + if show in gajim.config.get_per('defaultstatusmsg'): + if gajim.config.get_per('defaultstatusmsg', show, 'enabled'): + return gajim.config.get_per('defaultstatusmsg', show, 'message') if (show == 'online' and not gajim.config.get('ask_online_status')) or \ (show == 'offline' and not gajim.config.get('ask_offline_status')) or \ show == 'invisible': @@ -2046,6 +2381,10 @@ _('If "%s" accepts this request you will know his or her status.') % jid) if accountIter: model[accountIter][0] = self.jabber_state_images['16'][status] if status == 'offline': + if self.quit_on_next_offline > -1: + self.quit_on_next_offline -= 1 + if self.quit_on_next_offline < 1: + self.quit_gtkgui_interface() if accountIter: model[accountIter][C_SECPIXBUF] = None if gajim.con_types.has_key(account): @@ -2081,14 +2420,16 @@ _('If "%s" accepts this request you will know his or her status.') % jid) mw.new_tab(chat_control) - if gajim.awaiting_events[account].has_key(fjid): + if len(gajim.events.get_events(account, fjid)): # We call this here to avoid race conditions with widget validation chat_control.read_queue() def new_chat_from_jid(self, account, jid): jid = gajim.get_jid_without_resource(jid) contact = gajim.contacts.get_contact_with_highest_priority(account, jid) + no_contact = False if not contact: + no_contact = True keyID = '' attached_keys = gajim.config.get_per('accounts', account, 'attached_gpg_keys').split() @@ -2106,6 +2447,10 @@ _('If "%s" accepts this request you will know his or her status.') % jid) mw = gajim.interface.msg_win_mgr.get_window(contact.jid, account) mw.set_active_tab(jid, account) mw.window.present() + # For JEP-0172 + if no_contact: + mc = mw.get_control(jid, account) + mc.user_nick = gajim.nicks[account] def new_room(self, room_jid, nick, account): # Get target window, create a control, and associate it with the window @@ -2118,7 +2463,8 @@ _('If "%s" accepts this request you will know his or her status.') % jid) mw.new_tab(gc_control) def on_message(self, jid, msg, tim, account, encrypted = False, - msg_type = '', subject = None, resource = '', msg_id = None): + msg_type = '', subject = None, resource = '', msg_id = None, + user_nick = '', advanced_notif_num = None): '''when we receive a message''' contact = None # if chat window will be for specific resource @@ -2127,21 +2473,26 @@ _('If "%s" accepts this request you will know his or her status.') % jid) if resource: fjid = jid + '/' + resource contact = gajim.contacts.get_contact(account, jid, resource) - # Default to highest prio highest_contact = gajim.contacts.get_contact_with_highest_priority( account, jid) if not contact: + # Default to highest prio fjid = jid resource_for_chat = None contact = highest_contact if not contact: + # contact is not in roster keyID = '' attached_keys = gajim.config.get_per('accounts', account, 'attached_gpg_keys').split() if jid in attached_keys: keyID = attached_keys[attached_keys.index(jid) + 1] + if user_nick: + nick = user_nick + else: + nick = jid.split('@')[0] contact = gajim.contacts.create_contact(jid = jid, - name = jid.split('@')[0], groups = [_('Not in Roster')], + name = nick, groups = [_('Not in Roster')], show = 'not in roster', status = '', ask = 'none', keyID = keyID, resource = resource) gajim.contacts.add_contact(account, contact) @@ -2152,28 +2503,22 @@ _('If "%s" accepts this request you will know his or her status.') % jid) path = self.tree.get_model().get_path(iters[0]) else: path = None - autopopup = gajim.config.get('autopopup') - autopopupaway = gajim.config.get('autopopupaway') # Look for a chat control that has the given resource ctrl = gajim.interface.msg_win_mgr.get_control(fjid, account) if not ctrl: # if not, if message comes from highest prio, get control or open one # without resource - if highest_contact and contact.resource == highest_contact.resource: + if highest_contact and contact.resource == highest_contact.resource \ + and not jid == gajim.get_jid_from_account(account): ctrl = gajim.interface.msg_win_mgr.get_control(jid, account) fjid = jid resource_for_chat = None # Do we have a queue? - qs = gajim.awaiting_events[account] - no_queue = True - if qs.has_key(fjid): - no_queue = False - popup = False - if autopopup and (autopopupaway or gajim.connections[account].connected \ - in (1, 2)): - popup = True + no_queue = len(gajim.events.get_events(account, fjid)) == 0 + + popup = helpers.allow_popup_window(account, advanced_notif_num) if msg_type == 'normal' and popup: # it's single message to be autopopuped dialogs.SingleMessageWindow(account, contact.jid, @@ -2193,18 +2538,24 @@ _('If "%s" accepts this request you will know his or her status.') % jid) return # We save it in a queue - if no_queue: - qs[fjid] = [] - kind = 'chat' + type_ = 'chat' if msg_type == 'normal': - kind = 'normal' - qs[fjid].append((kind, (msg, subject, msg_type, tim, encrypted, - resource, msg_id))) - self.nb_unread += 1 + type_ = 'normal' + show_in_roster = notify.get_show_in_roster('message_received', account, + contact) + show_in_systray = notify.get_show_in_systray('message_received', account, + contact) + event = gajim.events.create_event(type_, (msg, subject, msg_type, tim, + encrypted, resource, msg_id), show_in_roster = show_in_roster, + show_in_systray = show_in_systray) + gajim.events.add_event(account, fjid, event) if popup: if not ctrl: self.new_chat(contact, account, resource = resource_for_chat) if path: + # we curently see contact in our roster OR he + # is not in the roster at all. + # show and select his line in roster self.tree.expand_row(path[0:1], False) self.tree.expand_row(path[0:2], False) self.tree.scroll_to_cell(path) @@ -2216,15 +2567,17 @@ _('If "%s" accepts this request you will know his or her status.') % jid) self.draw_parent_contact(jid, account) self.show_title() # we show the * or [n] if not path: + # contact is in roster but we curently don't see him online + # show him self.add_contact_to_roster(jid, account) iters = self.get_contact_iter(jid, account) path = self.tree.get_model().get_path(iters[0]) + # popup == False so we show awaiting event in roster + # show and select contact line in roster (even if he is not in roster) self.tree.expand_row(path[0:1], False) self.tree.expand_row(path[0:2], False) self.tree.scroll_to_cell(path) self.tree.set_cursor(path) - if gajim.interface.systray_enabled: - gajim.interface.systray.add_jid(fjid, account, kind) def on_preferences_menuitem_activate(self, widget): if gajim.interface.instances.has_key('preferences'): @@ -2285,13 +2638,19 @@ _('If "%s" accepts this request you will know his or her status.') % jid) def on_profile_avatar_menuitem_activate(self, widget, account): gajim.interface.edit_own_details(account) - def close_all(self, dic): + def close_all_from_dict(self, dic): '''close all the windows in the given dictionary''' for w in dic.values(): if type(w) == type({}): - self.close_all(w) + self.close_all_from_dict(w) else: w.window.destroy() + + def close_all(self, account): + '''close all the windows from an account''' + self.close_all_from_dict(gajim.interface.instances[account]) + for ctrl in gajim.interface.msg_win_mgr.get_controls(acct = account): + ctrl.parent_win.remove_tab(ctrl) def on_roster_window_delete_event(self, widget, event): '''When we want to close the window''' @@ -2301,6 +2660,7 @@ _('If "%s" accepts this request you will know his or her status.') % jid) else: accounts = gajim.connections.keys() get_msg = False + self.quit_on_next_offline = 0 for acct in accounts: if gajim.connections[acct].connected: get_msg = True @@ -2309,10 +2669,13 @@ _('If "%s" accepts this request you will know his or her status.') % jid) message = self.get_status_message('offline') if message is None: # user pressed Cancel to change status message dialog message = '' + for acct in accounts: if gajim.connections[acct].connected: - self.send_status(acct, 'offline', message, True) - self.quit_gtkgui_interface() + self.quit_on_next_offline += 1 + self.send_status(acct, 'offline', message) + if not self.quit_on_next_offline: + self.quit_gtkgui_interface() return True # do NOT destory the window def on_roster_window_focus_in_event(self, widget, event): @@ -2324,25 +2687,25 @@ _('If "%s" accepts this request you will know his or her status.') % jid) # if a contact row is selected, update colors (eg. for status msg) # because gtk engines may differ in bg when window is selected # or not - if self._last_selected_contact is not None: - jid, account = self._last_selected_contact - self.draw_contact(jid, account, selected = True, + if len(self._last_selected_contact): + for (jid, account) in self._last_selected_contact: + self.draw_contact(jid, account, selected = True, focus = True) def on_roster_window_focus_out_event(self, widget, event): # if a contact row is selected, update colors (eg. for status msg) # because gtk engines may differ in bg when window is selected # or not - if self._last_selected_contact is not None: - jid, account = self._last_selected_contact - self.draw_contact(jid, account, selected = True, + if len(self._last_selected_contact): + for (jid, account) in self._last_selected_contact: + self.draw_contact(jid, account, selected = True, focus = False) def on_roster_window_key_press_event(self, widget, event): if event.keyval == gtk.keysyms.Escape: - treeselection = self.tree.get_selection() - model, iter = treeselection.get_selected() - if not iter and gajim.interface.systray_enabled and not gajim.config.get('quit_on_roster_x_button'): + model, list_of_paths = self.tree.get_selection().get_selected_rows() + if not len(list_of_paths) and gajim.interface.systray_enabled and \ + not gajim.config.get('quit_on_roster_x_button'): self.tooltip.hide_tooltip() self.window.hide() @@ -2366,7 +2729,7 @@ _('If "%s" accepts this request you will know his or her status.') % jid) gajim.interface.save_config() for account in gajim.connections: gajim.connections[account].quit(True) - self.close_all(gajim.interface.instances) + self.close_all(account) if gajim.interface.systray_enabled: gajim.interface.hide_systray() gtk.main_quit() @@ -2385,14 +2748,14 @@ _('If "%s" accepts this request you will know his or her status.') % jid) # check if we have unread or recent mesages unread = False recent = False - if self.nb_unread > 0: + if gajim.events.get_nb_events() > 0: unread = True for win in gajim.interface.msg_win_mgr.windows(): unrd = 0 for ctrl in win.controls(): if ctrl.type_id == message_control.TYPE_GC: if gajim.config.get('notify_on_all_muc_messages'): - unrd += ctrl.nb_unread + unrd += ctrl.get_nb_unread() else: if ctrl.attention_flag: unrd += 1 @@ -2417,41 +2780,42 @@ _('If "%s" accepts this request you will know his or her status.') % jid) _('Messages will only be available for reading them later if you have history enabled.')) if dialog.get_response() != gtk.RESPONSE_OK: return + self.quit_on_next_offline = 0 for acct in accounts: if gajim.connections[acct].connected: - # send status asynchronously - self.send_status(acct, 'offline', message, True) - self.quit_gtkgui_interface() + self.quit_on_next_offline += 1 + self.send_status(acct, 'offline', message) + else: + self.quit_on_next_offline = 0 + if not self.quit_on_next_offline: + self.quit_gtkgui_interface() def open_event(self, account, jid, event): '''If an event was handled, return True, else return False''' - if not event: - return False - typ = event[0] - data = event[1] + data = event.parameters ft = gajim.interface.instances['file_transfers'] - if typ == 'normal': + if event.type_ == 'normal': dialogs.SingleMessageWindow(account, jid, action = 'receive', from_whom = jid, subject = data[1], message = data[0], resource = data[5]) - gajim.interface.remove_first_event(account, jid, typ) + gajim.interface.remove_first_event(account, jid, event.type_) return True - elif typ == 'file-request': + elif event.type_ == 'file-request': contact = gajim.contacts.get_contact_with_highest_priority(account, jid) - gajim.interface.remove_first_event(account, jid, typ) + gajim.interface.remove_first_event(account, jid, event.type_) ft.show_file_request(account, contact, data) return True - elif typ in ('file-request-error', 'file-send-error'): - gajim.interface.remove_first_event(account, jid, typ) + elif event.type_ in ('file-request-error', 'file-send-error'): + gajim.interface.remove_first_event(account, jid, event.type_) ft.show_send_error(data) return True - elif typ in ('file-error', 'file-stopped'): - gajim.interface.remove_first_event(account, jid, typ) + elif event.type_ in ('file-error', 'file-stopped'): + gajim.interface.remove_first_event(account, jid, event.type_) ft.show_stopped(jid, data) return True - elif typ == 'file-completed': - gajim.interface.remove_first_event(account, jid, typ) + elif event.type_ == 'file-completed': + gajim.interface.remove_first_event(account, jid, event.type_) ft.show_completed(jid, data) return True return False @@ -2485,12 +2849,12 @@ _('If "%s" accepts this request you will know his or her status.') % jid) else: self.tree.expand_row(path, False) else: - first_ev = gajim.get_first_event(account, jid) + first_ev = gajim.events.get_first_event(account, jid) if not first_ev: # look in other resources for c in gajim.contacts.get_contact(account, jid): fjid = c.get_full_jid() - first_ev = gajim.get_first_event(account, fjid) + first_ev = gajim.events.get_first_event(account, fjid) if first_ev: resource = c.resource break @@ -2498,7 +2862,7 @@ _('If "%s" accepts this request you will know his or her status.') % jid) child_iter = model.iter_children(iter) while not first_ev and child_iter: child_jid = model[child_iter][C_JID].decode('utf-8') - first_ev = gajim.get_first_event(account, child_jid) + first_ev = gajim.events.get_first_event(account, child_jid) if first_ev: jid = child_jid else: @@ -2510,6 +2874,8 @@ _('If "%s" accepts this request you will know his or her status.') % jid) if self.open_event(account, fjid, first_ev): return c = gajim.contacts.get_contact_with_highest_priority(account, jid) + if jid == gajim.get_jid_from_account(account): + resource = c.resource self.on_open_chat_window(widget, c, account, resource = resource) def on_roster_treeview_row_expanded(self, widget, iter, path): @@ -2537,6 +2903,7 @@ _('If "%s" accepts this request you will know his or her status.') % jid) if groupIter and gajim.groups[account][g]['expand']: pathG = model.get_path(groupIter) self.tree.expand_row(pathG, False) + self.draw_account(account) elif type == 'contact': jid = model[iter][C_JID].decode('utf-8') account = model[iter][C_ACCOUNT].decode('utf-8') @@ -2563,6 +2930,7 @@ _('If "%s" accepts this request you will know his or her status.') % jid) account = accounts[0] # There is only one cause we don't use merge if not account in self.collapsed_rows: self.collapsed_rows.append(account) + self.draw_account(account) elif type == 'contact': jid = model[iter][C_JID].decode('utf-8') account = model[iter][C_ACCOUNT].decode('utf-8') @@ -2746,8 +3114,7 @@ _('If "%s" accepts this request you will know his or her status.') % jid) model[iter][1] = self.jabber_state_images['16'][model[iter][2]] iter = model.iter_next(iter) # Update the systray - if gajim.interface.systray_enabled: - gajim.interface.systray.set_img() + gajim.interface.systray.set_img() for win in gajim.interface.msg_win_mgr.windows(): for ctrl in win.controls(): @@ -2923,6 +3290,10 @@ _('If "%s" accepts this request you will know his or her status.') % jid) name2 = name2.decode('utf-8') type1 = model[iter1][C_TYPE] type2 = model[iter2][C_TYPE] + if type1 == 'self_contact': + return -1 + if type2 == 'self_contact': + return 1 if type1 == 'group': if name1 == _('Transports'): return 1 @@ -2938,6 +3309,10 @@ _('If "%s" accepts this request you will know his or her status.') % jid) return 0 account1 = account1.decode('utf-8') account2 = account2.decode('utf-8') + if type1 == 'account': + if account1 < account2: + return -1 + return 1 jid1 = model[iter1][C_JID].decode('utf-8') jid2 = model[iter2][C_JID].decode('utf-8') if type1 == 'contact': @@ -2991,38 +3366,43 @@ _('If "%s" accepts this request you will know his or her status.') % jid) return 0 def drag_data_get_data(self, treeview, context, selection, target_id, etime): - treeselection = treeview.get_selection() - model, iter = treeselection.get_selected() - path = model.get_path(iter) + model, list_of_paths = self.tree.get_selection().get_selected_rows() + if len(list_of_paths) != 1: + return + path = list_of_paths[0] data = '' if len(path) >= 3: - data = model[iter][C_JID] + data = model[path][C_JID] selection.set(selection.target, 8, data) - def on_drop_in_contact(self, widget, account, c_source, c_dest, - was_big_brother, context, etime): + def on_drop_in_contact(self, widget, account_source, c_source, account_dest, + c_dest, was_big_brother, context, etime): # children must take the new tag too, so remember old tag - old_tag = gajim.contacts.get_metacontacts_tag(account, c_source.jid) + old_tag = gajim.contacts.get_metacontacts_tag(account_source, + c_source.jid) # remove the source row - self.remove_contact(c_source, account) + self.remove_contact(c_source, account_source) # brother inherite big brother groups c_source.groups = [] for g in c_dest.groups: c_source.groups.append(g) - gajim.contacts.add_metacontact(account, c_dest.jid, account, c_source.jid) + gajim.connections[account_source].update_contact(c_source.jid, + c_source.name, c_source.groups) + gajim.contacts.add_metacontact(account_dest, c_dest.jid, account_source, + c_source.jid) if was_big_brother: # add brothers too all_jid = gajim.contacts.get_metacontacts_jids(old_tag) for _account in all_jid: for _jid in all_jid[_account]: - gajim.contacts.add_metacontact(account, c_dest.jid, _account, - _jid) + gajim.contacts.add_metacontact(account_dest, c_dest.jid, + _account, _jid) _c = gajim.contacts.get_first_contact_from_jid(_account, _jid) self.remove_contact(_c, _account) self.add_contact_to_roster(_jid, _account) self.draw_contact(_jid, _account) - self.add_contact_to_roster(c_source.jid, account) - self.draw_contact(c_dest.jid, account) + self.add_contact_to_roster(c_source.jid, account_source) + self.draw_contact(c_dest.jid, account_dest) context.finish(True, True, etime) @@ -3071,10 +3451,18 @@ _('If "%s" accepts this request you will know his or her status.') % jid) iter_dest = model.get_iter(path_dest) type_dest = model[iter_dest][C_TYPE].decode('utf-8') jid_dest = model[iter_dest][C_JID].decode('utf-8') - account = model[iter_dest][C_ACCOUNT].decode('utf-8') + account_dest = model[iter_dest][C_ACCOUNT].decode('utf-8') + + if account_dest == 'all': + # drop on account row in merged mode: we can't know which account it is + return # if account is not connected, do nothing - if gajim.connections[account].connected < 2: + if gajim.connections[account_dest].connected < 2: + return + + # drop on self contact row + if type_dest == 'self_contact': return if info == self.TARGET_TYPE_URI_LIST: @@ -3083,36 +3471,28 @@ _('If "%s" accepts this request you will know his or her status.') % jid) return if type_dest != 'contact': return - c_dest = gajim.contacts.get_contact_with_highest_priority(account, + c_dest = gajim.contacts.get_contact_with_highest_priority(account_dest, jid_dest) uri = data.strip() uri_splitted = uri.split() # we may have more than one file dropped for uri in uri_splitted: path = helpers.get_file_path_from_dnd_dropped_uri(uri) if os.path.isfile(path): # is it file? - gajim.interface.instances['file_transfers'].send_file(account, - c_dest, path) + gajim.interface.instances['file_transfers'].send_file( + account_dest, c_dest, path) return if position == gtk.TREE_VIEW_DROP_BEFORE and len(path_dest) == 2: # dropped before a group : we drop it in the previous group path_dest = (path_dest[0], path_dest[1]-1) - iter_source = treeview.get_selection().get_selected()[1] - path_source = model.get_path(iter_source) + path_source = treeview.get_selection().get_selected_rows()[1][0] + iter_source = model.get_iter(path_source) type_source = model[iter_source][C_TYPE] - if type_dest == 'account': # dropped on an account - return + account_source = model[iter_source][C_ACCOUNT].decode('utf-8') if type_source != 'contact': # source is not a contact return - source_account = model[iter_source][C_ACCOUNT].decode('utf-8') - disable_meta = False - if account != source_account: # dropped in another account - if self.regroup: - # in merge mode it is ok to change group, but disable meta - account = source_account - disable_meta = True - else: - return + if type_dest == 'account' and account_source == account_dest: + return it = iter_source while model[it][C_TYPE] == 'contact': it = model.iter_parent(it) @@ -3121,36 +3501,47 @@ _('If "%s" accepts this request you will know his or her status.') % jid) if grp_source in helpers.special_groups: return jid_source = data.decode('utf-8') - c_source = gajim.contacts.get_contact_with_highest_priority(account, - jid_source) - # Get destination group + c_source = gajim.contacts.get_contact_with_highest_priority( + account_source, jid_source) + + grp_dest = None if type_dest == 'group': grp_dest = model[iter_dest][C_JID].decode('utf-8') - if grp_dest in helpers.special_groups: - return - if context.action == gtk.gdk.ACTION_COPY: - self.on_drop_in_group(None, account, c_source, grp_dest, context, - etime) - return - self.on_drop_in_group(None, account, c_source, grp_dest, context, - etime, grp_source) - return - else: + elif type_dest in ('contact', 'agent'): it = iter_dest while model[it][C_TYPE] != 'group': it = model.iter_parent(it) grp_dest = model[it][C_JID].decode('utf-8') + + if (type_dest == 'account' or not self.regroup) and \ + account_source != account_dest: + # add contact to this account in that group + dialogs.AddNewContactWindow(account = account_dest, jid = jid_source, + user_nick = c_source.name, group = grp_dest) + return + + # Get destination group + if type_dest == 'group': + if grp_dest in helpers.special_groups: + return + if context.action == gtk.gdk.ACTION_COPY: + self.on_drop_in_group(None, account_source, c_source, grp_dest, + context, etime) + return + self.on_drop_in_group(None, account_source, c_source, grp_dest, + context, etime, grp_source) + return if grp_dest in helpers.special_groups: return if jid_source == jid_dest: - if grp_source == grp_dest: + if grp_source == grp_dest and account_source == account_dest: return if context.action == gtk.gdk.ACTION_COPY: - self.on_drop_in_group(None, account, c_source, grp_dest, context, - etime) + self.on_drop_in_group(None, account_source, c_source, grp_dest, + context, etime) return - self.on_drop_in_group(None, account, c_source, grp_dest, context, - etime, grp_source) + self.on_drop_in_group(None, account_source, c_source, grp_dest, + context, etime, grp_source) return if grp_source == grp_dest: # Add meta contact @@ -3159,59 +3550,61 @@ _('If "%s" accepts this request you will know his or her status.') % jid) # if context.action == gtk.gdk.ACTION_COPY: # # Keep only MOVE # return - c_dest = gajim.contacts.get_contact_with_highest_priority(account, + c_dest = gajim.contacts.get_contact_with_highest_priority(account_dest, jid_dest) is_big_brother = False if model.iter_has_child(iter_source): is_big_brother = True - self.on_drop_in_contact(treeview, account, c_source, c_dest, - is_big_brother, context, etime) + if not c_dest: + # c_dest is None if jid_dest doesn't belong to account + return + self.on_drop_in_contact(treeview, account_source, c_source, + account_dest, c_dest, is_big_brother, context, etime) return # We upgrade only the first user because user2.groups is a pointer to # user1.groups if context.action == gtk.gdk.ACTION_COPY: - self.on_drop_in_group(None, account, c_source, grp_dest, context, - etime) + self.on_drop_in_group(None, account_source, c_source, grp_dest, + context, etime) else: menu = gtk.Menu() item = gtk.MenuItem(_('Drop %s in group %s') % (c_source.name, grp_dest)) - item.connect('activate', self.on_drop_in_group, account, c_source, + item.connect('activate', self.on_drop_in_group, account_dest, c_source, grp_dest, context, etime, grp_source) menu.append(item) - if not disable_meta: - # source and dest account are the same, enable metacontacts - c_dest = gajim.contacts.get_contact_with_highest_priority(account, - jid_dest) - item = gtk.MenuItem(_('Make %s and %s metacontacts') % (c_source.name, - c_dest.name)) - is_big_brother = False - if model.iter_has_child(iter_source): - is_big_brother = True - item.connect('activate', self.on_drop_in_contact, account, c_source, - c_dest, is_big_brother, context, etime) - else: #source and dest account are not the same, disable meta - item = gtk.MenuItem(_('Can\'t create a metacontact with contacts from two different accounts')) - item.set_sensitive(False) + c_dest = gajim.contacts.get_contact_with_highest_priority( + account_dest, jid_dest) + item = gtk.MenuItem(_('Make %s and %s metacontacts') % (c_source.name, + c_dest.name)) + is_big_brother = False + if model.iter_has_child(iter_source): + is_big_brother = True + item.connect('activate', self.on_drop_in_contact, account_source, + c_source, account_dest, c_dest, is_big_brother, context, etime) menu.append(item) menu.attach_to_widget(self.tree, None) menu.connect('selection-done', gtkgui_helpers.destroy_widget) - menu.popup(None, None, None, 1, etime) menu.show_all() + menu.popup(None, None, None, 1, etime) def show_title(self): change_title_allowed = gajim.config.get('change_roster_title') if change_title_allowed: start = '' - if self.nb_unread > 1: - start = '[' + str(self.nb_unread) + '] ' - elif self.nb_unread == 1: + nb_unread = gajim.events.get_nb_events(['chat', 'normal', + 'file-request', 'file-error', 'file-completed', + 'file-request-error', 'file-send-error', 'file-stopped', 'gc_msg', + 'printed_chat', 'printed_gc_msg']) + if nb_unread > 1: + start = '[' + str(nb_unread) + '] ' + elif nb_unread == 1: start = '* ' self.window.set_title(start + 'Gajim') - gtkgui_helpers.set_unset_urgency_hint(self.window, self.nb_unread) + gtkgui_helpers.set_unset_urgency_hint(self.window, nb_unread) def iter_is_separator(self, model, iter): if model[iter][0] == 'SEPARATOR': @@ -3239,22 +3632,32 @@ _('If "%s" accepts this request you will know his or her status.') % jid) contact[C_ACCOUNT].decode('utf-8')) def _on_treeview_selection_changed(self, selection): - model, selected_iter = selection.get_selected() - if self._last_selected_contact is not None: - # update unselected row - jid, account = self._last_selected_contact - self.draw_contact(jid, account) - if selected_iter is None: - self._last_selected_contact = None + model, list_of_paths = selection.get_selected_rows() + if len(list_of_paths) == 1 and model[list_of_paths[0]][C_EDITABLE]: + # We are editing this row, do not modify self._last_selected_contact + # Cause that cancel editing return - contact_row = model[selected_iter] - if contact_row[C_TYPE] != 'contact': - self._last_selected_contact = None + if len(self._last_selected_contact): + # update unselected rows + for (jid, account) in self._last_selected_contact: + try: + self.draw_contact(jid, account) + except: + # This can fail when last selected row was on an account we just + # removed. So we don't care if that fail + pass + self._last_selected_contact = [] + if len(list_of_paths) == 0: return - jid = contact_row[C_JID].decode('utf-8') - account = contact_row[C_ACCOUNT].decode('utf-8') - self._last_selected_contact = (jid, account) - self.draw_contact(jid, account, selected = True) + for path in list_of_paths: + row = model[path] + if row[C_TYPE] != 'contact': + self._last_selected_contact = [] + return + jid = row[C_JID].decode('utf-8') + account = row[C_ACCOUNT].decode('utf-8') + self._last_selected_contact.append((jid, account)) + self.draw_contact(jid, account, selected = True) def __init__(self): self.xml = gtkgui_helpers.get_glade('roster_window.glade') @@ -3264,16 +3667,17 @@ _('If "%s" accepts this request you will know his or her status.') % jid) if gajim.config.get('roster_window_skip_taskbar'): self.window.set_property('skip-taskbar-hint', True) self.tree = self.xml.get_widget('roster_treeview') - self.tree.get_selection().connect('changed', + sel = self.tree.get_selection() + sel.set_mode(gtk.SELECTION_MULTIPLE) + sel.connect('changed', self._on_treeview_selection_changed) - self._last_selected_contact = None # None or holds jid, account tupple + self._last_selected_contact = [] # holds a list of (jid, account) tupples self.jabber_state_images = {'16': {}, '32': {}, 'opened': {}, 'closed': {}} self.transports_state_images = {'16': {}, '32': {}, 'opened': {}, 'closed': {}} - self.nb_unread = 0 # number of unread messages self.last_save_dir = None self.editing_path = None # path of row with cell in edit mode self.add_new_contact_handler_id = False @@ -3305,6 +3709,8 @@ _('If "%s" accepts this request you will know his or her status.') % jid) model.set_sort_func(1, self.compareIters) model.set_sort_column_id(1, gtk.SORT_ASCENDING) self.tree.set_model(model) + # when this value become 0 we quit main application + self.quit_on_next_offline = -1 self.make_jabber_state_images() path = os.path.join(gajim.DATA_DIR, 'iconsets', 'transports') diff --git a/src/systray.py b/src/systray.py index 36417fc3c..926c077d1 100644 --- a/src/systray.py +++ b/src/systray.py @@ -2,7 +2,7 @@ ## ## Copyright (C) 2003-2006 Yann Le Boulanger ## Copyright (C) 2003-2004 Vincent Hanquez -## Copyright (C) 2005-2006 Nikos Kouremenos +## Copyright (C) 2005-2006 Nikos Kouremenos ## Copyright (C) 2005 Dimitur Kirov ## Copyright (C) 2005-2006 Travis Shirk ## Copyright (C) 2005 Norman Rasmussen @@ -18,7 +18,6 @@ ## import gtk -import gtk.glade import gobject import os @@ -29,7 +28,6 @@ import gtkgui_helpers from common import gajim from common import helpers -from common import i18n HAS_SYSTRAY_CAPABILITIES = True @@ -42,19 +40,13 @@ except: gajim.log.debug('No trayicon module available') HAS_SYSTRAY_CAPABILITIES = False -_ = i18n._ -APP = i18n.APP -gtk.glade.bindtextdomain(APP, i18n.DIR) -gtk.glade.textdomain(APP) - class Systray: '''Class for icon in the notification area This class is both base class (for systraywin32.py) and normal class for trayicon in GNU/Linux''' - + def __init__(self): - self.jids = [] # Contain things like [account, jid, type_of_msg] self.single_message_handler_id = None self.new_chat_handler_id = None self.t = None @@ -66,7 +58,9 @@ class Systray: self.popup_menus = [] def set_img(self): - if len(self.jids) > 0: + if not gajim.interface.systray_enabled: + return + if gajim.events.get_nb_systray_events(): state = 'message' else: state = self.status @@ -76,26 +70,13 @@ class Systray: elif image.get_storage_type() == gtk.IMAGE_PIXBUF: self.img_tray.set_from_pixbuf(image.get_pixbuf()) - def add_jid(self, jid, account, typ): - l = [account, jid, typ] - # We can keep several single message 'cause we open them one by one - if not l in self.jids or typ == 'normal': - self.jids.append(l) - self.set_img() - - def remove_jid(self, jid, account, typ): - l = [account, jid, typ] - if l in self.jids: - self.jids.remove(l) - self.set_img() - def change_status(self, global_status): ''' set tray image to 'global_status' ''' # change image and status, only if it is different if global_status is not None and self.status != global_status: self.status = global_status self.set_img() - + def start_chat(self, widget, account, jid): contact = gajim.contacts.get_first_contact_from_jid(account, jid) if gajim.interface.msg_win_mgr.has_window(jid, account): @@ -106,13 +87,13 @@ class Systray: gajim.interface.roster.new_chat(contact, account) gajim.interface.msg_win_mgr.get_window(jid, account).set_active_tab( jid, account) - + def on_single_message_menuitem_activate(self, widget, account): dialogs.SingleMessageWindow(account, action = 'send') def on_new_chat(self, widget, account): dialogs.NewChatDialog(account) - + def make_menu(self, event = None): '''create chat with and new message (sub) menus/menuitems event is None when we're in Windows @@ -125,7 +106,7 @@ class Systray: single_message_menuitem = self.xml.get_widget('single_message_menuitem') status_menuitem = self.xml.get_widget('status_menu') join_gc_menuitem = self.xml.get_widget('join_gc_menuitem') - + if self.single_message_handler_id: single_message_menuitem.handler_disconnect( self.single_message_handler_id) @@ -137,7 +118,7 @@ class Systray: sub_menu = gtk.Menu() self.popup_menus.append(sub_menu) status_menuitem.set_submenu(sub_menu) - + gc_sub_menu = gtk.Menu() # gc is always a submenu join_gc_menuitem.set_submenu(gc_sub_menu) @@ -182,7 +163,7 @@ class Systray: chat_with_menuitem.set_sensitive(iskey) single_message_menuitem.set_sensitive(iskey) join_gc_menuitem.set_sensitive(iskey) - + if connected_accounts >= 2: # 2 or more connections? make submenus account_menu_for_chat_with = gtk.Menu() chat_with_menuitem.set_submenu(account_menu_for_chat_with) @@ -191,7 +172,7 @@ class Systray: account_menu_for_single_message = gtk.Menu() single_message_menuitem.set_submenu(account_menu_for_single_message) self.popup_menus.append(account_menu_for_single_message) - + accounts_list = gajim.contacts.get_accounts() accounts_list.sort() for account in accounts_list: @@ -215,7 +196,7 @@ class Systray: gc_item.add(label) gc_sub_menu.append(gc_item) gajim.interface.roster.add_bookmarks_list(gc_sub_menu, account) - + elif connected_accounts == 1: # one account # one account connected, no need to show 'as jid' for account in gajim.connections: @@ -230,7 +211,7 @@ class Systray: # join gc gajim.interface.roster.add_bookmarks_list(gc_sub_menu, account) break # No other connected account - + if event is None: # None means windows (we explicitly popup in systraywin32.py) if self.added_hide_menuitem is False: @@ -238,14 +219,18 @@ class Systray: item = gtk.MenuItem(_('Hide this menu')) self.systray_context_menu.prepend(item) self.added_hide_menuitem = True - + else: # GNU and Unices - self.systray_context_menu.popup(None, None, None, event.button, event.time) + self.systray_context_menu.popup(None, None, None, event.button, + event.time) self.systray_context_menu.show_all() def on_show_all_events_menuitem_activate(self, widget): - for i in range(len(self.jids)): - self.handle_first_event() + events = gajim.events.get_systray_events() + for account in events: + for jid in events[account]: + for event in events[account][jid]: + gajim.interface.handle_event(account, jid, event.type_) def on_show_roster_menuitem_activate(self, widget): win = gajim.interface.roster.window @@ -262,11 +247,11 @@ class Systray: def on_left_click(self): win = gajim.interface.roster.window - if len(self.jids) == 0: + if len(gajim.events.get_systray_events()) == 0: # no pending events, so toggle visible/hidden for roster window if win.get_property('visible'): # visible in ANY virtual desktop? win.hide() # we hide it from VD that was visible in - + # but we could be in another VD right now. eg vd2 # and we want not only to hide it in vd1 but also show it in vd2 gtkgui_helpers.possibly_move_window_in_current_desktop(win) @@ -276,10 +261,8 @@ class Systray: self.handle_first_event() def handle_first_event(self): - account = self.jids[0][0] - jid = self.jids[0][1] - typ = self.jids[0][2] - gajim.interface.handle_event(account, jid, typ) + account, jid, event = gajim.events.get_first_systray_event() + gajim.interface.handle_event(account, jid, event.type_) def on_middle_click(self): '''middle click raises window to have complete focus (fe. get kbd events) @@ -292,13 +275,13 @@ class Systray: def on_clicked(self, widget, event): self.on_tray_leave_notify_event(widget, None) - if event.button == 1: # Left click + if event.type == gtk.gdk.BUTTON_PRESS and event.button == 1: # Left click self.on_left_click() elif event.button == 2: # middle click self.on_middle_click() elif event.button == 3: # right click self.make_menu(event) - + def on_show_menuitem_activate(self, widget, show): # we all add some fake (we cannot select those nor have them as show) # but this helps to align with roster's status_combobox index positions @@ -327,7 +310,7 @@ class Systray: if self.tooltip.id == position: size = widget.window.get_size() self.tooltip.show_tooltip('', size[1], position[1]) - + def on_tray_motion_notify_event(self, widget, event): wireq=widget.size_request() position = widget.window.get_origin() @@ -339,16 +322,23 @@ class Systray: self.tooltip.id = position self.tooltip.timeout = gobject.timeout_add(500, self.show_tooltip, widget) - + def on_tray_leave_notify_event(self, widget, event): position = widget.window.get_origin() if self.tooltip.timeout > 0 and \ self.tooltip.id == position: self.tooltip.hide_tooltip() - + + def on_tray_destroyed(self, widget): + '''re-add trayicon when systray is destroyed''' + self.t = None + if gajim.interface.systray_enabled: + self.show_icon() + def show_icon(self): if not self.t: self.t = trayicon.TrayIcon('Gajim') + self.t.connect('destroy', self.on_tray_destroyed) eb = gtk.EventBox() # avoid draw seperate bg color in some gtk themes eb.set_visible_window(False) @@ -363,7 +353,7 @@ class Systray: self.t.add(eb) self.set_img() self.t.show_all() - + def hide_icon(self): if self.t: self.t.destroy() diff --git a/src/systraywin32.py b/src/systraywin32.py index bfe7cfebd..c758247e0 100644 --- a/src/systraywin32.py +++ b/src/systraywin32.py @@ -42,10 +42,6 @@ WM_TRAYMESSAGE = win32con.WM_USER + 20 import gtkgui_helpers from common import gajim from common import i18n -_ = i18n._ -APP = i18n.APP -gtk.glade.bindtextdomain(APP, i18n.DIR) -gtk.glade.textdomain(APP) class SystrayWINAPI: def __init__(self, gtk_window): @@ -249,36 +245,25 @@ class SystrayWin32(systray.Systray): elif lparam == win32con.WM_LBUTTONUP: # Left click self.on_left_click() - def add_jid(self, jid, account, typ): - systray.Systray.add_jid(self, jid, account, typ) + def set_img(self): + self.tray_ico_imgs = self.load_icos() #FIXME: do not do this here + # see gajim.interface.roster.reload_jabber_state_images() to merge - nb = gajim.interface.roster.nb_unread - for acct in gajim.connections: - # in chat / groupchat windows - for kind in ('chats', 'gc'): - jids = gajim.interface.instances[acct][kind] - for jid in jids: - if jid != 'tabbed': - nb += jids[jid].nb_unread[jid] - - text = i18n.ngettext( - 'Gajim - %d unread message', - 'Gajim - %d unread messages', - nb, nb, nb) + if len(self.jids) > 0: + state = 'message' + else: + state = self.status + hicon = self.tray_ico_imgs[state] + if hicon is None: + return - self.systray_winapi.notify_icon.set_tooltip(text) + self.systray_winapi.remove_notify_icon() + self.systray_winapi.add_notify_icon(self.systray_context_menu, hicon, + 'Gajim') + self.systray_winapi.notify_icon.menu = self.systray_context_menu - def remove_jid(self, jid, account, typ): - systray.Systray.remove_jid(self, jid, account, typ) + nb = gajim.events.get_nb_systray_events() - nb = gajim.interface.roster.nb_unread - for acct in gajim.connections: - # in chat / groupchat windows - for kind in ('chats', 'gc'): - for jid in gajim.interface.instances[acct][kind]: - if jid != 'tabbed': - nb += gajim.interface.instances[acct][kind][jid].nb_unread[jid] - if nb > 0: text = i18n.ngettext( 'Gajim - %d unread message', @@ -288,23 +273,6 @@ class SystrayWin32(systray.Systray): text = 'Gajim' self.systray_winapi.notify_icon.set_tooltip(text) - def set_img(self): - self.tray_ico_imgs = self.load_icos() #FIXME: do not do this here - # see gajim.interface.roster.reload_jabber_state_images() to merge - - if len(self.jids) > 0: - state = 'message' - else: - state = self.status - hicon = self.tray_ico_imgs[state] - if hicon is None: - return - - self.systray_winapi.remove_notify_icon() - self.systray_winapi.add_notify_icon(self.systray_context_menu, hicon, - 'Gajim') - self.systray_winapi.notify_icon.menu = self.systray_context_menu - def load_icos(self): '''load .ico files and return them to a dic of SHOW --> img_obj''' iconset = str(gajim.config.get('iconset')) diff --git a/src/tooltips.py b/src/tooltips.py index f09cccbdd..53915df8a 100644 --- a/src/tooltips.py +++ b/src/tooltips.py @@ -27,9 +27,6 @@ from common import gajim from common import helpers from common import i18n -_ = i18n._ -APP = i18n.APP - class BaseTooltip: ''' Base Tooltip class; Usage: @@ -285,34 +282,14 @@ class NotificationAreaTooltip(BaseTooltip, StatusTable): self.table.set_property('column-spacing', 1) text, single_line = '', '' - unread_chat = gajim.interface.roster.nb_unread - unread_single_chat = 0 - unread_gc = 0 - unread_pm = 0 + unread_chat = gajim.events.get_nb_events(types = ['printed_chat', 'chat']) + unread_single_chat = gajim.events.get_nb_events(types = ['normal']) + unread_gc = gajim.events.get_nb_events(types = ['printed_gc_msg', + 'gc_msg']) + unread_pm = gajim.events.get_nb_events(types = ['printed_pm', 'pm']) accounts = self.get_accounts_info() - for acct in gajim.connections: - # Count unread chat messages - chat_t = message_control.TYPE_CHAT - for ctrl in gajim.interface.msg_win_mgr.get_controls(chat_t, acct): - unread_chat += ctrl.nb_unread - - # Count unread PM messages for which we have a control - chat_t = message_control.TYPE_PM - for ctrl in gajim.interface.msg_win_mgr.get_controls(chat_t, acct): - unread_pm += ctrl.nb_unread - - # we count unread gc/pm messages - chat_t = message_control.TYPE_GC - for ctrl in gajim.interface.msg_win_mgr.get_controls(chat_t, acct): - # These are PMs for which the PrivateChatControl has not yet been - # created - pm_msgs = ctrl.get_specific_unread() - unread_gc += ctrl.nb_unread - unread_gc -= pm_msgs - unread_pm += pm_msgs - if unread_chat or unread_single_chat or unread_gc or unread_pm: text = 'Gajim ' awaiting_events = unread_chat + unread_single_chat + unread_gc + unread_pm @@ -391,8 +368,9 @@ class GCTooltip(BaseTooltip): if contact.jid.strip() != '': jid_markup = '' + contact.jid + '' else: - jid_markup = '' + contact.get_shown_name() + \ - '' + jid_markup = '' + \ + gtkgui_helpers.escape_for_pango_markup(contact.get_shown_name()) \ + + '' properties.append((jid_markup, None)) properties.append((_('Role: '), helpers.get_uf_role(contact.role))) properties.append((_('Affiliation: '), contact.affiliation.capitalize())) @@ -510,11 +488,12 @@ class RosterTooltip(NotificationAreaTooltip): properties = [] jid_markup = '' + prim_contact.jid + '' properties.append((jid_markup, None)) + properties.append((_('Name: '), gtkgui_helpers.escape_for_pango_markup( - prim_contact.get_shown_name()))) + prim_contact.get_shown_name()))) if prim_contact.sub: properties.append(( _('Subscription: '), - gtkgui_helpers.escape_for_pango_markup(prim_contact.sub))) + gtkgui_helpers.escape_for_pango_markup(helpers.get_uf_sub(prim_contact.sub)))) if prim_contact.keyID: keyID = None if len(prim_contact.keyID) == 8: @@ -525,17 +504,27 @@ class RosterTooltip(NotificationAreaTooltip): properties.append((_('OpenPGP: '), gtkgui_helpers.escape_for_pango_markup(keyID))) num_resources = 0 + # put contacts in dict, where key is priority + contacts_dict = {} for contact in contacts: if contact.resource: num_resources += 1 - - if num_resources== 1 and contact.resource: - properties.append((_('Resource: '), gtkgui_helpers.escape_for_pango_markup( - contact.resource) + ' (' + unicode(contact.priority) + ')')) + if contact.priority in contacts_dict: + contacts_dict[contact.priority].append(contact) + else: + contacts_dict[contact.priority] = [contact] + + if num_resources == 1 and contact.resource: + properties.append((_('Resource: '), + gtkgui_helpers.escape_for_pango_markup(contact.resource) + ' (' + \ + unicode(contact.priority) + ')')) if num_resources > 1: properties.append((_('Status: '), ' ')) - for contact in contacts: - if contact.resource: + contact_keys = contacts_dict.keys() + contact_keys.sort() + contact_keys.reverse() + for priority in contact_keys: + for contact in contacts_dict[priority]: status_line = self.get_status_info(contact.resource, contact.priority, contact.show, contact.status) diff --git a/src/vcard.py b/src/vcard.py index 91cd1c20b..009605b38 100644 --- a/src/vcard.py +++ b/src/vcard.py @@ -14,7 +14,6 @@ ## import gtk -import gtk.glade import gobject import base64 import mimetypes @@ -27,12 +26,7 @@ import dialogs from common import helpers from common import gajim -from common import i18n -_ = i18n._ -Q_ = i18n.Q_ -APP = i18n.APP -gtk.glade.bindtextdomain (APP, i18n.DIR) -gtk.glade.textdomain (APP) +from common.i18n import Q_ def get_avatar_pixbuf_encoded_mime(photo): '''return the pixbuf of the image @@ -42,16 +36,20 @@ def get_avatar_pixbuf_encoded_mime(photo): img_decoded = None avatar_encoded = None avatar_mime_type = None - if photo.has_key('BINVAL') and photo.has_key('TYPE'): + if photo.has_key('BINVAL'): img_encoded = photo['BINVAL'] avatar_encoded = img_encoded - avatar_mime_type = photo['TYPE'] try: img_decoded = base64.decodestring(img_encoded) except: pass if img_decoded: - pixbuf = gtkgui_helpers.get_pixbuf_from_data(img_decoded) + if photo.has_key('TYPE'): + avatar_mime_type = photo['TYPE'] + pixbuf = gtkgui_helpers.get_pixbuf_from_data(img_decoded) + else: + pixbuf, avatar_mime_type = gtkgui_helpers.get_pixbuf_from_data( + img_decoded, want_type=True) else: pixbuf = None return pixbuf, avatar_encoded, avatar_mime_type @@ -59,50 +57,25 @@ def get_avatar_pixbuf_encoded_mime(photo): class VcardWindow: '''Class for contact's information window''' - def __init__(self, contact, account, vcard = False, is_fake = False): + def __init__(self, contact, account, is_fake = False): # the contact variable is the jid if vcard is true self.xml = gtkgui_helpers.get_glade('vcard_information_window.glade') self.window = self.xml.get_widget('vcard_information_window') - self.publish_button = self.xml.get_widget('publish_button') - self.retrieve_button = self.xml.get_widget('retrieve_button') - self.nickname_entry = self.xml.get_widget('nickname_entry') - if not vcard: # Maybe gc_vcard ? - self.nickname_entry.set_property('editable', False) - - self.publish_button.set_no_show_all(True) - self.retrieve_button.set_no_show_all(True) - self.xml.get_widget('photo_vbuttonbox').set_no_show_all(True) - - self.contact = contact # don't use it if vcard is true + self.contact = contact self.account = account - self.vcard = vcard self.is_fake = is_fake + self.avatar_mime_type = None self.avatar_encoded = None - if vcard: # we view/edit our own vcard - self.jid = contact - # remove Jabber tab & show publish/retrieve/close/set_avatar buttons - # and make entries and textview editable - self.change_to_vcard() - else: # we see someone else's vcard - self.publish_button.hide() - self.retrieve_button.hide() - self.jid = contact.jid - self.fill_jabber_page() - - # if we are editing our own vcard publish button should publish - # vcard data we have typed including nickname, it's why we connect only - # here (when we see someone else's vcard) - self.nickname_entry.connect('focus-out-event', - self.on_nickname_entry_focus_out_event) + self.fill_jabber_page() self.xml.signal_autoconnect(self) self.window.show_all() def on_vcard_information_window_destroy(self, widget): - del gajim.interface.instances[self.account]['infos'][self.jid] + del gajim.interface.instances[self.account]['infos'][self.contact.jid] def on_vcard_information_window_key_press_event(self, widget, event): if event.keyval == gtk.keysyms.Escape: @@ -123,86 +96,20 @@ class VcardWindow: if oldlog != log: gajim.config.set_per('accounts', self.account, 'no_log_for', ' '.join(no_log_for)) - - def on_nickname_entry_focus_out_event(self, widget, event): - '''Save contact information and update - the roster item on the Jabber server''' - new_name = self.nickname_entry.get_text().decode('utf-8') - # update contact.name with new nickname if that is not '' - if new_name != self.contact.name and new_name != '': - self.contact.name = new_name - # update roster model - model = gajim.interface.roster.tree.get_model() - for iter_ in gajim.interface.roster.get_contact_iter(self.contact.jid, - self.account): - model[iter_][1] = new_name - gajim.connections[self.account].update_contact(self.contact.jid, - self.contact.name, self.contact.groups) - # update opened chat window - ctrl = gajim.interface.msg_win_mgr.get_control(self.contact.jid, - self.account) - if ctrl: - ctrl.update_ui() - win = gajim.interface.msg_win_mgr.get_window(self.contact.jid, - self.account) - win.redraw_tab(ctrl) - win.show_title() - def on_close_button_clicked(self, widget): - self.window.destroy() - - def on_clear_button_clicked(self, widget): - # empty the image - self.xml.get_widget('PHOTO_image').set_from_pixbuf(None) - self.avatar_encoded = None - - def on_set_avatar_button_clicked(self, widget): - f = None - def on_ok(widget, path_to_file): - filesize = os.path.getsize(path_to_file) # in bytes - #FIXME: use messages for invalid file for 0.11 - invalid_file = False - msg = '' - if os.path.isfile(path_to_file): - stat = os.stat(path_to_file) - if stat[6] == 0: - invalid_file = True - else: - invalid_file = True - if not invalid_file and filesize > 16384: # 16 kb - try: - pixbuf = gtk.gdk.pixbuf_new_from_file(path_to_file) - # get the image at 'notification size' - # and use that user did not specify in ACE crazy size - scaled_pixbuf = gtkgui_helpers.get_scaled_pixbuf(pixbuf, - 'tooltip') - except gobject.GError, msg: # unknown format - # msg should be string, not object instance - msg = str(msg) - invalid_file = True - if invalid_file: - if True: # keep identation - dialogs.ErrorDialog(_('Could not load image'), msg) - return - if filesize > 16384: - if scaled_pixbuf: - path_to_file = os.path.join(gajim.TMP, - 'avatar_scaled.png') - scaled_pixbuf.save(path_to_file, 'png') - self.dialog.destroy() - - fd = open(path_to_file, 'rb') - data = fd.read() - pixbuf = gtkgui_helpers.get_pixbuf_from_data(data) - # rescale it - pixbuf = gtkgui_helpers.get_scaled_pixbuf(pixbuf, 'vcard') - image = self.xml.get_widget('PHOTO_image') - image.set_from_pixbuf(pixbuf) - self.avatar_encoded = base64.encodestring(data) - # returns None if unknown type - self.avatar_mime_type = mimetypes.guess_type(path_to_file)[0] - - self.dialog = dialogs.ImageChooserDialog(on_response_ok = on_ok) + def on_PHOTO_eventbox_button_press_event(self, widget, event): + '''If right-clicked, show popup''' + if event.button == 3: # right click + menu = gtk.Menu() + menuitem = gtk.ImageMenuItem(gtk.STOCK_SAVE_AS) + menuitem.connect('activate', + gtkgui_helpers.on_avatar_save_as_menuitem_activate, + self.contact.jid, self.account, self.contact.name + '.jpeg') + menu.append(menuitem) + menu.connect('selection-done', lambda w:w.destroy()) + # show the menu + menu.show_all() + menu.popup(None, None, None, event.button, event.time) def set_value(self, entry_name, value): try: @@ -215,9 +122,11 @@ class VcardWindow: if i == 'PHOTO': pixbuf, self.avatar_encoded, self.avatar_mime_type = \ get_avatar_pixbuf_encoded_mime(vcard[i]) - if not pixbuf: - continue image = self.xml.get_widget('PHOTO_image') + if not pixbuf: + image.set_from_icon_name('stock_person', + gtk.ICON_SIZE_DIALOG) + continue pixbuf = gtkgui_helpers.get_scaled_pixbuf(pixbuf, 'vcard') image.set_from_pixbuf(pixbuf) continue @@ -227,21 +136,23 @@ class VcardWindow: if 'WORK' in entry: add_on = '_WORK' for j in entry.keys(): - self.set_value(i + add_on + '_' + j + '_entry', entry[j]) + self.set_value(i + add_on + '_' + j + '_label', entry[j]) if isinstance(vcard[i], dict): for j in vcard[i].keys(): - self.set_value(i + '_' + j + '_entry', vcard[i][j]) + self.set_value(i + '_' + j + '_label', vcard[i][j]) else: if i == 'DESC': self.xml.get_widget('DESC_textview').get_buffer().set_text( vcard[i], 0) else: - self.set_value(i + '_entry', vcard[i]) + self.set_value(i + '_label', vcard[i]) def set_last_status_time(self): self.fill_status_label() def set_os_info(self, resource, client_info, os_info): + if self.xml.get_widget('information_notebook').get_n_pages() < 4: + return i = 0 client = '' os = '' @@ -265,6 +176,8 @@ class VcardWindow: self.xml.get_widget('os_label').set_text(os) def fill_status_label(self): + if self.xml.get_widget('information_notebook').get_n_pages() < 4: + return contact_list = gajim.contacts.get_contact(self.account, self.contact.jid) # stats holds show and status message stats = '' @@ -280,7 +193,7 @@ class VcardWindow: stats += '\n' + _('since %s') % time.strftime('%c', c.last_status_time).decode(locale.getpreferredencoding()) one = False - elif not self.vcard: # Maybe gc_vcard ? + else: # Maybe gc_vcard ? stats = helpers.get_uf_show(self.contact.show) if self.contact.status: stats += ': ' + self.contact.status @@ -294,8 +207,10 @@ class VcardWindow: def fill_jabber_page(self): tooltips = gtk.Tooltips() - self.xml.get_widget('nickname_label').set_text( - self.contact.get_shown_name()) + self.xml.get_widget('nickname_label').set_markup( + '' + + self.contact.get_shown_name() + + '') self.xml.get_widget('jid_label').set_text(self.contact.jid) uf_sub = helpers.get_uf_sub(self.contact.sub) self.xml.get_widget('subscription_label').set_text(uf_sub) @@ -317,7 +232,6 @@ class VcardWindow: if self.contact.ask == 'subscribe': tooltips.set_tip(eb, _("You are waiting contact's answer about your subscription request")) - self.nickname_entry.set_text(self.contact.name) log = True if self.contact.jid in gajim.config.get_per('accounts', self.account, 'no_log_for').split(' '): @@ -339,8 +253,8 @@ class VcardWindow: # Request os info in contact is connected if self.contact.show not in ('offline', 'error'): - gajim.connections[self.account].request_os_info(self.contact.jid, - self.contact.resource) + gobject.idle_add(gajim.connections[self.account].request_os_info, + self.contact.jid, self.contact.resource) self.os_info = {0: {'resource': self.contact.resource, 'client': '', 'os': ''}} i = 1 @@ -353,7 +267,8 @@ class VcardWindow: uf_resources += '\n' + c.resource + \ _(' resource with priority ') + unicode(c.priority) if c.show not in ('offline', 'error'): - gajim.connections[self.account].request_os_info(c.jid, + gobject.idle_add( + gajim.connections[self.account].request_os_info, c.jid, c.resource) gajim.connections[self.account].request_last_status_time(c.jid, c.resource) @@ -368,117 +283,3 @@ class VcardWindow: self.fill_status_label() gajim.connections[self.account].request_vcard(self.contact.jid, self.is_fake) - - def add_to_vcard(self, vcard, entry, txt): - '''Add an information to the vCard dictionary''' - entries = entry.split('_') - loc = vcard - if len(entries) == 3: # We need to use lists - if not loc.has_key(entries[0]): - loc[entries[0]] = [] - found = False - for e in loc[entries[0]]: - if entries[1] in e: - found = True - break - if found: - e[entries[2]] = txt - else: - loc[entries[0]].append({entries[1]: '', entries[2]: txt}) - return vcard - while len(entries) > 1: - if not loc.has_key(entries[0]): - loc[entries[0]] = {} - loc = loc[entries[0]] - del entries[0] - loc[entries[0]] = txt - return vcard - - def make_vcard(self): - '''make the vCard dictionary''' - entries = ['FN', 'NICKNAME', 'BDAY', 'EMAIL_HOME_USERID', 'URL', - 'TEL_HOME_NUMBER', 'N_FAMILY', 'N_GIVEN', 'N_MIDDLE', 'N_PREFIX', - 'N_SUFFIX', 'ADR_HOME_STREET', 'ADR_HOME_EXTADR', 'ADR_HOME_LOCALITY', - 'ADR_HOME_REGION', 'ADR_HOME_PCODE', 'ADR_HOME_CTRY', 'ORG_ORGNAME', - 'ORG_ORGUNIT', 'TITLE', 'ROLE', 'TEL_WORK_NUMBER', 'EMAIL_WORK_USERID', - 'ADR_WORK_STREET', 'ADR_WORK_EXTADR', 'ADR_WORK_LOCALITY', - 'ADR_WORK_REGION', 'ADR_WORK_PCODE', 'ADR_WORK_CTRY'] - vcard = {} - for e in entries: - txt = self.xml.get_widget(e + '_entry').get_text().decode('utf-8') - if txt != '': - vcard = self.add_to_vcard(vcard, e, txt) - - # DESC textview - buff = self.xml.get_widget('DESC_textview').get_buffer() - start_iter = buff.get_start_iter() - end_iter = buff.get_end_iter() - txt = buff.get_text(start_iter, end_iter, 0) - if txt != '': - vcard['DESC'] = txt.decode('utf-8') - - # Avatar - if self.avatar_encoded: - vcard['PHOTO'] = {'BINVAL': self.avatar_encoded} - if self.avatar_mime_type: - vcard['PHOTO']['TYPE'] = self.avatar_mime_type - return vcard - - def on_publish_button_clicked(self, widget): - if gajim.connections[self.account].connected < 2: - dialogs.ErrorDialog(_('You are not connected to the server'), - _('Without a connection you can not publish your contact ' - 'information.')) - return - vcard = self.make_vcard() - nick = '' - if vcard.has_key('NICKNAME'): - nick = vcard['NICKNAME'] - if nick == '': - nick = gajim.config.get_per('accounts', self.account, 'name') - gajim.nicks[self.account] = nick - gajim.connections[self.account].send_vcard(vcard) - - def on_retrieve_button_clicked(self, widget): - entries = ['FN', 'NICKNAME', 'BDAY', 'EMAIL_HOME_USERID', 'URL', - 'TEL_HOME_NUMBER', 'N_FAMILY', 'N_GIVEN', 'N_MIDDLE', 'N_PREFIX', - 'N_SUFFIX', 'ADR_HOME_STREET', 'ADR_HOME_EXTADR', 'ADR_HOME_LOCALITY', - 'ADR_HOME_REGION', 'ADR_HOME_PCODE', 'ADR_HOME_CTRY', 'ORG_ORGNAME', - 'ORG_ORGUNIT', 'TITLE', 'ROLE', 'ADR_WORK_STREET', 'ADR_WORK_EXTADR', - 'ADR_WORK_LOCALITY', 'ADR_WORK_REGION', 'ADR_WORK_PCODE', - 'ADR_WORK_CTRY'] - if gajim.connections[self.account].connected > 1: - # clear all entries - for e in entries: - self.xml.get_widget(e + '_entry').set_text('') - self.xml.get_widget('DESC_textview').get_buffer().set_text('') - self.xml.get_widget('PHOTO_image').set_from_pixbuf(None) - gajim.connections[self.account].request_vcard(self.jid) - else: - dialogs.ErrorDialog(_('You are not connected to the server'), - _('Without a connection, you can not get your contact information.')) - - def change_to_vcard(self): - self.xml.get_widget('information_notebook').remove_page(0) - self.xml.get_widget('nickname_label').set_text(_('Personal details')) - - self.publish_button.show() - self.retrieve_button.show() - - #photo_vbuttonbox visible - self.xml.get_widget('photo_vbuttonbox').show() - - #make all entries editable - entries = ['FN', 'NICKNAME', 'BDAY', 'EMAIL_HOME_USERID', 'URL', - 'TEL_HOME_NUMBER', 'N_FAMILY', 'N_GIVEN', 'N_MIDDLE', 'N_PREFIX', - 'N_SUFFIX', 'ADR_HOME_STREET', 'ADR_HOME_EXTADR', 'ADR_HOME_LOCALITY', - 'ADR_HOME_REGION', 'ADR_HOME_PCODE', 'ADR_HOME_CTRY', 'ORG_ORGNAME', - 'ORG_ORGUNIT', 'TITLE', 'ROLE', 'TEL_WORK_NUMBER', 'EMAIL_WORK_USERID', - 'ADR_WORK_STREET', 'ADR_WORK_EXTADR', 'ADR_WORK_LOCALITY', - 'ADR_WORK_REGION', 'ADR_WORK_PCODE', 'ADR_WORK_CTRY'] - for e in entries: - self.xml.get_widget(e + '_entry').set_property('editable', True) - - description_textview = self.xml.get_widget('DESC_textview') - description_textview.set_editable(True) - description_textview.set_cursor_visible(True) From d83dde79ab5824baa3ab51d76f5048360faef18a Mon Sep 17 00:00:00 2001 From: Dimitur Kirov Date: Thu, 14 Sep 2006 17:16:01 +0000 Subject: [PATCH 030/110] prevent TB for invalid keyword in send_message add SystemBus initialisation in try: to catch cases when system bus is not present --- src/common/zeroconf/connection_zeroconf.py | 3 ++- src/common/zeroconf/zeroconf.py | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/common/zeroconf/connection_zeroconf.py b/src/common/zeroconf/connection_zeroconf.py index 544553158..88c12bd2d 100644 --- a/src/common/zeroconf/connection_zeroconf.py +++ b/src/common/zeroconf/connection_zeroconf.py @@ -270,7 +270,8 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): return STATUS_LIST[self.connected] def send_message(self, jid, msg, keyID, type = 'chat', subject='', - chatstate = None, msg_id = None, composing_jep = None, resource = None): + chatstate = None, msg_id = None, composing_jep = None, resource = None, + user_nick = None): print 'connection_zeroconf.py: send_message' fjid = jid diff --git a/src/common/zeroconf/zeroconf.py b/src/common/zeroconf/zeroconf.py index e1bf4fbed..d1bdcd486 100755 --- a/src/common/zeroconf/zeroconf.py +++ b/src/common/zeroconf/zeroconf.py @@ -223,8 +223,8 @@ class Zeroconf: # connect to dbus def connect(self): - self.bus = dbus.SystemBus() try: + self.bus = dbus.SystemBus() # is there any way to check, if a dbus name exists? # that might make the Introspect Error go away... self.server = dbus.Interface(self.bus.get_object(avahi.DBUS_NAME, \ From 479abe8c9b0758ba7abc45f57e0db423f4cc31b9 Mon Sep 17 00:00:00 2001 From: Dimitur Kirov Date: Thu, 14 Sep 2006 17:28:07 +0000 Subject: [PATCH 031/110] merge from trunk --- data/glade/account_context_menu.glade | 21 +- data/glade/account_modification_window.glade | 2 +- data/glade/add_new_contact_window.glade | 678 ++- data/glade/advanced_menuitem_menu.glade | 7 + .../glade/advanced_notifications_window.glade | 1960 ++++--- data/glade/chat_control_popup_menu.glade | 2 +- data/glade/edit_groups_dialog.glade | 5 +- data/glade/gc_occupants_menu.glade | 2 +- data/glade/preferences_window.glade | 198 +- data/glade/roster_contact_context_menu.glade | 52 +- data/glade/roster_window.glade | 733 ++- data/glade/service_discovery_window.glade | 85 +- data/glade/vcard_information_window.glade | 4626 ++++++++--------- data/other/servers.xml | 5 +- 14 files changed, 4165 insertions(+), 4211 deletions(-) diff --git a/data/glade/account_context_menu.glade b/data/glade/account_context_menu.glade index 9e14bcbf3..6a601becd 100644 --- a/data/glade/account_context_menu.glade +++ b/data/glade/account_context_menu.glade @@ -12,7 +12,7 @@ True - + True gtk-network 1 @@ -32,7 +32,7 @@ True - + True gtk-connect 1 @@ -45,6 +45,14 @@ + + + True + _Open Gmail Inbox + True + + + True @@ -52,7 +60,7 @@ True - + True gtk-new 1 @@ -72,7 +80,7 @@ True - + True gtk-add 1 @@ -92,7 +100,7 @@ True - + True gtk-find 1 @@ -112,7 +120,7 @@ True - + True gtk-preferences 1 @@ -125,4 +133,5 @@ + diff --git a/data/glade/account_modification_window.glade b/data/glade/account_modification_window.glade index 0beac3938..c2a4150cd 100644 --- a/data/glade/account_modification_window.glade +++ b/data/glade/account_modification_window.glade @@ -471,7 +471,7 @@ True - If checked, Gajim will also broadcast some more IPs except from just your IP, so file transfer has higher chances of working right. + If checked, Gajim will also broadcast some more IPs except from just your IP, so file transfer has higher chances of working. True Use file transfer proxies True diff --git a/data/glade/add_new_contact_window.glade b/data/glade/add_new_contact_window.glade index 5203ca800..cf41eca13 100644 --- a/data/glade/add_new_contact_window.glade +++ b/data/glade/add_new_contact_window.glade @@ -17,7 +17,9 @@ GDK_WINDOW_TYPE_HINT_NORMAL GDK_GRAVITY_NORTH_WEST True + False + @@ -51,185 +53,143 @@ - + + True + False + 6 + + + + True + A_ccount: + True + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0.5 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + False + False + + + + + + True + + False + True + + + 0 + False + False + + + + + + + + + 0 + True + True + + + + + + True + False + 6 + + + + True + _Protocol: + True + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0.5 + 0 + 0 + uid_entry + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + False + False + + + + + + True + + False + True + + + + 0 + False + False + + + + + + True + + False + True + + + 0 + True + True + + + + + 0 + True + True + + + + + 6 True - 7 + 4 2 False 6 6 - + True - True - A_llow this contact to view my status - True - GTK_RELIEF_NORMAL - True - True - False - True - - - 1 - 2 - 6 - 7 - fill - - - - - - - True - - False - True - True - - - 1 - 2 - 5 - 6 - fill - - - - - - True - True - True - True - 0 - - True - * - True - - - 1 - 2 - 4 - 5 - - - - - - - True - False - False - True - 0 - - True - * - False - - - 1 - 2 - 3 - 4 - - - - - - - True - _Group: - True - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 5 - 6 - fill - - - - - - - True - _Nickname: - True - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - nickname_entry - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 4 - 5 - fill - - - - - - - True - _Jabber ID: - True - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 3 - 4 - fill - - - - - - - True - _Account: + _User ID: True False GTK_JUSTIFY_LEFT @@ -239,6 +199,7 @@ 0.5 0 0 + uid_entry PANGO_ELLIPSIZE_NONE -1 False @@ -267,139 +228,129 @@ True - - 1 - 2 - 2 - 3 - - - - - - - True - _User ID: - True - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - uid_entry - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 2 - 3 - fill - - - - - - - True - _Protocol: - True - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - uid_entry - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 1 - 2 - fill - - - - - - - True - False - 0 - - - - True - - False - True - - - 0 - False - False - - - - - - - 1 2 0 1 - fill - fill + - + True - False - 0 + _Nickname: + True + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0.5 + 0 + 0 + nickname_entry + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + 1 + 1 + 2 + fill + + + - - - True - - False - True - - - - 0 - False - False - - - - - - + + + True + True + True + True + 0 + + True + * + True 1 2 1 2 + + + + + + + True + _Group: + True + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0.5 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + 1 + 2 + 3 fill - fill + + + + + + + True + + False + True + True + + + 1 + 2 + 2 + 3 + fill + + + + + + True + True + A_llow this contact to view my status + True + GTK_RELIEF_NORMAL + True + True + False + True + + + 1 + 2 + 3 + 4 + fill + @@ -411,7 +362,7 @@ - + 6 True True @@ -447,6 +398,91 @@ + + + True + False + 6 + + + + True + You have to register to this transport +to be able to add a contact from this +protocol. Click on register button to +proceed. + False + False + GTK_JUSTIFY_LEFT + True + False + 0 + 0.5 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + True + True + + + + + + True + True + True + _Register + True + GTK_RELIEF_NORMAL + True + + + + 0 + False + False + + + + + 0 + True + True + + + + + + True + You must be connected to the transport to be able +to add a contact from this protocol. + False + False + GTK_JUSTIFY_LEFT + False + False + 0.5 + 0.5 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + False + False + + + 5 @@ -468,78 +504,16 @@ - + True True True True + gtk-add + True GTK_RELIEF_NORMAL True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - gtk-ok - 4 - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - True - _Subscribe - True - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - + diff --git a/data/glade/advanced_menuitem_menu.glade b/data/glade/advanced_menuitem_menu.glade index 8ab4ac0e5..c1cd77edf 100644 --- a/data/glade/advanced_menuitem_menu.glade +++ b/data/glade/advanced_menuitem_menu.glade @@ -30,6 +30,13 @@ + + + _Privacy Lists + True + + + diff --git a/data/glade/advanced_notifications_window.glade b/data/glade/advanced_notifications_window.glade index f37f02bb8..5daab3488 100644 --- a/data/glade/advanced_notifications_window.glade +++ b/data/glade/advanced_notifications_window.glade @@ -17,6 +17,7 @@ False GDK_WINDOW_TYPE_HINT_NORMAL GDK_GRAVITY_NORTH_WEST + True @@ -44,6 +45,10 @@ 0.5 0 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 0 @@ -64,264 +69,132 @@ - + True - <b>Conditions</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - True - True - True - 0 + False + 5 - + + 90 True - False - 0 + True + GTK_POLICY_NEVER + GTK_POLICY_AUTOMATIC + GTK_SHADOW_IN + GTK_CORNER_TOP_LEFT - + True True - GTK_POLICY_ALWAYS - GTK_POLICY_ALWAYS - GTK_SHADOW_IN - GTK_CORNER_TOP_LEFT - - - - True - True - True - False - False - True - - + True + False + False + True + False + False + False + - - 0 - False - False - - - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 328 - 0 - - - - True - False - 0 - - - - True - GTK_BUTTONBOX_DEFAULT_STYLE - 0 - - - - True - True - True - GTK_RELIEF_NORMAL - True - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - gtk-go-up - 4 - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - True - Up - True - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - - - - True - True - True - GTK_RELIEF_NORMAL - True - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - gtk-go-down - 4 - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - True - Down - True - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - - - 0 - True - False - - - - - - - 0 - False - False - + + 0 + False + False + - + True - List of special notifications settings - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 + 1 0.5 - 0 - 0 + 1 + 1 + 0 + 0 + 212 + 0 + + + + True + False + 0 + + + + True + GTK_BUTTONBOX_DEFAULT_STYLE + 10 + + + + True + True + True + gtk-new + True + GTK_RELIEF_NORMAL + True + + + + + + + True + True + True + gtk-go-up + True + GTK_RELIEF_NORMAL + True + + + + + + + True + True + True + gtk-go-down + True + GTK_RELIEF_NORMAL + True + + + + + + + True + True + True + gtk-delete + True + GTK_RELIEF_NORMAL + True + + + + + + 0 + True + False + + + + - label_item + 0 + False + False @@ -333,42 +206,77 @@ - + True False - 0 + 5 - + + True + <b>Conditions</b> + False + True + GTK_JUSTIFY_LEFT + False + False + 0.5 + 0.5 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + False + False + + + + + True False - 0 + 5 - + True - When - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - + False + 5 - - - True - Receive a Message + + + True + When + False + True + GTK_JUSTIFY_LEFT + False + False + 0.5 + 0.5 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + False + False + + + + + + True + Receive a Message Contact Connected Contact Disconnected Contact Change Status @@ -377,55 +285,91 @@ Group Chat Message Received File Transfert Resquest File Transfert Started File Transfert Finished + False + True + + + + 0 + False + False + + 0 - False - False - - - - - 0 - True - True - - - - - - True - False - 0 - - - - True - for - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False + True + True - + True - contact(s) + False + 5 + + + + True + for + False + True + GTK_JUSTIFY_LEFT + False + False + 0.5 + 0.5 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + False + False + + + + + + True + contact(s) group(s) everybody - + False + True + + + + 0 + False + True + + + + + + True + True + True + True + 0 + + True + * + False + + + + 0 + True + True + + 0 @@ -435,76 +379,28 @@ everybody - - True - True - True - True - 0 - - True - * - False - - - 0 - True - True - - - - - 0 - True - True - - - - - - True - False - 0 - - - - True - when I'm - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - + True False 0 - + True - True - All Status - True - GTK_RELIEF_NORMAL - True - False - False - True - + when I'm + False + True + GTK_JUSTIFY_LEFT + False + False + 0.5 + 0.5 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 0 @@ -514,17 +410,188 @@ everybody - + True - True - Some special(s) status... - True - GTK_RELIEF_NORMAL - True - False - False - True - all_status_rb + False + 3 + + + + True + True + All Status + True + GTK_RELIEF_NORMAL + True + False + False + True + + + + 0 + False + False + + + + + + True + True + Some special(s) status... + True + GTK_RELIEF_NORMAL + True + False + False + True + all_status_rb + + + 0 + False + False + + + + + + True + True + Online / Free For Chat + True + GTK_RELIEF_NORMAL + True + False + False + True + + + + 0 + False + False + + + + + + True + True + Away + True + GTK_RELIEF_NORMAL + True + False + False + True + + + + 0 + False + False + + + + + + True + True + Not Available + True + GTK_RELIEF_NORMAL + True + False + False + True + + + + 0 + False + False + + + + + + True + True + Busy + True + GTK_RELIEF_NORMAL + True + False + False + True + + + + 0 + False + False + + + + + + True + True + Invisible + True + GTK_RELIEF_NORMAL + True + False + False + True + + + + 0 + False + False + + + + + 0 + True + True + + + + + 0 + True + True + + + + + + True + False + 0 + + + + True + and I + False + True + GTK_JUSTIFY_LEFT + False + False + 0.5 + 0.5 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 0 @@ -534,16 +601,17 @@ everybody - + True True - Online / Free For Chat + Have True GTK_RELIEF_NORMAL True False False True + 0 @@ -553,16 +621,17 @@ everybody - + True True - Away + Don't have True GTK_RELIEF_NORMAL True False False True + 0 @@ -572,54 +641,22 @@ everybody - + True - True - Not Available - True - GTK_RELIEF_NORMAL - True - False - False - True - - - 0 - False - False - - - - - - True - True - Busy - True - GTK_RELIEF_NORMAL - True - False - False - True - - - 0 - False - False - - - - - - True - True - Invisible - True - GTK_RELIEF_NORMAL - True - False - False - True + a window/tab opened with that contact + False + True + GTK_JUSTIFY_LEFT + False + False + 0.5 + 0.5 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 0 @@ -643,253 +680,129 @@ everybody - + True - False - 0 - - - - True - And I - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - True - True - Have - True - GTK_RELIEF_NORMAL - True - False - False - True - - - - 0 - False - False - - - - - - True - True - Don't have - True - GTK_RELIEF_NORMAL - True - False - False - True - - - - 0 - False - False - - - - - - True - a window/tab opened with that contact - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - + <b>Actions</b> + False + True + GTK_JUSTIFY_LEFT + False + False + 0.5 + 0.5 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 0 - True - True + False + False - - - 0 - True - True - - - - - - True - <b>Actions</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - True - 0 - 0.5 - GTK_SHADOW_NONE - - True - False - 0 - - - - True - True - _Inform me with a popup window - True - GTK_RELIEF_NORMAL - True - False - False - True - - - - 0 - False - False - - - - - - True - True - _Disable existing popup window - True - GTK_RELIEF_NORMAL - True - False - False - True - - - - 0 - False - False - - - - - - - + True 0 0.5 GTK_SHADOW_NONE - - 6 + True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 12 - 0 + False + 6 - + True - False - 6 + True + _Inform me with a popup window + True + GTK_RELIEF_NORMAL + True + False + False + True + + + + 0 + False + False + + + + + + True + True + _Disable existing popup window + True + GTK_RELIEF_NORMAL + True + False + False + True + + + + 0 + False + False + + + + + + + + True + 0 + 0.5 + GTK_SHADOW_NONE + + + + 6 + True + 0.5 + 0.5 + 1 + 1 + 0 + 0 + 12 + 0 - + True - True + False 6 - + True - True - Play a sound - True - GTK_RELIEF_NORMAL - True - False - False - True - - - - 0 - True - True - - - - - - True - False + True 6 - + True True - True - True - 0 - - True - * - False - + Play a sound + True + GTK_RELIEF_NORMAL + True + False + False + True + 0 @@ -899,220 +812,246 @@ everybody - + True - True - ... - True - GTK_RELIEF_NORMAL - True - - - - 0 - False - False - - - - - - True - True - GTK_RELIEF_NORMAL - True - + False + False + 6 - + True - gtk-media-play - 4 - 0.5 - 0.5 - 0 - 0 + True + True + True + 0 + + True + * + False + + + 0 + True + True + + + + + + True + True + ... + True + GTK_RELIEF_NORMAL + True + + + + 0 + False + False + + + + + + True + True + GTK_RELIEF_NORMAL + True + + + + + True + gtk-media-play + 4 + 0.5 + 0.5 + 0 + 0 + + + + + 0 + False + False + 0 - False - False + True + True 0 - True - True + False + False + + + + + + True + True + _Disable existing sound for this event + True + GTK_RELIEF_NORMAL + True + False + False + True + + + + 0 + False + False - - 0 - False - False - - - - - - True - True - _Disable existing sound for this event - True - GTK_RELIEF_NORMAL - True - False - False - True - - - - 0 - False - False - - - - - - True - <b>Sounds</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 + + + True + <b>Sounds</b> + False + True + GTK_JUSTIFY_LEFT + False + False + 0.5 + 0.5 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + label_item + + label_item - - label_item - - - - - 0 - False - False - - - - - - True - False - 0 - - - - True - True - _Open chat window with user - True - GTK_RELIEF_NORMAL - True - False - False - True - - 0 - False - False + True + True - - True - True - _Disable auto opening chat window - True - GTK_RELIEF_NORMAL - True - False - False - True - - - - 0 - False - False - - - - - 0 - True - True - - - - - - True - True - False - 0 - - - + True False + 6 + + + + True + True + _Open chat window with user + True + GTK_RELIEF_NORMAL + True + False + False + True + + + + 0 + False + False + + + + + + True + True + _Disable auto opening chat window + True + GTK_RELIEF_NORMAL + True + False + False + True + + + + 0 + False + False + + + + + 0 + True + True + + + + + + True + True + True 0 - + True - True - 6 + False + 5 - - True - True - Launch a command - True - GTK_RELIEF_NORMAL - True - False - False - True - - - - 0 - True - True - - - - - + True False 6 - + True True + Launch a command + True + GTK_RELIEF_NORMAL + True + False + False + True + + + + 0 + False + True + + + + + + True + False + True True True 0 @@ -1120,7 +1059,7 @@ everybody True * False - + 0 @@ -1129,244 +1068,175 @@ everybody + + 0 + False + False + + + + + + True + False + 6 + + + + True + True + _Show event in systray + True + GTK_RELIEF_NORMAL + True + False + False + True + + + + 0 + False + False + + + + + + True + True + _Disable showing event in systray + True + GTK_RELIEF_NORMAL + True + False + False + True + + + + 0 + False + False + + + 0 True True + + + + True + False + 6 + + + + True + True + _Show event in roster + True + GTK_RELIEF_NORMAL + True + False + False + True + + + + 0 + False + False + + + + + + True + True + _Disable showing event in roster + True + GTK_RELIEF_NORMAL + True + False + False + True + + + + 0 + False + False + + + + + 0 + True + True + + + + + + True + True + _Activate Windows manager UrgencyHint to make chat taskbar to flash + True + GTK_RELIEF_NORMAL + True + False + False + True + + + + 0 + False + False + + - - 0 - False - False - - + True - False - 0 - - - - True - True - _Show event in systray - True - GTK_RELIEF_NORMAL - True - False - False - True - - - - 0 - False - False - - - - - - True - True - _Disable showing event in systray - True - GTK_RELIEF_NORMAL - True - False - False - True - - - - 0 - False - False - - + Advanced Actions + False + False + GTK_JUSTIFY_LEFT + False + False + 0.5 + 0.5 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 - 0 - True - True + label_item - - - - True - False - 0 - - - - True - True - _Show event in roster - True - GTK_RELIEF_NORMAL - True - False - False - True - - - - 0 - False - False - - - - - - True - True - _Disable showing event in roster - True - GTK_RELIEF_NORMAL - True - False - False - True - - - - 0 - False - False - - - - - 0 - True - True - - - - - - True - True - _Activate Windows manager UrgencyHint to make chat taskbar to flash - True - GTK_RELIEF_NORMAL - True - False - False - True - - - 0 - False - False - - - - - - - - True - Advanced Actions - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - label_item + 0 + True + True 0 - False - False - - - - - - True - True - GTK_RELIEF_NORMAL - True - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - gtk-add - 4 - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - True - Add - True - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False + True + True @@ -1383,29 +1253,15 @@ everybody 0 - + True - False - 0 - - - - True - True - True - gtk-close - True - GTK_RELIEF_NORMAL - True - - - - 0 - True - True - GTK_PACK_END - - + True + True + gtk-close + True + GTK_RELIEF_NORMAL + True + diff --git a/data/glade/chat_control_popup_menu.glade b/data/glade/chat_control_popup_menu.glade index e8a757d9e..8219a42b2 100644 --- a/data/glade/chat_control_popup_menu.glade +++ b/data/glade/chat_control_popup_menu.glade @@ -29,7 +29,7 @@ True - gtk-dialog-info + gtk-info True diff --git a/data/glade/edit_groups_dialog.glade b/data/glade/edit_groups_dialog.glade index 5cbdf5947..9cedd08bc 100644 --- a/data/glade/edit_groups_dialog.glade +++ b/data/glade/edit_groups_dialog.glade @@ -9,7 +9,7 @@ GTK_WINDOW_TOPLEVEL GTK_WIN_POS_NONE True - 260 + 290 True False True @@ -18,6 +18,7 @@ GDK_WINDOW_TYPE_HINT_NORMAL GDK_GRAVITY_NORTH_WEST True + False True @@ -159,7 +160,7 @@ True True GTK_POLICY_AUTOMATIC - GTK_POLICY_NEVER + GTK_POLICY_AUTOMATIC GTK_SHADOW_IN GTK_CORNER_TOP_LEFT diff --git a/data/glade/gc_occupants_menu.glade b/data/glade/gc_occupants_menu.glade index 52f1b04c0..43e9d0a57 100644 --- a/data/glade/gc_occupants_menu.glade +++ b/data/glade/gc_occupants_menu.glade @@ -94,7 +94,7 @@ True - gtk-dialog-info + gtk-info True diff --git a/data/glade/preferences_window.glade b/data/glade/preferences_window.glade index 8dd22fce1..f5aceb5ff 100644 --- a/data/glade/preferences_window.glade +++ b/data/glade/preferences_window.glade @@ -18,6 +18,7 @@ GDK_WINDOW_TYPE_HINT_NORMAL GDK_GRAVITY_NORTH_WEST True + False @@ -899,6 +900,7 @@ Per type True True + Επιλογή μιας γÏαμματοσειÏάς True True False @@ -950,6 +952,7 @@ Per type True True False + Επιλογή χÏώματος True @@ -968,6 +971,7 @@ Per type True True False + Επιλογή χÏώματος True @@ -1095,6 +1099,7 @@ Per type True True False + Επιλογή χÏώματος True @@ -1113,6 +1118,7 @@ Per type True True False + Επιλογή χÏώματος True @@ -2537,6 +2543,78 @@ Disabled + + + True + An example: If you have enabled status message for away, Gajim won't ask you anymore for a status message when you change your status to away; it will use the default one set here + True + False + + + + True + True + False + 0 + + + + 6 + True + True + GTK_POLICY_AUTOMATIC + GTK_POLICY_AUTOMATIC + GTK_SHADOW_IN + GTK_CORNER_TOP_LEFT + + + + True + True + True + False + False + True + False + False + False + + + + + + + + True + Default Status Messages + False + False + GTK_JUSTIFY_LEFT + False + False + 0.5 + 0.5 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + label_item + + + + + + + 0 + False + True + + + True @@ -3080,6 +3158,107 @@ Custom + + + True + 0 + 0.5 + GTK_SHADOW_NONE + + + + 6 + True + 0.5 + 0.5 + 1 + 1 + 0 + 0 + 12 + 0 + + + + True + False + 6 + + + + True + True + Notify on new _GMail email + True + GTK_RELIEF_NORMAL + True + False + False + True + + + + 0 + False + False + + + + + + True + If checked, Gajim will also include information about the sender of the new emails + True + Display _extra email details + True + GTK_RELIEF_NORMAL + True + False + False + True + + + + 0 + False + False + + + + + + + + + + True + <b>GMail Options</b> + False + True + GTK_JUSTIFY_LEFT + False + False + 0.5 + 0.5 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + label_item + + + + + 0 + False + False + + + True @@ -3145,25 +3324,6 @@ Custom False - - - - True - Notify on new _Gmail e-mail - True - GTK_RELIEF_NORMAL - True - False - False - True - - - - 0 - False - False - - diff --git a/data/glade/roster_contact_context_menu.glade b/data/glade/roster_contact_context_menu.glade index 98f5172ac..51939bb87 100644 --- a/data/glade/roster_contact_context_menu.glade +++ b/data/glade/roster_contact_context_menu.glade @@ -2,6 +2,7 @@ + @@ -11,7 +12,7 @@ True - + True gtk-jump-to 1 @@ -31,7 +32,7 @@ True - + True gtk-new 1 @@ -44,13 +45,33 @@ + + + True + In_vite to + True + + + + True + gtk-go-back + 1 + 0.5 + 0.5 + 0 + 0 + + + + + _Rename True - + True gtk-refresh 1 @@ -83,7 +104,7 @@ True - + True gtk-file 1 @@ -103,7 +124,7 @@ - + True gtk-dialog-authentication 1 @@ -123,7 +144,7 @@ True - + True gtk-info 1 @@ -137,7 +158,7 @@ - + True @@ -148,7 +169,7 @@ True - + True gtk-dialog-question 1 @@ -169,7 +190,7 @@ True - + True gtk-go-up 1 @@ -189,7 +210,7 @@ True - + True gtk-go-down 1 @@ -209,7 +230,7 @@ True - + True gtk-stop 1 @@ -232,7 +253,7 @@ True - + True gtk-add 1 @@ -251,7 +272,7 @@ True - + True gtk-remove 1 @@ -272,7 +293,7 @@ - gtk-dialog-info + gtk-info True @@ -283,7 +304,7 @@ True - + True gtk-justify-fill 1 @@ -296,4 +317,5 @@ + diff --git a/data/glade/roster_window.glade b/data/glade/roster_window.glade index fb37f4a29..94c8b896a 100644 --- a/data/glade/roster_window.glade +++ b/data/glade/roster_window.glade @@ -1,409 +1,328 @@ - - - + + + - - - 85 - 200 - Gajim - GTK_WINDOW_TOPLEVEL - GTK_WIN_POS_NONE - False - 150 - 400 - True - False - roster - True - False - False - GDK_WINDOW_TYPE_HINT_NORMAL - GDK_GRAVITY_NORTH_WEST - True - - - - - - - - True - False - 0 - - - - True - - - - True - _Actions - True - - - - - - - - True - _Start Chat - True - - - - True - gtk-jump-to - 1 - 0.5 - 0.5 - 0 - 0 - - - - - - - - True - _Group Chat - True - - - - True - gtk-connect - 1 - 0.5 - 0.5 - 0 - 0 - - - - - - - - True - - - - - - True - Add _Contact - True - - - - True - gtk-add - 1 - 0.5 - 0.5 - 0 - 0 - - - - - - - - True - _Discover Services - True - - - - True - gtk-find - 1 - 0.5 - 0.5 - 0 - 0 - - - - - - - - True - _Advanced - True - - - - - - True - Show _Offline Contacts - True - False - - - - - - - - True - - - - - - True - _Quit - True - - - - - - True - gtk-quit - 1 - 0.5 - 0.5 - 0 - 0 - - - - - - - - - - - - True - _Edit - True - - - - - - - - True - A_ccounts - True - - - - - - True - gtk-network - 1 - 0.5 - 0.5 - 0 - 0 - - - - - - - - True - File _Transfers - True - - - - - - True - gtk-file - 1 - 0.5 - 0.5 - 0 - 0 - - - - - - - - True - Profile, Avatar - True - - - - True - gtk-properties - 1 - 0.5 - 0.5 - 0 - 0 - - - - - - - - True - - - - - - True - _Preferences - True - - - - - - True - gtk-preferences - 1 - 0.5 - 0.5 - 0 - 0 - - - - - - - - - - - - True - _Help - True - - - - - - - True - Help online - _Contents - True - - - - - True - gtk-help - 1 - 0.5 - 0.5 - 0 - 0 - - - - - - - - True - Frequently Asked Questions (online) - _FAQ - True - - - - - - - True - gtk-about - True - - - - - - - - - - 0 - False - False - - - - - - 2 - True - True - GTK_POLICY_NEVER - GTK_POLICY_AUTOMATIC - GTK_SHADOW_NONE - GTK_CORNER_TOP_LEFT - - - - True - True - False - False - True - True - False - False - False - - - - - - - - - - - - - - 0 - True - True - - - - - - True - False - True - - - - 0 - False - True - - - - - + + 85 + 200 + Gajim + roster + 150 + 400 + + + + + + + True + + + True + + + True + _Actions + True + + + + + + True + _Start Chat + True + + + True + 0,000000 + 0,000000 + gtk-jump-to + 1 + + + + + + + True + _Group Chat + True + + + True + 0,000000 + 0,000000 + gtk-connect + 1 + + + + + + + True + + + + + True + Add _Contact + True + + + True + 0,000000 + 0,000000 + gtk-add + 1 + + + + + + + True + _Discover Services + True + + + True + 0,000000 + 0,000000 + gtk-find + 1 + + + + + + + True + _Advanced + True + + + + + True + Show _Offline Contacts + True + + + + + + + True + + + + + True + _Quit + True + + + + + True + 0,000000 + 0,000000 + gtk-quit + 1 + + + + + + + + + + + True + _Edit + True + + + + + + True + A_ccounts + True + + + + + True + 0,000000 + 0,000000 + gtk-network + 1 + + + + + + + True + File _Transfers + True + + + + + True + 0,000000 + 0,000000 + 1 + + + + + + + True + Profile, Avatar + True + + + True + 0,000000 + 0,000000 + gtk-properties + 1 + + + + + + + True + + + + + True + _Preferences + True + + + + + True + 0,000000 + 0,000000 + gtk-preferences + 1 + + + + + + + + + + + True + _Help + True + + + + + True + Help online + _Contents + True + + + + True + 0,000000 + 0,000000 + gtk-help + 1 + + + + + + + True + Frequently Asked Questions (online) + _FAQ + True + + + + + + True + gtk-about + True + True + + + + + + + + + + False + False + + + + + True + True + 2 + GTK_POLICY_NEVER + GTK_POLICY_AUTOMATIC + + + True + True + False + True + + + + + + + + + + + + + + 1 + + + + + True + + + + False + 2 + + + + + diff --git a/data/glade/service_discovery_window.glade b/data/glade/service_discovery_window.glade index 09d18aa94..d2ec09f86 100644 --- a/data/glade/service_discovery_window.glade +++ b/data/glade/service_discovery_window.glade @@ -2,6 +2,7 @@ + 6 @@ -19,6 +20,7 @@ GDK_WINDOW_TYPE_HINT_NORMAL GDK_GRAVITY_NORTH_WEST True + False @@ -90,40 +92,18 @@ Agent JID - node - + True + 3 + 3 False - 6 - - - - True - _Address: - True - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - address_comboboxentry - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - + 0 + 6 True + False True True @@ -131,9 +111,11 @@ Agent JID - node - 0 - True - True + 1 + 2 + 1 + 2 + fill @@ -212,9 +194,41 @@ Agent JID - node - 0 - False - False + 2 + 3 + 0 + 3 + fill + + + + + + + True + _Address: + True + False + GTK_JUSTIFY_LEFT + False + False + 0.5 + 0.5 + 0 + 0 + address_comboboxentry + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + 1 + 0 + 3 + fill + @@ -227,7 +241,6 @@ Agent JID - node - 200 True True GTK_POLICY_AUTOMATIC @@ -237,7 +250,6 @@ Agent JID - node - 150 True True False @@ -374,4 +386,5 @@ Agent JID - node + diff --git a/data/glade/vcard_information_window.glade b/data/glade/vcard_information_window.glade index f33143daf..7b9eed488 100644 --- a/data/glade/vcard_information_window.glade +++ b/data/glade/vcard_information_window.glade @@ -4,8 +4,8 @@ - 6 - Contact Information + 12 + Contact Information GTK_WINDOW_TOPLEVEL GTK_WIN_POS_NONE False @@ -17,14 +17,15 @@ GDK_WINDOW_TYPE_HINT_NORMAL GDK_GRAVITY_NORTH_WEST True - - + False + + - + True False - 6 + 12 @@ -36,7 +37,7 @@ GTK_JUSTIFY_LEFT False True - 0.00999999977648 + 0 0.5 0 0 @@ -46,7 +47,7 @@ 0 - 5 + 0 False False @@ -55,7 +56,6 @@ True - True True True GTK_POS_TOP @@ -63,23 +63,23 @@ False - - 6 + + 12 True False - 6 + 12 - + True 7 2 False - 0 - 5 + 6 + 12 - + True Jabber ID: False @@ -88,7 +88,7 @@ False False 0 - 0.5 + 0 0 0 PANGO_ELLIPSIZE_NONE @@ -106,6 +106,118 @@ + + + True + Resource: + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + 1 + 1 + 2 + fill + + + + + + + True + Status: + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + 1 + 2 + 3 + fill + + + + + + + True + Client: + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + 1 + 3 + 4 + fill + + + + + + + True + OS: + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + 1 + 4 + 5 + fill + + + + True @@ -117,7 +229,7 @@ False True 0 - 0.5 + 0 5 5 PANGO_ELLIPSIZE_NONE @@ -130,311 +242,42 @@ 2 0 1 - fill - + True - Status: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 3 - 4 - fill - - - - - - - True - Nickname: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 2 - 3 - fill - - - - - - - True - Resource: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 1 - 2 - fill - - - - - - - True - Subscription: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 4 - 5 - fill - - - - - - - True - False - 0 + False + False - + True - True - False - - - - 100 - True - - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 5 - 5 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - - - 0 - False - False - - - - - - True - Ask: + True + False False GTK_JUSTIFY_LEFT False - False - 0.5 - 0.5 - 0 - 0 + True + 0 + 0 + 5 + 5 PANGO_ELLIPSIZE_NONE -1 False 0 - - 0 - False - False - - - - - - True - True - False - - - - True - - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - - - 0 - True - True - 1 2 - 4 - 5 - fill - fill - - - - - - True - Client: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 5 - 6 - fill - - - - - - - True - OS: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 6 - 7 - fill - - - - - - - True - True - - False - False - GTK_JUSTIFY_LEFT - True - True - 0 - 0.5 - 5 - 5 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 1 - 2 - 6 - 7 + 1 + 2 @@ -450,7 +293,7 @@ False True 0 - 0.5 + 0 5 5 PANGO_ELLIPSIZE_NONE @@ -461,6 +304,55 @@ 1 2 + 3 + 4 + + + + + + + True + True + + False + False + GTK_JUSTIFY_LEFT + True + True + 0 + 0 + 5 + 5 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 1 + 2 + 4 + 5 + + + + + + + True + True + _Log conversation history + True + GTK_RELIEF_NORMAL + True + True + False + True + + + 0 + 2 5 6 fill @@ -469,24 +361,178 @@ - + True True - True - True - 0 - - True - * - False + False + 0 + + + + 6 + True + 1 + 4 + False + 6 + 12 + + + + True + False + False + + + + True + + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0 + 5 + 5 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + + + 1 + 2 + 0 + 1 + + + + + + + True + False + False + + + + True + + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0 + 5 + 5 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + + + 3 + 4 + 0 + 1 + + + + + + + True + Subscription: + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + 1 + 0 + 1 + fill + + + + + + + True + Ask: + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 2 + 3 + 0 + 1 + fill + + + + + + + + + True + More + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + label_item + + - 1 + 0 2 - 2 - 3 - 2 - fill + 6 + 7 @@ -494,7 +540,7 @@ True - False + True False @@ -508,7 +554,7 @@ False True 0 - 0.5 + 0 5 5 PANGO_ELLIPSIZE_NONE @@ -521,1791 +567,12 @@ 1 2 - 3 - 4 + 2 + 3 fill - + fill - - - - True - False - False - - - - True - - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 5 - 5 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - - - 1 - 2 - 1 - 2 - fill - - - - - - 0 - False - True - - - - - - True - True - _Log conversation history - True - GTK_RELIEF_NORMAL - True - True - False - True - - - 0 - False - False - - - - - False - True - - - - - - True - Jabber - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - - 6 - True - 7 - 2 - False - 6 - 12 - - - - True - Name: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 0 - 1 - fill - - - - - - - True - True - False - True - 0 - - True - * - False - - - 1 - 2 - 0 - 1 - - - - - - - True - Phone No.: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 6 - 7 - fill - - - - - - - True - Homepage: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 5 - 6 - fill - - - - - - - True - E-Mail: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 4 - 5 - fill - - - - - - - True - Nickname: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 2 - 3 - fill - - - - - - - True - True - False - True - 0 - - True - * - False - - - 1 - 2 - 6 - 7 - - - - - - - True - True - False - True - 0 - - True - * - False - - - 1 - 2 - 5 - 6 - - - - - - - True - True - False - True - 0 - - True - * - False - - - 1 - 2 - 4 - 5 - - - - - - - True - True - False - True - 0 - - True - * - False - - - 1 - 2 - 3 - 4 - - - - - - - True - True - False - True - 0 - - True - * - False - - - 1 - 2 - 2 - 3 - - - - - - - True - True - False - 0 - - - - 6 - True - 5 - 2 - False - 6 - 12 - - - - True - Family: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 0 - 1 - fill - - - - - - - True - Given: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 1 - 2 - fill - - - - - - - True - Middle: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 2 - 3 - fill - - - - - - - True - Prefix: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 3 - 4 - fill - - - - - - - True - Suffix: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 4 - 5 - fill - - - - - - - True - True - False - True - 0 - - True - * - False - - - 1 - 2 - 0 - 1 - - - - - - - True - True - False - True - 0 - - True - * - False - - - 1 - 2 - 1 - 2 - - - - - - - True - True - False - True - 0 - - True - * - False - - - 1 - 2 - 2 - 3 - - - - - - - True - True - False - True - 0 - - True - * - False - - - 1 - 2 - 3 - 4 - - - - - - - True - True - False - True - 0 - - True - * - False - - - 1 - 2 - 4 - 5 - - - - - - - - - True - More - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - 2 - 1 - 2 - fill - fill - - - - - - True - Format: YYYY-MM-DD - True - False - - - - True - Birthday: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - - - 0 - 1 - 3 - 4 - fill - fill - - - - - False - True - - - - - - True - General - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - - 6 - True - 6 - 2 - False - 5 - 5 - - - - True - Street: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 0 - 1 - fill - - - - - - - True - Extra Address: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 1 - 2 - fill - - - - - - - True - City: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 2 - 3 - fill - - - - - - - True - State: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 3 - 4 - fill - - - - - - - True - Postal Code: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 4 - 5 - fill - - - - - - - True - Country: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 5 - 6 - fill - - - - - - - True - True - False - True - 0 - - True - * - False - - - 1 - 2 - 0 - 1 - - - - - - - True - True - False - True - 0 - - True - * - False - - - 1 - 2 - 1 - 2 - - - - - - - True - True - False - True - 0 - - True - * - False - - - 1 - 2 - 2 - 3 - - - - - - - True - True - False - True - 0 - - True - * - False - - - 1 - 2 - 3 - 4 - - - - - - - True - True - False - True - 0 - - True - * - False - - - 1 - 2 - 4 - 5 - - - - - - - True - True - False - True - 0 - - True - * - False - - - 1 - 2 - 5 - 6 - - - - - - False - True - - - - - - True - Location - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - - 6 - True - 7 - 2 - False - 6 - 12 - - - - True - Company: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 0 - 1 - fill - - - - - - - True - Department: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 1 - 2 - fill - - - - - - - True - Position: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 2 - 3 - fill - - - - - - - True - Role: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 3 - 4 - fill - - - - - - - True - True - False - True - 0 - - True - * - False - - - 1 - 2 - 0 - 1 - - - - - - - True - True - False - True - 0 - - True - * - False - - - 1 - 2 - 1 - 2 - - - - - - - True - True - False - True - 0 - - True - * - False - - - 1 - 2 - 2 - 3 - - - - - - - True - True - False - True - 0 - - True - * - False - - - 1 - 2 - 3 - 4 - - - - - - - True - True - False - 0 - - - - 6 - True - 6 - 2 - False - 5 - 5 - - - - True - Street: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 0 - 1 - fill - - - - - - - True - Extra Address: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 1 - 2 - fill - - - - - - - True - City: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 2 - 3 - fill - - - - - - - True - State: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 3 - 4 - fill - - - - - - - True - Postal Code: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 4 - 5 - fill - - - - - - - True - Country: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 5 - 6 - fill - - - - - - - True - True - False - True - 0 - - True - * - False - - - 1 - 2 - 0 - 1 - - - - - - - True - True - False - True - 0 - - True - * - False - - - 1 - 2 - 1 - 2 - - - - - - - True - True - False - True - 0 - - True - * - False - - - 1 - 2 - 2 - 3 - - - - - - - True - True - False - True - 0 - - True - * - False - - - 1 - 2 - 3 - 4 - - - - - - - True - True - False - True - 0 - - True - * - False - - - 1 - 2 - 4 - 5 - - - - - - - True - True - False - True - 0 - - True - * - False - - - 1 - 2 - 5 - 6 - - - - - - - - - True - Address - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - 2 - 6 - 7 - fill - fill - - - - - - True - Phone No.: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 4 - 5 - fill - - - - - - - True - E-Mail: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 5 - 6 - fill - - - - - - - True - True - False - True - 0 - - True - * - False - - - 1 - 2 - 4 - 5 - - - - - - - True - True - False - True - 0 - - True - * - False - - - 1 - 2 - 5 - 6 - - - - - - False - True - - - - - - True - Work - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - - 6 - True - False - 6 - - - - True - True - GTK_POLICY_AUTOMATIC - GTK_POLICY_AUTOMATIC - GTK_SHADOW_IN - GTK_CORNER_TOP_LEFT - - - - 70 - True - True - False - False - True - GTK_JUSTIFY_LEFT - GTK_WRAP_WORD - False - 0 - 0 - 0 - 0 - 0 - 0 - - - 0 @@ -2315,67 +582,42 @@ - + True False 0 - + True - 0.5 - 0.5 - 0 - 0 - - - 0 - True - True - - - - - - GTK_BUTTONBOX_SPREAD - 0 + False + False + - + True - True - True - Set _Avatar - True - GTK_RELIEF_NORMAL - True - - - - - - - True - True - True - gtk-clear - True - GTK_RELIEF_NORMAL - True - + 0.5 + 0 + 0 + 0 0 False - True + False + + + + 0 - False + True True @@ -2387,7 +629,1931 @@ - + + True + Contact + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + tab + + + + + + 12 + True + 6 + 4 + False + 6 + 12 + + + + True + True + False + 0 + + + + 6 + True + 3 + 4 + False + 6 + 12 + + + + True + True + + False + False + GTK_JUSTIFY_LEFT + False + True + 0 + 0 + 5 + 5 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 1 + 2 + 0 + 1 + + + + + + + True + True + + False + False + GTK_JUSTIFY_LEFT + False + True + 0 + 0 + 5 + 5 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 3 + 4 + 0 + 1 + + + + + + + True + True + + False + False + GTK_JUSTIFY_LEFT + False + True + 0 + 0 + 5 + 5 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 1 + 2 + 1 + 2 + + + + + + + True + True + + False + False + GTK_JUSTIFY_LEFT + False + True + 0 + 0 + 5 + 5 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 1 + 2 + 2 + 3 + + + + + + + True + True + + False + False + GTK_JUSTIFY_LEFT + False + True + 0 + 0 + 5 + 5 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 3 + 4 + 2 + 3 + + + + + + + True + Family: + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + 1 + 0 + 1 + fill + + + + + + + True + Middle: + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + 1 + 1 + 2 + fill + + + + + + + True + Prefix: + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + 1 + 2 + 3 + fill + + + + + + + True + Given: + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 2 + 3 + 0 + 1 + fill + + + + + + + True + Suffix: + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 2 + 3 + 2 + 3 + fill + + + + + + + + + True + More + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + label_item + + + + + 0 + 4 + 1 + 2 + + + + + + + True + True + False + 0 + + + + 6 + True + 3 + 4 + False + 5 + 5 + + + + True + True + + False + False + GTK_JUSTIFY_LEFT + False + True + 0 + 0 + 5 + 5 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 1 + 2 + 0 + 1 + + + + + + + True + True + + False + False + GTK_JUSTIFY_LEFT + False + True + 0 + 0 + 5 + 5 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 3 + 4 + 0 + 1 + + + + + + + True + True + + False + False + GTK_JUSTIFY_LEFT + False + True + 0 + 0 + 5 + 5 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 1 + 2 + 1 + 2 + + + + + + + True + True + + False + False + GTK_JUSTIFY_LEFT + False + True + 0 + 0 + 5 + 5 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 3 + 4 + 1 + 2 + + + + + + + True + True + + False + False + GTK_JUSTIFY_LEFT + False + True + 0 + 0 + 5 + 5 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 1 + 2 + 2 + 3 + + + + + + + True + True + + False + False + GTK_JUSTIFY_LEFT + False + True + 0 + 0 + 5 + 5 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 3 + 4 + 2 + 3 + + + + + + + True + Street: + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + 1 + 0 + 1 + fill + + + + + + + True + City: + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + 1 + 1 + 2 + fill + + + + + + + True + State: + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + 1 + 2 + 3 + fill + + + + + + + True + Extra Address: + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 2 + 3 + 0 + 1 + fill + + + + + + + True + Postal Code: + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 2 + 3 + 1 + 2 + fill + + + + + + + True + Country: + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 2 + 3 + 2 + 3 + fill + + + + + + + + + True + Address + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + label_item + + + + + 0 + 4 + 2 + 3 + + + + + + + True + Homepage: + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + 1 + 3 + 4 + + + + + + + + True + Name: + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + 1 + 0 + 1 + fill + + + + + + + True + Nickname: + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 2 + 3 + 0 + 1 + fill + + + + + + + True + Phone No.: + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + 1 + 5 + 6 + fill + + + + + + + True + Format: YYYY-MM-DD + True + False + + + + True + Birthday: + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + + + 2 + 3 + 5 + 6 + fill + + + + + + + True + E-Mail: + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0.5 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + 1 + 4 + 5 + fill + + + + + + + True + True + + False + False + GTK_JUSTIFY_LEFT + False + True + 0 + 0 + 5 + 5 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 3 + 4 + 0 + 1 + + + + + + + True + True + + False + False + GTK_JUSTIFY_LEFT + False + True + 0 + 0 + 5 + 5 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 1 + 2 + 0 + 1 + + + + + + + True + True + + False + False + GTK_JUSTIFY_LEFT + False + True + 0 + 0 + 5 + 5 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 1 + 4 + 4 + 5 + + + + + + + True + True + + False + False + GTK_JUSTIFY_LEFT + False + True + 0 + 0 + 5 + 5 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 1 + 4 + 3 + 4 + + + + + + + True + True + + False + False + GTK_JUSTIFY_LEFT + False + True + 0 + 0 + 5 + 5 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 1 + 2 + 5 + 6 + + + + + + + True + True + + False + False + GTK_JUSTIFY_LEFT + False + True + 0 + 0 + 5 + 5 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 3 + 4 + 5 + 6 + + + + + + False + True + + + + + + True + Personal Info + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + tab + + + + + + 12 + True + 5 + 4 + False + 6 + 12 + + + + True + True + + False + False + GTK_JUSTIFY_LEFT + False + True + 0 + 0 + 5 + 5 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 1 + 2 + 0 + 1 + + + + + + + True + True + + False + False + GTK_JUSTIFY_LEFT + False + True + 0 + 0 + 5 + 5 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 3 + 4 + 0 + 1 + + + + + + + True + True + + False + False + GTK_JUSTIFY_LEFT + False + True + 0 + 0 + 5 + 5 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 1 + 2 + 1 + 2 + + + + + + + True + True + + False + False + GTK_JUSTIFY_LEFT + False + True + 0 + 0 + 5 + 5 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 3 + 4 + 1 + 2 + + + + + + + True + True + + False + False + GTK_JUSTIFY_LEFT + False + True + 0 + 0 + 5 + 5 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 1 + 4 + 3 + 4 + + + + + + + True + True + False + 0 + + + + 6 + True + 3 + 4 + False + 5 + 5 + + + + True + True + + False + False + GTK_JUSTIFY_LEFT + False + True + 0 + 0 + 5 + 5 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 1 + 2 + 0 + 1 + + + + + + + True + True + + False + False + GTK_JUSTIFY_LEFT + False + True + 0 + 0 + 5 + 5 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 3 + 4 + 0 + 1 + + + + + + + True + True + + False + False + GTK_JUSTIFY_LEFT + False + True + 0 + 0 + 5 + 5 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 1 + 2 + 1 + 2 + + + + + + + True + True + + False + False + GTK_JUSTIFY_LEFT + False + True + 0 + 0 + 5 + 5 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 3 + 4 + 1 + 2 + + + + + + + True + True + + False + False + GTK_JUSTIFY_LEFT + False + True + 0 + 0 + 5 + 5 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 1 + 2 + 2 + 3 + + + + + + + True + True + + False + False + GTK_JUSTIFY_LEFT + False + True + 0 + 0 + 5 + 5 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 3 + 4 + 2 + 3 + + + + + + + True + Street: + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + 1 + 0 + 1 + fill + + + + + + + True + City: + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + 1 + 1 + 2 + fill + + + + + + + True + State: + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + 1 + 2 + 3 + fill + + + + + + + True + Extra Address: + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 2 + 3 + 0 + 1 + fill + + + + + + + True + Postal Code: + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 2 + 3 + 1 + 2 + fill + + + + + + + True + Country: + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 2 + 3 + 2 + 3 + fill + + + + + + + + + True + Address + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + label_item + + + + + 0 + 4 + 2 + 3 + + + + + + + True + True + + False + False + GTK_JUSTIFY_LEFT + False + True + 0 + 0 + 5 + 5 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 1 + 2 + 4 + 5 + + + + + + + True + Company: + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + 1 + 0 + 1 + fill + + + + + + + True + Position: + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + 1 + 1 + 2 + fill + + + + + + + True + Department: + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 2 + 3 + 0 + 1 + fill + + + + + + + True + Role: + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 2 + 3 + 1 + 2 + fill + + + + + + + True + E-Mail: + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + 1 + 3 + 4 + fill + + + + + + + True + Phone No.: + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + 1 + 4 + 5 + fill + + + + + + False + True + + + + + + True + Work + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + tab + + + + + + 6 + True + True + GTK_POLICY_AUTOMATIC + GTK_POLICY_AUTOMATIC + GTK_SHADOW_IN + GTK_CORNER_TOP_LEFT + + + + 70 + True + True + False + False + True + GTK_JUSTIFY_LEFT + GTK_WRAP_WORD + False + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + False + True + + + + + True About False @@ -2395,8 +2561,8 @@ GTK_JUSTIFY_LEFT False False - 0.5 - 0.5 + 0 + 0 0 0 PANGO_ELLIPSIZE_NONE @@ -2415,182 +2581,6 @@ True - - - - True - GTK_BUTTONBOX_END - 12 - - - - True - True - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - gtk-go-up - 4 - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - True - _Publish - True - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - - - - - - - True - True - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - gtk-go-down - 4 - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - True - _Retrieve - True - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - - - - - - - True - True - True - gtk-close - True - GTK_RELIEF_NORMAL - True - - - - - - 5 - False - True - - diff --git a/data/other/servers.xml b/data/other/servers.xml index 3c9b51bbe..bdfc9ca1f 100644 --- a/data/other/servers.xml +++ b/data/other/servers.xml @@ -79,6 +79,9 @@ + + + @@ -142,7 +145,7 @@ - + From a039917951b44d3deaa16d69f8330072132fe440 Mon Sep 17 00:00:00 2001 From: Stefan Bethge Date: Thu, 14 Sep 2006 23:41:18 +0000 Subject: [PATCH 032/110] filter own service again, users should not see themselves in the roster --- src/common/zeroconf/zeroconf.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/common/zeroconf/zeroconf.py b/src/common/zeroconf/zeroconf.py index d1bdcd486..d33b4c424 100755 --- a/src/common/zeroconf/zeroconf.py +++ b/src/common/zeroconf/zeroconf.py @@ -54,8 +54,8 @@ class Zeroconf: print "Error:", str(err) def new_service_callback(self, interface, protocol, name, stype, domain, flags): - if True: - #XXX name != self.name + # we don't want to see ourselves in the list + if name != self.name: # print "Found service '%s' in domain '%s' on %i.%i." % (name, domain, interface, protocol) #synchronous resolving From 6a21dfb6b8724367557ab39a5ab6d3cd4d453250 Mon Sep 17 00:00:00 2001 From: Stefan Bethge Date: Fri, 15 Sep 2006 03:30:52 +0000 Subject: [PATCH 033/110] fix some post-merge problems, prevent key error --- src/common/zeroconf/connection_zeroconf.py | 64 +++++++++++----------- src/common/zeroconf/zeroconf.py | 5 +- 2 files changed, 36 insertions(+), 33 deletions(-) diff --git a/src/common/zeroconf/connection_zeroconf.py b/src/common/zeroconf/connection_zeroconf.py index 88c12bd2d..5bb7c4d16 100644 --- a/src/common/zeroconf/connection_zeroconf.py +++ b/src/common/zeroconf/connection_zeroconf.py @@ -88,6 +88,8 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): self.retrycount = 0 self.jids_for_auto_auth = [] # list of jid to auto-authorize self.get_config_values_or_default() + self.muc_jid = {} # jid of muc server for each transport type + self.vcard_supported = False def get_config_values_or_default(self): ''' get name, host, port from config, or @@ -180,6 +182,7 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): # keyID, timestamp)) jid = self.zeroconf.check_jid(jid) self.dispatch('NOTIFY', (jid, 'offline', '', 'local', 0, None, 0)) + print 'connection_zeroconf:186' def connect(self, data = None, show = 'online'): @@ -243,10 +246,9 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): # 'disconnect' elif show == 'offline' and self.connected: - self.connected = 0 self.disconnect() self.dispatch('STATUS', 'offline') - + # update status elif show != 'offline' and self.connected: was_invisible = self.connected == STATUS_LIST.index('invisible') @@ -352,26 +354,26 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): pass def ack_subscribed(self, jid): - gajim.debug.log('This should not happen (ack_subscribed)') + gajim.log.debug('This should not happen (ack_subscribed)') def ack_unsubscribed(self, jid): - gajim.debug.log('This should not happen (ack_unsubscribed)') + gajim.log.debug('This should not happen (ack_unsubscribed)') def request_subscription(self, jid, msg = '', name = '', groups = [], auto_auth = False): - gajim.debug.log('This should not happen (request_subscription)') + gajim.log.debug('This should not happen (request_subscription)') def send_authorization(self, jid): - gajim.debug.log('This should not happen (send_authorization)') + gajim.log.debug('This should not happen (send_authorization)') def refuse_authorization(self, jid): - gajim.debug.log('This should not happen (refuse_authorization)') + gajim.log.debug('This should not happen (refuse_authorization)') def unsubscribe(self, jid, remove_auth = True): - gajim.debug.log('This should not happen (unsubscribe)') + gajim.log.debug('This should not happen (unsubscribe)') def unsubscribe_agent(self, agent): - gajim.debug.log('This should not happen (unsubscribe_agent)') + gajim.log.debug('This should not happen (unsubscribe_agent)') def update_contact(self, jid, name, groups): if self.connection: @@ -379,17 +381,17 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): groups = groups) def new_account(self, name, config, sync = False): - gajim.debug.log('This should not happen (new_account)') + gajim.log.debug('This should not happen (new_account)') def _on_new_account(self, con = None, con_type = None): - gajim.debug.log('This should not happen (_on_new_account)') + gajim.log.debug('This should not happen (_on_new_account)') def account_changed(self, new_name): self.name = new_name def request_last_status_time(self, jid, resource): - gajim.debug.log('This should not happen (request_last_status_time)') - + gajim.log.debug('This should not happen (request_last_status_time)') + def request_os_info(self, jid, resource): ''' if not self.connection: @@ -404,52 +406,52 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): pass def get_settings(self): - gajim.debug.log('This should not happen (get_settings)') + gajim.log.debug('This should not happen (get_settings)') def get_bookmarks(self): - gajim.debug.log('This should not happen (get_bookmarks)') + gajim.log.debug('This should not happen (get_bookmarks)') def store_bookmarks(self): - gajim.debug.log('This should not happen (store_bookmarks)') + gajim.log.debug('This should not happen (store_bookmarks)') def get_metacontacts(self): - gajim.debug.log('This should not happen (get_metacontacts)') + gajim.log.debug('This should not happen (get_metacontacts)') def send_agent_status(self, agent, ptype): - gajim.debug.log('This should not happen (send_agent_status)') + gajim.log.debug('This should not happen (send_agent_status)') def join_gc(self, nick, room, server, password): - gajim.debug.log('This should not happen (join_gc)') + gajim.log.debug('This should not happen (join_gc)') def send_gc_message(self, jid, msg): - gajim.debug.log('This should not happen (send_gc_message)') + gajim.log.debug('This should not happen (send_gc_message)') def send_gc_subject(self, jid, subject): - gajim.debug.log('This should not happen (send_gc_subject)') + gajim.log.debug('This should not happen (send_gc_subject)') def request_gc_config(self, room_jid): - gajim.debug.log('This should not happen (request_gc_config)') + gajim.log.debug('This should not happen (request_gc_config)') def change_gc_nick(self, room_jid, nick): - gajim.debug.log('This should not happen (change_gc_nick)') + gajim.log.debug('This should not happen (change_gc_nick)') def send_gc_status(self, nick, jid, show, status): - gajim.debug.log('This should not happen (send_gc_status)') + gajim.log.debug('This should not happen (send_gc_status)') def gc_set_role(self, room_jid, nick, role, reason = ''): - gajim.debug.log('This should not happen (gc_set_role)') + gajim.log.debug('This should not happen (gc_set_role)') def gc_set_affiliation(self, room_jid, jid, affiliation, reason = ''): - gajim.debug.log('This should not happen (gc_set_affiliation)') + gajim.log.debug('This should not happen (gc_set_affiliation)') def send_gc_affiliation_list(self, room_jid, list): - gajim.debug.log('This should not happen (send_gc_affiliation_list)') + gajim.log.debug('This should not happen (send_gc_affiliation_list)') def get_affiliation_list(self, room_jid, affiliation): - gajim.debug.log('This should not happen (get_affiliation_list)') + gajim.log.debug('This should not happen (get_affiliation_list)') def send_gc_config(self, room_jid, config): - gajim.debug.log('This should not happen (send_gc_config)') + gajim.log.debug('This should not happen (send_gc_config)') def gpg_passphrase(self, passphrase): if USE_GPG: @@ -486,10 +488,10 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): pass def unregister_account(self, on_remove_success): - gajim.debug.log('This should not happen (unregister_account)') + gajim.log.debug('This should not happen (unregister_account)') def send_invite(self, room, to, reason=''): - gajim.debug.log('This should not happen (send_invite)') + gajim.log.debug('This should not happen (send_invite)') def send_keepalive(self): # nothing received for the last foo seconds (60 secs by default) diff --git a/src/common/zeroconf/zeroconf.py b/src/common/zeroconf/zeroconf.py index d33b4c424..da5b76ce8 100755 --- a/src/common/zeroconf/zeroconf.py +++ b/src/common/zeroconf/zeroconf.py @@ -65,8 +65,9 @@ class Zeroconf: def remove_service_callback(self, interface, protocol, name, stype, domain, flags): # print "Service '%s' in domain '%s' on %i.%i disappeared." % (name, domain, interface, protocol) - del self.contacts[name] - self.remove_serviceCB(name) + if name != self.name: + del self.contacts[name] + self.remove_serviceCB(name) def new_service_type(self, interface, protocol, stype, domain, flags): # Are we already browsing this domain for this type? From 99265c0430cbafc857cdff327bc61939c46286f9 Mon Sep 17 00:00:00 2001 From: Dimitur Kirov Date: Sun, 17 Sep 2006 14:45:58 +0000 Subject: [PATCH 034/110] add fake store_metacontacts method --- src/common/zeroconf/connection_handlers_zeroconf.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/common/zeroconf/connection_handlers_zeroconf.py b/src/common/zeroconf/connection_handlers_zeroconf.py index 12d46ab3a..758a181e2 100644 --- a/src/common/zeroconf/connection_handlers_zeroconf.py +++ b/src/common/zeroconf/connection_handlers_zeroconf.py @@ -294,7 +294,12 @@ class ConnectionHandlersZeroconf(ConnectionVcard): dic[i]['values'] = [dic[i]['options'][0]['values'][0]] i += 1 return dic - + + def store_metacontacts(self, tags): + ''' fake empty method ''' + # serverside metacontacts are not supported with zeroconf + # (there is no server) + pass def remove_transfers_for_contact(self, contact): ''' stop all active transfer for contact ''' '''for file_props in self.files_props.values(): From fd7eead5ddf97e1a14bef9d3c57b7e876486cfce Mon Sep 17 00:00:00 2001 From: Dimitur Kirov Date: Sun, 17 Sep 2006 15:07:35 +0000 Subject: [PATCH 035/110] add property bare_name in zeroconf.contacts[..] property list. Using it, instead of bad-client --- src/common/zeroconf/connection_zeroconf.py | 3 +- src/common/zeroconf/roster_zeroconf.py | 24 +++++--- src/common/zeroconf/zeroconf.py | 68 ++++++++++------------ 3 files changed, 48 insertions(+), 47 deletions(-) diff --git a/src/common/zeroconf/connection_zeroconf.py b/src/common/zeroconf/connection_zeroconf.py index 5bb7c4d16..726f7f0d0 100644 --- a/src/common/zeroconf/connection_zeroconf.py +++ b/src/common/zeroconf/connection_zeroconf.py @@ -164,8 +164,7 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): diffs = self.roster.getDiffs() for key in diffs: self.roster.setItem(key) - display_key = self.zeroconf.check_jid(key) - self.dispatch('NOTIFY', (display_key, self.roster.getStatus(key), self.roster.getMessage(key), 'local', 0, None, 0)) + self.dispatch('NOTIFY', (key, self.roster.getStatus(key), self.roster.getMessage(key), 'local', 0, None, 0)) return self.call_resolve_timeout # callbacks called from zeroconf diff --git a/src/common/zeroconf/roster_zeroconf.py b/src/common/zeroconf/roster_zeroconf.py index 1a8a3e351..99a3bc461 100644 --- a/src/common/zeroconf/roster_zeroconf.py +++ b/src/common/zeroconf/roster_zeroconf.py @@ -21,8 +21,8 @@ class Roster: self.zeroconf = zeroconf # our zeroconf instance def update_roster(self): - for (jid, dom, interf, proto, host, addr, port, txt) in self.zeroconf.get_contacts().values(): - self.setItem(jid) + for val in self.zeroconf.contacts.values(): + self.setItem(val[zeroconf.C_NAME]) def getRoster(self): #print 'roster_zeroconf.py: getRoster' @@ -47,7 +47,7 @@ class Roster: def setItem(self, jid, name = '', groups = ''): #print 'roster_zeroconf.py: setItem %s' % jid - (service_jid, domain, interface, protocol, host, address, port, txt) \ + (service_jid, domain, interface, protocol, host, address, port, bare_jid, txt) \ = self.zeroconf.get_contact(jid) self._data[jid]={} @@ -63,19 +63,25 @@ class Roster: status = txt_dict['status'] else: status = '' - if txt_dict.has_key('1st') and txt_dict.has_key('last'): - self._data[jid]['name']=txt_dict['1st']+' '+txt_dict['last'] + nm = '' + if txt_dict.has_key('1st'): + nm = txt_dict['1st'] + if txt_dict.has_key('last'): + if nm != '': + nm = +' ' + nm += txt_dict['last'] + if nm: + self._data[jid]['name'] = nm else: - self._data[jid]['name']=jid - if status == 'avail': status = 'online' + self._data[jid]['name'] = jid + if status == 'avail': + status = 'online' self._data[jid]['txt_dict'] = txt_dict if not self._data[jid]['txt_dict'].has_key('msg'): self._data[jid]['txt_dict']['msg'] = '' self._data[jid]['status'] = status self._data[jid]['show'] = status - # print self._data[jid] - def delItem(self, jid): #print 'roster_zeroconf.py: delItem %s' % jid if self._data.has_key(jid): diff --git a/src/common/zeroconf/zeroconf.py b/src/common/zeroconf/zeroconf.py index da5b76ce8..47448320b 100755 --- a/src/common/zeroconf/zeroconf.py +++ b/src/common/zeroconf/zeroconf.py @@ -21,13 +21,17 @@ from common import xmpp try: import avahi, gobject, dbus except ImportError: - print "Error: python-avahi and python-dbus need to be installed. No zeroconf support." + gajim.log.debug("Error: python-avahi and python-dbus need to be installed. No zeroconf support.") try: import dbus.glib except ImportError, e: pass + +C_NAME, C_DOMAIN, C_INTERFACE, C_PROTOCOL, C_HOST, \ +C_ADDRESS, C_PORT, C_BARE_NAME, C_TXT = range(9) + class Zeroconf: def __init__(self, new_serviceCB, remove_serviceCB, name, host, port): self.domain = None # specific domain to browse @@ -66,8 +70,11 @@ class Zeroconf: def remove_service_callback(self, interface, protocol, name, stype, domain, flags): # print "Service '%s' in domain '%s' on %i.%i disappeared." % (name, domain, interface, protocol) if name != self.name: - del self.contacts[name] - self.remove_serviceCB(name) + for key in self.contacts.keys(): + if self.contacts[key][C_BARE_NAME] == name: + del self.contacts[key] + self.remove_serviceCB(key) + return def new_service_type(self, interface, protocol, stype, domain, flags): # Are we already browsing this domain for this type? @@ -88,23 +95,6 @@ class Zeroconf: if domain != "local": self.browse_domain(interface, protocol, domain) - def check_jid(self, jid): - # TODO: at least miranda uses bad service names(only host name), so change them - probabaly not so nice... need to find a better solution - # this is necessary so they don't get displayed as a transport - # [dkirov] maybe turn it into host+'@'+host, instead ? - # [sb] that would mean we can't do recreate below - if jid.find('@') == -1: - return 'bad-client@' + jid - else: - return jid - - def recreate_bad_jid(self,jid): - at = jid.find('@') - if jid[:at] == 'bad-client': - return jid[at+1:] - else: - return jid - def txt_array_to_dict(self,txt_array): items = {} @@ -117,16 +107,23 @@ class Zeroconf: def service_resolved_callback(self, interface, protocol, name, stype, domain, host, aprotocol, address, port, txt, flags): print "Service data for service '%s' in domain '%s' on %i.%i:" % (name, domain, interface, protocol) - print "\tHost %s (%s), port %i, TXT data: %s" % (host, address, port, str(avahi.txt_array_to_string_array(txt))) - self.contacts[name] = (name, domain, interface, protocol, host, address, port, txt) + print "\tHost %s (%s), port %i, TXT data: %s" % (host, address, port, avahi.txt_array_to_string_array(txt)) + bare_name = name + if name.find('@') == -1: + name = name + '@' + name + + self.contacts[name] = (name, domain, interface, protocol, host, address, port, + bare_name, txt) self.new_serviceCB(name) # different handler when resolving all contacts def service_resolved_all_callback(self, interface, protocol, name, stype, domain, host, aprotocol, address, port, txt, flags): #print "Service data for service '%s' in domain '%s' on %i.%i:" % (name, domain, interface, protocol) #print "\tHost %s (%s), port %i, TXT data: %s" % (host, address, port, str(avahi.txt_array_to_string_array(txt))) - - self.contacts[name] = (name, domain, interface, protocol, host, address, port, txt) + bare_name = name + if name.find('@') == -1: + name = name + '@' + name + self.contacts[name] = (name, domain, interface, protocol, host, address, port, bare_name, txt) def service_added_callback(self): # print 'Service successfully added' @@ -255,6 +252,9 @@ class Zeroconf: return True + def check_jid(self, jid): + return jid + def disconnect(self): if self.connected: self.connected = False @@ -263,17 +263,15 @@ class Zeroconf: # refresh txt data of all contacts manually (no callback available) def resolve_all(self): for val in self.contacts.values(): - #val:(name, domain, interface, protocol, host, address, port, txt) - self.server.ResolveService(int(val[2]), int(val[3]), val[0], \ - self.stype, val[1], avahi.PROTO_UNSPEC, dbus.UInt32(0),\ + self.server.ResolveService(int(val[C_INTERFACE]), int(val[C_PROTOCOL]), val[C_BARE_NAME], \ + self.stype, val[C_DOMAIN], avahi.PROTO_UNSPEC, dbus.UInt32(0),\ reply_handler=self.service_resolved_all_callback, error_handler=self.print_error_callback) def get_contacts(self): return self.contacts def get_contact(self, jid): - if self.contacts.has_key(jid): - return self.contacts[jid] + return self.contacts[jid] def update_txt(self, txt): # update only given keys @@ -301,14 +299,12 @@ class Zeroconf: def send_message(self, jid, msg, type = 'chat'): print 'zeroconf.py: send_message:'+ msg - jid = self.recreate_bad_jid(jid) - - sock = socket.socket ( socket.AF_INET, socket.SOCK_STREAM ) - #sock.setblocking(False) - - sock.connect ( ( self.contacts[jid][4], self.contacts[jid][6] ) ) - print (self.txt_array_to_dict(self.contacts[jid][7]))['port.p2pj'] + sock = socket.socket ( socket.AF_INET, socket.SOCK_STREAM ) + #sock.setblocking(False) + sock.connect ( ( self.contacts[jid][C_ADDRESS], self.contacts[jid][C_PORT] ) ) + + #print (self.txt_array_to_dict(self.contacts[jid][C_TXT]))['port.p2pj'] #was for adium which uses the txt record #sock.connect ( ( self.contacts[jid][5], int((self.txt_array_to_dict(self.contacts[jid][7]))['port.p2pj']) ) ) From 77d45f5d2c823ec09c768aeff644fe89840ff219 Mon Sep 17 00:00:00 2001 From: Stefan Bethge Date: Sun, 17 Sep 2006 15:35:04 +0000 Subject: [PATCH 036/110] rest of the r6870 merge... --- Changelog | 15 +- Makefile | 5 +- THANKS | 3 + data/glade/privacy_list_edit_window.glade | 779 ++ data/glade/privacy_lists_first_window.glade | 255 + data/glade/profile_window.glade | 1968 +++++ .../transports/gadu-gadu/16x16/away.png | Bin 0 -> 919 bytes .../transports/gadu-gadu/16x16/chat.png | Bin 0 -> 944 bytes .../transports/gadu-gadu/16x16/dnd.png | Bin 0 -> 919 bytes .../transports/gadu-gadu/16x16/offline.png | Bin 0 -> 944 bytes .../transports/gadu-gadu/16x16/online.png | Bin 0 -> 944 bytes .../transports/gadu-gadu/16x16/xa.png | Bin 0 -> 919 bytes .../transports/gadu-gadu/32x32/away.png | Bin 0 -> 2241 bytes .../transports/gadu-gadu/32x32/chat.png | Bin 0 -> 2274 bytes .../transports/gadu-gadu/32x32/dnd.png | Bin 0 -> 2241 bytes .../transports/gadu-gadu/32x32/offline.png | Bin 0 -> 2328 bytes .../transports/gadu-gadu/32x32/online.png | Bin 0 -> 2274 bytes .../transports/gadu-gadu/32x32/xa.png | Bin 0 -> 2241 bytes .../transports/gadu-gadu/48x48/offline.png | Bin 0 -> 3759 bytes .../transports/gadu-gadu/48x48/online.png | Bin 0 -> 3759 bytes data/pixmaps/events/connection_lost.png | Bin 0 -> 2873 bytes data/pixmaps/person.png | Bin 0 -> 594 bytes debian/README.Debian | 6 - debian/control | 2 +- debian/copyright | 3 + debian/patches/00_debian-copying.patch | 18 +- gajim.iss | 3 +- launch.sh | 4 +- po/Makefile | 10 +- po/POTFILES.in | 86 +- po/bg.po | 5450 ++++++++------ po/br.po | 5669 ++++++++++++++ po/cs.po | 5557 ++++++++------ po/de.po | 6024 ++++++++------- po/el.po | 5566 +++++++------- po/eo.po | 5277 +++++++++++++ po/es.po | 6016 ++++++++------- po/eu.po | 6441 ++++++++-------- po/fr.po | 6280 +++++++++------- po/gajim.pot | 5173 +++++++------ po/hr.po | 5267 +++++++++++++ po/it.po | 5548 +++++++------- po/nb.po | 6023 ++++++++------- po/nl.po | 5565 +++++++------- po/no.po | 6023 ++++++++------- po/pl.po | 5626 +++++++------- po/pt.po | 5577 +++++++------- po/pt_BR.po | 6110 +++++++++------- po/ru.po | 5711 ++++++++------- po/sk.po | 6499 ++++++++++------- po/sv.po | 6093 +++++++++------- po/zh_CN.po | 5420 ++++++++------ scripts/gajim | 4 +- 53 files changed, 81420 insertions(+), 48656 deletions(-) create mode 100644 data/glade/privacy_list_edit_window.glade create mode 100644 data/glade/privacy_lists_first_window.glade create mode 100644 data/glade/profile_window.glade create mode 100644 data/iconsets/transports/gadu-gadu/16x16/away.png create mode 100644 data/iconsets/transports/gadu-gadu/16x16/chat.png create mode 100644 data/iconsets/transports/gadu-gadu/16x16/dnd.png create mode 100644 data/iconsets/transports/gadu-gadu/16x16/offline.png create mode 100644 data/iconsets/transports/gadu-gadu/16x16/online.png create mode 100644 data/iconsets/transports/gadu-gadu/16x16/xa.png create mode 100644 data/iconsets/transports/gadu-gadu/32x32/away.png create mode 100644 data/iconsets/transports/gadu-gadu/32x32/chat.png create mode 100644 data/iconsets/transports/gadu-gadu/32x32/dnd.png create mode 100644 data/iconsets/transports/gadu-gadu/32x32/offline.png create mode 100644 data/iconsets/transports/gadu-gadu/32x32/online.png create mode 100644 data/iconsets/transports/gadu-gadu/32x32/xa.png create mode 100644 data/iconsets/transports/gadu-gadu/48x48/offline.png create mode 100644 data/iconsets/transports/gadu-gadu/48x48/online.png create mode 100644 data/pixmaps/events/connection_lost.png create mode 100644 data/pixmaps/person.png delete mode 100644 debian/README.Debian create mode 100644 po/br.po create mode 100644 po/eo.po create mode 100644 po/hr.po diff --git a/Changelog b/Changelog index 660e4aa0e..7856b930b 100644 --- a/Changelog +++ b/Changelog @@ -1,4 +1,17 @@ -Gajim 0.10 (XX May 2006) +Gajim 0.10.1 (06 June 2006) + + * freeze and lost contacts in roster (#1953) + * popup menus are correctly placed + * high CPU usage on FreeBSD (#1963) + * nickname can contain '|' (#1913) + * update pl, cs, fr translations + * don't play sound, when no event is shown (#1970) + * set gajim icon for history manager + * gajim.desktop is generated with translation (#834) + * preventing several TBs and annoyances (r6273, r6275, r6279, r6301, + r6308, r6311, r6323, r6326, r6327, r6335, r6342, r6346, r6348) + +Gajim 0.10 (01 May 2006) * One Messages Window ability (default to it) with tab reordering ability * Non blocking socket connections. Gajim no longer remains unresponsive. diff --git a/Makefile b/Makefile index 796a961b2..45d58fa35 100644 --- a/Makefile +++ b/Makefile @@ -87,9 +87,12 @@ install: mkdir -p "$(DESTDIR)$(PREFIX)/share/locale/$$d"; \ fi; \ done - ${MAKE} -C po install PREFIX=$(PREFIX) + if [[ -n $$(find po -name *.mo) ]]; then \ + ${MAKE} -C po install PREFIX=$(PREFIX) ; \ + fi cp COPYING "$(DESTDIR)$(PREFIX)/share/gajim/"; cp THANKS "$(DESTDIR)$(PREFIX)/share/gajim/"; + cp AUTHORS "$(DESTDIR)$(PREFIX)/share/gajim/"; mkdir -p "$(DESTDIR)$(PREFIX)/share/pixmaps"; cp data/pixmaps/gajim.png "$(DESTDIR)$(PREFIX)/share/pixmaps/"; cp data/pixmaps/gajim_about.png "$(DESTDIR)$(PREFIX)/share/pixmaps/"; diff --git a/THANKS b/THANKS index 0042b104f..46f6ccaad 100644 --- a/THANKS +++ b/THANKS @@ -1,8 +1,10 @@ Alexander Futász +Alexander V. Butenko Alexey Nezhdanov Alfredo Junix Anders Ström Andrew Sayman +Anton Shmigirilov Christian Bjälevik Christophe Got Christoph Neuroth @@ -17,6 +19,7 @@ Geobert Quach Guillaume Morin Gustavo J. A. M. Carneiro Ivo Anjo +Julien Pivotto Juraj Michalek Luis Peralta Michele Campeotto diff --git a/data/glade/privacy_list_edit_window.glade b/data/glade/privacy_list_edit_window.glade new file mode 100644 index 000000000..1f14d6b71 --- /dev/null +++ b/data/glade/privacy_list_edit_window.glade @@ -0,0 +1,779 @@ + + + + + + + 6 + True + Privacy List + GTK_WINDOW_TOPLEVEL + GTK_WIN_POS_NONE + False + False + False + True + False + False + GDK_WINDOW_TYPE_HINT_NORMAL + GDK_GRAVITY_NORTH_WEST + True + False + + + + + 600 + True + False + 0 + + + + True + True + 0 + + + + True + <i>Privacy List</i> + False + True + GTK_JUSTIFY_LEFT + False + False + 0.5 + 0.5 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + False + False + + + + + + True + True + Active for this session + True + GTK_RELIEF_NORMAL + True + False + False + True + + + + 0 + False + False + + + + + + True + True + Active on each startup + True + GTK_RELIEF_NORMAL + True + False + False + True + + + + 0 + False + False + + + + + 0 + False + True + + + + + + True + + + 5 + False + False + + + + + + True + <b>List of rules</b> + False + True + GTK_JUSTIFY_LEFT + False + False + 0.5 + 0.5 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 5 + False + False + + + + + + True + + False + True + + + + 5 + False + True + + + + + + True + True + 0 + + + + 5 + True + True + gtk-add + True + GTK_RELIEF_NORMAL + True + + + + 0 + False + False + + + + + + 5 + True + True + gtk-remove + True + GTK_RELIEF_NORMAL + True + + + + 0 + False + False + + + + + + 6 + True + True + gtk-edit + True + GTK_RELIEF_NORMAL + True + + + + 0 + False + False + + + + + 0 + False + True + + + + + + 5 + False + 0 + + + + True + + + 5 + True + True + + + + + + True + <b>Add / Edit a rule</b> + False + True + GTK_JUSTIFY_LEFT + False + False + 0.5 + 0.5 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 5 + False + False + + + + + + True + False + 0 + + + + True + True + 0 + + + + True + True + Allow + True + GTK_RELIEF_NORMAL + True + False + False + True + + + 0 + False + False + + + + + + True + True + Deny + True + GTK_RELIEF_NORMAL + True + False + False + True + edit_allow_radiobutton + + + 0 + False + False + + + + + 0 + True + True + + + + + + True + True + 0 + + + + 5 + True + False + 0 + + + + True + True + JabberID + True + GTK_RELIEF_NORMAL + True + False + False + True + + + 5 + False + False + + + + + + True + True + True + True + 0 + + True + â— + False + + + 5 + True + True + + + + + 0 + True + True + + + + + + 5 + True + False + 0 + + + + True + True + all in the group + True + GTK_RELIEF_NORMAL + True + False + False + True + edit_type_jabberid_radiobutton + + + 5 + False + False + + + + + + True + + False + True + + + 5 + True + True + + + + + 0 + True + True + + + + + + 5 + True + False + 0 + + + + True + True + all by subscription + True + GTK_RELIEF_NORMAL + True + False + False + True + edit_type_jabberid_radiobutton + + + 5 + False + False + + + + + + True + none +both +from +to + False + True + + + 5 + True + True + + + + + 0 + True + True + + + + + + 10 + True + False + 0 + + + + True + True + All + True + GTK_RELIEF_NORMAL + True + False + False + True + edit_type_jabberid_radiobutton + + + 0 + False + False + + + + + 0 + False + False + + + + + 0 + True + True + + + + + + True + True + 0 + + + + True + True + to send me messages + True + GTK_RELIEF_NORMAL + True + False + False + True + + + 0 + False + False + + + + + + True + True + to send me queries + True + GTK_RELIEF_NORMAL + True + False + False + True + + + 0 + False + False + + + + + + True + True + to view my status + True + GTK_RELIEF_NORMAL + True + False + False + True + + + 0 + False + False + + + + + + True + True + to send me status + True + GTK_RELIEF_NORMAL + True + False + False + True + + + 0 + False + False + + + + + 0 + True + True + + + + + 0 + True + True + + + + + + True + True + 0 + + + + True + False + 0 + + + + True + Order: + False + False + GTK_JUSTIFY_LEFT + False + False + 0.5 + 0.5 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 5 + False + False + + + + + + True + True + 1 + 0 + False + GTK_UPDATE_ALWAYS + False + False + 1 0 100 1 10 10 + + + 0 + False + True + + + + + 0 + True + True + + + + + + 5 + True + True + gtk-save + True + GTK_RELIEF_NORMAL + True + + + + 0 + False + False + + + + + 0 + True + True + + + + + 0 + True + True + + + + + + True + + + 0 + False + True + + + + + + True + True + 0 + + + + 5 + True + True + gtk-refresh + True + GTK_RELIEF_NORMAL + True + + + + 0 + False + False + + + + + + 5 + True + True + gtk-close + True + GTK_RELIEF_NORMAL + True + + + + 0 + False + False + + + + + 0 + False + True + + + + + + + diff --git a/data/glade/privacy_lists_first_window.glade b/data/glade/privacy_lists_first_window.glade new file mode 100644 index 000000000..7a7470123 --- /dev/null +++ b/data/glade/privacy_lists_first_window.glade @@ -0,0 +1,255 @@ + + + + + + + 12 + True + window1 + GTK_WINDOW_TOPLEVEL + GTK_WIN_POS_NONE + False + True + False + True + False + False + GDK_WINDOW_TYPE_HINT_NORMAL + GDK_GRAVITY_NORTH_WEST + True + False + + + + + True + False + 0 + + + + True + Server-based Privacy Lists + False + False + GTK_JUSTIFY_LEFT + False + False + 0.5 + 0.5 + 0 + 5 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + False + False + + + + + + 4 + True + + False + True + + + 0 + True + True + + + + + + True + True + 0 + + + + 5 + True + True + gtk-delete + True + GTK_RELIEF_NORMAL + True + + + + 0 + False + False + + + + + + 5 + True + True + gtk-open + True + GTK_RELIEF_NORMAL + True + + + + 0 + False + False + + + + + 0 + True + True + + + + + + True + + + 5 + True + True + + + + + + True + Create your own Privacy Lists + False + False + GTK_JUSTIFY_LEFT + False + False + 0.5 + 0.5 + 0 + 5 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + False + False + + + + + + True + True + True + True + 0 + + True + â— + False + + + 4 + False + False + + + + + + 5 + True + True + gtk-new + True + GTK_RELIEF_NORMAL + True + + + + 0 + False + False + + + + + + True + + + 5 + True + True + + + + + + True + True + 0 + + + + 5 + True + True + gtk-refresh + True + GTK_RELIEF_NORMAL + True + + + + 0 + False + False + + + + + + 5 + True + True + gtk-close + True + GTK_RELIEF_NORMAL + True + + + + 0 + False + False + + + + + 0 + True + True + + + + + + + diff --git a/data/glade/profile_window.glade b/data/glade/profile_window.glade new file mode 100644 index 000000000..aeaaa8518 --- /dev/null +++ b/data/glade/profile_window.glade @@ -0,0 +1,1968 @@ + + + + + + + 12 + Personal Information + GTK_WINDOW_TOPLEVEL + GTK_WIN_POS_NONE + False + False + False + True + False + False + GDK_WINDOW_TYPE_HINT_NORMAL + GDK_GRAVITY_NORTH_WEST + True + False + + + + + + True + False + 12 + + + + True + True + True + GTK_POS_TOP + False + False + + + + 12 + True + 7 + 4 + False + 6 + 12 + + + + True + True + True + True + 0 + + True + * + False + + + 1 + 2 + 0 + 1 + + + + + + + True + True + True + True + 0 + + True + * + False + + + 1 + 4 + 4 + 5 + + + + + + + True + True + False + 0 + + + + 6 + True + 3 + 4 + False + 6 + 12 + + + + True + True + True + True + 0 + + True + * + False + + + 1 + 2 + 0 + 1 + + + + + + + True + True + True + True + 0 + + True + * + False + + + 3 + 4 + 0 + 1 + + + + + + + True + True + True + True + 0 + + True + * + False + + + 1 + 2 + 1 + 2 + + + + + + + True + True + True + True + 0 + + True + * + False + + + 1 + 2 + 2 + 3 + + + + + + + True + True + True + True + 0 + + True + * + False + + + 3 + 4 + 2 + 3 + + + + + + + True + Family: + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + 1 + 0 + 1 + fill + + + + + + + True + Middle: + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + 1 + 1 + 2 + fill + + + + + + + True + Prefix: + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + 1 + 2 + 3 + fill + + + + + + + True + Given: + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 2 + 3 + 0 + 1 + fill + + + + + + + True + Suffix: + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 2 + 3 + 2 + 3 + fill + + + + + + + + + True + More + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + label_item + + + + + 0 + 4 + 1 + 2 + + + + + + + True + True + True + True + 0 + + True + * + False + + + 3 + 4 + 0 + 1 + + + + + + + True + True + False + 0 + + + + 6 + True + 3 + 4 + False + 5 + 5 + + + + True + True + True + True + 0 + + True + * + False + + + 1 + 2 + 0 + 1 + + + + + + + True + True + True + True + 0 + + True + * + False + + + 3 + 4 + 0 + 1 + + + + + + + True + True + True + True + 0 + + True + * + False + + + 1 + 2 + 1 + 2 + + + + + + + True + True + True + True + 0 + + True + * + False + + + 3 + 4 + 1 + 2 + + + + + + + True + True + True + True + 0 + + True + * + False + + + 1 + 2 + 2 + 3 + + + + + + + True + True + True + True + 0 + + True + * + False + + + 3 + 4 + 2 + 3 + + + + + + + True + Street: + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + 1 + 0 + 1 + fill + + + + + + + True + City: + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + 1 + 1 + 2 + fill + + + + + + + True + State: + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + 1 + 2 + 3 + fill + + + + + + + True + Extra Address: + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 2 + 3 + 0 + 1 + fill + + + + + + + True + Postal Code: + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 2 + 3 + 1 + 2 + fill + + + + + + + True + Country: + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 2 + 3 + 2 + 3 + fill + + + + + + + + + True + Address + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + label_item + + + + + 0 + 4 + 2 + 3 + + + + + + + True + True + True + True + 0 + + True + * + False + + + 3 + 4 + 5 + 6 + + + + + + + True + Homepage: + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + 1 + 3 + 4 + + + + + + + + True + True + True + True + 0 + + True + * + False + + + 1 + 4 + 3 + 4 + + + + + + + True + True + True + True + 0 + + True + * + False + + + 1 + 2 + 5 + 6 + + + + + + + True + Name: + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + 1 + 0 + 1 + fill + + + + + + + True + Nickname: + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 2 + 3 + 0 + 1 + fill + + + + + + + True + Phone No.: + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + 1 + 5 + 6 + fill + + + + + + + True + Format: YYYY-MM-DD + True + False + + + + True + Birthday: + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + + + 2 + 3 + 5 + 6 + fill + + + + + + + True + E-Mail: + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0.5 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + 1 + 4 + 5 + fill + + + + + + + True + GTK_RELIEF_NORMAL + True + + + + + True + False + False + + + + True + 0.5 + 0 + 0 + 0 + + + + + + + 0 + 4 + 6 + 7 + + expand + + + + + False + True + + + + + + True + Personal Info + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + tab + + + + + + 12 + True + 5 + 4 + False + 6 + 12 + + + + True + True + True + True + 0 + + True + * + False + + + 1 + 2 + 0 + 1 + + + + + + + True + True + True + True + 0 + + True + * + False + + + 3 + 4 + 0 + 1 + + + + + + + True + True + True + True + 0 + + True + * + False + + + 1 + 2 + 1 + 2 + + + + + + + True + True + True + True + 0 + + True + * + False + + + 3 + 4 + 1 + 2 + + + + + + + True + True + True + True + 0 + + True + * + False + + + 1 + 4 + 3 + 4 + + + + + + + True + True + False + 0 + + + + 6 + True + 3 + 4 + False + 5 + 5 + + + + True + True + True + True + 0 + + True + * + False + + + 1 + 2 + 0 + 1 + + + + + + + True + True + True + True + 0 + + True + * + False + + + 3 + 4 + 0 + 1 + + + + + + + True + True + True + True + 0 + + True + * + False + + + 1 + 2 + 1 + 2 + + + + + + + True + True + True + True + 0 + + True + * + False + + + 3 + 4 + 1 + 2 + + + + + + + True + True + True + True + 0 + + True + * + False + + + 1 + 2 + 2 + 3 + + + + + + + True + True + True + True + 0 + + True + * + False + + + 3 + 4 + 2 + 3 + + + + + + + True + Street: + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + 1 + 0 + 1 + fill + + + + + + + True + City: + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + 1 + 1 + 2 + fill + + + + + + + True + State: + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + 1 + 2 + 3 + fill + + + + + + + True + Extra Address: + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 2 + 3 + 0 + 1 + fill + + + + + + + True + Postal Code: + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 2 + 3 + 1 + 2 + fill + + + + + + + True + Country: + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 2 + 3 + 2 + 3 + fill + + + + + + + + + True + Address + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + label_item + + + + + 0 + 4 + 2 + 3 + + + + + + + True + True + True + True + 0 + + True + * + False + + + 1 + 2 + 4 + 5 + + + + + + + True + Company: + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + 1 + 0 + 1 + fill + + + + + + + True + Position: + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + 1 + 1 + 2 + fill + + + + + + + True + Department: + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 2 + 3 + 0 + 1 + fill + + + + + + + True + Role: + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 2 + 3 + 1 + 2 + fill + + + + + + + True + E-Mail: + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + 1 + 3 + 4 + fill + + + + + + + True + Phone No.: + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + 1 + 4 + 5 + fill + + + + + + False + True + + + + + + True + Work + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + tab + + + + + + 6 + True + True + GTK_POLICY_AUTOMATIC + GTK_POLICY_AUTOMATIC + GTK_SHADOW_IN + GTK_CORNER_TOP_LEFT + + + + 70 + True + True + True + False + True + GTK_JUSTIFY_LEFT + GTK_WRAP_WORD + True + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + False + True + + + + + + True + About + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + tab + + + + + 0 + True + True + + + + + + True + GTK_BUTTONBOX_END + 12 + + + + True + True + True + GTK_RELIEF_NORMAL + True + + + + + True + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + True + False + 2 + + + + True + gtk-go-up + 4 + 0 + 0 + 0 + 0 + + + 0 + False + False + + + + + + True + _Publish + True + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0.5 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + False + False + + + + + + + + + + + + True + True + True + GTK_RELIEF_NORMAL + True + + + + + True + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + True + False + 2 + + + + True + gtk-go-down + 4 + 0 + 0 + 0 + 0 + + + 0 + False + False + + + + + + True + _Retrieve + True + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0.5 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + False + False + + + + + + + + + + + 0 + False + True + + + + + + + diff --git a/data/iconsets/transports/gadu-gadu/16x16/away.png b/data/iconsets/transports/gadu-gadu/16x16/away.png new file mode 100644 index 0000000000000000000000000000000000000000..e84aea305eac489dfce9c6f3e1c89f14c07796b0 GIT binary patch literal 919 zcmV;I18Dq-P)^@R5*== zQ)_5bcNG8qZ*J0SZql@Q*s#_#hSXY>VIB2RQc#FRu|w3liJOd-`hYoxn}dCkIc5<* zY*U0f<_EP>tJQt*RjZ;{9d0@mMW{_{u#cG9_BL(vxYwKJ-m?!gMWo;l4jeeI-}!M4 zBO*+P)m245F0b_0fic6?o6q*#y#MOhw24GCWdPWg*mrC8@)+Ou<6 zh=@??x2^X$XVd~<*&06EXkGQ}rmkCGZ?@S)uHl#VFMS?IUN$yw&P><(YG3oYBbz_b zR2e@V>UhQ&D<>k25fK<;xvh=0gTdts%mAQGW-ytyLa-Ksv^3=LUT}O821;QvIfC{( z5#_7>4>zf5<^um_jrgj-tltAme7ksNW`e64R-xwPm!O^p! z$LX|o5dgR>&Gx?rzH4rM)GIgx$gvjT%B`p1cryUt^7VfJ5IEk2!)N-3?sranOm9SE zl?$DpEiU)`u%OiKURhOXcX(HDan*#`WdS_7`zLa^6y`47f;*?Sqrj5H!w3JW2b#Jf z30Y5!CTO4G+xn$#-|VRNmz5Tpd4rvCMiGJuaL>#~<-#Hu^)VFWai}O2kWq$^Z;bz^EhlRZIboyAFXgYozQh1(MS}ZZrX^Nnl+G9Wq5G+B}8b{A62>( zl~T#qbR9$lQ4~M)dcDt296v#CL)Ud09v+_ZBLfktulqt@Tv74D=ks0Sd43Lv2qh&Y zw-bp3y$_0_kTfC@5mESgnEZbKJq`ehJ;lWqi)Gp~e;a8v4O5N@0ARPor@IH+>g(u8V`FCPwylH7M6!uxr^^S tzR-bv4l7ra&Ol8lbTA_6C#U=7{{X~EsD&q2ClCMt002ovPDHLkV1hL_sT2SJ literal 0 HcmV?d00001 diff --git a/data/iconsets/transports/gadu-gadu/16x16/chat.png b/data/iconsets/transports/gadu-gadu/16x16/chat.png new file mode 100644 index 0000000000000000000000000000000000000000..9d9b4fe4a9ec4dc3ecbb54c6f94d2b6e40967c87 GIT binary patch literal 944 zcmV;h15f;kP)Jlr37&A+M3e+0O;_m&0~rF4o>uU@WB@w z2ALVvq2isDWrb}3DBmOJ2kmHG*)?$frS{@tr#O71=b2z-sV85nxyR?-*&6IV`BD2W zE2HDh4}Q8%L}6yOh?zk|?i0t_CbqWJDga;^CXB2L4p%wY%0izTg^-hwSc8$AM$d(4 z>VOpci3j+ z?P0y-@di0?`gb!Vh_ECCD?5*5VjPAxgihmsxZy1Vi9WM3VfEK%oYr~UPM|XPg_|L|e zn&PvRS0WKr{Mgkt916G!#%@`doOdHsQwKG13pYpl;guus7e?`YL{i`TD!FGOZk|M5 zQ2_9Kd)?(j2R4V(u_2h6igYTA>9`3y&7x4mAqfkTY=>nT*nLDBiu{wSXJ%b2Zg)4X zuL|Y#84yfdycW}kM#rtPf?>FAG2ECijLxrlR!?Oiz}U1#4#+Yd{Erv5Z15iX@b!kd zeNWsyxx(+*z5RjGfvd+n964IVo7PApiVgLvD#YK^wFs$|J-gSw_;lhpo*Ds zU(ntgIa^@R5*== zQ)_5bcNG8qZ*J0SZql@Q*s#_#hSXY>VIB2RQc#FRu|w3liJOd-`hYoxn}dCkIc5<* zY*U0f<_EP>tJQt*RjZ;{9d0@mMW{_{u#cG9_BL(vxYwKJ-m?!gMWo;l4jeeI-}!M4 zBO*+P)m245F0b_0fic6?o6q*#y#MOhw24GCWdPWg*mrC8@)+Ou<6 zh=@??x2^X$XVd~<*&06EXkGQ}rmkCGZ?@S)uHl#VFMS?IUN$yw&P><(YG3oYBbz_b zR2e@V>UhQ&D<>k25fK<;xvh=0gTdts%mAQGW-ytyLa-Ksv^3=LUT}O821;QvIfC{( z5#_7>4>zf5<^um_jrgj-tltAme7ksNW`e64R-xwPm!O^p! z$LX|o5dgR>&Gx?rzH4rM)GIgx$gvjT%B`p1cryUt^7VfJ5IEk2!)N-3?sranOm9SE zl?$DpEiU)`u%OiKURhOXcX(HDan*#`WdS_7`zLa^6y`47f;*?Sqrj5H!w3JW2b#Jf z30Y5!CTO4G+xn$#-|VRNmz5Tpd4rvCMiGJuaL>#~<-#Hu^)VFWai}O2kWq$^Z;bz^EhlRZIboyAFXgYozQh1(MS}ZZrX^Nnl+G9Wq5G+B}8b{A62>( zl~T#qbR9$lQ4~M)dcDt296v#CL)Ud09v+_ZBLfktulqt@Tv74D=ks0Sd43Lv2qh&Y zw-bp3y$_0_kTfC@5mESgnEZbKJq`ehJ;lWqi)Gp~e;a8v4O5N@0ARPor@IH+>g(u8V`FCPwylH7M6!uxr^^S tzR-bv4l7ra&Ol8lbTA_6C#U=7{{X~EsD&q2ClCMt002ovPDHLkV1hL_sT2SJ literal 0 HcmV?d00001 diff --git a/data/iconsets/transports/gadu-gadu/16x16/offline.png b/data/iconsets/transports/gadu-gadu/16x16/offline.png new file mode 100644 index 0000000000000000000000000000000000000000..b8623f4b53640a9838e0cbaf67ef1137bdeaa527 GIT binary patch literal 944 zcmV;h15f;kP)aZ-A0$b?b%2G<$LK-d_Y&9gU7}KiMwB5{-D0^K`!RhV zaz+v#4tzIBL`{q_lNe(lBI(52ee*lpT15cJ8CihmAr_Y)mo=a~h#{BN!BYx`8prVX z&Gg~VhxTilHpH*2AwSvN_*q+^@sMD(lHFeqp~wy*f}twl#X@A_F{shMkVwSQfBMRV zuIr}&fXk0L9KP}T4`K=b#g0Zb)t~)^GAaa(OWRTL|)81h*qm^P|z9rv`8RF`F`s zAmx=vL>o_i@a`RNi9@)jJU}9sfp1F_D!PNRTS&MrMWrf)5{aR3ySjnzrN7h zwQHz$bCrS3}Q6pzDKYSkAwJm)6+F*B4gjk{+R;#ZESYRPJb5>o zIe%rUuijJM_hx&GA2~w*wHwii`wP#9?#`cVt#LX>r)NhD!#MLFGfAS@48X-0!`8~u z(C8}%*~rTWSi^?W@s(SN7K`PnfA-M-*}1w%Iw}Jlr37&A+M3e+0O;_m&0~rF4o>uU@WB@w z2ALVvq2isDWrb}3DBmOJ2kmHG*)?$frS{@tr#O71=b2z-sV85nxyR?-*&6IV`BD2W zE2HDh4}Q8%L}6yOh?zk|?i0t_CbqWJDga;^CXB2L4p%wY%0izTg^-hwSc8$AM$d(4 z>VOpci3j+ z?P0y-@di0?`gb!Vh_ECCD?5*5VjPAxgihmsxZy1Vi9WM3VfEK%oYr~UPM|XPg_|L|e zn&PvRS0WKr{Mgkt916G!#%@`doOdHsQwKG13pYpl;guus7e?`YL{i`TD!FGOZk|M5 zQ2_9Kd)?(j2R4V(u_2h6igYTA>9`3y&7x4mAqfkTY=>nT*nLDBiu{wSXJ%b2Zg)4X zuL|Y#84yfdycW}kM#rtPf?>FAG2ECijLxrlR!?Oiz}U1#4#+Yd{Erv5Z15iX@b!kd zeNWsyxx(+*z5RjGfvd+n964IVo7PApiVgLvD#YK^wFs$|J-gSw_;lhpo*Ds zU(ntgIa^@R5*== zQ)_5bcNG8qZ*J0SZql@Q*s#_#hSXY>VIB2RQc#FRu|w3liJOd-`hYoxn}dCkIc5<* zY*U0f<_EP>tJQt*RjZ;{9d0@mMW{_{u#cG9_BL(vxYwKJ-m?!gMWo;l4jeeI-}!M4 zBO*+P)m245F0b_0fic6?o6q*#y#MOhw24GCWdPWg*mrC8@)+Ou<6 zh=@??x2^X$XVd~<*&06EXkGQ}rmkCGZ?@S)uHl#VFMS?IUN$yw&P><(YG3oYBbz_b zR2e@V>UhQ&D<>k25fK<;xvh=0gTdts%mAQGW-ytyLa-Ksv^3=LUT}O821;QvIfC{( z5#_7>4>zf5<^um_jrgj-tltAme7ksNW`e64R-xwPm!O^p! z$LX|o5dgR>&Gx?rzH4rM)GIgx$gvjT%B`p1cryUt^7VfJ5IEk2!)N-3?sranOm9SE zl?$DpEiU)`u%OiKURhOXcX(HDan*#`WdS_7`zLa^6y`47f;*?Sqrj5H!w3JW2b#Jf z30Y5!CTO4G+xn$#-|VRNmz5Tpd4rvCMiGJuaL>#~<-#Hu^)VFWai}O2kWq$^Z;bz^EhlRZIboyAFXgYozQh1(MS}ZZrX^Nnl+G9Wq5G+B}8b{A62>( zl~T#qbR9$lQ4~M)dcDt296v#CL)Ud09v+_ZBLfktulqt@Tv74D=ks0Sd43Lv2qh&Y zw-bp3y$_0_kTfC@5mESgnEZbKJq`ehJ;lWqi)Gp~e;a8v4O5N@0ARPor@IH+>g(u8V`FCPwylH7M6!uxr^^S tzR-bv4l7ra&Ol8lbTA_6C#U=7{{X~EsD&q2ClCMt002ovPDHLkV1hL_sT2SJ literal 0 HcmV?d00001 diff --git a/data/iconsets/transports/gadu-gadu/32x32/away.png b/data/iconsets/transports/gadu-gadu/32x32/away.png new file mode 100644 index 0000000000000000000000000000000000000000..5c46145eb659a082c54588ba15c252bc70610eb0 GIT binary patch literal 2241 zcmV;y2tN0TP)S&pU<#9c$|1)zP@K5!fUmhcC$)U|p&KFlP3Q(QiI6??!Cf z!t?y1-DO`-{_XSsQc9_=B2s%P&WsB^a604W`2MUP6^U(UxLcM<(bYYT1rLuCU}`Jd z3;J*O0j1Or2KMb#KJmtZPF^HyjZ&&Jz`#CvclGF&*P0a9e5bq7zgO;q&FrU+xT?$X z(IdLmcL-W9E2RqBigR8Glu~wnZr0zHKQZZ!8B<3p!%!TnX}o8_(tl1?O3j}<@u~ss z5N1qKpCL-AKHa)zzy8#(#*eynTuM3ku$XeW;6B>4EVs4RY| zQXe|f_+1g%-X;O1RKG_a9J_DfoEzE<0C21(PC=&}6k)J(z)zz6D3Ii{ilY>E4wIkl zB5oY*B=DWg)pO!JyRP2<(}qKDryV`{jK9_;i0`TVCLtmnTKAp^AYJG=XgJC^Z6+St zOQF3a+HIm}cyF3cl%btQw3k3TndQ3)V$lTKN*lH3%Aw|djg~>=*oRvW{P@Mc>}U~O zdjah1VnPMQSXsH4!3btB2gB-sVP&BV3#CkyvIs}|qKqrhj*IVRf@>$iiuDcN{==sZ zX!vz=-{&=9A=;+Mj!{n3IPi7Q)toPr{Jtwf{4bn zvyo6=yrvR-C&7oiqO9L?f>c^h6_Iqi3Y@{InDfxX3pUico?vGW$FM>eRv5z$V+JGV zNQef}pglx9M4wqMpix;@aI`MYqE}CN$&~k~h?KRC)!rPCPxl_3f2<}8GZ@L#+%Qon zX3w6@-BYKby;Md8FNO9U9$mDWne$&j{50Bk(0&@z3{rMDtQ$_Hs(@WesqSqOP)dcA zQg?TXWW6)th5_;W?kQ?owRFmw-u^mIjjHp3foI|@aBdM_)ZhrOK|Am zAzuCaW_Fey;N6dQBYqO`(r7=;gwdUi!UB6BuoXC*6;Ou_rJhqt6$4mGslKB}bgy`5 zda-@;*a1c`XanG-0Pzv+Aijl0a1srO2zAF#GNfM@v=c+SF`RS^5jaub#GsxzXg7iO z5{Q=oad>x8#7ZR-RM%-rzVN$m-s?TM_n@AslP4>v)JzJDR`({Q?Wn}8? zTl6Z-;od2?Ao%p`nvL%?qTK|&x^!Ubq~YMZ^eC`0#Jog?h#LnKL0d7P&}2ZN$-URx z_MJ--y1GstHuECE$Co@dVUS_8YzOUUVVEHhjc6C~(|AstUfuH;H);?aLxOgj&`uND zjWM`aHbqzFk{xvM-6pgX%UsFY&;%F+6tv zSnPnoS6??#`gtQYb&cd_n~d(=Ku%T?5l!pKnsfv}D`3|0$0x3ucIR*v$_kv8-(%O# zeN1{_9jjNZX8Oz-v@TI&LnCYdx|W5%S;*M$UCTFLf5WG{{!4y-KArM%`Rd?7wD0rN z@fLSoYw=Z$P+g~~t`qhj)#X5Jo(O`Db~cYrOT*2Udw$mXEJoyFto2}Y-ptZWIZ2j`hcgOUX0_UNu@nE7@*qs zDRX@)fGXe}MC9xOOyHS7Adu+Wx344;3AqqTOH13_uRmEY<$KCy)5cAb9nKb|)IMMZ zuoM`7Cg$1Ku~JIew*65s5WH^goVoV&8Pn<4zhArAUkr{^A0c`w%6sp>$0sG9fZ!iF za>UzRy4$ua>mRP`{;+xW4+Vokx3Z#A9LKp}<`;wLsi^G#a=)b0X%P|8T1!KHgREP- zPC}uO1I#~5AZQ1-EO~0lw-WdaoU|hi^$q9k@2lD;bAK^cg272#WKIDFoIhj0ga^yq=-dEJ|ztuLyos=ieM(P)&$hQ=0qT5F<>QOYaIu`Fv}iyjDt zLT=5mnv0gWwx(7}N=n+i7mLQEd{4PlmQ~7{HESdmi%GmGF4YIC<=N%WieVT&@RQ~Q zlx^D|XNR+$6~A90Qb{I4QpGOEQ_1 znxi#RzNcKaZ`&>tCrlL6G{v@UDY(2K9f?HJN+}dJKTD_6olVo! zhB6pcJW9`-JI@+2WC*_Rv!`?qZ@u*v>(;Mh{0NJ}PKrN&INv=vKZ0NV%k`^ zepu$Sa`p>J`OoM6fvjMtPLM*+^LBZjw+&b&BFXmpq+J5-kje#aGZZgBa%aHI>!>(d zFKn&woIMA%DZ&&H*>KSgffl3qViphv76mMh1T0Qu*;E401A{Nsmx%B`81c}V@F^ay P00000NkvXXu0mjf>4i!N literal 0 HcmV?d00001 diff --git a/data/iconsets/transports/gadu-gadu/32x32/chat.png b/data/iconsets/transports/gadu-gadu/32x32/chat.png new file mode 100644 index 0000000000000000000000000000000000000000..05a95d49c1d8c53fce5fe468e45903dc1925b6ff GIT binary patch literal 2274 zcmV<82p#u{P)PaV$8Z+2#P&-s3T z=keX&imGxZCL#hX9#vNK!=Xh5Lz`RD@y@jKCh)eZ9yz06fPJP8z?_x0%zov;yXO-Q z+jyQ|y{qo?C6BCqS43o#s-8HLVAfZ?(6!^9cKHu(sMc^e;BMO?s%MP1?!RlE0?YdN zer5bYUl5V2rcN5Z_lo&bonf))3nDTSU~0v%?~NNXtS>3P_06%?lnJFPdiXD!d2ad1 z*)zwq4T;!)5s|WiaQc-%M8YFVqZ=Q4aM3llEIVH;OE})#e*OKAzO_U|?pbohxs`(u zW=?g*bP=f-GpcyQukZWrcdnc_UVJA*&CU}yKfPhsauHdqs&Du5>)V8*zE*7Io7?s$pM3br;_{eE$Yd~18qdkFeP^dW^rufu z(YWIzCbsx~Ko==WtRCP$--ctp%obl7D5Ua~gJ&c#b zcv*~_qPl7#sn$A-(~j{n7$;c1n<3em;l17M#&fl?XI!f{h#uckbLgh0|Mo#IaN`va zE}lhU*(~g6DWOP=P^1LQ9)e{@5z9s-gosU1Y!YIfjd5IjHvl(IhCggdcn6Pk95V2W zp0WEip{l+TD~UY6U~a{YQ!2{DcwwR=<`F6wid9g8Wfua1`Zqt6x-gW=x6RxL(i>t8gLM*!oD_le<5<5*o z4X6R*q3WTgd%1u?qG!|8l4kXDtzI_g-K(l~eX$190sXMH>7L`wQ9_YeP;)DUAgo-u zlIxZ&$9TCQ3tkT6JKVc^9k<@|6zbk8eJBi3e*5cq6Koq5?Lc6vjA)nnKXOm*!nwfo)y0I zqDm_g2?OBe0QFJhpuUYkaWV;1m6nsIm_E52<0LU|5+|QT6|8cOyv4BNQ-AE%T5m<|VRNg9OtFDWANuKn@cC8adzHiZp&*@N1$FjqCX6oO z#-*2`_>3P_jPJB#+zb=Shp=o>75FaW%ItucmkEftX+VgCh04((Do2O7@#1j!+J`eH z-lBJfhQ%VQ9{$#Hg~l~0X9y)?d4j94~} zM?0BNF^-TWT{9mF#D@r?iWQb%N^6zK)$ zjS~>s+Vi~e&Jm_nUC328t?UvV2je@vfW3T*t#7r)Tx2VS#P)d61WT8PL9VD@G6rfixyDH<-YqnuT!ESO!wzu((VGSS4vixyKl z>@2kVL*!*iwx8sU&2Q0>IK|wF^^_JR0cc7<&cy}RXY;y(KGyF%AR^Y}39;Q9)+{@B zY|N2tB7qQ$Vr#p@$NQiqVVF9tf>>!WkuV(lyqS2sg_1~`>hbkN?bA)CBJ4WoaoZDF zRb{EFzWh}Lmj3pEg&UV&KE@J1gVWK1pLc`4=+gRQC*iZ>h2&fd*Avc)CK*-ILV3w4 ztbWIsz#e-!&&C?J(Q&EJ9-#dQR8A#8#~00dfxB*HQf8&jzi4{4ky)jyE707(yoRKSFcXEcdW_K+-V29 z)UJ~fiYlylGUKjTlX34`pY`*7wC7}p^1*)3cs`p3C7`O=hIr!k$Dga^Kw}Eu&5+M# z*s!HjZ-1=CB$Cck`;IuxyBhKcK({U-h`^r12H)tP+Q+HGjqsdH3UXcW*pkLn)BtN$HQpC%(0@Z!-3V+P;L(9Y z$Bo;Uz}7vUim;^%ygSA=VAfz5UrOLh?7-1hjXb~AVc1ZisZFV=_nbY4O-PmXXBS&pU<#9c$|1)zP@K5!fUmhcC$)U|p&KFlP3Q(QiI6??!Cf z!t?y1-DO`-{_XSsQc9_=B2s%P&WsB^a604W`2MUP6^U(UxLcM<(bYYT1rLuCU}`Jd z3;J*O0j1Or2KMb#KJmtZPF^HyjZ&&Jz`#CvclGF&*P0a9e5bq7zgO;q&FrU+xT?$X z(IdLmcL-W9E2RqBigR8Glu~wnZr0zHKQZZ!8B<3p!%!TnX}o8_(tl1?O3j}<@u~ss z5N1qKpCL-AKHa)zzy8#(#*eynTuM3ku$XeW;6B>4EVs4RY| zQXe|f_+1g%-X;O1RKG_a9J_DfoEzE<0C21(PC=&}6k)J(z)zz6D3Ii{ilY>E4wIkl zB5oY*B=DWg)pO!JyRP2<(}qKDryV`{jK9_;i0`TVCLtmnTKAp^AYJG=XgJC^Z6+St zOQF3a+HIm}cyF3cl%btQw3k3TndQ3)V$lTKN*lH3%Aw|djg~>=*oRvW{P@Mc>}U~O zdjah1VnPMQSXsH4!3btB2gB-sVP&BV3#CkyvIs}|qKqrhj*IVRf@>$iiuDcN{==sZ zX!vz=-{&=9A=;+Mj!{n3IPi7Q)toPr{Jtwf{4bn zvyo6=yrvR-C&7oiqO9L?f>c^h6_Iqi3Y@{InDfxX3pUico?vGW$FM>eRv5z$V+JGV zNQef}pglx9M4wqMpix;@aI`MYqE}CN$&~k~h?KRC)!rPCPxl_3f2<}8GZ@L#+%Qon zX3w6@-BYKby;Md8FNO9U9$mDWne$&j{50Bk(0&@z3{rMDtQ$_Hs(@WesqSqOP)dcA zQg?TXWW6)th5_;W?kQ?owRFmw-u^mIjjHp3foI|@aBdM_)ZhrOK|Am zAzuCaW_Fey;N6dQBYqO`(r7=;gwdUi!UB6BuoXC*6;Ou_rJhqt6$4mGslKB}bgy`5 zda-@;*a1c`XanG-0Pzv+Aijl0a1srO2zAF#GNfM@v=c+SF`RS^5jaub#GsxzXg7iO z5{Q=oad>x8#7ZR-RM%-rzVN$m-s?TM_n@AslP4>v)JzJDR`({Q?Wn}8? zTl6Z-;od2?Ao%p`nvL%?qTK|&x^!Ubq~YMZ^eC`0#Jog?h#LnKL0d7P&}2ZN$-URx z_MJ--y1GstHuECE$Co@dVUS_8YzOUUVVEHhjc6C~(|AstUfuH;H);?aLxOgj&`uND zjWM`aHbqzFk{xvM-6pgX%UsFY&;%F+6tv zSnPnoS6??#`gtQYb&cd_n~d(=Ku%T?5l!pKnsfv}D`3|0$0x3ucIR*v$_kv8-(%O# zeN1{_9jjNZX8Oz-v@TI&LnCYdx|W5%S;*M$UCTFLf5WG{{!4y-KArM%`Rd?7wD0rN z@fLSoYw=Z$P+g~~t`qhj)#X5Jo(O`Db~cYrOT*2Udw$mXEJoyFto2}Y-ptZWIZ2j`hcgOUX0_UNu@nE7@*qs zDRX@)fGXe}MC9xOOyHS7Adu+Wx344;3AqqTOH13_uRmEY<$KCy)5cAb9nKb|)IMMZ zuoM`7Cg$1Ku~JIew*65s5WH^goVoV&8Pn<4zhArAUkr{^A0c`w%6sp>$0sG9fZ!iF za>UzRy4$ua>mRP`{;+xW4+Vokx3Z#A9LKp}<`;wLsi^G#a=)b0X%P|8T1!KHgREP- zPC}uO1I#~5AZQ1-EO~0lw-WdaoU|hi^$q9k@2lD;bAK^cg272#WKIDFoIhj0ga^yq=-dEJ|ztuLyos=ieM(P)&$hQ=0qT5F<>QOYaIu`Fv}iyjDt zLT=5mnv0gWwx(7}N=n+i7mLQEd{4PlmQ~7{HESdmi%GmGF4YIC<=N%WieVT&@RQ~Q zlx^D|XNR+$6~A90Qb{I4QpGOEQ_1 znxi#RzNcKaZ`&>tCrlL6G{v@UDY(2K9f?HJN+}dJKTD_6olVo! zhB6pcJW9`-JI@+2WC*_Rv!`?qZ@u*v>(;Mh{0NJ}PKrN&INv=vKZ0NV%k`^ zepu$Sa`p>J`OoM6fvjMtPLM*+^LBZjw+&b&BFXmpq+J5-kje#aGZZgBa%aHI>!>(d zFKn&woIMA%DZ&&H*>KSgffl3qViphv76mMh1T0Qu*;E401A{Nsmx%B`81c}V@F^ay P00000NkvXXu0mjf>4i!N literal 0 HcmV?d00001 diff --git a/data/iconsets/transports/gadu-gadu/32x32/offline.png b/data/iconsets/transports/gadu-gadu/32x32/offline.png new file mode 100644 index 0000000000000000000000000000000000000000..ef8d3a24690c061e114ada830bd496d7b3b8851e GIT binary patch literal 2328 zcmV+z3Fr2SP)zs3M-hn_6Fg%3tjED~g#7A{%)nV$hh$y}ttBlW?;$yTUt=e|l&N%JZ zRyr-C&RAuNil9ifprRsbo%kvQ31WB!xPhB+Npf?Zd$0a+10*46Su^{Od+%B6`}SJj z{q{bhsvJ*tkEKd@yr>~pz`u1A~Fn&{Nl44>a4f9|Oh#_XRy zWkOqNQPDFZazcMNM~y&4Qq==0mj3##JFdL$l3C)2klCNT_KCkgJ6l8+Tz1~M6OKWc z8K<05Cn95Os;ggo^!6LhoHcW**f`I}Uw?D+;uY`C6Ok)abxp6lz9JktXwd76fAPqr zr%oJy)Gn8;c~`&Py+c6-m7y+o+0d)L-~e#3LGz0nI; z#GzuuNmSO3!z(MtD=ot-Da9=+#!00Lgd7KP9V&;^;G~COV~YtQOc-H;n7@8dpET`i z{no-GJ!>B&LRDQ}Szh|W`O{9nzINmY5rhHbCgK&B;Fgr&ri%cuNsL+x;=rM9siLa5 zMWv)GMiL*~hzTOz`+6I%)o&(9lDVoH9Q{Er?Atz@4kz<*IbK@qr&{-7#k-%{QD=lec|KSBq?+!NpRdWo3f!j(C#+^^&&E| zUjiahA|h8;RhF;3=*;Q)8!wsF`P73yTQat;uDi1qO%j^6G_v@aXZiS(PguTu1xXlS zqLA&|xABkHR#M;4z?w-yWF~+oBDK>`p4@QT zm6xS1m_E%(r_+TQn*^+)Cc(xIC9>rJWC>n8OchYB`{5fM}^ zHjWv6!Vu&&x_>SY^rqTtG8G}sD+gxno z76gcZT80m(#3l)GK3@=G6k@`Vq2;BR&?$^1ER4nk0VWKwCZVsb4J|K2kP)6AhDKHC z>3nKU!AAWe#C6!UznM{^CgO;o1<@j|i>QaAiUNp(cpj2UBk44me2&V%CkcGS7WnrJ zKS@xqUelh;q8C=Z^|z}pyg-VJ3nrsjtW8J)pE!wG|LGcjz_z@aU^V#6oi^2 zhn2r>^-FxQ;ag_dN>T`Ie!#bF2iTQsXV<|FwzcKLP5WD&$e1Mpq=74o)9FiQOqqQ7 z$+fiu2M?@Z+^`{f&ZIg)gj{EicfMN7q%+Rt((CUD1^JH2LjD(w|f zE-B8foyPn1@6+De!uc1^rD{NR;UtVBY!uOPAj`j3|C9DymQ!sdl~Qo|mVBNtNn+r+ zAWr7fCyu%gh=@~LGwjR7zr24+O<799tdHQJYB|uAW8?nqw07kfH+BjGD+ZBvJ@#gH zvUBe?%G9M!%P8t$u!^!Fv!DA`zN4x-M^#__J_2)obcfF5-k*47Mr{Jg0X z97zIf7~-T2NoOZXUJI6NErSwapi_BRfc=GX1RUU+Qzr4shQ?9ACBWhHzL%s$WcpcW zoLpD#S!@(wA|D%uh?gL47YA}}B>7I_d?zLd(Bx?FFETBF_UZ&cby+DhN1cc#a$nEy z`<{jyKl*$_X6xRJ+9QB4cVxx$3EduNAF+tZoJ@)wee$b zuQ!n~y$WZ$eCnGsHc?%6OaiLvH|^f{)4wcV&DOmwm@p#D2fXrGgWk7vwas+~i#E5k zX1;3Pcc^Dbp>qHTMbITpCz7=iSmjxg)hR5GoAE{~su(&5?e>b94BC@a} z-}S_K<44K*#vO4(Q>HzLle<;*rQ(z~bz3$!j4`8o<#k38ev+hs^^vj9Hy`Zy)150; z&pUt2NV}~qm+a}tA4sgdLRD?gynbKJRP{F^vUT&;%={>hzp(I_s&)W`iP^9t*M2UL z>Y4Lda|TzW%cy>)stItNh%8>ebI)%RW7YvrtLl!vSjT)fRMn-x(tdv0vaKx__a*Sb z_GT54x7FIi%2d_0z|3P|d?$hLh%I~CJBwc4u$h4+#k6$f`FQ8PaV$8Z+2#P&-s3T z=keX&imGxZCL#hX9#vNK!=Xh5Lz`RD@y@jKCh)eZ9yz06fPJP8z?_x0%zov;yXO-Q z+jyQ|y{qo?C6BCqS43o#s-8HLVAfZ?(6!^9cKHu(sMc^e;BMO?s%MP1?!RlE0?YdN zer5bYUl5V2rcN5Z_lo&bonf))3nDTSU~0v%?~NNXtS>3P_06%?lnJFPdiXD!d2ad1 z*)zwq4T;!)5s|WiaQc-%M8YFVqZ=Q4aM3llEIVH;OE})#e*OKAzO_U|?pbohxs`(u zW=?g*bP=f-GpcyQukZWrcdnc_UVJA*&CU}yKfPhsauHdqs&Du5>)V8*zE*7Io7?s$pM3br;_{eE$Yd~18qdkFeP^dW^rufu z(YWIzCbsx~Ko==WtRCP$--ctp%obl7D5Ua~gJ&c#b zcv*~_qPl7#sn$A-(~j{n7$;c1n<3em;l17M#&fl?XI!f{h#uckbLgh0|Mo#IaN`va zE}lhU*(~g6DWOP=P^1LQ9)e{@5z9s-gosU1Y!YIfjd5IjHvl(IhCggdcn6Pk95V2W zp0WEip{l+TD~UY6U~a{YQ!2{DcwwR=<`F6wid9g8Wfua1`Zqt6x-gW=x6RxL(i>t8gLM*!oD_le<5<5*o z4X6R*q3WTgd%1u?qG!|8l4kXDtzI_g-K(l~eX$190sXMH>7L`wQ9_YeP;)DUAgo-u zlIxZ&$9TCQ3tkT6JKVc^9k<@|6zbk8eJBi3e*5cq6Koq5?Lc6vjA)nnKXOm*!nwfo)y0I zqDm_g2?OBe0QFJhpuUYkaWV;1m6nsIm_E52<0LU|5+|QT6|8cOyv4BNQ-AE%T5m<|VRNg9OtFDWANuKn@cC8adzHiZp&*@N1$FjqCX6oO z#-*2`_>3P_jPJB#+zb=Shp=o>75FaW%ItucmkEftX+VgCh04((Do2O7@#1j!+J`eH z-lBJfhQ%VQ9{$#Hg~l~0X9y)?d4j94~} zM?0BNF^-TWT{9mF#D@r?iWQb%N^6zK)$ zjS~>s+Vi~e&Jm_nUC328t?UvV2je@vfW3T*t#7r)Tx2VS#P)d61WT8PL9VD@G6rfixyDH<-YqnuT!ESO!wzu((VGSS4vixyKl z>@2kVL*!*iwx8sU&2Q0>IK|wF^^_JR0cc7<&cy}RXY;y(KGyF%AR^Y}39;Q9)+{@B zY|N2tB7qQ$Vr#p@$NQiqVVF9tf>>!WkuV(lyqS2sg_1~`>hbkN?bA)CBJ4WoaoZDF zRb{EFzWh}Lmj3pEg&UV&KE@J1gVWK1pLc`4=+gRQC*iZ>h2&fd*Avc)CK*-ILV3w4 ztbWIsz#e-!&&C?J(Q&EJ9-#dQR8A#8#~00dfxB*HQf8&jzi4{4ky)jyE707(yoRKSFcXEcdW_K+-V29 z)UJ~fiYlylGUKjTlX34`pY`*7wC7}p^1*)3cs`p3C7`O=hIr!k$Dga^Kw}Eu&5+M# z*s!HjZ-1=CB$Cck`;IuxyBhKcK({U-h`^r12H)tP+Q+HGjqsdH3UXcW*pkLn)BtN$HQpC%(0@Z!-3V+P;L(9Y z$Bo;Uz}7vUim;^%ygSA=VAfz5UrOLh?7-1hjXb~AVc1ZisZFV=_nbY4O-PmXXBS&pU<#9c$|1)zP@K5!fUmhcC$)U|p&KFlP3Q(QiI6??!Cf z!t?y1-DO`-{_XSsQc9_=B2s%P&WsB^a604W`2MUP6^U(UxLcM<(bYYT1rLuCU}`Jd z3;J*O0j1Or2KMb#KJmtZPF^HyjZ&&Jz`#CvclGF&*P0a9e5bq7zgO;q&FrU+xT?$X z(IdLmcL-W9E2RqBigR8Glu~wnZr0zHKQZZ!8B<3p!%!TnX}o8_(tl1?O3j}<@u~ss z5N1qKpCL-AKHa)zzy8#(#*eynTuM3ku$XeW;6B>4EVs4RY| zQXe|f_+1g%-X;O1RKG_a9J_DfoEzE<0C21(PC=&}6k)J(z)zz6D3Ii{ilY>E4wIkl zB5oY*B=DWg)pO!JyRP2<(}qKDryV`{jK9_;i0`TVCLtmnTKAp^AYJG=XgJC^Z6+St zOQF3a+HIm}cyF3cl%btQw3k3TndQ3)V$lTKN*lH3%Aw|djg~>=*oRvW{P@Mc>}U~O zdjah1VnPMQSXsH4!3btB2gB-sVP&BV3#CkyvIs}|qKqrhj*IVRf@>$iiuDcN{==sZ zX!vz=-{&=9A=;+Mj!{n3IPi7Q)toPr{Jtwf{4bn zvyo6=yrvR-C&7oiqO9L?f>c^h6_Iqi3Y@{InDfxX3pUico?vGW$FM>eRv5z$V+JGV zNQef}pglx9M4wqMpix;@aI`MYqE}CN$&~k~h?KRC)!rPCPxl_3f2<}8GZ@L#+%Qon zX3w6@-BYKby;Md8FNO9U9$mDWne$&j{50Bk(0&@z3{rMDtQ$_Hs(@WesqSqOP)dcA zQg?TXWW6)th5_;W?kQ?owRFmw-u^mIjjHp3foI|@aBdM_)ZhrOK|Am zAzuCaW_Fey;N6dQBYqO`(r7=;gwdUi!UB6BuoXC*6;Ou_rJhqt6$4mGslKB}bgy`5 zda-@;*a1c`XanG-0Pzv+Aijl0a1srO2zAF#GNfM@v=c+SF`RS^5jaub#GsxzXg7iO z5{Q=oad>x8#7ZR-RM%-rzVN$m-s?TM_n@AslP4>v)JzJDR`({Q?Wn}8? zTl6Z-;od2?Ao%p`nvL%?qTK|&x^!Ubq~YMZ^eC`0#Jog?h#LnKL0d7P&}2ZN$-URx z_MJ--y1GstHuECE$Co@dVUS_8YzOUUVVEHhjc6C~(|AstUfuH;H);?aLxOgj&`uND zjWM`aHbqzFk{xvM-6pgX%UsFY&;%F+6tv zSnPnoS6??#`gtQYb&cd_n~d(=Ku%T?5l!pKnsfv}D`3|0$0x3ucIR*v$_kv8-(%O# zeN1{_9jjNZX8Oz-v@TI&LnCYdx|W5%S;*M$UCTFLf5WG{{!4y-KArM%`Rd?7wD0rN z@fLSoYw=Z$P+g~~t`qhj)#X5Jo(O`Db~cYrOT*2Udw$mXEJoyFto2}Y-ptZWIZ2j`hcgOUX0_UNu@nE7@*qs zDRX@)fGXe}MC9xOOyHS7Adu+Wx344;3AqqTOH13_uRmEY<$KCy)5cAb9nKb|)IMMZ zuoM`7Cg$1Ku~JIew*65s5WH^goVoV&8Pn<4zhArAUkr{^A0c`w%6sp>$0sG9fZ!iF za>UzRy4$ua>mRP`{;+xW4+Vokx3Z#A9LKp}<`;wLsi^G#a=)b0X%P|8T1!KHgREP- zPC}uO1I#~5AZQ1-EO~0lw-WdaoU|hi^$q9k@2lD;bAK^cg272#WKIDFoIhj0ga^yq=-dEJ|ztuLyos=ieM(P)&$hQ=0qT5F<>QOYaIu`Fv}iyjDt zLT=5mnv0gWwx(7}N=n+i7mLQEd{4PlmQ~7{HESdmi%GmGF4YIC<=N%WieVT&@RQ~Q zlx^D|XNR+$6~A90Qb{I4QpGOEQ_1 znxi#RzNcKaZ`&>tCrlL6G{v@UDY(2K9f?HJN+}dJKTD_6olVo! zhB6pcJW9`-JI@+2WC*_Rv!`?qZ@u*v>(;Mh{0NJ}PKrN&INv=vKZ0NV%k`^ zepu$Sa`p>J`OoM6fvjMtPLM*+^LBZjw+&b&BFXmpq+J5-kje#aGZZgBa%aHI>!>(d zFKn&woIMA%DZ&&H*>KSgffl3qViphv76mMh1T0Qu*;E401A{Nsmx%B`81c}V@F^ay P00000NkvXXu0mjf>4i!N literal 0 HcmV?d00001 diff --git a/data/iconsets/transports/gadu-gadu/48x48/offline.png b/data/iconsets/transports/gadu-gadu/48x48/offline.png new file mode 100644 index 0000000000000000000000000000000000000000..93729d4ffa8c4b49d66c505bc4c52b31326d45aa GIT binary patch literal 3759 zcmV;g4p8xlP)VP0%RDw$!F&LNNXpF`MjpJmDW}L*67@5hO zW9H}>a~w63m^o1-aa_igC@2cDHpn70LPIw+OE*n7y;OD8+kW%MdsW?CbT=}m?>YCp zcj~>m_xt_r_g5vVN?#5U83x=7j0a8vjlg1Ke{my3zWF9((sKYHu8uCk_0 z7*9(w$%&KAY~1-JYroj;ipV# zNbYy%&z&~8*EKB5z=)Q z#)W?XHi*c~&IIO6>74+;HS;b8_-@Ynw_29DXVLt*OaJzgng2Cv*x)U|S`oSMbnEr% z#3E7%yga#V+`^^z-$VJ>G1+IUHdb8t`18M8Cn7HaKQTmRPCKvcv;<~NE~g+bZ=Q%) zKpF7dMdcIc-goo0oKsqY@1;4~)WlymZJYJh%8eUE@-Zr2p{@Z`L^On5X zlgo%(LcZbSyD%g+fZ~}KP+FYN@)a8%7Lhn`pLP>*dfV}pAKv_(IX}MbmL6Y-Mj|}8 z_(mp<9yQ|kZ@zt6@R>1u@F0@u)QkV|$OFc?Lk3c4DtKvp*T#3#sOvB?Uck4;kCKL_ zCf;BB<-K(cEk}SSa@XoMjEcy}p{1n<*1Yt*| zciy)r4O}{P!nm&uUIfOC9Y=oYV9Zzy0QD91J=F71*9}0qE>2qucU--ImiCh&_%!O- zXa>0F;5#VB&=lc)*^KYKR?}fc1+jfNMj4jHt*D?=41l+QFkzU%mb?W{`S55 z-u%-H0DC2%sx__2 zPc+JK^5Y|Mq*fzz^*L|!wPKOj0KVxkr1$tX0JKZ466vt}{~%+LHy>~6<80v7 z_V#pr-oQbCAQ?{#%_7m#%q5pz#&>VMmAjVQ7lgr1p;KLlL?Xd;OCI3f$CvWZlTQVo zdu~Y3&4%1qzY^M7ZSj3w2lyiLO%WOSwFroaAtINF$crMfr!YS+Iez3hM=t%F>8l@m zV9B6PS_!2VM2`&{Hn6#(0)X~plGUGn7RGWXOJeJeoqVx7h=T3uH0!r*M_n%@7+yUO z%P_ce-Yg=PIZH%d2L1|Ei^v`k`HhHN6V_-zn8-xr0^m;5Fm9SXWzyLTFPY0_GcII6 zaZ#3B;gDegXbtVx6?|31^Vqp#NA|t-n>Vw0%N8!0bbc7u10uWj?#;eavAdElzS_(5 zb4O-1rJb$|CXAz{v4MuR6iulVU)D8H-PAmu;F$VDpjAYss%ljx6Tk4t?SD7xrUmmE zSW#*!Nrbq^i_z!`gW1GDjLJDBM- zQzw)$AuP4e8#|UsV!^DLi?5n9t6T6890$!mLc45^_ApBqx}1$ z4^t3{gh|QHYQj`y;l&pbvn-zY-Yw*tMu(p`PWHZoL^=q^Im0vzQm#kE;bQ>1Env>< z$>lwQ4~F17E{3o8z7K{GM50hisy+pl$&YTm1>f`V(kayQI;zU>T40$hx#o&4zTrDI zUKb+4XX^FbY?w5pG;=%40!q*7U((~tfzxVG^7UE7S z83Il~KtqsT*2Fppd5(>G9;oz$AJ5Nf$FqROszbHREI+>o27Xp*;sxMSc8aZgE0}Z9 zRalWoP}gWjeG?D~{KL;?<4nBIkO@r7v(s!nxQpQ~SWZ9~0MQ;bP~Vow+}alK%u8>- zcgNzZujoejnffJAKZYP;uxa}m_Sf#kHiX50zZBDobg#V7qyjQw;_GtAaar~LD^xeu z(kf9d(0Hf4h0cMfzAeG7`V;J`Z(wcp;mpU&MO6`z*9Hyfzi95XDKc-`6y{8s%)pXj zJlDnXYK41Rr+L}AXj8GKUtIomgWOgfoh?&XV!_bcg|^gK5_G6qiFo@nFq4J)Xssl-&_0*O=7 z3A_TE4vqJB-&9XI1Y)nW~vYFVe9Tqr0o*{WhZe_ms5*I=s*^|Y)W@aw14lrF+cb*Y}u(bZ_<$wF> zm`NiB6Ey-8u$$U&+vte@;Ry@hC*`Ku*ILh^_C|77jj6#vq6{WRk(}DiQ3CMN>5Fgf z+RIaGHUTVC)y3W6?5#8R?YYy+#|%HKn5cMRonm9i(y3FX+BQ+wrO<=^Y6W)QBX~undn>REgX=FS6Tsw5+A1P4 z@4V6H%q$x*m_kcY&%tvurEd^bj0hMp2S4530X~(+OQ(W3@B7^?owHF`F=)@4x%RxV z^@eH?|VHg*D+L;io?hF z@rsZ6^=BLLdZ{`A8rxGizAq9~cLll6yY&H8eNRN*dUMr=h56r@Mp^%&uv+ZsoO!m# z!Q)LlzTz{jJk%hs@7Tk&lgG1U+GNxT!>ni!XF5rE>(P4t@!eGbNuc0RQwvXgb1p@B zv2F=GwPq7upv_;X>fzkyz4^d{@2uX`{>korT6>}~+cEPU7uWV!S$Tkm-ug&)A8ZiU z^OvR5E|ql+9gZlWV-i-C;XIK@X4d~5Q1QjldhUK>1)FP+odV!5J1W_Fqz+&g@Jx3g zduuJ$q|(lVue`lRUf#4_tByC~+b;X-8u|JAt9kOn&pA}r;(5OR6IEU8dVX`w@sp_A zyGb;)XKR`&U@oxyXlok}y|;>=f3${%L=pwwsockJ*KI+d9k@ePo$l7_^(PfoeNjXP zy}Nqb(mmBj8CVdbvi3NK>zc7`_cMZDO)?3lwy`x;+>%Q7Xbu3o>Kih*`&6|ZxLHJ& z0Z)Ij|KO+%hmL4bEGBh9$?O7)RCPm7>wTTh+`lxQOx&|^+kq`BEA~-c+j!iz-P=`l zUQTx04zTY;Q;%!;s%#FRCIU;_9oMOAOZdP_;A&MpwYz*K1i}qoP}S+S z?M_hD@v8dAZeH66u&e$=kLy$(KS68S2KY=>6P=%_YP+gF77`hys`FL#!_#3qqrV!c z>YiR6Z-Oo+a>`io)q%|I`@QT@btahl^1l*W0C&f+G*7}F5y+LG)zcAO9Q zRc9iK(hGqz9vap&eK85_T6>whfQ$Qb&p!LJ2Lyjd0B!?*02C5vxB*xf&i7Q+?z0Vn Z{{vo=Y%t?&r_2BV002ovPDHLkV1g0xUpxQ+ literal 0 HcmV?d00001 diff --git a/data/iconsets/transports/gadu-gadu/48x48/online.png b/data/iconsets/transports/gadu-gadu/48x48/online.png new file mode 100644 index 0000000000000000000000000000000000000000..3f093793354089d042ffe0666c3d77f533d7b469 GIT binary patch literal 3759 zcmV;g4p8xlP)*YGjPyphm%keG#zPY!+>S(9%t>@7?=u)o=c|w_h)GH!!E`oI0;xSKX@b zw|;B=?h{p|Gnb`67ZZ`+^eis;<&D=)@FtAzOHG|m z#gTeGUB91|tM`N=vI@9QRabV}o}DED5fRsQ4)6MSVM+JGyko|#RTeGT%x(8Bc}rC< z@03jer?VCU#*7(xTASbj97p*6ch07JVcta|(!H}bJz)YOk`R%JBJwj4xn4wCKRavY z)WIFDk?>qDyYS2;Ft?5M3q|B!5xG%B#)^n^8UYcR<2bVG+)0Dh+*XD&K#=u5yF z5t-DSz>Fy!69BmK+h+k>+iLwEB|LZM)t8Tc_`4U6d~tC9;*G#3BJ!={V(Z8TM5F-t z!?;m><~;uEOBplrwCvdO6}$N5Bk$xD$58}RneZkRgl z!MiTRaau}r_Kcy-m@-(N{Ou<<{PVLbW}Q;f<+$JhT-RYh-y(1O?!(vhD9Zo$`|p~S zd+x;k6y^rxx&b!Ka9USGQKE#B?&DdsWZOa!=?dJUZJc&TZuF0LEto#--aF23cS26m zpRPFpHVm+#kH&p)uaLQuk&24` zy#1lM`EM1q2Y`oKuhpgsiO7Jyy$knle)mpkee&(KJ^L#eJfH_^5~xjpBtSf{Ay$3R z42~1vBpjZ4@e^jxID=D*J@P#t8wO~Y&XS0F8Vv&uev{&^=c-t@xx8Fe2dJuTzHfUH zm^uFJz9$S`t;eALXW?}jg5%{k{u9*@wHef8P~)S_Sk}MvD>n1>45CK(C zgW3=k2b(2i@RHqdoFs{y8Zz}|s7a$Xh=7{_&7`r$$7TX-nC6X->nSa(CN%anRo&4V zLYr<>RefXZZNGTnEv#+ZOIe%5>pF$Jl5u#+E;xy}dj&X&e8kH|+yvqz5OF~q1c?ZW z;J67Ac>@r)H#U=rfQNo8i2yY|2P%Aizr0qfj;88?pSOjh-8i7C%QkI0@aBKMvhG;$ zrVF{nGw^bIAYMLBq9E@1IEg&O&540~AWqz4@X_K#wx_s>uDCe^v7yC=J|P>(n z&^G!Tn^h@QgE$Giy#8n=M8h;D40vs2J@0L(#Sg-*z!U8O?2v$}?ysrye|+Q5|AZfe zSSuvEjl=Phh?B%|a}YO)crg(-8J%_vHUexxO}49zZ9@&%xNC?w3EaHXFqwdDdmDKA z&o$K6rW=5(RWyUs%tvB#WU9COr z6$}Jg>$0J~wuqQo~jnyH8 zhCXZ8u4di(O#q}C>RGY!qc{+yvm`cd-oeJLd!jk%fKN8;Mr{!FMi*)`BwXdESM(;~ zxl=^s55RI@pNQ-fk*7uEvN%Tr;y558X8}KUUFYiQlLz&ld&wwf&p3mU;)2G5#?3t) ztU(=vSc6IcC~7lo-LfTn2&>j^V*UEfOdU5k^5JZp(f)ef}jAM-;~3 z{iaWw;nGRnsHr+kMYW-_PT8`@Qg+A=CAy~G3e<|oSXC`+3}ny$>dp(M{P3!A^eoPj z%Qnq8kYi)R3s4bME#eqJ7&^F5i}_E3uwer> ztY`e$0~tPaAOItV4P^A0eX*JPcs!an=FHv<9n=$m;e&cGYDi&ZD`6UIn`|Yrp8%(o zdG;!Dm@_%SlRwF&e@_9pSVShez(to_Fnr$Svq!WE9zabJ$Lj(_!3VV{Hfw|lSGi`+ zbaHbOJn_&?6yy+}W;&}vo&;Pqdl)$$Jo<}izM ztl4P*wtK*|>5~Sv3qE4tpeBgCjx~tmf)Qx6YApFVmcLtYDQYuOS{xgu%@Xm+Pg-vO z!P#h|ZG?U-$#j!6VwF>4o0f0Y#tzBeJEnL*&z?QHw2$3dtPPMbjW{79F4~wLKsK^! z9FWw8QT7>o7i;4j-}p^7(Fn3p0w&c;8a^tvJ^b`7$&U2(fTAu1$@U4LSkr(L7NAZP zv?B0Aq)tr)A|r21q2mnGHtBT}0YA?F(@o&Bgwm+ZviL(~-gy1@k1YVGwSWbQbhh#ISFPI3?%frn!vf~r{xGhW zXmg`%n$TP_%_O8Y;QhB=XZQY(sXbc4qydMUJ*-U;A2?KH*}BiNWv}7Gt=ZIQv8XB{ z^4cjqyIy(zIYVUT)FI56I+&it1%#m?%!GuQG>-2?#)}YS3`>`P!I8=o!^TYIdkgLZ z6xA>ac8!-An~8xplY+^hHoAFjUbBV|-dRr4&2Ziso5@Q?r|*Z#zrK;?U={qWN;yM~8lg{JPYvxD!Oe2YAaihtg8`B1#P3t!D(O*~Lh+*=eQhIi&$s&7agXNx=8k&O* zfX|4E#A|@ns#*pe)P+RkG@u_a%yH!3-g^Fu;Q47_fux`E@P!Qv^Ryu6?Y5J%=p7ZL0cAyZDY%nY(`C*nTfP_vm-&)h$HR zNAatxiIUhjBC92nF>K!pJN7$-Mo4%bMa5mn&GE?1ajC9p;PBz5R|5lz4>7X$J`%2J zv7gcuyUGq)u6?XQgA5sk@v6G*qzJ^R^{zKw{LzpxXXKM3QB)0Tju58Oh{X3=wOQAh z@(rKw%VY1MJgm0NWpX{A-i4L)E2^M-K^yNm6jWLU-^D94Jo2g!ut-(soh*U5GtU|F z+GGDPi#|nR?6Z9|3_ zK_x}`_3eYFZSVk|3-e|q1aLW-vWkdIA35xlNoNizq97TdVGtLa;xb^yM;s5=Q%nrn zG$W$MkEC*(rUmLNBY0ynkwVx&C@bV;W}s;bk3K~v$iG0U{Zk8&2EHt=}z z%@o`ArLm^n;z1K=jZ)#8|HJ2@MLwpT!dYYcrbY=3B4C01*5hrK7FBhrh%EWj+uP^l zeWxEI`h?9?sIeFuuJvu7d_YydZavmsbw~B9L#Y;0Fk!&5HTC@T zsiXS&o;nGQUF7>ArTYS!B73ab5`B?a(JQL6C;nSt!}{HZd5@)7wc}Wod-;P5>vkD{ zQsAk!Kz3AG+@DTo?)dN5HpxrNYV?cp1~d#PD^IiV`J+7aaur`5tT)EkdsKB^Xl(Vq zgFe`f)u^&IOP~xm7g+rD5zEcbq*(Z3n!`sGRe1fA43EF=Bai}aRMkvd>vi~^SXEyT zkzW7v-p+?h%StHe2HW@4@%5n^{2=^@=&ea(fGMx64hpO56BM?i4gg#CWs~_YR5b-$ zBO;4{Czfvt2Yys)w5R|%Sg8OZaHXoQX>Yv~sm%T3k*bCTYc_tl@x4zEu=lH~3O@+1 zSJmmQqT?2T9p&wNA8VCWJ3;^-SkY{cCBO*a;k2)rgOzH5_kl}P^_`CJozPoKRefGn z$NNDzTvdmv>hIc^wia5P@G))MmzJ6+$^1xFTO`P;no`wYX+&h8s?Ji?caMkdq<(6k zsyjOvUI(ysU;7gH%i64cEbCy8vXjBonZK3T2!xx;jJIX4VMuQW*MUP-%EmIovh^Wr zBafnVK;WdC#xEN>qZ8@1cF;?Kb2@X+PW!P3L_bFWt^?)+1w<1523QsMrK)=TTl-10 Z{{ub=p8`BMPW1o)002ovPDHLkV1jdqP+9;0 literal 0 HcmV?d00001 diff --git a/data/pixmaps/events/connection_lost.png b/data/pixmaps/events/connection_lost.png new file mode 100644 index 0000000000000000000000000000000000000000..364b44174f5bd43ae74173cb4a53117d22c9b9aa GIT binary patch literal 2873 zcmV-93&!+`P)b?gkf+Pj<5=1YCAf>e+Hz*1uMOpWufNj7QnkG#nxQ1)Quv9COY*})-l6YG#_cE7r z>BH=mA}L2z4?vzX!@2zCJKy<#-}xxGgZAQ!FYfW)58v*(IF1L7lO);l8m+azaN)w$ zg@pyX-Lv$s3i;AYfBpTrx%p>?hK5}4tnZGT_uxIw<>$P2cn{9I_OWmOxONZDS|%nY z%)Wj54jemn?BZPk9U2<>>cKxaP+G0lXf_Pq=Rnrl9M^l4mPDcIf_1*dcRwiar4mG; zLP)^_`yb%t(|`Lk@ZGxt8it`xP0C-q@Xw5n#0VkKTJ>4bcYnH8-t;$PAWa=tuX%p( zcTb|EqCB<>A^g-`n|d8;;hm#g*38cp^Qm*L4dZ*$>GG*{u5nS0AVbDQ<_a3b^ zUWkdi0($b~$&o0Gobw)Q3~`)wU*55rwLM>Su4B=D|D^98!`ey%tsRpSyYbeS?+R#| zrlmp@;he=7N1B?x7qiJ?y*@wX`^L~}#k5*6&8DMN@(3Yt&fOhQ=Uho^jrX1`b7YzC zuIdh8KXgB+_nv06#nMuhTCGl!7_w}bX3H}<72%viYjt-(z4xUc2!wMEYaPbeHUyg% zkRPyUvl&yVEK{$y5JCVD1Odjt+G>-TX$jsTr7C?Y(BsFCPdVof0MS+#TWdd8U0)CU z70a#(&(M(QLiOvWb9ryAV{NU@wQE(3@n{{Aa|(ojDAFvi#MCzg9sw|XThQajk4K}U zrC&V!@WW*(^Sk<`JQs4L_k;j1yzn>(-zP`y>zxB3P)gxlZuKAk_$R#j>PPLxl|MSS ztfaaYGd(+x5Fmso-WJqad+)vX-a9h8_t%R5@w1Py*0cq@tJZz-r$g1YA|5FfI#7TD zpZnd+%n*e_k!tm~_~}m_YGdt`0 z^pW-gGFaOViB9y%kiTVobE&|$|LXI6W^R^3F+yvJ*0Rr7i5|1YHbi` zcj(Ze;=;m0YgxIsIoFpmL>IQKqz#5OoW33|$LvO7e1#a%>qgrcyV`&|0GqOyzt(n92EY^eSKpSINT3TaerACsZ zfS_0`5k>*v(Sb&52IQ%0QJ1e$=PW^}MV4iy+v(_pQd-n%8P+-{l)!sE0O>u%&GyuLM-YZW2yt7`$so`yFK^&|hI6uO z(f&x&fvneCR4U6D%3t)&oRbVpF<+_)5i)wL!6v0X z^D@}XZ^~00zMaFyjg+6CJ)0<{-r5mVO3L7=t|dq*H>GEgWtLj4fibQNc`ImdtdwA_ z8sq&a9#~#l;`=B62B{?8IhL1KE*NL71wl}YqNp0EV8s~o%4@H^_TkQ;N{>0`Xf?BT zNcDIx+LDtI$0?9Um#wWhcrJ=0YpV%qrGmZjK2tYtFdGE~TH`&0`}W-z2{EFbyCzyK z%hjtNjGQ~S>rdf{PE;3g{xIAa^ih1NlV^G_Fh-DNSvSNf6>K@hgZ|k&S17>HKfTP& zlkZcW+sk8FhHB@s))>6CPD(kYq}+{^zbk}znui_&A-u5Gx-_*bmoI1ku)h9{ufU03 z2o-V&0mfM3IFIxB6zWZ3k1ZF^X3LJ64W_TW%Y%P-kmQ38@b;E1d$>dDt3(hm_r)(3 z-+le{@BU+>ajH+AL;*a;!aB!ae&Y+QwsXXO zt?Spm_38>)ny_nfx(hp?j{qM?!q@&2%pmB@H@}GpLl(dFt!_RGpvqgLrF68p*(_BAxZ0E%J(xuB!R;%lOWQ-|QDwUa9tu`IU@yy=&xo33{ z_%H}WpaX`6hX%?sc}1>8eWQ^pgajoebFC(iZvkqnRet%z6YM{8hRGvGC_nWSdUBHG z)2F)@-Vta3(J%}CRfAPh+2 zjPmFh<2RR(m#=L3Vq2|p`RS+m-1+n9$w}f17x?&VU)vUPt9`v{ZS@*9}7KBw2QH#or?q5yiU~H z@e2e9DS#P-e+mS_#Y;l`>rYg-Qr2$w{P2fe$PQG$&n6cya{YVX+a6R0`p+JH^x*L7 z%DMyz0+i}=i0#|JUVLo4#O^&)e0Z(GR-5$3*|Rj?d1pXJI}2>@i4(NWo!fcpwbF-! zD3XOjf&WWuHe$xcMv+o(ieh=IeCIn`-e;>-K6>Vvofp&L!-pSv=rH^>e@e8~aOFKDySGono;-nwTv` zyT1j2rrum9OMBT-5Gh9QzlZfoh53UA@maQ2_Ovr&5TN($q51aPt^n6H!1(z1SEpxY z#MIR8uGfkFDwF8uNr-`Cd5f0{1YUT!e;<`Uev?-fxfafIzLT z3bnK(g@?t(iY~qN_Mgu#E?)T*MjgoT1;C+0hr&3HXI-cA_5akeEW7c>8*eo3dQ51&1tDOmS8asJ_7Md8;b;;6f zk}Q0LD7fqch(y74Aco)rh+t7r5ki97Bpaoxu8X$sAWbqElY8&Xy)NuPl1^I>cX2qJ z|Kt4UTtP~-+RZv}0F*9D$H3c{jaQ$!DO&Ajr`PY=AedTXj5WsCAeh=-ziV6VX6Ghx zz1QzrV~kxa=2l8+wboWjX^k-nq`s`VwZ=H8R%(QQLbTQ(00FUynJ?y4D>W{xT?r_8 z-WH3+oY=%fN}-e@iXxo2Qn*eAf7@p`8X$x?SL;jNxd2=Xv}({fSbl{QTLAAL~14JbC<-U^e0G?36EGKQSJU0r0nd zc6N6u7K`lfmw12pt^r&ElyiQL^Yh;n@&)pH1uT|-&jO&eBIoA-%2!??o6W8k?Dao) z8L$bUlv-8WRK{i+;5LAi5+T4Qqc2&&+LhjQKroq(@8tLHUOVz+ItB, Mon, 20 Jun 2005 12:02:31 +0200 diff --git a/debian/control b/debian/control index 60e4f9430..543ff0c95 100644 --- a/debian/control +++ b/debian/control @@ -7,7 +7,7 @@ Standards-Version: 3.6.2 Package: gajim Architecture: any -Depends: ${shlibs:Depends}, python2.4 (>= 2.4), python2.4-glade2 (>= 2.6.0), python2.4-gtk2 (>= 2.6.0), python2.4-pysqlite2 +Depends: ${shlibs:Depends}, python2.4-glade2 (>= 2.6.0), python2.4-gtk2 (>= 2.6.0), python2.4-pysqlite2 Recommends: dnsutils, python2.4-dbus, notification-daemon Suggests: python2.4-gnome2 Description: Jabber client written in PyGTK diff --git a/debian/copyright b/debian/copyright index e18f009d3..24d42289c 100644 --- a/debian/copyright +++ b/debian/copyright @@ -1,6 +1,9 @@ This package was debianized by Yann L.B. asterix@lagaule.org on Wed, 16 Jun 2005 20:00:00 +0100. +It was downloaded from: + http://www.gajim.org/downloads/gajim-0.10.1.tar.gz + Upstream Authors: - Yann Le Boulanger - Dimitur Kirov diff --git a/debian/patches/00_debian-copying.patch b/debian/patches/00_debian-copying.patch index 2d5acb6e6..c5d2e11ab 100644 --- a/debian/patches/00_debian-copying.patch +++ b/debian/patches/00_debian-copying.patch @@ -1,21 +1,21 @@ Index: Makefile =================================================================== ---- Makefile (revision 4702) +--- Makefile (revision 6485) +++ Makefile (working copy) -@@ -87,7 +87,6 @@ - mkdir -p "$(DESTDIR)$(PREFIX)/share/locale/$$d"; \ - fi; \ +@@ -89,7 +89,6 @@ done - ${MAKE} -C po install PREFIX=$(PREFIX) + if [[ -n $$(find po -name *.mo) ]]; then \ + ${MAKE} -C po install PREFIX=$(PREFIX) ; \ + fi - cp COPYING "$(DESTDIR)$(PREFIX)/share/gajim/"; - cp THANKS "$(DESTDIR)$(PREFIX)/share/gajim/"; + cp THANKS "$(DESTDIR)$(PREFIX)/share/gajim/"; + cp AUTHORS "$(DESTDIR)$(PREFIX)/share/gajim/"; mkdir -p "$(DESTDIR)$(PREFIX)/share/pixmaps"; - cp data/pixmaps/gajim.png "$(DESTDIR)$(PREFIX)/share/pixmaps/"; Index: src/dialogs.py =================================================================== ---- src/dialogs.py (revision 4702) +--- src/dialogs.py (revision 6485) +++ src/dialogs.py (working copy) -@@ -443,7 +443,7 @@ +@@ -558,7 +558,7 @@ dlg.set_version(gajim.version) s = u'Copyright \xa9 2003-2005 Gajim Team' dlg.set_copyright(s) diff --git a/gajim.iss b/gajim.iss index e411d2da0..1cd282539 100644 --- a/gajim.iss +++ b/gajim.iss @@ -1,6 +1,6 @@ [Setup] AppName=Gajim -AppVerName=Gajim version 0.10-alpha +AppVerName=Gajim version 0.10.1-1 DefaultDirName={pf}\Gajim DefaultGroupName=Gajim UninstallDisplayIcon={app}\src\Gajim.exe @@ -23,7 +23,6 @@ Source: "COPYING"; DestDir: "{app}" Source: "THANKS"; DestDir: "{app}" Source: "dist\gajim.exe"; DestDir: "{app}\src"; components: main Source: "dist\history_manager.exe"; DestDir: "{app}\src"; components: main -Source: "dist\*.glade"; DestDir: "{app}\src" Source: "data\*"; DestDir: "{app}\data"; Flags: recursesubdirs Source: "po\*.mo"; DestDir: "{app}\po"; Flags: recursesubdirs diff --git a/launch.sh b/launch.sh index e533dded4..08b9110a0 100755 --- a/launch.sh +++ b/launch.sh @@ -1,3 +1,3 @@ -#!/bin/sh +#!/bin/bash cd `dirname $0`/src -exec python -OOt gajim.py $@ +exec -a gajim python -OOt gajim.py $@ diff --git a/po/Makefile b/po/Makefile index 819e8f953..2b10a9676 100644 --- a/po/Makefile +++ b/po/Makefile @@ -1,5 +1,5 @@ NAME = gajim -LANGS := fr pt el pl es ru bg de nb cs nl pt_BR sv it eu sk no zh_CN +LANGS := fr pt el pl es ru bg de nb cs nl pt_BR sv it eu sk no zh_CN br eo LANGS_PO:=$(foreach LANG, ${LANGS}, ${LANG}.po) LANGS_MO:=$(foreach LANG, ${LANGS}, ${LANG}.mo) DATADIR:=$(subst //,/,${DESTDIR}/${PREFIX}/share) @@ -9,6 +9,9 @@ all: $(LANGS_MO) %.mo: %.po msgfmt $< -o $@ +%.glade.h: %.glade + intltool-extract --type=gettext/glade $< + gajim.pot: ../src/*py ../src/common/*py \ ../data/glade/account_context_menu.glade.h \ ../data/glade/account_creation_wizard_window.glade.h \ @@ -16,6 +19,7 @@ gajim.pot: ../src/*py ../src/common/*py \ ../data/glade/accounts_window.glade.h \ ../data/glade/add_new_contact_window.glade.h \ ../data/glade/advanced_configuration_window.glade.h \ + ../data/glade/advanced_notifications_window.glade.h \ ../data/glade/advanced_menuitem_menu.glade.h \ ../data/glade/change_password_dialog.glade.h \ ../data/glade/change_status_message_dialog.glade.h \ @@ -28,18 +32,20 @@ gajim.pot: ../src/*py ../src/common/*py \ ../data/glade/gajim_themes_window.glade.h \ ../data/glade/gc_control_popup_menu.glade.h \ ../data/glade/gc_occupants_menu.glade.h \ - ../data/glade/gtkgui.glade.h \ ../data/glade/history_manager.glade.h \ ../data/glade/history_window.glade.h \ ../data/glade/input_dialog.glade.h \ ../data/glade/invitation_received_dialog.glade.h \ ../data/glade/join_groupchat_window.glade.h \ + ../data/glade/manage_accounts_window.glade.h \ ../data/glade/manage_bookmarks_window.glade.h \ ../data/glade/manage_proxies_window.glade.h \ ../data/glade/message_window.glade.h \ ../data/glade/passphrase_dialog.glade.h \ ../data/glade/popup_notification_window.glade.h \ ../data/glade/preferences_window.glade.h \ + ../data/glade/privacy_list_edit_window.glade.h \ + ../data/glade/privacy_lists_first_window.glade.h \ ../data/glade/progress_dialog.glade.h \ ../data/glade/remove_account_window.glade.h \ ../data/glade/roster_contact_context_menu.glade.h \ diff --git a/po/POTFILES.in b/po/POTFILES.in index 6ff3e6668..35ae4380c 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -4,48 +4,50 @@ [encoding: UTF-8] gajim.desktop.in -data/glade/account_context_menu.glade -data/glade/account_creation_wizard_window.glade -data/glade/account_modification_window.glade -data/glade/accounts_window.glade -data/glade/add_new_contact_window.glade -data/glade/advanced_configuration_window.glade -data/glade/advanced_menuitem_menu.glade -data/glade/advanced_notifications_window.glade -data/glade/change_password_dialog.glade -data/glade/change_status_message_dialog.glade -data/glade/chat_context_menu.glade -data/glade/chat_control_popup_menu.glade -data/glade/choose_gpg_key_dialog.glade -data/glade/data_form_window.glade -data/glade/edit_groups_dialog.glade -data/glade/filetransfers.glade -data/glade/gajim_themes_window.glade -data/glade/gc_control_popup_menu.glade -data/glade/gc_occupants_menu.glade -data/glade/gtkgui.glade -data/glade/history_manager.glade -data/glade/history_window.glade -data/glade/input_dialog.glade -data/glade/invitation_received_dialog.glade -data/glade/join_groupchat_window.glade -data/glade/manage_bookmarks_window.glade -data/glade/manage_proxies_window.glade -data/glade/message_window.glade -data/glade/passphrase_dialog.glade -data/glade/popup_notification_window.glade -data/glade/preferences_window.glade -data/glade/progress_dialog.glade -data/glade/remove_account_window.glade -data/glade/roster_contact_context_menu.glade -data/glade/roster_window.glade -data/glade/service_discovery_window.glade -data/glade/service_registration_window.glade -data/glade/single_message_window.glade -data/glade/subscription_request_window.glade -data/glade/systray_context_menu.glade -data/glade/vcard_information_window.glade -data/glade/xml_console_window.glade +data/glade/account_context_menu.glade.h +data/glade/account_creation_wizard_window.glade.h +data/glade/account_modification_window.glade.h +data/glade/accounts_window.glade.h +data/glade/add_new_contact_window.glade.h +data/glade/advanced_configuration_window.glade.h +data/glade/advanced_menuitem_menu.glade.h +data/glade/advanced_notifications_window.glade.h +data/glade/change_password_dialog.glade.h +data/glade/change_status_message_dialog.glade.h +data/glade/chat_context_menu.glade.h +data/glade/chat_control_popup_menu.glade.h +data/glade/choose_gpg_key_dialog.glade.h +data/glade/data_form_window.glade.h +data/glade/edit_groups_dialog.glade.h +data/glade/filetransfers.glade.h +data/glade/gajim_themes_window.glade.h +data/glade/gc_control_popup_menu.glade.h +data/glade/gc_occupants_menu.glade.h +data/glade/history_manager.glade.h +data/glade/history_window.glade.h +data/glade/input_dialog.glade.h +data/glade/invitation_received_dialog.glade.h +data/glade/join_groupchat_window.glade.h +data/glade/manage_accounts_window.glade.h +data/glade/manage_bookmarks_window.glade.h +data/glade/manage_proxies_window.glade.h +data/glade/message_window.glade.h +data/glade/passphrase_dialog.glade.h +data/glade/popup_notification_window.glade.h +data/glade/preferences_window.glade.h +data/glade/privacy_list_edit_window.glade.h +data/glade/privacy_lists_first_window.glade.h +data/glade/progress_dialog.glade.h +data/glade/remove_account_window.glade.h +data/glade/roster_contact_context_menu.glade.h +data/glade/roster_window.glade.h +data/glade/service_discovery_window.glade.h +data/glade/service_registration_window.glade.h +data/glade/single_message_window.glade.h +data/glade/subscription_request_window.glade.h +data/glade/systray_context_menu.glade.h +data/glade/vcard_information_window.glade.h +data/glade/xml_console_window.glade.h src/advanced.py src/cell_renderer_image.py src/chat_control.py diff --git a/po/bg.po b/po/bg.po index 5883488bc..0999e4c72 100644 --- a/po/bg.po +++ b/po/bg.po @@ -5,12 +5,12 @@ # # # -#: ../src/gajim-remote.py:204 ../src/gajim-remote.py:211 +#: ../src/gajim-remote.py:218 ../src/gajim-remote.py:225 msgid "" msgstr "" "Project-Id-Version: Gajim 0.10\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2006-04-13 12:52+0200\n" +"POT-Creation-Date: 2006-07-04 00:03+0200\n" "PO-Revision-Date: 2006-04-14 14:12+0300\n" "Last-Translator: Yavor Doganov \n" "Language-Team: Bulgarian \n" @@ -31,30 +31,2105 @@ msgstr "Моментни ÑÑŠÐ¾Ð±Ñ‰ÐµÐ½Ð¸Ñ (Gajim)" msgid "Jabber IM Client" msgstr "Jabber клиент за бързи ÑъобщениÑ" -#: ../src/advanced.py:71 +#: ../data/glade/account_context_menu.glade.h:1 +msgid "Send Single _Message..." +msgstr "Изпращане на _еднократно Ñъобщение..." + +#: ../data/glade/account_context_menu.glade.h:2 +msgid "_Add Contact..." +msgstr "_ДобавÑне на контакт..." + +#: ../data/glade/account_context_menu.glade.h:3 +msgid "_Discover Services..." +msgstr "_Откриване на уÑлуги..." + +#: ../data/glade/account_context_menu.glade.h:4 +#: ../data/glade/roster_window.glade.h:15 +#: ../data/glade/systray_context_menu.glade.h:5 +msgid "_Group Chat" +msgstr "С_таÑ" + +#: ../data/glade/account_context_menu.glade.h:5 +msgid "_Modify Account..." +msgstr "_ПромÑна на акаунт..." + +#: ../data/glade/account_context_menu.glade.h:6 +msgid "_Status" +msgstr "_СъÑтоÑние" + +#: ../data/glade/account_creation_wizard_window.glade.h:1 +msgid "" +"Account is being created\n" +"\n" +"Please wait..." +msgstr "" +"Ðкаунтът Ñе Ñъздава\n" +"\n" +"Изчакайте..." + +#: ../data/glade/account_creation_wizard_window.glade.h:4 +msgid "Please choose one of the options below:" +msgstr "Изберете една от опциите по-долу:" + +#: ../data/glade/account_creation_wizard_window.glade.h:5 +msgid "Please fill in the data for your new account" +msgstr "Попълнете данните за нов акаунт" + +#: ../data/glade/account_creation_wizard_window.glade.h:6 +msgid "Click to see features (like MSN, ICQ transports) of jabber servers" +msgstr "" +"ÐатиÑнете, за да видите функционалноÑтите (като MSN, ICQ транÑпорти) на " +"Jabber Ñървърите" + +#: ../data/glade/account_creation_wizard_window.glade.h:7 +msgid "Connect when I press Finish" +msgstr "Свързване при натиÑкане на бутона „Приключване“" + +#: ../data/glade/account_creation_wizard_window.glade.h:8 +msgid "Gajim: Account Creation Wizard" +msgstr "Gajim: Помощник за Ñъздаване на акаунт" + +#: ../data/glade/account_creation_wizard_window.glade.h:9 +msgid "I already have an account I want to use" +msgstr "Вече имам региÑтриран акаунт" + +#: ../data/glade/account_creation_wizard_window.glade.h:10 +msgid "I want to _register for a new account" +msgstr "_ИÑкам да региÑтрирам нов Jabber акаунт" + +#: ../data/glade/account_creation_wizard_window.glade.h:11 +#: ../data/glade/account_modification_window.glade.h:18 +msgid "If checked, Gajim will remember the password for this account" +msgstr "Ðко тази Ð¾Ð¿Ñ†Ð¸Ñ Ðµ избрана, ще Ñе запомни паролата за този акаунт." + +#: ../data/glade/account_creation_wizard_window.glade.h:12 +#: ../data/glade/manage_proxies_window.glade.h:6 +msgid "Pass_word:" +msgstr "_Парола:" + +#: ../data/glade/account_creation_wizard_window.glade.h:13 +#: ../data/glade/account_modification_window.glade.h:37 +msgid "Save pass_word" +msgstr "Запазване на паро_ла" + +#: ../data/glade/account_creation_wizard_window.glade.h:14 +msgid "Servers Features" +msgstr "ФункционалноÑти на Ñървърите" + +#: ../data/glade/account_creation_wizard_window.glade.h:15 +msgid "Set my profile when I connect" +msgstr "ÐаÑтройване на профила при Ñвързване" + +#: ../data/glade/account_creation_wizard_window.glade.h:16 +msgid "" +"You need to have an account in order to connect\n" +"to the Jabber network." +msgstr "" +"ТрÑбва да имате акаунт, за да Ñе Ñвържете Ñ\n" +"Jabber Ñървър." + +#: ../data/glade/account_creation_wizard_window.glade.h:18 +msgid "Your JID:" +msgstr "Ð’Ð°ÑˆÐ¸Ñ JID:" + +#: ../data/glade/account_creation_wizard_window.glade.h:19 +#: ../data/glade/roster_window.glade.h:10 +msgid "_Advanced" +msgstr "Ðа_преднали" + +#: ../data/glade/account_creation_wizard_window.glade.h:20 +msgid "_Finish" +msgstr "_Приключване" + +#: ../data/glade/account_creation_wizard_window.glade.h:21 +#: ../data/glade/manage_proxies_window.glade.h:9 +msgid "_Host:" +msgstr "_ХоÑÑ‚:" + +#: ../data/glade/account_creation_wizard_window.glade.h:22 +#: ../data/glade/account_modification_window.glade.h:45 +msgid "_Password:" +msgstr "_Парола:" + +#: ../data/glade/account_creation_wizard_window.glade.h:23 +#: ../data/glade/manage_proxies_window.glade.h:10 +msgid "_Port:" +msgstr "По_рт:" + +#: ../data/glade/account_creation_wizard_window.glade.h:24 +msgid "_Retype Password:" +msgstr "_Въведете паролата отново:" + +#: ../data/glade/account_creation_wizard_window.glade.h:25 +msgid "_Server:" +msgstr "С_ървър:" + +#: ../data/glade/account_creation_wizard_window.glade.h:26 +msgid "_Use proxy" +msgstr "_Използване на Ñървър-поÑредник" + +#: ../data/glade/account_creation_wizard_window.glade.h:27 +#: ../data/glade/manage_proxies_window.glade.h:11 +msgid "_Username:" +msgstr "И_ме на потребител:" + +#: ../data/glade/account_modification_window.glade.h:1 +#: ../data/glade/preferences_window.glade.h:8 +msgid "Miscellaneous" +msgstr "Разни" + +#: ../data/glade/account_modification_window.glade.h:2 +msgid "OpenPGP" +msgstr "OpenPGP" + +#: ../data/glade/account_modification_window.glade.h:3 +msgid "Personal Information" +msgstr "Лични данни" + +#: ../data/glade/account_modification_window.glade.h:4 +msgid "Account" +msgstr "Ðкаунт" + +#: ../data/glade/account_modification_window.glade.h:5 +msgid "Account Modification" +msgstr "ПромÑна на акаунт" + +#: ../data/glade/account_modification_window.glade.h:6 +msgid "Autoreconnect when connection is lost" +msgstr "Ðвтоматично Ñвързване при разпадане на връзката" + +#: ../data/glade/account_modification_window.glade.h:7 +msgid "C_onnect on Gajim startup" +msgstr "С_вързване при Ñтартиране" + +#: ../data/glade/account_modification_window.glade.h:8 +msgid "Chan_ge Password" +msgstr "_ПромÑна на парола" + +#: ../data/glade/account_modification_window.glade.h:9 +msgid "" +"Check this so Gajim will connect in port 5223 where legacy servers are " +"expected to have SSL capabilities. Note that Gajim uses TLS encryption by " +"default if broadcasted by the server, and with this option enabled TLS will " +"be disabled" +msgstr "" +"Изберете тази опциÑ, за да може Gajim да Ñе Ñвързва по порт 5223, където Ñе " +"очаква Ñървърите да предоÑтавÑÑ‚ възможноÑти по SSL. Забележете, че Gajim " +"използва TLS криптиране по подразбиране и избирайки тази опциÑ, изключвате " +"TLS." + +#: ../data/glade/account_modification_window.glade.h:10 +msgid "Choose _Key..." +msgstr "Избор на _ключ..." + +#: ../data/glade/account_modification_window.glade.h:11 +msgid "Click to change account's password" +msgstr "ÐатиÑнете, за да Ñмените паролата на акаунта" + +#: ../data/glade/account_modification_window.glade.h:12 +msgid "Connection" +msgstr "Свързване" + +#: ../data/glade/account_modification_window.glade.h:13 +msgid "Edit Personal Information..." +msgstr "Редактиране на личните данни..." + +#: ../data/glade/account_modification_window.glade.h:14 +#: ../data/glade/roster_window.glade.h:5 ../src/notify.py:308 +#: ../src/notify.py:330 ../src/notify.py:342 ../src/tooltips.py:350 +msgid "Gajim" +msgstr "Gajim" + +#: ../data/glade/account_modification_window.glade.h:15 +#: ../data/glade/preferences_window.glade.h:44 +#: ../data/glade/vcard_information_window.glade.h:17 +#: ../src/roster_window.py:290 ../src/roster_window.py:1184 +#: ../src/roster_window.py:1405 +msgid "General" +msgstr "Общи" + +#: ../data/glade/account_modification_window.glade.h:16 +msgid "Hostname: " +msgstr "ХоÑÑ‚: " + +#: ../data/glade/account_modification_window.glade.h:17 +#, fuzzy +msgid "" +"If checked, Gajim will also broadcast some more IPs except from just your " +"IP, so file transfer has higher chances of working." +msgstr "" +"Ðко тази Ð¾Ð¿Ñ†Ð¸Ñ Ðµ избрана, Gajim ще излъчва повече IP адреÑи, така че " +"файловиÑÑ‚ транÑфер има повече шанÑове да работи добре." + +#: ../data/glade/account_modification_window.glade.h:19 +msgid "" +"If checked, Gajim will send keep-alive packets so it prevents connection " +"timeout which results in disconnection" +msgstr "" +"Ðко тази Ð¾Ð¿Ñ†Ð¸Ñ Ðµ избрана, Gajim ще изпраща пакети за поддържане на връзката " +"Ñ Ñ†ÐµÐ» избÑгване на разпадането Ñ." + +#: ../data/glade/account_modification_window.glade.h:20 +msgid "" +"If checked, Gajim will store the password in ~/.gajim/config with 'read' " +"permission only for you" +msgstr "" +"Ðко е избрано, паролата ще Ñе запази в ~/.gajim/config Ñ Ð¿Ñ€Ð°Ð²Ð° за четене " +"Ñамо за потребителÑ" + +#: ../data/glade/account_modification_window.glade.h:21 +msgid "" +"If checked, Gajim, when launched, will automatically connect to jabber using " +"this account" +msgstr "" +"Ðко тази Ð¾Ð¿Ñ†Ð¸Ñ Ðµ избрана, при Ñтартиране Gajim ще Ñе Ñвързва автоматично, " +"използвайки този акаунт." + +#: ../data/glade/account_modification_window.glade.h:22 +msgid "" +"If checked, any change to the global status (handled by the combobox at the " +"bottom of the roster window) will change the status of this account " +"accordingly" +msgstr "" +"Ðко тази Ð¾Ð¿Ñ†Ð¸Ñ Ðµ избрана, вÑÑка промÑна на глобалното ÑÑŠÑтоÑние (от ÑпиÑъка " +"в долната чаÑÑ‚ на Ð³Ð»Ð°Ð²Ð½Ð¸Ñ Ð¿Ñ€Ð¾Ð·Ð¾Ñ€ÐµÑ†) ще Ð¿Ñ€Ð¾Ð¼ÐµÐ½Ñ Ð¸ ÑÑŠÑтоÑнието на този акаунт." + +#: ../data/glade/account_modification_window.glade.h:23 +msgid "Information about you, as stored in the server" +msgstr "Вашите личните данни, както Ñа запазени на Ñървъра" + +#: ../data/glade/account_modification_window.glade.h:24 +msgid "Manage..." +msgstr "Управление на..." + +#: ../data/glade/account_modification_window.glade.h:25 ../src/config.py:1448 +msgid "No key selected" +msgstr "ÐÑма избран ключ" + +#. None means no proxy profile selected +#: ../data/glade/account_modification_window.glade.h:27 ../src/config.py:1053 +#: ../src/config.py:1058 ../src/config.py:1230 ../src/config.py:1505 +#: ../src/config.py:1578 ../src/config.py:2282 +msgid "None" +msgstr "ÐÑма" + +#: ../data/glade/account_modification_window.glade.h:28 +msgid "Personal Information" +msgstr "Лични данни" + +#: ../data/glade/account_modification_window.glade.h:29 +msgid "Port: " +msgstr "Порт: " + +#: ../data/glade/account_modification_window.glade.h:30 +msgid "Priori_ty:" +msgstr "Приори_тет:" + +#: ../data/glade/account_modification_window.glade.h:31 +msgid "" +"Priority is used in Jabber to determine who gets the events from the jabber " +"server when two or more clients are connected using the same account; The " +"client with the highest priority gets the events" +msgstr "" +"Приоритетът в Jabber Ñе използва, за да Ñе определи кой да получава " +"ÑъбитиÑта от Jabber Ñървър, когато два или повече клиента Ñа Ñвързани Ñ ÐµÐ´Ð¸Ð½ " +"и Ñъщ акаунт. Клиентът Ñ Ð½Ð°Ð¹-голÑм приоритет ще получава ÑъбитиÑта." + +#: ../data/glade/account_modification_window.glade.h:32 +msgid "Proxy:" +msgstr "Сървър-поÑредник:" + +#: ../data/glade/account_modification_window.glade.h:33 +msgid "Resour_ce: " +msgstr "Ре_ÑурÑ: " + +#: ../data/glade/account_modification_window.glade.h:34 +msgid "" +"Resource is sent to the Jabber server in order to separate the same JID in " +"two or more parts depending on the number of the clients connected in the " +"same server with the same account. So you might be connected in the same " +"account with resource 'Home' and 'Work' at the same time. The resource which " +"has the highest priority will get the events. (see below)" +msgstr "" +"РеÑурÑÑŠÑ‚ Ñе изпраща до Jabber Ñървъра, за да „раздели“ един и Ñъщи JID на " +"две или повече чаÑти в завиÑимоÑÑ‚ от Ð±Ñ€Ð¾Ñ Ð½Ð° клиентите, Ñвързани Ñ ÐµÐ´Ð¸Ð½ " +"Ñървър и един и Ñъщ акаунт. Така може да Ñте Ñвързани ÑÑŠÑ ÑÑŠÑ‰Ð¸Ñ Ð°ÐºÐ°ÑƒÐ½Ñ‚ и " +"реÑурÑи „Вкъщи“ и „Ðа работа“ по едно и Ñъщо време. РеÑурÑÑŠÑ‚ Ñ Ð½Ð°Ð¹-голÑм " +"приоритет ще получава ÑъбитиÑта. (вижте по-долу)" + +#: ../data/glade/account_modification_window.glade.h:35 +msgid "Save _passphrase (insecure)" +msgstr "Запазване на _паролата (неÑигурно)" + +#: ../data/glade/account_modification_window.glade.h:36 +msgid "Save conversation _logs for all contacts" +msgstr "Запазване на иÑÑ‚Ð¾Ñ€Ð¸Ñ Ð½Ð° _разговорите за вÑички контакти" + +#: ../data/glade/account_modification_window.glade.h:38 +msgid "Send keep-alive packets" +msgstr "Изпращане на пакети за поддържане на връзката" + +#: ../data/glade/account_modification_window.glade.h:39 +msgid "Synch_ronize account status with global status" +msgstr "Син_хронизиране на ÑÑŠÑтоÑнието на акаунта Ñ Ð¾Ð±Ñ‰Ð¾Ñ‚Ð¾ ÑÑŠÑтоÑние" + +#: ../data/glade/account_modification_window.glade.h:40 +msgid "Use _SSL (legacy)" +msgstr "Използване на _SSL (извън употреба)" + +#: ../data/glade/account_modification_window.glade.h:41 +msgid "Use custom hostname/port" +msgstr "Използване на различен хоÑÑ‚/порт" + +#: ../data/glade/account_modification_window.glade.h:42 +msgid "Use file transfer proxies" +msgstr "Използване на Ñървъри-поÑредници за файлови транÑфери" + +#: ../data/glade/account_modification_window.glade.h:43 +#: ../data/glade/add_new_contact_window.glade.h:6 +msgid "_Jabber ID:" +msgstr "_Jabber ID:" + +#: ../data/glade/account_modification_window.glade.h:44 +msgid "_Name: " +msgstr "_Име: " + +#: ../data/glade/accounts_window.glade.h:1 +msgid "Accounts" +msgstr "Ðкаунти" + +#: ../data/glade/accounts_window.glade.h:2 +msgid "" +"If you have 2 or more accounts and it is checked, Gajim will list all " +"contacts as if you had one account" +msgstr "" +"Ðко имате два или повече акаунта и тази Ð¾Ð¿Ñ†Ð¸Ñ Ðµ избрана, Gajim ще изобразÑва " +"вÑички контакти като от един акаунт." + +#: ../data/glade/accounts_window.glade.h:3 +msgid "_Merge accounts" +msgstr "_СмеÑване на акаунти" + +#: ../data/glade/accounts_window.glade.h:4 +msgid "_Modify" +msgstr "Пром_Ñна" + +#: ../data/glade/accounts_window.glade.h:5 +#: ../data/glade/remove_account_window.glade.h:4 +msgid "_Remove" +msgstr "_Премахване" + +#: ../data/glade/add_new_contact_window.glade.h:1 +#, fuzzy +msgid "A_llow this contact to view my status" +msgstr "Позволение за виждане на ÑÑŠÑтоÑнието ми" + +#: ../data/glade/add_new_contact_window.glade.h:2 +msgid "Add New Contact" +msgstr "ДобавÑне на нов контакт" + +#: ../data/glade/add_new_contact_window.glade.h:3 +msgid "I would like to add you to my contact list." +msgstr "Бих иÑкал(а) да ви Ð´Ð¾Ð±Ð°Ð²Ñ ÐºÑŠÐ¼ ÑпиÑъка Ñи." + +#: ../data/glade/add_new_contact_window.glade.h:4 +#, fuzzy +msgid "_Account:" +msgstr "Ðкаунт" + +#: ../data/glade/add_new_contact_window.glade.h:5 +#, fuzzy +msgid "_Group:" +msgstr "Група:" + +#: ../data/glade/add_new_contact_window.glade.h:7 +#, fuzzy +msgid "_Nickname:" +msgstr "ПÑевдоним:" + +#: ../data/glade/add_new_contact_window.glade.h:8 +#, fuzzy +msgid "_Protocol:" +msgstr "Протокол:" + +#: ../data/glade/add_new_contact_window.glade.h:9 +msgid "_Subscribe" +msgstr "_ЗапиÑване" + +#: ../data/glade/add_new_contact_window.glade.h:10 +#, fuzzy +msgid "_User ID:" +msgstr "Jabber ID:" + +#: ../data/glade/advanced_configuration_window.glade.h:1 +msgid "Description" +msgstr "ОпиÑание" + +#: ../data/glade/advanced_configuration_window.glade.h:2 +msgid "NOTE: You should restart gajim for some setting to take effect" +msgstr "" +"ЗÐБЕЛЕЖКÐ: ТрÑбва да реÑтартирате Gajim, за да влÑзат в Ñила нÑкои от " +"наÑтройките" + +#: ../data/glade/advanced_configuration_window.glade.h:3 +msgid "Advanced Configuration Editor" +msgstr "Редактор на наÑтройки за напреднали" + +#: ../data/glade/advanced_configuration_window.glade.h:4 +msgid "Filter:" +msgstr "Филтър:" + +#: ../data/glade/advanced_menuitem_menu.glade.h:1 +msgid "Delete MOTD" +msgstr "Изтриване на MOTD" + +#: ../data/glade/advanced_menuitem_menu.glade.h:2 +msgid "Deletes Message of the Day" +msgstr "Изтрива Ñъобщението за денÑ" + +#: ../data/glade/advanced_menuitem_menu.glade.h:3 +msgid "Sends a message to currently connected users to this server" +msgstr "" +"Изпраща Ñъобщение на вÑички потребители, Ñвързани ÑÑŠÑ Ñървъра в момента" + +#: ../data/glade/advanced_menuitem_menu.glade.h:4 +msgid "Set MOTD" +msgstr "ÐаÑтройване на MOTD" + +#: ../data/glade/advanced_menuitem_menu.glade.h:5 +msgid "Sets Message of the Day" +msgstr "ÐаÑтройване на Ñъобщение за денÑ" + +#: ../data/glade/advanced_menuitem_menu.glade.h:6 +msgid "Show _XML Console" +msgstr "Показване на _XML конзола" + +#: ../data/glade/advanced_menuitem_menu.glade.h:7 +msgid "Update MOTD" +msgstr "Ðктуализиране на MOTD" + +#: ../data/glade/advanced_menuitem_menu.glade.h:8 +msgid "Updates Message of the Day" +msgstr "Ðктуализиране на Ñъобщението за денÑ" + +#: ../data/glade/advanced_menuitem_menu.glade.h:9 +msgid "_Administrator" +msgstr "_ÐдминиÑтратор" + +#: ../data/glade/advanced_menuitem_menu.glade.h:10 +msgid "_Privacy Lists" +msgstr "" + +#: ../data/glade/advanced_menuitem_menu.glade.h:11 +msgid "_Send Server Message" +msgstr "_Изпращане на Ñъобщение от Ñървъра" + +#: ../data/glade/advanced_menuitem_menu.glade.h:12 +msgid "_Send Single Message" +msgstr "_Изпращане на еднократно Ñъобщение" + +#: ../data/glade/advanced_notifications_window.glade.h:1 +msgid " a window/tab opened with that contact " +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:2 +#, fuzzy +msgid "Actions" +msgstr "Програми" + +#: ../data/glade/advanced_notifications_window.glade.h:3 +#, fuzzy +msgid "Conditions" +msgstr "Звуци" + +#: ../data/glade/advanced_notifications_window.glade.h:4 +#: ../data/glade/preferences_window.glade.h:10 +msgid "Sounds" +msgstr "Звуци" + +#: ../data/glade/advanced_notifications_window.glade.h:5 +#, fuzzy +msgid "Add" +msgstr "ÐдреÑ" + +#: ../data/glade/advanced_notifications_window.glade.h:6 +#, fuzzy +msgid "Advanced Actions" +msgstr "Ðапреднали" + +#: ../data/glade/advanced_notifications_window.glade.h:7 +#, fuzzy +msgid "Advanced Notifications Control" +msgstr "Редактор на наÑтройки за напреднали" + +#: ../data/glade/advanced_notifications_window.glade.h:8 +#, fuzzy +msgid "All Status " +msgstr "СъÑтоÑние: " + +#: ../data/glade/advanced_notifications_window.glade.h:9 +msgid "And I " +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:10 +#, fuzzy +msgid "Away " +msgstr "ОтÑÑŠÑтвам" + +#: ../data/glade/advanced_notifications_window.glade.h:11 +#, fuzzy +msgid "Busy " +msgstr "Зает" + +#: ../data/glade/advanced_notifications_window.glade.h:12 +msgid "Don't have " +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:13 +#, fuzzy +msgid "Down" +msgstr "ИзтеглÑне" + +#: ../data/glade/advanced_notifications_window.glade.h:14 +msgid "Have " +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:15 +#: ../src/common/helpers.py:239 +msgid "Invisible" +msgstr "Ðевидим" + +#: ../data/glade/advanced_notifications_window.glade.h:16 +#, fuzzy +msgid "Launch a command" +msgstr "команда" + +#: ../data/glade/advanced_notifications_window.glade.h:17 +#, fuzzy +msgid "List of special notifications settings" +msgstr "ДобавÑне на Ñпециално уведомление за %s" + +#: ../data/glade/advanced_notifications_window.glade.h:18 +#, fuzzy +msgid "Not Available " +msgstr "Ðе Ñъм на разположение" + +#: ../data/glade/advanced_notifications_window.glade.h:19 +#, fuzzy +msgid "Online / Free For Chat" +msgstr "Свободен за разговор" + +#: ../data/glade/advanced_notifications_window.glade.h:20 +#, fuzzy +msgid "Play a sound" +msgstr "Изпълнение на з_вуци" + +#: ../data/glade/advanced_notifications_window.glade.h:21 +msgid "" +"Receive a Message\n" +"Contact Connected\n" +"Contact Disconnected\n" +"Contact Change Status\n" +"Group Chat Message Highlight\n" +"Group Chat Message Received\n" +"File Transfert Resquest\n" +"File Transfert Started\n" +"File Transfert Finished" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:30 +msgid "Some special(s) status..." +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:31 +msgid "Up" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:32 +msgid "When " +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:33 +msgid "_Activate Windows manager UrgencyHint to make chat taskbar to flash" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:34 +#, fuzzy +msgid "_Disable auto opening chat window" +msgstr "Скрива бутоните в прозореца на ÑтаÑта" + +#: ../data/glade/advanced_notifications_window.glade.h:35 +msgid "_Disable existing popup window" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:36 +msgid "_Disable existing sound for this event" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:37 +msgid "_Disable showing event in roster" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:38 +msgid "_Disable showing event in systray" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:39 +msgid "_Inform me with a popup window" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:40 +msgid "_Open chat window with user" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:41 +#, fuzzy +msgid "_Show event in roster" +msgstr "Показване Ñамо в ÑпиÑ_ъка" + +#: ../data/glade/advanced_notifications_window.glade.h:42 +#, fuzzy +msgid "_Show event in systray" +msgstr "Показване Ñамо в ÑпиÑ_ъка" + +#: ../data/glade/advanced_notifications_window.glade.h:43 +msgid "" +"contact(s)\n" +"group(s)\n" +"everybody" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:46 +#, fuzzy +msgid "for " +msgstr "Порт: " + +#: ../data/glade/advanced_notifications_window.glade.h:47 +msgid "when I'm " +msgstr "" + +#: ../data/glade/change_password_dialog.glade.h:1 +msgid "Change Password" +msgstr "ПромÑна на парола" + +#: ../data/glade/change_password_dialog.glade.h:2 +msgid "Enter it again for confirmation:" +msgstr "Въведете Ñ Ð¾Ñ‚Ð½Ð¾Ð²Ð¾ за потвърждение:" + +#: ../data/glade/change_password_dialog.glade.h:3 +msgid "Enter new password:" +msgstr "Въведете нова парола:" + +#: ../data/glade/change_status_message_dialog.glade.h:1 +msgid "Type your new status message" +msgstr "Ðапишете новото Ñъобщение за ÑÑŠÑтоÑние" + +#: ../data/glade/change_status_message_dialog.glade.h:2 +msgid "Preset messages:" +msgstr "ÐаÑтроени ÑъобщениÑ:" + +#: ../data/glade/change_status_message_dialog.glade.h:3 +msgid "Save as Preset..." +msgstr "Запазване като наÑтроено..." + +#: ../data/glade/chat_context_menu.glade.h:1 +msgid "Join _Group Chat" +msgstr "Влизане в _ÑтаÑ" + +#: ../data/glade/chat_context_menu.glade.h:2 +#: ../data/glade/chat_control_popup_menu.glade.h:4 +#: ../data/glade/gc_occupants_menu.glade.h:2 +#: ../data/glade/roster_contact_context_menu.glade.h:8 +msgid "_Add to Roster" +msgstr "ДобавÑне към _ÑпиÑъка..." + +#: ../data/glade/chat_context_menu.glade.h:3 +msgid "_Copy JID/Email Address" +msgstr "Копиране на _JID/Е-поща" + +#: ../data/glade/chat_context_menu.glade.h:4 +msgid "_Copy Link Location" +msgstr "_Копиране на адреÑа на връзката" + +#: ../data/glade/chat_context_menu.glade.h:5 +msgid "_Open Email Composer" +msgstr "_ОтварÑне на пощенÑката програма" + +#: ../data/glade/chat_context_menu.glade.h:6 +msgid "_Open Link in Browser" +msgstr "_ОтварÑне на връзката в браузър" + +#: ../data/glade/chat_context_menu.glade.h:7 +#: ../data/glade/roster_window.glade.h:19 +#: ../data/glade/systray_context_menu.glade.h:6 +msgid "_Start Chat" +msgstr "_Започване на разговор" + +#: ../data/glade/chat_control_popup_menu.glade.h:1 +msgid "Click to see past conversations with this contact" +msgstr "ÐатиÑнете, за да видите Ñтари разговори Ñ Ñ‚Ð¾Ð·Ð¸ контакт" + +#: ../data/glade/chat_control_popup_menu.glade.h:2 +#: ../data/glade/roster_contact_context_menu.glade.h:6 +msgid "Send _File" +msgstr "Изпращане на _файл" + +#: ../data/glade/chat_control_popup_menu.glade.h:3 +msgid "Toggle Open_PGP Encryption" +msgstr "Превключване на Open_PGP криптиране" + +#: ../data/glade/chat_control_popup_menu.glade.h:5 +#: ../data/glade/gc_control_popup_menu.glade.h:6 +msgid "_Compact View Alt+C" +msgstr "_Компактен изглед (Alt+C)" + +#: ../data/glade/chat_control_popup_menu.glade.h:6 +#: ../data/glade/gc_control_popup_menu.glade.h:7 +#: ../data/glade/gc_occupants_menu.glade.h:5 +#: ../data/glade/roster_contact_context_menu.glade.h:11 +msgid "_History" +msgstr "_ИÑториÑ" + +#: ../data/glade/data_form_window.glade.h:1 +msgid "Room Configuration" +msgstr "ÐаÑтройки на ÑтаÑта" + +#: ../data/glade/edit_groups_dialog.glade.h:1 +msgid "Edit Groups" +msgstr "Редактиране на групи" + +#: ../data/glade/filetransfers.glade.h:1 +msgid "A list of active, completed and stopped file transfers" +msgstr "СпиÑък Ñ Ð°ÐºÑ‚Ð¸Ð²Ð½Ð¸, завършили и прекъÑнати файлови транÑфери" + +#: ../data/glade/filetransfers.glade.h:2 +msgid "Cancel file transfer" +msgstr "ÐžÑ‚Ð¼ÐµÐ½Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð²Ð¸Ñ Ñ‚Ñ€Ð°Ð½Ñфер" + +#: ../data/glade/filetransfers.glade.h:3 +msgid "Cancels the selected file transfer" +msgstr "ÐžÑ‚Ð¼ÐµÐ½Ñ Ð¸Ð·Ð±Ñ€Ð°Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð² транÑфер" + +#: ../data/glade/filetransfers.glade.h:4 +msgid "Cancels the selected file transfer and removes incomplete file" +msgstr "ÐžÑ‚Ð¼ÐµÐ½Ñ Ð¸Ð·Ð±Ñ€Ð°Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð² транÑфер и изтрива Ð½ÐµÐ¿ÑŠÐ»Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð»" + +#: ../data/glade/filetransfers.glade.h:5 +msgid "Clean _up" +msgstr "Из_чиÑтване" + +#: ../data/glade/filetransfers.glade.h:6 +msgid "File Transfers" +msgstr "Файлови транÑфери" + +#: ../data/glade/filetransfers.glade.h:7 +msgid "Hides the window" +msgstr "Скрива прозореца" + +#: ../data/glade/filetransfers.glade.h:8 +msgid "Remove file transfer from the list." +msgstr "Премахване на Ñ„Ð°Ð¹Ð»Ð¾Ð²Ð¸Ñ Ñ‚Ñ€Ð°Ð½Ñфер от ÑпиÑъка." + +#: ../data/glade/filetransfers.glade.h:9 +msgid "Removes completed, canceled and failed file transfers from the list" +msgstr "" +"Премахва завършилите, прекъÑнатите или провалени файлови транÑфери от ÑпиÑъка" + +#: ../data/glade/filetransfers.glade.h:10 +msgid "Shows a list of file transfers between you and other" +msgstr "Показва ÑпиÑък Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð²Ð¸Ñ‚Ðµ транÑфери между двата контакта" + +#: ../data/glade/filetransfers.glade.h:11 +msgid "" +"This action removes single file transfer from the list. If the transfer is " +"active, it is first stopped and then removed" +msgstr "" +"Това дейÑтвие премахва файлов транÑфер от ÑпиÑъка. Ðко транÑферът е активен, " +"първо Ñе прекъÑва и Ñлед това Ñе премахва." + +#: ../data/glade/filetransfers.glade.h:12 +msgid "When a file transfer is complete show a popup notification" +msgstr "УведомÑване чрез изÑкачащ прозорец при завършване на Ñ„Ð°Ð¹Ð»Ð¾Ð²Ð¸Ñ Ñ‚Ñ€Ð°Ð½Ñфер" + +#: ../data/glade/filetransfers.glade.h:13 ../src/filetransfers_window.py:753 +msgid "_Continue" +msgstr "П_родължаване" + +#: ../data/glade/filetransfers.glade.h:14 +msgid "_Notify me when a file transfer is complete" +msgstr "_УведомÑване при завършване на Ñ„Ð°Ð¹Ð»Ð¾Ð²Ð¸Ñ Ñ‚Ñ€Ð°Ð½Ñфер" + +#: ../data/glade/filetransfers.glade.h:15 ../src/filetransfers_window.py:190 +msgid "_Open Containing Folder" +msgstr "_ОтварÑне на папката" + +#: ../data/glade/filetransfers.glade.h:16 +msgid "_Pause" +msgstr "П_ауза" + +#: ../data/glade/filetransfers.glade.h:17 +msgid "file transfers list" +msgstr "ÑпиÑък Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð²Ð¸ транÑфери" + +#: ../data/glade/gajim_themes_window.glade.h:1 +msgid "Chatstate Tab Colors" +msgstr "Цветове на подпрозорците" + +#: ../data/glade/gajim_themes_window.glade.h:2 +msgid "" +"Account\n" +"Group\n" +"Contact\n" +"Banner" +msgstr "" +"Ðкаунт\n" +"Група\n" +"Контакт\n" +"Лента" + +#: ../data/glade/gajim_themes_window.glade.h:6 +#: ../data/glade/privacy_list_edit_window.glade.h:4 ../src/config.py:326 +msgid "Active" +msgstr "Ðктивен" + +#: ../data/glade/gajim_themes_window.glade.h:7 +msgid "Bold" +msgstr "Получер" + +#: ../data/glade/gajim_themes_window.glade.h:8 +msgid "Composing" +msgstr "Пише" + +#: ../data/glade/gajim_themes_window.glade.h:9 +msgid "Font style:" +msgstr "Стил на шрифта:" + +#: ../data/glade/gajim_themes_window.glade.h:10 +msgid "Gajim Themes Customization" +msgstr "ПерÑонализиране на темите на Gajim" + +#: ../data/glade/gajim_themes_window.glade.h:11 +msgid "Gone" +msgstr "ОтÑÑŠÑтва" + +#: ../data/glade/gajim_themes_window.glade.h:12 +msgid "Inactive" +msgstr "Бездеен" + +#: ../data/glade/gajim_themes_window.glade.h:13 +msgid "Italic" +msgstr "КурÑив" + +#: ../data/glade/gajim_themes_window.glade.h:14 +msgid "" +"MUC\n" +"Messages" +msgstr "" +"СъобщениÑ\n" +"в ÑтаÑ" + +#: ../data/glade/gajim_themes_window.glade.h:16 +msgid "" +"MUC Directed\n" +"Messages" +msgstr "" +"СъобщениÑ\n" +"за ÑтаÑ" + +#: ../data/glade/gajim_themes_window.glade.h:18 ../src/tooltips.py:667 +msgid "Paused" +msgstr "Временно преуÑтановен" + +#: ../data/glade/gajim_themes_window.glade.h:19 +msgid "Text _color:" +msgstr "_ЦвÑÑ‚ на текÑта" + +#: ../data/glade/gajim_themes_window.glade.h:20 +msgid "Text _font:" +msgstr "_Шрифт на текÑта" + +#: ../data/glade/gajim_themes_window.glade.h:21 +msgid "_Background:" +msgstr "_Фон:" + +#: ../data/glade/gc_control_popup_menu.glade.h:1 +msgid "Change _Nickname" +msgstr "СмÑна на пÑе_вдоним" + +#: ../data/glade/gc_control_popup_menu.glade.h:2 +msgid "Change _Subject" +msgstr "ПромÑна на _темата" + +#: ../data/glade/gc_control_popup_menu.glade.h:3 +msgid "Click to see past conversation in this room" +msgstr "ÐатиÑнете, за да видите Ñтари разговори в тази ÑтаÑ" + +#: ../data/glade/gc_control_popup_menu.glade.h:4 +msgid "Configure _Room" +msgstr "ÐаÑтройки на _ÑтаÑта" + +#: ../data/glade/gc_control_popup_menu.glade.h:5 +msgid "_Bookmark This Room" +msgstr "_ДобавÑне на тази ÑÑ‚Ð°Ñ ÐºÑŠÐ¼ отметките" + +#: ../data/glade/gc_occupants_menu.glade.h:1 +msgid "Mo_derator" +msgstr "_ПредÑедател" + +#: ../data/glade/gc_occupants_menu.glade.h:3 +msgid "_Admin" +msgstr "_ÐдминиÑтратор" + +#: ../data/glade/gc_occupants_menu.glade.h:4 +msgid "_Ban" +msgstr "_ЗабранÑване на доÑтъпа" + +#: ../data/glade/gc_occupants_menu.glade.h:6 +msgid "_Kick" +msgstr "_Изритване" + +#: ../data/glade/gc_occupants_menu.glade.h:7 +msgid "_Member" +msgstr "_Член" + +#: ../data/glade/gc_occupants_menu.glade.h:8 +msgid "_Occupant Actions" +msgstr "_ДейÑтвиÑ" + +#: ../data/glade/gc_occupants_menu.glade.h:9 +msgid "_Owner" +msgstr "Со_бÑтвеник" + +#: ../data/glade/gc_occupants_menu.glade.h:10 +msgid "_Send Private Message" +msgstr "_Изпращане на лично Ñъобщение" + +#: ../data/glade/gc_occupants_menu.glade.h:11 +msgid "_Voice" +msgstr "_ГлаÑ" + +#: ../data/glade/history_manager.glade.h:1 +msgid "" +"Welcome to Gajim History Logs Manager\n" +"\n" +"You can select logs from the left and/or search database from below.\n" +"\n" +"WARNING:\n" +"If you plan to do massive deletions, please make sure Gajim is not running. " +"Generally avoid deletions with contacts you currently chat with." +msgstr "" +"Добре дошли в мениджъра на иÑториÑта на разговорите на Gajim\n" +"\n" +"Може да избирате дневници отлÑво и/или да Ñ‚ÑŠÑ€Ñите в базата от данни долу.\n" +"\n" +"ПРЕДУПРЕЖДЕÐИЕ:\n" +"Ðко планирате да изтривате маÑово, уверете Ñе, че Gajim не е Ñтартиран. Като " +"цÑло избÑгвайте да изтривате иÑÑ‚Ð¾Ñ€Ð¸Ñ Ð·Ð° контакти, Ñ ÐºÐ¾Ð¸Ñ‚Ð¾ разговарÑте в " +"момента." + +#: ../data/glade/history_manager.glade.h:7 +msgid "Delete" +msgstr "Изтриване" + +#: ../data/glade/history_manager.glade.h:8 +msgid "Export" +msgstr "ИзнаÑÑне" + +#: ../data/glade/history_manager.glade.h:9 +msgid "Gajim History Logs Manager" +msgstr "Мениджър на иÑториÑта на разговорите" + +#: ../data/glade/history_manager.glade.h:10 +msgid "_Search Database" +msgstr "_ТърÑене в базата от данни" + +#: ../data/glade/history_window.glade.h:1 +msgid "Build custom query" +msgstr "ПотребителÑка заÑвка" + +#: ../data/glade/history_window.glade.h:2 +msgid "Conversation History" +msgstr "ИÑÑ‚Ð¾Ñ€Ð¸Ñ Ð½Ð° разговорите" + +#: ../data/glade/history_window.glade.h:3 +msgid "Query Builder..." +msgstr "ИзготвÑне на заÑвки..." + +#: ../data/glade/history_window.glade.h:4 +msgid "Search" +msgstr "ТърÑене" + +#: ../data/glade/history_window.glade.h:5 +msgid "_Search" +msgstr "_ТърÑене" + +#: ../data/glade/invitation_received_dialog.glade.h:1 +msgid "Accept" +msgstr "Приемане" + +#: ../data/glade/invitation_received_dialog.glade.h:2 +#: ../data/glade/privacy_list_edit_window.glade.h:8 +msgid "Deny" +msgstr "Отказване" + +#: ../data/glade/invitation_received_dialog.glade.h:3 +msgid "Invitation Received" +msgstr "Получена покана" + +#: ../data/glade/join_groupchat_window.glade.h:1 ../src/dialogs.py:941 +msgid "Join Group Chat" +msgstr "Влизане в ÑтаÑ" + +#: ../data/glade/join_groupchat_window.glade.h:2 +#: ../data/glade/manage_bookmarks_window.glade.h:4 +#: ../data/glade/vcard_information_window.glade.h:28 +msgid "Nickname:" +msgstr "ПÑевдоним:" + +#: ../data/glade/join_groupchat_window.glade.h:3 +#: ../data/glade/manage_bookmarks_window.glade.h:5 +msgid "Password:" +msgstr "Парола:" + +#: ../data/glade/join_groupchat_window.glade.h:4 +msgid "Recently:" +msgstr "Скоро поÑетени:" + +#: ../data/glade/join_groupchat_window.glade.h:5 +#: ../data/glade/manage_bookmarks_window.glade.h:7 +msgid "Room:" +msgstr "СтаÑ:" + +#: ../data/glade/join_groupchat_window.glade.h:6 +#: ../data/glade/manage_bookmarks_window.glade.h:8 +msgid "Server:" +msgstr "Сървър:" + +#: ../data/glade/join_groupchat_window.glade.h:7 ../src/disco.py:1145 +#: ../src/disco.py:1507 +msgid "_Join" +msgstr "_Влизане" + +#: ../data/glade/manage_accounts_window.glade.h:1 +msgid "Manage Accounts" +msgstr "Управление на акаунти" + +#: ../data/glade/manage_bookmarks_window.glade.h:1 +msgid "Auto join" +msgstr "Ðвтоматично влизане" + +#: ../data/glade/manage_bookmarks_window.glade.h:2 +msgid "If checked, Gajim will join this group chat on startup" +msgstr "Ðко тази Ð¾Ð¿Ñ†Ð¸Ñ Ðµ избрана, ще влизате в тази ÑÑ‚Ð°Ñ Ð¿Ñ€Ð¸ Ñтартиране." + +#: ../data/glade/manage_bookmarks_window.glade.h:3 +msgid "Manage Bookmarks" +msgstr "Управление на отметките" + +#: ../data/glade/manage_bookmarks_window.glade.h:6 +#, fuzzy +msgid "Print status:" +msgstr "ИзпиÑване на времето:" + +#: ../data/glade/manage_bookmarks_window.glade.h:9 +msgid "Title:" +msgstr "Титла:" + +#: ../data/glade/manage_proxies_window.glade.h:1 +msgid "Properties" +msgstr "ÐаÑтройки" + +#: ../data/glade/manage_proxies_window.glade.h:2 +msgid "Settings" +msgstr "ÐаÑтройки" + +#: ../data/glade/manage_proxies_window.glade.h:3 +msgid "HTTP Connect" +msgstr "Свързване по HTTP" + +#: ../data/glade/manage_proxies_window.glade.h:4 +msgid "Manage Proxy Profiles" +msgstr "ÐаÑтройки на Ñървъра-поÑредник" + +#: ../data/glade/manage_proxies_window.glade.h:5 +#: ../data/glade/vcard_information_window.glade.h:27 +msgid "Name:" +msgstr "Име:" + +#: ../data/glade/manage_proxies_window.glade.h:7 +msgid "Type:" +msgstr "Тип:" + +#: ../data/glade/manage_proxies_window.glade.h:8 +msgid "Use authentication" +msgstr "Използване на удоÑтоверÑване" + +#: ../data/glade/message_window.glade.h:1 +msgid "Click to insert an emoticon (Alt+M)" +msgstr "ÐатиÑнете за вмъкване на емотикона (Alt+M)" + +#: ../data/glade/message_window.glade.h:2 ../src/chat_control.py:966 +msgid "OpenPGP Encryption" +msgstr "OpenPGP криптиране" + +#. Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector) +#: ../data/glade/message_window.glade.h:4 +#: ../data/glade/roster_window.glade.h:9 +msgid "_Actions" +msgstr "_ДейÑтвиÑ" + +#. Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector) +#: ../data/glade/message_window.glade.h:6 +#: ../data/glade/xml_console_window.glade.h:11 +#: ../src/filetransfers_window.py:249 +msgid "_Send" +msgstr "_Изпращане" + +#: ../data/glade/passphrase_dialog.glade.h:1 +msgid "Passphrase" +msgstr "Парола" + +#: ../data/glade/preferences_window.glade.h:1 +msgid "Advanced Configuration Editor" +msgstr "Редактор на наÑтройките за напреднали" + +#: ../data/glade/preferences_window.glade.h:2 +msgid "Applications" +msgstr "Програми" + +#. a header for custom browser/client/file manager. so translate sth like: Custom Settings +#: ../data/glade/preferences_window.glade.h:4 +msgid "Custom" +msgstr "ПерÑонални" + +#: ../data/glade/preferences_window.glade.h:5 +msgid "Format of a line" +msgstr "Формат на реда" + +#: ../data/glade/preferences_window.glade.h:6 +#, fuzzy +msgid "GMail Options" +msgstr "Програми" + +#: ../data/glade/preferences_window.glade.h:7 +msgid "Interface Customization" +msgstr "ПерÑонализиране на интерфейÑа" + +#: ../data/glade/preferences_window.glade.h:9 +msgid "Preset Status Messages" +msgstr "ÐаÑтроени ÑÑŠÐ¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð·Ð° ÑÑŠÑтоÑние" + +#: ../data/glade/preferences_window.glade.h:11 +msgid "Visual Notifications" +msgstr "Зрителни уведомлениÑ" + +#: ../data/glade/preferences_window.glade.h:12 +msgid "A_fter nickname:" +msgstr "С_лед пÑевдонима:" + +#: ../data/glade/preferences_window.glade.h:13 +msgid "Advanced" +msgstr "Ðапреднали" + +#: ../data/glade/preferences_window.glade.h:14 +msgid "" +"All chat states\n" +"Composing only\n" +"Disabled" +msgstr "" +"Ð’Ñички ÑÑŠÑтоÑниÑ\n" +"Само при пиÑане\n" +"Изключено" + +#: ../data/glade/preferences_window.glade.h:17 +msgid "Allow _OS information to be sent" +msgstr "ПозволÑване изпращането на Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° _ОС" + +#: ../data/glade/preferences_window.glade.h:18 +msgid "Allow popup/notifications when I'm _away/na/busy/invisible" +msgstr "" +"ПозволÑване на прозорци/ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¸ _ОтÑÑŠÑтвам/Ðе Ñъм на разположение/" +"Зает/Ðевидим" + +#: ../data/glade/preferences_window.glade.h:19 +msgid "Also known as iChat style" +msgstr "Познато и като Ñтил „iChat“" + +#: ../data/glade/preferences_window.glade.h:20 +msgid "Ask status message when I:" +msgstr "Питане за Ñъобщение за ÑÑŠÑтоÑние при преминаване в режим:" + +#: ../data/glade/preferences_window.glade.h:21 +msgid "Auto _away after:" +msgstr "Ðвтоматично „_ОтÑÑŠÑтвам“ Ñлед:" + +#: ../data/glade/preferences_window.glade.h:22 +msgid "Auto _not available after:" +msgstr "Ðвтоматично „Ðе Ñъм на _разположение“ Ñлед:" + +#: ../data/glade/preferences_window.glade.h:23 +msgid "" +"Autodetect on every Gajim startup\n" +"Always use GNOME default applications\n" +"Always use KDE default applications\n" +"Custom" +msgstr "" +"Ðвтоматично определÑне при вÑÑко Ñтартиране на Gajim\n" +"Винаги да Ñе използват Ñтандартните програми на GNOME\n" +"Винаги да Ñе използват Ñтандартните програми на KDE\n" +"ПерÑонални" + +#: ../data/glade/preferences_window.glade.h:27 +msgid "B_efore nickname:" +msgstr "П_реди пÑевдонима:" + +#: ../data/glade/preferences_window.glade.h:28 ../src/chat_control.py:718 +msgid "Chat" +msgstr "Разговор" + +#: ../data/glade/preferences_window.glade.h:29 +msgid "Chat state noti_fications:" +msgstr "У_Ð²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¸ разговор:" + +#: ../data/glade/preferences_window.glade.h:30 +msgid "" +"Check this option, only if someone you don't have in the roster spams/annoys " +"you. Use with caution, cause it blocks all messages from any contact that is " +"not in the roster" +msgstr "" +"Изберете тази Ð¾Ð¿Ñ†Ð¸Ñ Ñамо ако нÑкой, който не в ÑпиÑъка, ви притеÑнÑва или " +"дразни. Използвайте Ñ Ð²Ð½Ð¸Ð¼Ð°Ñ‚ÐµÐ»Ð½Ð¾, тъй като блокира вÑички ÑÑŠÐ¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¾Ñ‚ вÑеки " +"контакт, който не е в ÑпиÑъка." + +#: ../data/glade/preferences_window.glade.h:31 +msgid "Default status _iconset:" +msgstr "Стандартен _набор икони за ÑÑŠÑтоÑние:" + +#: ../data/glade/preferences_window.glade.h:32 +msgid "Display _extra email details" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:33 +msgid "Display a_vatars of contacts in roster" +msgstr "Показване на _аватари на контактите в ÑпиÑъка" + +#: ../data/glade/preferences_window.glade.h:34 +msgid "Display status _messages of contacts in roster" +msgstr "Показване на _ÑъобщениÑта за ÑÑŠÑтоÑние на контактите в ÑпиÑъка" + +#: ../data/glade/preferences_window.glade.h:35 +msgid "E_very 5 minutes" +msgstr "Ð’Ñеки 5 _минути" + +#: ../data/glade/preferences_window.glade.h:36 +msgid "Emoticons:" +msgstr "Емотикони:" + +#: ../data/glade/preferences_window.glade.h:37 +msgid "Events" +msgstr "СъбитиÑ" + +#: ../data/glade/preferences_window.glade.h:38 +msgid "" +"Gajim can send and receive meta-information related to a conversation you " +"may have with a contact. Here you can specify which chatstates you want to " +"send to the other party." +msgstr "" +"Gajim може да изпраща и получава мета-информациÑ, Ñвързана Ñ Ñ€Ð°Ð·Ð³Ð¾Ð²Ð¾Ñ€Ð° Ñ " +"даден контакт. Тук може да укажете кои ÑÑŠÑтоÑÐ½Ð¸Ñ Ð±Ð¸Ñ…Ñ‚Ðµ иÑкали да изпращате." + +#: ../data/glade/preferences_window.glade.h:39 +msgid "" +"Gajim will automatically show new events by poping up the relative window" +msgstr "" +"Ðвтоматично ще Ñе показват нови ÑÑŠÐ±Ð¸Ñ‚Ð¸Ñ Ñ Ð¸Ð·Ñкачане на ÑÑŠÐ¾Ñ‚Ð²ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¾Ð·Ð¾Ñ€ÐµÑ†" + +#: ../data/glade/preferences_window.glade.h:40 +msgid "" +"Gajim will notify you for new events via a popup in the bottom right of the " +"screen" +msgstr "" +"Ще Ñе поÑвÑват ÑÑŠÐ¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð·Ð° уведомÑване чрез изÑкачащ прозорец в Ð´Ð¾Ð»Ð½Ð¸Ñ " +"деÑен ъгъл на екрана" + +#: ../data/glade/preferences_window.glade.h:41 +msgid "" +"Gajim will notify you via a popup window in the bottom right of the screen " +"about contacts that just signed in" +msgstr "" +"Ще Ñе поÑвÑва Ñъобщение за уведомÑване в Ð´Ð¾Ð»Ð½Ð¸Ñ Ð´ÐµÑен ъгъл на екрана при " +"Ñвързване на контакти" + +#: ../data/glade/preferences_window.glade.h:42 +msgid "" +"Gajim will notify you via a popup window in the bottom right of the screen " +"about contacts that just signed out" +msgstr "" +"Ще Ñе поÑвÑва Ñъобщение за уведомÑване в Ð´Ð¾Ð»Ð½Ð¸Ñ Ð´ÐµÑен ъгъл на екрана при " +"изключване на контакти" + +#: ../data/glade/preferences_window.glade.h:43 +msgid "" +"Gajim will only change the icon of the contact that triggered the new event" +msgstr "Само ще Ñе Ð¿Ñ€Ð¾Ð¼ÐµÐ½Ñ Ð¸ÐºÐ¾Ð½Ð°Ñ‚Ð° на контакта, от който идва новото Ñъбитие" + +#: ../data/glade/preferences_window.glade.h:45 +msgid "" +"If checked, Gajim will display avatars of contacts in roster window and in " +"group chats" +msgstr "" +"Ðко е избрано, Gajim ще изобразÑва аватари на контакти в ÑпиÑъка и Ñтаите" + +#: ../data/glade/preferences_window.glade.h:46 +msgid "" +"If checked, Gajim will display status messages of contacts under the contact " +"name in roster window and in group chats" +msgstr "" +"Ðко е избрано, ÑъобщениÑта за ÑÑŠÑтоÑние на контактите ще Ñе показват под " +"имената им в ÑпиÑъка и в Ñтаите" + +#: ../data/glade/preferences_window.glade.h:47 +msgid "" +"If checked, Gajim will remember the roster and chat window positions in the " +"screen and the sizes of them next time you run it" +msgstr "" +"Ðко тази Ð¾Ð¿Ñ†Ð¸Ñ Ðµ избрана, ще Ñе запомнÑÑ‚ размерите и позициите на ÑпиÑъка и " +"прозореца за разговор на екрана за Ñледващото Ñтартиране на програмата." + +#: ../data/glade/preferences_window.glade.h:48 +msgid "" +"If checked, Gajim will use protocol-specific status icons. (eg. A contact " +"from MSN will have the equivalent msn icon for status online, away, busy, " +"etc...)" +msgstr "" +"Ðко тази Ð¾Ð¿Ñ†Ð¸Ñ Ðµ избрана, ще Ñе използват Ñпецифични за протокола икони за " +"ÑÑŠÑтоÑние (Ñ‚.е. контакт от MSN ще има еквивалентната за MSN икона за " +"ÑÑŠÑтоÑниÑта „Ðа линиÑ“, „ОтÑÑŠÑтвам“, „Зает“ и Ñ‚.н.)." + +#: ../data/glade/preferences_window.glade.h:49 +msgid "" +"If not disabled, Gajim will replace ascii smilies like ':)' with equivalent " +"animated or static graphical emoticons" +msgstr "" +"Ðко тази Ð¾Ð¿Ñ†Ð¸Ñ Ðµ избрана, уÑмивките в ASCII като „:)“ ще Ñе изобразÑват ÑÑŠÑ " +"Ñъответните анимирани или Ñтатични емотикони." + +#: ../data/glade/preferences_window.glade.h:50 +msgid "Ma_nage..." +msgstr "_Управление..." + +#: ../data/glade/preferences_window.glade.h:51 +msgid "" +"Never\n" +"Always\n" +"Per account\n" +"Per type" +msgstr "" +"Ðикога\n" +"Винаги\n" +"Според акаунта\n" +"Според типа" + +#: ../data/glade/preferences_window.glade.h:55 +msgid "Notify me about contacts that: " +msgstr "УведомÑване за контакти при: " + +#: ../data/glade/preferences_window.glade.h:56 +#, fuzzy +msgid "Notify on new _GMail email" +msgstr "УведомÑване при нова _Gmail поща" + +#: ../data/glade/preferences_window.glade.h:57 +msgid "On every _message" +msgstr "Ðа _вÑÑко Ñъобщение" + +#: ../data/glade/preferences_window.glade.h:58 +msgid "One message _window:" +msgstr "_Един прозорец за разговори:" + +#: ../data/glade/preferences_window.glade.h:59 +msgid "Play _sounds" +msgstr "Изпълнение на з_вуци" + +#: ../data/glade/preferences_window.glade.h:60 +msgid "Preferences" +msgstr "ÐаÑтройки" + +#: ../data/glade/preferences_window.glade.h:61 +msgid "Print time:" +msgstr "ИзпиÑване на времето:" + +#: ../data/glade/preferences_window.glade.h:62 +msgid "Save _position and size for roster and chat windows" +msgstr "" +"Запазване на _положението и размера на ÑпиÑъка Ñ ÐºÐ¾Ð½Ñ‚Ð°ÐºÑ‚Ð¸ и прозорците за " +"разговор" + +#: ../data/glade/preferences_window.glade.h:63 +msgid "Show only in _roster" +msgstr "Показване Ñамо в ÑпиÑ_ъка" + +#: ../data/glade/preferences_window.glade.h:64 +msgid "Sign _in" +msgstr "_Свързване" + +#: ../data/glade/preferences_window.glade.h:65 +msgid "Sign _out" +msgstr "Изкл_ючване" + +#: ../data/glade/preferences_window.glade.h:66 +msgid "Status" +msgstr "СъÑтоÑние" + +#: ../data/glade/preferences_window.glade.h:67 +msgid "T_heme:" +msgstr "_Тема:" + +#: ../data/glade/preferences_window.glade.h:68 +msgid "The auto away status message" +msgstr "Ðвтоматично Ñъобщение за ÑÑŠÑтоÑние при „ОтÑÑŠÑтвам“" + +#: ../data/glade/preferences_window.glade.h:69 +msgid "The auto not available status message" +msgstr "Ðвтоматично Ñъобщение за ÑÑŠÑтоÑние при „Ðе Ñъм на разположение“" + +#: ../data/glade/preferences_window.glade.h:70 +msgid "Use _transports iconsets" +msgstr "Използване на набор и_кони на транÑпортите" + +#: ../data/glade/preferences_window.glade.h:71 +msgid "Use system _default" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:72 +msgid "Use t_rayicon (aka. notification area icon)" +msgstr "_Икона в облаÑтта за уведомÑване" + +#: ../data/glade/preferences_window.glade.h:73 +msgid "" +"When a new event (message, file transfer request etc..) is received, the " +"following methods may be used to inform you about it. Please note that " +"events about new messages only occur if it is a new message from a contact " +"you are not already chatting with" +msgstr "" +"Когато Ñе получи ново Ñъбитие (Ñъобщение, запитване за файлов транÑфер и Ñ‚." +"н.), могат да Ñе използват Ñледните методи за уведомÑване. Забележете, че " +"ÑÑŠÐ±Ð¸Ñ‚Ð¸Ñ Ð·Ð° нови ÑÑŠÐ¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð²ÑŠÐ·Ð½Ð¸ÐºÐ²Ð°Ñ‚ Ñамо ако Ñа нови ÑÑŠÐ¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¾Ñ‚ контакт, Ñ " +"който не говорите в момента." + +#: ../data/glade/preferences_window.glade.h:74 +msgid "When new event is received" +msgstr "При получаване на ново Ñъбитие" + +#: ../data/glade/preferences_window.glade.h:75 +#, fuzzy +msgid "_Advanced Notifications Control..." +msgstr "Редактор на наÑтройки за напреднали" + +#: ../data/glade/preferences_window.glade.h:76 +msgid "_After time:" +msgstr "_След времето:" + +#: ../data/glade/preferences_window.glade.h:77 +msgid "_Before time:" +msgstr "_Преди времето:" + +#: ../data/glade/preferences_window.glade.h:78 +msgid "_Browser:" +msgstr "Интернет _браузър:" + +#: ../data/glade/preferences_window.glade.h:79 +msgid "_File manager:" +msgstr "_Файлов мениджър:" + +#: ../data/glade/preferences_window.glade.h:80 +msgid "_Font:" +msgstr "_Шрифт:" + +#: ../data/glade/preferences_window.glade.h:81 +msgid "_Highlight misspelled words" +msgstr "_ОÑветÑване на неправилно изпиÑаните думи" + +#: ../data/glade/preferences_window.glade.h:82 +msgid "_Ignore events from contacts not in the roster" +msgstr "Прене_брегване на ÑÑŠÐ±Ð¸Ñ‚Ð¸Ñ Ð¾Ñ‚ контакти, които не Ñа в ÑпиÑъка" + +#: ../data/glade/preferences_window.glade.h:83 +msgid "_Incoming message:" +msgstr "Ð’_ходÑщо Ñъобщение:" + +#: ../data/glade/preferences_window.glade.h:84 +msgid "_Log status changes of contacts" +msgstr "Запазване на промените на _ÑÑŠÑтоÑниÑта на контактите" + +#: ../data/glade/preferences_window.glade.h:85 +msgid "_Mail client:" +msgstr "_ПощенÑка програма:" + +#: ../data/glade/preferences_window.glade.h:86 +msgid "_Never" +msgstr "_Ðикога" + +#: ../data/glade/preferences_window.glade.h:87 +msgid "_Notify me about it" +msgstr "_УведомÑване" + +#: ../data/glade/preferences_window.glade.h:88 +msgid "_Open..." +msgstr "_ОтварÑне..." + +#: ../data/glade/preferences_window.glade.h:89 +msgid "_Outgoing message:" +msgstr "_ИзходÑщо Ñъобщение:" + +#: ../data/glade/preferences_window.glade.h:90 +msgid "_Player:" +msgstr "Пле_йър:" + +#: ../data/glade/preferences_window.glade.h:91 +msgid "_Pop it up" +msgstr "_Показване" + +#: ../data/glade/preferences_window.glade.h:92 +msgid "_Reset to Default Colors" +msgstr "ВъзÑтановÑване на Ñтандартните _цветове" + +#: ../data/glade/preferences_window.glade.h:93 +msgid "_Sort contacts by status" +msgstr "Подре_ждане на контактите по ÑÑŠÑтоÑние" + +#: ../data/glade/preferences_window.glade.h:94 +msgid "_Status message:" +msgstr "С_ъобщение за ÑÑŠÑтоÑние:" + +#: ../data/glade/preferences_window.glade.h:95 +msgid "_URL:" +msgstr "_ÐдреÑ-УРЛ:" + +#: ../data/glade/preferences_window.glade.h:96 +msgid "minutes" +msgstr "минути" + +#: ../data/glade/privacy_list_edit_window.glade.h:1 +msgid "Add / Edit a rule" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:2 +#, fuzzy +msgid "List of rules" +msgstr "Формат на реда" + +#: ../data/glade/privacy_list_edit_window.glade.h:3 +msgid "Privacy List" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:5 ../src/config.py:2281 +msgid "All" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:6 +msgid "Allow" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:7 +#, fuzzy +msgid "Default" +msgstr "Изтриване" + +#: ../data/glade/privacy_list_edit_window.glade.h:9 +#, fuzzy +msgid "JabberID" +msgstr "Jabber ID:" + +#: ../data/glade/privacy_list_edit_window.glade.h:10 +#, fuzzy +msgid "Order:" +msgstr "Сървър:" + +#: ../data/glade/privacy_list_edit_window.glade.h:11 ../src/dialogs.py:1626 +#, fuzzy +msgid "Privacy List" +msgstr "СпиÑък Ñ Ð¸Ð·Ñ€Ð¸Ñ‚Ð°Ð½Ð¸" + +#: ../data/glade/privacy_list_edit_window.glade.h:12 +#, fuzzy +msgid "all by subscription" +msgstr "_ЗапиÑване" + +#: ../data/glade/privacy_list_edit_window.glade.h:13 +#, fuzzy +msgid "all in the group" +msgstr "Ð’ групата" + +#: ../data/glade/privacy_list_edit_window.glade.h:14 +msgid "" +"none\n" +"both\n" +"from\n" +"to" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:18 +#, fuzzy +msgid "to send me messages" +msgstr "Изпращане на Ñъобщение" + +#: ../data/glade/privacy_list_edit_window.glade.h:19 +msgid "to send me queries" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:20 +#, fuzzy +msgid "to send me status" +msgstr "Запитване за ÑÑŠÑтоÑнието на контакта" + +#: ../data/glade/privacy_list_edit_window.glade.h:21 +#, fuzzy +msgid "to view my status" +msgstr "Позволение за виждане на ÑÑŠÑтоÑнието ми" + +#: ../data/glade/privacy_lists_first_window.glade.h:1 +msgid "Create your own Privacy Lists" +msgstr "" + +#: ../data/glade/privacy_lists_first_window.glade.h:2 +msgid "Server-based Privacy Lists" +msgstr "" + +#: ../data/glade/remove_account_window.glade.h:1 +msgid "What do you want to do?" +msgstr "Какво иÑкате да направите?" + +#: ../data/glade/remove_account_window.glade.h:2 +msgid "Remove account _only from Gajim" +msgstr "Премахване на акаунт _Ñамо от Gajim" + +#: ../data/glade/remove_account_window.glade.h:3 +msgid "Remove account from Gajim and from _server" +msgstr "Премахване на акаунт от Gajim и от Ñ_ървъра" + +#: ../data/glade/roster_contact_context_menu.glade.h:1 +#, fuzzy +msgid "A_sk to see his/her status" +msgstr "Запитване за ÑÑŠÑтоÑнието на контакта" + +#: ../data/glade/roster_contact_context_menu.glade.h:2 +msgid "Add Special _Notification" +msgstr "ДобавÑне на Ñпециално _уведомление" + +#: ../data/glade/roster_contact_context_menu.glade.h:3 +msgid "Assign Open_PGP Key" +msgstr "Задаване на Open_PGP ключ" + +#: ../data/glade/roster_contact_context_menu.glade.h:4 +msgid "Edit _Groups" +msgstr "Редактиране на _групи" + +#: ../data/glade/roster_contact_context_menu.glade.h:5 +#: ../data/glade/systray_context_menu.glade.h:1 +msgid "Send Single _Message" +msgstr "Изпращане на _еднократно Ñъобщение" + +#: ../data/glade/roster_contact_context_menu.glade.h:7 +msgid "Start _Chat" +msgstr "Започване на _разговор" + +#: ../data/glade/roster_contact_context_menu.glade.h:9 +#, fuzzy +msgid "_Allow him/her to see my status" +msgstr "Позволение за виждане на ÑÑŠÑтоÑнието ми" + +#: ../data/glade/roster_contact_context_menu.glade.h:10 +#, fuzzy +msgid "_Forbid him/her to see my status" +msgstr "Забрана за виждане на ÑÑŠÑтоÑнието ми" + +#: ../data/glade/roster_contact_context_menu.glade.h:12 +#: ../src/roster_window.py:1482 +msgid "_Remove from Roster" +msgstr "_Премахване от ÑпиÑъка" + +#: ../data/glade/roster_contact_context_menu.glade.h:13 +#: ../src/roster_window.py:1470 +msgid "_Rename" +msgstr "_Преименуване" + +#: ../data/glade/roster_contact_context_menu.glade.h:14 +msgid "_Subscription" +msgstr "_ЗапиÑване" + +#: ../data/glade/roster_window.glade.h:1 +msgid "A_ccounts" +msgstr "Ð_каунти" + +#: ../data/glade/roster_window.glade.h:2 +msgid "Add _Contact" +msgstr "ДобавÑне на _контакт" + +#: ../data/glade/roster_window.glade.h:3 +msgid "File _Transfers" +msgstr "_Файлови транÑфери" + +#: ../data/glade/roster_window.glade.h:4 +msgid "Frequently Asked Questions (online)" +msgstr "ЧеÑто задавани въпроÑи (уеб Ñтраница)" + +#: ../data/glade/roster_window.glade.h:6 +msgid "Help online" +msgstr "Помощ в Интернет (уеб Ñтраници)" + +#: ../data/glade/roster_window.glade.h:7 +msgid "Profile, Avatar" +msgstr "Профил и аватар" + +#: ../data/glade/roster_window.glade.h:8 +msgid "Show _Offline Contacts" +msgstr "Показване на изкл_ючените контакти" + +#: ../data/glade/roster_window.glade.h:11 +msgid "_Contents" +msgstr "_РъководÑтва" + +#: ../data/glade/roster_window.glade.h:12 +msgid "_Discover Services" +msgstr "_Откриване на уÑлуги" + +#: ../data/glade/roster_window.glade.h:13 ../src/disco.py:1252 +#: ../src/roster_window.py:1462 +msgid "_Edit" +msgstr "_Редактиране" + +#: ../data/glade/roster_window.glade.h:14 +msgid "_FAQ" +msgstr "_ЧЗВ" + +#: ../data/glade/roster_window.glade.h:16 +msgid "_Help" +msgstr "_Помощ" + +#: ../data/glade/roster_window.glade.h:17 +msgid "_Preferences" +msgstr "_ÐаÑтройки" + +#: ../data/glade/roster_window.glade.h:18 +msgid "_Quit" +msgstr "_Изход" + +#: ../data/glade/service_discovery_window.glade.h:1 +msgid "G_o" +msgstr "_Отиване" + +#: ../data/glade/service_discovery_window.glade.h:2 +msgid "_Address:" +msgstr "_ÐдреÑ:" + +#: ../data/glade/service_discovery_window.glade.h:3 +msgid "_Filter:" +msgstr "_Филтър:" + +#: ../data/glade/service_registration_window.glade.h:1 +msgid "Register to" +msgstr "РегиÑтриране към" + +#: ../data/glade/service_registration_window.glade.h:2 +msgid "_Cancel" +msgstr "_Отказ" + +#: ../data/glade/service_registration_window.glade.h:3 +msgid "_OK" +msgstr "_Да" + +#: ../data/glade/single_message_window.glade.h:1 +msgid "0" +msgstr "0" + +#: ../data/glade/single_message_window.glade.h:2 +msgid "From:" +msgstr "От:" + +#: ../data/glade/single_message_window.glade.h:3 +msgid "Reply to this message" +msgstr "Отговор на това Ñъобщение" + +#: ../data/glade/single_message_window.glade.h:4 +msgid "Sen_d" +msgstr "_Изпращане" + +#: ../data/glade/single_message_window.glade.h:5 +msgid "Send message" +msgstr "Изпращане на Ñъобщение" + +#: ../data/glade/single_message_window.glade.h:6 +msgid "Send message and close window" +msgstr "Изпращане на Ñъобщението и затварÑне на прозореца" + +#: ../data/glade/single_message_window.glade.h:7 +msgid "Subject:" +msgstr "Тема:" + +#: ../data/glade/single_message_window.glade.h:8 +msgid "To:" +msgstr "До:" + +#: ../data/glade/single_message_window.glade.h:9 +msgid "_Reply" +msgstr "_Отговор" + +#: ../data/glade/single_message_window.glade.h:10 +msgid "_Send & Close" +msgstr "Изпра_щане и затварÑне" + +#: ../data/glade/subscription_request_window.glade.h:1 +msgid "Authorize contact so he can know when you're connected" +msgstr "Упълномощаване на контакта, така че да знае кога Ñте Ñвързани" + +#: ../data/glade/subscription_request_window.glade.h:2 +msgid "Contact _Info" +msgstr "_Данни за контакта" + +#: ../data/glade/subscription_request_window.glade.h:3 +msgid "Deny authorization from contact so he cannot know when you're connected" +msgstr "" +"Отказване на упълномощаване на контакт, така че да не знае кога Ñте Ñвързани" + +#: ../data/glade/subscription_request_window.glade.h:4 +msgid "Subscription Request" +msgstr "ИÑкане за запиÑване" + +#: ../data/glade/subscription_request_window.glade.h:5 +msgid "_Authorize" +msgstr "_Упълномощаване" + +#: ../data/glade/subscription_request_window.glade.h:6 +msgid "_Deny" +msgstr "_Отказване" + +#: ../data/glade/systray_context_menu.glade.h:2 +msgid "Show All Pending _Events" +msgstr "Показване на вÑички _чакащи ÑъбитиÑ" + +#: ../data/glade/systray_context_menu.glade.h:3 +msgid "Show _Roster" +msgstr "Показване на ÑпиÑ_ъка" + +#: ../data/glade/systray_context_menu.glade.h:4 +msgid "Sta_tus" +msgstr "С_ÑŠÑтоÑние" + +#. "About" is the text of a tab of vcard window +#: ../data/glade/vcard_information_window.glade.h:2 +msgid "About" +msgstr "ОтноÑно" + +#: ../data/glade/vcard_information_window.glade.h:3 +msgid "Address" +msgstr "ÐдреÑ" + +#: ../data/glade/vcard_information_window.glade.h:4 +msgid "Ask:" +msgstr "Питане за:" + +#: ../data/glade/vcard_information_window.glade.h:5 +msgid "Birthday:" +msgstr "Рожден ден:" + +#: ../data/glade/vcard_information_window.glade.h:6 +msgid "City:" +msgstr "Град:" + +#: ../data/glade/vcard_information_window.glade.h:7 +msgid "Client:" +msgstr "Клиент:" + +#: ../data/glade/vcard_information_window.glade.h:8 +msgid "Company:" +msgstr "Фирма:" + +#: ../data/glade/vcard_information_window.glade.h:9 +msgid "Contact Information" +msgstr "Данни за контакта" + +#: ../data/glade/vcard_information_window.glade.h:10 +msgid "Country:" +msgstr "Държава:" + +#: ../data/glade/vcard_information_window.glade.h:11 +msgid "Department:" +msgstr "Отдел:" + +#: ../data/glade/vcard_information_window.glade.h:12 +msgid "E-Mail:" +msgstr "Е-поща:" + +#: ../data/glade/vcard_information_window.glade.h:13 +msgid "Extra Address:" +msgstr "Допълнителен адреÑ:" + +#. Family Name +#: ../data/glade/vcard_information_window.glade.h:15 +msgid "Family:" +msgstr "ФамилиÑ:" + +#: ../data/glade/vcard_information_window.glade.h:16 +msgid "Format: YYYY-MM-DD" +msgstr "Формат: гггг-мм-дд" + +#. Given Name +#: ../data/glade/vcard_information_window.glade.h:19 +msgid "Given:" +msgstr "СобÑтвено:" + +#: ../data/glade/vcard_information_window.glade.h:20 +msgid "Homepage:" +msgstr "Страница в Интернет:" + +#: ../data/glade/vcard_information_window.glade.h:21 +msgid "Jabber" +msgstr "Jabber" + +#: ../data/glade/vcard_information_window.glade.h:22 +msgid "Jabber ID:" +msgstr "Jabber ID:" + +#: ../data/glade/vcard_information_window.glade.h:23 +msgid "Location" +msgstr "МеÑтонахождение" + +#. Middle Name +#: ../data/glade/vcard_information_window.glade.h:25 +msgid "Middle:" +msgstr "Бащино:" + +#: ../data/glade/vcard_information_window.glade.h:26 +msgid "More" +msgstr "Още" + +#: ../data/glade/vcard_information_window.glade.h:29 +msgid "OS:" +msgstr "ОС:" + +#: ../data/glade/vcard_information_window.glade.h:30 +msgid "Phone No.:" +msgstr "Телефон:" + +#: ../data/glade/vcard_information_window.glade.h:31 +msgid "Position:" +msgstr "ДлъжноÑÑ‚:" + +#: ../data/glade/vcard_information_window.glade.h:32 +msgid "Postal Code:" +msgstr "ПощенÑки код:" + +#. Prefix in Name +#: ../data/glade/vcard_information_window.glade.h:34 +msgid "Prefix:" +msgstr "Обръщение:" + +#: ../data/glade/vcard_information_window.glade.h:35 +msgid "Resource:" +msgstr "РеÑурÑ:" + +#: ../data/glade/vcard_information_window.glade.h:36 +msgid "Role:" +msgstr "РолÑ:" + +#: ../data/glade/vcard_information_window.glade.h:37 +msgid "Set _Avatar" +msgstr "Избор на _аватар" + +#: ../data/glade/vcard_information_window.glade.h:38 +msgid "State:" +msgstr "Щат:" + +#: ../data/glade/vcard_information_window.glade.h:39 +msgid "Status:" +msgstr "СъÑтоÑние:" + +#: ../data/glade/vcard_information_window.glade.h:40 +msgid "Street:" +msgstr "Улица:" + +#: ../data/glade/vcard_information_window.glade.h:41 +msgid "Subscription:" +msgstr "ЗапиÑване:" + +#. Suffix in Name +#: ../data/glade/vcard_information_window.glade.h:43 +msgid "Suffix:" +msgstr "ÐаÑтавка:" + +#: ../data/glade/vcard_information_window.glade.h:44 +msgid "Work" +msgstr "Работа" + +#: ../data/glade/vcard_information_window.glade.h:45 +msgid "_Log conversation history" +msgstr "_Запазване на разговорите" + +#: ../data/glade/vcard_information_window.glade.h:46 +msgid "_Publish" +msgstr "_Публикуване" + +#: ../data/glade/vcard_information_window.glade.h:47 +msgid "_Retrieve" +msgstr "_Извличане" + +#: ../data/glade/xml_console_window.glade.h:1 +msgid "Jabber Traffic" +msgstr "Jabber трафик" + +#: ../data/glade/xml_console_window.glade.h:2 +msgid "XML Input" +msgstr "Вход в XML формат" + +#. XML Console enable checkbutton +#: ../data/glade/xml_console_window.glade.h:4 +msgid "Enable" +msgstr "Ðктивиране" + +#. Info/Query make the "IQ" initials. So translate like this 'YourLang/YourLang (Info/Query)'. Thanks (it's a tooltip so width is not a problem) +#: ../data/glade/xml_console_window.glade.h:6 +msgid "Info/Query" +msgstr "ИнформациÑ/запитване" + +#. Info/Query: all(?) jabber xml start with Whom do you want to ban?\n" "\n" @@ -367,11 +2426,11 @@ msgstr "" "Кого иÑкате да изритате?\n" "\n" -#: ../src/config.py:2023 +#: ../src/config.py:2062 msgid "Adding Member..." msgstr "ДобавÑне на член..." -#: ../src/config.py:2024 +#: ../src/config.py:2063 msgid "" "Whom do you want to make a member?\n" "\n" @@ -379,11 +2438,11 @@ msgstr "" "Кого иÑкате да направите член?\n" "\n" -#: ../src/config.py:2026 +#: ../src/config.py:2065 msgid "Adding Owner..." msgstr "ДобавÑне на ÑобÑтвеник..." -#: ../src/config.py:2027 +#: ../src/config.py:2066 msgid "" "Whom do you want to make a owner?\n" "\n" @@ -391,11 +2450,11 @@ msgstr "" "Кого иÑкате да направите ÑобÑтвеник?\n" "\n" -#: ../src/config.py:2029 +#: ../src/config.py:2068 msgid "Adding Administrator..." msgstr "ДобавÑне на админиÑтратор..." -#: ../src/config.py:2030 +#: ../src/config.py:2069 msgid "" "Whom do you want to make an administrator?\n" "\n" @@ -403,7 +2462,7 @@ msgstr "" "Кого иÑкате да направите админиÑтратор?\n" "\n" -#: ../src/config.py:2031 +#: ../src/config.py:2070 msgid "" "Can be one of the following:\n" "1. user@domain/resource (only that resource matches).\n" @@ -419,83 +2478,87 @@ msgstr "" "4. домейн (домейна Ñъвпада, както и вÑеки потребител@домейн,\n" "домейн/реÑÑƒÑ€Ñ Ð¸Ð»Ð¸ адреÑ, Ñъдържащ поддомейн." -#: ../src/config.py:2127 +#: ../src/config.py:2166 #, python-format msgid "Removing %s account" msgstr "Премахване на акаунт %s" -#: ../src/config.py:2144 ../src/roster_window.py:1859 +#: ../src/config.py:2183 ../src/roster_window.py:1857 msgid "Password Required" msgstr "Ðеобходима е парола" -#: ../src/config.py:2145 ../src/roster_window.py:1860 +#: ../src/config.py:2184 ../src/roster_window.py:1858 #, python-format msgid "Enter your password for account %s" msgstr "Въведете парола за акаунт „%s“" -#: ../src/config.py:2146 ../src/roster_window.py:1861 +#: ../src/config.py:2185 ../src/roster_window.py:1859 msgid "Save password" msgstr "Запазване на паролата" -#: ../src/config.py:2159 +#: ../src/config.py:2198 #, python-format msgid "Account \"%s\" is connected to the server" msgstr "Ðкаунт „%s“ е Ñвързан към Ñървъра" -#: ../src/config.py:2160 +#: ../src/config.py:2199 msgid "If you remove it, the connection will be lost." msgstr "Ðко го премахнете, връзката ще Ñе разпадне." -#: ../src/config.py:2295 +#: ../src/config.py:2282 +msgid "Enter and leave only" +msgstr "" + +#: ../src/config.py:2352 msgid "New Room" msgstr "Ðова ÑтаÑ" -#: ../src/config.py:2326 +#: ../src/config.py:2383 msgid "This bookmark has invalid data" msgstr "Тази отметка Ñъдържа невалидни данни" -#: ../src/config.py:2327 +#: ../src/config.py:2384 msgid "" "Please be sure to fill out server and room fields or remove this bookmark." msgstr "Попълнете полетата за Ñървър и ÑÑ‚Ð°Ñ Ð¸Ð»Ð¸ изтрийте тази отметка." -#: ../src/config.py:2564 +#: ../src/config.py:2638 msgid "Invalid username" msgstr "Ðевалидно потребителÑко име" -#: ../src/config.py:2565 +#: ../src/config.py:2639 msgid "You must provide a username to configure this account." msgstr "ТрÑбва да въведете име на потребител за Ð½Ð¾Ð²Ð¸Ñ Ð°ÐºÐ°ÑƒÐ½Ñ‚." -#: ../src/config.py:2574 ../src/dialogs.py:1036 +#: ../src/config.py:2648 ../src/dialogs.py:1118 msgid "Invalid password" msgstr "Ðевалидна парола" -#: ../src/config.py:2575 +#: ../src/config.py:2649 msgid "You must enter a password for the new account." msgstr "ТрÑбва да въведете парола за Ð½Ð¾Ð²Ð¸Ñ Ð°ÐºÐ°ÑƒÐ½Ñ‚." -#: ../src/config.py:2579 ../src/dialogs.py:1041 +#: ../src/config.py:2653 ../src/dialogs.py:1123 msgid "Passwords do not match" msgstr "Паролите не Ñъвпадат" -#: ../src/config.py:2580 ../src/dialogs.py:1042 +#: ../src/config.py:2654 ../src/dialogs.py:1124 msgid "The passwords typed in both fields must be identical." msgstr "Паролите, напиÑани в двете полета, Ñ‚Ñ€Ñбва да Ñа едни и Ñъщи." -#: ../src/config.py:2599 +#: ../src/config.py:2673 msgid "Duplicate Jabber ID" msgstr "Дублиран Jabber ID" -#: ../src/config.py:2600 +#: ../src/config.py:2674 msgid "This account is already configured in Gajim." msgstr "Този акаунт вече е конфигуриран в Gajim." -#: ../src/config.py:2617 +#: ../src/config.py:2691 msgid "Account has been added successfully" msgstr "Ðкаунтът беше добавен уÑпешно" -#: ../src/config.py:2618 ../src/config.py:2651 +#: ../src/config.py:2692 ../src/config.py:2725 msgid "" "You can set advanced account options by pressing Advanced button, or later " "by clicking in Accounts menuitem under Edit menu from the main window." @@ -503,23 +2566,23 @@ msgstr "" "Може да наÑтроите допълнителните опции, като натиÑнете бутона „Ðапреднали“ " "или по-къÑно от менюто „Редактиране“->„Ðкаунти“ в оÑÐ½Ð¾Ð²Ð½Ð¸Ñ Ð¿Ñ€Ð¾Ð·Ð¾Ñ€ÐµÑ†." -#: ../src/config.py:2650 +#: ../src/config.py:2724 msgid "Your new account has been created successfully" msgstr "ÐовиÑÑ‚ акаунт беше Ñъздаден уÑпешно" -#: ../src/config.py:2666 +#: ../src/config.py:2740 msgid "An error occured during account creation" msgstr "Възникна грешка при Ñъздаването на акаунта" -#: ../src/config.py:2723 +#: ../src/config.py:2797 msgid "Account name is in use" msgstr "Името на акаунта Ñе използва" -#: ../src/config.py:2724 +#: ../src/config.py:2798 msgid "You already have an account using this name." msgstr "Вече има региÑтриран акаунт Ñ Ñ‚Ð¾Ð²Ð° име." -#: ../src/conversation_textview.py:182 +#: ../src/conversation_textview.py:205 msgid "" "Text below this line is what has been said since the last time you paid " "attention to this group chat" @@ -527,162 +2590,176 @@ msgstr "" "ТекÑÑ‚ÑŠÑ‚ под този ред е поÑледното, което е казано откакто за поÑледен път " "Ñте обърнали внимание на тази ÑтаÑ" -#: ../src/conversation_textview.py:239 +#: ../src/conversation_textview.py:263 #, python-format msgid "Actions for \"%s\"" msgstr "ДейÑÑ‚Ð²Ð¸Ñ Ð·Ð° „%s“" -#: ../src/conversation_textview.py:251 +#: ../src/conversation_textview.py:275 msgid "Read _Wikipedia Article" msgstr "Четене на ÑÑ‚Ð°Ñ‚Ð¸Ñ Ð¾Ñ‚ _УикипедиÑ" -#: ../src/conversation_textview.py:255 +#: ../src/conversation_textview.py:280 msgid "Look it up in _Dictionary" msgstr "Проверка в _речника" #. we must have %s in the url if not WIKTIONARY -#: ../src/conversation_textview.py:270 +#: ../src/conversation_textview.py:296 #, python-format msgid "Dictionary URL is missing an \"%s\" and it is not WIKTIONARY" msgstr "ЛипÑва „%s“ в URL на речника и не е WIKTIONARY" #. we must have %s in the url -#: ../src/conversation_textview.py:281 +#: ../src/conversation_textview.py:308 #, python-format msgid "Web Search URL is missing an \"%s\"" msgstr "ЛипÑва „%s“ в URL за Ñ‚ÑŠÑ€Ñене" -#: ../src/conversation_textview.py:284 +#: ../src/conversation_textview.py:311 msgid "Web _Search for it" msgstr "_ТърÑене в уеб" -#: ../src/conversation_textview.py:574 +#: ../src/conversation_textview.py:607 msgid "Yesterday" msgstr "Вчера" #. the number is >= 2 #. %i is day in year (1-365), %d (1-31) we want %i -#: ../src/conversation_textview.py:578 +#: ../src/conversation_textview.py:611 #, python-format msgid "%i days ago" msgstr "Преди %i дни" #. if we have subject, show it too! -#: ../src/conversation_textview.py:634 +#: ../src/conversation_textview.py:686 #, python-format msgid "Subject: %s\n" msgstr "Тема: %s\n" #. only say that to non Windows users -#: ../src/dbus_support.py:34 +#: ../src/dbus_support.py:32 msgid "D-Bus python bindings are missing in this computer" msgstr "Ðа този компютър нÑма инÑталиран модул на Питон за D-Bus" -#: ../src/dbus_support.py:35 +#: ../src/dbus_support.py:33 msgid "D-Bus capabilities of Gajim cannot be used" msgstr "ВъзможноÑтите за D-Bus не могат да бъдат използвани" -#: ../src/dialogs.py:64 +#: ../src/dialogs.py:55 #, python-format msgid "Contact's name: %s" msgstr "Име на контакта: %s" -#: ../src/dialogs.py:66 +#: ../src/dialogs.py:57 #, python-format msgid "JID: %s" msgstr "JID: %s" -#: ../src/dialogs.py:169 +#. Group name +#. In group boolean +#: ../src/dialogs.py:173 msgid "Group" msgstr "Група" -#: ../src/dialogs.py:176 +#: ../src/dialogs.py:180 msgid "In the group" msgstr "Ð’ групата" -#: ../src/dialogs.py:226 +#: ../src/dialogs.py:230 msgid "KeyID" msgstr "Ðомер на ключ" -#: ../src/dialogs.py:229 +#: ../src/dialogs.py:233 msgid "Contact name" msgstr "Име на контакта" -#: ../src/dialogs.py:263 +#: ../src/dialogs.py:266 #, python-format msgid "%s Status Message" msgstr "Съобщение за ÑÑŠÑтоÑние „%s“" -#: ../src/dialogs.py:265 +#: ../src/dialogs.py:268 msgid "Status Message" msgstr "Съобщение за ÑÑŠÑтоÑние" -#: ../src/dialogs.py:340 +#: ../src/dialogs.py:343 msgid "Save as Preset Status Message" msgstr "Запазване като наÑтроено Ñъобщение за ÑÑŠÑтоÑние" -#: ../src/dialogs.py:341 +#: ../src/dialogs.py:344 msgid "Please type a name for this status message" msgstr "Ðапишете име за това Ñъобщение за ÑÑŠÑтоÑние" -#: ../src/dialogs.py:369 +#: ../src/dialogs.py:391 #, python-format msgid "Please fill in the data of the contact you want to add in account %s" msgstr "" "Попълнете данните за контакта, който иÑкате да добавите към акаунт „%s“" -#: ../src/dialogs.py:371 +#: ../src/dialogs.py:393 msgid "Please fill in the data of the contact you want to add" msgstr "Попълнете данните за контакта, който иÑкате да добавите" -#. the user can be in mutiple groups, see in all of them -#: ../src/dialogs.py:380 ../src/disco.py:118 ../src/disco.py:119 -#: ../src/disco.py:1258 ../src/roster_window.py:214 -#: ../src/roster_window.py:275 ../src/roster_window.py:310 -#: ../src/roster_window.py:330 ../src/roster_window.py:354 -#: ../src/roster_window.py:2940 ../src/roster_window.py:2942 -#: ../src/systray.py:291 ../src/common/helpers.py:42 +#: ../src/dialogs.py:403 ../src/disco.py:109 ../src/disco.py:110 +#: ../src/disco.py:1249 ../src/roster_window.py:207 +#: ../src/roster_window.py:273 ../src/roster_window.py:309 +#: ../src/roster_window.py:329 ../src/roster_window.py:353 +#: ../src/roster_window.py:2973 ../src/roster_window.py:2975 +#: ../src/common/helpers.py:39 msgid "Transports" msgstr "ТранÑпорти" -#: ../src/dialogs.py:452 ../src/dialogs.py:458 +#: ../src/dialogs.py:493 ../src/dialogs.py:499 msgid "Invalid User ID" msgstr "Ðевалиден идентификатор" -#: ../src/dialogs.py:459 +#: ../src/dialogs.py:500 msgid "The user ID must not contain a resource." msgstr "ПотребителÑкиÑÑ‚ идентификатор не Ñ‚Ñ€Ñбва да Ñъдържа реÑурÑ." -#: ../src/dialogs.py:466 +#: ../src/dialogs.py:513 msgid "Contact already in roster" msgstr "Контактът вече е в ÑпиÑъка" -#: ../src/dialogs.py:467 +#: ../src/dialogs.py:514 msgid "This contact is already listed in your roster." msgstr "Контактът вече ÑъщеÑтвува в ÑпиÑъка." -#: ../src/dialogs.py:528 +#: ../src/dialogs.py:576 msgid "A GTK+ jabber client" msgstr "GTK+ Jabber клиент" -#: ../src/dialogs.py:539 +#: ../src/dialogs.py:577 +msgid "GTK+ Version:" +msgstr "" + +#: ../src/dialogs.py:578 +msgid "PyGTK Version:" +msgstr "" + +#: ../src/dialogs.py:586 +#, fuzzy +msgid "Current Developers:" +msgstr "Стари разработчици:" + +#: ../src/dialogs.py:588 msgid "Past Developers:" msgstr "Стари разработчици:" -#: ../src/dialogs.py:543 +#: ../src/dialogs.py:592 msgid "THANKS:" msgstr "БЛÐГОДÐРÐОСТИ:" -#. remove one english setence +#. remove one english sentence #. and add it manually as translatable -#: ../src/dialogs.py:550 +#: ../src/dialogs.py:598 msgid "Last but not least, we would like to thank all the package maintainers." msgstr "" "И не на поÑледно мÑÑто, бихме иÑкали да благодарим на вÑички, които " "поддържат пакетите." #. here you write your name in the form Name FamilyName -#: ../src/dialogs.py:564 +#: ../src/dialogs.py:612 msgid "translator-credits" msgstr "" "Явор Доганов \n" @@ -691,233 +2768,292 @@ msgstr "" "Ðаучете повече за Ð½Ð°Ñ Ð½Ð° http://gnome.cult.bg\n" "Докладвайте за грешки на http://gnome.cult.bg/bugs" -#: ../src/dialogs.py:826 +#: ../src/dialogs.py:738 +#, python-format +msgid "Unable to bind to port %s." +msgstr "" + +#: ../src/dialogs.py:739 +msgid "" +"Maybe you have another running instance of Gajim. File Transfer will be " +"canceled." +msgstr "" + +#: ../src/dialogs.py:881 #, python-format msgid "Subscription request for account %s from %s" msgstr "ИÑкане за запиÑване за акаунт „%s“ от %s" -#: ../src/dialogs.py:829 +#: ../src/dialogs.py:884 #, python-format msgid "Subscription request from %s" msgstr "ИÑкане за запиÑване от %s" -#: ../src/dialogs.py:872 +#: ../src/dialogs.py:926 msgid "You can not join a group chat unless you are connected." msgstr "ТрÑбва да Ñте Ñвързани, за да влезете в ÑтаÑ." -#: ../src/dialogs.py:885 +#: ../src/dialogs.py:939 #, python-format msgid "Join Group Chat with account %s" msgstr "Влизане в ÑÑ‚Ð°Ñ Ñ Ð°ÐºÐ°ÑƒÐ½Ñ‚ „%s“" -#: ../src/dialogs.py:887 ../src/gtkgui.glade.h:177 -msgid "Join Group Chat" -msgstr "Влизане в ÑтаÑ" - -#: ../src/dialogs.py:976 +#: ../src/dialogs.py:1030 msgid "Invalid room or server name" msgstr "Ðевалидна ÑÑ‚Ð°Ñ Ð¸Ð»Ð¸ име на Ñървър" -#: ../src/dialogs.py:977 +#: ../src/dialogs.py:1031 msgid "The room name or server name has not allowed characters." msgstr "Името на ÑтаÑта или Ñървъра Ñъдържат непозволени Ñимволи." -#: ../src/dialogs.py:996 +#: ../src/dialogs.py:1050 #, python-format msgid "Start Chat with account %s" msgstr "Започване на разговор Ñ Ð°ÐºÐ°ÑƒÐ½Ñ‚ „%s“" -#: ../src/dialogs.py:998 +#: ../src/dialogs.py:1052 msgid "Start Chat" msgstr "Започване на разговор" -#: ../src/dialogs.py:999 +#: ../src/dialogs.py:1053 +#, fuzzy msgid "" -"Fill in the contact ID of the contact you would like\n" +"Fill in the jid, or nick of the contact you would like\n" "to send a chat message to:" msgstr "" "Въведете JID на контакта, до който\n" "иÑкате да изпратите Ñъобщение:" #. if offline or connecting -#: ../src/dialogs.py:1007 ../src/dialogs.py:1330 ../src/dialogs.py:1450 +#: ../src/dialogs.py:1078 ../src/dialogs.py:1427 ../src/dialogs.py:1551 msgid "Connection not available" msgstr "Ð’ момента нÑма връзка" -#: ../src/dialogs.py:1008 ../src/dialogs.py:1331 ../src/dialogs.py:1451 +#: ../src/dialogs.py:1079 ../src/dialogs.py:1428 ../src/dialogs.py:1552 #, python-format msgid "Please make sure you are connected with \"%s\"." msgstr "Уверете Ñе, че Ñте Ñвързани към „%s“." -#: ../src/dialogs.py:1018 +#: ../src/dialogs.py:1088 ../src/dialogs.py:1091 +#, fuzzy +msgid "Invalid JID" +msgstr "Ðевалиден Jabber ID" + +#: ../src/dialogs.py:1091 +#, python-format +msgid "Unable to parse \"%s\"." +msgstr "" + +#: ../src/dialogs.py:1100 msgid "Without a connection, you can not change your password." msgstr "ТрÑбва да Ñте Ñвързани, за да променÑте паролата." -#: ../src/dialogs.py:1037 +#: ../src/dialogs.py:1119 msgid "You must enter a password." msgstr "ТрÑбва да въведете парола." #. img to display #. default value -#: ../src/dialogs.py:1083 ../src/gajim.py:443 ../src/notify.py:129 +#: ../src/dialogs.py:1165 ../src/notify.py:126 ../src/notify.py:268 msgid "Contact Signed In" msgstr "Включи Ñе контакт" -#: ../src/dialogs.py:1085 ../src/gajim.py:474 ../src/notify.py:131 +#: ../src/dialogs.py:1167 ../src/notify.py:134 ../src/notify.py:270 msgid "Contact Signed Out" msgstr "Изключи Ñе контакт" #. chat message -#: ../src/dialogs.py:1087 ../src/gajim.py:609 ../src/notify.py:133 +#: ../src/dialogs.py:1169 ../src/notify.py:154 ../src/notify.py:272 msgid "New Message" msgstr "Ðово Ñъобщение" #. single message -#: ../src/dialogs.py:1087 ../src/gajim.py:603 ../src/notify.py:133 +#: ../src/dialogs.py:1169 ../src/notify.py:138 ../src/notify.py:272 msgid "New Single Message" msgstr "Ðово еднократно Ñъобщение" -#: ../src/dialogs.py:1088 ../src/gajim.py:586 ../src/notify.py:134 +#. private message +#: ../src/dialogs.py:1170 ../src/notify.py:145 ../src/notify.py:273 msgid "New Private Message" msgstr "Ðово лично Ñъобщение" -#: ../src/dialogs.py:1088 ../src/gajim.py:1049 ../src/notify.py:142 +#: ../src/dialogs.py:1170 ../src/gajim.py:1044 ../src/notify.py:281 msgid "New E-mail" msgstr "Ðова е-поща" -#: ../src/dialogs.py:1090 ../src/gajim.py:1187 ../src/notify.py:136 +#: ../src/dialogs.py:1172 ../src/gajim.py:1187 ../src/notify.py:275 msgid "File Transfer Request" msgstr "Запитване за файлов транÑфер" -#: ../src/dialogs.py:1092 ../src/gajim.py:1035 ../src/gajim.py:1164 -#: ../src/notify.py:138 +#: ../src/dialogs.py:1174 ../src/gajim.py:1022 ../src/gajim.py:1164 +#: ../src/notify.py:277 msgid "File Transfer Error" msgstr "Грешка при Ñ„Ð°Ð¹Ð»Ð¾Ð²Ð¸Ñ Ñ‚Ñ€Ð°Ð½Ñфер" -#: ../src/dialogs.py:1094 ../src/gajim.py:1222 ../src/gajim.py:1244 -#: ../src/gajim.py:1261 ../src/notify.py:140 +#: ../src/dialogs.py:1176 ../src/gajim.py:1222 ../src/gajim.py:1244 +#: ../src/gajim.py:1261 ../src/notify.py:279 msgid "File Transfer Completed" msgstr "ФайловиÑÑ‚ транÑфер е приключен" -#: ../src/dialogs.py:1095 ../src/gajim.py:1225 ../src/notify.py:140 +#: ../src/dialogs.py:1177 ../src/gajim.py:1225 ../src/notify.py:279 msgid "File Transfer Stopped" msgstr "ФайловиÑÑ‚ транÑфер е преуÑтановен" -#: ../src/dialogs.py:1097 ../src/gajim.py:953 ../src/notify.py:144 +#: ../src/dialogs.py:1179 ../src/gajim.py:920 ../src/notify.py:283 msgid "Groupchat Invitation" msgstr "Покана за раговор в ÑтаÑ" +#: ../src/dialogs.py:1181 ../src/notify.py:118 ../src/notify.py:285 +#, fuzzy +msgid "Contact Changed Status" +msgstr "Изключи Ñе контакт" + #. FIXME: for Received with should become 'in' -#: ../src/dialogs.py:1262 +#: ../src/dialogs.py:1359 #, python-format msgid "Single Message with account %s" msgstr "Еднократно Ñъобщение Ñ Ð°ÐºÐ°ÑƒÐ½Ñ‚ „%s“" -#: ../src/dialogs.py:1264 +#: ../src/dialogs.py:1361 msgid "Single Message" msgstr "Еднократно Ñъобщение" #. prepare UI for Sending -#: ../src/dialogs.py:1267 +#: ../src/dialogs.py:1364 #, python-format msgid "Send %s" msgstr "Изпращане на %s" #. prepare UI for Receiving -#: ../src/dialogs.py:1290 +#: ../src/dialogs.py:1387 #, python-format msgid "Received %s" msgstr "Получено %s" #. we create a new blank window to send and we preset RE: and to jid -#: ../src/dialogs.py:1355 +#: ../src/dialogs.py:1454 #, python-format msgid "RE: %s" msgstr "ОтноÑно: %s" -#: ../src/dialogs.py:1356 +#: ../src/dialogs.py:1455 #, python-format msgid "%s wrote:\n" msgstr "%s напиÑа:\n" -#: ../src/dialogs.py:1400 +#: ../src/dialogs.py:1499 #, python-format msgid "XML Console for %s" msgstr "XML конзола за %s" -#: ../src/dialogs.py:1402 +#: ../src/dialogs.py:1501 msgid "XML Console" msgstr "XML конзола" +#: ../src/dialogs.py:1620 +#, python-format +msgid "Privacy List %s" +msgstr "" + +#: ../src/dialogs.py:1624 +#, python-format +msgid "Privacy List for %s" +msgstr "" + +#: ../src/dialogs.py:1716 +#, fuzzy +msgid "Edit a rule" +msgstr "Формат на реда" + +#: ../src/dialogs.py:1801 +#, fuzzy +msgid "Add a rule" +msgstr "Формат на реда" + +#: ../src/dialogs.py:1897 +#, python-format +msgid "Privacy Lists for %s" +msgstr "" + +#: ../src/dialogs.py:1899 +#, fuzzy +msgid "Privacy Lists" +msgstr "Лични разговори" + #. FIXME: use nickname instead of contact_jid -#: ../src/dialogs.py:1488 +#: ../src/dialogs.py:1988 #, python-format msgid "%(contact_jid)s has invited you to %(room_jid)s room" msgstr "%(contact_jid)s ви покани в ÑÑ‚Ð°Ñ %(room_jid)s." #. only if not None and not '' -#: ../src/dialogs.py:1494 +#: ../src/dialogs.py:1994 #, python-format msgid "Comment: %s" msgstr "Коментар: %s" -#: ../src/dialogs.py:1554 +#: ../src/dialogs.py:2054 msgid "Choose Sound" msgstr "Избор на звук" -#: ../src/dialogs.py:1564 ../src/dialogs.py:1607 +#: ../src/dialogs.py:2064 ../src/dialogs.py:2107 msgid "All files" msgstr "Ð’Ñички файлове" -#: ../src/dialogs.py:1569 +#: ../src/dialogs.py:2069 msgid "Wav Sounds" msgstr "Формат WAV" -#: ../src/dialogs.py:1597 +#: ../src/dialogs.py:2097 msgid "Choose Image" msgstr "Избор на изображение" -#: ../src/dialogs.py:1612 +#: ../src/dialogs.py:2112 msgid "Images" msgstr "ИзображениÑ" -#: ../src/dialogs.py:1658 +#: ../src/dialogs.py:2157 #, python-format msgid "When %s becomes:" msgstr "Когато %s Ñтане:" -#: ../src/dialogs.py:1660 +#: ../src/dialogs.py:2159 #, python-format msgid "Adding Special Notification for %s" msgstr "ДобавÑне на Ñпециално уведомление за %s" -#: ../src/disco.py:117 +#: ../src/dialogs.py:2232 +#, fuzzy +msgid "Condition" +msgstr "Свързване" + +#: ../src/disco.py:108 msgid "Others" msgstr "Други" #. conference is a category for listing mostly groupchats in service discovery -#: ../src/disco.py:121 +#: ../src/disco.py:112 msgid "Conference" msgstr "Конференции" -#: ../src/disco.py:420 +#: ../src/disco.py:411 msgid "Without a connection, you can not browse available services" msgstr "ТрÑбва да Ñте Ñвързани, за да разглеждате наличните уÑлуги" -#: ../src/disco.py:499 +#: ../src/disco.py:490 #, python-format msgid "Service Discovery using account %s" msgstr "Откриване на налични уÑлуги за акаунт „%s“" -#: ../src/disco.py:500 +#: ../src/disco.py:491 msgid "Service Discovery" msgstr "Откриване на уÑлуги" -#: ../src/disco.py:637 +#: ../src/disco.py:628 msgid "The service could not be found" msgstr "УÑлугата не може да бъде намерена" -#: ../src/disco.py:638 +#: ../src/disco.py:629 msgid "" "There is no service at the address you entered, or it is not responding. " "Check the address and try again." @@ -925,171 +3061,174 @@ msgstr "" "ÐÑма уÑлуга на Ð²ÑŠÐ²ÐµÐ´ÐµÐ½Ð¸Ñ Ð°Ð´Ñ€ÐµÑ Ð¸Ð»Ð¸ не отговарÑ. Проверете адреÑа и опитайте " "отново." -#: ../src/disco.py:642 ../src/disco.py:924 +#: ../src/disco.py:633 ../src/disco.py:915 msgid "The service is not browsable" msgstr "УÑлугата не е доÑтъпна" -#: ../src/disco.py:643 +#: ../src/disco.py:634 msgid "This type of service does not contain any items to browse." msgstr "Този вид уÑлуга не Ñъдържа обекти за показване." -#: ../src/disco.py:723 +#: ../src/disco.py:714 #, python-format msgid "Browsing %s using account %s" msgstr "ТърÑене в %s от акаунт „%s“" -#: ../src/disco.py:762 +#: ../src/disco.py:753 msgid "_Browse" msgstr "_ТърÑене" -#: ../src/disco.py:925 +#: ../src/disco.py:916 msgid "This service does not contain any items to browse." msgstr "Тази уÑлуга не Ñъдържа обекти за показване." -#: ../src/disco.py:1146 ../src/disco.py:1263 +#: ../src/disco.py:1137 ../src/disco.py:1254 msgid "Re_gister" msgstr "_РегиÑтриране" -#: ../src/disco.py:1154 ../src/disco.py:1516 ../src/gtkgui.glade.h:350 -msgid "_Join" -msgstr "_Влизане" - -#: ../src/disco.py:1261 ../src/gtkgui.glade.h:334 ../src/roster_window.py:1462 -msgid "_Edit" -msgstr "_Редактиране" - -#: ../src/disco.py:1300 +#: ../src/disco.py:1291 #, python-format msgid "Scanning %d / %d.." msgstr "Сканиране на %d / %d.." #. Users column -#: ../src/disco.py:1482 +#: ../src/disco.py:1473 msgid "Users" msgstr "Потребители" #. Description column -#: ../src/disco.py:1489 +#: ../src/disco.py:1480 msgid "Description" msgstr "ОпиÑание" -#: ../src/filetransfers_window.py:81 +#: ../src/filetransfers_window.py:72 msgid "File" msgstr "Файл:" -#: ../src/filetransfers_window.py:96 +#: ../src/filetransfers_window.py:87 msgid "Time" msgstr "Време" -#: ../src/filetransfers_window.py:108 +#: ../src/filetransfers_window.py:99 msgid "Progress" msgstr "Ðапредък" -#: ../src/filetransfers_window.py:176 ../src/filetransfers_window.py:238 +#: ../src/filetransfers_window.py:163 ../src/filetransfers_window.py:223 #, python-format msgid "Filename: %s" msgstr "Име на файл: %s" -#: ../src/filetransfers_window.py:178 ../src/filetransfers_window.py:308 +#: ../src/filetransfers_window.py:164 ../src/filetransfers_window.py:291 #, python-format msgid "Size: %s" msgstr "Размер: %s" #. You is a reply of who sent a file #. You is a reply of who received a file -#: ../src/filetransfers_window.py:187 ../src/filetransfers_window.py:197 -#: ../src/history_manager.py:452 +#: ../src/filetransfers_window.py:173 ../src/filetransfers_window.py:183 +#: ../src/history_manager.py:454 msgid "You" msgstr "Вие" -#: ../src/filetransfers_window.py:188 ../src/filetransfers_window.py:240 +#: ../src/filetransfers_window.py:174 ../src/filetransfers_window.py:224 #, python-format msgid "Sender: %s" msgstr "Изпращач: %s" -#: ../src/filetransfers_window.py:189 ../src/filetransfers_window.py:555 -#: ../src/tooltips.py:617 +#: ../src/filetransfers_window.py:175 ../src/filetransfers_window.py:556 +#: ../src/tooltips.py:639 msgid "Recipient: " msgstr "Получател: " -#: ../src/filetransfers_window.py:200 +#: ../src/filetransfers_window.py:186 #, python-format msgid "Saved in: %s" msgstr "Запазен в: %s" -#: ../src/filetransfers_window.py:203 +#: ../src/filetransfers_window.py:188 msgid "File transfer completed" msgstr "ФайловиÑÑ‚ транÑфер завърши" -#: ../src/filetransfers_window.py:205 ../src/gtkgui.glade.h:366 -msgid "_Open Containing Folder" -msgstr "_ОтварÑне на папката" - -#: ../src/filetransfers_window.py:219 ../src/filetransfers_window.py:227 +#: ../src/filetransfers_window.py:204 ../src/filetransfers_window.py:212 msgid "File transfer canceled" msgstr "ФайловиÑÑ‚ транÑфер е прекъÑнат" -#: ../src/filetransfers_window.py:219 ../src/filetransfers_window.py:228 +#: ../src/filetransfers_window.py:204 ../src/filetransfers_window.py:213 msgid "Connection with peer cannot be established." msgstr "Ðе може да бъде уÑтановен контакт Ñ Ð¾Ñ‚Ñрещната машина." -#: ../src/filetransfers_window.py:242 +#: ../src/filetransfers_window.py:225 msgid "File transfer stopped by the contact of the other side" msgstr "ФайловиÑÑ‚ транÑфер е преуÑтановен от отÑрещната Ñтрана" -#: ../src/filetransfers_window.py:259 +#: ../src/filetransfers_window.py:242 msgid "Choose File to Send..." msgstr "Избор на файл за изпращане..." -#. Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector) -#: ../src/filetransfers_window.py:266 ../src/gtkgui.glade.h:390 -msgid "_Send" -msgstr "_Изпращане" - -#: ../src/filetransfers_window.py:273 +#: ../src/filetransfers_window.py:256 msgid "Gajim cannot access this file" msgstr "ÐеуÑпех при доÑтъпа до този файл" -#: ../src/filetransfers_window.py:274 +#: ../src/filetransfers_window.py:257 msgid "This file is being used by another process." msgstr "Този файл Ñе използва от друг процеÑ." -#: ../src/filetransfers_window.py:306 +#: ../src/filetransfers_window.py:289 #, python-format msgid "File: %s" msgstr "Файл: %s" -#: ../src/filetransfers_window.py:311 +#: ../src/filetransfers_window.py:294 #, python-format msgid "Type: %s" msgstr "Тип: %s" -#: ../src/filetransfers_window.py:313 +#: ../src/filetransfers_window.py:296 #, python-format msgid "Description: %s" msgstr "ОпиÑание: %s" -#: ../src/filetransfers_window.py:314 +#: ../src/filetransfers_window.py:297 #, python-format msgid "%s wants to send you a file:" msgstr "%s иÑка да ви изпрати файл:" -#: ../src/filetransfers_window.py:329 +#: ../src/filetransfers_window.py:311 +#, python-format +msgid "Cannot overwrite existing file \"%s\"" +msgstr "" + +#: ../src/filetransfers_window.py:312 +msgid "" +"A file with this name already exists and you do not have permission to " +"overwrite it." +msgstr "" + +#: ../src/filetransfers_window.py:319 ../src/gtkgui_helpers.py:685 msgid "This file already exists" msgstr "Този файл вече ÑъщеÑтвува" -#: ../src/filetransfers_window.py:329 +#: ../src/filetransfers_window.py:319 ../src/gtkgui_helpers.py:685 msgid "What do you want to do?" msgstr "Какво иÑкате да направите?" -#: ../src/filetransfers_window.py:344 +#: ../src/filetransfers_window.py:331 +#, python-format +msgid "Directory \"%s\" is not writable" +msgstr "" + +#: ../src/filetransfers_window.py:331 +msgid "You do not have permission to create files in this directory." +msgstr "" + +#: ../src/filetransfers_window.py:341 msgid "Save File as..." msgstr "Запазване на файла като..." #. Print remaining time in format 00:00:00 #. You can change the places of (hours), (minutes), (seconds) - #. they are not translatable. -#: ../src/filetransfers_window.py:419 +#: ../src/filetransfers_window.py:420 #, python-format msgid "%(hours)02.d:%(minutes)02.d:%(seconds)02.d" msgstr "%(hours)02.d:%(minutes)02.d:%(seconds)02.d" @@ -1097,29 +3236,29 @@ msgstr "%(hours)02.d:%(minutes)02.d:%(seconds)02.d" #. This should make the string Kb/s, #. where 'Kb' part is taken from %s. #. Only the 's' after / (which means second) should be translated. -#: ../src/filetransfers_window.py:491 +#: ../src/filetransfers_window.py:492 #, python-format msgid "(%(filesize_unit)s/s)" msgstr "(%(filesize_unit)s/Ñек)" -#: ../src/filetransfers_window.py:527 ../src/filetransfers_window.py:530 +#: ../src/filetransfers_window.py:528 ../src/filetransfers_window.py:531 msgid "Invalid File" msgstr "Ðевалиден файл" -#: ../src/filetransfers_window.py:527 +#: ../src/filetransfers_window.py:528 msgid "File: " msgstr "Файл: " -#: ../src/filetransfers_window.py:531 +#: ../src/filetransfers_window.py:532 msgid "It is not possible to send empty files" msgstr "Ðе е възможно да бъдат изпращани празни файлове" -#: ../src/filetransfers_window.py:551 ../src/tooltips.py:498 -#: ../src/tooltips.py:607 +#: ../src/filetransfers_window.py:552 ../src/tooltips.py:511 +#: ../src/tooltips.py:629 msgid "Name: " msgstr "Име: " -#: ../src/filetransfers_window.py:553 ../src/tooltips.py:611 +#: ../src/filetransfers_window.py:554 ../src/tooltips.py:633 msgid "Sender: " msgstr "Изпращач: " @@ -1127,32 +3266,28 @@ msgstr "Изпращач: " msgid "Pause" msgstr "Пауза" -#: ../src/filetransfers_window.py:753 ../src/gtkgui.glade.h:328 -msgid "_Continue" -msgstr "П_родължаване" - -#: ../src/gajim-remote.py:84 +#: ../src/gajim-remote.py:82 msgid "shows a help on specific command" msgstr "показване на помощ за Ñпецифична команда" #. User gets help for the command, specified by this parameter -#: ../src/gajim-remote.py:87 +#: ../src/gajim-remote.py:85 msgid "command" msgstr "команда" -#: ../src/gajim-remote.py:88 +#: ../src/gajim-remote.py:86 msgid "show help on command" msgstr "показване на помощ за команда" -#: ../src/gajim-remote.py:92 +#: ../src/gajim-remote.py:90 msgid "Shows or hides the roster window" msgstr "Показва или Ñкрива ÑпиÑъка" -#: ../src/gajim-remote.py:96 +#: ../src/gajim-remote.py:94 msgid "Popups a window with the next unread message" msgstr "Показване на Ñледващото непрочетено Ñъобщение в изÑкачащ прозорец" -#: ../src/gajim-remote.py:100 +#: ../src/gajim-remote.py:98 msgid "" "Prints a list of all contacts in the roster. Each contact appear on a " "separate line" @@ -1160,46 +3295,49 @@ msgstr "" "Показване на ÑпиÑък Ñ Ð²Ñички контакти. Ð’Ñеки контакт Ñе поÑвÑва на отделен " "ред" -#: ../src/gajim-remote.py:102 ../src/gajim-remote.py:115 -#: ../src/gajim-remote.py:125 ../src/gajim-remote.py:138 -#: ../src/gajim-remote.py:159 ../src/gajim-remote.py:189 -#: ../src/gajim-remote.py:197 ../src/gajim-remote.py:204 -#: ../src/gajim-remote.py:211 +#: ../src/gajim-remote.py:100 ../src/gajim-remote.py:114 +#: ../src/gajim-remote.py:124 ../src/gajim-remote.py:137 +#: ../src/gajim-remote.py:151 ../src/gajim-remote.py:172 +#: ../src/gajim-remote.py:202 ../src/gajim-remote.py:211 +#: ../src/gajim-remote.py:218 ../src/gajim-remote.py:225 +#: ../src/gajim-remote.py:236 msgid "account" msgstr "акаунт" -#: ../src/gajim-remote.py:102 +#: ../src/gajim-remote.py:100 msgid "show only contacts of the given account" msgstr "показва Ñамо контактите на Ð´Ð°Ð´ÐµÐ½Ð¸Ñ Ð°ÐºÐ°ÑƒÐ½Ñ‚" -#: ../src/gajim-remote.py:107 +#: ../src/gajim-remote.py:105 msgid "Prints a list of registered accounts" msgstr "Показване на ÑпиÑък Ñ Ñ€ÐµÐ³Ð¸Ñтрираните акаунти" -#: ../src/gajim-remote.py:111 +#: ../src/gajim-remote.py:109 msgid "Changes the status of account or accounts" msgstr "ПромÑна на ÑÑŠÑтоÑнието на акаунта или акаунтите" -#: ../src/gajim-remote.py:113 +#. offline, online, chat, away, xa, dnd, invisible should not be translated +#: ../src/gajim-remote.py:112 msgid "status" msgstr "ÑÑŠÑтоÑние" -#: ../src/gajim-remote.py:113 +#: ../src/gajim-remote.py:112 msgid "one of: offline, online, chat, away, xa, dnd, invisible " msgstr "" "едно от: offline (изключен), online (на линиÑ), chat (Ñвободен за разговор), " "away (отÑÑŠÑтвам), xa (не Ñъм на разположение), dnd (зает), invisible " "(невидим)" -#: ../src/gajim-remote.py:114 ../src/gajim-remote.py:135 +#: ../src/gajim-remote.py:113 ../src/gajim-remote.py:134 +#: ../src/gajim-remote.py:148 msgid "message" msgstr "Ñъобщение" -#: ../src/gajim-remote.py:114 +#: ../src/gajim-remote.py:113 msgid "status message" msgstr "Ñъобщение за ÑÑŠÑтоÑние" -#: ../src/gajim-remote.py:115 +#: ../src/gajim-remote.py:114 msgid "" "change status of account \"account\". If not specified, try to change status " "of all accounts that have \"sync with global status\" option set" @@ -1208,149 +3346,185 @@ msgstr "" "ÑÑŠÑтоÑнието на вÑички акаунти, които имат наÑтроена Ð¾Ð¿Ñ†Ð¸Ñ â€žÑинхронизиране Ñ " "глобалното ÑÑŠÑтоÑние“" -#: ../src/gajim-remote.py:121 +#: ../src/gajim-remote.py:120 msgid "Shows the chat dialog so that you can send messages to a contact" msgstr "" "Показване на диалогов прозорец за разговор, за да може да Ñе изпрати " "Ñъобщение до контакта" -#: ../src/gajim-remote.py:123 +#: ../src/gajim-remote.py:122 msgid "JID of the contact that you want to chat with" msgstr "JID на контакта, Ñ ÐºÐ¾Ð¹Ñ‚Ð¾ иÑкате да разговарÑте" -#: ../src/gajim-remote.py:125 ../src/gajim-remote.py:189 +#: ../src/gajim-remote.py:124 ../src/gajim-remote.py:202 msgid "if specified, contact is taken from the contact list of this account" msgstr "ако е указано, контактът Ñе взима от ÑпиÑъка Ñ ÐºÐ¾Ð½Ñ‚Ð°ÐºÑ‚Ð¸ на този акаунт" -#: ../src/gajim-remote.py:130 +#: ../src/gajim-remote.py:129 +#, fuzzy msgid "" -"Sends new message to a contact in the roster. Both OpenPGP key and account " -"are optional. If you want to set only 'account', without 'OpenPGP key', just " -"set 'OpenPGP key' to ''." +"Sends new chat message to a contact in the roster. Both OpenPGP key and " +"account are optional. If you want to set only 'account', without 'OpenPGP " +"key', just set 'OpenPGP key' to ''." msgstr "" "Изпращане на ново Ñъобщение до контакт от ÑпиÑъка. Опциите „account“ и " "„OpenPGP key“ Ñа по избор. Ðко иÑкате да наÑтроите Ñамо „account“ без " "“OpenPGP key“, наÑтройте „OpenPGP key“ на ''." -#: ../src/gajim-remote.py:134 +#: ../src/gajim-remote.py:133 ../src/gajim-remote.py:146 msgid "JID of the contact that will receive the message" msgstr "JID на контакта, който ще получи Ñъобщението" -#: ../src/gajim-remote.py:135 +#: ../src/gajim-remote.py:134 ../src/gajim-remote.py:148 msgid "message contents" msgstr "текÑÑ‚ на Ñъобщението" -#: ../src/gajim-remote.py:136 +#: ../src/gajim-remote.py:135 ../src/gajim-remote.py:149 msgid "pgp key" msgstr "OpenPGP ключ" -#: ../src/gajim-remote.py:136 +#: ../src/gajim-remote.py:135 ../src/gajim-remote.py:149 msgid "if specified, the message will be encrypted using this public key" msgstr "" "ако е указано, Ñъобщението ще Ñе криптира, използвайки този публичен ключ" -#: ../src/gajim-remote.py:138 +#: ../src/gajim-remote.py:137 ../src/gajim-remote.py:151 msgid "if specified, the message will be sent using this account" msgstr "ако е указано, Ñъобщението ще бъде изпратено от този акаунт" -#: ../src/gajim-remote.py:143 +#: ../src/gajim-remote.py:142 +#, fuzzy +msgid "" +"Sends new single message to a contact in the roster. Both OpenPGP key and " +"account are optional. If you want to set only 'account', without 'OpenPGP " +"key', just set 'OpenPGP key' to ''." +msgstr "" +"Изпращане на ново Ñъобщение до контакт от ÑпиÑъка. Опциите „account“ и " +"„OpenPGP key“ Ñа по избор. Ðко иÑкате да наÑтроите Ñамо „account“ без " +"“OpenPGP key“, наÑтройте „OpenPGP key“ на ''." + +#: ../src/gajim-remote.py:147 +#, fuzzy +msgid "subject" +msgstr "Тема" + +#: ../src/gajim-remote.py:147 +#, fuzzy +msgid "message subject" +msgstr "Изпратено Ñъобщение" + +#: ../src/gajim-remote.py:156 msgid "Gets detailed info on a contact" msgstr "Получаване на подробна Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° контакта" -#: ../src/gajim-remote.py:145 ../src/gajim-remote.py:158 -#: ../src/gajim-remote.py:188 +#: ../src/gajim-remote.py:158 ../src/gajim-remote.py:171 +#: ../src/gajim-remote.py:201 ../src/gajim-remote.py:210 msgid "JID of the contact" msgstr "JID на контакта" -#: ../src/gajim-remote.py:149 +#: ../src/gajim-remote.py:162 msgid "Gets detailed info on a account" msgstr "Получаване на подробна Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° акаунта" -#: ../src/gajim-remote.py:151 +#: ../src/gajim-remote.py:164 msgid "Name of the account" msgstr "Име на акаунта" -#: ../src/gajim-remote.py:155 +#: ../src/gajim-remote.py:168 msgid "Sends file to a contact" msgstr "Изпращане на файл до контакт" -#: ../src/gajim-remote.py:157 +#: ../src/gajim-remote.py:170 msgid "file" msgstr "файл" -#: ../src/gajim-remote.py:157 +#: ../src/gajim-remote.py:170 msgid "File path" msgstr "Път до файл" -#: ../src/gajim-remote.py:159 +#: ../src/gajim-remote.py:172 msgid "if specified, file will be sent using this account" msgstr "ако е указано, файлът бъде изпратен от този акаунт" -#: ../src/gajim-remote.py:164 +#: ../src/gajim-remote.py:177 msgid "Lists all preferences and their values" msgstr "Показва вÑички наÑтройки и техните ÑтойноÑти" -#: ../src/gajim-remote.py:168 +#: ../src/gajim-remote.py:181 msgid "Sets value of 'key' to 'value'." msgstr "ÐаÑтройва ÑтойноÑтта на „ключ“ на „ÑтойноÑт“." -#: ../src/gajim-remote.py:170 +#: ../src/gajim-remote.py:183 msgid "key=value" msgstr "ключ=ÑтойноÑÑ‚" -#: ../src/gajim-remote.py:170 +#: ../src/gajim-remote.py:183 msgid "'key' is the name of the preference, 'value' is the value to set it to" msgstr "" "„ключ“ е името на наÑтройката, „ÑтойноÑт“ е ÑтойноÑтта, коÑто Ñе задава" -#: ../src/gajim-remote.py:175 +#: ../src/gajim-remote.py:188 msgid "Deletes a preference item" msgstr "Изтрива обект от наÑтройките" -#: ../src/gajim-remote.py:177 +#: ../src/gajim-remote.py:190 msgid "key" msgstr "ключ" -#: ../src/gajim-remote.py:177 +#: ../src/gajim-remote.py:190 msgid "name of the preference to be deleted" msgstr "име на наÑтройката з изтриване" -#: ../src/gajim-remote.py:181 +#: ../src/gajim-remote.py:194 msgid "Writes the current state of Gajim preferences to the .config file" msgstr "Запазва текущото ÑÑŠÑтоÑние на наÑтройките във файла .config" -#: ../src/gajim-remote.py:186 +#: ../src/gajim-remote.py:199 msgid "Removes contact from roster" msgstr "Премахване на контакт от ÑпиÑъка" -#: ../src/gajim-remote.py:195 +#: ../src/gajim-remote.py:208 msgid "Adds contact to roster" msgstr "ДобавÑне на контакт към ÑпиÑъка" -#: ../src/gajim-remote.py:197 -msgid "Adds new contact to this account." +#: ../src/gajim-remote.py:210 +msgid "jid" +msgstr "" + +#: ../src/gajim-remote.py:211 +#, fuzzy +msgid "Adds new contact to this account" msgstr "ДобавÑне на нов контакт към този акаунт" -#: ../src/gajim-remote.py:202 +#: ../src/gajim-remote.py:216 msgid "Returns current status (the global one unless account is specified)" msgstr "Връща текущото ÑÑŠÑтоÑние (глобалното, в Ñлучай, че не е указан акаунт)" -#: ../src/gajim-remote.py:209 +#: ../src/gajim-remote.py:223 msgid "" "Returns current status message(the global one unless account is specified)" msgstr "" "Връща текущото Ñъобщение за ÑÑŠÑтоÑние (глобалното, в Ñлучай, че не е указан " "акаунт)" -#: ../src/gajim-remote.py:216 +#: ../src/gajim-remote.py:230 msgid "Returns number of unreaded messages" msgstr "Връща Ð±Ñ€Ð¾Ñ Ð½ÐµÐ¿Ñ€Ð¾Ñ‡ÐµÑ‚ÐµÐ½Ð¸ ÑъобщениÑ" +#: ../src/gajim-remote.py:234 +msgid "Open 'Start Chat' dialog" +msgstr "" + #: ../src/gajim-remote.py:236 +#, fuzzy +msgid "Starts chat, using this account" +msgstr "Започване на разговор Ñ Ð°ÐºÐ°ÑƒÐ½Ñ‚ „%s“" + +#: ../src/gajim-remote.py:256 msgid "Missing argument \"contact_jid\"" msgstr "ЛипÑващ аргумент „contact_jid“" -#: ../src/gajim-remote.py:255 +#: ../src/gajim-remote.py:275 #, python-format msgid "" "'%s' is not in your roster.\n" @@ -1359,16 +3533,16 @@ msgstr "" "„%s“ не е в ÑпиÑъка ви.\n" "Укажете акаунт за изпращането на това Ñъобщение." -#: ../src/gajim-remote.py:258 +#: ../src/gajim-remote.py:278 msgid "You have no active account" msgstr "ÐÑмате активен акаунт" -#: ../src/gajim-remote.py:301 +#: ../src/gajim-remote.py:321 #, python-format msgid "Unknown D-Bus version: %s" msgstr "ÐеизвеÑтна верÑÐ¸Ñ Ð½Ð° D-Bus: %s" -#: ../src/gajim-remote.py:328 +#: ../src/gajim-remote.py:348 #, python-format msgid "" "Usage: %s %s %s \n" @@ -1377,16 +3551,16 @@ msgstr "" "Употреба: %s %s %s \n" "\t %s" -#: ../src/gajim-remote.py:331 +#: ../src/gajim-remote.py:351 msgid "Arguments:" msgstr "Ðргументи:" -#: ../src/gajim-remote.py:335 +#: ../src/gajim-remote.py:355 #, python-format msgid "%s not found" msgstr "%s не е намерен" -#: ../src/gajim-remote.py:339 +#: ../src/gajim-remote.py:359 #, python-format msgid "" "Usage: %s command [arguments]\n" @@ -1395,7 +3569,7 @@ msgstr "" "Употреба: %s команда [аргументи]\n" "Командата е една от:\n" -#: ../src/gajim-remote.py:413 +#: ../src/gajim-remote.py:433 #, python-format msgid "" "Argument \"%s\" is not specified. \n" @@ -1448,103 +3622,92 @@ msgstr "" msgid "Gajim needs PySQLite2 to run" msgstr "Gajim изиÑква PySQLite2" -#: ../src/gajim.py:235 +#. set the icon to all newly opened wind +#: ../src/gajim.py:151 +msgid "Gajim is already running" +msgstr "" + +#: ../src/gajim.py:152 +msgid "" +"Another instance of Gajim seems to be running\n" +"Run anyway?" +msgstr "" + +#: ../src/gajim.py:267 #, python-format msgid "HTTP (%s) Authorization for %s (id: %s)" msgstr "HTTP (%s) упълномощаване за „%s“ (id: %s)" -#: ../src/gajim.py:236 +#: ../src/gajim.py:268 msgid "Do you accept this request?" msgstr "Приемате ли това запитване?" -#: ../src/gajim.py:438 -#, python-format -msgid "%(nickname)s Signed In" -msgstr "%(nickname)s Ñе включи" - -#: ../src/gajim.py:469 -#, python-format -msgid "%(nickname)s Signed Out" -msgstr "%(nickname)s Ñе изключи" - -#: ../src/gajim.py:583 -#, python-format -msgid "New Private Message from room %s" -msgstr "Ðово лично Ñъобщение от ÑÑ‚Ð°Ñ %s" - -#: ../src/gajim.py:584 -#, python-format -msgid "%(nickname)s: %(message)s" -msgstr "%(nickname)s: %(message)s" - -#: ../src/gajim.py:606 -#, python-format -msgid "New Single Message from %(nickname)s" -msgstr "Ðово еднократно Ñъобщение от %(nickname)s" - -#: ../src/gajim.py:612 -#, python-format -msgid "New Message from %(nickname)s" -msgstr "Ðово Ñъобщение от %(nickname)s" - -#: ../src/gajim.py:660 +#: ../src/gajim.py:611 #, python-format msgid "error while sending %s ( %s )" msgstr "грешка при изпращане на %s ( %s )" -#: ../src/gajim.py:700 +#: ../src/gajim.py:651 msgid "Authorization accepted" msgstr "Упълномощаването е прието" -#: ../src/gajim.py:701 +#: ../src/gajim.py:652 #, python-format msgid "The contact \"%s\" has authorized you to see his or her status." msgstr "Контактът „%s“ ви упълномощи да виждате ÑÑŠÑтоÑнието му." -#: ../src/gajim.py:709 +#: ../src/gajim.py:660 #, python-format msgid "Contact \"%s\" removed subscription from you" msgstr "Контактът „%s“ премахна запиÑването за ваÑ" -#: ../src/gajim.py:710 +#: ../src/gajim.py:661 msgid "You will always see him or her as offline." msgstr "Винаги ще го виждате като изключен." -#: ../src/gajim.py:736 +#: ../src/gajim.py:704 #, python-format msgid "Contact with \"%s\" cannot be established" msgstr "Ðе може да бъде уÑтановен контакт Ñ â€ž%s“" -#: ../src/gajim.py:737 ../src/common/connection.py:349 +#: ../src/gajim.py:705 ../src/common/connection.py:398 msgid "Check your connection or try again later." msgstr "Проверете връзката или опитайте отново по-къÑно." -#: ../src/gajim.py:874 ../src/roster_window.py:1012 +#: ../src/gajim.py:849 ../src/roster_window.py:1025 #, python-format msgid "%s is now %s (%s)" msgstr "%s вече е %s (%s)" -#: ../src/gajim.py:963 +#: ../src/gajim.py:930 msgid "Your passphrase is incorrect" msgstr "Паролата е грешна" -#: ../src/gajim.py:964 +#: ../src/gajim.py:931 msgid "You are currently connected without your OpenPGP key." msgstr "Ð’ момента Ñте Ñвързани без OpenPGP ключ." #. FIXME: find a better image -#: ../src/gajim.py:1045 +#: ../src/gajim.py:1033 #, python-format msgid "New E-mail on %(gmail_mail_address)s" msgstr "Ðово пиÑмо за %(gmail_mail_address)s" -#: ../src/gajim.py:1047 +#: ../src/gajim.py:1035 #, python-format msgid "You have %d new E-mail message" msgid_plural "You have %d new E-mail messages" msgstr[0] "Имате %d ново пиÑмо" msgstr[1] "Имате %d нови пиÑма" +#. each message has a 'From', 'Subject' and 'Snippet' field +#: ../src/gajim.py:1040 +#, python-format +msgid "" +"\n" +"From: %(from_address)s" +msgstr "" + #: ../src/gajim.py:1185 #, python-format msgid "%s wants to send you a file." @@ -1593,142 +3756,152 @@ msgstr "" #. it is good to notify the user #. in case he or she cannot see the output of the console -#: ../src/gajim.py:1634 +#: ../src/gajim.py:1683 msgid "Could not save your settings and preferences" msgstr "ÐеуÑпех при запазването на наÑтройките" -#: ../src/gajim.py:1848 +#: ../src/gajim.py:1903 msgid "Session Management support not available (missing gnome.ui module)" msgstr "ЛипÑва поддръжка за управление на ÑеÑиите (модул gnome.ui)" -#: ../src/gajim.py:1878 +#: ../src/gajim.py:1932 msgid "Migrating Logs..." msgstr "Мигриране на запиÑите на разговорите..." -#: ../src/gajim.py:1879 +#: ../src/gajim.py:1933 msgid "Please wait while logs are being migrated..." msgstr "Изчакайте, докато запиÑите на разговорите Ñе мигрират..." -#: ../src/gajim_themes_window.py:67 +#: ../src/gajim_themes_window.py:59 msgid "Theme" msgstr "Тема" #. don't confuse translators -#: ../src/gajim_themes_window.py:149 +#: ../src/gajim_themes_window.py:141 msgid "theme name" msgstr "име на тема" -#: ../src/gajim_themes_window.py:166 +#: ../src/gajim_themes_window.py:158 msgid "You cannot delete your current theme" msgstr "Ðе може да изтриете текущата тема" -#: ../src/gajim_themes_window.py:167 +#: ../src/gajim_themes_window.py:159 msgid "Please first choose another for your current theme." msgstr "Първо изберете друга като текуща тема." -#: ../src/groupchat_control.py:68 +#: ../src/groupchat_control.py:99 msgid "Private Chat" msgstr "Личен разговор" -#: ../src/groupchat_control.py:68 +#: ../src/groupchat_control.py:99 msgid "Private Chats" msgstr "Лични разговори" -#: ../src/groupchat_control.py:84 +#: ../src/groupchat_control.py:115 msgid "Sending private message failed" msgstr "ÐеуÑпех при изпращането на лично Ñъобщение" #. in second %s code replaces with nickname -#: ../src/groupchat_control.py:86 +#: ../src/groupchat_control.py:117 #, python-format msgid "You are no longer in room \"%s\" or \"%s\" has left." msgstr "Вече не Ñте в ÑÑ‚Ð°Ñ â€ž%s“ или „%s“ е напуÑнал(а)." -#: ../src/groupchat_control.py:98 +#: ../src/groupchat_control.py:129 msgid "Group Chat" msgstr "СтаÑ" -#: ../src/groupchat_control.py:98 +#: ../src/groupchat_control.py:129 msgid "Group Chats" msgstr "Стаи" -#: ../src/groupchat_control.py:595 +#: ../src/groupchat_control.py:308 +#, fuzzy +msgid "Insert Nickname" +msgstr "СмÑна на пÑе_вдоним" + +#: ../src/groupchat_control.py:702 msgid "This room has no subject" msgstr "ÐÑма тема за тази ÑтаÑ" #. do not print 'kicked by None' -#: ../src/groupchat_control.py:693 +#: ../src/groupchat_control.py:801 #, python-format msgid "%(nick)s has been kicked: %(reason)s" msgstr "%(nick)s беше изритан: %(reason)s" -#: ../src/groupchat_control.py:697 +#: ../src/groupchat_control.py:805 #, python-format msgid "%(nick)s has been kicked by %(who)s: %(reason)s" msgstr "%(nick)s беше изритан от %(who)s: %(reason)s" #. do not print 'banned by None' -#: ../src/groupchat_control.py:704 +#: ../src/groupchat_control.py:812 #, python-format msgid "%(nick)s has been banned: %(reason)s" msgstr "%(nick)s беше отлъчен: %(reason)s" -#: ../src/groupchat_control.py:708 +#: ../src/groupchat_control.py:816 #, python-format msgid "%(nick)s has been banned by %(who)s: %(reason)s" msgstr "%(nick)s беше отлъчен от %(who)s: %(reason)s" -#: ../src/groupchat_control.py:716 +#: ../src/groupchat_control.py:824 #, python-format msgid "You are now known as %s" msgstr "Вече Ñте познати като %s" -#: ../src/groupchat_control.py:718 +#: ../src/groupchat_control.py:826 #, python-format msgid "%s is now known as %s" msgstr "%s вече е познат като %s" -#: ../src/groupchat_control.py:757 +#: ../src/groupchat_control.py:897 #, python-format msgid "%s has left" msgstr "%s напуÑна" +#: ../src/groupchat_control.py:902 +#, python-format +msgid "%s has joined the room" +msgstr "" + #. No status message -#: ../src/groupchat_control.py:759 ../src/roster_window.py:1015 +#: ../src/groupchat_control.py:904 ../src/roster_window.py:1028 #, python-format msgid "%s is now %s" msgstr "%s Ñега е %s" -#: ../src/groupchat_control.py:871 ../src/groupchat_control.py:888 -#: ../src/groupchat_control.py:981 ../src/groupchat_control.py:997 +#: ../src/groupchat_control.py:1022 ../src/groupchat_control.py:1039 +#: ../src/groupchat_control.py:1132 ../src/groupchat_control.py:1148 #, python-format msgid "Nickname not found: %s" msgstr "ПÑевдонимът не е намерен: %s" -#: ../src/groupchat_control.py:915 +#: ../src/groupchat_control.py:1066 #, python-format msgid "Invited %(contact_jid)s to %(room_jid)s." msgstr "%(contact_jid)s е поканен в %(room_jid)s." #. %s is something the user wrote but it is not a jid so we inform -#: ../src/groupchat_control.py:922 ../src/groupchat_control.py:952 +#: ../src/groupchat_control.py:1073 ../src/groupchat_control.py:1103 #, python-format msgid "%s does not appear to be a valid JID" msgstr "„%s“ изглежда не е валиден JID" -#: ../src/groupchat_control.py:1019 +#: ../src/groupchat_control.py:1185 #, python-format msgid "No such command: /%s (if you want to send this, prefix it with /say)" msgstr "" "ÐÑма такава команда: /%s (ако иÑкате да изпратите това, Ñложете предÑтавка /" "say)" -#: ../src/groupchat_control.py:1041 +#: ../src/groupchat_control.py:1207 #, python-format msgid "Commands: %s" msgstr "Команди: %s" -#: ../src/groupchat_control.py:1043 +#: ../src/groupchat_control.py:1209 #, python-format msgid "" "Usage: /%s [reason], bans the JID from the room. The nickname " @@ -1740,7 +3913,7 @@ msgstr "" "ПÑевдонимът може да Ñе замеÑтва, но не и ако Ñъдържа „@“. Ðко контактът е в " "ÑтаÑта, той Ñъщо ще бъде изритан. Ðе Ñе поддържат интервали в пÑевдонима." -#: ../src/groupchat_control.py:1049 +#: ../src/groupchat_control.py:1215 #, python-format msgid "" "Usage: /%s , opens a private chat window to the specified occupant." @@ -1748,12 +3921,12 @@ msgstr "" "Употреба: /%s <пÑевдоним>, Ð¾Ñ‚Ð²Ð°Ñ€Ñ Ð¿Ñ€Ð¾Ð·Ð¾Ñ€ÐµÑ† за лично Ñъобщение ÑÑŠÑ ÑÑŠÐ¾Ñ‚Ð²ÐµÑ‚Ð½Ð¸Ñ " "контакт." -#: ../src/groupchat_control.py:1053 +#: ../src/groupchat_control.py:1219 #, python-format msgid "Usage: /%s, clears the text window." msgstr "Употреба: /%s, изчиÑтва текÑÑ‚Ð¾Ð²Ð¸Ñ Ð¿Ñ€Ð¾Ð·Ð¾Ñ€ÐµÑ†." -#: ../src/groupchat_control.py:1055 +#: ../src/groupchat_control.py:1221 #, python-format msgid "" "Usage: /%s [reason], closes the current window or tab, displaying reason if " @@ -1762,12 +3935,12 @@ msgstr "" "Употреба: /%s [причина], Ð·Ð°Ñ‚Ð²Ð°Ñ€Ñ Ñ‚ÐµÐºÑƒÑ‰Ð¸Ñ Ð¿Ñ€Ð¾Ð·Ð¾Ñ€ÐµÑ† или подпрозорец и показва " "причина, ако е указана." -#: ../src/groupchat_control.py:1058 +#: ../src/groupchat_control.py:1224 #, python-format msgid "Usage: /%s, hide the chat buttons." msgstr "Употреба: /%s, Ñкрива бутоните за раговор." -#: ../src/groupchat_control.py:1060 +#: ../src/groupchat_control.py:1226 #, python-format msgid "" "Usage: /%s [reason], invites JID to the current room, optionally " @@ -1776,7 +3949,7 @@ msgstr "" "Употреба: /%s [причина], кани JID в текущата ÑтаÑ, причината е по " "избор." -#: ../src/groupchat_control.py:1064 +#: ../src/groupchat_control.py:1230 #, python-format msgid "" "Usage: /%s @[/nickname], offers to join room@server optionally " @@ -1785,7 +3958,7 @@ msgstr "" "Употреба: /%s <ÑтаÑ>@<Ñървър>[/пÑевдоним], предлага влизане в ÑтаÑ@Ñървър, " "използването на ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ð¿Ñевдоним е по избор." -#: ../src/groupchat_control.py:1068 +#: ../src/groupchat_control.py:1234 #, python-format msgid "" "Usage: /%s [reason], removes the occupant specified by nickname " @@ -1796,7 +3969,7 @@ msgstr "" "от ÑтаÑта и евентуално показва причина. Ðе Ñе поддържат интервали в " "пÑевдонима." -#: ../src/groupchat_control.py:1073 +#: ../src/groupchat_control.py:1239 #, python-format msgid "" "Usage: /%s , sends action to the current room. Use third person. (e." @@ -1805,7 +3978,7 @@ msgstr "" "Употреба: /%s <дейÑтвие>, изпраща дейÑтвие до текущата ÑтаÑ. Използва Ñе " "трето лице (Ñ‚.е. „/%s екÑплодира“)." -#: ../src/groupchat_control.py:1077 +#: ../src/groupchat_control.py:1243 #, python-format msgid "" "Usage: /%s [message], opens a private message windowand sends " @@ -1814,17 +3987,22 @@ msgstr "" "Употреба: /%s <пÑевдоним> [Ñъобщение], Ð¾Ñ‚Ð²Ð°Ñ€Ñ Ð¿Ñ€Ð¾Ð·Ð¾Ñ€ÐµÑ† за лично Ñъобщение и " "изпраща Ñъобщение до учаÑтника, указан Ñ Ð¿Ñевдонима." -#: ../src/groupchat_control.py:1082 +#: ../src/groupchat_control.py:1248 #, python-format msgid "Usage: /%s , changes your nickname in current room." msgstr "Употреба: /%s <пÑевдоним>, ÑÐ¼ÐµÐ½Ñ Ð¿Ñевдонима ви в текущата ÑтаÑ." -#: ../src/groupchat_control.py:1086 +#: ../src/groupchat_control.py:1252 +#, fuzzy, python-format +msgid "Usage: /%s , display the names of room occupants." +msgstr "Употреба: /%s [тема], показва или актуализира темата на текущата ÑтаÑ." + +#: ../src/groupchat_control.py:1256 #, python-format msgid "Usage: /%s [topic], displays or updates the current room topic." msgstr "Употреба: /%s [тема], показва или актуализира темата на текущата ÑтаÑ." -#: ../src/groupchat_control.py:1089 +#: ../src/groupchat_control.py:1259 #, python-format msgid "" "Usage: /%s , sends a message without looking for other commands." @@ -1832,1838 +4010,160 @@ msgstr "" "Употреба: /%s <Ñъобщение>, изпраща Ñъобщение без да Ñе имат предвид други " "команди." -#: ../src/groupchat_control.py:1092 +#: ../src/groupchat_control.py:1262 #, python-format msgid "No help info for /%s" msgstr "ÐÑма помощна Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° /%s" -#: ../src/groupchat_control.py:1128 +#: ../src/groupchat_control.py:1304 #, python-format msgid "Are you sure you want to leave room \"%s\"?" msgstr "Сигурни ли Ñте, че иÑкате да напуÑнете ÑтаÑта „%s“?" -#: ../src/groupchat_control.py:1129 +#: ../src/groupchat_control.py:1305 msgid "If you close this window, you will be disconnected from this room." msgstr "Ðко затворите този прозорец, връзката ÑÑŠÑ ÑтаÑта ще бъде прекъÑната." -#: ../src/groupchat_control.py:1133 +#: ../src/groupchat_control.py:1309 msgid "Do _not ask me again" msgstr "Да _не Ñе задава този Ð²ÑŠÐ¿Ñ€Ð¾Ñ Ð¾Ñ‚Ð½Ð¾Ð²Ð¾" -#: ../src/groupchat_control.py:1167 +#: ../src/groupchat_control.py:1343 msgid "Changing Subject" msgstr "ПромÑна на темата" -#: ../src/groupchat_control.py:1168 +#: ../src/groupchat_control.py:1344 msgid "Please specify the new subject:" msgstr "Въведете новата тема:" -#: ../src/groupchat_control.py:1176 +#: ../src/groupchat_control.py:1352 msgid "Changing Nickname" msgstr "ПромÑна на пÑевдонима" -#: ../src/groupchat_control.py:1177 +#: ../src/groupchat_control.py:1353 msgid "Please specify the new nickname you want to use:" msgstr "Въведете Ð½Ð¾Ð²Ð¸Ñ Ð¿Ñевдоним, който иÑкате да използвате:" -#: ../src/groupchat_control.py:1202 +#: ../src/groupchat_control.py:1379 msgid "Bookmark already set" msgstr "Отметката вече е уÑтановена" -#: ../src/groupchat_control.py:1203 +#: ../src/groupchat_control.py:1380 #, python-format msgid "Room \"%s\" is already in your bookmarks." msgstr "СтаÑта „%s“ вече приÑÑŠÑтва в отметките." -#: ../src/groupchat_control.py:1212 +#: ../src/groupchat_control.py:1389 msgid "Bookmark has been added successfully" msgstr "Отметката беше добавена уÑпешно" -#: ../src/groupchat_control.py:1213 +#: ../src/groupchat_control.py:1390 msgid "You can manage your bookmarks via Actions menu in your roster." msgstr "Може да организирате отметките чрез менюто „ДейÑтвиÑ“." #. ask for reason -#: ../src/groupchat_control.py:1322 +#: ../src/groupchat_control.py:1500 #, python-format msgid "Kicking %s" msgstr "Изритване на %s" -#: ../src/groupchat_control.py:1323 ../src/groupchat_control.py:1568 +#: ../src/groupchat_control.py:1501 ../src/groupchat_control.py:1779 msgid "You may specify a reason below:" msgstr "Може да уточните причина по-долу:" #. ask for reason -#: ../src/groupchat_control.py:1567 +#: ../src/groupchat_control.py:1778 #, python-format msgid "Banning %s" msgstr "Изритване на %s" -#: ../src/gtkexcepthook.py:52 +#: ../src/gtkexcepthook.py:51 msgid "A programming error has been detected" msgstr "Беше открита програмна грешка" -#: ../src/gtkexcepthook.py:53 +#: ../src/gtkexcepthook.py:52 msgid "" "It probably is not fatal, but should be reported to the developers " "nonetheless." msgstr "" "ВероÑтно не е фатална, но би Ñ‚Ñ€Ñбвало да Ñе докладва на разработчиците." -#: ../src/gtkexcepthook.py:59 +#: ../src/gtkexcepthook.py:58 msgid "_Report Bug" msgstr "_Докладване на грешка" -#: ../src/gtkexcepthook.py:82 +#: ../src/gtkexcepthook.py:81 msgid "Details" msgstr "ПодробноÑти" -#. this always tracebacks -#: ../src/gtkgui.glade.h:1 -msgid "0" -msgstr "0" - -#: ../src/gtkgui.glade.h:2 -msgid "" -"Account is being created\n" -"\n" -"Please wait..." -msgstr "" -"Ðкаунтът Ñе Ñъздава\n" -"\n" -"Изчакайте..." - -#: ../src/gtkgui.glade.h:5 -msgid "Advanced Configuration Editor" -msgstr "Редактор на наÑтройките за напреднали" - -#: ../src/gtkgui.glade.h:6 -msgid "Applications" -msgstr "Програми" - -#: ../src/gtkgui.glade.h:7 -msgid "Chatstate Tab Colors" -msgstr "Цветове на подпрозорците" - -#. a header for custom browser/client/file manager. so translate sth like: Custom Settings -#: ../src/gtkgui.glade.h:9 -msgid "Custom" -msgstr "ПерÑонални" - -#: ../src/gtkgui.glade.h:10 -msgid "Description" -msgstr "ОпиÑание" - -#: ../src/gtkgui.glade.h:11 -msgid "Format of a line" -msgstr "Формат на реда" - -#: ../src/gtkgui.glade.h:12 -msgid "Interface Customization" -msgstr "ПерÑонализиране на интерфейÑа" - -#: ../src/gtkgui.glade.h:13 -msgid "Jabber Traffic" -msgstr "Jabber трафик" - -#: ../src/gtkgui.glade.h:14 -msgid "Miscellaneous" -msgstr "Разни" - -#: ../src/gtkgui.glade.h:15 -msgid "NOTE: You should restart gajim for some setting to take effect" -msgstr "" -"ЗÐБЕЛЕЖКÐ: ТрÑбва да реÑтартирате Gajim, за да влÑзат в Ñила нÑкои от " -"наÑтройките" - -#: ../src/gtkgui.glade.h:16 -msgid "OpenPGP" -msgstr "OpenPGP" - -#: ../src/gtkgui.glade.h:17 -msgid "Personal Information" -msgstr "Лични данни" - -#: ../src/gtkgui.glade.h:18 -msgid "Please choose one of the options below:" -msgstr "Изберете една от опциите по-долу:" - -#: ../src/gtkgui.glade.h:19 -msgid "Please fill in the data for your new account" -msgstr "Попълнете данните за нов акаунт" - -#: ../src/gtkgui.glade.h:20 -msgid "Preset Status Messages" -msgstr "ÐаÑтроени ÑÑŠÐ¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð·Ð° ÑÑŠÑтоÑние" - -#: ../src/gtkgui.glade.h:21 -msgid "Properties" -msgstr "ÐаÑтройки" - -#: ../src/gtkgui.glade.h:22 -msgid "Settings" -msgstr "ÐаÑтройки" - -#: ../src/gtkgui.glade.h:23 -msgid "Sounds" -msgstr "Звуци" - -#: ../src/gtkgui.glade.h:24 -msgid "Type your new status message" -msgstr "Ðапишете новото Ñъобщение за ÑÑŠÑтоÑние" - -#: ../src/gtkgui.glade.h:25 -msgid "Visual Notifications" -msgstr "Зрителни уведомлениÑ" - -#: ../src/gtkgui.glade.h:26 -msgid "What do you want to do?" -msgstr "Какво иÑкате да направите?" - -#: ../src/gtkgui.glade.h:27 -msgid "XML Input" -msgstr "Вход в XML формат" - -#: ../src/gtkgui.glade.h:28 -msgid "A list of active, completed and stopped file transfers" -msgstr "СпиÑък Ñ Ð°ÐºÑ‚Ð¸Ð²Ð½Ð¸, завършили и прекъÑнати файлови транÑфери" - -#: ../src/gtkgui.glade.h:29 -msgid "A_ccounts" -msgstr "Ð_каунти" - -#: ../src/gtkgui.glade.h:30 -msgid "A_fter nickname:" -msgstr "С_лед пÑевдонима:" - -#. "About" is the text of a tab of vcard window -#: ../src/gtkgui.glade.h:32 -msgid "About" -msgstr "ОтноÑно" - -#: ../src/gtkgui.glade.h:33 -msgid "Accept" -msgstr "Приемане" - -#: ../src/gtkgui.glade.h:34 -msgid "Account" -msgstr "Ðкаунт" - -#: ../src/gtkgui.glade.h:35 -msgid "" -"Account\n" -"Group\n" -"Contact\n" -"Banner" -msgstr "" -"Ðкаунт\n" -"Група\n" -"Контакт\n" -"Лента" - -#: ../src/gtkgui.glade.h:39 -msgid "Account Modification" -msgstr "ПромÑна на акаунт" - -#: ../src/gtkgui.glade.h:40 -msgid "Accounts" -msgstr "Ðкаунти" - -#: ../src/gtkgui.glade.h:42 -msgid "Add New Contact" -msgstr "ДобавÑне на нов контакт" - -#: ../src/gtkgui.glade.h:43 -msgid "Add Special _Notification" -msgstr "ДобавÑне на Ñпециално _уведомление" - -#: ../src/gtkgui.glade.h:44 -msgid "Add _Contact" -msgstr "ДобавÑне на _контакт" - -#: ../src/gtkgui.glade.h:45 -msgid "Address" -msgstr "ÐдреÑ" - -#: ../src/gtkgui.glade.h:46 -msgid "Advanced" -msgstr "Ðапреднали" - -#: ../src/gtkgui.glade.h:47 -msgid "Advanced Configuration Editor" -msgstr "Редактор на наÑтройки за напреднали" - -#: ../src/gtkgui.glade.h:48 -msgid "" -"All chat states\n" -"Composing only\n" -"Disabled" -msgstr "" -"Ð’Ñички ÑÑŠÑтоÑниÑ\n" -"Само при пиÑане\n" -"Изключено" - -#: ../src/gtkgui.glade.h:51 -msgid "Allow _OS information to be sent" -msgstr "ПозволÑване изпращането на Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° _ОС" - -#: ../src/gtkgui.glade.h:52 -msgid "Allow him/her to see my status" -msgstr "Позволение за виждане на ÑÑŠÑтоÑнието ми" - -#: ../src/gtkgui.glade.h:53 -msgid "Allow popup/notifications when I'm _away/na/busy/invisible" -msgstr "" -"ПозволÑване на прозорци/ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¸ _ОтÑÑŠÑтвам/Ðе Ñъм на разположение/" -"Зает/Ðевидим" - -#: ../src/gtkgui.glade.h:54 -msgid "Also known as iChat style" -msgstr "Познато и като Ñтил „iChat“" - -#: ../src/gtkgui.glade.h:55 -msgid "Ask status message when I:" -msgstr "Питане за Ñъобщение за ÑÑŠÑтоÑние при преминаване в режим:" - -#: ../src/gtkgui.glade.h:56 -msgid "Ask to see his/her status" -msgstr "Запитване за ÑÑŠÑтоÑнието на контакта" - -#: ../src/gtkgui.glade.h:57 -msgid "Ask:" -msgstr "Питане за:" - -#: ../src/gtkgui.glade.h:58 -msgid "Assign Open_PGP Key" -msgstr "Задаване на Open_PGP ключ" - -#: ../src/gtkgui.glade.h:59 -msgid "Authorize contact so he can know when you're connected" -msgstr "Упълномощаване на контакта, така че да знае кога Ñте Ñвързани" - -#: ../src/gtkgui.glade.h:60 -msgid "Auto _away after:" -msgstr "Ðвтоматично „_ОтÑÑŠÑтвам“ Ñлед:" - -#: ../src/gtkgui.glade.h:61 -msgid "Auto _not available after:" -msgstr "Ðвтоматично „Ðе Ñъм на _разположение“ Ñлед:" - -#: ../src/gtkgui.glade.h:62 -msgid "Auto join" -msgstr "Ðвтоматично влизане" - -#: ../src/gtkgui.glade.h:63 -msgid "" -"Autodetect on every Gajim startup\n" -"Always use GNOME default applications\n" -"Always use KDE default applications\n" -"Custom" -msgstr "" -"Ðвтоматично определÑне при вÑÑко Ñтартиране на Gajim\n" -"Винаги да Ñе използват Ñтандартните програми на GNOME\n" -"Винаги да Ñе използват Ñтандартните програми на KDE\n" -"ПерÑонални" - -#: ../src/gtkgui.glade.h:67 -msgid "Automatically authorize contact" -msgstr "Ðвтоматично упълномощаване на контакта" - -#: ../src/gtkgui.glade.h:68 -msgid "Autoreconnect when connection is lost" -msgstr "Ðвтоматично Ñвързване при разпадане на връзката" - -#: ../src/gtkgui.glade.h:69 -msgid "B_efore nickname:" -msgstr "П_реди пÑевдонима:" - -#: ../src/gtkgui.glade.h:70 -msgid "Birthday:" -msgstr "Рожден ден:" - -#: ../src/gtkgui.glade.h:71 -msgid "Bold" -msgstr "Получер" - -#: ../src/gtkgui.glade.h:72 -msgid "Build custom query" -msgstr "ПотребителÑка заÑвка" - -#: ../src/gtkgui.glade.h:73 -msgid "C_onnect on Gajim startup" -msgstr "С_вързване при Ñтартиране" - -#: ../src/gtkgui.glade.h:74 -msgid "Cancel file transfer" -msgstr "ÐžÑ‚Ð¼ÐµÐ½Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð²Ð¸Ñ Ñ‚Ñ€Ð°Ð½Ñфер" - -#: ../src/gtkgui.glade.h:75 -msgid "Cancels the selected file transfer" -msgstr "ÐžÑ‚Ð¼ÐµÐ½Ñ Ð¸Ð·Ð±Ñ€Ð°Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð² транÑфер" - -#: ../src/gtkgui.glade.h:76 -msgid "Cancels the selected file transfer and removes incomplete file" -msgstr "ÐžÑ‚Ð¼ÐµÐ½Ñ Ð¸Ð·Ð±Ñ€Ð°Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð² транÑфер и изтрива Ð½ÐµÐ¿ÑŠÐ»Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð»" - -#: ../src/gtkgui.glade.h:77 -msgid "Chan_ge Password" -msgstr "_ПромÑна на парола" - -#: ../src/gtkgui.glade.h:78 -msgid "Change Password" -msgstr "ПромÑна на парола" - -#: ../src/gtkgui.glade.h:79 -msgid "Change _Nickname" -msgstr "СмÑна на пÑе_вдоним" - -#: ../src/gtkgui.glade.h:80 -msgid "Change _Subject" -msgstr "ПромÑна на _темата" - -#: ../src/gtkgui.glade.h:82 -msgid "Chat state noti_fications:" -msgstr "У_Ð²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¸ разговор:" - -#: ../src/gtkgui.glade.h:83 -msgid "" -"Check this option, only if someone you don't have in the roster spams/annoys " -"you. Use with caution, cause it blocks all messages from any contact that is " -"not in the roster" -msgstr "" -"Изберете тази Ð¾Ð¿Ñ†Ð¸Ñ Ñамо ако нÑкой, който не в ÑпиÑъка, ви притеÑнÑва или " -"дразни. Използвайте Ñ Ð²Ð½Ð¸Ð¼Ð°Ñ‚ÐµÐ»Ð½Ð¾, тъй като блокира вÑички ÑÑŠÐ¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¾Ñ‚ вÑеки " -"контакт, който не е в ÑпиÑъка." - -#: ../src/gtkgui.glade.h:84 -msgid "" -"Check this so Gajim will connect in port 5223 where legacy servers are " -"expected to have SSL capabilities. Note that Gajim uses TLS encryption by " -"default if broadcasted by the server, and with this option enabled TLS will " -"be disabled" -msgstr "" -"Изберете тази опциÑ, за да може Gajim да Ñе Ñвързва по порт 5223, където Ñе " -"очаква Ñървърите да предоÑтавÑÑ‚ възможноÑти по SSL. Забележете, че Gajim " -"използва TLS криптиране по подразбиране и избирайки тази опциÑ, изключвате " -"TLS." - -#: ../src/gtkgui.glade.h:85 -msgid "Choose _Key..." -msgstr "Избор на _ключ..." - -#: ../src/gtkgui.glade.h:86 -msgid "City:" -msgstr "Град:" - -#: ../src/gtkgui.glade.h:87 -msgid "Clean _up" -msgstr "Из_чиÑтване" - -#: ../src/gtkgui.glade.h:88 -msgid "Click to change account's password" -msgstr "ÐатиÑнете, за да Ñмените паролата на акаунта" - -#: ../src/gtkgui.glade.h:89 -msgid "Click to insert an emoticon (Alt+M)" -msgstr "ÐатиÑнете за вмъкване на емотикона (Alt+M)" - -#: ../src/gtkgui.glade.h:90 -msgid "Click to see features (like MSN, ICQ transports) of jabber servers" -msgstr "" -"ÐатиÑнете, за да видите функционалноÑтите (като MSN, ICQ транÑпорти) на " -"Jabber Ñървърите" - -#: ../src/gtkgui.glade.h:91 -msgid "Click to see past conversation in this room" -msgstr "ÐатиÑнете, за да видите Ñтари разговори в тази ÑтаÑ" - -#: ../src/gtkgui.glade.h:92 -msgid "Click to see past conversations with this contact" -msgstr "ÐатиÑнете, за да видите Ñтари разговори Ñ Ñ‚Ð¾Ð·Ð¸ контакт" - -#: ../src/gtkgui.glade.h:93 -msgid "Client:" -msgstr "Клиент:" - -#: ../src/gtkgui.glade.h:94 -msgid "Company:" -msgstr "Фирма:" - -#: ../src/gtkgui.glade.h:95 -msgid "Composing" -msgstr "Пише" - -#: ../src/gtkgui.glade.h:96 -msgid "Configure _Room" -msgstr "ÐаÑтройки на _ÑтаÑта" - -#: ../src/gtkgui.glade.h:97 -msgid "Connect when I press Finish" -msgstr "Свързване при натиÑкане на бутона „Приключване“" - -#: ../src/gtkgui.glade.h:98 -msgid "Connection" -msgstr "Свързване" - -#: ../src/gtkgui.glade.h:99 -msgid "Contact Information" -msgstr "Данни за контакта" - -#: ../src/gtkgui.glade.h:100 -msgid "Contact _Info" -msgstr "_Данни за контакта" - -#: ../src/gtkgui.glade.h:101 -msgid "Conversation History" -msgstr "ИÑÑ‚Ð¾Ñ€Ð¸Ñ Ð½Ð° разговорите" - -#: ../src/gtkgui.glade.h:102 -msgid "Country:" -msgstr "Държава:" - -#: ../src/gtkgui.glade.h:103 -msgid "Default status _iconset:" -msgstr "Стандартен _набор икони за ÑÑŠÑтоÑние:" - -#: ../src/gtkgui.glade.h:104 -msgid "Delete MOTD" -msgstr "Изтриване на MOTD" - -#: ../src/gtkgui.glade.h:105 -msgid "Deletes Message of the Day" -msgstr "Изтрива Ñъобщението за денÑ" - -#: ../src/gtkgui.glade.h:106 -msgid "Deny" -msgstr "Отказване" - -#: ../src/gtkgui.glade.h:107 -msgid "Deny authorization from contact so he cannot know when you're connected" -msgstr "" -"Отказване на упълномощаване на контакт, така че да не знае кога Ñте Ñвързани" - -#: ../src/gtkgui.glade.h:108 -msgid "Department:" -msgstr "Отдел:" - -#: ../src/gtkgui.glade.h:109 -msgid "Display a_vatars of contacts in roster" -msgstr "Показване на _аватари на контактите в ÑпиÑъка" - -#: ../src/gtkgui.glade.h:110 -msgid "Display status _messages of contacts in roster" -msgstr "Показване на _ÑъобщениÑта за ÑÑŠÑтоÑние на контактите в ÑпиÑъка" - -#: ../src/gtkgui.glade.h:111 -msgid "E-Mail:" -msgstr "Е-поща:" - -#: ../src/gtkgui.glade.h:112 -msgid "E_very 5 minutes" -msgstr "Ð’Ñеки 5 _минути" - -#: ../src/gtkgui.glade.h:113 -msgid "Edit Groups" -msgstr "Редактиране на групи" - -#: ../src/gtkgui.glade.h:114 -msgid "Edit Personal Information..." -msgstr "Редактиране на личните данни..." - -#: ../src/gtkgui.glade.h:115 -msgid "Edit _Groups" -msgstr "Редактиране на _групи" - -#: ../src/gtkgui.glade.h:116 -msgid "Emoticons:" -msgstr "Емотикони:" - -#. XML Console enable checkbutton -#: ../src/gtkgui.glade.h:118 -msgid "Enable" -msgstr "Ðктивиране" - -#: ../src/gtkgui.glade.h:119 -msgid "Enter it again for confirmation:" -msgstr "Въведете Ñ Ð¾Ñ‚Ð½Ð¾Ð²Ð¾ за потвърждение:" - -#: ../src/gtkgui.glade.h:120 -msgid "Enter new password:" -msgstr "Въведете нова парола:" - -#: ../src/gtkgui.glade.h:121 -msgid "Events" -msgstr "СъбитиÑ" - -#: ../src/gtkgui.glade.h:122 -msgid "Extra Address:" -msgstr "Допълнителен адреÑ:" - -#. Family Name -#: ../src/gtkgui.glade.h:124 -msgid "Family:" -msgstr "ФамилиÑ:" - -#: ../src/gtkgui.glade.h:125 -msgid "File Transfers" -msgstr "Файлови транÑфери" - -#: ../src/gtkgui.glade.h:126 -msgid "File _Transfers" -msgstr "_Файлови транÑфери" - -#: ../src/gtkgui.glade.h:127 -msgid "Filter:" -msgstr "Филтър:" - -#: ../src/gtkgui.glade.h:128 -msgid "Font style:" -msgstr "Стил на шрифта:" - -#: ../src/gtkgui.glade.h:129 -msgid "Forbid him/her to see my status" -msgstr "Забрана за виждане на ÑÑŠÑтоÑнието ми" - -#: ../src/gtkgui.glade.h:130 -msgid "Format: YYYY-MM-DD" -msgstr "Формат: гггг-мм-дд" - -#: ../src/gtkgui.glade.h:131 -msgid "Frequently Asked Questions (online)" -msgstr "ЧеÑто задавани въпроÑи (уеб Ñтраница)" - -#: ../src/gtkgui.glade.h:132 -msgid "From:" -msgstr "От:" - -#: ../src/gtkgui.glade.h:133 -msgid "G_o" -msgstr "_Отиване" - -#: ../src/gtkgui.glade.h:134 ../src/notify.py:167 ../src/notify.py:189 -#: ../src/notify.py:201 ../src/tooltips.py:339 -msgid "Gajim" -msgstr "Gajim" - -#: ../src/gtkgui.glade.h:135 -msgid "Gajim Themes Customization" -msgstr "ПерÑонализиране на темите на Gajim" - -#: ../src/gtkgui.glade.h:136 -msgid "" -"Gajim can send and receive meta-information related to a conversation you " -"may have with a contact. Here you can specify which chatstates you want to " -"send to the other party." -msgstr "" -"Gajim може да изпраща и получава мета-информациÑ, Ñвързана Ñ Ñ€Ð°Ð·Ð³Ð¾Ð²Ð¾Ñ€Ð° Ñ " -"даден контакт. Тук може да укажете кои ÑÑŠÑтоÑÐ½Ð¸Ñ Ð±Ð¸Ñ…Ñ‚Ðµ иÑкали да изпращате." - -#: ../src/gtkgui.glade.h:137 -msgid "" -"Gajim will automatically show new events by poping up the relative window" -msgstr "" -"Ðвтоматично ще Ñе показват нови ÑÑŠÐ±Ð¸Ñ‚Ð¸Ñ Ñ Ð¸Ð·Ñкачане на ÑÑŠÐ¾Ñ‚Ð²ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¾Ð·Ð¾Ñ€ÐµÑ†" - -#: ../src/gtkgui.glade.h:138 -msgid "" -"Gajim will notify you for new events via a popup in the bottom right of the " -"screen" -msgstr "" -"Ще Ñе поÑвÑват ÑÑŠÐ¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð·Ð° уведомÑване чрез изÑкачащ прозорец в Ð´Ð¾Ð»Ð½Ð¸Ñ " -"деÑен ъгъл на екрана" - -#: ../src/gtkgui.glade.h:139 -msgid "" -"Gajim will notify you via a popup window in the bottom right of the screen " -"about contacts that just signed in" -msgstr "" -"Ще Ñе поÑвÑва Ñъобщение за уведомÑване в Ð´Ð¾Ð»Ð½Ð¸Ñ Ð´ÐµÑен ъгъл на екрана при " -"Ñвързване на контакти" - -#: ../src/gtkgui.glade.h:140 -msgid "" -"Gajim will notify you via a popup window in the bottom right of the screen " -"about contacts that just signed out" -msgstr "" -"Ще Ñе поÑвÑва Ñъобщение за уведомÑване в Ð´Ð¾Ð»Ð½Ð¸Ñ Ð´ÐµÑен ъгъл на екрана при " -"изключване на контакти" - -#: ../src/gtkgui.glade.h:141 -msgid "" -"Gajim will only change the icon of the contact that triggered the new event" -msgstr "Само ще Ñе Ð¿Ñ€Ð¾Ð¼ÐµÐ½Ñ Ð¸ÐºÐ¾Ð½Ð°Ñ‚Ð° на контакта, от който идва новото Ñъбитие" - -#: ../src/gtkgui.glade.h:142 -msgid "Gajim: Account Creation Wizard" -msgstr "Gajim: Помощник за Ñъздаване на акаунт" - -#. user has no group, print him in General -#: ../src/gtkgui.glade.h:143 ../src/roster_window.py:291 -#: ../src/roster_window.py:1183 ../src/roster_window.py:1405 -#: ../src/systray.py:286 -msgid "General" -msgstr "Общи" - -#. Given Name -#: ../src/gtkgui.glade.h:145 -msgid "Given:" -msgstr "СобÑтвено:" - -#: ../src/gtkgui.glade.h:146 -msgid "Gone" -msgstr "ОтÑÑŠÑтва" - -#: ../src/gtkgui.glade.h:147 -msgid "Group:" -msgstr "Група:" - -#: ../src/gtkgui.glade.h:148 -msgid "HTTP Connect" -msgstr "Свързване по HTTP" - -#: ../src/gtkgui.glade.h:149 -msgid "Help online" -msgstr "Помощ в Интернет (уеб Ñтраници)" - -#: ../src/gtkgui.glade.h:150 -msgid "Hides the window" -msgstr "Скрива прозореца" - -#: ../src/gtkgui.glade.h:151 -msgid "Homepage:" -msgstr "Страница в Интернет:" - -#: ../src/gtkgui.glade.h:152 -msgid "Hostname: " -msgstr "ХоÑÑ‚: " - -#: ../src/gtkgui.glade.h:153 -msgid "I already have an account I want to use" -msgstr "Вече имам региÑтриран акаунт" - -#: ../src/gtkgui.glade.h:154 -msgid "I want to _register for a new account" -msgstr "_ИÑкам да региÑтрирам нов Jabber акаунт" - -#: ../src/gtkgui.glade.h:155 -msgid "I would like to add you to my contact list." -msgstr "Бих иÑкал(а) да ви Ð´Ð¾Ð±Ð°Ð²Ñ ÐºÑŠÐ¼ ÑпиÑъка Ñи." - -#: ../src/gtkgui.glade.h:156 -msgid "" -"If checked, Gajim will also broadcast some more IPs except from just your " -"IP, so file transfer has higher chances of working right." -msgstr "" -"Ðко тази Ð¾Ð¿Ñ†Ð¸Ñ Ðµ избрана, Gajim ще излъчва повече IP адреÑи, така че " -"файловиÑÑ‚ транÑфер има повече шанÑове да работи добре." - -#: ../src/gtkgui.glade.h:157 -msgid "" -"If checked, Gajim will display avatars of contacts in roster window and in " -"group chats" -msgstr "" -"Ðко е избрано, Gajim ще изобразÑва аватари на контакти в ÑпиÑъка и Ñтаите" - -#: ../src/gtkgui.glade.h:158 -msgid "" -"If checked, Gajim will display status messages of contacts under the contact " -"name in roster window and in group chats" -msgstr "" -"Ðко е избрано, ÑъобщениÑта за ÑÑŠÑтоÑние на контактите ще Ñе показват под " -"имената им в ÑпиÑъка и в Ñтаите" - -#: ../src/gtkgui.glade.h:159 -msgid "If checked, Gajim will join this group chat on startup" -msgstr "Ðко тази Ð¾Ð¿Ñ†Ð¸Ñ Ðµ избрана, ще влизате в тази ÑÑ‚Ð°Ñ Ð¿Ñ€Ð¸ Ñтартиране." - -#: ../src/gtkgui.glade.h:160 -msgid "If checked, Gajim will remember the password for this account" -msgstr "Ðко тази Ð¾Ð¿Ñ†Ð¸Ñ Ðµ избрана, ще Ñе запомни паролата за този акаунт." - -#: ../src/gtkgui.glade.h:161 -msgid "" -"If checked, Gajim will remember the roster and chat window positions in the " -"screen and the sizes of them next time you run it" -msgstr "" -"Ðко тази Ð¾Ð¿Ñ†Ð¸Ñ Ðµ избрана, ще Ñе запомнÑÑ‚ размерите и позициите на ÑпиÑъка и " -"прозореца за разговор на екрана за Ñледващото Ñтартиране на програмата." - -#: ../src/gtkgui.glade.h:162 -msgid "" -"If checked, Gajim will send keep-alive packets so it prevents connection " -"timeout which results in disconnection" -msgstr "" -"Ðко тази Ð¾Ð¿Ñ†Ð¸Ñ Ðµ избрана, Gajim ще изпраща пакети за поддържане на връзката " -"Ñ Ñ†ÐµÐ» избÑгване на разпадането Ñ." - -#: ../src/gtkgui.glade.h:163 -msgid "" -"If checked, Gajim will store the password in ~/.gajim/config with 'read' " -"permission only for you" -msgstr "" -"Ðко е избрано, паролата ще Ñе запази в ~/.gajim/config Ñ Ð¿Ñ€Ð°Ð²Ð° за четене " -"Ñамо за потребителÑ" - -#: ../src/gtkgui.glade.h:164 -msgid "" -"If checked, Gajim will use protocol-specific status icons. (eg. A contact " -"from MSN will have the equivalent msn icon for status online, away, busy, " -"etc...)" -msgstr "" -"Ðко тази Ð¾Ð¿Ñ†Ð¸Ñ Ðµ избрана, ще Ñе използват Ñпецифични за протокола икони за " -"ÑÑŠÑтоÑние (Ñ‚.е. контакт от MSN ще има еквивалентната за MSN икона за " -"ÑÑŠÑтоÑниÑта „Ðа линиÑ“, „ОтÑÑŠÑтвам“, „Зает“ и Ñ‚.н.)." - -#: ../src/gtkgui.glade.h:165 -msgid "" -"If checked, Gajim, when launched, will automatically connect to jabber using " -"this account" -msgstr "" -"Ðко тази Ð¾Ð¿Ñ†Ð¸Ñ Ðµ избрана, при Ñтартиране Gajim ще Ñе Ñвързва автоматично, " -"използвайки този акаунт." - -#: ../src/gtkgui.glade.h:166 -msgid "" -"If checked, any change to the global status (handled by the combobox at the " -"bottom of the roster window) will change the status of this account " -"accordingly" -msgstr "" -"Ðко тази Ð¾Ð¿Ñ†Ð¸Ñ Ðµ избрана, вÑÑка промÑна на глобалното ÑÑŠÑтоÑние (от ÑпиÑъка " -"в долната чаÑÑ‚ на Ð³Ð»Ð°Ð²Ð½Ð¸Ñ Ð¿Ñ€Ð¾Ð·Ð¾Ñ€ÐµÑ†) ще Ð¿Ñ€Ð¾Ð¼ÐµÐ½Ñ Ð¸ ÑÑŠÑтоÑнието на този акаунт." - -#: ../src/gtkgui.glade.h:167 -msgid "" -"If not disabled, Gajim will replace ascii smilies like ':)' with equivalent " -"animated or static graphical emoticons" -msgstr "" -"Ðко тази Ð¾Ð¿Ñ†Ð¸Ñ Ðµ избрана, уÑмивките в ASCII като „:)“ ще Ñе изобразÑват ÑÑŠÑ " -"Ñъответните анимирани или Ñтатични емотикони." - -#: ../src/gtkgui.glade.h:168 -msgid "" -"If you have 2 or more accounts and it is checked, Gajim will list all " -"contacts as if you had one account" -msgstr "" -"Ðко имате два или повече акаунта и тази Ð¾Ð¿Ñ†Ð¸Ñ Ðµ избрана, Gajim ще изобразÑва " -"вÑички контакти като от един акаунт." - -#: ../src/gtkgui.glade.h:169 -msgid "Inactive" -msgstr "Бездеен" - -#. Info/Query make the "IQ" initials. So translate like this 'YourLang/YourLang (Info/Query)'. Thanks (it's a tooltip so width is not a problem) -#: ../src/gtkgui.glade.h:171 -msgid "Info/Query" -msgstr "ИнформациÑ/запитване" - -#: ../src/gtkgui.glade.h:172 -msgid "Information about you, as stored in the server" -msgstr "Вашите личните данни, както Ñа запазени на Ñървъра" - -#: ../src/gtkgui.glade.h:173 -msgid "Invitation Received" -msgstr "Получена покана" - -#: ../src/gtkgui.glade.h:174 -msgid "Italic" -msgstr "КурÑив" - -#: ../src/gtkgui.glade.h:175 -msgid "Jabber" -msgstr "Jabber" - -#: ../src/gtkgui.glade.h:176 -msgid "Jabber ID:" -msgstr "Jabber ID:" - -#: ../src/gtkgui.glade.h:178 -msgid "Join _Group Chat" -msgstr "Влизане в _ÑтаÑ" - -#: ../src/gtkgui.glade.h:179 -msgid "Location" -msgstr "МеÑтонахождение" - -#: ../src/gtkgui.glade.h:180 -msgid "" -"MUC\n" -"Messages" -msgstr "" -"СъобщениÑ\n" -"в ÑтаÑ" - -#: ../src/gtkgui.glade.h:182 -msgid "" -"MUC Directed\n" -"Messages" -msgstr "" -"СъобщениÑ\n" -"за ÑтаÑ" - -#: ../src/gtkgui.glade.h:184 -msgid "Ma_nage..." -msgstr "_Управление..." - -#: ../src/gtkgui.glade.h:185 -msgid "Manage Accounts" -msgstr "Управление на акаунти" - -#: ../src/gtkgui.glade.h:186 -msgid "Manage Bookmarks" -msgstr "Управление на отметките" - -#: ../src/gtkgui.glade.h:187 -msgid "Manage Proxy Profiles" -msgstr "ÐаÑтройки на Ñървъра-поÑредник" - -#: ../src/gtkgui.glade.h:188 -msgid "Manage..." -msgstr "Управление на..." - -#. Middle Name -#: ../src/gtkgui.glade.h:190 -msgid "Middle:" -msgstr "Бащино:" - -#: ../src/gtkgui.glade.h:191 -msgid "Mo_derator" -msgstr "_ПредÑедател" - -#: ../src/gtkgui.glade.h:192 -msgid "More" -msgstr "Още" - -#: ../src/gtkgui.glade.h:193 -msgid "Name:" -msgstr "Име:" - -#: ../src/gtkgui.glade.h:194 -msgid "" -"Never\n" -"Always\n" -"Per account\n" -"Per type" -msgstr "" -"Ðикога\n" -"Винаги\n" -"Според акаунта\n" -"Според типа" - -#: ../src/gtkgui.glade.h:198 -msgid "Nickname:" -msgstr "ПÑевдоним:" - -#. None means no proxy profile selected -#: ../src/gtkgui.glade.h:201 -msgid "None" -msgstr "ÐÑма" - -#: ../src/gtkgui.glade.h:202 -msgid "Notify me about contacts that: " -msgstr "УведомÑване за контакти при: " - -#: ../src/gtkgui.glade.h:203 -msgid "Notify on new _Gmail e-mail" -msgstr "УведомÑване при нова _Gmail поща" - -#: ../src/gtkgui.glade.h:204 -msgid "OS:" -msgstr "ОС:" - -#: ../src/gtkgui.glade.h:205 -msgid "On every _message" -msgstr "Ðа _вÑÑко Ñъобщение" - -#: ../src/gtkgui.glade.h:206 -msgid "One message _window:" -msgstr "_Един прозорец за разговори:" - -#: ../src/gtkgui.glade.h:208 -msgid "Pass_word:" -msgstr "_Парола:" - -#: ../src/gtkgui.glade.h:209 -msgid "Passphrase" -msgstr "Парола" - -#: ../src/gtkgui.glade.h:210 -msgid "Password:" -msgstr "Парола:" - -#: ../src/gtkgui.glade.h:211 ../src/tooltips.py:645 -msgid "Paused" -msgstr "Временно преуÑтановен" - -#: ../src/gtkgui.glade.h:212 -msgid "Personal Information" -msgstr "Лични данни" - -#: ../src/gtkgui.glade.h:213 -msgid "Phone No.:" -msgstr "Телефон:" - -#: ../src/gtkgui.glade.h:214 -msgid "Play _sounds" -msgstr "Изпълнение на з_вуци" - -#: ../src/gtkgui.glade.h:215 -msgid "Port: " -msgstr "Порт: " - -#: ../src/gtkgui.glade.h:216 -msgid "Position:" -msgstr "ДлъжноÑÑ‚:" - -#: ../src/gtkgui.glade.h:217 -msgid "Postal Code:" -msgstr "ПощенÑки код:" - -#: ../src/gtkgui.glade.h:218 -msgid "Preferences" -msgstr "ÐаÑтройки" - -#. Prefix in Name -#: ../src/gtkgui.glade.h:220 -msgid "Prefix:" -msgstr "Обръщение:" - -#: ../src/gtkgui.glade.h:221 -msgid "Preset messages:" -msgstr "ÐаÑтроени ÑъобщениÑ:" - -#: ../src/gtkgui.glade.h:222 -msgid "Print time:" -msgstr "ИзпиÑване на времето:" - -#: ../src/gtkgui.glade.h:223 -msgid "Priori_ty:" -msgstr "Приори_тет:" - -#: ../src/gtkgui.glade.h:224 -msgid "" -"Priority is used in Jabber to determine who gets the events from the jabber " -"server when two or more clients are connected using the same account; The " -"client with the highest priority gets the events" -msgstr "" -"Приоритетът в Jabber Ñе използва, за да Ñе определи кой да получава " -"ÑъбитиÑта от Jabber Ñървър, когато два или повече клиента Ñа Ñвързани Ñ ÐµÐ´Ð¸Ð½ " -"и Ñъщ акаунт. Клиентът Ñ Ð½Ð°Ð¹-голÑм приоритет ще получава ÑъбитиÑта." - -#: ../src/gtkgui.glade.h:225 -msgid "Profile, Avatar" -msgstr "Профил и аватар" - -#: ../src/gtkgui.glade.h:226 -msgid "Protocol:" -msgstr "Протокол:" - -#: ../src/gtkgui.glade.h:227 -msgid "Proxy:" -msgstr "Сървър-поÑредник:" - -#: ../src/gtkgui.glade.h:228 -msgid "Query Builder..." -msgstr "ИзготвÑне на заÑвки..." - -#: ../src/gtkgui.glade.h:229 -msgid "Recently:" -msgstr "Скоро поÑетени:" - -#: ../src/gtkgui.glade.h:230 -msgid "Register to" -msgstr "РегиÑтриране към" - -#: ../src/gtkgui.glade.h:231 -msgid "Remove account _only from Gajim" -msgstr "Премахване на акаунт _Ñамо от Gajim" - -#: ../src/gtkgui.glade.h:232 -msgid "Remove account from Gajim and from _server" -msgstr "Премахване на акаунт от Gajim и от Ñ_ървъра" - -#: ../src/gtkgui.glade.h:233 -msgid "Remove file transfer from the list." -msgstr "Премахване на Ñ„Ð°Ð¹Ð»Ð¾Ð²Ð¸Ñ Ñ‚Ñ€Ð°Ð½Ñфер от ÑпиÑъка." - -#: ../src/gtkgui.glade.h:234 -msgid "Removes completed, canceled and failed file transfers from the list" -msgstr "" -"Премахва завършилите, прекъÑнатите или провалени файлови транÑфери от ÑпиÑъка" - -#: ../src/gtkgui.glade.h:235 -msgid "Reply to this message" -msgstr "Отговор на това Ñъобщение" - -#: ../src/gtkgui.glade.h:236 -msgid "Resour_ce: " -msgstr "Ре_ÑурÑ: " - -#: ../src/gtkgui.glade.h:237 -msgid "" -"Resource is sent to the Jabber server in order to separate the same JID in " -"two or more parts depending on the number of the clients connected in the " -"same server with the same account. So you might be connected in the same " -"account with resource 'Home' and 'Work' at the same time. The resource which " -"has the highest priority will get the events. (see below)" -msgstr "" -"РеÑурÑÑŠÑ‚ Ñе изпраща до Jabber Ñървъра, за да „раздели“ един и Ñъщи JID на " -"две или повече чаÑти в завиÑимоÑÑ‚ от Ð±Ñ€Ð¾Ñ Ð½Ð° клиентите, Ñвързани Ñ ÐµÐ´Ð¸Ð½ " -"Ñървър и един и Ñъщ акаунт. Така може да Ñте Ñвързани ÑÑŠÑ ÑÑŠÑ‰Ð¸Ñ Ð°ÐºÐ°ÑƒÐ½Ñ‚ и " -"реÑурÑи „Вкъщи“ и „Ðа работа“ по едно и Ñъщо време. РеÑурÑÑŠÑ‚ Ñ Ð½Ð°Ð¹-голÑм " -"приоритет ще получава ÑъбитиÑта. (вижте по-долу)" - -#: ../src/gtkgui.glade.h:238 -msgid "Resource:" -msgstr "РеÑурÑ:" - -#: ../src/gtkgui.glade.h:239 -msgid "Role:" -msgstr "РолÑ:" - -#: ../src/gtkgui.glade.h:240 -msgid "Room Configuration" -msgstr "ÐаÑтройки на ÑтаÑта" - -#: ../src/gtkgui.glade.h:241 -msgid "Room:" -msgstr "СтаÑ:" - -#: ../src/gtkgui.glade.h:242 -msgid "Save _passphrase (insecure)" -msgstr "Запазване на _паролата (неÑигурно)" - -#: ../src/gtkgui.glade.h:243 -msgid "Save _position and size for roster and chat windows" -msgstr "" -"Запазване на _положението и размера на ÑпиÑъка Ñ ÐºÐ¾Ð½Ñ‚Ð°ÐºÑ‚Ð¸ и прозорците за " -"разговор" - -#: ../src/gtkgui.glade.h:244 -msgid "Save as Preset..." -msgstr "Запазване като наÑтроено..." - -#: ../src/gtkgui.glade.h:245 -msgid "Save conversation _logs for all contacts" -msgstr "Запазване на иÑÑ‚Ð¾Ñ€Ð¸Ñ Ð½Ð° _разговорите за вÑички контакти" - -#: ../src/gtkgui.glade.h:246 -msgid "Save pass_word" -msgstr "Запазване на паро_ла" - -#: ../src/gtkgui.glade.h:247 -msgid "Search" -msgstr "ТърÑене" - -#: ../src/gtkgui.glade.h:248 -msgid "Sen_d" -msgstr "_Изпращане" - -#: ../src/gtkgui.glade.h:249 -msgid "Send File" -msgstr "Изпращане на файл" - -#: ../src/gtkgui.glade.h:250 -msgid "Send Single _Message" -msgstr "Изпращане на _еднократно Ñъобщение" - -#: ../src/gtkgui.glade.h:251 -msgid "Send Single _Message..." -msgstr "Изпращане на _еднократно Ñъобщение..." - -#: ../src/gtkgui.glade.h:252 -msgid "Send _File" -msgstr "Изпращане на _файл" - -#: ../src/gtkgui.glade.h:253 -msgid "Send keep-alive packets" -msgstr "Изпращане на пакети за поддържане на връзката" - -#: ../src/gtkgui.glade.h:254 -msgid "Send message" -msgstr "Изпращане на Ñъобщение" - -#: ../src/gtkgui.glade.h:255 -msgid "Send message and close window" -msgstr "Изпращане на Ñъобщението и затварÑне на прозореца" - -#: ../src/gtkgui.glade.h:256 -msgid "Sends a message to currently connected users to this server" -msgstr "" -"Изпраща Ñъобщение на вÑички потребители, Ñвързани ÑÑŠÑ Ñървъра в момента" - -#: ../src/gtkgui.glade.h:257 -msgid "Server:" -msgstr "Сървър:" - -#: ../src/gtkgui.glade.h:258 -msgid "Servers Features" -msgstr "ФункционалноÑти на Ñървърите" - -#: ../src/gtkgui.glade.h:259 -msgid "Set MOTD" -msgstr "ÐаÑтройване на MOTD" - -#: ../src/gtkgui.glade.h:260 -msgid "Set _Avatar" -msgstr "Избор на _аватар" - -#: ../src/gtkgui.glade.h:261 -msgid "Set my profile when I connect" -msgstr "ÐаÑтройване на профила при Ñвързване" - -#: ../src/gtkgui.glade.h:262 -msgid "Sets Message of the Day" -msgstr "ÐаÑтройване на Ñъобщение за денÑ" - -#: ../src/gtkgui.glade.h:263 -msgid "Show All Pending _Events" -msgstr "Показване на вÑички _чакащи ÑъбитиÑ" - -#: ../src/gtkgui.glade.h:264 -msgid "Show _Offline Contacts" -msgstr "Показване на изкл_ючените контакти" - -#: ../src/gtkgui.glade.h:265 -msgid "Show _Roster" -msgstr "Показване на ÑпиÑ_ъка" - -#: ../src/gtkgui.glade.h:266 -msgid "Show _XML Console" -msgstr "Показване на _XML конзола" - -#: ../src/gtkgui.glade.h:267 -msgid "Show only in _roster" -msgstr "Показване Ñамо в ÑпиÑ_ъка" - -#: ../src/gtkgui.glade.h:268 -msgid "Shows a list of file transfers between you and other" -msgstr "Показва ÑпиÑък Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð²Ð¸Ñ‚Ðµ транÑфери между двата контакта" - -#: ../src/gtkgui.glade.h:269 -msgid "Sign _in" -msgstr "_Свързване" - -#: ../src/gtkgui.glade.h:270 -msgid "Sign _out" -msgstr "Изкл_ючване" - -#: ../src/gtkgui.glade.h:271 -msgid "Sta_tus" -msgstr "С_ÑŠÑтоÑние" - -#: ../src/gtkgui.glade.h:272 -msgid "Start _Chat" -msgstr "Започване на _разговор" - -#: ../src/gtkgui.glade.h:273 -msgid "State:" -msgstr "Щат:" - -#: ../src/gtkgui.glade.h:274 -msgid "Status" -msgstr "СъÑтоÑние" - -#: ../src/gtkgui.glade.h:275 -msgid "Status:" -msgstr "СъÑтоÑние:" - -#: ../src/gtkgui.glade.h:276 -msgid "Street:" -msgstr "Улица:" - -#: ../src/gtkgui.glade.h:277 -msgid "Subject:" -msgstr "Тема:" - -#: ../src/gtkgui.glade.h:278 -msgid "Subscription Request" -msgstr "ИÑкане за запиÑване" - -#: ../src/gtkgui.glade.h:279 -msgid "Subscription:" -msgstr "ЗапиÑване:" - -#. Suffix in Name -#: ../src/gtkgui.glade.h:281 -msgid "Suffix:" -msgstr "ÐаÑтавка:" - -#: ../src/gtkgui.glade.h:282 -msgid "Synch_ronize account status with global status" -msgstr "Син_хронизиране на ÑÑŠÑтоÑнието на акаунта Ñ Ð¾Ð±Ñ‰Ð¾Ñ‚Ð¾ ÑÑŠÑтоÑние" - -#: ../src/gtkgui.glade.h:283 -msgid "T_heme:" -msgstr "_Тема:" - -#: ../src/gtkgui.glade.h:284 -msgid "Text _color:" -msgstr "_ЦвÑÑ‚ на текÑта" - -#: ../src/gtkgui.glade.h:285 -msgid "Text _font:" -msgstr "_Шрифт на текÑта" - -#: ../src/gtkgui.glade.h:286 -msgid "The auto away status message" -msgstr "Ðвтоматично Ñъобщение за ÑÑŠÑтоÑние при „ОтÑÑŠÑтвам“" - -#: ../src/gtkgui.glade.h:287 -msgid "The auto not available status message" -msgstr "Ðвтоматично Ñъобщение за ÑÑŠÑтоÑние при „Ðе Ñъм на разположение“" - -#: ../src/gtkgui.glade.h:288 -msgid "" -"This action removes single file transfer from the list. If the transfer is " -"active, it is first stopped and then removed" -msgstr "" -"Това дейÑтвие премахва файлов транÑфер от ÑпиÑъка. Ðко транÑферът е активен, " -"първо Ñе прекъÑва и Ñлед това Ñе премахва." - -#: ../src/gtkgui.glade.h:289 -msgid "Title:" -msgstr "Титла:" - -#: ../src/gtkgui.glade.h:290 -msgid "To:" -msgstr "До:" - -#: ../src/gtkgui.glade.h:291 -msgid "Toggle Open_PGP Encryption" -msgstr "Превключване на Open_PGP криптиране" - -#: ../src/gtkgui.glade.h:292 -msgid "Type:" -msgstr "Тип:" - -#: ../src/gtkgui.glade.h:293 -msgid "Underline" -msgstr "Подчертано" - -#: ../src/gtkgui.glade.h:294 -msgid "Update MOTD" -msgstr "Ðктуализиране на MOTD" - -#: ../src/gtkgui.glade.h:295 -msgid "Updates Message of the Day" -msgstr "Ðктуализиране на Ñъобщението за денÑ" - -#: ../src/gtkgui.glade.h:296 -msgid "Use _SSL (legacy)" -msgstr "Използване на _SSL (извън употреба)" - -#: ../src/gtkgui.glade.h:297 -msgid "Use _transports iconsets" -msgstr "Използване на набор и_кони на транÑпортите" - -#: ../src/gtkgui.glade.h:298 -msgid "Use authentication" -msgstr "Използване на удоÑтоверÑване" - -#: ../src/gtkgui.glade.h:299 -msgid "Use custom hostname/port" -msgstr "Използване на различен хоÑÑ‚/порт" - -#: ../src/gtkgui.glade.h:300 -msgid "Use file transfer proxies" -msgstr "Използване на Ñървъри-поÑредници за файлови транÑфери" - -#: ../src/gtkgui.glade.h:301 -msgid "Use t_rayicon (aka. notification area icon)" -msgstr "_Икона в облаÑтта за уведомÑване" - -#: ../src/gtkgui.glade.h:302 -msgid "User ID:" -msgstr "Jabber ID:" - -#: ../src/gtkgui.glade.h:303 -msgid "When a file transfer is complete show a popup notification" -msgstr "УведомÑване чрез изÑкачащ прозорец при завършване на Ñ„Ð°Ð¹Ð»Ð¾Ð²Ð¸Ñ Ñ‚Ñ€Ð°Ð½Ñфер" - -#: ../src/gtkgui.glade.h:304 -msgid "" -"When a new event (message, file transfer request etc..) is received, the " -"following methods may be used to inform you about it. Please note that " -"events about new messages only occur if it is a new message from a contact " -"you are not already chatting with" -msgstr "" -"Когато Ñе получи ново Ñъбитие (Ñъобщение, запитване за файлов транÑфер и Ñ‚." -"н.), могат да Ñе използват Ñледните методи за уведомÑване. Забележете, че " -"ÑÑŠÐ±Ð¸Ñ‚Ð¸Ñ Ð·Ð° нови ÑÑŠÐ¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð²ÑŠÐ·Ð½Ð¸ÐºÐ²Ð°Ñ‚ Ñамо ако Ñа нови ÑÑŠÐ¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¾Ñ‚ контакт, Ñ " -"който не говорите в момента." - -#: ../src/gtkgui.glade.h:305 -msgid "When new event is received" -msgstr "При получаване на ново Ñъбитие" - -#: ../src/gtkgui.glade.h:306 -msgid "Work" -msgstr "Работа" - -#: ../src/gtkgui.glade.h:307 -msgid "" -"You need to have an account in order to connect\n" -"to the Jabber network." -msgstr "" -"ТрÑбва да имате акаунт, за да Ñе Ñвържете Ñ\n" -"Jabber Ñървър." - -#: ../src/gtkgui.glade.h:309 -msgid "Your JID:" -msgstr "Ð’Ð°ÑˆÐ¸Ñ JID:" - -#. Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector) -#: ../src/gtkgui.glade.h:311 -msgid "_Actions" -msgstr "_ДейÑтвиÑ" - -#: ../src/gtkgui.glade.h:312 -msgid "_Add Contact..." -msgstr "_ДобавÑне на контакт..." - -#: ../src/gtkgui.glade.h:313 -msgid "_Add to Roster" -msgstr "ДобавÑне към _ÑпиÑъка..." - -#: ../src/gtkgui.glade.h:314 -msgid "_Address:" -msgstr "_ÐдреÑ:" - -#: ../src/gtkgui.glade.h:315 -msgid "_Admin" -msgstr "_ÐдминиÑтратор" - -#: ../src/gtkgui.glade.h:316 -msgid "_Administrator" -msgstr "_ÐдминиÑтратор" - -#: ../src/gtkgui.glade.h:317 -msgid "_Advanced" -msgstr "Ðа_преднали" - -#: ../src/gtkgui.glade.h:318 -msgid "_After time:" -msgstr "_След времето:" - -#: ../src/gtkgui.glade.h:319 -msgid "_Authorize" -msgstr "_Упълномощаване" - -#: ../src/gtkgui.glade.h:320 -msgid "_Background:" -msgstr "_Фон:" - -#: ../src/gtkgui.glade.h:321 -msgid "_Ban" -msgstr "_ЗабранÑване на доÑтъпа" - -#: ../src/gtkgui.glade.h:322 -msgid "_Before time:" -msgstr "_Преди времето:" - -#: ../src/gtkgui.glade.h:323 -msgid "_Bookmark This Room" -msgstr "_ДобавÑне на тази ÑÑ‚Ð°Ñ ÐºÑŠÐ¼ отметките" - -#: ../src/gtkgui.glade.h:324 -msgid "_Browser:" -msgstr "Интернет _браузър:" - -#: ../src/gtkgui.glade.h:325 -msgid "_Cancel" -msgstr "_Отказ" - -#: ../src/gtkgui.glade.h:326 -msgid "_Compact View Alt+C" -msgstr "_Компактен изглед (Alt+C)" - -#: ../src/gtkgui.glade.h:327 -msgid "_Contents" -msgstr "_РъководÑтва" - -#: ../src/gtkgui.glade.h:329 -msgid "_Copy JID/Email Address" -msgstr "Копиране на _JID/Е-поща" - -#: ../src/gtkgui.glade.h:330 -msgid "_Copy Link Location" -msgstr "_Копиране на адреÑа на връзката" - -#: ../src/gtkgui.glade.h:331 -msgid "_Deny" -msgstr "_Отказване" - -#: ../src/gtkgui.glade.h:332 -msgid "_Discover Services" -msgstr "_Откриване на уÑлуги" - -#: ../src/gtkgui.glade.h:333 -msgid "_Discover Services..." -msgstr "_Откриване на уÑлуги..." - -#: ../src/gtkgui.glade.h:335 -msgid "_FAQ" -msgstr "_ЧЗВ" - -#: ../src/gtkgui.glade.h:336 -msgid "_File manager:" -msgstr "_Файлов мениджър:" - -#: ../src/gtkgui.glade.h:337 -msgid "_Filter:" -msgstr "_Филтър:" - -#: ../src/gtkgui.glade.h:338 -msgid "_Finish" -msgstr "_Приключване" - -#: ../src/gtkgui.glade.h:339 -msgid "_Font:" -msgstr "_Шрифт:" - -#: ../src/gtkgui.glade.h:340 -msgid "_Group Chat" -msgstr "С_таÑ" - -#: ../src/gtkgui.glade.h:341 -msgid "_Help" -msgstr "_Помощ" - -#: ../src/gtkgui.glade.h:342 -msgid "_Highlight misspelled words" -msgstr "_ОÑветÑване на неправилно изпиÑаните думи" - -#: ../src/gtkgui.glade.h:343 -msgid "_History" -msgstr "_ИÑториÑ" - -#: ../src/gtkgui.glade.h:344 -msgid "_Host:" -msgstr "_ХоÑÑ‚:" - -#. Info/Query: all(?) jabber xml start with Welcome to Gajim History Logs Manager\n" -"\n" -"You can select logs from the left and/or search database from below.\n" -"\n" -"WARNING:\n" -"If you plan to do massive deletions, please make sure Gajim is not running. " -"Generally avoid deletions with contacts you currently chat with." +#: ../src/gtkgui_helpers.py:717 +msgid "Extension not supported" msgstr "" -"Добре дошли в мениджъра на иÑториÑта на разговорите на Gajim\n" -"\n" -"Може да избирате дневници отлÑво и/или да Ñ‚ÑŠÑ€Ñите в базата от данни долу.\n" -"\n" -"ПРЕДУПРЕЖДЕÐИЕ:\n" -"Ðко планирате да изтривате маÑово, уверете Ñе, че Gajim не е Ñтартиран. Като " -"цÑло избÑгвайте да изтривате иÑÑ‚Ð¾Ñ€Ð¸Ñ Ð·Ð° контакти, Ñ ÐºÐ¾Ð¸Ñ‚Ð¾ разговарÑте в " -"момента." -#: ../src/history_manager.glade.h:7 -msgid "Delete" -msgstr "Изтриване" +#: ../src/gtkgui_helpers.py:718 +#, python-format +msgid "Image cannot be saved in %(type)s format. Save as %(new_filename)s?" +msgstr "" -#: ../src/history_manager.glade.h:8 -msgid "Export" -msgstr "ИзнаÑÑне" +#: ../src/gtkgui_helpers.py:727 +#, fuzzy +msgid "Save Image as..." +msgstr "Запазване на файла като..." -#: ../src/history_manager.glade.h:9 -msgid "Gajim History Logs Manager" -msgstr "Мениджър на иÑториÑта на разговорите" - -#: ../src/history_manager.glade.h:10 -msgid "_Search Database" -msgstr "_ТърÑене в базата от данни" - -#: ../src/history_manager.py:58 +#: ../src/history_manager.py:61 msgid "Cannot find history logs database" msgstr "ÐеуÑпех при откриването на базата от данни за разговорите" #. holds jid -#: ../src/history_manager.py:102 +#: ../src/history_manager.py:104 msgid "Contacts" msgstr "Контакти" #. holds time -#: ../src/history_manager.py:115 ../src/history_manager.py:155 -#: ../src/history_window.py:94 +#: ../src/history_manager.py:117 ../src/history_manager.py:157 +#: ../src/history_window.py:85 msgid "Date" msgstr "Дата" #. holds nickname -#: ../src/history_manager.py:121 ../src/history_manager.py:173 +#: ../src/history_manager.py:123 ../src/history_manager.py:175 msgid "Nickname" msgstr "ПÑевдоним" #. holds message -#: ../src/history_manager.py:129 ../src/history_manager.py:161 -#: ../src/history_window.py:102 +#: ../src/history_manager.py:131 ../src/history_manager.py:163 +#: ../src/history_window.py:93 msgid "Message" msgstr "Съобщение" #. holds subject -#: ../src/history_manager.py:136 ../src/history_manager.py:167 +#: ../src/history_manager.py:138 ../src/history_manager.py:169 msgid "Subject" msgstr "Тема" -#: ../src/history_manager.py:181 +#: ../src/history_manager.py:183 msgid "" "Do you want to clean up the database? (STRONGLY NOT RECOMMENDED IF GAJIM IS " "RUNNING)" @@ -3671,7 +4171,7 @@ msgstr "" "ИÑкате ли да изчиÑтите базата от данни? (ИЗОБЩО ÐЕ СЕ ПРЕПОРЪЧВÐ, ÐКО GAJIM " "Е СТÐРТИРÐÐ)" -#: ../src/history_manager.py:183 +#: ../src/history_manager.py:185 msgid "" "Normally allocated database size will not be freed, it will just become " "reusable. If you really want to reduce database filesize, click YES, else " @@ -3685,138 +4185,173 @@ msgstr "" "\n" "Ð’ Ñлучай, че изберете „Да“, изчакайте..." -#: ../src/history_manager.py:389 +#: ../src/history_manager.py:391 msgid "Exporting History Logs..." msgstr "ИзнаÑÑне на запиÑите на разговорите..." -#: ../src/history_manager.py:465 +#: ../src/history_manager.py:467 #, python-format msgid "%(who)s on %(time)s said: %(message)s\n" msgstr "%(who)s в %(time)s каза: %(message)s\n" -#: ../src/history_manager.py:465 +#: ../src/history_manager.py:467 msgid "who" msgstr "кой" -#: ../src/history_manager.py:503 +#: ../src/history_manager.py:505 msgid "Do you really want to delete logs of the selected contact?" msgid_plural "Do you really want to delete logs of the selected contacts?" msgstr[0] "ÐаиÑтина ли иÑкате да изтриете дневниците на Ð¸Ð·Ð±Ñ€Ð°Ð½Ð¸Ñ ÐºÐ¾Ð½Ñ‚Ð°ÐºÑ‚?" msgstr[1] "ÐаиÑтина ли иÑкате да изтриете дневниците на избраните контакти?" -#: ../src/history_manager.py:507 ../src/history_manager.py:543 +#: ../src/history_manager.py:509 ../src/history_manager.py:545 msgid "This is an irreversible operation." msgstr "Това е необратима операциÑ." -#: ../src/history_manager.py:540 +#: ../src/history_manager.py:542 msgid "Do you really want to delete the selected message?" msgid_plural "Do you really want to delete the selected messages?" msgstr[0] "ÐаиÑтина ли иÑкате да изтриете избраното Ñъобщение?" msgstr[1] "ÐаиÑтина ли иÑкате да изтриете избраните ÑъобщениÑ?" -#: ../src/history_window.py:111 ../src/history_window.py:113 +#: ../src/history_window.py:102 ../src/history_window.py:104 #, python-format msgid "Conversation History with %s" msgstr "ИÑÑ‚Ð¾Ñ€Ð¸Ñ Ð½Ð° разговорите Ñ %s" -#: ../src/history_window.py:265 +#: ../src/history_window.py:258 #, python-format msgid "%(nick)s is now %(status)s: %(status_msg)s" msgstr "%(nick)s вече е %(status)s: %(status_msg)s" -#: ../src/history_window.py:269 +#: ../src/history_window.py:262 ../src/notify.py:113 #, python-format msgid "%(nick)s is now %(status)s" msgstr "%(nick)s вече е %(status)s" -#: ../src/history_window.py:275 +#: ../src/history_window.py:268 #, python-format msgid "Status is now: %(status)s: %(status_msg)s" msgstr "Сегашното ÑÑŠÑтоÑние е: %(status)s: %(status_msg)s" -#: ../src/history_window.py:278 +#: ../src/history_window.py:271 #, python-format msgid "Status is now: %(status)s" msgstr "Сегашното ÑÑŠÑтоÑние е: %(status)s" -#: ../src/message_window.py:233 +#: ../src/message_window.py:244 msgid "Messages" msgstr "СъобщениÑ" -#: ../src/message_window.py:234 +#: ../src/message_window.py:245 #, python-format msgid "%s - Gajim" msgstr "%s - Gajim" -#: ../src/roster_window.py:140 +#: ../src/notify.py:111 +#, fuzzy, python-format +msgid "%(nick)s Changed Status" +msgstr "%(nick)s вече е %(status)s" + +#: ../src/notify.py:121 +#, python-format +msgid "%(nickname)s Signed In" +msgstr "%(nickname)s Ñе включи" + +#: ../src/notify.py:129 +#, python-format +msgid "%(nickname)s Signed Out" +msgstr "%(nickname)s Ñе изключи" + +#: ../src/notify.py:141 +#, python-format +msgid "New Single Message from %(nickname)s" +msgstr "Ðово еднократно Ñъобщение от %(nickname)s" + +#: ../src/notify.py:150 +#, python-format +msgid "New Private Message from room %s" +msgstr "Ðово лично Ñъобщение от ÑÑ‚Ð°Ñ %s" + +#: ../src/notify.py:151 +#, python-format +msgid "%(nickname)s: %(message)s" +msgstr "%(nickname)s: %(message)s" + +#: ../src/notify.py:157 +#, python-format +msgid "New Message from %(nickname)s" +msgstr "Ðово Ñъобщение от %(nickname)s" + +#: ../src/roster_window.py:131 msgid "Merged accounts" msgstr "СмеÑени акаунти" -#: ../src/roster_window.py:289 ../src/common/helpers.py:42 +#: ../src/roster_window.py:288 ../src/common/helpers.py:39 msgid "Observers" msgstr "Ðаблюдатели" -#: ../src/roster_window.py:542 +#: ../src/roster_window.py:544 #, python-format msgid "You are already in room %s" msgstr "Вече Ñте в ÑÑ‚Ð°Ñ â€ž%s“" -#: ../src/roster_window.py:546 ../src/roster_window.py:2262 +#: ../src/roster_window.py:548 ../src/roster_window.py:2280 msgid "You cannot join a room while you are invisible" msgstr "Ðе може да влезете в ÑтаÑ, докато Ñте невидими." #. the 'manage gc bookmarks' item is showed #. below to avoid duplicate code #. add -#: ../src/roster_window.py:735 +#: ../src/roster_window.py:748 #, python-format msgid "to %s account" msgstr "към акаунт „%s“" #. disco -#: ../src/roster_window.py:742 +#: ../src/roster_window.py:755 #, python-format msgid "using %s account" msgstr "за акаунт „%s“" -#. new message +#. new chat #. for chat_with #. for single message -#: ../src/roster_window.py:750 ../src/systray.py:194 ../src/systray.py:201 +#: ../src/roster_window.py:763 ../src/systray.py:193 ../src/systray.py:198 #, python-format msgid "using account %s" msgstr "от акаунт „%s“" #. profile, avatar -#: ../src/roster_window.py:759 +#: ../src/roster_window.py:772 #, python-format msgid "of account %s" msgstr "за акаунт „%s“" -#: ../src/roster_window.py:818 +#: ../src/roster_window.py:831 msgid "Manage Bookmarks..." msgstr "Управление на отметките..." -#: ../src/roster_window.py:842 +#: ../src/roster_window.py:855 #, python-format msgid "for account %s" msgstr "за акаунт „%s“" #. History manager -#: ../src/roster_window.py:863 +#: ../src/roster_window.py:876 msgid "History Manager" msgstr "Мениджър на иÑториÑта" -#: ../src/roster_window.py:872 +#: ../src/roster_window.py:885 msgid "_Join New Room" msgstr "_Влизане в нова ÑтаÑ" -#: ../src/roster_window.py:1158 +#: ../src/roster_window.py:1159 #, python-format msgid "Transport \"%s\" will be removed" msgstr "ТранÑпортът „%s“ ще бъде премахнат" -#: ../src/roster_window.py:1158 +#: ../src/roster_window.py:1159 msgid "" "You will no longer be able to send and receive messages to contacts from " "this transport." @@ -3824,11 +4359,11 @@ msgstr "" "Вече нÑма да можете да получавате и изпращате ÑÑŠÐ¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð´Ð¾ контакти чрез " "този транÑпорт." -#: ../src/roster_window.py:1200 +#: ../src/roster_window.py:1201 msgid "Assign OpenPGP Key" msgstr "Задаване на OpenPGP ключ" -#: ../src/roster_window.py:1201 +#: ../src/roster_window.py:1202 msgid "Select a key to apply to the contact" msgstr "Изберете ключ за този контакт" @@ -3854,39 +4389,39 @@ msgstr "Изкл_ючване" msgid "_Change Status Message" msgstr "Пром_Ñна на Ñъобщението за ÑÑŠÑтоÑние" -#: ../src/roster_window.py:1617 +#: ../src/roster_window.py:1621 msgid "Authorization has been sent" msgstr "Упълномощаването беше изпратено" -#: ../src/roster_window.py:1618 +#: ../src/roster_window.py:1622 #, python-format msgid "Now \"%s\" will know your status." msgstr "„%s“ вече ще знае ÑÑŠÑтоÑнието ви." -#: ../src/roster_window.py:1642 +#: ../src/roster_window.py:1646 msgid "Subscription request has been sent" msgstr "ИÑкането за запиÑване беше изпратено" -#: ../src/roster_window.py:1643 +#: ../src/roster_window.py:1647 #, python-format msgid "If \"%s\" accepts this request you will know his or her status." msgstr "Ðко „%s“ приеме това запитване, ще знаете за ÑÑŠÑтоÑнието му." -#: ../src/roster_window.py:1654 +#: ../src/roster_window.py:1658 msgid "Authorization has been removed" msgstr "Упълномощаването беше прекратено" -#: ../src/roster_window.py:1655 +#: ../src/roster_window.py:1659 #, python-format msgid "Now \"%s\" will always see you as offline." msgstr "„%s“ винаги ще ви вижда като изключен." -#: ../src/roster_window.py:1824 +#: ../src/roster_window.py:1822 #, python-format msgid "Contact \"%s\" will be removed from your roster" msgstr "Контактът „%s“ ще бъде премахнат от ÑпиÑъка ви" -#: ../src/roster_window.py:1828 +#: ../src/roster_window.py:1826 msgid "" "By removing this contact you also remove authorization resulting in him or " "her always seeing you as offline." @@ -3894,7 +4429,7 @@ msgstr "" "Премахвайки този контакт, прекратÑвате и упълномощаването. Контактът винаги " "ще ви вижда изключен." -#: ../src/roster_window.py:1832 +#: ../src/roster_window.py:1830 msgid "" "By removing this contact you also by default remove authorization resulting " "in him or her always seeing you as offline." @@ -3902,36 +4437,36 @@ msgstr "" "Премахвайки този контакт, прекратÑвате и упълномощаването. Контактът винаги " "ще ви вижда изключен." -#: ../src/roster_window.py:1833 +#: ../src/roster_window.py:1831 msgid "I want this contact to know my status after removal" msgstr "ИÑкам този контакт да вижда ÑÑŠÑтоÑнието ми Ñлед премахването" -#: ../src/roster_window.py:1901 +#: ../src/roster_window.py:1899 msgid "Passphrase Required" msgstr "Ðеобходима е парола" -#: ../src/roster_window.py:1902 +#: ../src/roster_window.py:1900 #, python-format msgid "Enter GPG key passphrase for account %s." msgstr "Въведете парола за GPG ключ за акаунт „%s“." -#: ../src/roster_window.py:1907 +#: ../src/roster_window.py:1905 msgid "Save passphrase" msgstr "Запазване на паролата" -#: ../src/roster_window.py:1915 +#: ../src/roster_window.py:1913 msgid "Wrong Passphrase" msgstr "Грешна парола" -#: ../src/roster_window.py:1916 +#: ../src/roster_window.py:1914 msgid "Please retype your GPG passphrase or press Cancel." msgstr "Въведете паролата за GPG ключа наново или натиÑнете „Отказване“." -#: ../src/roster_window.py:1964 ../src/roster_window.py:2021 +#: ../src/roster_window.py:1963 ../src/roster_window.py:2020 msgid "You are participating in one or more group chats" msgstr "УчаÑтвате в една или повече Ñтаи" -#: ../src/roster_window.py:1965 ../src/roster_window.py:2022 +#: ../src/roster_window.py:1964 ../src/roster_window.py:2021 msgid "" "Changing your status to invisible will result in disconnection from those " "group chats. Are you sure you want to go invisible?" @@ -3939,20 +4474,20 @@ msgstr "" "ПромÑната на ÑÑŠÑтоÑнието до „Ðевидим“ ще ви изключи от тези Ñтаи. Сигурни ли " "Ñте, че иÑкате да Ñтанете „Ðевидим“?" -#: ../src/roster_window.py:1981 +#: ../src/roster_window.py:1980 msgid "No account available" msgstr "ÐÑма наличен акаунт" -#: ../src/roster_window.py:1982 +#: ../src/roster_window.py:1981 msgid "You must create an account before you can chat with other contacts." msgstr "" "За да разговарÑте Ñ Ð´Ñ€ÑƒÐ³Ð¸ контакти, първо Ñ‚Ñ€Ñбва да Ñъздадете Jabber акаунт." -#: ../src/roster_window.py:2427 ../src/roster_window.py:2433 +#: ../src/roster_window.py:2452 ../src/roster_window.py:2458 msgid "You have unread messages" msgstr "Имате непрочетени ÑъобщениÑ" -#: ../src/roster_window.py:2428 ../src/roster_window.py:2434 +#: ../src/roster_window.py:2453 ../src/roster_window.py:2459 msgid "" "Messages will only be available for reading them later if you have history " "enabled." @@ -3960,139 +4495,145 @@ msgstr "" "Може да преглеждате ÑъобщениÑта по-къÑно Ñамо ако е активирана опциÑта за " "иÑториÑта." -#: ../src/roster_window.py:3184 +#: ../src/roster_window.py:3231 #, python-format msgid "Drop %s in group %s" msgstr "ПремеÑтване на %s в група %s" -#: ../src/roster_window.py:3191 +#: ../src/roster_window.py:3238 #, python-format msgid "Make %s and %s metacontacts" msgstr "Създаване на %s и %s като мета-контакти" -#: ../src/roster_window.py:3358 +#: ../src/roster_window.py:3408 msgid "Change Status Message..." msgstr "ПромÑна на Ñъобщението за ÑÑŠÑтоÑние..." -#: ../src/systray.py:155 +#: ../src/systray.py:154 msgid "_Change Status Message..." msgstr "_ПромÑна на Ñъобщението за ÑÑŠÑтоÑние..." -#: ../src/systray.py:236 +#: ../src/systray.py:231 msgid "Hide this menu" msgstr "Скрива това меню" -#: ../src/systraywin32.py:266 ../src/systraywin32.py:285 -#: ../src/tooltips.py:315 +#: ../src/systraywin32.py:261 ../src/systraywin32.py:280 #, python-format msgid "Gajim - %d unread message" msgid_plural "Gajim - %d unread messages" msgstr[0] "Gajim - %d непрочетено Ñъобщение" msgstr[1] "Gajim - %d непрочетени ÑъобщениÑ" -#: ../src/tooltips.py:321 -#, python-format -msgid "Gajim - %d unread single message" -msgid_plural "Gajim - %d unread single messages" +#: ../src/tooltips.py:326 +#, fuzzy, python-format +msgid " %d unread message" +msgid_plural " %d unread messages" msgstr[0] "Gajim - %d непрочетено Ñъобщение" msgstr[1] "Gajim - %d непрочетени ÑъобщениÑ" -#: ../src/tooltips.py:327 -#, python-format -msgid "Gajim - %d unread group chat message" -msgid_plural "Gajim - %d unread group chat messages" +#: ../src/tooltips.py:332 +#, fuzzy, python-format +msgid " %d unread single message" +msgid_plural " %d unread single messages" +msgstr[0] "Gajim - %d непрочетено Ñъобщение" +msgstr[1] "Gajim - %d непрочетени ÑъобщениÑ" + +#: ../src/tooltips.py:338 +#, fuzzy, python-format +msgid " %d unread group chat message" +msgid_plural " %d unread group chat messages" msgstr[0] "Gajim - %d непрочетено Ñъобщение в ÑтаÑ" msgstr[1] "Gajim - %d непрочетени ÑÑŠÐ¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð² Ñтаи" -#: ../src/tooltips.py:333 -#, python-format -msgid "Gajim - %d unread private message" -msgid_plural "Gajim - %d unread private messages" +#: ../src/tooltips.py:344 +#, fuzzy, python-format +msgid " %d unread private message" +msgid_plural " %d unread private messages" msgstr[0] "Gajim - %d непрочетено лично Ñъобщение" msgstr[1] "Gajim - %d непрочетени лични ÑъобщениÑ" -#: ../src/tooltips.py:348 ../src/tooltips.py:350 +#: ../src/tooltips.py:359 ../src/tooltips.py:361 #, python-format msgid "Gajim - %s" msgstr "Gajim - %s" -#: ../src/tooltips.py:383 +#: ../src/tooltips.py:395 msgid "Role: " msgstr "РолÑ: " -#: ../src/tooltips.py:384 +#: ../src/tooltips.py:396 msgid "Affiliation: " msgstr "Връзка: " -#: ../src/tooltips.py:386 ../src/tooltips.py:518 +#: ../src/tooltips.py:398 ../src/tooltips.py:537 msgid "Resource: " msgstr "РеÑурÑ: " -#: ../src/tooltips.py:394 ../src/tooltips.py:521 ../src/tooltips.py:543 -#: ../src/tooltips.py:654 +#: ../src/tooltips.py:407 ../src/tooltips.py:540 ../src/tooltips.py:565 +#: ../src/tooltips.py:676 msgid "Status: " msgstr "СъÑтоÑние: " -#: ../src/tooltips.py:501 +#: ../src/tooltips.py:514 msgid "Subscription: " msgstr "ЗапиÑване: " -#: ../src/tooltips.py:510 +#: ../src/tooltips.py:523 msgid "OpenPGP: " msgstr "OpenPGP: " -#: ../src/tooltips.py:548 +#: ../src/tooltips.py:570 #, python-format msgid "Last status on %s" msgstr "ПоÑледно ÑÑŠÑтоÑние на %s" -#: ../src/tooltips.py:550 +#: ../src/tooltips.py:572 #, python-format msgid "Since %s" msgstr "От %s" -#: ../src/tooltips.py:610 +#: ../src/tooltips.py:632 msgid "Download" msgstr "ИзтеглÑне" -#: ../src/tooltips.py:616 +#: ../src/tooltips.py:638 msgid "Upload" msgstr "Качване" -#: ../src/tooltips.py:623 +#: ../src/tooltips.py:645 msgid "Type: " msgstr "Тип: " -#: ../src/tooltips.py:629 +#: ../src/tooltips.py:651 msgid "Transferred: " msgstr "Прехвърлени: " -#: ../src/tooltips.py:632 ../src/tooltips.py:653 +#: ../src/tooltips.py:654 ../src/tooltips.py:675 msgid "Not started" msgstr "Ðе е започнал" -#: ../src/tooltips.py:636 +#: ../src/tooltips.py:658 msgid "Stopped" msgstr "ПреуÑтановен" -#: ../src/tooltips.py:638 ../src/tooltips.py:641 +#: ../src/tooltips.py:660 ../src/tooltips.py:663 msgid "Completed" msgstr "Завършил" #. stalled is not paused. it is like 'frozen' it stopped alone -#: ../src/tooltips.py:649 +#: ../src/tooltips.py:671 msgid "Stalled" msgstr "Блокирал" -#: ../src/tooltips.py:651 +#: ../src/tooltips.py:673 msgid "Transferring" msgstr "ПрехвърлÑне" -#: ../src/tooltips.py:683 +#: ../src/tooltips.py:705 msgid "This service has not yet responded with detailed information" msgstr "Тази уÑлуга вÑе още не е отговорила Ñ Ð¿Ð¾Ð´Ñ€Ð¾Ð±Ð½Ð° информациÑ" -#: ../src/tooltips.py:686 +#: ../src/tooltips.py:708 msgid "" "This service could not respond with detailed information.\n" "It is most likely legacy or broken" @@ -4101,24 +4642,24 @@ msgstr "" "Ðай-вероÑтно е оÑтарÑла или повредена" #. keep identation -#: ../src/vcard.py:186 +#: ../src/vcard.py:188 msgid "Could not load image" msgstr "ÐеуÑпех при зареждането на изображението" -#: ../src/vcard.py:262 +#: ../src/vcard.py:289 msgid "?Client:Unknown" msgstr "ÐеизвеÑтен" -#: ../src/vcard.py:264 +#: ../src/vcard.py:291 msgid "?OS:Unknown" msgstr "ÐеизвеÑтна" -#: ../src/vcard.py:281 +#: ../src/vcard.py:308 #, python-format msgid "since %s" msgstr "от %s" -#: ../src/vcard.py:305 +#: ../src/vcard.py:332 msgid "" "This contact is interested in your presence information, but you are not " "interested in his/her presence" @@ -4126,7 +4667,7 @@ msgstr "" "Този контакт Ñе интереÑува от информациÑта за вашето ÑÑŠÑтоÑние, но вие не Ñе " "интереÑувате от неговото" -#: ../src/vcard.py:307 +#: ../src/vcard.py:334 msgid "" "You are interested in the contact's presence information, but he/she is not " "interested in yours" @@ -4134,13 +4675,13 @@ msgstr "" "Вие Ñ Ð¸Ð½Ñ‚ÐµÑ€ÐµÑувате от информациÑта за ÑÑŠÑтоÑнието на този контакт, но той не " "Ñе интереÑува от вашето" -#: ../src/vcard.py:309 +#: ../src/vcard.py:336 msgid "You and the contact are interested in each other's presence information" msgstr "" "Вие и контакта Ñе интереÑувате взаимно от информациÑта за ÑÑŠÑтоÑниÑта Ñи" #. None -#: ../src/vcard.py:311 +#: ../src/vcard.py:338 msgid "" "You are not interested in the contact's presence, and neither he/she is " "interested in yours" @@ -4148,67 +4689,67 @@ msgstr "" "Вие не Ñе интереÑувате от информациÑта за ÑÑŠÑтоÑнието на контакта, както и " "той от вашата" -#: ../src/vcard.py:320 +#: ../src/vcard.py:347 msgid "You are waiting contact's answer about your subscription request" msgstr "Чакате отговора на контакта отноÑно запитването ви за запиÑване" -#: ../src/vcard.py:332 ../src/vcard.py:355 +#: ../src/vcard.py:359 ../src/vcard.py:382 msgid " resource with priority " msgstr " реÑÑƒÑ€Ñ Ñ Ð¿Ñ€Ð¸Ð¾Ñ€Ð¸Ñ‚ÐµÑ‚ " -#: ../src/vcard.py:434 +#: ../src/vcard.py:458 msgid "Without a connection you can not publish your contact information." msgstr "ТрÑбва да Ñте Ñвързани, за да публикувате визитката." -#: ../src/vcard.py:463 +#: ../src/vcard.py:491 msgid "Without a connection, you can not get your contact information." msgstr "ТрÑбва да Ñте Ñвързани, за да изтеглите визитката" -#: ../src/vcard.py:467 +#: ../src/vcard.py:495 msgid "Personal details" msgstr "Лични данни" -#: ../src/common/check_paths.py:39 +#: ../src/common/check_paths.py:35 msgid "creating logs database" msgstr "Ñъздаване на база от данни за разговорите" -#: ../src/common/check_paths.py:84 ../src/common/check_paths.py:95 -#: ../src/common/check_paths.py:102 +#: ../src/common/check_paths.py:82 ../src/common/check_paths.py:93 +#: ../src/common/check_paths.py:100 #, python-format msgid "%s is file but it should be a directory" msgstr "%s e файл, а би Ñ‚Ñ€Ñбвало да е папка" -#: ../src/common/check_paths.py:85 ../src/common/check_paths.py:96 -#: ../src/common/check_paths.py:103 ../src/common/check_paths.py:110 +#: ../src/common/check_paths.py:83 ../src/common/check_paths.py:94 +#: ../src/common/check_paths.py:101 ../src/common/check_paths.py:109 msgid "Gajim will now exit" msgstr "Спиране на програмата" -#: ../src/common/check_paths.py:109 +#: ../src/common/check_paths.py:108 #, python-format msgid "%s is directory but should be file" msgstr "%s e папка, а би Ñ‚Ñ€Ñбвало да е файл" -#: ../src/common/check_paths.py:125 +#: ../src/common/check_paths.py:124 #, python-format msgid "creating %s directory" msgstr "Ñъздаване на папка %s" -#: ../src/common/exceptions.py:35 +#: ../src/common/exceptions.py:32 msgid "pysqlite2 (aka python-pysqlite2) dependency is missing. Exiting..." msgstr "" "ЛипÑва завиÑимоÑтта pysqlite2 (Ñъщо познато и като python-pysqlite2). " "Спиране на програмата..." -#: ../src/common/exceptions.py:43 +#: ../src/common/exceptions.py:40 msgid "Service not available: Gajim is not running, or remote_control is False" msgstr "" "УÑлугата не е налична: Gajim не е Ñтартиран или remote_control е „False“" -#: ../src/common/exceptions.py:51 +#: ../src/common/exceptions.py:48 msgid "D-Bus is not present on this machine or python module is missing" msgstr "Ðа тази машина нÑма инÑталиран D-Bus или липÑва модула за Питон" -#: ../src/common/exceptions.py:59 +#: ../src/common/exceptions.py:56 msgid "" "Session bus is not available.\n" "Try reading http://trac.gajim.org/wiki/GajimDBus" @@ -4216,39 +4757,68 @@ msgstr "" "ЛипÑва „session bus“.\n" "Опитайте Ñе да прочетете http://trac.gajim.org/wiki/GajimDBus" -#: ../src/common/config.py:53 +#: ../src/common/config.py:51 msgid "Use DBus and Notification-Daemon to show notifications" msgstr "Използвайте DBus и Notification-Daemon за показване на уведомлениÑта" -#: ../src/common/config.py:57 +#: ../src/common/config.py:55 msgid "Time in minutes, after which your status changes to away." msgstr "Време в минути, Ñлед което ÑÑŠÑтоÑнието да Ñе Ð¿Ñ€Ð¾Ð¼ÐµÐ½Ñ Ð½Ð° „ОтÑÑŠÑтвам“." -#: ../src/common/config.py:58 +#: ../src/common/config.py:56 msgid "Away as a result of being idle" msgstr "Ðвтоматично ÑÑŠÑтоÑние поради липÑа на активноÑÑ‚" -#: ../src/common/config.py:60 +#: ../src/common/config.py:58 msgid "Time in minutes, after which your status changes to not available." msgstr "" "Време в минути, Ñлед което ÑÑŠÑтоÑнието да Ñе Ð¿Ñ€Ð¾Ð¼ÐµÐ½Ñ Ð½Ð° „Ðе Ñъм на " "разположение“." -#: ../src/common/config.py:61 +#: ../src/common/config.py:59 msgid "Not available as a result of being idle" msgstr "Ðвтоматично ÑÑŠÑтоÑние поради липÑа на активноÑÑ‚" -#: ../src/common/config.py:88 +#: ../src/common/config.py:77 +msgid "List (space separated) of rows (accounts and groups) that are collapsed" +msgstr "" + +#: ../src/common/config.py:83 +msgid "" +"'always' - print time for every message.\n" +"'sometimes' - print time every print_ichat_every_foo_minutes minute.\n" +"'never' - never print time." +msgstr "" + +#: ../src/common/config.py:84 +msgid "" +"Value of fuzziness from 1 to 4 or 0 to disable fuzzyclock. 1 is the most " +"precise clock, 4 the less precise one." +msgstr "" + +#: ../src/common/config.py:87 msgid "Treat * / _ pairs as possible formatting characters." msgstr "Тълкуване на двойки от „* / _“ като възможни Ñимволи за форматиране." -#: ../src/common/config.py:89 +#: ../src/common/config.py:88 msgid "" "If True, do not remove */_ . So *abc* will be bold but with * * not removed." msgstr "" "Ðко е „True“, не Ñе премахват */_. Така *абв* ще е в получер Ñтил, но ÑÑŠÑ " "Ñимволите * *." +#: ../src/common/config.py:98 +msgid "" +"Character to add after nickname when using nick completion (tab) in group " +"chat" +msgstr "" + +#: ../src/common/config.py:99 +msgid "" +"Character to propose to add after desired nickname when desired nickname is " +"used by someone else in group chat" +msgstr "" + #: ../src/common/config.py:131 msgid "Add * and [n] in roster title?" msgstr "ДобавÑне на * и [n] към заглавието на ÑпиÑъка?" @@ -4290,6 +4860,12 @@ msgstr "" "Ðко тази Ð¾Ð¿Ñ†Ð¸Ñ Ðµ избрана, Gajim може да Ñе контролира отдалечено чрез gajim-" "remote." +#: ../src/common/config.py:145 +msgid "" +"When not printing time for every message (print_time==sometimes), print it " +"every x minutes" +msgstr "" + #: ../src/common/config.py:146 msgid "Ask before closing a group chat tab/window." msgstr "Питане преди затварÑне на подпрозорец/прозорец на ÑтаÑ." @@ -4327,7 +4903,8 @@ msgid "Show tab when only one conversation?" msgstr "Показване на подпрозорец при един разговор?" #: ../src/common/config.py:162 -msgid "Show tab border if one conversation?" +#, fuzzy +msgid "Show tabbed notebook border in chat windows?" msgstr "Показване на границата на подпрозореца при един разговор?" #: ../src/common/config.py:163 @@ -4379,15 +4956,28 @@ msgstr "" "Ðко е „True“, ще Ñе изпраща запитване за аватар до вÑеки контакт, който е " "нÑмал такъв поÑÐ»ÐµÐ´Ð½Ð¸Ñ Ð¿ÑŠÑ‚ или пък има оÑтарÑл кеширан аватар." -#. FIXME: remove you and make it Gajim will not; and/or his or *her* status messages -#: ../src/common/config.py:184 +#: ../src/common/config.py:183 +#, fuzzy msgid "" -"If False, you will no longer see status line in chats when a contact changes " -"his or her status and/or his status message." +"If False, Gajim will no longer print status line in chats when a contact " +"changes his or her status and/or his or her status message." msgstr "" "Ðко е „False“, вече нÑма да виждате реда за ÑÑŠÑтоÑнието при разговорите, " "когато контактът Ð¿Ñ€Ð¾Ð¼ÐµÐ½Ñ ÑÑŠÑтоÑнието Ñи." +#: ../src/common/config.py:184 +msgid "" +"can be \"none\", \"all\" or \"in_and_out\". If \"none\", Gajim will no " +"longer print status line in groupchats when a member changes his or her " +"status and/or his or her status message. If \"all\" Gajim will print all " +"status messages. If \"in_and_out\", gajim will only print FOO enters/leaves " +"room" +msgstr "" + +#: ../src/common/config.py:187 +msgid "Don't show avatar for the transport itself." +msgstr "" + #: ../src/common/config.py:189 msgid "" "If True and installed GTK+ and PyGTK versions are at least 2.8, make the " @@ -4407,7 +4997,8 @@ msgstr "" "пароли. ÐаÑтройте тази Ð¾Ð¿Ñ†Ð¸Ñ Ð½Ð° „False“, за да Ñпрете да изпращате " "Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾Ñ‚ тип SHA при приÑÑŠÑтвие в Ñтаи" -#: ../src/common/config.py:193 +#. always, never, peracct, pertype should not be translated +#: ../src/common/config.py:194 msgid "" "Controls the window where new messages are placed.\n" "'always' - All messages are sent to a single window.\n" @@ -4425,41 +5016,53 @@ msgstr "" "Ñпецифичен прозорец. Забележете, че промÑната на тази Ð¾Ð¿Ñ†Ð¸Ñ Ð¸Ð·Ð¸Ñква " "реÑтартирането на Gajim, за да влезе в Ñила" -#: ../src/common/config.py:194 +#: ../src/common/config.py:195 msgid "If False, you will no longer see the avatar in the chat window" msgstr "Ðко е „False“, повече нÑма да виждате аватар в прозореца за разговор" -#: ../src/common/config.py:195 +#: ../src/common/config.py:196 msgid "If True, pressing the escape key closes a tab/window" msgstr "" "Ðко е „True“, натиÑкането на клавиша „Escape“ Ð·Ð°Ñ‚Ð²Ð°Ñ€Ñ Ð¿Ñ€Ð¾Ð·Ð¾Ñ€ÐµÑ†Ð°/подпрозореца" -#: ../src/common/config.py:196 +#: ../src/common/config.py:197 msgid "Hides the buttons in group chat window" msgstr "Скрива бутоните в прозореца на ÑтаÑта" -#: ../src/common/config.py:197 +#: ../src/common/config.py:198 msgid "Hides the buttons in two persons chat window" msgstr "Скрива бутоните в прозорец за разговор Ñ Ð´Ð²Ð° контакта" -#: ../src/common/config.py:198 +#: ../src/common/config.py:199 msgid "Hides the banner in a group chat window" msgstr "Скрива лентата в прозореца на ÑтаÑта" -#: ../src/common/config.py:199 +#: ../src/common/config.py:200 msgid "Hides the banner in two persons chat window" msgstr "Скрива лентата в прозорец за разговор Ñ Ð´Ð²Ð° контакта" -#: ../src/common/config.py:200 +#: ../src/common/config.py:201 msgid "Hides the room occupants list in groupchat window" msgstr "Скрива ÑпиÑъка на учаÑтниците в прозореца на ÑтаÑта" +#: ../src/common/config.py:202 +msgid "Merge consecutive nickname in chat window" +msgstr "" + +#: ../src/common/config.py:203 +msgid "Indentation when using merge consecutive nickame" +msgstr "" + +#: ../src/common/config.py:204 +msgid "List of colors that will be used to color nicknames in groupchats" +msgstr "" + #. yes, no, ask -#: ../src/common/config.py:233 +#: ../src/common/config.py:237 msgid "Jabberd2 workaround" msgstr "Заобикалка заради Jabberd2" -#: ../src/common/config.py:237 +#: ../src/common/config.py:241 msgid "" "If checked, Gajim will use your IP and proxies defined in " "file_transfer_proxies option for file transfer." @@ -4467,59 +5070,59 @@ msgstr "" "Ðко тази Ð¾Ð¿Ñ†Ð¸Ñ Ðµ избрана, ще Ñе използва вашиÑÑ‚ IP Ð°Ð´Ñ€ÐµÑ Ð¸ Ñървърите-" "поÑредници, указани в опциÑта file_transfer_proxies, за файлови транÑфери." -#: ../src/common/config.py:290 +#: ../src/common/config.py:297 msgid "Sleeping" msgstr "СпÑ" -#: ../src/common/config.py:291 +#: ../src/common/config.py:298 msgid "Back soon" msgstr "Връщам Ñе Ñкоро" -#: ../src/common/config.py:291 +#: ../src/common/config.py:298 msgid "Back in some minutes." msgstr "Ще Ñе върна Ñлед малко." -#: ../src/common/config.py:292 +#: ../src/common/config.py:299 msgid "Eating" msgstr "Хапвам" -#: ../src/common/config.py:292 +#: ../src/common/config.py:299 msgid "I'm eating, so leave me a message." msgstr "Хапвам, оÑтавете Ñъобщение." -#: ../src/common/config.py:293 +#: ../src/common/config.py:300 msgid "Movie" msgstr "Филм" -#: ../src/common/config.py:293 +#: ../src/common/config.py:300 msgid "I'm watching a movie." msgstr "Гледам филм." -#: ../src/common/config.py:294 +#: ../src/common/config.py:301 msgid "Working" msgstr "РаботÑ" -#: ../src/common/config.py:294 +#: ../src/common/config.py:301 msgid "I'm working." msgstr "РаботÑ." -#: ../src/common/config.py:295 +#: ../src/common/config.py:302 msgid "Phone" msgstr "Телефон" -#: ../src/common/config.py:295 +#: ../src/common/config.py:302 msgid "I'm on the phone." msgstr "Ð“Ð¾Ð²Ð¾Ñ€Ñ Ð¿Ð¾ телефона." -#: ../src/common/config.py:296 +#: ../src/common/config.py:303 msgid "Out" msgstr "Ðавън" -#: ../src/common/config.py:296 +#: ../src/common/config.py:303 msgid "I'm out enjoying life" msgstr "ÐаÑлаждавам Ñе на живота навън" -#: ../src/common/config.py:305 +#: ../src/common/config.py:312 msgid "" "Sound to play when a MUC message contains one of the words in " "muc_highlight_words, or when a MUC message contains your nickname." @@ -4527,7 +5130,7 @@ msgstr "" "Звукът, който да Ñе възпроизвежда, когато в ÑтаÑта Ñе изпише дума от " "muc_higlighted_words или когато Ñъобщение Ñъдържа пÑевдонима ви." -#: ../src/common/config.py:306 +#: ../src/common/config.py:313 msgid "" "Sound to play when any MUC message arrives. (This setting is taken into " "account only if notify_on_all_muc_messages is True)" @@ -4536,98 +5139,98 @@ msgstr "" "в ÑтаÑта. (Тази наÑтройка е валидна Ñамо ако notify_on_all_muc_messages е " "„True“)" -#: ../src/common/config.py:314 ../src/common/optparser.py:181 +#: ../src/common/config.py:321 ../src/common/optparser.py:185 msgid "green" msgstr "зелена" -#: ../src/common/config.py:318 ../src/common/optparser.py:167 +#: ../src/common/config.py:325 ../src/common/optparser.py:171 msgid "grocery" msgstr "колониална" -#: ../src/common/config.py:322 +#: ../src/common/config.py:329 msgid "human" msgstr "хуманна" -#: ../src/common/config.py:326 +#: ../src/common/config.py:333 msgid "marine" msgstr "ÑинÑ" -#: ../src/common/connection.py:152 +#: ../src/common/connection.py:172 #, python-format msgid "Connection with account \"%s\" has been lost" msgstr "Връзката на акаунт „%s“ Ñе разпадна" -#: ../src/common/connection.py:153 +#: ../src/common/connection.py:173 msgid "To continue sending and receiving messages, you will need to reconnect." msgstr "" "За да продължите да изпращате и получавате ÑъобщениÑ, Ñ‚Ñ€Ñбва да Ñе Ñвържете " "наново." -#: ../src/common/connection.py:169 ../src/common/connection.py:195 +#: ../src/common/connection.py:185 ../src/common/connection.py:211 #, python-format msgid "Transport %s answered wrongly to register request." msgstr "ТранÑпортът „%s“ отговори погрешно на запитването за региÑтрациÑ." #. wrong answer -#: ../src/common/connection.py:194 +#: ../src/common/connection.py:210 msgid "Invalid answer" msgstr "Ðевалиден отговор" -#: ../src/common/connection.py:348 ../src/common/connection.py:384 -#: ../src/common/connection.py:754 +#: ../src/common/connection.py:397 ../src/common/connection.py:433 +#: ../src/common/connection.py:857 #, python-format msgid "Could not connect to \"%s\"" msgstr "Ðе може да Ñе оÑъщеÑтви Ñвързване Ñ â€ž%s“" -#: ../src/common/connection.py:362 +#: ../src/common/connection.py:411 #, python-format msgid "Connected to server %s:%s with %s" msgstr "Свързан към Ñървър %s:%s Ñ %s" -#: ../src/common/connection.py:385 +#: ../src/common/connection.py:434 msgid "Check your connection or try again later" msgstr "Проверете връзката или опитайте отново по-къÑно" -#: ../src/common/connection.py:410 +#: ../src/common/connection.py:459 #, python-format msgid "Authentication failed with \"%s\"" msgstr "ÐеуÑпех при удоÑтоверÑването Ñ â€ž%s“" -#: ../src/common/connection.py:411 +#: ../src/common/connection.py:460 msgid "Please check your login and password for correctness." msgstr "Проверете дали името и паролата Ñа правилни." #. We didn't set a passphrase -#: ../src/common/connection.py:487 +#: ../src/common/connection.py:573 msgid "OpenPGP passphrase was not given" msgstr "Ðе беше зададена парола за OpenPGP" #. %s is the account name here -#: ../src/common/connection.py:489 +#: ../src/common/connection.py:575 #, python-format msgid "You will be connected to %s without OpenPGP." msgstr "Ще бъдете Ñвързани към „%s“ без OpenPGP." #. do not show I'm invisible! -#: ../src/common/connection.py:526 +#: ../src/common/connection.py:612 msgid "invisible" msgstr "невидим" -#: ../src/common/connection.py:527 +#: ../src/common/connection.py:613 msgid "offline" msgstr "изключен" -#: ../src/common/connection.py:528 +#: ../src/common/connection.py:614 #, python-format msgid "I'm %s" msgstr "%s" #. we're not english -#: ../src/common/connection.py:611 +#: ../src/common/connection.py:699 msgid "[This message is encrypted]" msgstr "[Това Ñъобщение е криптирано]" -#: ../src/common/connection.py:649 +#: ../src/common/connection.py:742 #, python-format msgid "" "Subject: %s\n" @@ -4636,222 +5239,303 @@ msgstr "" "Тема: %s\n" "%s" -#: ../src/common/connection.py:699 +#: ../src/common/connection.py:795 ../src/common/connection_handlers.py:1511 msgid "I would like to add you to my roster." msgstr "" "Бих иÑкал(а) да ви Ð´Ð¾Ð±Ð°Ð²Ñ ÐºÑŠÐ¼ ÑпиÑъка Ñи. I would like to add you to my " "roster." -#: ../src/common/helpers.py:103 +#: ../src/common/connection_handlers.py:49 +msgid "Unable to load idle module" +msgstr "" + +#: ../src/common/connection_handlers.py:581 +#, python-format +msgid "Registration information for transport %s has not arrived in time" +msgstr "" + +#. password required to join +#. we are banned +#. room does not exist +#: ../src/common/connection_handlers.py:1450 +#: ../src/common/connection_handlers.py:1453 +#: ../src/common/connection_handlers.py:1456 +#: ../src/common/connection_handlers.py:1459 +#: ../src/common/connection_handlers.py:1462 +#: ../src/common/connection_handlers.py:1465 +#: ../src/common/connection_handlers.py:1473 +msgid "Unable to join room" +msgstr "" + +#: ../src/common/connection_handlers.py:1451 +msgid "A password is required to join this room." +msgstr "" + +#: ../src/common/connection_handlers.py:1454 +#, fuzzy +msgid "You are banned from this room." +msgstr "Вече Ñте в ÑÑ‚Ð°Ñ â€ž%s“" + +#: ../src/common/connection_handlers.py:1457 +msgid "Such room does not exist." +msgstr "" + +#: ../src/common/connection_handlers.py:1460 +msgid "Room creation is restricted." +msgstr "" + +#: ../src/common/connection_handlers.py:1463 +msgid "Your registered nickname must be used." +msgstr "" + +#: ../src/common/connection_handlers.py:1466 +#, fuzzy +msgid "You are not in the members list." +msgstr "Ðе Ñте Ñвързани към Ñървъра." + +#: ../src/common/connection_handlers.py:1474 +msgid "" +"Your desired nickname is in use or registered by another occupant.\n" +"Please specify another nickname below:" +msgstr "" + +#. BE CAREFUL: no con.updateRosterItem() in a callback +#: ../src/common/connection_handlers.py:1519 +#, python-format +msgid "we are now subscribed to %s" +msgstr "" + +#: ../src/common/connection_handlers.py:1521 +#, fuzzy, python-format +msgid "unsubscribe request from %s" +msgstr "ИÑкане за запиÑване от %s" + +#: ../src/common/connection_handlers.py:1523 +#, python-format +msgid "we are now unsubscribed from %s" +msgstr "" + +#: ../src/common/connection_handlers.py:1680 +#, python-format +msgid "" +"JID %s is not RFC compliant. It will not be added to your roster. Use roster " +"management tools such as http://jru.jabberstudio.org/ to remove it" +msgstr "" + +#: ../src/common/helpers.py:100 msgid "Invalid character in username." msgstr "Ðевалиден Ñимвол в потребителÑкото име." -#: ../src/common/helpers.py:108 +#: ../src/common/helpers.py:105 msgid "Server address required." msgstr "Ðеобходим е Ð°Ð´Ñ€ÐµÑ Ð½Ð° Ñървъра." -#: ../src/common/helpers.py:113 +#: ../src/common/helpers.py:110 msgid "Invalid character in hostname." msgstr "Ðевалиден Ñимвол в името на хоÑта." -#: ../src/common/helpers.py:119 +#: ../src/common/helpers.py:116 msgid "Invalid character in resource." msgstr "Ðевалиден Ñимвол в реÑурÑа." #. GiB means gibibyte -#: ../src/common/helpers.py:159 +#: ../src/common/helpers.py:156 #, python-format msgid "%s GiB" msgstr "%s GiB" #. GB means gigabyte -#: ../src/common/helpers.py:162 +#: ../src/common/helpers.py:159 #, python-format msgid "%s GB" msgstr "%s GB" #. MiB means mibibyte -#: ../src/common/helpers.py:166 +#: ../src/common/helpers.py:163 #, python-format msgid "%s MiB" msgstr "%s MiB" #. MB means megabyte -#: ../src/common/helpers.py:169 +#: ../src/common/helpers.py:166 #, python-format msgid "%s MB" msgstr "%s MB" #. KiB means kibibyte -#: ../src/common/helpers.py:173 +#: ../src/common/helpers.py:170 #, python-format msgid "%s KiB" msgstr "%s KB" #. KB means kilo bytes -#: ../src/common/helpers.py:176 +#: ../src/common/helpers.py:173 #, python-format msgid "%s KB" msgstr "%s KB" #. B means bytes -#: ../src/common/helpers.py:179 +#: ../src/common/helpers.py:176 #, python-format msgid "%s B" msgstr "%s B" -#: ../src/common/helpers.py:189 +#: ../src/common/helpers.py:205 msgid "_Busy" msgstr "_Зает" -#: ../src/common/helpers.py:191 +#: ../src/common/helpers.py:207 msgid "Busy" msgstr "Зает" -#: ../src/common/helpers.py:194 +#: ../src/common/helpers.py:210 msgid "_Not Available" msgstr "_Ðе Ñъм на разположение" -#: ../src/common/helpers.py:196 +#: ../src/common/helpers.py:212 msgid "Not Available" msgstr "Ðе Ñъм на разположение" -#: ../src/common/helpers.py:199 +#: ../src/common/helpers.py:215 msgid "_Free for Chat" msgstr "_Свободен за разговор" -#: ../src/common/helpers.py:201 +#: ../src/common/helpers.py:217 msgid "Free for Chat" msgstr "Свободен за разговор" -#: ../src/common/helpers.py:204 +#: ../src/common/helpers.py:220 msgid "_Available" msgstr "Ðа _линиÑ" -#: ../src/common/helpers.py:206 +#: ../src/common/helpers.py:222 msgid "Available" msgstr "Ðа линиÑ" -#: ../src/common/helpers.py:208 +#: ../src/common/helpers.py:224 msgid "Connecting" msgstr "Свързване" -#: ../src/common/helpers.py:211 +#: ../src/common/helpers.py:227 msgid "A_way" msgstr "_ОтÑÑŠÑтвам" -#: ../src/common/helpers.py:213 +#: ../src/common/helpers.py:229 msgid "Away" msgstr "ОтÑÑŠÑтвам" -#: ../src/common/helpers.py:216 +#: ../src/common/helpers.py:232 msgid "_Offline" msgstr "_Изключен" -#: ../src/common/helpers.py:218 +#: ../src/common/helpers.py:234 msgid "Offline" msgstr "Изключен" -#: ../src/common/helpers.py:221 +#: ../src/common/helpers.py:237 msgid "_Invisible" msgstr "Ðе_видим" -#: ../src/common/helpers.py:223 -msgid "Invisible" -msgstr "Ðевидим" - -#: ../src/common/helpers.py:227 +#: ../src/common/helpers.py:243 msgid "?contact has status:Unknown" msgstr "ÐеизвеÑтно" -#: ../src/common/helpers.py:229 +#: ../src/common/helpers.py:245 msgid "?contact has status:Has errors" msgstr "Има грешки" -#: ../src/common/helpers.py:234 +#: ../src/common/helpers.py:250 msgid "?Subscription we already have:None" msgstr "ÐÑма" -#: ../src/common/helpers.py:236 +#: ../src/common/helpers.py:252 msgid "To" msgstr "За" -#: ../src/common/helpers.py:238 +#: ../src/common/helpers.py:254 msgid "From" msgstr "От" -#: ../src/common/helpers.py:240 +#: ../src/common/helpers.py:256 msgid "Both" msgstr "ДвуÑтранно" -#: ../src/common/helpers.py:248 +#: ../src/common/helpers.py:264 msgid "?Ask (for Subscription):None" msgstr "ÐÑма" -#: ../src/common/helpers.py:250 +#: ../src/common/helpers.py:266 msgid "Subscribe" msgstr "ЗапиÑване" -#: ../src/common/helpers.py:259 +#: ../src/common/helpers.py:275 msgid "?Group Chat Contact Role:None" msgstr "Ðе е уÑтановен" -#: ../src/common/helpers.py:262 +#: ../src/common/helpers.py:278 msgid "Moderators" msgstr "ПредÑедатели" -#: ../src/common/helpers.py:264 +#: ../src/common/helpers.py:280 msgid "Moderator" msgstr "ПредÑедател" -#: ../src/common/helpers.py:267 +#: ../src/common/helpers.py:283 msgid "Participants" msgstr "УчаÑтници" -#: ../src/common/helpers.py:269 +#: ../src/common/helpers.py:285 msgid "Participant" msgstr "УчаÑтник" -#: ../src/common/helpers.py:272 +#: ../src/common/helpers.py:288 msgid "Visitors" msgstr "ПоÑетители" -#: ../src/common/helpers.py:274 +#: ../src/common/helpers.py:290 msgid "Visitor" msgstr "ПоÑетител" -#: ../src/common/helpers.py:310 +#: ../src/common/helpers.py:326 msgid "is paying attention to the conversation" msgstr "обръща внимание на разговора" -#: ../src/common/helpers.py:312 +#: ../src/common/helpers.py:328 msgid "is doing something else" msgstr "прави нещо друго" -#: ../src/common/helpers.py:314 +#: ../src/common/helpers.py:330 msgid "is composing a message..." msgstr "пише Ñъобщение..." #. paused means he or she was compoing but has stopped for a while -#: ../src/common/helpers.py:317 +#: ../src/common/helpers.py:333 msgid "paused composing a message" msgstr "ÑÐ¿Ñ€Ñ Ð´Ð° пише Ñъобщение" -#: ../src/common/helpers.py:319 +#: ../src/common/helpers.py:335 msgid "has closed the chat window or tab" msgstr "затвори прозореца или подпрозореца" #. we talk about a file -#: ../src/common/optparser.py:62 +#: ../src/common/optparser.py:60 #, python-format msgid "error: cannot open %s for reading" msgstr "грешка: %s не може да бъде отворен за четене" -#: ../src/common/optparser.py:167 +#: ../src/common/optparser.py:171 msgid "gtk+" msgstr "gtk+" -#: ../src/common/optparser.py:176 ../src/common/optparser.py:177 +#: ../src/common/optparser.py:180 ../src/common/optparser.py:181 msgid "cyan" msgstr "Ñиньозелена" +#~ msgid "Automatically authorize contact" +#~ msgstr "Ðвтоматично упълномощаване на контакта" + +#~ msgid "Send File" +#~ msgstr "Изпращане на файл" + +#~ msgid "Underline" +#~ msgstr "Подчертано" diff --git a/po/br.po b/po/br.po new file mode 100644 index 000000000..4d93433c3 --- /dev/null +++ b/po/br.po @@ -0,0 +1,5669 @@ +# translation of gajim.po to +# French translations for gajim package +# Traduction anglaise du package gajim. +# Copyright (C) 2004 THE gajim'S COPYRIGHT HOLDER +# This file is distributed under the same license as the gajim package. +# Automatically generated, 2004. +# , 2005. +# +# +#: ../src/gajim-remote.py:218 ../src/gajim-remote.py:225 +msgid "" +msgstr "" +"Project-Id-Version: gajim 0.10\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2006-07-04 00:03+0200\n" +"PO-Revision-Date: 2006-06-05 19:14+0100\n" +"Last-Translator: Giulia Fraboulet \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Poedit-Language: French\n" +"X-Poedit-Country: FRANCE\n" + +#: ../gajim.desktop.in.h:1 +msgid "A GTK+ Jabber client" +msgstr "Ur flaperez Jabber e GTK+" + +#: ../gajim.desktop.in.h:2 +msgid "Gajim Instant Messenger" +msgstr "Flaperez Gajim" + +#: ../gajim.desktop.in.h:3 +msgid "Jabber IM Client" +msgstr "Flaperez Jabber" + +#: ../data/glade/account_context_menu.glade.h:1 +msgid "Send Single _Message..." +msgstr "Kas ur gemennadenn _simpl..." + +#: ../data/glade/account_context_menu.glade.h:2 +msgid "_Add Contact..." +msgstr "_Ouzhpennañ un darempred..." + +#: ../data/glade/account_context_menu.glade.h:3 +msgid "_Discover Services..." +msgstr "_Dizoleiñ ar servijoù..." + +#: ../data/glade/account_context_menu.glade.h:4 +#: ../data/glade/roster_window.glade.h:15 +#: ../data/glade/systray_context_menu.glade.h:5 +msgid "_Group Chat" +msgstr "_Webkaozioù" + +#: ../data/glade/account_context_menu.glade.h:5 +msgid "_Modify Account..." +msgstr "_Kemmañ ar gont..." + +#: ../data/glade/account_context_menu.glade.h:6 +msgid "_Status" +msgstr "_Stad" + +#: ../data/glade/account_creation_wizard_window.glade.h:1 +msgid "" +"Account is being created\n" +"\n" +"Please wait..." +msgstr "" +"O krouiñ ar gont\n" +"\n" +"Gortozit marplij..." + +#: ../data/glade/account_creation_wizard_window.glade.h:4 +msgid "Please choose one of the options below:" +msgstr "Diuzit unan eus an dibaboù dindan :" + +#: ../data/glade/account_creation_wizard_window.glade.h:5 +msgid "Please fill in the data for your new account" +msgstr "Leuniit an titouroù evit ho kont nevez" + +#: ../data/glade/account_creation_wizard_window.glade.h:6 +msgid "Click to see features (like MSN, ICQ transports) of jabber servers" +msgstr "" + +#: ../data/glade/account_creation_wizard_window.glade.h:7 +msgid "Connect when I press Finish" +msgstr "Kevreañ pa bouezan war Echuiñ" + +#: ../data/glade/account_creation_wizard_window.glade.h:8 +msgid "Gajim: Account Creation Wizard" +msgstr "Gajim : Assistant de création de compte" + +#: ../data/glade/account_creation_wizard_window.glade.h:9 +msgid "I already have an account I want to use" +msgstr "Bez em eus ur gont a fell din implij" + +#: ../data/glade/account_creation_wizard_window.glade.h:10 +msgid "I want to _register for a new account" +msgstr "Fellout a ra din emezelañ evit krouiñ ur gont" + +#: ../data/glade/account_creation_wizard_window.glade.h:11 +#: ../data/glade/account_modification_window.glade.h:18 +msgid "If checked, Gajim will remember the password for this account" +msgstr "" +"Si cette case est cochée, Gajim va retenir le mot de passe pour ce compte" + +#: ../data/glade/account_creation_wizard_window.glade.h:12 +#: ../data/glade/manage_proxies_window.glade.h:6 +msgid "Pass_word:" +msgstr "_Ger-kuzh:" + +#: ../data/glade/account_creation_wizard_window.glade.h:13 +#: ../data/glade/account_modification_window.glade.h:37 +msgid "Save pass_word" +msgstr "Enrollañ ar _ger-kuzh" + +#: ../data/glade/account_creation_wizard_window.glade.h:14 +#, fuzzy +msgid "Servers Features" +msgstr "Perzhioù ar servijerien" + +#: ../data/glade/account_creation_wizard_window.glade.h:15 +msgid "Set my profile when I connect" +msgstr "Aozañ ma aelad pa lugan" + +#: ../data/glade/account_creation_wizard_window.glade.h:16 +msgid "" +"You need to have an account in order to connect\n" +"to the Jabber network." +msgstr "" +"Rankout a rit kaout ur gont evit en em lugañ\n" +"d'ar rouedad Jabber." + +#: ../data/glade/account_creation_wizard_window.glade.h:18 +msgid "Your JID:" +msgstr "Ho JID:" + +#: ../data/glade/account_creation_wizard_window.glade.h:19 +#: ../data/glade/roster_window.glade.h:10 +msgid "_Advanced" +msgstr "_Mont pelloc'h" + +#: ../data/glade/account_creation_wizard_window.glade.h:20 +msgid "_Finish" +msgstr "_Echuiñ" + +#: ../data/glade/account_creation_wizard_window.glade.h:21 +#: ../data/glade/manage_proxies_window.glade.h:9 +msgid "_Host:" +msgstr "_Ostiz:" + +#: ../data/glade/account_creation_wizard_window.glade.h:22 +#: ../data/glade/account_modification_window.glade.h:45 +msgid "_Password:" +msgstr "_Ger-kuzh:" + +#: ../data/glade/account_creation_wizard_window.glade.h:23 +#: ../data/glade/manage_proxies_window.glade.h:10 +msgid "_Port:" +msgstr "_Porzh:" + +#: ../data/glade/account_creation_wizard_window.glade.h:24 +msgid "_Retype Password:" +msgstr "_Adroit ho ker-kuzh" + +#: ../data/glade/account_creation_wizard_window.glade.h:25 +msgid "_Server:" +msgstr "_Servijer:" + +#: ../data/glade/account_creation_wizard_window.glade.h:26 +msgid "_Use proxy" +msgstr "_Implij ur proxy" + +#: ../data/glade/account_creation_wizard_window.glade.h:27 +#: ../data/glade/manage_proxies_window.glade.h:11 +msgid "_Username:" +msgstr "_Anv:" + +#: ../data/glade/account_modification_window.glade.h:1 +#: ../data/glade/preferences_window.glade.h:8 +msgid "Miscellaneous" +msgstr "A bep seurt" + +#: ../data/glade/account_modification_window.glade.h:2 +msgid "OpenPGP" +msgstr "OpenPGP" + +#: ../data/glade/account_modification_window.glade.h:3 +msgid "Personal Information" +msgstr "Titouroù hiniennel" + +#: ../data/glade/account_modification_window.glade.h:4 +msgid "Account" +msgstr "Kont" + +#: ../data/glade/account_modification_window.glade.h:5 +msgid "Account Modification" +msgstr "Kemmañ ar gont" + +#: ../data/glade/account_modification_window.glade.h:6 +msgid "Autoreconnect when connection is lost" +msgstr "Adkevreañ war-eeun pa vez kollet ar gevreadenn" + +#: ../data/glade/account_modification_window.glade.h:7 +msgid "C_onnect on Gajim startup" +msgstr "K_evreañ en ur loc'hañ Gajim" + +#: ../data/glade/account_modification_window.glade.h:8 +msgid "Chan_ge Password" +msgstr "C_heñch ar ger-kuzh" + +#: ../data/glade/account_modification_window.glade.h:9 +msgid "" +"Check this so Gajim will connect in port 5223 where legacy servers are " +"expected to have SSL capabilities. Note that Gajim uses TLS encryption by " +"default if broadcasted by the server, and with this option enabled TLS will " +"be disabled" +msgstr "" +"Si vous cochez cette case, Gajim se connectera sur le port 5223, sur lequel " +"les serveurs sont supposés gérer le SSL. Notez que Gajim utilise le cryptage " +"TLS par défaut si le serveur annonce qu'il le supporte, et avec cette option " +"vous désactivez le TLS" + +#: ../data/glade/account_modification_window.glade.h:10 +msgid "Choose _Key..." +msgstr "Dibabit un _alc'hwezh..." + +#: ../data/glade/account_modification_window.glade.h:11 +msgid "Click to change account's password" +msgstr "Klikit evit cheñch ger-kuzh ar gont" + +#: ../data/glade/account_modification_window.glade.h:12 +msgid "Connection" +msgstr "Kevreadenn" + +#: ../data/glade/account_modification_window.glade.h:13 +msgid "Edit Personal Information..." +msgstr "Kemmañ an titouroù hiniennel..." + +#: ../data/glade/account_modification_window.glade.h:14 +#: ../data/glade/roster_window.glade.h:5 ../src/notify.py:308 +#: ../src/notify.py:330 ../src/notify.py:342 ../src/tooltips.py:350 +msgid "Gajim" +msgstr "Gajim" + +#: ../data/glade/account_modification_window.glade.h:15 +#: ../data/glade/preferences_window.glade.h:44 +#: ../data/glade/vcard_information_window.glade.h:17 +#: ../src/roster_window.py:290 ../src/roster_window.py:1184 +#: ../src/roster_window.py:1405 +msgid "General" +msgstr "Hollek" + +#: ../data/glade/account_modification_window.glade.h:16 +msgid "Hostname: " +msgstr "Servijer:" + +#: ../data/glade/account_modification_window.glade.h:17 +#, fuzzy +msgid "" +"If checked, Gajim will also broadcast some more IPs except from just your " +"IP, so file transfer has higher chances of working." +msgstr "" +"Si cette case est cochée, Gajim va diffuser des adresses IP en plus de la " +"votre, les transferts de fichiers ont ainsi plus de chance de fonctionner." + +#: ../data/glade/account_modification_window.glade.h:19 +msgid "" +"If checked, Gajim will send keep-alive packets so it prevents connection " +"timeout which results in disconnection" +msgstr "" +"Si cette case est cochée, Gajim enverra des paquets de maintien de connexion " +"pour prévenir des temps de latence pouvant entraîner des déconnexions" + +#: ../data/glade/account_modification_window.glade.h:20 +msgid "" +"If checked, Gajim will store the password in ~/.gajim/config with 'read' " +"permission only for you" +msgstr "" +"Si cette case est cochée, Gajim va sauvegarder le mot de passe dans ~/.gajim/" +"config avec accès en lecture pour vous uniquement" + +#: ../data/glade/account_modification_window.glade.h:21 +msgid "" +"If checked, Gajim, when launched, will automatically connect to jabber using " +"this account" +msgstr "" +"M'eo diuzet, ec'h emlugo Gajim da jabber en ur implij ar gont-mañ en ur " +"loc'hañ" + +#: ../data/glade/account_modification_window.glade.h:22 +msgid "" +"If checked, any change to the global status (handled by the combobox at the " +"bottom of the roster window) will change the status of this account " +"accordingly" +msgstr "" +"M'eo enaouet, kement cheñchamant graet war ar stad hollek (meret gant ar " +"voestig e traoñ ar roll-darempredoù) a gemmo stad ar gont-mañ ivez" + +#: ../data/glade/account_modification_window.glade.h:23 +msgid "Information about you, as stored in the server" +msgstr "Titouroù diwar ho penn, miret war ar servijer" + +#: ../data/glade/account_modification_window.glade.h:24 +msgid "Manage..." +msgstr "Kemmañ..." + +#: ../data/glade/account_modification_window.glade.h:25 ../src/config.py:1448 +msgid "No key selected" +msgstr "Alc'hwez ebet diuzet" + +#. None means no proxy profile selected +#: ../data/glade/account_modification_window.glade.h:27 ../src/config.py:1053 +#: ../src/config.py:1058 ../src/config.py:1230 ../src/config.py:1505 +#: ../src/config.py:1578 ../src/config.py:2282 +msgid "None" +msgstr "Hini ebet" + +#: ../data/glade/account_modification_window.glade.h:28 +msgid "Personal Information" +msgstr "Titouroù hiniennel" + +#: ../data/glade/account_modification_window.glade.h:29 +msgid "Port: " +msgstr "Porzh:" + +#: ../data/glade/account_modification_window.glade.h:30 +msgid "Priori_ty:" +msgstr "" + +#: ../data/glade/account_modification_window.glade.h:31 +msgid "" +"Priority is used in Jabber to determine who gets the events from the jabber " +"server when two or more clients are connected using the same account; The " +"client with the highest priority gets the events" +msgstr "" + +#: ../data/glade/account_modification_window.glade.h:32 +msgid "Proxy:" +msgstr "Proksi:" + +#: ../data/glade/account_modification_window.glade.h:33 +msgid "Resour_ce: " +msgstr "" + +#: ../data/glade/account_modification_window.glade.h:34 +msgid "" +"Resource is sent to the Jabber server in order to separate the same JID in " +"two or more parts depending on the number of the clients connected in the " +"same server with the same account. So you might be connected in the same " +"account with resource 'Home' and 'Work' at the same time. The resource which " +"has the highest priority will get the events. (see below)" +msgstr "" + +#: ../data/glade/account_modification_window.glade.h:35 +msgid "Save _passphrase (insecure)" +msgstr "_Enrollañ ar ger-kuzh (diasur)" + +#: ../data/glade/account_modification_window.glade.h:36 +msgid "Save conversation _logs for all contacts" +msgstr "Enrollaén an _istoradur-flapiñ evit an holl zarempredoù" + +#: ../data/glade/account_modification_window.glade.h:38 +msgid "Send keep-alive packets" +msgstr "Kas ar pakadoù derc'hel al lugadenn vev" + +#: ../data/glade/account_modification_window.glade.h:39 +msgid "Synch_ronize account status with global status" +msgstr "" + +#: ../data/glade/account_modification_window.glade.h:40 +msgid "Use _SSL (legacy)" +msgstr "Implij _SSL" + +#: ../data/glade/account_modification_window.glade.h:41 +msgid "Use custom hostname/port" +msgstr "Implij un anv ostiz/porzh personelaet" + +#: ../data/glade/account_modification_window.glade.h:42 +msgid "Use file transfer proxies" +msgstr "Implij ar proksioù evit treuzkas restroù" + +#: ../data/glade/account_modification_window.glade.h:43 +#: ../data/glade/add_new_contact_window.glade.h:6 +msgid "_Jabber ID:" +msgstr "ID _Jabber:" + +#: ../data/glade/account_modification_window.glade.h:44 +msgid "_Name: " +msgstr "_Anv:" + +#: ../data/glade/accounts_window.glade.h:1 +msgid "Accounts" +msgstr "Kontoù" + +#: ../data/glade/accounts_window.glade.h:2 +msgid "" +"If you have 2 or more accounts and it is checked, Gajim will list all " +"contacts as if you had one account" +msgstr "" +"M'ho peus daou gont pe ouzhpenn hag eo diuzet, e vo strollet an holl " +"zarempredoù evel pa vefe ur gont hepken" + +#: ../data/glade/accounts_window.glade.h:3 +msgid "_Merge accounts" +msgstr "_Strollañ ar c'hontoù" + +#: ../data/glade/accounts_window.glade.h:4 +msgid "_Modify" +msgstr "_Kemmañ" + +#: ../data/glade/accounts_window.glade.h:5 +#: ../data/glade/remove_account_window.glade.h:4 +msgid "_Remove" +msgstr "_Dilemel" + +#: ../data/glade/add_new_contact_window.glade.h:1 +#, fuzzy +msgid "A_llow this contact to view my status" +msgstr "He/E aotren da welet ma stad" + +#: ../data/glade/add_new_contact_window.glade.h:2 +msgid "Add New Contact" +msgstr "Ouzhpennañ un darempred nevez" + +#: ../data/glade/add_new_contact_window.glade.h:3 +msgid "I would like to add you to my contact list." +msgstr "Me blijfe din ouzhpennañ ac'hanoc'h em roll-darempredoù." + +#: ../data/glade/add_new_contact_window.glade.h:4 +#, fuzzy +msgid "_Account:" +msgstr "Kont" + +#: ../data/glade/add_new_contact_window.glade.h:5 +#, fuzzy +msgid "_Group:" +msgstr "Strollad:" + +#: ../data/glade/add_new_contact_window.glade.h:7 +#, fuzzy +msgid "_Nickname:" +msgstr "Lesanv:" + +#: ../data/glade/add_new_contact_window.glade.h:8 +#, fuzzy +msgid "_Protocol:" +msgstr "Protokol:" + +#: ../data/glade/add_new_contact_window.glade.h:9 +msgid "_Subscribe" +msgstr "_Koumanantiñ" + +#: ../data/glade/add_new_contact_window.glade.h:10 +#, fuzzy +msgid "_User ID:" +msgstr "ID arveriad-ez:" + +#: ../data/glade/advanced_configuration_window.glade.h:1 +msgid "Description" +msgstr "Taolennadur" + +#: ../data/glade/advanced_configuration_window.glade.h:2 +msgid "NOTE: You should restart gajim for some setting to take effect" +msgstr "" +"NOTENN : Dav eo deoc'h adloc'hañ Gajim evit ma vo efedus kemmoù 'zo" + +#: ../data/glade/advanced_configuration_window.glade.h:3 +msgid "Advanced Configuration Editor" +msgstr "Aozer kefluniañ dre ar munut" + +#: ../data/glade/advanced_configuration_window.glade.h:4 +msgid "Filter:" +msgstr "Sil:" + +#: ../data/glade/advanced_menuitem_menu.glade.h:1 +msgid "Delete MOTD" +msgstr "Dilemel MOTD" + +#: ../data/glade/advanced_menuitem_menu.glade.h:2 +msgid "Deletes Message of the Day" +msgstr "A zilam kemennadenn an devezh" + +#: ../data/glade/advanced_menuitem_menu.glade.h:3 +msgid "Sends a message to currently connected users to this server" +msgstr "A gas ur gemennadenn d'an arveridi luget war ar servijer-mañ" + +#: ../data/glade/advanced_menuitem_menu.glade.h:4 +msgid "Set MOTD" +msgstr "Lakaat MOTD" + +#: ../data/glade/advanced_menuitem_menu.glade.h:5 +msgid "Sets Message of the Day" +msgstr "A laka kemennadenn an devezh" + +#: ../data/glade/advanced_menuitem_menu.glade.h:6 +#, fuzzy +msgid "Show _XML Console" +msgstr "Diskouez ar gonsol _XML" + +#: ../data/glade/advanced_menuitem_menu.glade.h:7 +msgid "Update MOTD" +msgstr "Hizivaat MOTD" + +#: ../data/glade/advanced_menuitem_menu.glade.h:8 +msgid "Updates Message of the Day" +msgstr "A hiziva kemennadenn an devez" + +#: ../data/glade/advanced_menuitem_menu.glade.h:9 +msgid "_Administrator" +msgstr "_Merour-ez" + +#: ../data/glade/advanced_menuitem_menu.glade.h:10 +msgid "_Privacy Lists" +msgstr "" + +#: ../data/glade/advanced_menuitem_menu.glade.h:11 +msgid "_Send Server Message" +msgstr "_Kas ur gemennadenn d'ar servijer" + +#: ../data/glade/advanced_menuitem_menu.glade.h:12 +msgid "_Send Single Message" +msgstr "_Kas ur gemennadenn simpl" + +#: ../data/glade/advanced_notifications_window.glade.h:1 +msgid " a window/tab opened with that contact " +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:2 +#, fuzzy +msgid "Actions" +msgstr "Poelladoù" + +#: ../data/glade/advanced_notifications_window.glade.h:3 +#, fuzzy +msgid "Conditions" +msgstr "Sonioù" + +#: ../data/glade/advanced_notifications_window.glade.h:4 +#: ../data/glade/preferences_window.glade.h:10 +msgid "Sounds" +msgstr "Sonioù" + +#: ../data/glade/advanced_notifications_window.glade.h:5 +#, fuzzy +msgid "Add" +msgstr "Chomlec'h" + +#: ../data/glade/advanced_notifications_window.glade.h:6 +#, fuzzy +msgid "Advanced Actions" +msgstr "Actions a_vancées" + +#: ../data/glade/advanced_notifications_window.glade.h:7 +#, fuzzy +msgid "Advanced Notifications Control" +msgstr "Aozer kefluniañ dre ar munut" + +#: ../data/glade/advanced_notifications_window.glade.h:8 +#, fuzzy +msgid "All Status " +msgstr "Stad:" + +#: ../data/glade/advanced_notifications_window.glade.h:9 +msgid "And I " +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:10 +#, fuzzy +msgid "Away " +msgstr "Ezvezant" + +#: ../data/glade/advanced_notifications_window.glade.h:11 +msgid "Busy " +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:12 +msgid "Don't have " +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:13 +#, fuzzy +msgid "Down" +msgstr "Pellgargañ" + +#: ../data/glade/advanced_notifications_window.glade.h:14 +msgid "Have " +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:15 +#: ../src/common/helpers.py:239 +msgid "Invisible" +msgstr "Diwelus" + +#: ../data/glade/advanced_notifications_window.glade.h:16 +#, fuzzy +msgid "Launch a command" +msgstr "urzhiad" + +#: ../data/glade/advanced_notifications_window.glade.h:17 +#, fuzzy +msgid "List of special notifications settings" +msgstr "Oc'h ouzhpennañ ur gelaouenn nevez evit %s" + +#: ../data/glade/advanced_notifications_window.glade.h:18 +#, fuzzy +msgid "Not Available " +msgstr "Dihegerz" + +#: ../data/glade/advanced_notifications_window.glade.h:19 +#, fuzzy +msgid "Online / Free For Chat" +msgstr "Prest da flapiñ" + +#: ../data/glade/advanced_notifications_window.glade.h:20 +#, fuzzy +msgid "Play a sound" +msgstr "_Seniñ" + +#: ../data/glade/advanced_notifications_window.glade.h:21 +msgid "" +"Receive a Message\n" +"Contact Connected\n" +"Contact Disconnected\n" +"Contact Change Status\n" +"Group Chat Message Highlight\n" +"Group Chat Message Received\n" +"File Transfert Resquest\n" +"File Transfert Started\n" +"File Transfert Finished" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:30 +msgid "Some special(s) status..." +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:31 +msgid "Up" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:32 +msgid "When " +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:33 +msgid "_Activate Windows manager UrgencyHint to make chat taskbar to flash" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:34 +#, fuzzy +msgid "_Disable auto opening chat window" +msgstr "A guzha an nozelennoù er prenestroù webgaoz" + +#: ../data/glade/advanced_notifications_window.glade.h:35 +msgid "_Disable existing popup window" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:36 +msgid "_Disable existing sound for this event" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:37 +msgid "_Disable showing event in roster" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:38 +msgid "_Disable showing event in systray" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:39 +msgid "_Inform me with a popup window" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:40 +#, fuzzy +msgid "_Open chat window with user" +msgstr "Utiliser une seule fenê_tre de discussion avec des onglets" + +#: ../data/glade/advanced_notifications_window.glade.h:41 +#, fuzzy +msgid "_Show event in roster" +msgstr "Diskouez er _roll hepken" + +#: ../data/glade/advanced_notifications_window.glade.h:42 +#, fuzzy +msgid "_Show event in systray" +msgstr "Diskouez er _roll hepken" + +#: ../data/glade/advanced_notifications_window.glade.h:43 +msgid "" +"contact(s)\n" +"group(s)\n" +"everybody" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:46 +#, fuzzy +msgid "for " +msgstr "Porzh:" + +#: ../data/glade/advanced_notifications_window.glade.h:47 +msgid "when I'm " +msgstr "" + +#: ../data/glade/change_password_dialog.glade.h:1 +msgid "Change Password" +msgstr "Cheñch ar ger-kuzh" + +#: ../data/glade/change_password_dialog.glade.h:2 +msgid "Enter it again for confirmation:" +msgstr "Roit anezhañ en-dro evit kadarnaat:" + +#: ../data/glade/change_password_dialog.glade.h:3 +msgid "Enter new password:" +msgstr "Roit ur ger-kuzh nevez:" + +#: ../data/glade/change_status_message_dialog.glade.h:1 +msgid "Type your new status message" +msgstr "Roit un titour-stad nevez" + +#: ../data/glade/change_status_message_dialog.glade.h:2 +msgid "Preset messages:" +msgstr "Kemennadennoù raklakaet:" + +#: ../data/glade/change_status_message_dialog.glade.h:3 +#, fuzzy +msgid "Save as Preset..." +msgstr "Enrollañ evel raklakaet..." + +#: ../data/glade/chat_context_menu.glade.h:1 +msgid "Join _Group Chat" +msgstr "Ebarzhiñ ur _webgaoz" + +#: ../data/glade/chat_context_menu.glade.h:2 +#: ../data/glade/chat_control_popup_menu.glade.h:4 +#: ../data/glade/gc_occupants_menu.glade.h:2 +#: ../data/glade/roster_contact_context_menu.glade.h:8 +msgid "_Add to Roster" +msgstr "_Ouzhpennañ er roll" + +#: ../data/glade/chat_context_menu.glade.h:3 +msgid "_Copy JID/Email Address" +msgstr "_Kopiañ ar JID/Chomlec'h postel" + +#: ../data/glade/chat_context_menu.glade.h:4 +msgid "_Copy Link Location" +msgstr "_Kopiañ chomlec'h an ere" + +#: ../data/glade/chat_context_menu.glade.h:5 +msgid "_Open Email Composer" +msgstr "_Digeriñ ar bostelerez" + +#: ../data/glade/chat_context_menu.glade.h:6 +msgid "_Open Link in Browser" +msgstr "_Digerién an ere er furcher web" + +#: ../data/glade/chat_context_menu.glade.h:7 +#: ../data/glade/roster_window.glade.h:19 +#: ../data/glade/systray_context_menu.glade.h:6 +msgid "_Start Chat" +msgstr "_Kregiñ da flapiñ" + +#: ../data/glade/chat_control_popup_menu.glade.h:1 +msgid "Click to see past conversations with this contact" +msgstr "Klikit amañ evit gwelout kaozioù kent gant an darempred-mañ" + +#: ../data/glade/chat_control_popup_menu.glade.h:2 +#: ../data/glade/roster_contact_context_menu.glade.h:6 +msgid "Send _File" +msgstr "Kas ur _restr" + +#: ../data/glade/chat_control_popup_menu.glade.h:3 +msgid "Toggle Open_PGP Encryption" +msgstr "" + +#: ../data/glade/chat_control_popup_menu.glade.h:5 +#: ../data/glade/gc_control_popup_menu.glade.h:6 +msgid "_Compact View Alt+C" +msgstr "" + +#: ../data/glade/chat_control_popup_menu.glade.h:6 +#: ../data/glade/gc_control_popup_menu.glade.h:7 +#: ../data/glade/gc_occupants_menu.glade.h:5 +#: ../data/glade/roster_contact_context_menu.glade.h:11 +msgid "_History" +msgstr "_Istoradur" + +#: ../data/glade/data_form_window.glade.h:1 +msgid "Room Configuration" +msgstr "Kefluniañ ar webgaoz" + +#: ../data/glade/edit_groups_dialog.glade.h:1 +msgid "Edit Groups" +msgstr "Kemmañ ar strolladoù" + +#: ../data/glade/filetransfers.glade.h:1 +msgid "A list of active, completed and stopped file transfers" +msgstr "Ur roll eus an treuzkasoù oberiant, echu pe arsavet" + +#: ../data/glade/filetransfers.glade.h:2 +msgid "Cancel file transfer" +msgstr "Nullañ an treuzkas" + +#: ../data/glade/filetransfers.glade.h:3 +msgid "Cancels the selected file transfer" +msgstr "A nulla an treuzkas dibabet" + +#: ../data/glade/filetransfers.glade.h:4 +msgid "Cancels the selected file transfer and removes incomplete file" +msgstr "A nulla an treuzkas dibabet hag a zilam ar restr diglok" + +#: ../data/glade/filetransfers.glade.h:5 +msgid "Clean _up" +msgstr "_Naetaat" + +#: ../data/glade/filetransfers.glade.h:6 +msgid "File Transfers" +msgstr "Treuzkasoù" + +#: ../data/glade/filetransfers.glade.h:7 +msgid "Hides the window" +msgstr "A guzha ar prenestr" + +#: ../data/glade/filetransfers.glade.h:8 +msgid "Remove file transfer from the list." +msgstr "Dilemel an treuzkas restroù diwar ar roll" + +#: ../data/glade/filetransfers.glade.h:9 +msgid "Removes completed, canceled and failed file transfers from the list" +msgstr "Diverkañ an treuzkasadoù echu, nullaet pe sac'het" + +#: ../data/glade/filetransfers.glade.h:10 +msgid "Shows a list of file transfers between you and other" +msgstr "A ziskouez ur roll eus an dreuzkasoù etrezoc'h hag ar re all" + +#: ../data/glade/filetransfers.glade.h:11 +msgid "" +"This action removes single file transfer from the list. If the transfer is " +"active, it is first stopped and then removed" +msgstr "" +"An ober-mañ a zilam an treuzkasoù diouzh ar roll. Ma 'z eus un treuzkas " +"oberiant, e vo arsavet anezhañ ha dilamet da c'houde" + +#: ../data/glade/filetransfers.glade.h:12 +msgid "When a file transfer is complete show a popup notification" +msgstr "P'eo echu un treuzkas, diskouez ur gemennadenn gelaouiñ difoupus" + +#: ../data/glade/filetransfers.glade.h:13 ../src/filetransfers_window.py:753 +msgid "_Continue" +msgstr "_Kenderc'hel" + +#: ../data/glade/filetransfers.glade.h:14 +msgid "_Notify me when a file transfer is complete" +msgstr "_Kelaouiñ ac'hanon p'eo echu un treuzkas" + +#: ../data/glade/filetransfers.glade.h:15 ../src/filetransfers_window.py:190 +msgid "_Open Containing Folder" +msgstr "_Digeriñ ar renkell pal" + +#: ../data/glade/filetransfers.glade.h:16 +msgid "_Pause" +msgstr "_Ehan" + +#: ../data/glade/filetransfers.glade.h:17 +msgid "file transfers list" +msgstr "roll an treuzkasadoù" + +#: ../data/glade/gajim_themes_window.glade.h:1 +msgid "Chatstate Tab Colors" +msgstr "Liv-stad an ivinelloù" + +#: ../data/glade/gajim_themes_window.glade.h:2 +msgid "" +"Account\n" +"Group\n" +"Contact\n" +"Banner" +msgstr "" +"Kont\n" +"Strollad\n" +"Darempred\n" +"Titl" + +#: ../data/glade/gajim_themes_window.glade.h:6 +#: ../data/glade/privacy_list_edit_window.glade.h:4 ../src/config.py:326 +msgid "Active" +msgstr "Oberiant" + +#: ../data/glade/gajim_themes_window.glade.h:7 +msgid "Bold" +msgstr "Tev" + +#: ../data/glade/gajim_themes_window.glade.h:8 +msgid "Composing" +msgstr "O skrivañ" + +#: ../data/glade/gajim_themes_window.glade.h:9 +msgid "Font style:" +msgstr "Neuz an nodrezh:" + +#: ../data/glade/gajim_themes_window.glade.h:10 +msgid "Gajim Themes Customization" +msgstr "Personelaat gwiskadurioù Gajim" + +#: ../data/glade/gajim_themes_window.glade.h:11 +msgid "Gone" +msgstr "Aet kuit" + +#: ../data/glade/gajim_themes_window.glade.h:12 +msgid "Inactive" +msgstr "Dizoberiant" + +#: ../data/glade/gajim_themes_window.glade.h:13 +msgid "Italic" +msgstr "Stouet" + +#: ../data/glade/gajim_themes_window.glade.h:14 +msgid "" +"MUC\n" +"Messages" +msgstr "" +"Kemennadennoù\n" +"webgaoz" + +#: ../data/glade/gajim_themes_window.glade.h:16 +msgid "" +"MUC Directed\n" +"Messages" +msgstr "" +"Kemennadennoù\n" +"kaset davet\n" +"webkaozioù" + +#: ../data/glade/gajim_themes_window.glade.h:18 ../src/tooltips.py:667 +msgid "Paused" +msgstr "Ehan" + +#: ../data/glade/gajim_themes_window.glade.h:19 +msgid "Text _color:" +msgstr "_Liv ar skrid:" + +#: ../data/glade/gajim_themes_window.glade.h:20 +msgid "Text _font:" +msgstr "_Nodrezh ar skrid:" + +#: ../data/glade/gajim_themes_window.glade.h:21 +msgid "_Background:" +msgstr "_Drekleur:" + +#: ../data/glade/gc_control_popup_menu.glade.h:1 +msgid "Change _Nickname" +msgstr "Cheñch _lesanv" + +#: ../data/glade/gc_control_popup_menu.glade.h:2 +msgid "Change _Subject" +msgstr "Kemmañ ar _sujed" + +#: ../data/glade/gc_control_popup_menu.glade.h:3 +msgid "Click to see past conversation in this room" +msgstr "Klikit amañ evit gwelout kaozioù kent ar flap-mañ" + +#: ../data/glade/gc_control_popup_menu.glade.h:4 +msgid "Configure _Room" +msgstr "Ke_fluniañ ar flap" + +#: ../data/glade/gc_control_popup_menu.glade.h:5 +msgid "_Bookmark This Room" +msgstr "_Ouzhpennañ ar webgaoz d'ar sinedoù" + +#: ../data/glade/gc_occupants_menu.glade.h:1 +msgid "Mo_derator" +msgstr "Ka_sour-ez" + +#: ../data/glade/gc_occupants_menu.glade.h:3 +msgid "_Admin" +msgstr "_Merour-ez" + +#: ../data/glade/gc_occupants_menu.glade.h:4 +msgid "_Ban" +msgstr "_Argas" + +#: ../data/glade/gc_occupants_menu.glade.h:6 +msgid "_Kick" +msgstr "_Ermaeziañ" + +#: ../data/glade/gc_occupants_menu.glade.h:7 +msgid "_Member" +msgstr "_Ezel" + +#: ../data/glade/gc_occupants_menu.glade.h:8 +msgid "_Occupant Actions" +msgstr "_Galloudoù an darempred" + +#: ../data/glade/gc_occupants_menu.glade.h:9 +msgid "_Owner" +msgstr "_Perc'hener-ez" + +#: ../data/glade/gc_occupants_menu.glade.h:10 +msgid "_Send Private Message" +msgstr "_Kas ur gemennadenn brevez" + +#: ../data/glade/gc_occupants_menu.glade.h:11 +msgid "_Voice" +msgstr "" + +#: ../data/glade/history_manager.glade.h:1 +msgid "" +"Welcome to Gajim History Logs Manager\n" +"\n" +"You can select logs from the left and/or search database from below.\n" +"\n" +"WARNING:\n" +"If you plan to do massive deletions, please make sure Gajim is not running. " +"Generally avoid deletions with contacts you currently chat with." +msgstr "" + +#: ../data/glade/history_manager.glade.h:7 +msgid "Delete" +msgstr "Dilemel" + +#: ../data/glade/history_manager.glade.h:8 +msgid "Export" +msgstr "Ezporzhiañ" + +#: ../data/glade/history_manager.glade.h:9 +msgid "Gajim History Logs Manager" +msgstr "Merour istoradur Gajim" + +#: ../data/glade/history_manager.glade.h:10 +msgid "_Search Database" +msgstr "_Klask en titourva" + +#: ../data/glade/history_window.glade.h:1 +msgid "Build custom query" +msgstr "Krouiñ ur goulenn personelaet" + +#: ../data/glade/history_window.glade.h:2 +msgid "Conversation History" +msgstr "Istoradur ar gaoz" + +#: ../data/glade/history_window.glade.h:3 +msgid "Query Builder..." +msgstr "Krouiñ ur goulenn..." + +#: ../data/glade/history_window.glade.h:4 +msgid "Search" +msgstr "Klask" + +#: ../data/glade/history_window.glade.h:5 +msgid "_Search" +msgstr "_Klask" + +#: ../data/glade/invitation_received_dialog.glade.h:1 +msgid "Accept" +msgstr "Asantiñ" + +#: ../data/glade/invitation_received_dialog.glade.h:2 +#: ../data/glade/privacy_list_edit_window.glade.h:8 +msgid "Deny" +msgstr "Nac'hañ" + +#: ../data/glade/invitation_received_dialog.glade.h:3 +msgid "Invitation Received" +msgstr "Resevet ar bedadenn" + +#: ../data/glade/join_groupchat_window.glade.h:1 ../src/dialogs.py:941 +msgid "Join Group Chat" +msgstr "Ebarzhiñ ur sal-flapiñ" + +#: ../data/glade/join_groupchat_window.glade.h:2 +#: ../data/glade/manage_bookmarks_window.glade.h:4 +#: ../data/glade/vcard_information_window.glade.h:28 +msgid "Nickname:" +msgstr "Lesanv:" + +#: ../data/glade/join_groupchat_window.glade.h:3 +#: ../data/glade/manage_bookmarks_window.glade.h:5 +msgid "Password:" +msgstr "Ger-kuzh:" + +#: ../data/glade/join_groupchat_window.glade.h:4 +msgid "Recently:" +msgstr "Nevez 'zo:" + +#: ../data/glade/join_groupchat_window.glade.h:5 +#: ../data/glade/manage_bookmarks_window.glade.h:7 +msgid "Room:" +msgstr "Webgaoz:" + +#: ../data/glade/join_groupchat_window.glade.h:6 +#: ../data/glade/manage_bookmarks_window.glade.h:8 +msgid "Server:" +msgstr "Servijer:" + +#: ../data/glade/join_groupchat_window.glade.h:7 ../src/disco.py:1145 +#: ../src/disco.py:1507 +msgid "_Join" +msgstr "E_barzhiñ" + +#: ../data/glade/manage_accounts_window.glade.h:1 +msgid "Manage Accounts" +msgstr "Merañ ar c'hontoù" + +#: ../data/glade/manage_bookmarks_window.glade.h:1 +msgid "Auto join" +msgstr "" + +#: ../data/glade/manage_bookmarks_window.glade.h:2 +msgid "If checked, Gajim will join this group chat on startup" +msgstr "Si cette case est cochée, Gajim se connectera à ce salon au démarrage" + +#: ../data/glade/manage_bookmarks_window.glade.h:3 +msgid "Manage Bookmarks" +msgstr "Merañ ar sinedoù" + +#: ../data/glade/manage_bookmarks_window.glade.h:6 +#, fuzzy +msgid "Print status:" +msgstr "Diskouez an eur:" + +#: ../data/glade/manage_bookmarks_window.glade.h:9 +msgid "Title:" +msgstr "Titl:" + +#: ../data/glade/manage_proxies_window.glade.h:1 +msgid "Properties" +msgstr "Perzhioù" + +#: ../data/glade/manage_proxies_window.glade.h:2 +msgid "Settings" +msgstr "Dibarzhioù" + +#: ../data/glade/manage_proxies_window.glade.h:3 +msgid "HTTP Connect" +msgstr "Kevreadenn HTTP" + +#: ../data/glade/manage_proxies_window.glade.h:4 +msgid "Manage Proxy Profiles" +msgstr "Merañ an aeladoù proksi" + +#: ../data/glade/manage_proxies_window.glade.h:5 +#: ../data/glade/vcard_information_window.glade.h:27 +msgid "Name:" +msgstr "Anv:" + +#: ../data/glade/manage_proxies_window.glade.h:7 +msgid "Type:" +msgstr "Doare:" + +#: ../data/glade/manage_proxies_window.glade.h:8 +msgid "Use authentication" +msgstr "Implij an diskleriañ" + +#: ../data/glade/message_window.glade.h:1 +msgid "Click to insert an emoticon (Alt+M)" +msgstr "Klikit evit enlakaat ur boulomell (Alt+M)" + +#: ../data/glade/message_window.glade.h:2 ../src/chat_control.py:966 +msgid "OpenPGP Encryption" +msgstr "Encryption OpenPGP" + +#. Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector) +#: ../data/glade/message_window.glade.h:4 +#: ../data/glade/roster_window.glade.h:9 +msgid "_Actions" +msgstr "_Oberoù" + +#. Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector) +#: ../data/glade/message_window.glade.h:6 +#: ../data/glade/xml_console_window.glade.h:11 +#: ../src/filetransfers_window.py:249 +msgid "_Send" +msgstr "_Kas" + +#: ../data/glade/passphrase_dialog.glade.h:1 +msgid "Passphrase" +msgstr "Ger-kuzh" + +#: ../data/glade/preferences_window.glade.h:1 +msgid "Advanced Configuration Editor" +msgstr "Aozer kefluniañ munut" + +#: ../data/glade/preferences_window.glade.h:2 +msgid "Applications" +msgstr "Poelladoù" + +#. a header for custom browser/client/file manager. so translate sth like: Custom Settings +#: ../data/glade/preferences_window.glade.h:4 +msgid "Custom" +msgstr "Personelaet" + +#: ../data/glade/preferences_window.glade.h:5 +msgid "Format of a line" +msgstr "Furmad ul linenn" + +#: ../data/glade/preferences_window.glade.h:6 +#, fuzzy +msgid "GMail Options" +msgstr "Poelladoù" + +#: ../data/glade/preferences_window.glade.h:7 +msgid "Interface Customization" +msgstr "Personelaat an etrefas" + +#: ../data/glade/preferences_window.glade.h:9 +msgid "Preset Status Messages" +msgstr "Titouroù-stad raklakaet" + +#: ../data/glade/preferences_window.glade.h:11 +msgid "Visual Notifications" +msgstr "Kelaouennoù dre welet" + +#: ../data/glade/preferences_window.glade.h:12 +msgid "A_fter nickname:" +msgstr "Da _heul al lesanv:" + +#: ../data/glade/preferences_window.glade.h:13 +msgid "Advanced" +msgstr "Dre ar munut" + +#: ../data/glade/preferences_window.glade.h:14 +msgid "" +"All chat states\n" +"Composing only\n" +"Disabled" +msgstr "" +"An holl stadoù\n" +"O skrivañ hepken\n" +"Lazhet" + +#: ../data/glade/preferences_window.glade.h:17 +msgid "Allow _OS information to be sent" +msgstr "Aotren e vefe kaset titouroù diwar-benn an _OS" + +#: ../data/glade/preferences_window.glade.h:18 +msgid "Allow popup/notifications when I'm _away/na/busy/invisible" +msgstr "Aotren ar c'helaouennoù p'emaon _ezvezant/dihegerz/busy/diwelus" + +#: ../data/glade/preferences_window.glade.h:19 +msgid "Also known as iChat style" +msgstr "Anvet ivez stil iChat" + +#: ../data/glade/preferences_window.glade.h:20 +msgid "Ask status message when I:" +msgstr "Goulenn an titour-stad pa:" + +#: ../data/glade/preferences_window.glade.h:21 +msgid "Auto _away after:" +msgstr "Bezañ lakaet da _ezvezant war-lerc'h:" + +#: ../data/glade/preferences_window.glade.h:22 +msgid "Auto _not available after:" +msgstr "Bezañ lakaet evel _dihegerz war-lerc'h:" + +#: ../data/glade/preferences_window.glade.h:23 +msgid "" +"Autodetect on every Gajim startup\n" +"Always use GNOME default applications\n" +"Always use KDE default applications\n" +"Custom" +msgstr "" +"Détection automatique à chaque démarrage\n" +"Toujours utiliser les applications par défaut de GNOME\n" +"Toujours utiliser les applications par défaut de KDE\n" +"Personnalisé" + +#: ../data/glade/preferences_window.glade.h:27 +msgid "B_efore nickname:" +msgstr "_A-raok al lesanv:" + +#: ../data/glade/preferences_window.glade.h:28 ../src/chat_control.py:718 +msgid "Chat" +msgstr "Flap" + +#: ../data/glade/preferences_window.glade.h:29 +msgid "Chat state noti_fications:" +msgstr "Titou_roù-stad ar flap:" + +#: ../data/glade/preferences_window.glade.h:30 +msgid "" +"Check this option, only if someone you don't have in the roster spams/annoys " +"you. Use with caution, cause it blocks all messages from any contact that is " +"not in the roster" +msgstr "" +"Cochez cette option seulement si quelqu'un n'appartenant pas à votre liste " +"vous spamme/ennuie. Utilisez la avec précaution, car elle bloque tous les " +"messages des contacts qui ne sont pas dans votre liste" + +#: ../data/glade/preferences_window.glade.h:31 +msgid "Default status _iconset:" +msgstr "_Arlunioù-stad dre-ziouer:" + +#: ../data/glade/preferences_window.glade.h:32 +msgid "Display _extra email details" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:33 +msgid "Display a_vatars of contacts in roster" +msgstr "Diskouez _skeudennigoù an darempredoù er roll" + +#: ../data/glade/preferences_window.glade.h:34 +msgid "Display status _messages of contacts in roster" +msgstr "Diskouez titouroù-stad an darempredoù e-barzh ar roll" + +#: ../data/glade/preferences_window.glade.h:35 +msgid "E_very 5 minutes" +msgstr "_Bep 5 munutenn" + +#: ../data/glade/preferences_window.glade.h:36 +msgid "Emoticons:" +msgstr "Boulomelloù:" + +#: ../data/glade/preferences_window.glade.h:37 +msgid "Events" +msgstr "Darvoudoù" + +#: ../data/glade/preferences_window.glade.h:38 +msgid "" +"Gajim can send and receive meta-information related to a conversation you " +"may have with a contact. Here you can specify which chatstates you want to " +"send to the other party." +msgstr "" +"Gajim peut envoyer et recevoir des meta-informations concernant les " +"conversations que vous pouvez avoir avec un contact. Vous pouvez ici " +"spécifier quel état de conversation vous voulez envoyer à vos contacts" + +#: ../data/glade/preferences_window.glade.h:39 +msgid "" +"Gajim will automatically show new events by poping up the relative window" +msgstr "" +"Gajim montrera automatiquement les nouveaux évènements reçus en montrant la " +"fenêtre correspondante" + +#: ../data/glade/preferences_window.glade.h:40 +msgid "" +"Gajim will notify you for new events via a popup in the bottom right of the " +"screen" +msgstr "" +"Gajim vous signalera les nouveaux évènements dans une fenêtre en bas à " +"droite de l'écran" + +#: ../data/glade/preferences_window.glade.h:41 +msgid "" +"Gajim will notify you via a popup window in the bottom right of the screen " +"about contacts that just signed in" +msgstr "" +"Gajim vous signalera par une fenêtre de notification en bas à droite de " +"l'écran qu'un contact s'est connecté" + +#: ../data/glade/preferences_window.glade.h:42 +msgid "" +"Gajim will notify you via a popup window in the bottom right of the screen " +"about contacts that just signed out" +msgstr "" +"Gajim vous signalera par une fenêtre de notification en bas à droite de " +"l'écran qu'un contact s'est déconnecté" + +#: ../data/glade/preferences_window.glade.h:43 +msgid "" +"Gajim will only change the icon of the contact that triggered the new event" +msgstr "" +"Gajim ne fera que changer l'icône du contact qui a envoyé le nouvel évènement" + +#: ../data/glade/preferences_window.glade.h:45 +msgid "" +"If checked, Gajim will display avatars of contacts in roster window and in " +"group chats" +msgstr "" +"Si cette case est cochée, Gajim affichera l'avatar de chaque contact dans la " +"fenêtre principale et les salons" + +#: ../data/glade/preferences_window.glade.h:46 +msgid "" +"If checked, Gajim will display status messages of contacts under the contact " +"name in roster window and in group chats" +msgstr "" +"Si cette case est cochée, Gajim affichera le message d'état, sous le nom de " +"chaque contact dans la fenêtre principale et les salons" + +#: ../data/glade/preferences_window.glade.h:47 +msgid "" +"If checked, Gajim will remember the roster and chat window positions in the " +"screen and the sizes of them next time you run it" +msgstr "" +"Si cette case est cochée, Gajim va retenir la position de votre liste " +"decontacts et des fenêtres de discussion pour vos prochaines utilisations" + +#: ../data/glade/preferences_window.glade.h:48 +msgid "" +"If checked, Gajim will use protocol-specific status icons. (eg. A contact " +"from MSN will have the equivalent msn icon for status online, away, busy, " +"etc...)" +msgstr "" +"Si cette case est cochée, Gajim utilisera des icônes d'état spécifiques aux " +"protocoles. (Par ex. un contact MSN aura les icônes de MSN pour les états " +"disponible, absent, occupé, etc)" + +#: ../data/glade/preferences_window.glade.h:49 +msgid "" +"If not disabled, Gajim will replace ascii smilies like ':)' with equivalent " +"animated or static graphical emoticons" +msgstr "" +"M'eo lazhet, ne vo ket erlec'hiet ar voulomelloù ascii doare ':)' gant " +"boulomelloù grafikel fiñv pe difiñv" + +#: ../data/glade/preferences_window.glade.h:50 +msgid "Ma_nage..." +msgstr "Me_rañ..." + +#: ../data/glade/preferences_window.glade.h:51 +msgid "" +"Never\n" +"Always\n" +"Per account\n" +"Per type" +msgstr "" +"Morse\n" +"Atav\n" +"Dre gont\n" +"Dre zoare" + +#: ../data/glade/preferences_window.glade.h:55 +msgid "Notify me about contacts that: " +msgstr "Ma c'helaouiñ pa c'hoarvez gant un darempred:" + +#: ../data/glade/preferences_window.glade.h:56 +#, fuzzy +msgid "Notify on new _GMail email" +msgstr "Ma c'helaouiñ evit ar c'hemennadennoù _Gmail nevez" + +#: ../data/glade/preferences_window.glade.h:57 +msgid "On every _message" +msgstr "Da _bep kemennadenn:" + +#: ../data/glade/preferences_window.glade.h:58 +msgid "One message _window:" +msgstr "Ur prenestr-flapiñ:" + +#: ../data/glade/preferences_window.glade.h:59 +msgid "Play _sounds" +msgstr "_Seniñ" + +#: ../data/glade/preferences_window.glade.h:60 +msgid "Preferences" +msgstr "Penndibaboù" + +#: ../data/glade/preferences_window.glade.h:61 +msgid "Print time:" +msgstr "Diskouez an eur:" + +#: ../data/glade/preferences_window.glade.h:62 +msgid "Save _position and size for roster and chat windows" +msgstr "_Mirout lec'hiadur ha ment ar roll hag ar prenistri-flapiñ" + +#: ../data/glade/preferences_window.glade.h:63 +msgid "Show only in _roster" +msgstr "Diskouez er _roll hepken" + +#: ../data/glade/preferences_window.glade.h:64 +msgid "Sign _in" +msgstr "_Lugañ" + +#: ../data/glade/preferences_window.glade.h:65 +msgid "Sign _out" +msgstr "_Dilugañ" + +#: ../data/glade/preferences_window.glade.h:66 +msgid "Status" +msgstr "Stad" + +#: ../data/glade/preferences_window.glade.h:67 +msgid "T_heme:" +msgstr "_Gwiskadur:" + +#: ../data/glade/preferences_window.glade.h:68 +msgid "The auto away status message" +msgstr "An emc'hemennadenn evit ar stad \"Ezvezant\"" + +#: ../data/glade/preferences_window.glade.h:69 +msgid "The auto not available status message" +msgstr "An emc'hemennadenn evit ar stad \"Dihegerz\"" + +#: ../data/glade/preferences_window.glade.h:70 +msgid "Use _transports iconsets" +msgstr "Implij arlunioù an _dorioù" + +#: ../data/glade/preferences_window.glade.h:71 +msgid "Use system _default" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:72 +msgid "Use t_rayicon (aka. notification area icon)" +msgstr "_Implij an arlun-gelaouiñ (trayicon)" + +#: ../data/glade/preferences_window.glade.h:73 +msgid "" +"When a new event (message, file transfer request etc..) is received, the " +"following methods may be used to inform you about it. Please note that " +"events about new messages only occur if it is a new message from a contact " +"you are not already chatting with" +msgstr "" +"Pa resevit un darvoud nevez (kemennadenn, goulenn treuzkas h.a.), ez eus tu " +"implij an doareoù da heul evit kelaouién ac'hanoc'h. Deoc'h da c'houzout, " +"ec'h erru darvoudoù evit kemennadennoù nevez m'int bet kaset gant un " +"darempred n'emaoc'h ket o flapién gant-añ/-i." + +#: ../data/glade/preferences_window.glade.h:74 +msgid "When new event is received" +msgstr "Pa resever un darvoud nevez" + +#: ../data/glade/preferences_window.glade.h:75 +#, fuzzy +msgid "_Advanced Notifications Control..." +msgstr "Aozer kefluniañ dre ar munut" + +#: ../data/glade/preferences_window.glade.h:76 +msgid "_After time:" +msgstr "_War-lerc'h an eur:" + +#: ../data/glade/preferences_window.glade.h:77 +msgid "_Before time:" +msgstr "_A-raok an eur:" + +#: ../data/glade/preferences_window.glade.h:78 +msgid "_Browser:" +msgstr "_Furcher web:" + +#: ../data/glade/preferences_window.glade.h:79 +msgid "_File manager:" +msgstr "Merour _restroù:" + +#: ../data/glade/preferences_window.glade.h:80 +msgid "_Font:" +msgstr "_Nodrezh:" + +#: ../data/glade/preferences_window.glade.h:81 +msgid "_Highlight misspelled words" +msgstr "_Islinennañ ar fazioù reizhskrivañ" + +#: ../data/glade/preferences_window.glade.h:82 +msgid "_Ignore events from contacts not in the roster" +msgstr "_Chom hep teurel pled eus ar c'hemennadennoù kaset gant tud dianav" + +#: ../data/glade/preferences_window.glade.h:83 +msgid "_Incoming message:" +msgstr "Kemennadenn o _tegouezhout:" + +#: ../data/glade/preferences_window.glade.h:84 +msgid "_Log status changes of contacts" +msgstr "_Menegiñ kemmoù stad an darempredoù e-barzh an istoradur" + +#: ../data/glade/preferences_window.glade.h:85 +msgid "_Mail client:" +msgstr "_Meziant posteliñ:" + +#: ../data/glade/preferences_window.glade.h:86 +msgid "_Never" +msgstr "_Morse" + +#: ../data/glade/preferences_window.glade.h:87 +msgid "_Notify me about it" +msgstr "_Kelaouiñ ac'hanon" + +#: ../data/glade/preferences_window.glade.h:88 +msgid "_Open..." +msgstr "_Digeriñ..." + +#: ../data/glade/preferences_window.glade.h:89 +msgid "_Outgoing message:" +msgstr "Kemennadenn o _vont 'maez:" + +#: ../data/glade/preferences_window.glade.h:90 +msgid "_Player:" +msgstr "_Soner:" + +#: ../data/glade/preferences_window.glade.h:91 +msgid "_Pop it up" +msgstr "Di_foupañ" + +#: ../data/glade/preferences_window.glade.h:92 +msgid "_Reset to Default Colors" +msgstr "_Distreiñ gant al livioù dre-ziouer" + +#: ../data/glade/preferences_window.glade.h:93 +msgid "_Sort contacts by status" +msgstr "_Urzhiañ an darempredoù hervez o stad" + +#: ../data/glade/preferences_window.glade.h:94 +msgid "_Status message:" +msgstr "_Titour-stad:" + +#: ../data/glade/preferences_window.glade.h:95 +msgid "_URL:" +msgstr "_URL :" + +#: ../data/glade/preferences_window.glade.h:96 +msgid "minutes" +msgstr "munutenn" + +#: ../data/glade/privacy_list_edit_window.glade.h:1 +msgid "Add / Edit a rule" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:2 +#, fuzzy +msgid "List of rules" +msgstr "Furmad ul linenn" + +#: ../data/glade/privacy_list_edit_window.glade.h:3 +msgid "Privacy List" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:5 ../src/config.py:2281 +msgid "All" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:6 +msgid "Allow" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:7 +#, fuzzy +msgid "Default" +msgstr "Dilemel" + +#: ../data/glade/privacy_list_edit_window.glade.h:9 +#, fuzzy +msgid "JabberID" +msgstr "ID Jabber:" + +#: ../data/glade/privacy_list_edit_window.glade.h:10 +#, fuzzy +msgid "Order:" +msgstr "Servijer:" + +#: ../data/glade/privacy_list_edit_window.glade.h:11 ../src/dialogs.py:1626 +#, fuzzy +msgid "Privacy List" +msgstr "Roll argas" + +#: ../data/glade/privacy_list_edit_window.glade.h:12 +#, fuzzy +msgid "all by subscription" +msgstr "_Koumanant" + +#: ../data/glade/privacy_list_edit_window.glade.h:13 +#, fuzzy +msgid "all in the group" +msgstr "Er strollad" + +#: ../data/glade/privacy_list_edit_window.glade.h:14 +msgid "" +"none\n" +"both\n" +"from\n" +"to" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:18 +#, fuzzy +msgid "to send me messages" +msgstr "Kas ur gemennadenn" + +#: ../data/glade/privacy_list_edit_window.glade.h:19 +msgid "to send me queries" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:20 +#, fuzzy +msgid "to send me status" +msgstr "Goulenn evit gwelet e/he stad" + +#: ../data/glade/privacy_list_edit_window.glade.h:21 +#, fuzzy +msgid "to view my status" +msgstr "He/E aotren da welet ma stad" + +#: ../data/glade/privacy_lists_first_window.glade.h:1 +msgid "Create your own Privacy Lists" +msgstr "" + +#: ../data/glade/privacy_lists_first_window.glade.h:2 +msgid "Server-based Privacy Lists" +msgstr "" + +#: ../data/glade/remove_account_window.glade.h:1 +msgid "What do you want to do?" +msgstr "Petra 'fell deoc'h ober ?" + +#: ../data/glade/remove_account_window.glade.h:2 +msgid "Remove account _only from Gajim" +msgstr "Dilemel ar gont diwar Gajim _hepken" + +#: ../data/glade/remove_account_window.glade.h:3 +msgid "Remove account from Gajim and from _server" +msgstr "Dilemel ar gont diwar Gajim ha diwar ar _servijer" + +#: ../data/glade/roster_contact_context_menu.glade.h:1 +#, fuzzy +msgid "A_sk to see his/her status" +msgstr "Goulenn evit gwelet e/he stad" + +#: ../data/glade/roster_contact_context_menu.glade.h:2 +msgid "Add Special _Notification" +msgstr "Ouzhpennañ ur gelaouenn _ispisial" + +#: ../data/glade/roster_contact_context_menu.glade.h:3 +msgid "Assign Open_PGP Key" +msgstr "" + +#: ../data/glade/roster_contact_context_menu.glade.h:4 +msgid "Edit _Groups" +msgstr "Kemmañ ar _strolladoù" + +#: ../data/glade/roster_contact_context_menu.glade.h:5 +#: ../data/glade/systray_context_menu.glade.h:1 +msgid "Send Single _Message" +msgstr "Kas ur gemennadenn _simpl" + +#: ../data/glade/roster_contact_context_menu.glade.h:7 +msgid "Start _Chat" +msgstr "Kregiñ da _flapiñ" + +#: ../data/glade/roster_contact_context_menu.glade.h:9 +#, fuzzy +msgid "_Allow him/her to see my status" +msgstr "He/E aotren da welet ma stad" + +#: ../data/glade/roster_contact_context_menu.glade.h:10 +#, fuzzy +msgid "_Forbid him/her to see my status" +msgstr "Difenn dezhañ/dezhi gwelet ma stad" + +#: ../data/glade/roster_contact_context_menu.glade.h:12 +#: ../src/roster_window.py:1482 +msgid "_Remove from Roster" +msgstr "_Dilemel diouzh ar roll" + +#: ../data/glade/roster_contact_context_menu.glade.h:13 +#: ../src/roster_window.py:1470 +msgid "_Rename" +msgstr "_Adenvel" + +#: ../data/glade/roster_contact_context_menu.glade.h:14 +msgid "_Subscription" +msgstr "_Koumanant" + +#: ../data/glade/roster_window.glade.h:1 +msgid "A_ccounts" +msgstr "_Kontoù" + +#: ../data/glade/roster_window.glade.h:2 +msgid "Add _Contact" +msgstr "Ouzhpennañ un _darempred" + +#: ../data/glade/roster_window.glade.h:3 +msgid "File _Transfers" +msgstr "_Treuzkasoù" + +#: ../data/glade/roster_window.glade.h:4 +msgid "Frequently Asked Questions (online)" +msgstr "Marc'had Ar Goulennoù (FAQ enlinenn)" + +#: ../data/glade/roster_window.glade.h:6 +msgid "Help online" +msgstr "Skoazell enlinenn" + +#: ../data/glade/roster_window.glade.h:7 +msgid "Profile, Avatar" +msgstr "Aelad, Avatar" + +#: ../data/glade/roster_window.glade.h:8 +msgid "Show _Offline Contacts" +msgstr "Diskouez an darempredoù _ezlinenn" + +#: ../data/glade/roster_window.glade.h:11 +msgid "_Contents" +msgstr "_Endalc'hadoù" + +#: ../data/glade/roster_window.glade.h:12 +msgid "_Discover Services" +msgstr "_Dizoleiñ ar servijoù" + +#: ../data/glade/roster_window.glade.h:13 ../src/disco.py:1252 +#: ../src/roster_window.py:1462 +msgid "_Edit" +msgstr "_Aozañ" + +#: ../data/glade/roster_window.glade.h:14 +msgid "_FAQ" +msgstr "_FAQ" + +#: ../data/glade/roster_window.glade.h:16 +msgid "_Help" +msgstr "_Skoazell" + +#: ../data/glade/roster_window.glade.h:17 +msgid "_Preferences" +msgstr "_Penndibaboù" + +#: ../data/glade/roster_window.glade.h:18 +msgid "_Quit" +msgstr "_Kuitaat" + +#: ../data/glade/service_discovery_window.glade.h:1 +msgid "G_o" +msgstr "_Mont" + +#: ../data/glade/service_discovery_window.glade.h:2 +msgid "_Address:" +msgstr "_Chomlec'h:" + +#: ../data/glade/service_discovery_window.glade.h:3 +msgid "_Filter:" +msgstr "_Sil:" + +#: ../data/glade/service_registration_window.glade.h:1 +msgid "Register to" +msgstr "En em enrollañ war" + +#: ../data/glade/service_registration_window.glade.h:2 +msgid "_Cancel" +msgstr "_Nullañ" + +#: ../data/glade/service_registration_window.glade.h:3 +msgid "_OK" +msgstr "_Mat eo" + +#: ../data/glade/single_message_window.glade.h:1 +msgid "0" +msgstr "0" + +#: ../data/glade/single_message_window.glade.h:2 +msgid "From:" +msgstr "Digant:" + +#: ../data/glade/single_message_window.glade.h:3 +msgid "Reply to this message" +msgstr "Respont d'ar gemennadenn-mañ" + +#: ../data/glade/single_message_window.glade.h:4 +msgid "Sen_d" +msgstr "_Kas" + +#: ../data/glade/single_message_window.glade.h:5 +msgid "Send message" +msgstr "Kas ur gemennadenn" + +#: ../data/glade/single_message_window.glade.h:6 +msgid "Send message and close window" +msgstr "Kas ar gemennadenn ha serriñ ar prenestr" + +#: ../data/glade/single_message_window.glade.h:7 +msgid "Subject:" +msgstr "Titl:" + +#: ../data/glade/single_message_window.glade.h:8 +msgid "To:" +msgstr "Da:" + +#: ../data/glade/single_message_window.glade.h:9 +msgid "_Reply" +msgstr "_Respont" + +#: ../data/glade/single_message_window.glade.h:10 +msgid "_Send & Close" +msgstr "_Kas & Serriñ" + +#: ../data/glade/subscription_request_window.glade.h:1 +msgid "Authorize contact so he can know when you're connected" +msgstr "Aotren an darempred da welet hag emaon kevreet pe get" + +#: ../data/glade/subscription_request_window.glade.h:2 +msgid "Contact _Info" +msgstr "_Titouroù" + +#: ../data/glade/subscription_request_window.glade.h:3 +msgid "Deny authorization from contact so he cannot know when you're connected" +msgstr "" +"Nac'hañ aotre an darempred evit ma ne welo ket hag eñ oc'h kevreet pe get" + +#: ../data/glade/subscription_request_window.glade.h:4 +msgid "Subscription Request" +msgstr "Goulenn koumanantiñ" + +#: ../data/glade/subscription_request_window.glade.h:5 +msgid "_Authorize" +msgstr "_Aotren" + +#: ../data/glade/subscription_request_window.glade.h:6 +msgid "_Deny" +msgstr "_Nac'hañ" + +#: ../data/glade/systray_context_menu.glade.h:2 +msgid "Show All Pending _Events" +msgstr "Diskouez an holl _zarvoudoù o c'hortoz" + +#: ../data/glade/systray_context_menu.glade.h:3 +msgid "Show _Roster" +msgstr "Diskouez ar _roll-darempredoù" + +#: ../data/glade/systray_context_menu.glade.h:4 +msgid "Sta_tus" +msgstr "S_tad" + +#. "About" is the text of a tab of vcard window +#: ../data/glade/vcard_information_window.glade.h:2 +msgid "About" +msgstr "Diwar-benn" + +#: ../data/glade/vcard_information_window.glade.h:3 +msgid "Address" +msgstr "Chomlec'h" + +#: ../data/glade/vcard_information_window.glade.h:4 +msgid "Ask:" +msgstr "Goulenn:" + +#: ../data/glade/vcard_information_window.glade.h:5 +msgid "Birthday:" +msgstr "Deiz-ha-bloaz:" + +#: ../data/glade/vcard_information_window.glade.h:6 +msgid "City:" +msgstr "Kêr:" + +#: ../data/glade/vcard_information_window.glade.h:7 +msgid "Client:" +msgstr "Poellad:" + +#: ../data/glade/vcard_information_window.glade.h:8 +msgid "Company:" +msgstr "Embregerezh:" + +#: ../data/glade/vcard_information_window.glade.h:9 +msgid "Contact Information" +msgstr "Titouroù" + +#: ../data/glade/vcard_information_window.glade.h:10 +msgid "Country:" +msgstr "Bro:" + +#: ../data/glade/vcard_information_window.glade.h:11 +msgid "Department:" +msgstr "Departamant:" + +#: ../data/glade/vcard_information_window.glade.h:12 +msgid "E-Mail:" +msgstr "Postel:" + +#: ../data/glade/vcard_information_window.glade.h:13 +msgid "Extra Address:" +msgstr "Chomlec'h 2:" + +#. Family Name +#: ../data/glade/vcard_information_window.glade.h:15 +msgid "Family:" +msgstr "Familh:" + +#: ../data/glade/vcard_information_window.glade.h:16 +msgid "Format: YYYY-MM-DD" +msgstr "Stumm : BBBB-MM-DD" + +#. Given Name +#: ../data/glade/vcard_information_window.glade.h:19 +msgid "Given:" +msgstr "Anv bihan:" + +#: ../data/glade/vcard_information_window.glade.h:20 +msgid "Homepage:" +msgstr "Lec'hienn hiniennel:" + +#: ../data/glade/vcard_information_window.glade.h:21 +msgid "Jabber" +msgstr "Jabber" + +#: ../data/glade/vcard_information_window.glade.h:22 +msgid "Jabber ID:" +msgstr "ID Jabber:" + +#: ../data/glade/vcard_information_window.glade.h:23 +msgid "Location" +msgstr "Chomlec'h" + +#. Middle Name +#: ../data/glade/vcard_information_window.glade.h:25 +msgid "Middle:" +msgstr "Eil anv bihan:" + +#: ../data/glade/vcard_information_window.glade.h:26 +msgid "More" +msgstr "Muioc'h" + +#: ../data/glade/vcard_information_window.glade.h:29 +msgid "OS:" +msgstr "OS:" + +#: ../data/glade/vcard_information_window.glade.h:30 +msgid "Phone No.:" +msgstr "Pellgomz:" + +#: ../data/glade/vcard_information_window.glade.h:31 +msgid "Position:" +msgstr "Plas:" + +#: ../data/glade/vcard_information_window.glade.h:32 +msgid "Postal Code:" +msgstr "Kod postel:" + +#. Prefix in Name +#: ../data/glade/vcard_information_window.glade.h:34 +msgid "Prefix:" +msgstr "Rakger:" + +#: ../data/glade/vcard_information_window.glade.h:35 +msgid "Resource:" +msgstr "" + +#: ../data/glade/vcard_information_window.glade.h:36 +msgid "Role:" +msgstr "Perzh:" + +#: ../data/glade/vcard_information_window.glade.h:37 +msgid "Set _Avatar" +msgstr "Dibab ur _skeudenn" + +#: ../data/glade/vcard_information_window.glade.h:38 +msgid "State:" +msgstr "Stad:" + +#: ../data/glade/vcard_information_window.glade.h:39 +msgid "Status:" +msgstr "Stad:" + +#: ../data/glade/vcard_information_window.glade.h:40 +msgid "Street:" +msgstr "Straed:" + +#: ../data/glade/vcard_information_window.glade.h:41 +msgid "Subscription:" +msgstr "Koumanant:" + +#. Suffix in Name +#: ../data/glade/vcard_information_window.glade.h:43 +msgid "Suffix:" +msgstr "Lostger:" + +#: ../data/glade/vcard_information_window.glade.h:44 +msgid "Work" +msgstr "Labour" + +#: ../data/glade/vcard_information_window.glade.h:45 +msgid "_Log conversation history" +msgstr "_Istoradur flapiñ" + +#: ../data/glade/vcard_information_window.glade.h:46 +msgid "_Publish" +msgstr "_Embann" + +#: ../data/glade/vcard_information_window.glade.h:47 +msgid "_Retrieve" +msgstr "_Kargañ" + +#: ../data/glade/xml_console_window.glade.h:1 +msgid "Jabber Traffic" +msgstr "" + +#: ../data/glade/xml_console_window.glade.h:2 +msgid "XML Input" +msgstr "" + +#. XML Console enable checkbutton +#: ../data/glade/xml_console_window.glade.h:4 +msgid "Enable" +msgstr "Enaouiñ" + +#. Info/Query make the "IQ" initials. So translate like this 'YourLang/YourLang (Info/Query)'. Thanks (it's a tooltip so width is not a problem) +#: ../data/glade/xml_console_window.glade.h:6 +msgid "Info/Query" +msgstr "Titour/Goulenn" + +#. Info/Query: all(?) jabber xml start with Whom do you want to ban?\n" +"\n" +msgstr "" +"Piv a fell deoc'h argas ?\n" +"\n" + +#: ../src/config.py:2062 +msgid "Adding Member..." +msgstr "Oc'h ouzhpennañ un ezel..." + +#: ../src/config.py:2063 +msgid "" +"Whom do you want to make a member?\n" +"\n" +msgstr "" +"Piv a fell deoc'h lakaat da ezel ?\n" +"\n" + +#: ../src/config.py:2065 +msgid "Adding Owner..." +msgstr "Oc'h ouzhpennañ ur perc'henn..." + +#: ../src/config.py:2066 +msgid "" +"Whom do you want to make a owner?\n" +"\n" +msgstr "" +"Piv a fell deoc'h lakaat da berc'henn ?\n" +"\n" + +#: ../src/config.py:2068 +msgid "Adding Administrator..." +msgstr "Oc'h ouzhpennañ ur v-merour-ez..." + +#: ../src/config.py:2069 +msgid "" +"Whom do you want to make an administrator?\n" +"\n" +msgstr "" +"Piv a fell deoc'h lakaat da verour-ez ?\n" +"\n" + +#: ../src/config.py:2070 +msgid "" +"Can be one of the following:\n" +"1. user@domain/resource (only that resource matches).\n" +"2. user@domain (any resource matches).\n" +"3. domain/resource (only that resource matches).\n" +"4. domain (the domain itself matches, as does any user@domain,\n" +"domain/resource, or address containing a subdomain." +msgstr "" +"A c'hell bezañ unan eus ar stummoù da heul :\n" +"1. lesanv@domani/resource(seulement cette ressource correspond).\n" +"2. pseudo@domaine (toutes les ressources correspondent).\n" +"3. domaine/ressources (seulement cette ressource correspond).\n" +"4. domaine (le domaine complet correspond, incluant tous les " +"pseudo@domaine,\n" +"domaine/ressource, ou les adresses comprenant un sous-domaine)." + +#: ../src/config.py:2166 +#, python-format +msgid "Removing %s account" +msgstr "Lemel ar gont %s" + +#: ../src/config.py:2183 ../src/roster_window.py:1857 +msgid "Password Required" +msgstr "Ger-kuzh ret" + +#: ../src/config.py:2184 ../src/roster_window.py:1858 +#, python-format +msgid "Enter your password for account %s" +msgstr "Roit ho ker-kuzh evit ar gont %s" + +#: ../src/config.py:2185 ../src/roster_window.py:1859 +msgid "Save password" +msgstr "Enrollañ ar ger-kuzh" + +#: ../src/config.py:2198 +#, python-format +msgid "Account \"%s\" is connected to the server" +msgstr "Luget eo ar gont \"%s\" d'ar servijer" + +#: ../src/config.py:2199 +msgid "If you remove it, the connection will be lost." +msgstr "Ma tilamit anezhañ, e voc'h diluget." + +#: ../src/config.py:2282 +msgid "Enter and leave only" +msgstr "" + +#: ../src/config.py:2352 +msgid "New Room" +msgstr "Sal-flapiñ nevez" + +#: ../src/config.py:2383 +msgid "This bookmark has invalid data" +msgstr "Bez ez eus titouroù direizh er sined-mañ" + +#: ../src/config.py:2384 +msgid "" +"Please be sure to fill out server and room fields or remove this bookmark." +msgstr "" +"Gwiriekait ho peus leuniet an takadoù servijer ha sal-flapiñ pe lamit ar " +"sined-mañ." + +#: ../src/config.py:2638 +msgid "Invalid username" +msgstr "Anv-arveriad-ez direizh" + +#: ../src/config.py:2639 +msgid "You must provide a username to configure this account." +msgstr "Rankout a rit reiñ un anv-arveriad-ez evit kefluniañ ar gont-mañ." + +#: ../src/config.py:2648 ../src/dialogs.py:1118 +msgid "Invalid password" +msgstr "Ger-kuzh direizh" + +#: ../src/config.py:2649 +msgid "You must enter a password for the new account." +msgstr "Rankout a rit reiñ ur ger-kuzh evit enrollañ ar gont nevez." + +#: ../src/config.py:2653 ../src/dialogs.py:1123 +msgid "Passwords do not match" +msgstr "Ne glot ket ar gerioù-kuzh" + +#: ../src/config.py:2654 ../src/dialogs.py:1124 +msgid "The passwords typed in both fields must be identical." +msgstr "Rankout a ra an daou c'her-kuzh bezañ heñvel en daou dakad." + +#: ../src/config.py:2673 +msgid "Duplicate Jabber ID" +msgstr "Eilañ an ID Jabber" + +#: ../src/config.py:2674 +msgid "This account is already configured in Gajim." +msgstr "Kefluniet eo bet ar gont-mañ e-barzh Gajim dija." + +#: ../src/config.py:2691 +msgid "Account has been added successfully" +msgstr "Gant berzh eo bet ouzhpennet ar gont!" + +#: ../src/config.py:2692 ../src/config.py:2725 +msgid "" +"You can set advanced account options by pressing Advanced button, or later " +"by clicking in Accounts menuitem under Edit menu from the main window." +msgstr "" +"Bez e c'hellit aozañ dibaboù araoket ar gont en ur pouezañ war an nozelenn " +"Araoket, pe hen ober diwezhatoc'h en ur glikañ war Kontoù er meuziad Aozañ " +"eus ar prenestr pennañ." + +#: ../src/config.py:2724 +msgid "Your new account has been created successfully" +msgstr "Gant berzh eo bet krouet ho kont nevez!" + +#: ../src/config.py:2740 +msgid "An error occured during account creation" +msgstr "Bez ez eus bet ur fazi en ur grouiñ ar gont" + +#: ../src/config.py:2797 +msgid "Account name is in use" +msgstr "Implijet eo an anv-kont dija" + +#: ../src/config.py:2798 +msgid "You already have an account using this name." +msgstr "Bez ho peus ur gont gant an anv-se dija." + +#: ../src/conversation_textview.py:205 +msgid "" +"Text below this line is what has been said since the last time you paid " +"attention to this group chat" +msgstr "" +"Dindan al linenn e welit ar pezh a zo bet lâret er sal-flapiñ dibaoe ar wech " +"diwezhañ ho peus taolet ur sell ennañ." + +#: ../src/conversation_textview.py:263 +#, python-format +msgid "Actions for \"%s\"" +msgstr "Oberoù evit \"%s\"" + +#: ../src/conversation_textview.py:275 +msgid "Read _Wikipedia Article" +msgstr "Lenn pennad _Wikipedia" + +#: ../src/conversation_textview.py:280 +msgid "Look it up in _Dictionary" +msgstr "Klask er _geriadur" + +#. we must have %s in the url if not WIKTIONARY +#: ../src/conversation_textview.py:296 +#, python-format +msgid "Dictionary URL is missing an \"%s\" and it is not WIKTIONARY" +msgstr "" +"Mankout a ra un \"%s\" e-barzh URL ar geriaoueg, ha n'eo ket WIKTIONARY" + +#. we must have %s in the url +#: ../src/conversation_textview.py:308 +#, python-format +msgid "Web Search URL is missing an \"%s\"" +msgstr "Mankout a ra un \"%s\" e-barzh URL ar webklask" + +#: ../src/conversation_textview.py:311 +msgid "Web _Search for it" +msgstr "Web_klask" + +#: ../src/conversation_textview.py:607 +msgid "Yesterday" +msgstr "Dec'h" + +#. the number is >= 2 +#. %i is day in year (1-365), %d (1-31) we want %i +#: ../src/conversation_textview.py:611 +#, python-format +msgid "%i days ago" +msgstr "%i devezh 'zo" + +#. if we have subject, show it too! +#: ../src/conversation_textview.py:686 +#, python-format +msgid "Subject: %s\n" +msgstr "Sujed: %s\n" + +# Traduction moins mauvaise mais pas terrible: binding=lier, attacher +#. only say that to non Windows users +#: ../src/dbus_support.py:32 +msgid "D-Bus python bindings are missing in this computer" +msgstr "" + +#: ../src/dbus_support.py:33 +msgid "D-Bus capabilities of Gajim cannot be used" +msgstr "" + +#: ../src/dialogs.py:55 +#, python-format +msgid "Contact's name: %s" +msgstr "Anv an darempred: %s" + +#: ../src/dialogs.py:57 +#, python-format +msgid "JID: %s" +msgstr "JID: %s" + +#. Group name +#. In group boolean +#: ../src/dialogs.py:173 +msgid "Group" +msgstr "Strollad" + +#: ../src/dialogs.py:180 +msgid "In the group" +msgstr "Er strollad" + +#: ../src/dialogs.py:230 +msgid "KeyID" +msgstr "KeyID" + +#: ../src/dialogs.py:233 +msgid "Contact name" +msgstr "Anv an darempred" + +#: ../src/dialogs.py:266 +#, python-format +msgid "%s Status Message" +msgstr "Titour-stad %s" + +#: ../src/dialogs.py:268 +msgid "Status Message" +msgstr "Titour-stad" + +#: ../src/dialogs.py:343 +msgid "Save as Preset Status Message" +msgstr "Enrollañ evel titour-stad rakenrollet" + +#: ../src/dialogs.py:344 +msgid "Please type a name for this status message" +msgstr "Roit un anv d'an titour-stad-mañ" + +#: ../src/dialogs.py:391 +#, python-format +msgid "Please fill in the data of the contact you want to add in account %s" +msgstr "Leuniit titouroù an darempred a zo da vezañ ouzhpennet er gont %s" + +#: ../src/dialogs.py:393 +msgid "Please fill in the data of the contact you want to add" +msgstr "Leuniit an titouroù diwar-benn an darempred da ouzhpennañ" + +#: ../src/dialogs.py:403 ../src/disco.py:109 ../src/disco.py:110 +#: ../src/disco.py:1249 ../src/roster_window.py:207 +#: ../src/roster_window.py:273 ../src/roster_window.py:309 +#: ../src/roster_window.py:329 ../src/roster_window.py:353 +#: ../src/roster_window.py:2973 ../src/roster_window.py:2975 +#: ../src/common/helpers.py:39 +msgid "Transports" +msgstr "Dorioù" + +#: ../src/dialogs.py:493 ../src/dialogs.py:499 +msgid "Invalid User ID" +msgstr "ID-arveriad-ez direizh" + +#: ../src/dialogs.py:500 +msgid "The user ID must not contain a resource." +msgstr "" + +#: ../src/dialogs.py:513 +msgid "Contact already in roster" +msgstr "Darempred er roll dija" + +#: ../src/dialogs.py:514 +msgid "This contact is already listed in your roster." +msgstr "Emañ an darempred en ho roll-darempredoù dija." + +#: ../src/dialogs.py:576 +msgid "A GTK+ jabber client" +msgstr "Ur flaperez jabber e GTK+" + +#: ../src/dialogs.py:577 +msgid "GTK+ Version:" +msgstr "" + +#: ../src/dialogs.py:578 +msgid "PyGTK Version:" +msgstr "" + +#: ../src/dialogs.py:586 +#, fuzzy +msgid "Current Developers:" +msgstr "Diorroerien kent:" + +#: ../src/dialogs.py:588 +msgid "Past Developers:" +msgstr "Diorroerien kent:" + +#: ../src/dialogs.py:592 +msgid "THANKS:" +msgstr "TRUGAREZ DA:" + +#. remove one english sentence +#. and add it manually as translatable +#: ../src/dialogs.py:598 +msgid "Last but not least, we would like to thank all the package maintainers." +msgstr "Evit echuiñ, e fell deomp trugarekaat holl gempennerien ar pakad." + +#. here you write your name in the form Name FamilyName +#: ../src/dialogs.py:612 +msgid "translator-credits" +msgstr "" +"Troet e brezhoneg gant\n" +"Giulia Fraboulet " + +#: ../src/dialogs.py:738 +#, fuzzy, python-format +msgid "Unable to bind to port %s." +msgstr "Impossible de rejoindre le salon" + +#: ../src/dialogs.py:739 +msgid "" +"Maybe you have another running instance of Gajim. File Transfer will be " +"canceled." +msgstr "" + +#: ../src/dialogs.py:881 +#, python-format +msgid "Subscription request for account %s from %s" +msgstr "Goulenn enskrivañ evit ar gont %s digant %s" + +#: ../src/dialogs.py:884 +#, python-format +msgid "Subscription request from %s" +msgstr "Goulenn enskrivañ digant %s" + +#: ../src/dialogs.py:926 +msgid "You can not join a group chat unless you are connected." +msgstr "N'hellit ket ebarzhiñ ur sal-flapiñ keit ha ma n'oc'h ket luget." + +#: ../src/dialogs.py:939 +#, python-format +msgid "Join Group Chat with account %s" +msgstr "Ebarzhiñ ur sal-flapiñ gant ar gont %s" + +#: ../src/dialogs.py:1030 +msgid "Invalid room or server name" +msgstr "Anv sal pe servijer direizh" + +#: ../src/dialogs.py:1031 +msgid "The room name or server name has not allowed characters." +msgstr "Bez ez eus arouezioù difennet en anv ar sal pe hini ar servijer." + +#: ../src/dialogs.py:1050 +#, python-format +msgid "Start Chat with account %s" +msgstr "Kregiñ da flapiñ gant ar gont %s" + +#: ../src/dialogs.py:1052 +msgid "Start Chat" +msgstr "Kregiñ da flapiñ" + +#: ../src/dialogs.py:1053 +#, fuzzy +msgid "" +"Fill in the jid, or nick of the contact you would like\n" +"to send a chat message to:" +msgstr "" +"Roit ID an darempred a fell deoc'h kas ur gemennadenn\n" +"dezhañ:" + +#. if offline or connecting +#: ../src/dialogs.py:1078 ../src/dialogs.py:1427 ../src/dialogs.py:1551 +msgid "Connection not available" +msgstr "N'eus ket tu en em lugañ" + +#: ../src/dialogs.py:1079 ../src/dialogs.py:1428 ../src/dialogs.py:1552 +#, python-format +msgid "Please make sure you are connected with \"%s\"." +msgstr "Gwiriekait oc'h luget gant \"%s\"." + +#: ../src/dialogs.py:1088 ../src/dialogs.py:1091 +#, fuzzy +msgid "Invalid JID" +msgstr "ID jabber direizh" + +#: ../src/dialogs.py:1091 +#, python-format +msgid "Unable to parse \"%s\"." +msgstr "" + +#: ../src/dialogs.py:1100 +msgid "Without a connection, you can not change your password." +msgstr "Rankout a rit bezañ luget evit cheñch ger-kuzh." + +#: ../src/dialogs.py:1119 +msgid "You must enter a password." +msgstr "Rankout a rit reiñ ur ger-kuzh." + +#. img to display +#. default value +#: ../src/dialogs.py:1165 ../src/notify.py:126 ../src/notify.py:268 +msgid "Contact Signed In" +msgstr "Darempred luget" + +#: ../src/dialogs.py:1167 ../src/notify.py:134 ../src/notify.py:270 +msgid "Contact Signed Out" +msgstr "Darempred diluget" + +#. chat message +#: ../src/dialogs.py:1169 ../src/notify.py:154 ../src/notify.py:272 +msgid "New Message" +msgstr "Kemennadenn nevez" + +#. single message +#: ../src/dialogs.py:1169 ../src/notify.py:138 ../src/notify.py:272 +msgid "New Single Message" +msgstr "Kemennadenn simpl nevez" + +#. private message +#: ../src/dialogs.py:1170 ../src/notify.py:145 ../src/notify.py:273 +msgid "New Private Message" +msgstr "Kemennadenn hiniennel nevez" + +#: ../src/dialogs.py:1170 ../src/gajim.py:1044 ../src/notify.py:281 +msgid "New E-mail" +msgstr "Postel nevez" + +#: ../src/dialogs.py:1172 ../src/gajim.py:1187 ../src/notify.py:275 +msgid "File Transfer Request" +msgstr "Goulenn treuzkas" + +#: ../src/dialogs.py:1174 ../src/gajim.py:1022 ../src/gajim.py:1164 +#: ../src/notify.py:277 +msgid "File Transfer Error" +msgstr "Fazi treuzkas" + +#: ../src/dialogs.py:1176 ../src/gajim.py:1222 ../src/gajim.py:1244 +#: ../src/gajim.py:1261 ../src/notify.py:279 +msgid "File Transfer Completed" +msgstr "Echu an treuzkasadenn" + +#: ../src/dialogs.py:1177 ../src/gajim.py:1225 ../src/notify.py:279 +msgid "File Transfer Stopped" +msgstr "Sac'het an treuzkas" + +#: ../src/dialogs.py:1179 ../src/gajim.py:920 ../src/notify.py:283 +msgid "Groupchat Invitation" +msgstr "Pedadenn evit ur sal-flapiñ" + +#: ../src/dialogs.py:1181 ../src/notify.py:118 ../src/notify.py:285 +#, fuzzy +msgid "Contact Changed Status" +msgstr "Darempred diluget" + +#. FIXME: for Received with should become 'in' +#: ../src/dialogs.py:1359 +#, python-format +msgid "Single Message with account %s" +msgstr "Kemennadenn simpl gant ar gont %s" + +#: ../src/dialogs.py:1361 +msgid "Single Message" +msgstr "Kemennadenn simpl" + +#. prepare UI for Sending +#: ../src/dialogs.py:1364 +#, python-format +msgid "Send %s" +msgstr "Kas %s" + +#. prepare UI for Receiving +#: ../src/dialogs.py:1387 +#, python-format +msgid "Received %s" +msgstr "%s resevet" + +#. we create a new blank window to send and we preset RE: and to jid +#: ../src/dialogs.py:1454 +#, python-format +msgid "RE: %s" +msgstr "RE: %s" + +#: ../src/dialogs.py:1455 +#, python-format +msgid "%s wrote:\n" +msgstr "%s a skrivas:\n" + +#: ../src/dialogs.py:1499 +#, python-format +msgid "XML Console for %s" +msgstr "" + +#: ../src/dialogs.py:1501 +msgid "XML Console" +msgstr "" + +#: ../src/dialogs.py:1620 +#, python-format +msgid "Privacy List %s" +msgstr "" + +#: ../src/dialogs.py:1624 +#, python-format +msgid "Privacy List for %s" +msgstr "" + +#: ../src/dialogs.py:1716 +#, fuzzy +msgid "Edit a rule" +msgstr "Furmad ul linenn" + +#: ../src/dialogs.py:1801 +#, fuzzy +msgid "Add a rule" +msgstr "Furmad ul linenn" + +#: ../src/dialogs.py:1897 +#, python-format +msgid "Privacy Lists for %s" +msgstr "" + +#: ../src/dialogs.py:1899 +#, fuzzy +msgid "Privacy Lists" +msgstr "Flapoù prevez" + +#. FIXME: use nickname instead of contact_jid +#: ../src/dialogs.py:1988 +#, python-format +msgid "%(contact_jid)s has invited you to %(room_jid)s room" +msgstr "Pedet oc'h bet gant %(contact_jid)s er sal-flapiñ %(room_jid)s" + +#. only if not None and not '' +#: ../src/dialogs.py:1994 +#, python-format +msgid "Comment: %s" +msgstr "Evezhiadenn: %s" + +#: ../src/dialogs.py:2054 +msgid "Choose Sound" +msgstr "Dibabit ur son" + +#: ../src/dialogs.py:2064 ../src/dialogs.py:2107 +msgid "All files" +msgstr "An holl restroù" + +#: ../src/dialogs.py:2069 +msgid "Wav Sounds" +msgstr "Sonioù wav" + +#: ../src/dialogs.py:2097 +msgid "Choose Image" +msgstr "Dibabit ur skeudenn" + +#: ../src/dialogs.py:2112 +msgid "Images" +msgstr "Skeudennoù" + +#: ../src/dialogs.py:2157 +#, python-format +msgid "When %s becomes:" +msgstr "Pa teu %s da vezañ:" + +#: ../src/dialogs.py:2159 +#, python-format +msgid "Adding Special Notification for %s" +msgstr "Oc'h ouzhpennañ ur gelaouenn nevez evit %s" + +#: ../src/dialogs.py:2232 +#, fuzzy +msgid "Condition" +msgstr "Kevreadenn" + +#: ../src/disco.py:108 +msgid "Others" +msgstr "Traoù all" + +#. conference is a category for listing mostly groupchats in service discovery +#: ../src/disco.py:112 +msgid "Conference" +msgstr "Kendiviz" + +#: ../src/disco.py:411 +msgid "Without a connection, you can not browse available services" +msgstr "Rankout a rit bezañ luget evit gellout furchal er servijoù hegerz" + +#: ../src/disco.py:490 +#, python-format +msgid "Service Discovery using account %s" +msgstr "Merañ servijoù ar gont %s" + +#: ../src/disco.py:491 +msgid "Service Discovery" +msgstr "Merañ ar servijoù" + +#: ../src/disco.py:628 +msgid "The service could not be found" +msgstr "N'eo ket bet kavet ar servij" + +#: ../src/disco.py:629 +msgid "" +"There is no service at the address you entered, or it is not responding. " +"Check the address and try again." +msgstr "" +"N'eus servij ebet er chomlec'h roet, pe ne respont ket. Gwiriekait ar " +"chomlec'h ha klaskit en-dro." + +#: ../src/disco.py:633 ../src/disco.py:915 +msgid "The service is not browsable" +msgstr "N'eus ket tu furchal er servij" + +#: ../src/disco.py:634 +msgid "This type of service does not contain any items to browse." +msgstr "N'eus elfenn ebet da furchal e seurt servijoù." + +#: ../src/disco.py:714 +#, python-format +msgid "Browsing %s using account %s" +msgstr "O furchal e-barzh %s oc'h implij ar gont %s" + +#: ../src/disco.py:753 +msgid "_Browse" +msgstr "_Furchal" + +#: ../src/disco.py:916 +msgid "This service does not contain any items to browse." +msgstr "N'eus elfenn ebet da furchal er servij-mañ." + +#: ../src/disco.py:1137 ../src/disco.py:1254 +msgid "Re_gister" +msgstr "_Emezelañ" + +#: ../src/disco.py:1291 +#, python-format +msgid "Scanning %d / %d.." +msgstr "" + +#. Users column +#: ../src/disco.py:1473 +msgid "Users" +msgstr "Arveridi" + +#. Description column +#: ../src/disco.py:1480 +msgid "Description" +msgstr "Taolennadur" + +#: ../src/filetransfers_window.py:72 +msgid "File" +msgstr "Restr" + +#: ../src/filetransfers_window.py:87 +msgid "Time" +msgstr "Mare" + +#: ../src/filetransfers_window.py:99 +msgid "Progress" +msgstr "Araokadur" + +#: ../src/filetransfers_window.py:163 ../src/filetransfers_window.py:223 +#, python-format +msgid "Filename: %s" +msgstr "Anv ar restr: %s" + +#: ../src/filetransfers_window.py:164 ../src/filetransfers_window.py:291 +#, python-format +msgid "Size: %s" +msgstr "Ment: %s" + +#. You is a reply of who sent a file +#. You is a reply of who received a file +#: ../src/filetransfers_window.py:173 ../src/filetransfers_window.py:183 +#: ../src/history_manager.py:454 +msgid "You" +msgstr "C'hwi" + +#: ../src/filetransfers_window.py:174 ../src/filetransfers_window.py:224 +#, python-format +msgid "Sender: %s" +msgstr "Kaser: %s" + +#: ../src/filetransfers_window.py:175 ../src/filetransfers_window.py:556 +#: ../src/tooltips.py:639 +msgid "Recipient: " +msgstr "Resever:" + +#: ../src/filetransfers_window.py:186 +#, python-format +msgid "Saved in: %s" +msgstr "Enrollet e-barzh: %s" + +#: ../src/filetransfers_window.py:188 +msgid "File transfer completed" +msgstr "Echu eo an treuzkas" + +#: ../src/filetransfers_window.py:204 ../src/filetransfers_window.py:212 +msgid "File transfer canceled" +msgstr "Nullet eo bet an treuzkas" + +#: ../src/filetransfers_window.py:204 ../src/filetransfers_window.py:213 +msgid "Connection with peer cannot be established." +msgstr "N'eus ket tu seveniñ al lugadenn gant an darempred." + +#: ../src/filetransfers_window.py:225 +msgid "File transfer stopped by the contact of the other side" +msgstr "Arsavet eo bet an treuzkas gant ho tarempred" + +#: ../src/filetransfers_window.py:242 +msgid "Choose File to Send..." +msgstr "Dibabit ur restr da gas..." + +#: ../src/filetransfers_window.py:256 +msgid "Gajim cannot access this file" +msgstr "N'hell ket Gajim tizhout ar restr-mañ" + +#: ../src/filetransfers_window.py:257 +msgid "This file is being used by another process." +msgstr "Implijet eo ar restr-mañ gant ur poellad all." + +#: ../src/filetransfers_window.py:289 +#, python-format +msgid "File: %s" +msgstr "Restr: %s" + +#: ../src/filetransfers_window.py:294 +#, python-format +msgid "Type: %s" +msgstr "Doare: %s" + +#: ../src/filetransfers_window.py:296 +#, python-format +msgid "Description: %s" +msgstr "Taolennadur: %s" + +#: ../src/filetransfers_window.py:297 +#, python-format +msgid "%s wants to send you a file:" +msgstr "Fellout a ra da %s kas deoc'h ur restr:" + +#: ../src/filetransfers_window.py:311 +#, python-format +msgid "Cannot overwrite existing file \"%s\"" +msgstr "" + +#: ../src/filetransfers_window.py:312 +msgid "" +"A file with this name already exists and you do not have permission to " +"overwrite it." +msgstr "" + +#: ../src/filetransfers_window.py:319 ../src/gtkgui_helpers.py:685 +msgid "This file already exists" +msgstr "Bez ez eus eus ar restr-mañ dija" + +#: ../src/filetransfers_window.py:319 ../src/gtkgui_helpers.py:685 +msgid "What do you want to do?" +msgstr "Petra a fell deoc'h ober?" + +#: ../src/filetransfers_window.py:331 +#, python-format +msgid "Directory \"%s\" is not writable" +msgstr "" + +#: ../src/filetransfers_window.py:331 +msgid "You do not have permission to create files in this directory." +msgstr "" + +#: ../src/filetransfers_window.py:341 +msgid "Save File as..." +msgstr "Enrollañ ar restr dindan..." + +#. Print remaining time in format 00:00:00 +#. You can change the places of (hours), (minutes), (seconds) - +#. they are not translatable. +#: ../src/filetransfers_window.py:420 +#, python-format +msgid "%(hours)02.d:%(minutes)02.d:%(seconds)02.d" +msgstr "%(hours)02.d:%(minutes)02.d:%(seconds)02.d" + +#. This should make the string Kb/s, +#. where 'Kb' part is taken from %s. +#. Only the 's' after / (which means second) should be translated. +#: ../src/filetransfers_window.py:492 +#, python-format +msgid "(%(filesize_unit)s/s)" +msgstr "(%(filesize_unit)s/s)" + +#: ../src/filetransfers_window.py:528 ../src/filetransfers_window.py:531 +msgid "Invalid File" +msgstr "Restr direizh" + +#: ../src/filetransfers_window.py:528 +msgid "File: " +msgstr "Restr:" + +#: ../src/filetransfers_window.py:532 +msgid "It is not possible to send empty files" +msgstr "N'eus ket tu da gas restroù goullo" + +#: ../src/filetransfers_window.py:552 ../src/tooltips.py:511 +#: ../src/tooltips.py:629 +msgid "Name: " +msgstr "Anv:" + +#: ../src/filetransfers_window.py:554 ../src/tooltips.py:633 +msgid "Sender: " +msgstr "Kaser:" + +#: ../src/filetransfers_window.py:742 +msgid "Pause" +msgstr "Ehan" + +#: ../src/gajim-remote.py:82 +msgid "shows a help on specific command" +msgstr "diskouez ar skoazell evit un urzhiad resis" + +#. User gets help for the command, specified by this parameter +#: ../src/gajim-remote.py:85 +msgid "command" +msgstr "urzhiad" + +#: ../src/gajim-remote.py:86 +msgid "show help on command" +msgstr "diskouez ar skoazell evit an urzhiad" + +#: ../src/gajim-remote.py:90 +msgid "Shows or hides the roster window" +msgstr "Diskouez pe kuzhat ar prenestr pennañ" + +#: ../src/gajim-remote.py:94 +msgid "Popups a window with the next unread message" +msgstr "A zifoup ur prenestr gant ar gemennadenn dilenn da-heul" + +#: ../src/gajim-remote.py:98 +msgid "" +"Prints a list of all contacts in the roster. Each contact appear on a " +"separate line" +msgstr "" +"A ziskouez ur roll eus an holl zarempredoù, pep darempred war ul linenn." + +#: ../src/gajim-remote.py:100 ../src/gajim-remote.py:114 +#: ../src/gajim-remote.py:124 ../src/gajim-remote.py:137 +#: ../src/gajim-remote.py:151 ../src/gajim-remote.py:172 +#: ../src/gajim-remote.py:202 ../src/gajim-remote.py:211 +#: ../src/gajim-remote.py:218 ../src/gajim-remote.py:225 +#: ../src/gajim-remote.py:236 +msgid "account" +msgstr "kont" + +#: ../src/gajim-remote.py:100 +msgid "show only contacts of the given account" +msgstr "diskouez darempredoù ar gont roet hepken" + +#: ../src/gajim-remote.py:105 +msgid "Prints a list of registered accounts" +msgstr "A ziskouez roll ar c'hontoù enrollet" + +#: ../src/gajim-remote.py:109 +msgid "Changes the status of account or accounts" +msgstr "A cheñch stad ar gont pe ar c'hontoù" + +#. offline, online, chat, away, xa, dnd, invisible should not be translated +#: ../src/gajim-remote.py:112 +msgid "status" +msgstr "stad" + +#: ../src/gajim-remote.py:112 +msgid "one of: offline, online, chat, away, xa, dnd, invisible " +msgstr "unan eus: offline, online, chat, away, xa, dnd, invisible " + +#: ../src/gajim-remote.py:113 ../src/gajim-remote.py:134 +#: ../src/gajim-remote.py:148 +msgid "message" +msgstr "kemennadenn" + +#: ../src/gajim-remote.py:113 +msgid "status message" +msgstr "titour stad" + +#: ../src/gajim-remote.py:114 +msgid "" +"change status of account \"account\". If not specified, try to change status " +"of all accounts that have \"sync with global status\" option set" +msgstr "" +"A cheñch stad ar gont \"kont\". Ma n'eus hini ebet roet, klaskit cheñch stad " +"an holl gontoù o deus an dibab \"sync with global status\" enaouet" + +#: ../src/gajim-remote.py:120 +msgid "Shows the chat dialog so that you can send messages to a contact" +msgstr "" +"A ziskouez ar prenestr flapiñ evit ma c'hellfec'h kas ur gemennadenn d'un " +"darempred" + +#: ../src/gajim-remote.py:122 +msgid "JID of the contact that you want to chat with" +msgstr "JID an darempred ho peus c'hoant flapiñ gantañ" + +#: ../src/gajim-remote.py:124 ../src/gajim-remote.py:202 +msgid "if specified, contact is taken from the contact list of this account" +msgstr "Si spécifié, le contact est pris dans la liste de contact de ce compte" + +#: ../src/gajim-remote.py:129 +#, fuzzy +msgid "" +"Sends new chat message to a contact in the roster. Both OpenPGP key and " +"account are optional. If you want to set only 'account', without 'OpenPGP " +"key', just set 'OpenPGP key' to ''." +msgstr "" +"Envoyer un nouveau message à un contact dans la liste. La clé OpenPGP et le " +"compte sont facultatifs. Si vous voulez renseigner seulement le paramètre " +"'compte' sans 'clé pgp', mettez simple la valeur '' pour 'clé pgp'." + +#: ../src/gajim-remote.py:133 ../src/gajim-remote.py:146 +msgid "JID of the contact that will receive the message" +msgstr "JID an darempred hag a resevo ar gemennadenn" + +#: ../src/gajim-remote.py:134 ../src/gajim-remote.py:148 +msgid "message contents" +msgstr "korf ar gemennadenn" + +#: ../src/gajim-remote.py:135 ../src/gajim-remote.py:149 +msgid "pgp key" +msgstr "alc'hwezh pgp" + +#: ../src/gajim-remote.py:135 ../src/gajim-remote.py:149 +msgid "if specified, the message will be encrypted using this public key" +msgstr "" + +#: ../src/gajim-remote.py:137 ../src/gajim-remote.py:151 +msgid "if specified, the message will be sent using this account" +msgstr "Ma vez resisaet, e vo kaset ar gemennadenn en ur implij ar gont-mañ" + +#: ../src/gajim-remote.py:142 +#, fuzzy +msgid "" +"Sends new single message to a contact in the roster. Both OpenPGP key and " +"account are optional. If you want to set only 'account', without 'OpenPGP " +"key', just set 'OpenPGP key' to ''." +msgstr "" +"Envoyer un nouveau message à un contact dans la liste. La clé OpenPGP et le " +"compte sont facultatifs. Si vous voulez renseigner seulement le paramètre " +"'compte' sans 'clé pgp', mettez simple la valeur '' pour 'clé pgp'." + +#: ../src/gajim-remote.py:147 +#, fuzzy +msgid "subject" +msgstr "Titl" + +#: ../src/gajim-remote.py:147 +#, fuzzy +msgid "message subject" +msgstr "Kemennadenn gaset" + +#: ../src/gajim-remote.py:156 +msgid "Gets detailed info on a contact" +msgstr "Evit kargañ titouroù-munut un darempred" + +#: ../src/gajim-remote.py:158 ../src/gajim-remote.py:171 +#: ../src/gajim-remote.py:201 ../src/gajim-remote.py:210 +msgid "JID of the contact" +msgstr "JID an darempred" + +#: ../src/gajim-remote.py:162 +msgid "Gets detailed info on a account" +msgstr "Evit kargañ titouroù-munut ur gont" + +#: ../src/gajim-remote.py:164 +msgid "Name of the account" +msgstr "Anv ar gont" + +#: ../src/gajim-remote.py:168 +msgid "Sends file to a contact" +msgstr "Kas ur restr d'un darempred" + +#: ../src/gajim-remote.py:170 +msgid "file" +msgstr "restr" + +#: ../src/gajim-remote.py:170 +msgid "File path" +msgstr "Treug ar restr" + +#: ../src/gajim-remote.py:172 +msgid "if specified, file will be sent using this account" +msgstr "m'eo resisaet, e vo kaset ar rest en ur implij ar gont-mañ" + +#: ../src/gajim-remote.py:177 +msgid "Lists all preferences and their values" +msgstr "Roll an holl zibaboù hag o zalvoudoù" + +#: ../src/gajim-remote.py:181 +msgid "Sets value of 'key' to 'value'." +msgstr "A laka talvoud an 'alc'hwezh' da 'dalvoud'." + +#: ../src/gajim-remote.py:183 +msgid "key=value" +msgstr "alc'hwezh=talvoud" + +#: ../src/gajim-remote.py:183 +msgid "'key' is the name of the preference, 'value' is the value to set it to" +msgstr "'alc'hwezh' eo anv an dibab, 'talvoud' eo an talvoud da lakaat dezhañ" + +#: ../src/gajim-remote.py:188 +msgid "Deletes a preference item" +msgstr "A zilam un elfenn dibab" + +#: ../src/gajim-remote.py:190 +msgid "key" +msgstr "touchenn" + +#: ../src/gajim-remote.py:190 +msgid "name of the preference to be deleted" +msgstr "anv an dibab da zilemel" + +#: ../src/gajim-remote.py:194 +msgid "Writes the current state of Gajim preferences to the .config file" +msgstr "A skriv stad red dibaboù Gajim er restr .config" + +#: ../src/gajim-remote.py:199 +msgid "Removes contact from roster" +msgstr "Dilemel an darempred diouzh ar roll" + +#: ../src/gajim-remote.py:208 +msgid "Adds contact to roster" +msgstr "Ouzhennañ an darempred d'ar roll" + +#: ../src/gajim-remote.py:210 +msgid "jid" +msgstr "" + +#: ../src/gajim-remote.py:211 +#, fuzzy +msgid "Adds new contact to this account" +msgstr "Ouzhpennañ un darempred nevez d'ar gont-mañ." + +#: ../src/gajim-remote.py:216 +msgid "Returns current status (the global one unless account is specified)" +msgstr "" +"A ro ar stad red (an hini hollek, nemet ez eus bet resisaet ur gont bennak)" + +#: ../src/gajim-remote.py:223 +msgid "" +"Returns current status message(the global one unless account is specified)" +msgstr "" +"A gas an titour-stad red (an hini hollek, nemet ez eus bet resisaet ur gont " +"bennak)" + +#: ../src/gajim-remote.py:230 +msgid "Returns number of unreaded messages" +msgstr "A ro an niver a gemennadennoù chomet dilenn" + +#: ../src/gajim-remote.py:234 +msgid "Open 'Start Chat' dialog" +msgstr "" + +#: ../src/gajim-remote.py:236 +#, fuzzy +msgid "Starts chat, using this account" +msgstr "Kregiñ da flapiñ gant ar gont %s" + +#: ../src/gajim-remote.py:256 +msgid "Missing argument \"contact_jid\"" +msgstr "" + +#: ../src/gajim-remote.py:275 +#, python-format +msgid "" +"'%s' is not in your roster.\n" +"Please specify account for sending the message." +msgstr "" +"N'emañ ket '%s' en hor roll darempredoù.\n" +"Resisait ar gont evit kas ur gemennadenn." + +#: ../src/gajim-remote.py:278 +msgid "You have no active account" +msgstr "N'ho peus kont bev ebet" + +#: ../src/gajim-remote.py:321 +#, python-format +msgid "Unknown D-Bus version: %s" +msgstr "Aozadur D-Bus dianav: %s" + +#: ../src/gajim-remote.py:348 +#, python-format +msgid "" +"Usage: %s %s %s \n" +"\t %s" +msgstr "" +"Implij: %s %s %s \n" +"\t %s" + +#: ../src/gajim-remote.py:351 +msgid "Arguments:" +msgstr "Arguments :" + +#: ../src/gajim-remote.py:355 +#, python-format +msgid "%s not found" +msgstr "N'eo ket bet kavet %s" + +#: ../src/gajim-remote.py:359 +#, python-format +msgid "" +"Usage: %s command [arguments]\n" +"Command is one of:\n" +msgstr "" +"Implij: %s urzhiad [arguments]\n" +"urzhiad eo unan eus :\n" + +#: ../src/gajim-remote.py:433 +#, python-format +msgid "" +"Argument \"%s\" is not specified. \n" +"Type \"%s help %s\" for more info" +msgstr "" + +#: ../src/gajim.py:48 +msgid "Gajim needs Xserver to run. Quiting..." +msgstr "Ezhomm en deus Gajim eus ur servijer X evit labourat. O kuitaat..." + +#: ../src/gajim.py:52 +msgid "Gajim needs PyGTK 2.6 or above" +msgstr "Ezhomm en deus Gajim eus PyGTK 2.6 pe uheloc'h" + +#: ../src/gajim.py:53 +msgid "Gajim needs PyGTK 2.6 or above to run. Quiting..." +msgstr "" +"Ezhomm en deus Gajim eus PyGTK 2.6 pe uheloc'h evit labourat. O kuitaat..." + +#: ../src/gajim.py:55 +msgid "Gajim needs GTK 2.6 or above" +msgstr "Ezhomm en deus Gajim eus GTK 2.6 pe uheloc'h" + +#: ../src/gajim.py:56 +msgid "Gajim needs GTK 2.6 or above to run. Quiting..." +msgstr "" +"Ezhomm en deus Gajim eus GTK 2.6 pe uheloc'h evit labourat. O kuitaat..." + +#: ../src/gajim.py:61 +msgid "GTK+ runtime is missing libglade support" +msgstr "" + +#: ../src/gajim.py:63 +#, python-format +msgid "" +"Please remove your current GTK+ runtime and install the latest stable " +"version from %s" +msgstr "" +"Dilamit al levraoueg red eus GTK+runtime ha staliit an aozadur stabil " +"diwezhañ diwar %s" + +#: ../src/gajim.py:65 +msgid "" +"Please make sure that GTK+ and PyGTK have libglade support in your system." +msgstr "" + +#: ../src/gajim.py:70 +msgid "Gajim needs PySQLite2 to run" +msgstr "Ezhomm en deus Gajim eus PySQLite evit labourat" + +#. set the icon to all newly opened wind +#: ../src/gajim.py:151 +msgid "Gajim is already running" +msgstr "" + +#: ../src/gajim.py:152 +msgid "" +"Another instance of Gajim seems to be running\n" +"Run anyway?" +msgstr "" + +#: ../src/gajim.py:267 +#, python-format +msgid "HTTP (%s) Authorization for %s (id: %s)" +msgstr "Aotre HTTP (%s) evit %s (id : %s)" + +#: ../src/gajim.py:268 +msgid "Do you accept this request?" +msgstr "Degemer a rit ar goulenn-mañ?" + +#: ../src/gajim.py:611 +#, python-format +msgid "error while sending %s ( %s )" +msgstr "fazi en ur gas %s ( %s )" + +#: ../src/gajim.py:651 +msgid "Authorization accepted" +msgstr "Aotre degmeret" + +#: ../src/gajim.py:652 +#, python-format +msgid "The contact \"%s\" has authorized you to see his or her status." +msgstr "Aotreet oc'h bet gant \"%s\" da welet e stad." + +#: ../src/gajim.py:660 +#, python-format +msgid "Contact \"%s\" removed subscription from you" +msgstr "Dilamet eo bet ho aotre digant \"%s\"" + +#: ../src/gajim.py:661 +msgid "You will always see him or her as offline." +msgstr "Atav e weloc'h anezhañ ezlinenn." + +#: ../src/gajim.py:704 +#, python-format +msgid "Contact with \"%s\" cannot be established" +msgstr "N'eus ket tu da dizhout \"%s\"" + +#: ../src/gajim.py:705 ../src/common/connection.py:398 +msgid "Check your connection or try again later." +msgstr "Gwiriekait ho lugadenn pe klaskit diwezhatoc'h." + +#: ../src/gajim.py:849 ../src/roster_window.py:1025 +#, python-format +msgid "%s is now %s (%s)" +msgstr "%s a zo bremañ %s (%s)" + +#: ../src/gajim.py:930 +msgid "Your passphrase is incorrect" +msgstr "Direizh eo ho ker-kuzh" + +#: ../src/gajim.py:931 +msgid "You are currently connected without your OpenPGP key." +msgstr "Luget oc'h hep hoc'h alc'hwezh OpenPGP." + +#. FIXME: find a better image +#: ../src/gajim.py:1033 +#, python-format +msgid "New E-mail on %(gmail_mail_address)s" +msgstr "Postel nevez war %(gmail_mail_address)s" + +#: ../src/gajim.py:1035 +#, python-format +msgid "You have %d new E-mail message" +msgid_plural "You have %d new E-mail messages" +msgstr[0] "Bez ho peus %d postel nevez" +msgstr[1] "Bez ho peus %d postel nevez" + +#. each message has a 'From', 'Subject' and 'Snippet' field +#: ../src/gajim.py:1040 +#, python-format +msgid "" +"\n" +"From: %(from_address)s" +msgstr "" + +#: ../src/gajim.py:1185 +#, python-format +msgid "%s wants to send you a file." +msgstr "Fellout a ra da %s kas deoc'h ur restr." + +#: ../src/gajim.py:1245 +#, python-format +msgid "You successfully received %(filename)s from %(name)s." +msgstr "Gant berzh ho peus resevet %(filename)s digant %(name)s." + +#. ft stopped +#: ../src/gajim.py:1249 +#, python-format +msgid "File transfer of %(filename)s from %(name)s stopped." +msgstr "Arsavet eo an treuskas eus %(filename)s digant %(name)s." + +#: ../src/gajim.py:1262 +#, python-format +msgid "You successfully sent %(filename)s to %(name)s." +msgstr "Gant berzh ho peus kaset %(filename)s da %(name)s." + +#. ft stopped +#: ../src/gajim.py:1266 +#, python-format +msgid "File transfer of %(filename)s to %(name)s stopped." +msgstr "Arsavet eo an treuzkas eus %(filename)s da %(name)s." + +#: ../src/gajim.py:1295 +msgid "vCard publication succeeded" +msgstr "Gant berzh eo bet embannet ar vCard" + +#: ../src/gajim.py:1295 +msgid "Your personal information has been published successfully." +msgstr "Gant berzh eo bet embannet ho titouroù hiniennel." + +#: ../src/gajim.py:1304 +msgid "vCard publication failed" +msgstr "C'hwitet eo embannadur ar vCard" + +#: ../src/gajim.py:1304 +msgid "" +"There was an error while publishing your personal information, try again " +"later." +msgstr "" +"Bez ez eus bet ur fazi en ur embann ho titouroù hiniennel, klaskit en-dro " +"diwezhatoc'h." + +#. it is good to notify the user +#. in case he or she cannot see the output of the console +#: ../src/gajim.py:1683 +msgid "Could not save your settings and preferences" +msgstr "Dibosupl eo enrollañ ho tibarzhioù ha dibaboù" + +#: ../src/gajim.py:1903 +msgid "Session Management support not available (missing gnome.ui module)" +msgstr "" +"Support du gestionnaire de sessions indisponible (module gnome.ui manquant)" + +#: ../src/gajim.py:1932 +msgid "Migrating Logs..." +msgstr "O tilec'hiañ an istoradur..." + +#: ../src/gajim.py:1933 +msgid "Please wait while logs are being migrated..." +msgstr "Gortozit marplij e keit ma vez dilec'hiet an istoradur..." + +#: ../src/gajim_themes_window.py:59 +msgid "Theme" +msgstr "Gwiskadur" + +#. don't confuse translators +#: ../src/gajim_themes_window.py:141 +msgid "theme name" +msgstr "anv ar gwiskadur" + +#: ../src/gajim_themes_window.py:158 +msgid "You cannot delete your current theme" +msgstr "N'hellit ket dilemel ar gwiskadur red" + +#: ../src/gajim_themes_window.py:159 +msgid "Please first choose another for your current theme." +msgstr "Dibabit ur gwiskadur all da gentañ." + +#: ../src/groupchat_control.py:99 +msgid "Private Chat" +msgstr "Flap prevez" + +#: ../src/groupchat_control.py:99 +msgid "Private Chats" +msgstr "Flapoù prevez" + +#: ../src/groupchat_control.py:115 +msgid "Sending private message failed" +msgstr "Kas ar gemennadenn brevez c'hwitet" + +#. in second %s code replaces with nickname +#: ../src/groupchat_control.py:117 +#, python-format +msgid "You are no longer in room \"%s\" or \"%s\" has left." +msgstr "N'emaoc'h ket er webgaoz \"%s\" ken, pe neuze eo aet kuit \"%s\"." + +#: ../src/groupchat_control.py:129 +msgid "Group Chat" +msgstr "Flap a-stroll" + +#: ../src/groupchat_control.py:129 +msgid "Group Chats" +msgstr "Flapoù a-stroll" + +#: ../src/groupchat_control.py:308 +#, fuzzy +msgid "Insert Nickname" +msgstr "Cheñch _lesanv" + +#: ../src/groupchat_control.py:702 +msgid "This room has no subject" +msgstr "N'eus sujed ebet gant ar webgaoz-mañ" + +#. do not print 'kicked by None' +#: ../src/groupchat_control.py:801 +#, python-format +msgid "%(nick)s has been kicked: %(reason)s" +msgstr "%(nick)s a zo bet skarzhet : %(reason)s" + +#: ../src/groupchat_control.py:805 +#, python-format +msgid "%(nick)s has been kicked by %(who)s: %(reason)s" +msgstr "%(nick)s a zo bet skarzhet gant %(who)s : %(reason)s" + +#. do not print 'banned by None' +#: ../src/groupchat_control.py:812 +#, python-format +msgid "%(nick)s has been banned: %(reason)s" +msgstr "%(nick)s a zo argaset : %(reason)s" + +#: ../src/groupchat_control.py:816 +#, python-format +msgid "%(nick)s has been banned by %(who)s: %(reason)s" +msgstr "%(nick)s a zo argaset gant %(who)s : %(reason)s" + +#: ../src/groupchat_control.py:824 +#, python-format +msgid "You are now known as %s" +msgstr "Anavezet oc'h bremañ gant an anv %s" + +#: ../src/groupchat_control.py:826 +#, python-format +msgid "%s is now known as %s" +msgstr "%s a zo bremañ %s" + +#: ../src/groupchat_control.py:897 +#, python-format +msgid "%s has left" +msgstr "Aet eo kuit %s" + +#: ../src/groupchat_control.py:902 +#, python-format +msgid "%s has joined the room" +msgstr "" + +#. No status message +#: ../src/groupchat_control.py:904 ../src/roster_window.py:1028 +#, python-format +msgid "%s is now %s" +msgstr "%s a zo bremañ %s" + +#: ../src/groupchat_control.py:1022 ../src/groupchat_control.py:1039 +#: ../src/groupchat_control.py:1132 ../src/groupchat_control.py:1148 +#, python-format +msgid "Nickname not found: %s" +msgstr "N'eus ket bet kavet al lesanv : %s" + +#: ../src/groupchat_control.py:1066 +#, python-format +msgid "Invited %(contact_jid)s to %(room_jid)s." +msgstr "Darempred %(contact_jid)s bet pedet e-barzh %(room_jid)s." + +#. %s is something the user wrote but it is not a jid so we inform +#: ../src/groupchat_control.py:1073 ../src/groupchat_control.py:1103 +#, python-format +msgid "%s does not appear to be a valid JID" +msgstr "%s ne seblant ket bezañ ur JID a-feson" + +#: ../src/groupchat_control.py:1185 +#, python-format +msgid "No such command: /%s (if you want to send this, prefix it with /say)" +msgstr "" +"N'eus ket eus an urzhiad: /%s (lakait /say araozañ ma fell deoc'h e gas)" + +#: ../src/groupchat_control.py:1207 +#, python-format +msgid "Commands: %s" +msgstr "Urzhioù: %s" + +#: ../src/groupchat_control.py:1209 +#, python-format +msgid "" +"Usage: /%s [reason], bans the JID from the room. The nickname " +"of an occupant may be substituted, but not if it contains \"@\". If the JID " +"is currently in the room, he/she/it will also be kicked. Does NOT support " +"spaces in nickname." +msgstr "" +"Usage : /%s [raison], bannit le JID du salon. Le surnom de " +"l'occupant peut être utilisé s'il ne contient pas de \"@\". Si le JID est " +"actuellement dans le salon il sera également éjecté. Ne supporte pas les " +"espaces dans le surnom." + +#: ../src/groupchat_control.py:1215 +#, python-format +msgid "" +"Usage: /%s , opens a private chat window to the specified occupant." +msgstr "" +"Usage : /%s , ouvre une fenêtre de discussion privée avec l'occupant " +"spécifié." + +#: ../src/groupchat_control.py:1219 +#, python-format +msgid "Usage: /%s, clears the text window." +msgstr "Usage : /%s, nettoie la fenêtre." + +#: ../src/groupchat_control.py:1221 +#, python-format +msgid "" +"Usage: /%s [reason], closes the current window or tab, displaying reason if " +"specified." +msgstr "" +"Usage : /%s [raison], ferme la fenêtre ou l'onglet courrant en affichant la " +"raison si spécifiée." + +#: ../src/groupchat_control.py:1224 +#, python-format +msgid "Usage: /%s, hide the chat buttons." +msgstr "Usage: /%s, cache les boutons de discussion." + +#: ../src/groupchat_control.py:1226 +#, python-format +msgid "" +"Usage: /%s [reason], invites JID to the current room, optionally " +"providing a reason." +msgstr "" +"Usage : /%s [raison], invite le JID dans le salon actuel, la raison " +"est optionnelle." + +#: ../src/groupchat_control.py:1230 +#, python-format +msgid "" +"Usage: /%s @[/nickname], offers to join room@server optionally " +"using specified nickname." +msgstr "" +"Usage : /%s @[/surnom], propose de rejoindre salon@serveur " +"en option on peut spécifier le surnom utilisé." + +#: ../src/groupchat_control.py:1234 +#, python-format +msgid "" +"Usage: /%s [reason], removes the occupant specified by nickname " +"from the room and optionally displays a reason. Does NOT support spaces in " +"nickname." +msgstr "" +"Usage : /%s [raison], supprime l'occupant portant le surnom " +"spécifié du salon et affiche en option la raison. Le surnom ne doit pas " +"contenir d'espaces !" + +#: ../src/groupchat_control.py:1239 +#, python-format +msgid "" +"Usage: /%s , sends action to the current room. Use third person. (e." +"g. /%s explodes.)" +msgstr "" +"Usage : /%s , envoie l'action au salon actuel. Utilise la troisième " +"personne. (ex : /%s explose.)" + +#: ../src/groupchat_control.py:1243 +#, python-format +msgid "" +"Usage: /%s [message], opens a private message windowand sends " +"message to the occupant specified by nickname." +msgstr "" +"Usage : /%s [message], ouvre une fenêtre de discussion privée et " +"envoie le message à l'occupant(e) spécifié(e) par le surnom." + +#: ../src/groupchat_control.py:1248 +#, python-format +msgid "Usage: /%s , changes your nickname in current room." +msgstr "Usage : /%s , change votre surnom dans ce salon." + +#: ../src/groupchat_control.py:1252 +#, fuzzy, python-format +msgid "Usage: /%s , display the names of room occupants." +msgstr "Usage : /%s [sujet], affiche ou met à jour le sujet actuel du salon." + +#: ../src/groupchat_control.py:1256 +#, python-format +msgid "Usage: /%s [topic], displays or updates the current room topic." +msgstr "Usage : /%s [sujet], affiche ou met à jour le sujet actuel du salon." + +#: ../src/groupchat_control.py:1259 +#, python-format +msgid "" +"Usage: /%s , sends a message without looking for other commands." +msgstr "" +"Usage : /%s , envoie un message sans chercher d'autres commandes." + +#: ../src/groupchat_control.py:1262 +#, python-format +msgid "No help info for /%s" +msgstr "N'eus skoazell hegerz ebet evit /%s" + +#: ../src/groupchat_control.py:1304 +#, python-format +msgid "Are you sure you want to leave room \"%s\"?" +msgstr "Ha sur oc'h e fell deoc'h kuitaat ar flap \"%s\"?" + +#: ../src/groupchat_control.py:1305 +msgid "If you close this window, you will be disconnected from this room." +msgstr "Ma serrit ar prenestr-mañ, e tigevreoc'h diouzh ar flap-mañ." + +#: ../src/groupchat_control.py:1309 +msgid "Do _not ask me again" +msgstr "_Chom hep goulenn ket" + +#: ../src/groupchat_control.py:1343 +msgid "Changing Subject" +msgstr "Cheñch ar sujed" + +#: ../src/groupchat_control.py:1344 +msgid "Please specify the new subject:" +msgstr "Skrivit ar sujed nevez:" + +#: ../src/groupchat_control.py:1352 +msgid "Changing Nickname" +msgstr "Cheñch lesanv" + +#: ../src/groupchat_control.py:1353 +msgid "Please specify the new nickname you want to use:" +msgstr "Skrivit al lesanv nevez a fell deoc'h implij:" + +#: ../src/groupchat_control.py:1379 +msgid "Bookmark already set" +msgstr "Sined lakaet dija" + +#: ../src/groupchat_control.py:1380 +#, python-format +msgid "Room \"%s\" is already in your bookmarks." +msgstr "Emañ ar flap \"%s\" en ho sinedoù dija." + +#: ../src/groupchat_control.py:1389 +msgid "Bookmark has been added successfully" +msgstr "Gant berzh eo bet ouzhpennet ar sined" + +#: ../src/groupchat_control.py:1390 +msgid "You can manage your bookmarks via Actions menu in your roster." +msgstr "" +"Bez e c'hellit merañ ho sinedoù dre ar meuziad Oberoù er roll-darempredoù." + +#. ask for reason +#: ../src/groupchat_control.py:1500 +#, python-format +msgid "Kicking %s" +msgstr "Skarzhañ %s" + +#: ../src/groupchat_control.py:1501 ../src/groupchat_control.py:1779 +msgid "You may specify a reason below:" +msgstr "Bez e c'hellit reiñ un abeg amañ dindan:" + +#. ask for reason +#: ../src/groupchat_control.py:1778 +#, python-format +msgid "Banning %s" +msgstr "Argas %s" + +#: ../src/gtkexcepthook.py:51 +msgid "A programming error has been detected" +msgstr "Ur fazi gouleviñ (programmiñ) ez eus bet kavet" + +#: ../src/gtkexcepthook.py:52 +msgid "" +"It probably is not fatal, but should be reported to the developers " +"nonetheless." +msgstr "" + +#: ../src/gtkexcepthook.py:58 +msgid "_Report Bug" +msgstr "_Diskleriañ ar Bug" + +#: ../src/gtkexcepthook.py:81 +msgid "Details" +msgstr "Munudoù" + +#. we talk about file +#: ../src/gtkgui_helpers.py:154 ../src/gtkgui_helpers.py:169 +#, python-format +msgid "Error: cannot open %s for reading" +msgstr "Fazi: dibosupl eo digeriñ %s evit e lenn" + +#: ../src/gtkgui_helpers.py:298 +msgid "Error reading file:" +msgstr "Fazi en ur lenn ar restr:" + +#: ../src/gtkgui_helpers.py:301 +msgid "Error parsing file:" +msgstr "" + +#. do not traceback (could be a permission problem) +#. we talk about a file here +#: ../src/gtkgui_helpers.py:339 +#, fuzzy, python-format +msgid "Could not write to %s. Session Management support will not work" +msgstr "N'eus ket bet tu skrivañ e-barzh %s." + +#: ../src/gtkgui_helpers.py:717 +msgid "Extension not supported" +msgstr "" + +#: ../src/gtkgui_helpers.py:718 +#, python-format +msgid "Image cannot be saved in %(type)s format. Save as %(new_filename)s?" +msgstr "" + +#: ../src/gtkgui_helpers.py:727 +#, fuzzy +msgid "Save Image as..." +msgstr "Enrollañ ar restr dindan..." + +#: ../src/history_manager.py:61 +msgid "Cannot find history logs database" +msgstr "Dibosupl eo kavout titourva an istoradur" + +#. holds jid +#: ../src/history_manager.py:104 +msgid "Contacts" +msgstr "Darempredoù" + +#. holds time +#: ../src/history_manager.py:117 ../src/history_manager.py:157 +#: ../src/history_window.py:85 +msgid "Date" +msgstr "Deiziad" + +#. holds nickname +#: ../src/history_manager.py:123 ../src/history_manager.py:175 +msgid "Nickname" +msgstr "Lesanv" + +#. holds message +#: ../src/history_manager.py:131 ../src/history_manager.py:163 +#: ../src/history_window.py:93 +msgid "Message" +msgstr "Kemennadenn" + +#. holds subject +#: ../src/history_manager.py:138 ../src/history_manager.py:169 +msgid "Subject" +msgstr "Titl" + +#: ../src/history_manager.py:183 +msgid "" +"Do you want to clean up the database? (STRONGLY NOT RECOMMENDED IF GAJIM IS " +"RUNNING)" +msgstr "" +"Ha fellout a ra deoc'h naetaat an titourva? (DIALIET GROÑS M'EMAÑ GAJIM O " +"VONT EN-DRO)" + +#: ../src/history_manager.py:185 +msgid "" +"Normally allocated database size will not be freed, it will just become " +"reusable. If you really want to reduce database filesize, click YES, else " +"click NO.\n" +"\n" +"In case you click YES, please wait..." +msgstr "" + +#: ../src/history_manager.py:391 +msgid "Exporting History Logs..." +msgstr "Oc'h ezporzhiañ an istoradur..." + +#: ../src/history_manager.py:467 +#, python-format +msgid "%(who)s on %(time)s said: %(message)s\n" +msgstr "%(time)s e lâras %(who)s: %(message)s\n" + +#: ../src/history_manager.py:467 +msgid "who" +msgstr "piv" + +#: ../src/history_manager.py:505 +msgid "Do you really want to delete logs of the selected contact?" +msgid_plural "Do you really want to delete logs of the selected contacts?" +msgstr[0] "Ha sur oc'h e fell deoc'h diverkañ istoradur an darempred-mañ?" +msgstr[1] "Ha sur oc'h e fell deoc'h diverkañ istoradur an darempredoù-mañ?" + +#: ../src/history_manager.py:509 ../src/history_manager.py:545 +#, fuzzy +msgid "This is an irreversible operation." +msgstr "Setu un ober n'eus ket tu da vont war e giz." + +#: ../src/history_manager.py:542 +msgid "Do you really want to delete the selected message?" +msgid_plural "Do you really want to delete the selected messages?" +msgstr[0] "Ha fellout a ra deoc'h da vat diverkañ ar gemennadenn ziuzet?" +msgstr[1] "Ha fellout a ra deoc'h da vat diverkañ ar c'hemennadennoù diuzet?" + +#: ../src/history_window.py:102 ../src/history_window.py:104 +#, python-format +msgid "Conversation History with %s" +msgstr "Istoradur flapiñ gant %s" + +#: ../src/history_window.py:258 +#, python-format +msgid "%(nick)s is now %(status)s: %(status_msg)s" +msgstr "%(nick)s a zo bremañ %(status)s : %(status_msg)s" + +#: ../src/history_window.py:262 ../src/notify.py:113 +#, python-format +msgid "%(nick)s is now %(status)s" +msgstr "%(nick)s a zo bremañ %(status)s" + +#: ../src/history_window.py:268 +#, python-format +msgid "Status is now: %(status)s: %(status_msg)s" +msgstr "Ar stad a zo bremañ: %(status)s: %(status_msg)s" + +#: ../src/history_window.py:271 +#, python-format +msgid "Status is now: %(status)s" +msgstr "Ar stad a zo bremañ: %(status)s" + +#: ../src/message_window.py:244 +msgid "Messages" +msgstr "Kemennadennoù" + +#: ../src/message_window.py:245 +#, python-format +msgid "%s - Gajim" +msgstr "%s - Gajim" + +#: ../src/notify.py:111 +#, fuzzy, python-format +msgid "%(nick)s Changed Status" +msgstr "%(nick)s a zo bremañ %(status)s" + +#: ../src/notify.py:121 +#, python-format +msgid "%(nickname)s Signed In" +msgstr "Emañ %(nickname)s o paouez lugañ" + +#: ../src/notify.py:129 +#, python-format +msgid "%(nickname)s Signed Out" +msgstr "Emañ %(nickname)s o paouez dilugañ" + +#: ../src/notify.py:141 +#, python-format +msgid "New Single Message from %(nickname)s" +msgstr "Kemennadenn simpl nevez digant %(nickname)s" + +#: ../src/notify.py:150 +#, python-format +msgid "New Private Message from room %s" +msgstr "Kemennadenn hiniennel nevez digant ar sal %s" + +#: ../src/notify.py:151 +#, python-format +msgid "%(nickname)s: %(message)s" +msgstr "%(nickname)s : %(message)s" + +#: ../src/notify.py:157 +#, python-format +msgid "New Message from %(nickname)s" +msgstr "Kemennadenn nevez digant %(nickname)s" + +#: ../src/roster_window.py:131 +msgid "Merged accounts" +msgstr "Kontoù strollet" + +#: ../src/roster_window.py:288 ../src/common/helpers.py:39 +msgid "Observers" +msgstr "Sellerien" + +#: ../src/roster_window.py:544 +#, python-format +msgid "You are already in room %s" +msgstr "Emaoc'h er webgaoz %s dija" + +#: ../src/roster_window.py:548 ../src/roster_window.py:2280 +msgid "You cannot join a room while you are invisible" +msgstr "N'hellit ket ebarzhiñ ur webgaoz keit ha m'emaoc'h diwelus." + +#. the 'manage gc bookmarks' item is showed +#. below to avoid duplicate code +#. add +#: ../src/roster_window.py:748 +#, python-format +msgid "to %s account" +msgstr "d'ar gont %s" + +#. disco +#: ../src/roster_window.py:755 +#, python-format +msgid "using %s account" +msgstr "en ur implij ar gont %s" + +#. new chat +#. for chat_with +#. for single message +#: ../src/roster_window.py:763 ../src/systray.py:193 ../src/systray.py:198 +#, python-format +msgid "using account %s" +msgstr "en ur implij ar gont %s" + +#. profile, avatar +#: ../src/roster_window.py:772 +#, python-format +msgid "of account %s" +msgstr "eus ar gont %s" + +#: ../src/roster_window.py:831 +msgid "Manage Bookmarks..." +msgstr "Merañ ar sinedoù..." + +#: ../src/roster_window.py:855 +#, python-format +msgid "for account %s" +msgstr "evit ar gont %s" + +#. History manager +#: ../src/roster_window.py:876 +msgid "History Manager" +msgstr "Merour an istoradur" + +#: ../src/roster_window.py:885 +msgid "_Join New Room" +msgstr "_Ebarzhiñ ur webgaoz nevez" + +#: ../src/roster_window.py:1159 +#, python-format +msgid "Transport \"%s\" will be removed" +msgstr "Dilamet e vo an nor \"%s\"" + +#: ../src/roster_window.py:1159 +msgid "" +"You will no longer be able to send and receive messages to contacts from " +"this transport." +msgstr "" +"N'helloc'h ket mui kas pe resev kemennadennoù d'an darempredoù liammet gant " +"an nor-mañ." + +#: ../src/roster_window.py:1201 +msgid "Assign OpenPGP Key" +msgstr "Assigner une clé OpenPGP" + +#: ../src/roster_window.py:1202 +#, fuzzy +msgid "Select a key to apply to the contact" +msgstr "Dibabit un alc'hwezh da" + +#: ../src/roster_window.py:1358 +msgid "I would like to add you to my roster" +msgstr "Laouen 'vefen d'az ouzhpennañ em roll-darempredoù" + +#: ../src/roster_window.py:1410 +msgid "Re_name" +msgstr "_Adenvel" + +#: ../src/roster_window.py:1441 +msgid "_Log on" +msgstr "_Lugañ" + +#: ../src/roster_window.py:1450 +msgid "Log _off" +msgstr "_Dilugañ" + +#: ../src/roster_window.py:1545 +msgid "_Change Status Message" +msgstr "_Kemmañ an titour-stad" + +#: ../src/roster_window.py:1621 +msgid "Authorization has been sent" +msgstr "Kaset eo bet an aotre" + +#: ../src/roster_window.py:1622 +#, python-format +msgid "Now \"%s\" will know your status." +msgstr "Anavezout a raio \"%s\" ho stad adalek bremañ." + +#: ../src/roster_window.py:1646 +msgid "Subscription request has been sent" +msgstr "Kaset eo bet ar goulenn goumanantiñ" + +#: ../src/roster_window.py:1647 +#, python-format +msgid "If \"%s\" accepts this request you will know his or her status." +msgstr "Ma asant \"%s\" ar c'houmanant e weloc'h he/e stad." + +#: ../src/roster_window.py:1658 +msgid "Authorization has been removed" +msgstr "Dilamet eo bet an aotre" + +#: ../src/roster_window.py:1659 +#, python-format +msgid "Now \"%s\" will always see you as offline." +msgstr "Adalek bremañ e welo ac'hanoc'h \"%s\" atav evel pa vefec'h ezlinenn." + +#: ../src/roster_window.py:1822 +#, python-format +msgid "Contact \"%s\" will be removed from your roster" +msgstr "Dilamet e vo an darempred \"%s\" diouzh ar roll" + +#: ../src/roster_window.py:1826 +msgid "" +"By removing this contact you also remove authorization resulting in him or " +"her always seeing you as offline." +msgstr "" +"En ur zilemel an darempred-mañ, e tilamit ivez e/he aotre. Atav e welo " +"ac'hanoc'h evel pa vefec'h ezlinenn." + +#: ../src/roster_window.py:1830 +msgid "" +"By removing this contact you also by default remove authorization resulting " +"in him or her always seeing you as offline." +msgstr "" +"En ur zilemel an darempred-mañ, e tilamit dre-ziouer he/e aotre. Atav e welo " +"ac'hanoc'h evel pa vefec'h ezlinenn." + +#: ../src/roster_window.py:1831 +msgid "I want this contact to know my status after removal" +msgstr "Aotreañ an darempred-mañ da welout ma stad war-lerc'h e zilam" + +#: ../src/roster_window.py:1899 +msgid "Passphrase Required" +msgstr "Ger-kuzh ret" + +#: ../src/roster_window.py:1900 +#, python-format +msgid "Enter GPG key passphrase for account %s." +msgstr "Roit ho ker-kuzh GPG evit ar gont %s." + +#: ../src/roster_window.py:1905 +msgid "Save passphrase" +msgstr "Enrollañ ar ger-kuzh" + +#: ../src/roster_window.py:1913 +msgid "Wrong Passphrase" +msgstr "Ger-kuzh faos" + +#: ../src/roster_window.py:1914 +msgid "Please retype your GPG passphrase or press Cancel." +msgstr "Adroit ho ker-kuzh GPG pe pouezit war Nullañ." + +#: ../src/roster_window.py:1963 ../src/roster_window.py:2020 +msgid "You are participating in one or more group chats" +msgstr "Kemer a rit perzh e unan pe meur a webgaoz" + +#: ../src/roster_window.py:1964 ../src/roster_window.py:2021 +msgid "" +"Changing your status to invisible will result in disconnection from those " +"group chats. Are you sure you want to go invisible?" +msgstr "" +"Tremen d'ar stad diwelus a lakao ac'hanoc'h da zilugañ diouzh ar webkaozioù-" +"se. Ha sur oc'h e fell deoc'h bezañ diwelus?" + +#: ../src/roster_window.py:1980 +msgid "No account available" +msgstr "Kont ebet hegerz" + +#: ../src/roster_window.py:1981 +msgid "You must create an account before you can chat with other contacts." +msgstr "Rankout a rit krouiñ ur gont a-raok gellout flapiñ gant tud all." + +#: ../src/roster_window.py:2452 ../src/roster_window.py:2458 +msgid "You have unread messages" +msgstr "Kemennadennoù nevez ho peus" + +#: ../src/roster_window.py:2453 ../src/roster_window.py:2459 +msgid "" +"Messages will only be available for reading them later if you have history " +"enabled." +msgstr "" +"Posubl e vo lenn ar gemennadennoù diwezhatoc'h m'emañ an istoradur war enaou." + +#: ../src/roster_window.py:3231 +#, python-format +msgid "Drop %s in group %s" +msgstr "Kas %s er strollad %s" + +#: ../src/roster_window.py:3238 +#, python-format +msgid "Make %s and %s metacontacts" +msgstr "Strollañ %s ha %s" + +#: ../src/roster_window.py:3408 +msgid "Change Status Message..." +msgstr "Kemmañ an titour-stad..." + +#: ../src/systray.py:154 +msgid "_Change Status Message..." +msgstr "_Kemmañ an titour-stad..." + +#: ../src/systray.py:231 +msgid "Hide this menu" +msgstr "Kuzhat ar meuziad-mañ" + +#: ../src/systraywin32.py:261 ../src/systraywin32.py:280 +#, python-format +msgid "Gajim - %d unread message" +msgid_plural "Gajim - %d unread messages" +msgstr[0] "Gajim - %d gemennadenn nevez" +msgstr[1] "Gajim - kemennadennoù nevez: %d" + +#: ../src/tooltips.py:326 +#, fuzzy, python-format +msgid " %d unread message" +msgid_plural " %d unread messages" +msgstr[0] "Gajim - %d gemennadenn nevez" +msgstr[1] "Gajim - kemennadennoù nevez: %d" + +#: ../src/tooltips.py:332 +#, fuzzy, python-format +msgid " %d unread single message" +msgid_plural " %d unread single messages" +msgstr[0] "Gajim - %d gemennadenn simpl nevez" +msgstr[1] "Gajim - kemennadennoù simpl nevez: %d" + +#: ../src/tooltips.py:338 +#, fuzzy, python-format +msgid " %d unread group chat message" +msgid_plural " %d unread group chat messages" +msgstr[0] "Gajim - %d gemennadenn webgaoz nevez" +msgstr[1] "Gajim - kemennadennoù webgaoz nevez: %d" + +#: ../src/tooltips.py:344 +#, fuzzy, python-format +msgid " %d unread private message" +msgid_plural " %d unread private messages" +msgstr[0] "Gajim - %d gemennadenn brevez nevez" +msgstr[1] "Gajim - kemennadennoù prevez nevez: %d" + +#: ../src/tooltips.py:359 ../src/tooltips.py:361 +#, python-format +msgid "Gajim - %s" +msgstr "Gajim - %s" + +#: ../src/tooltips.py:395 +msgid "Role: " +msgstr "Perzh:" + +#: ../src/tooltips.py:396 +msgid "Affiliation: " +msgstr "" + +#: ../src/tooltips.py:398 ../src/tooltips.py:537 +msgid "Resource: " +msgstr "" + +#: ../src/tooltips.py:407 ../src/tooltips.py:540 ../src/tooltips.py:565 +#: ../src/tooltips.py:676 +msgid "Status: " +msgstr "Stad:" + +#: ../src/tooltips.py:514 +msgid "Subscription: " +msgstr "Koumanant:" + +#: ../src/tooltips.py:523 +msgid "OpenPGP: " +msgstr "OpenPGP : " + +#: ../src/tooltips.py:570 +#, python-format +msgid "Last status on %s" +msgstr "Stad diwezhañ: %s" + +#: ../src/tooltips.py:572 +#, python-format +msgid "Since %s" +msgstr "Dibaoe %s" + +#: ../src/tooltips.py:632 +msgid "Download" +msgstr "Pellgargañ" + +#: ../src/tooltips.py:638 +msgid "Upload" +msgstr "Kas" + +#: ../src/tooltips.py:645 +msgid "Type: " +msgstr "Doare:" + +#: ../src/tooltips.py:651 +msgid "Transferred: " +msgstr "Treuzkaset:" + +#: ../src/tooltips.py:654 ../src/tooltips.py:675 +msgid "Not started" +msgstr "N'eo ket kroget" + +#: ../src/tooltips.py:658 +msgid "Stopped" +msgstr "Arsavet" + +#: ../src/tooltips.py:660 ../src/tooltips.py:663 +msgid "Completed" +msgstr "Echu" + +#. stalled is not paused. it is like 'frozen' it stopped alone +#: ../src/tooltips.py:671 +msgid "Stalled" +msgstr "" + +#: ../src/tooltips.py:673 +msgid "Transferring" +msgstr "O treuzkas" + +#: ../src/tooltips.py:705 +msgid "This service has not yet responded with detailed information" +msgstr "N'eus ket bet kaset titouroù munut gant ar servij-mañ c'hoazh" + +#: ../src/tooltips.py:708 +msgid "" +"This service could not respond with detailed information.\n" +"It is most likely legacy or broken" +msgstr "" +"N'eus ket bet kaset titouroù munut gant ar servij-mañ.\n" +"Sur 'walc'h eo torr pe kamm" + +#. keep identation +#: ../src/vcard.py:188 +msgid "Could not load image" +msgstr "Dibosupl eo kargañ ar skeudenn" + +#: ../src/vcard.py:289 +msgid "?Client:Unknown" +msgstr "Dianav" + +#: ../src/vcard.py:291 +msgid "?OS:Unknown" +msgstr "Dianav" + +#: ../src/vcard.py:308 +#, python-format +msgid "since %s" +msgstr "dibaoe %s" + +#: ../src/vcard.py:332 +msgid "" +"This contact is interested in your presence information, but you are not " +"interested in his/her presence" +msgstr "" +"Dedennet eo an darempred-mañ gant ho pezañs, met n'oc'h ket gant he/e hini" + +#: ../src/vcard.py:334 +msgid "" +"You are interested in the contact's presence information, but he/she is not " +"interested in yours" +msgstr "" +"Dedennet oc'h gant bezañs an darempred-mañ, met hennezh/hounnez n'eo ket " +"gant ho hini" + +#: ../src/vcard.py:336 +msgid "You and the contact are interested in each other's presence information" +msgstr "Dedennet hoc'h an eil gant bezañs egile/eben" + +#. None +#: ../src/vcard.py:338 +msgid "" +"You are not interested in the contact's presence, and neither he/she is " +"interested in yours" +msgstr "" +"N'oc'h ket dedennet gant bezañs an darempred-mañ, nag eñ/hi gant ho hini" + +#: ../src/vcard.py:347 +msgid "You are waiting contact's answer about your subscription request" +msgstr "Emaoc'h o c'hortoz respont an darempred d'ho koulenn koumanantiñ" + +#: ../src/vcard.py:359 ../src/vcard.py:382 +msgid " resource with priority " +msgstr "" + +#: ../src/vcard.py:458 +msgid "Without a connection you can not publish your contact information." +msgstr "Rankout a rit bezaén luget evit embann ho titouroù hiniennel." + +#: ../src/vcard.py:491 +msgid "Without a connection, you can not get your contact information." +msgstr "Rankout a rit bezañ luget evit kaout titouroù an darempred." + +#: ../src/vcard.py:495 +msgid "Personal details" +msgstr "Titouroù hiniennel" + +#: ../src/common/check_paths.py:35 +msgid "creating logs database" +msgstr "o krouiñ titourva an istoradur" + +#: ../src/common/check_paths.py:82 ../src/common/check_paths.py:93 +#: ../src/common/check_paths.py:100 +#, python-format +msgid "%s is file but it should be a directory" +msgstr "ur restr eo %s met rankout a rafe bezañ ur renkell" + +#: ../src/common/check_paths.py:83 ../src/common/check_paths.py:94 +#: ../src/common/check_paths.py:101 ../src/common/check_paths.py:109 +msgid "Gajim will now exit" +msgstr "Emañ Gajim o vont da guitaat diouzhtu" + +#: ../src/common/check_paths.py:108 +#, python-format +msgid "%s is directory but should be file" +msgstr "ur renkell eo %s met rankout a rafe bezañ ur restr" + +#: ../src/common/check_paths.py:124 +#, python-format +msgid "creating %s directory" +msgstr "a grou ar renkell %s" + +#: ../src/common/exceptions.py:32 +msgid "pysqlite2 (aka python-pysqlite2) dependency is missing. Exiting..." +msgstr "pysqlite2 (ou python-pysqlite2) n'eo ket staliet. O kuitaat..." + +#: ../src/common/exceptions.py:40 +msgid "Service not available: Gajim is not running, or remote_control is False" +msgstr "" +"Servij dihegerz: n'eo ket loc'het Gajim, pe lakaet eo bet remote_control war " +"False" + +#: ../src/common/exceptions.py:48 +msgid "D-Bus is not present on this machine or python module is missing" +msgstr "" +"N'eus ket eus D-Bus war an urzhiataer-mañ, pe mankout a ra ur mollad python" + +#: ../src/common/exceptions.py:56 +msgid "" +"Session bus is not available.\n" +"Try reading http://trac.gajim.org/wiki/GajimDBus" +msgstr "" +"Dihegerz eo bus an estez.\n" +"Klaskit o lenn http://trac.gajim.org/wiki/GajimDBus" + +#: ../src/common/config.py:51 +msgid "Use DBus and Notification-Daemon to show notifications" +msgstr "" +"Implij DBus ha Notification-Daemon evit diskouez ar c'hemennadennoù-kelaouiñ" + +#: ../src/common/config.py:55 +msgid "Time in minutes, after which your status changes to away." +msgstr "War-lerc'h pet munutenn e vo lakaet ho stad evel ezvezant." + +#: ../src/common/config.py:56 +msgid "Away as a result of being idle" +msgstr "Ezvezant rak dizoberiant" + +#: ../src/common/config.py:58 +msgid "Time in minutes, after which your status changes to not available." +msgstr "War-lerc'h pet munutenn e vo lakaet ho stad evel dihegerz." + +#: ../src/common/config.py:59 +msgid "Not available as a result of being idle" +msgstr "Dihegerz rak dizoberiant." + +#: ../src/common/config.py:77 +msgid "List (space separated) of rows (accounts and groups) that are collapsed" +msgstr "" + +#: ../src/common/config.py:83 +msgid "" +"'always' - print time for every message.\n" +"'sometimes' - print time every print_ichat_every_foo_minutes minute.\n" +"'never' - never print time." +msgstr "" + +#: ../src/common/config.py:84 +msgid "" +"Value of fuzziness from 1 to 4 or 0 to disable fuzzyclock. 1 is the most " +"precise clock, 4 the less precise one." +msgstr "" + +#: ../src/common/config.py:87 +msgid "Treat * / _ pairs as possible formatting characters." +msgstr "Implij ur re */_ evel arouezioù neuziañ an destenn." + +#: ../src/common/config.py:88 +msgid "" +"If True, do not remove */_ . So *abc* will be bold but with * * not removed." +msgstr "" +"M'eo gwir, ne vo ket dilamet */_. Neuze e vo *abc* tev ma ne vez ket dilamet " +"* *." + +#: ../src/common/config.py:98 +msgid "" +"Character to add after nickname when using nick completion (tab) in group " +"chat" +msgstr "" + +#: ../src/common/config.py:99 +msgid "" +"Character to propose to add after desired nickname when desired nickname is " +"used by someone else in group chat" +msgstr "" + +#: ../src/common/config.py:131 +msgid "Add * and [n] in roster title?" +msgstr "Ouzhpennañ * hag [n] da ditl ar roll darempredoù?" + +#: ../src/common/config.py:132 +msgid "" +"How many lines to remember from previous conversation when a chat tab/window " +"is reopened." +msgstr "" +"Niver a linennoù da vemoriñ diouzh ar gaozeadenn gent pa vez addigoret un " +"ivinell pe ur prenestr." + +#: ../src/common/config.py:133 +msgid "How many minutes should last lines from previous conversation last." +msgstr "" +"E-pad pet munutenn e rank linennoù diwezhañ ar gaozeadenn kent bezañ " +"gwarezet." + +#: ../src/common/config.py:134 +msgid "" +"Send message on Ctrl+Enter and with Enter make new line (Mirabilis ICQ " +"Client default behaviour)." +msgstr "" +"Kas ar gemennadenn gant Ctrl+Kas ha mont d'al linenn gant Kas (emzalc'h dre-" +"ziouer ar poellad ICQ Mirabilis)." + +#: ../src/common/config.py:136 +msgid "How many lines to store for Ctrl+KeyUP." +msgstr "Niver a linennoù da zerc'hel soñj evit Ctrl+BirLaez" + +#: ../src/common/config.py:139 +#, python-format +msgid "" +"Either custom url with %s in it where %s is the word/phrase or 'WIKTIONARY' " +"which means use wiktionary." +msgstr "" +"Pe un url personelaet gant %s ennañ, %s o vezañ ar ger-kuzh pe 'WIKTIONARY' " +"hag a dalvez implij wiktionary." + +#: ../src/common/config.py:142 +msgid "If checked, Gajim can be controlled remotely using gajim-remote." +msgstr "" +"M'eo diuzet, e vo tu da sturiañ Gajim a-bell en ur implij gajim-remote." + +#: ../src/common/config.py:145 +msgid "" +"When not printing time for every message (print_time==sometimes), print it " +"every x minutes" +msgstr "" + +#: ../src/common/config.py:146 +msgid "Ask before closing a group chat tab/window." +msgstr "Goulenn a-raok serriñ un ivinell pe ur prenestr." + +#: ../src/common/config.py:147 +msgid "" +"Always ask before closing group chat tab/window in this space separated list " +"of room jids." +msgstr "" +"Goulenn atav a-raok serriñ ar webgaozioù dispartiet gant un esaouenn ar roll-" +"mañ." + +#: ../src/common/config.py:148 +msgid "" +"Never ask before closing group chat tab/window in this space separated list " +"of room jids." +msgstr "" +"Chom hep goulenn morse a-raok serriñ ar webgaozioù dispartiet gant un " +"esaouenn er roll-mañ." + +#: ../src/common/config.py:151 +msgid "" +"Overrides the host we send for File Transfer in case of address translation/" +"port forwarding." +msgstr "" + +#: ../src/common/config.py:153 +msgid "IEC standard says KiB = 1024 bytes, KB = 1000 bytes." +msgstr "Hervez ar standard IEC, KiB = 1024 byte, KB = 1000 byte." + +#: ../src/common/config.py:161 +msgid "Show tab when only one conversation?" +msgstr "Diskouez an ivinell pa 'z eus ur gaoz hepken?" + +#: ../src/common/config.py:162 +#, fuzzy +msgid "Show tabbed notebook border in chat windows?" +msgstr "Diskouez an ivinell pa 'z eus ur gaoz hepken?" + +#: ../src/common/config.py:163 +msgid "Show close button in tab?" +msgstr "Diskouez an nozelenn-serriñ war an ivinell?" + +#: ../src/common/config.py:176 +msgid "" +"A semicolon-separated list of words that will be highlighted in multi-user " +"chat." +msgstr "" + +#: ../src/common/config.py:177 +msgid "" +"If True, quits Gajim when X button of Window Manager is clicked. This " +"setting is taken into account only if trayicon is used." +msgstr "" + +#: ../src/common/config.py:178 +msgid "If True, Gajim registers for xmpp:// on each startup." +msgstr "" + +#: ../src/common/config.py:179 +msgid "" +"If True, Gajim will display an icon on each tab containing unread messages. " +"Depending on the theme, this icon may be animated." +msgstr "" + +#: ../src/common/config.py:180 +msgid "" +"If True, Gajim will display the status message, if not empty, for every " +"contact under the contact name in roster window" +msgstr "" + +#: ../src/common/config.py:182 +msgid "" +"If True, Gajim will ask for avatar each contact that did not have an avatar " +"last time or has one cached that is too old." +msgstr "" + +#: ../src/common/config.py:183 +msgid "" +"If False, Gajim will no longer print status line in chats when a contact " +"changes his or her status and/or his or her status message." +msgstr "" + +#: ../src/common/config.py:184 +msgid "" +"can be \"none\", \"all\" or \"in_and_out\". If \"none\", Gajim will no " +"longer print status line in groupchats when a member changes his or her " +"status and/or his or her status message. If \"all\" Gajim will print all " +"status messages. If \"in_and_out\", gajim will only print FOO enters/leaves " +"room" +msgstr "" + +#: ../src/common/config.py:187 +msgid "Don't show avatar for the transport itself." +msgstr "" + +#: ../src/common/config.py:189 +msgid "" +"If True and installed GTK+ and PyGTK versions are at least 2.8, make the " +"window flash (the default behaviour in most Window Managers) when holding " +"pending events." +msgstr "" + +#: ../src/common/config.py:191 +msgid "" +"Jabberd1.4 does not like sha info when one join a password protected room. " +"Turn this option to False to stop sending sha info in groupchat presences" +msgstr "" +"Jabberd1.4 n'aime pas l'information sha quand on rejoint un salon protégé " +"par un mot de passe. Passer cette option a Faux pour ne plus envoyer " +"l'information sha dans les présences des salons" + +#. always, never, peracct, pertype should not be translated +#: ../src/common/config.py:194 +msgid "" +"Controls the window where new messages are placed.\n" +"'always' - All messages are sent to a single window.\n" +"'never' - All messages get their own window.\n" +"'peracct' - Messages for each account are sent to a specific window.\n" +"'pertype' - Each message type (e.g., chats vs. groupchats) are sent to a " +"specific window. Note, changing this option requires restarting Gajim before " +"the changes will take effect" +msgstr "" +"A reolia ar prenestr a vez lakaet ar c'hemennadennoù nevez enni.\n" +"'always' - An holl gaozioù en hevelep prenestr.\n" +"'never' - An holl gaozioù e prenestroù disheñvel.\n" +"'peracct' - An holl gaozioù en ur prenestr hervez ar gont.\n" +"'pertype' - Bep a brenestr gant ur stumm flapiñ (webgaoz/flap)." + +#: ../src/common/config.py:195 +msgid "If False, you will no longer see the avatar in the chat window" +msgstr "M'eo faos, ne weloc'h ket an avatar er prenestr-flapiñ ken" + +#: ../src/common/config.py:196 +msgid "If True, pressing the escape key closes a tab/window" +msgstr "" +"M'eo gwir, klikit war an douchenn Echap evit serriñ un ivinell/prenestr" + +#: ../src/common/config.py:197 +msgid "Hides the buttons in group chat window" +msgstr "A guzha an nozelennoù er prenestroù webgaoz" + +#: ../src/common/config.py:198 +msgid "Hides the buttons in two persons chat window" +msgstr "A guzha an nozelennoù er prenestroù-flapiñ" + +#: ../src/common/config.py:199 +msgid "Hides the banner in a group chat window" +msgstr "A guzha an nozelennoù er prenestr flapiñ" + +#: ../src/common/config.py:200 +msgid "Hides the banner in two persons chat window" +msgstr "" + +#: ../src/common/config.py:201 +msgid "Hides the room occupants list in groupchat window" +msgstr "A guzha roll ar berzhidi en ur prenestr webgaoz" + +#: ../src/common/config.py:202 +msgid "Merge consecutive nickname in chat window" +msgstr "" + +#: ../src/common/config.py:203 +msgid "Indentation when using merge consecutive nickame" +msgstr "" + +#: ../src/common/config.py:204 +msgid "List of colors that will be used to color nicknames in groupchats" +msgstr "" + +#. yes, no, ask +#: ../src/common/config.py:237 +msgid "Jabberd2 workaround" +msgstr "" + +#: ../src/common/config.py:241 +msgid "" +"If checked, Gajim will use your IP and proxies defined in " +"file_transfer_proxies option for file transfer." +msgstr "" + +#: ../src/common/config.py:297 +msgid "Sleeping" +msgstr "O kousket" + +#: ../src/common/config.py:298 +msgid "Back soon" +msgstr "Distro 'benn nebeut" + +#: ../src/common/config.py:298 +msgid "Back in some minutes." +msgstr "Distro 'vin a-benn un nebeut munutennoù.." + +#: ../src/common/config.py:299 +msgid "Eating" +msgstr "O tebriñ" + +#: ../src/common/config.py:299 +msgid "I'm eating, so leave me a message." +msgstr "O tebriñ 'maon, neuze laoskit ur gemennadenn." + +#: ../src/common/config.py:300 +msgid "Movie" +msgstr "Film" + +#: ../src/common/config.py:300 +msgid "I'm watching a movie." +msgstr "O sellout ouzh ur film 'maon." + +#: ../src/common/config.py:301 +msgid "Working" +msgstr "O labourat" + +#: ../src/common/config.py:301 +msgid "I'm working." +msgstr "O labourat 'maon." + +#: ../src/common/config.py:302 +msgid "Phone" +msgstr "Pellgomz" + +#: ../src/common/config.py:302 +msgid "I'm on the phone." +msgstr "Ouzh ar pellgomz emaon." + +#: ../src/common/config.py:303 +msgid "Out" +msgstr "Er-maez" + +#: ../src/common/config.py:303 +msgid "I'm out enjoying life" +msgstr "Er-maez emaon o profitañ eus ar vuhez" + +#: ../src/common/config.py:312 +msgid "" +"Sound to play when a MUC message contains one of the words in " +"muc_highlight_words, or when a MUC message contains your nickname." +msgstr "" + +#: ../src/common/config.py:313 +msgid "" +"Sound to play when any MUC message arrives. (This setting is taken into " +"account only if notify_on_all_muc_messages is True)" +msgstr "" + +#: ../src/common/config.py:321 ../src/common/optparser.py:185 +msgid "green" +msgstr "Glas" + +#: ../src/common/config.py:325 ../src/common/optparser.py:171 +msgid "grocery" +msgstr "" + +#: ../src/common/config.py:329 +msgid "human" +msgstr "Mab-den" + +#: ../src/common/config.py:333 +msgid "marine" +msgstr "Glas-mor" + +#: ../src/common/connection.py:172 +#, python-format +msgid "Connection with account \"%s\" has been lost" +msgstr "Kollet eo bet al lugadenn gant ar gont \"%s\"" + +#: ../src/common/connection.py:173 +msgid "To continue sending and receiving messages, you will need to reconnect." +msgstr "" +"Evit kenderc'hel da gas ha da resev kemennadennoù, e rankit lugañ en-dro." + +#: ../src/common/connection.py:185 ../src/common/connection.py:211 +#, python-format +msgid "Transport %s answered wrongly to register request." +msgstr "Respontet fall he deus an nor %s d'ar goulenn emezelañ." + +#. wrong answer +#: ../src/common/connection.py:210 +msgid "Invalid answer" +msgstr "Respont direizh" + +#: ../src/common/connection.py:397 ../src/common/connection.py:433 +#: ../src/common/connection.py:857 +#, python-format +msgid "Could not connect to \"%s\"" +msgstr "Dibosupl eo en em lugañ da \"%s\"" + +#: ../src/common/connection.py:411 +#, python-format +msgid "Connected to server %s:%s with %s" +msgstr "Luget d'ar servijer %s:%s gant %s" + +#: ../src/common/connection.py:434 +msgid "Check your connection or try again later" +msgstr "Gwiriekait ho lugadenn pe klaskit en-dro diwezhatoc'h" + +#: ../src/common/connection.py:459 +#, python-format +msgid "Authentication failed with \"%s\"" +msgstr "C'hwitet an diskleriadenn gant \"%s\"" + +#: ../src/common/connection.py:460 +msgid "Please check your login and password for correctness." +msgstr "Gwiriekait ho ker-kuzh hag anv-lugañ." + +#. We didn't set a passphrase +#: ../src/common/connection.py:573 +msgid "OpenPGP passphrase was not given" +msgstr "N'eo ket bet roet ar ger-kuzh OpenPGP" + +#. %s is the account name here +#: ../src/common/connection.py:575 +#, python-format +msgid "You will be connected to %s without OpenPGP." +msgstr "Luget e voc'h da %s hep OpenPGP." + +#. do not show I'm invisible! +#: ../src/common/connection.py:612 +msgid "invisible" +msgstr "Diwelus" + +#: ../src/common/connection.py:613 +msgid "offline" +msgstr "Ezlinenn" + +#: ../src/common/connection.py:614 +#, python-format +msgid "I'm %s" +msgstr "%s on" + +#. we're not english +#: ../src/common/connection.py:699 +msgid "[This message is encrypted]" +msgstr "[Sifret eo ar gemennadenn-mañ]" + +#: ../src/common/connection.py:742 +#, python-format +msgid "" +"Subject: %s\n" +"%s" +msgstr "" +"Titl : %s\n" +"%s" + +#: ../src/common/connection.py:795 ../src/common/connection_handlers.py:1511 +msgid "I would like to add you to my roster." +msgstr "Laouen 'vefen d'ho ouzhpennañ em roll-darempredoù." + +#: ../src/common/connection_handlers.py:49 +#, fuzzy +msgid "Unable to load idle module" +msgstr "Impossible de rejoindre le salon" + +#: ../src/common/connection_handlers.py:581 +#, python-format +msgid "Registration information for transport %s has not arrived in time" +msgstr "" +"L'information d'enregistrement pour la passerelle %s n'est pas arrivée à " +"temps" + +#. password required to join +#. we are banned +#. room does not exist +#: ../src/common/connection_handlers.py:1450 +#: ../src/common/connection_handlers.py:1453 +#: ../src/common/connection_handlers.py:1456 +#: ../src/common/connection_handlers.py:1459 +#: ../src/common/connection_handlers.py:1462 +#: ../src/common/connection_handlers.py:1465 +#: ../src/common/connection_handlers.py:1473 +msgid "Unable to join room" +msgstr "Impossible de rejoindre le salon" + +#: ../src/common/connection_handlers.py:1451 +msgid "A password is required to join this room." +msgstr "Un mot de passe est requis pour rejoindre ce salon." + +#: ../src/common/connection_handlers.py:1454 +msgid "You are banned from this room." +msgstr "Vous êtes banni de ce salon." + +#: ../src/common/connection_handlers.py:1457 +msgid "Such room does not exist." +msgstr "Ce salon n'existe pas." + +#: ../src/common/connection_handlers.py:1460 +msgid "Room creation is restricted." +msgstr "La création de salon est réservée aux administrateurs." + +#: ../src/common/connection_handlers.py:1463 +msgid "Your registered nickname must be used." +msgstr "Vous devez utiliser le surnom donné lors de l'enregistrement." + +#: ../src/common/connection_handlers.py:1466 +msgid "You are not in the members list." +msgstr "Vous n'êtes pas dans la liste des membres." + +#: ../src/common/connection_handlers.py:1474 +msgid "" +"Your desired nickname is in use or registered by another occupant.\n" +"Please specify another nickname below:" +msgstr "" +"Le surnom que vous vouliez utiliser est actuellement utilisé ou enregistré " +"par un autre occupant.\n" +"Veuillez entrer un autre surnom ci-dessous :" + +#. BE CAREFUL: no con.updateRosterItem() in a callback +#: ../src/common/connection_handlers.py:1519 +#, python-format +msgid "we are now subscribed to %s" +msgstr "nous sommes maintenant inscrits chez %s" + +#: ../src/common/connection_handlers.py:1521 +#, python-format +msgid "unsubscribe request from %s" +msgstr "Requête de désinscription de la part de %s" + +#: ../src/common/connection_handlers.py:1523 +#, python-format +msgid "we are now unsubscribed from %s" +msgstr "nous ne sommes plus dans la liste de %s" + +#: ../src/common/connection_handlers.py:1680 +#, fuzzy, python-format +msgid "" +"JID %s is not RFC compliant. It will not be added to your roster. Use roster " +"management tools such as http://jru.jabberstudio.org/ to remove it" +msgstr "" +"je Jid %s ne respecte pas la norma RFC. Il ne sera pas ajouté a votre liste " +"de contact. Utiliser un outil de gestion de liste de contact tel que http://" +"jru.jabberstudio.org/ pour le supprimer" + +#: ../src/common/helpers.py:100 +msgid "Invalid character in username." +msgstr "Arouezenn ziereizh en anv-arveriad-ez" + +#: ../src/common/helpers.py:105 +msgid "Server address required." +msgstr "Chomlec'h ar servijer dre ret" + +#: ../src/common/helpers.py:110 +msgid "Invalid character in hostname." +msgstr "Arouezenn zireizh en anv-ostiz." + +#: ../src/common/helpers.py:116 +msgid "Invalid character in resource." +msgstr "" + +#. GiB means gibibyte +#: ../src/common/helpers.py:156 +#, python-format +msgid "%s GiB" +msgstr "%s Go" + +#. GB means gigabyte +#: ../src/common/helpers.py:159 +#, python-format +msgid "%s GB" +msgstr "%s Go" + +#. MiB means mibibyte +#: ../src/common/helpers.py:163 +#, python-format +msgid "%s MiB" +msgstr "%s Mo" + +#. MB means megabyte +#: ../src/common/helpers.py:166 +#, python-format +msgid "%s MB" +msgstr "%s Mo" + +#. KiB means kibibyte +#: ../src/common/helpers.py:170 +#, python-format +msgid "%s KiB" +msgstr "%s Ko" + +#. KB means kilo bytes +#: ../src/common/helpers.py:173 +#, python-format +msgid "%s KB" +msgstr "%s Ko" + +#. B means bytes +#: ../src/common/helpers.py:176 +#, python-format +msgid "%s B" +msgstr "%s o" + +#: ../src/common/helpers.py:205 +msgid "_Busy" +msgstr "" + +#: ../src/common/helpers.py:207 +msgid "Busy" +msgstr "" + +#: ../src/common/helpers.py:210 +msgid "_Not Available" +msgstr "D_ihegerz" + +#: ../src/common/helpers.py:212 +msgid "Not Available" +msgstr "Dihegerz" + +#: ../src/common/helpers.py:215 +msgid "_Free for Chat" +msgstr "_Prest da flapiñ" + +#: ../src/common/helpers.py:217 +msgid "Free for Chat" +msgstr "Prest da flapiñ" + +#: ../src/common/helpers.py:220 +msgid "_Available" +msgstr "_Hegerz" + +#: ../src/common/helpers.py:222 +msgid "Available" +msgstr "Hegerz" + +#: ../src/common/helpers.py:224 +msgid "Connecting" +msgstr "O lugañ" + +#: ../src/common/helpers.py:227 +msgid "A_way" +msgstr "E_zvezant" + +#: ../src/common/helpers.py:229 +msgid "Away" +msgstr "Ezvezant" + +#: ../src/common/helpers.py:232 +msgid "_Offline" +msgstr "_Ezlinenn" + +#: ../src/common/helpers.py:234 +msgid "Offline" +msgstr "Ezlinenn" + +#: ../src/common/helpers.py:237 +msgid "_Invisible" +msgstr "_Diwelus" + +#: ../src/common/helpers.py:243 +msgid "?contact has status:Unknown" +msgstr "Dianav" + +#: ../src/common/helpers.py:245 +msgid "?contact has status:Has errors" +msgstr "fazi" + +#: ../src/common/helpers.py:250 +msgid "?Subscription we already have:None" +msgstr "Hini ebet" + +#: ../src/common/helpers.py:252 +msgid "To" +msgstr "Da" + +#: ../src/common/helpers.py:254 +msgid "From" +msgstr "Digant" + +#: ../src/common/helpers.py:256 +msgid "Both" +msgstr "An daou" + +#: ../src/common/helpers.py:264 +msgid "?Ask (for Subscription):None" +msgstr "Hini ebet" + +#: ../src/common/helpers.py:266 +msgid "Subscribe" +msgstr "Emezelañ" + +#: ../src/common/helpers.py:275 +msgid "?Group Chat Contact Role:None" +msgstr "Hini ebet" + +#: ../src/common/helpers.py:278 +msgid "Moderators" +msgstr "Kasourien" + +#: ../src/common/helpers.py:280 +msgid "Moderator" +msgstr "Kasour-ez" + +#: ../src/common/helpers.py:283 +msgid "Participants" +msgstr "Perzhidi" + +#: ../src/common/helpers.py:285 +msgid "Participant" +msgstr "Perzhiad-ez" + +#: ../src/common/helpers.py:288 +msgid "Visitors" +msgstr "Gweladennerien" + +#: ../src/common/helpers.py:290 +msgid "Visitor" +msgstr "Gweladenner-ez" + +#: ../src/common/helpers.py:326 +msgid "is paying attention to the conversation" +msgstr "a zo aketus d'ar gaozeadenn" + +#: ../src/common/helpers.py:328 +msgid "is doing something else" +msgstr "a ra un dra bennak all" + +#: ../src/common/helpers.py:330 +msgid "is composing a message..." +msgstr "a skriv ur gemennadenn..." + +#. paused means he or she was compoing but has stopped for a while +#: ../src/common/helpers.py:333 +msgid "paused composing a message" +msgstr "a zo paouezet da skrivañ ar gemennadenn" + +#: ../src/common/helpers.py:335 +msgid "has closed the chat window or tab" +msgstr "he/en deus serret ar prenestr-flapiñ pe an ivinell" + +#. we talk about a file +#: ../src/common/optparser.py:60 +#, python-format +msgid "error: cannot open %s for reading" +msgstr "fazi: dibosupl eo digeriñ %s evit lenn" + +#: ../src/common/optparser.py:171 +msgid "gtk+" +msgstr "gtk+" + +#: ../src/common/optparser.py:180 ../src/common/optparser.py:181 +msgid "cyan" +msgstr "Cyan" + +#~ msgid "Automatically authorize contact" +#~ msgstr "Aotren war-eeun an darempred" + +#~ msgid "Send File" +#~ msgstr "Kas ur restr" + +#~ msgid "Underline" +#~ msgstr "Islinennañ" + +#~ msgid "Would you like to overwrite it?" +#~ msgstr "Voulez-vous l'écraser ?" + +#~ msgid "_Join New Room..." +#~ msgstr "Re_joindre un nouveau salon..." + +#~ msgid "Usage: /%s, sets the groupchat window to compact mode." +#~ msgstr "" +#~ "Usage : /%s, passe la fenêtre de salon de discussion en vue compacte." + +#, fuzzy +#~ msgid "Please modify your special notification below" +#~ msgstr "Choisissez une des options suivantes :" + +#~ msgid "Delete Message of the Day" +#~ msgstr "Supprimer le message du jour" + +#, fuzzy +#~ msgid "I want a notification popup:" +#~ msgstr "Noti_fications d'état de discussion" + +#, fuzzy +#~ msgid "I want to listen to:" +#~ msgstr "%s souhaite vous envoyer un fichier :" + +#~ msgid "Send _New Message..." +#~ msgstr "Envoyer un _nouveau message..." + +#~ msgid "Set Message of the Day" +#~ msgstr "Définir un message du jour" + +#~ msgid "Update Message of the Day" +#~ msgstr "Mettre à jour le message du jour" + +#~ msgid "_XML Console..." +#~ msgstr "Console _XML..." + +#~ msgid "Choose Avatar" +#~ msgstr "Choisissez un Avatar" + +#~ msgid "Use compact view when you open a chat window" +#~ msgstr "" +#~ "Utiliser la vue compacte quand vous ouvrez une fenêtre de discussion" + +#~ msgid "Use compact view when you open a group chat window" +#~ msgstr "Utiliser la vue compacte quand vous ouvrez une fenêtre de salon" + +#~ msgid "plain" +#~ msgstr "Standard" + +#~ msgid "Send" +#~ msgstr "Envoyer" + +#~ msgid "%(nickname)s in room %(room_name)s has sent you a new message." +#~ msgstr "" +#~ "%(nickname)s du salon %(room_name)s vous a envoyé un nouveau message." + +#~ msgid "%s has sent you a new message." +#~ msgstr "%s vous a envoyé un nouveau message." + +#, fuzzy +#~ msgid "GUI Migration failed" +#~ msgstr "échec lors de la publication de votre vCard" + +#~ msgid "Logs have been successfully migrated to the database." +#~ msgstr "L'historique a été corectement récupéré." + +#~ msgid "If checked, Gajim will also have a trayicon" +#~ msgstr "" +#~ "Si cette case est cochée, Gajim placera une icône dans la zone de " +#~ "notification" + +#~ msgid "_Online Users" +#~ msgstr "Utilisateurs En _Ligne" + +#, fuzzy +#~ msgid "Start Chat with Contact" +#~ msgstr "Commencer une discussion avec le compte %s" + +#~ msgid "All contacts in this group are offline or have errors" +#~ msgstr "Tous les contacts de ce groupe sont déconnectés ou ont des erreurs" + +#~ msgid "Size: " +#~ msgstr "Taille : " + +#~ msgid "Session bus is not available" +#~ msgstr "Le bus de session n'est pas disponible" + +#~ msgid "Sound" +#~ msgstr "Son" + +#~ msgid "Text" +#~ msgstr "Texte" + +#~ msgid "Image" +#~ msgstr "Image" + +#~ msgid "From %s" +#~ msgstr "De %s" + +#~ msgid "To %s" +#~ msgstr "À %s" + +#~ msgid "You have been invited to the %(room_jid)s room by %(contact_jid)s" +#~ msgstr "Vous avez été invité dans le salon %(room_jid)s par %(contact_jid)s" + +#~ msgid "Manage Emoticons" +#~ msgstr "Gérer les frimousses" + +#~ msgid "Or choose a preset message:" +#~ msgstr "Ou choisissez votre message :" + +#~ msgid "Use _emoticons" +#~ msgstr "Utiliser les _frimousses" + +#~ msgid "_Set Image..." +#~ msgstr "_Choisir une image..." + +#~ msgid "Switch to %s" +#~ msgstr "Basculer vers %s" + +#~ msgid "using account " +#~ msgstr "en utilisant le compte " + +#~ msgid "The filesize of image \"%s\" is too large" +#~ msgstr "Le taille du fichier de l'image \"%s\" est trop importante" + +#~ msgid "The file must not be more than 32 kilobytes." +#~ msgstr "Le fichier ne doit pas excéder les 32 kilobytes." + +#~ msgid "Timeout" +#~ msgstr "Dépassement de temps" + +#~ msgid "A protocol error has occured:" +#~ msgstr "Une erreur de protocole s'est produite :" + +#~ msgid "account: " +#~ msgstr "compte : " + +#~ msgid "Are you sure you want to leave rooms \"%s\"?" +#~ msgstr "Êtes-vous sûr de vouloir quitter les salons \"%s\" ?" + +#~ msgid "If you close this window, you will be disconnected from these rooms." +#~ msgstr "Si vous fermer cette fenêtre, vous serez déconnecté de ces salons." + +#~ msgid "Activate/Disable notification for when a file transfer is complete" +#~ msgstr "Active/Désactive la notification de fin de transfert" + +#~ msgid "Removing selected file transfer" +#~ msgstr "Supprime le transfert du fichier sélectionné" + +#~ msgid "Stoping selected file transfer" +#~ msgstr "Arrête le transfert de fichier sélectionné" + +#~ msgid "" +#~ "If you close this tab and you have history disabled, the message will be " +#~ "lost." +#~ msgstr "" +#~ "Si vous fermez cet onglet et que l'historique n'est pas activé, le " +#~ "message sera perdu." + +#~ msgid "Cannot remove last group" +#~ msgstr "Impossible d'enlever le dernier groupe" + +#~ msgid "At least one contact group must be present." +#~ msgstr "Au moins un groupe de contacts doit exister." + +#~ msgid "" +#~ "pysqlite2 (aka python-pysqlite2) dependency is missing. After you install " +#~ "pysqlite3, if you want to migrate your logs to the new database, please " +#~ "read: http://trac.gajim.org/wiki/MigrateLogToDot9DB Exiting..." +#~ msgstr "" +#~ "pysqlite2 (ou python-pysqlite2) n'est pas installé. Aprés avoir installé " +#~ "pysqlite2, si vous voulez migrer votre historique dans la nouvelle base " +#~ "de donnée, lisez http://trac.gajim.org/wiki/MigrateLogToDot9DB. Quitte..." + +#~ msgid "Image is too big" +#~ msgstr "L'image est trop grande" + +#~ msgid "" +#~ "Image for emoticon has to be less than or equal to 24 pixels in width and " +#~ "24 in height." +#~ msgstr "" +#~ "L'image pour l'émoticône doit être inférieure ou égale à 24 points en " +#~ "largeur et 24 points en hauteur." diff --git a/po/cs.po b/po/cs.po index 53ed195c9..cc6a88dcc 100644 --- a/po/cs.po +++ b/po/cs.po @@ -1,5 +1,3 @@ -# translation of gajim.po to -# translation of gajim.po to # translation of gajim.po to Czech # Czech translations for Gajim package. # Copyright (C) 2003-2005 Gajim Team @@ -16,12 +14,12 @@ # Petr Mensik , 2005. # Pihhan , 2005, 2006. # -#: ../src/gajim-remote.py:204 ../src/gajim-remote.py:211 +#: ../src/gajim-remote.py:218 ../src/gajim-remote.py:225 msgid "" msgstr "" "Project-Id-Version: gajim\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2006-04-11 21:39+0200\n" +"POT-Creation-Date: 2006-07-04 00:03+0200\n" "PO-Revision-Date: 2006-05-04 00:14+0200\n" "Last-Translator: Pihhan \n" "Language-Team: \n" @@ -46,30 +44,2100 @@ msgstr "Gajim Instant Messenger" msgid "Jabber IM Client" msgstr "Jabber IM klient" -#: ../src/advanced.py:71 +#: ../data/glade/account_context_menu.glade.h:1 +msgid "Send Single _Message..." +msgstr "Odeslat jednoduchou _zprávu..." + +#: ../data/glade/account_context_menu.glade.h:2 +msgid "_Add Contact..." +msgstr "PÅ™id_at kontakt..." + +# FIXME: chtelo by to cesky vyraz pro service discovery +#: ../data/glade/account_context_menu.glade.h:3 +#, fuzzy +msgid "_Discover Services..." +msgstr "_Prohlížet služby" + +#: ../data/glade/account_context_menu.glade.h:4 +#: ../data/glade/roster_window.glade.h:15 +#: ../data/glade/systray_context_menu.glade.h:5 +msgid "_Group Chat" +msgstr "_Diskuze" + +#: ../data/glade/account_context_menu.glade.h:5 +msgid "_Modify Account..." +msgstr "Upravit úÄ_et..." + +#: ../data/glade/account_context_menu.glade.h:6 +msgid "_Status" +msgstr "_Stav" + +#: ../data/glade/account_creation_wizard_window.glade.h:1 +msgid "" +"Account is being created\n" +"\n" +"Please wait..." +msgstr "" +"Vytváří se úÄet\n" +"\n" +"Prosím Äekejte..." + +#: ../data/glade/account_creation_wizard_window.glade.h:4 +msgid "Please choose one of the options below:" +msgstr "Prosím zvolte z následujících možností:" + +#: ../data/glade/account_creation_wizard_window.glade.h:5 +msgid "Please fill in the data for your new account" +msgstr "Prosím vyplňte údaje pro Váš nový úÄet" + +#: ../data/glade/account_creation_wizard_window.glade.h:6 +msgid "Click to see features (like MSN, ICQ transports) of jabber servers" +msgstr "" +"KliknÄ›te pro seznam vlastností (jako MSN, ICQ transporty) jabber serverů" + +#: ../data/glade/account_creation_wizard_window.glade.h:7 +msgid "Connect when I press Finish" +msgstr "PÅ™ipojit když stisknu DokonÄit" + +#: ../data/glade/account_creation_wizard_window.glade.h:8 +msgid "Gajim: Account Creation Wizard" +msgstr "Gajim: Průvodce vytváření úÄtu" + +#: ../data/glade/account_creation_wizard_window.glade.h:9 +msgid "I already have an account I want to use" +msgstr "Už mám úÄet který bych rád(a) použil(a)" + +#: ../data/glade/account_creation_wizard_window.glade.h:10 +msgid "I want to _register for a new account" +msgstr "ChtÄ›l(a) bych za_registrovat nový úÄet" + +#: ../data/glade/account_creation_wizard_window.glade.h:11 +#: ../data/glade/account_modification_window.glade.h:18 +msgid "If checked, Gajim will remember the password for this account" +msgstr "Pokud bude zaÅ¡krtnuto, Gajim si bude pamatovat heslo pro tento úÄet" + +#: ../data/glade/account_creation_wizard_window.glade.h:12 +#: ../data/glade/manage_proxies_window.glade.h:6 +msgid "Pass_word:" +msgstr "He_slo:" + +#: ../data/glade/account_creation_wizard_window.glade.h:13 +#: ../data/glade/account_modification_window.glade.h:37 +msgid "Save pass_word" +msgstr "Uložit _heslo" + +#: ../data/glade/account_creation_wizard_window.glade.h:14 +msgid "Servers Features" +msgstr "Vlastnosti serveru" + +#: ../data/glade/account_creation_wizard_window.glade.h:15 +msgid "Set my profile when I connect" +msgstr "Nastavit profil, když se pÅ™ipojuji" + +#: ../data/glade/account_creation_wizard_window.glade.h:16 +msgid "" +"You need to have an account in order to connect\n" +"to the Jabber network." +msgstr "PotÅ™ebujete mít úÄet pro pÅ™ipojení k síti Jabber." + +#: ../data/glade/account_creation_wizard_window.glade.h:18 +msgid "Your JID:" +msgstr "VaÅ¡e JID:" + +#: ../data/glade/account_creation_wizard_window.glade.h:19 +#: ../data/glade/roster_window.glade.h:10 +msgid "_Advanced" +msgstr "_Rozšířené" + +#: ../data/glade/account_creation_wizard_window.glade.h:20 +msgid "_Finish" +msgstr "_DokonÄit" + +#: ../data/glade/account_creation_wizard_window.glade.h:21 +#: ../data/glade/manage_proxies_window.glade.h:9 +msgid "_Host:" +msgstr "_PoÄítaÄ:" + +#: ../data/glade/account_creation_wizard_window.glade.h:22 +#: ../data/glade/account_modification_window.glade.h:45 +msgid "_Password:" +msgstr "_Heslo:" + +#: ../data/glade/account_creation_wizard_window.glade.h:23 +#: ../data/glade/manage_proxies_window.glade.h:10 +msgid "_Port:" +msgstr "_Port:" + +#: ../data/glade/account_creation_wizard_window.glade.h:24 +msgid "_Retype Password:" +msgstr "Z_opakuj heslo:" + +#: ../data/glade/account_creation_wizard_window.glade.h:25 +msgid "_Server:" +msgstr "_Server:" + +#: ../data/glade/account_creation_wizard_window.glade.h:26 +msgid "_Use proxy" +msgstr "_Používat proxy" + +#: ../data/glade/account_creation_wizard_window.glade.h:27 +#: ../data/glade/manage_proxies_window.glade.h:11 +msgid "_Username:" +msgstr "_Uživatel:" + +#: ../data/glade/account_modification_window.glade.h:1 +#: ../data/glade/preferences_window.glade.h:8 +msgid "Miscellaneous" +msgstr "PřísluÅ¡enství" + +#: ../data/glade/account_modification_window.glade.h:2 +msgid "OpenPGP" +msgstr "OpenPGP" + +#: ../data/glade/account_modification_window.glade.h:3 +msgid "Personal Information" +msgstr "Osobní údaje" + +#: ../data/glade/account_modification_window.glade.h:4 +msgid "Account" +msgstr "ÚÄet" + +#: ../data/glade/account_modification_window.glade.h:5 +msgid "Account Modification" +msgstr "Úprava úÄtu" + +#: ../data/glade/account_modification_window.glade.h:6 +msgid "Autoreconnect when connection is lost" +msgstr "Automaticky se znovu pÅ™ipojit pÅ™i ztrátÄ› spojení" + +#: ../data/glade/account_modification_window.glade.h:7 +msgid "C_onnect on Gajim startup" +msgstr "_PÅ™ipojit po startu Gajimu" + +#: ../data/glade/account_modification_window.glade.h:8 +msgid "Chan_ge Password" +msgstr "_ZmÄ›nit heslo" + +#: ../data/glade/account_modification_window.glade.h:9 +msgid "" +"Check this so Gajim will connect in port 5223 where legacy servers are " +"expected to have SSL capabilities. Note that Gajim uses TLS encryption by " +"default if broadcasted by the server, and with this option enabled TLS will " +"be disabled" +msgstr "" +"ZaÅ¡krtnÄ›te pokud se má Gajim pÅ™ipojit na port 5223, kde obvykle nabízejí " +"starší servery SSL. Pozor- Gajim použije TLS Å¡ifrování standardnÄ›, pokud " +"server ohlásí jeho podporu. Touto volbou bude TLS vypnuto" + +#: ../data/glade/account_modification_window.glade.h:10 +msgid "Choose _Key..." +msgstr "Vyberte _klíÄ..." + +#: ../data/glade/account_modification_window.glade.h:11 +msgid "Click to change account's password" +msgstr "KliknÄ›te pro zmÄ›nu hesla k úÄtu" + +#: ../data/glade/account_modification_window.glade.h:12 +msgid "Connection" +msgstr "Spojení" + +#: ../data/glade/account_modification_window.glade.h:13 +msgid "Edit Personal Information..." +msgstr "Upravit osobní informace..." + +#: ../data/glade/account_modification_window.glade.h:14 +#: ../data/glade/roster_window.glade.h:5 ../src/notify.py:308 +#: ../src/notify.py:330 ../src/notify.py:342 ../src/tooltips.py:350 +msgid "Gajim" +msgstr "Gajim" + +#: ../data/glade/account_modification_window.glade.h:15 +#: ../data/glade/preferences_window.glade.h:44 +#: ../data/glade/vcard_information_window.glade.h:17 +#: ../src/roster_window.py:290 ../src/roster_window.py:1184 +#: ../src/roster_window.py:1405 +msgid "General" +msgstr "Obecné" + +#: ../data/glade/account_modification_window.glade.h:16 +msgid "Hostname: " +msgstr "PoÄítaÄ: " + +#: ../data/glade/account_modification_window.glade.h:17 +#, fuzzy +msgid "" +"If checked, Gajim will also broadcast some more IPs except from just your " +"IP, so file transfer has higher chances of working." +msgstr "" +"Pokud je zaÅ¡krtnuto, Gajim ohlásí navíc nÄ›kolik dalších IP kromÄ› Vaší IP, " +"takže pÅ™enos souboru má vÄ›tší Å¡anci správného fungování." + +#: ../data/glade/account_modification_window.glade.h:19 +msgid "" +"If checked, Gajim will send keep-alive packets so it prevents connection " +"timeout which results in disconnection" +msgstr "" +"Pokud zaÅ¡krtnuto, Gajim bude posílat keep-alive pakety, aby pÅ™edeÅ¡el ztrátÄ› " +"spojení způsobenou neÄinností" + +#: ../data/glade/account_modification_window.glade.h:20 +msgid "" +"If checked, Gajim will store the password in ~/.gajim/config with 'read' " +"permission only for you" +msgstr "" +"Pokud zaÅ¡krtnuto, Gajim uloží heslo v ~/.gajim/config s právem Ätení pouze " +"pro Vás" + +#: ../data/glade/account_modification_window.glade.h:21 +msgid "" +"If checked, Gajim, when launched, will automatically connect to jabber using " +"this account" +msgstr "" +"Pokud zaÅ¡krtnuto, Gajim po spuÅ¡tÄ›ní se automaticky pÅ™ipojí pomocí tohoto úÄtu" + +#: ../data/glade/account_modification_window.glade.h:22 +msgid "" +"If checked, any change to the global status (handled by the combobox at the " +"bottom of the roster window) will change the status of this account " +"accordingly" +msgstr "" +"Pokud zaÅ¡krtnuto, jakákoliv zmÄ›na globálního stavu (pomocí comboboxu na " +"spodní stranÄ› Seznamu) zmÄ›ní stav tohoto úÄtu také" + +#: ../data/glade/account_modification_window.glade.h:23 +msgid "Information about you, as stored in the server" +msgstr "Informace o Vás, jak jsou uloženy na serveru" + +#: ../data/glade/account_modification_window.glade.h:24 +msgid "Manage..." +msgstr "Spravovat..." + +#: ../data/glade/account_modification_window.glade.h:25 ../src/config.py:1448 +msgid "No key selected" +msgstr "Není zvolen žádný klíÄ" + +#. None means no proxy profile selected +#: ../data/glade/account_modification_window.glade.h:27 ../src/config.py:1053 +#: ../src/config.py:1058 ../src/config.py:1230 ../src/config.py:1505 +#: ../src/config.py:1578 ../src/config.py:2282 +msgid "None" +msgstr "Žádný" + +#: ../data/glade/account_modification_window.glade.h:28 +msgid "Personal Information" +msgstr "Osobní údaje" + +#: ../data/glade/account_modification_window.glade.h:29 +msgid "Port: " +msgstr "Port: " + +#: ../data/glade/account_modification_window.glade.h:30 +msgid "Priori_ty:" +msgstr "Priori_ta:" + +#: ../data/glade/account_modification_window.glade.h:31 +msgid "" +"Priority is used in Jabber to determine who gets the events from the jabber " +"server when two or more clients are connected using the same account; The " +"client with the highest priority gets the events" +msgstr "" +"Priorita je v Jabberu použita ke zjiÅ¡tÄ›ní, kdo obdrží zprávu od jabber " +"serveru, pokud je pÅ™ipojeno více klientů pÅ™es stejný úÄet. Zprávu obdrží " +"klient s vyšší prioritou" + +#: ../data/glade/account_modification_window.glade.h:32 +msgid "Proxy:" +msgstr "Proxy:" + +#: ../data/glade/account_modification_window.glade.h:33 +msgid "Resour_ce: " +msgstr "Zd_roj: " + +#: ../data/glade/account_modification_window.glade.h:34 +msgid "" +"Resource is sent to the Jabber server in order to separate the same JID in " +"two or more parts depending on the number of the clients connected in the " +"same server with the same account. So you might be connected in the same " +"account with resource 'Home' and 'Work' at the same time. The resource which " +"has the highest priority will get the events. (see below)" +msgstr "" +"Zdroj je odeslán Jabber serveru pro oddÄ›lení stejné JID na dvÄ› nebo více " +"Äástí závisejících na poÄtu pÅ™ipojených klientů na stejný server se stejným " +"úÄtem. Takže můžete být pÅ™ipojeni ke stejnému úÄtu se zdroji 'Domov' a " +"'Práce' zároveň. Zdroj, který má nejvyšší prioritu obdrží zprávy. (více " +"následuje)" + +#: ../data/glade/account_modification_window.glade.h:35 +msgid "Save _passphrase (insecure)" +msgstr "Uložit _heslo (nebezpeÄné)" + +#: ../data/glade/account_modification_window.glade.h:36 +msgid "Save conversation _logs for all contacts" +msgstr "Uložit _historii pro vÅ¡echny kontakty" + +#: ../data/glade/account_modification_window.glade.h:38 +msgid "Send keep-alive packets" +msgstr "Odesílat keep-alive pakety" + +#: ../data/glade/account_modification_window.glade.h:39 +msgid "Synch_ronize account status with global status" +msgstr "Synch_ronizovat stav úÄtu s globálním stavem" + +#: ../data/glade/account_modification_window.glade.h:40 +msgid "Use _SSL (legacy)" +msgstr "Použít _SSL (staré)" + +#: ../data/glade/account_modification_window.glade.h:41 +msgid "Use custom hostname/port" +msgstr "Použít vlastní jméno poÄítaÄe/port" + +#: ../data/glade/account_modification_window.glade.h:42 +msgid "Use file transfer proxies" +msgstr "Použij proxy pÅ™i pÅ™enosu souborů" + +#: ../data/glade/account_modification_window.glade.h:43 +#: ../data/glade/add_new_contact_window.glade.h:6 +msgid "_Jabber ID:" +msgstr "_Jabber ID:" + +#: ../data/glade/account_modification_window.glade.h:44 +msgid "_Name: " +msgstr "_Jméno: " + +#: ../data/glade/accounts_window.glade.h:1 +msgid "Accounts" +msgstr "ÚÄty" + +#: ../data/glade/accounts_window.glade.h:2 +msgid "" +"If you have 2 or more accounts and it is checked, Gajim will list all " +"contacts as if you had one account" +msgstr "" +"Máte-li 2 nebo více úÄtů a je zaÅ¡krtnuto, Gajim zobrazí vÅ¡echny kontakty " +"jako by byly z jednoho úÄtu" + +#: ../data/glade/accounts_window.glade.h:3 +msgid "_Merge accounts" +msgstr "_Spojit úÄty" + +#: ../data/glade/accounts_window.glade.h:4 +msgid "_Modify" +msgstr "_Upravit" + +#: ../data/glade/accounts_window.glade.h:5 +#: ../data/glade/remove_account_window.glade.h:4 +msgid "_Remove" +msgstr "Odst_ranit" + +#: ../data/glade/add_new_contact_window.glade.h:1 +#, fuzzy +msgid "A_llow this contact to view my status" +msgstr "Dovol mu/jí vidÄ›t můj stav" + +#: ../data/glade/add_new_contact_window.glade.h:2 +msgid "Add New Contact" +msgstr "PÅ™idat nový kontakt" + +#: ../data/glade/add_new_contact_window.glade.h:3 +msgid "I would like to add you to my contact list." +msgstr "ChtÄ›l(a) bych si Vás pÅ™idat do mého Seznamu." + +#: ../data/glade/add_new_contact_window.glade.h:4 +#, fuzzy +msgid "_Account:" +msgstr "ÚÄet" + +#: ../data/glade/add_new_contact_window.glade.h:5 +#, fuzzy +msgid "_Group:" +msgstr "Skupina:" + +#: ../data/glade/add_new_contact_window.glade.h:7 +#, fuzzy +msgid "_Nickname:" +msgstr "PÅ™ezdívka:" + +#: ../data/glade/add_new_contact_window.glade.h:8 +#, fuzzy +msgid "_Protocol:" +msgstr "Protokol:" + +#: ../data/glade/add_new_contact_window.glade.h:9 +msgid "_Subscribe" +msgstr "_Žádat autorizaci" + +#: ../data/glade/add_new_contact_window.glade.h:10 +#, fuzzy +msgid "_User ID:" +msgstr "Uživatel:" + +#: ../data/glade/advanced_configuration_window.glade.h:1 +msgid "Description" +msgstr "Popis" + +#: ../data/glade/advanced_configuration_window.glade.h:2 +msgid "NOTE: You should restart gajim for some setting to take effect" +msgstr "" +"POZNÃMKA: MÄ›l(a) by jste restartovat gajim, aby se projevila vÅ¡echna " +"nastavení" + +#: ../data/glade/advanced_configuration_window.glade.h:3 +msgid "Advanced Configuration Editor" +msgstr "Editor rozšířeného nastavení" + +#: ../data/glade/advanced_configuration_window.glade.h:4 +msgid "Filter:" +msgstr "Filtr:" + +#: ../data/glade/advanced_menuitem_menu.glade.h:1 +msgid "Delete MOTD" +msgstr "Smazat MOTD" + +#: ../data/glade/advanced_menuitem_menu.glade.h:2 +msgid "Deletes Message of the Day" +msgstr "Smaže zprávu dne" + +#: ../data/glade/advanced_menuitem_menu.glade.h:3 +msgid "Sends a message to currently connected users to this server" +msgstr "Poslat zprávu momentálnÄ› pÅ™ipojeným uživatelům tohoto serveru" + +#: ../data/glade/advanced_menuitem_menu.glade.h:4 +msgid "Set MOTD" +msgstr "Nastavit MOTD" + +#: ../data/glade/advanced_menuitem_menu.glade.h:5 +msgid "Sets Message of the Day" +msgstr "Nastaví Zprávu dne" + +#: ../data/glade/advanced_menuitem_menu.glade.h:6 +msgid "Show _XML Console" +msgstr "Zobrazit _XML konzoli" + +#: ../data/glade/advanced_menuitem_menu.glade.h:7 +msgid "Update MOTD" +msgstr "Upravit MOTD" + +#: ../data/glade/advanced_menuitem_menu.glade.h:8 +msgid "Updates Message of the Day" +msgstr "Upraví Zprávu dne" + +#: ../data/glade/advanced_menuitem_menu.glade.h:9 +msgid "_Administrator" +msgstr "_Správce" + +#: ../data/glade/advanced_menuitem_menu.glade.h:10 +msgid "_Privacy Lists" +msgstr "" + +#: ../data/glade/advanced_menuitem_menu.glade.h:11 +msgid "_Send Server Message" +msgstr "Ode_slat zprávu serveru" + +#: ../data/glade/advanced_menuitem_menu.glade.h:12 +msgid "_Send Single Message" +msgstr "Ode_slat jednoduchou zprávu" + +#: ../data/glade/advanced_notifications_window.glade.h:1 +msgid " a window/tab opened with that contact " +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:2 +#, fuzzy +msgid "Actions" +msgstr "Aplikace" + +#: ../data/glade/advanced_notifications_window.glade.h:3 +#, fuzzy +msgid "Conditions" +msgstr "Zvuky" + +#: ../data/glade/advanced_notifications_window.glade.h:4 +#: ../data/glade/preferences_window.glade.h:10 +msgid "Sounds" +msgstr "Zvuky" + +#: ../data/glade/advanced_notifications_window.glade.h:5 +#, fuzzy +msgid "Add" +msgstr "Adresa" + +#: ../data/glade/advanced_notifications_window.glade.h:6 +#, fuzzy +msgid "Advanced Actions" +msgstr "Rozšířené" + +#: ../data/glade/advanced_notifications_window.glade.h:7 +#, fuzzy +msgid "Advanced Notifications Control" +msgstr "Editor rozšířeného nastavení" + +#: ../data/glade/advanced_notifications_window.glade.h:8 +#, fuzzy +msgid "All Status " +msgstr "Stav: " + +#: ../data/glade/advanced_notifications_window.glade.h:9 +msgid "And I " +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:10 +#, fuzzy +msgid "Away " +msgstr "PryÄ" + +#: ../data/glade/advanced_notifications_window.glade.h:11 +#, fuzzy +msgid "Busy " +msgstr "NeruÅ¡it" + +#: ../data/glade/advanced_notifications_window.glade.h:12 +msgid "Don't have " +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:13 +#, fuzzy +msgid "Down" +msgstr "Download" + +#: ../data/glade/advanced_notifications_window.glade.h:14 +msgid "Have " +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:15 +#: ../src/common/helpers.py:239 +msgid "Invisible" +msgstr "Neviditelný" + +#: ../data/glade/advanced_notifications_window.glade.h:16 +#, fuzzy +msgid "Launch a command" +msgstr "příkaz" + +#: ../data/glade/advanced_notifications_window.glade.h:17 +#, fuzzy +msgid "List of special notifications settings" +msgstr "PÅ™idávám zvláštní notifikaci pro %s" + +#: ../data/glade/advanced_notifications_window.glade.h:18 +#, fuzzy +msgid "Not Available " +msgstr "Nedostupný" + +#: ../data/glade/advanced_notifications_window.glade.h:19 +#, fuzzy +msgid "Online / Free For Chat" +msgstr "Ukecaný" + +#: ../data/glade/advanced_notifications_window.glade.h:20 +#, fuzzy +msgid "Play a sound" +msgstr "PÅ™ehrávat _zvuky" + +#: ../data/glade/advanced_notifications_window.glade.h:21 +msgid "" +"Receive a Message\n" +"Contact Connected\n" +"Contact Disconnected\n" +"Contact Change Status\n" +"Group Chat Message Highlight\n" +"Group Chat Message Received\n" +"File Transfert Resquest\n" +"File Transfert Started\n" +"File Transfert Finished" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:30 +msgid "Some special(s) status..." +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:31 +msgid "Up" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:32 +msgid "When " +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:33 +msgid "_Activate Windows manager UrgencyHint to make chat taskbar to flash" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:34 +#, fuzzy +msgid "_Disable auto opening chat window" +msgstr "Skryje tlaÄítka v oknÄ› diskuze" + +#: ../data/glade/advanced_notifications_window.glade.h:35 +msgid "_Disable existing popup window" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:36 +msgid "_Disable existing sound for this event" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:37 +msgid "_Disable showing event in roster" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:38 +msgid "_Disable showing event in systray" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:39 +msgid "_Inform me with a popup window" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:40 +msgid "_Open chat window with user" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:41 +#, fuzzy +msgid "_Show event in roster" +msgstr "Zobrazit pouze v _Seznamu" + +#: ../data/glade/advanced_notifications_window.glade.h:42 +#, fuzzy +msgid "_Show event in systray" +msgstr "Zobrazit pouze v _Seznamu" + +#: ../data/glade/advanced_notifications_window.glade.h:43 +msgid "" +"contact(s)\n" +"group(s)\n" +"everybody" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:46 +#, fuzzy +msgid "for " +msgstr "Port: " + +#: ../data/glade/advanced_notifications_window.glade.h:47 +msgid "when I'm " +msgstr "" + +#: ../data/glade/change_password_dialog.glade.h:1 +msgid "Change Password" +msgstr "ZmÄ›nit heslo" + +#: ../data/glade/change_password_dialog.glade.h:2 +msgid "Enter it again for confirmation:" +msgstr "Zadejte znovu pro ověření:" + +#: ../data/glade/change_password_dialog.glade.h:3 +msgid "Enter new password:" +msgstr "Zadejte heslo:" + +#: ../data/glade/change_status_message_dialog.glade.h:1 +msgid "Type your new status message" +msgstr "NapiÅ¡te nový popis stavu" + +#: ../data/glade/change_status_message_dialog.glade.h:2 +msgid "Preset messages:" +msgstr "Uložené stavy:" + +# FIXME: not accurate +#: ../data/glade/change_status_message_dialog.glade.h:3 +msgid "Save as Preset..." +msgstr "Uložit stav..." + +#: ../data/glade/chat_context_menu.glade.h:1 +msgid "Join _Group Chat" +msgstr "Vstoupit do _Diskuze" + +#: ../data/glade/chat_context_menu.glade.h:2 +#: ../data/glade/chat_control_popup_menu.glade.h:4 +#: ../data/glade/gc_occupants_menu.glade.h:2 +#: ../data/glade/roster_contact_context_menu.glade.h:8 +msgid "_Add to Roster" +msgstr "PÅ™id_at do Seznamu" + +#: ../data/glade/chat_context_menu.glade.h:3 +msgid "_Copy JID/Email Address" +msgstr "_Kopírovat JID/Emailovou adresu" + +#: ../data/glade/chat_context_menu.glade.h:4 +msgid "_Copy Link Location" +msgstr "_Kopírovat odkaz" + +#: ../data/glade/chat_context_menu.glade.h:5 +msgid "_Open Email Composer" +msgstr "_OtevÅ™i Emailový editor" + +#: ../data/glade/chat_context_menu.glade.h:6 +msgid "_Open Link in Browser" +msgstr "_Otevřít v prohlížeÄi" + +#: ../data/glade/chat_context_menu.glade.h:7 +#: ../data/glade/roster_window.glade.h:19 +#: ../data/glade/systray_context_menu.glade.h:6 +msgid "_Start Chat" +msgstr "_ZaÄít rozhovor" + +#: ../data/glade/chat_control_popup_menu.glade.h:1 +msgid "Click to see past conversations with this contact" +msgstr "KliknÄ›te pro starší konverzaci s tímto kontaktem" + +#: ../data/glade/chat_control_popup_menu.glade.h:2 +#: ../data/glade/roster_contact_context_menu.glade.h:6 +msgid "Send _File" +msgstr "Odeslat _Soubor" + +#: ../data/glade/chat_control_popup_menu.glade.h:3 +msgid "Toggle Open_PGP Encryption" +msgstr "PÅ™epnout Open_PGP Å¡ifrování" + +#: ../data/glade/chat_control_popup_menu.glade.h:5 +#: ../data/glade/gc_control_popup_menu.glade.h:6 +msgid "_Compact View Alt+C" +msgstr "_ZjednoduÅ¡ený pohled Alt+C" + +#: ../data/glade/chat_control_popup_menu.glade.h:6 +#: ../data/glade/gc_control_popup_menu.glade.h:7 +#: ../data/glade/gc_occupants_menu.glade.h:5 +#: ../data/glade/roster_contact_context_menu.glade.h:11 +msgid "_History" +msgstr "_Historie" + +#: ../data/glade/data_form_window.glade.h:1 +msgid "Room Configuration" +msgstr "Nastavení místnosti" + +#: ../data/glade/edit_groups_dialog.glade.h:1 +msgid "Edit Groups" +msgstr "Upravit skupiny" + +#: ../data/glade/filetransfers.glade.h:1 +msgid "A list of active, completed and stopped file transfers" +msgstr "Seznam aktivních, dokonÄených a zastavených pÅ™enosů souborů" + +#: ../data/glade/filetransfers.glade.h:2 +msgid "Cancel file transfer" +msgstr "ZruÅ¡it pÅ™enos souboru" + +#: ../data/glade/filetransfers.glade.h:3 +msgid "Cancels the selected file transfer" +msgstr "Zruší vybraný pÅ™enos souboru" + +#: ../data/glade/filetransfers.glade.h:4 +msgid "Cancels the selected file transfer and removes incomplete file" +msgstr "Zruší vybraný pÅ™enos souboru a smaže nedokonÄený soubor" + +#: ../data/glade/filetransfers.glade.h:5 +msgid "Clean _up" +msgstr "_Vymazat" + +#: ../data/glade/filetransfers.glade.h:6 +msgid "File Transfers" +msgstr "PÅ™enosy souborů" + +#: ../data/glade/filetransfers.glade.h:7 +msgid "Hides the window" +msgstr "Skryje okno" + +#: ../data/glade/filetransfers.glade.h:8 +msgid "Remove file transfer from the list." +msgstr "Odstranit pÅ™enos souboru ze výpisu." + +#: ../data/glade/filetransfers.glade.h:9 +msgid "Removes completed, canceled and failed file transfers from the list" +msgstr "Odstraní dokonÄené, zruÅ¡ené nebo pÅ™enosy které selhaly, z výpisu" + +#: ../data/glade/filetransfers.glade.h:10 +msgid "Shows a list of file transfers between you and other" +msgstr "Zobrazí výpis pÅ™enosů souborů mezi Vámi a ostatními" + +#: ../data/glade/filetransfers.glade.h:11 +msgid "" +"This action removes single file transfer from the list. If the transfer is " +"active, it is first stopped and then removed" +msgstr "" +"Tato akce smaže jeden pÅ™enos souboru z výpisu. Pokud je pÅ™enos aktivní, bude " +"nejdříve zastaven a potom smazán" + +#: ../data/glade/filetransfers.glade.h:12 +msgid "When a file transfer is complete show a popup notification" +msgstr "Zobraz upozornÄ›ní, až bude pÅ™enos souboru dokonÄen" + +#: ../data/glade/filetransfers.glade.h:13 ../src/filetransfers_window.py:753 +msgid "_Continue" +msgstr "_PokraÄovat" + +#: ../data/glade/filetransfers.glade.h:14 +msgid "_Notify me when a file transfer is complete" +msgstr "_Upozornit mÄ› po dokonÄení pÅ™enosu souboru" + +#: ../data/glade/filetransfers.glade.h:15 ../src/filetransfers_window.py:190 +msgid "_Open Containing Folder" +msgstr "_Otevřít obsahující složku" + +#: ../data/glade/filetransfers.glade.h:16 +msgid "_Pause" +msgstr "_Pauza" + +#: ../data/glade/filetransfers.glade.h:17 +msgid "file transfers list" +msgstr "výpis pÅ™enosů souborů" + +# FIXME: better czech translation +#: ../data/glade/gajim_themes_window.glade.h:1 +msgid "Chatstate Tab Colors" +msgstr "Barvy záložky stavu rozhovoru" + +#: ../data/glade/gajim_themes_window.glade.h:2 +msgid "" +"Account\n" +"Group\n" +"Contact\n" +"Banner" +msgstr "" +"ÚÄet\n" +"Skupina\n" +"Kontakt\n" +"Titulek" + +#: ../data/glade/gajim_themes_window.glade.h:6 +#: ../data/glade/privacy_list_edit_window.glade.h:4 ../src/config.py:326 +msgid "Active" +msgstr "Aktivní" + +#: ../data/glade/gajim_themes_window.glade.h:7 +msgid "Bold" +msgstr "TuÄné" + +#: ../data/glade/gajim_themes_window.glade.h:8 +msgid "Composing" +msgstr "Píšu zprávu" + +#: ../data/glade/gajim_themes_window.glade.h:9 +msgid "Font style:" +msgstr "Staly písma:" + +#: ../data/glade/gajim_themes_window.glade.h:10 +msgid "Gajim Themes Customization" +msgstr "Úprava témat Gajimu" + +#: ../data/glade/gajim_themes_window.glade.h:11 +msgid "Gone" +msgstr "PryÄ" + +#: ../data/glade/gajim_themes_window.glade.h:12 +msgid "Inactive" +msgstr "Neaktivní" + +#: ../data/glade/gajim_themes_window.glade.h:13 +msgid "Italic" +msgstr "Latinka" + +#: ../data/glade/gajim_themes_window.glade.h:14 +msgid "" +"MUC\n" +"Messages" +msgstr "" +"Zprávy\n" +"z MUC" + +# FIXME: I dont really know what this is and where it is +#: ../data/glade/gajim_themes_window.glade.h:16 +msgid "" +"MUC Directed\n" +"Messages" +msgstr "" +"MUC Directed\n" +"Messages" + +#: ../data/glade/gajim_themes_window.glade.h:18 ../src/tooltips.py:667 +msgid "Paused" +msgstr "Pozastaveno" + +#: ../data/glade/gajim_themes_window.glade.h:19 +msgid "Text _color:" +msgstr "_Barva textu:" + +#: ../data/glade/gajim_themes_window.glade.h:20 +msgid "Text _font:" +msgstr "Písmo textu:" + +#: ../data/glade/gajim_themes_window.glade.h:21 +msgid "_Background:" +msgstr "_Pozadí:" + +#: ../data/glade/gc_control_popup_menu.glade.h:1 +msgid "Change _Nickname" +msgstr "ZmÄ›_nit pÅ™ezdívku" + +#: ../data/glade/gc_control_popup_menu.glade.h:2 +msgid "Change _Subject" +msgstr "ZmÄ›nit _pÅ™edmÄ›t" + +#: ../data/glade/gc_control_popup_menu.glade.h:3 +msgid "Click to see past conversation in this room" +msgstr "KliknÄ›te pro starší konverzaci v této místnosti" + +#: ../data/glade/gc_control_popup_menu.glade.h:4 +msgid "Configure _Room" +msgstr "Nastavit _místnost" + +#: ../data/glade/gc_control_popup_menu.glade.h:5 +msgid "_Bookmark This Room" +msgstr "_PÅ™idej do záložek" + +#: ../data/glade/gc_occupants_menu.glade.h:1 +msgid "Mo_derator" +msgstr "Mo_derátor" + +#: ../data/glade/gc_occupants_menu.glade.h:3 +msgid "_Admin" +msgstr "_Správce" + +#: ../data/glade/gc_occupants_menu.glade.h:4 +msgid "_Ban" +msgstr "_Zakázat" + +#: ../data/glade/gc_occupants_menu.glade.h:6 +msgid "_Kick" +msgstr "Vy_kopnout" + +#: ../data/glade/gc_occupants_menu.glade.h:7 +msgid "_Member" +msgstr "ÄŒ_len" + +#: ../data/glade/gc_occupants_menu.glade.h:8 +msgid "_Occupant Actions" +msgstr "_Akce úÄastníků" + +#: ../data/glade/gc_occupants_menu.glade.h:9 +msgid "_Owner" +msgstr "_Vlastník" + +#: ../data/glade/gc_occupants_menu.glade.h:10 +msgid "_Send Private Message" +msgstr "_Odeslat soukromou zprávu" + +#: ../data/glade/gc_occupants_menu.glade.h:11 +msgid "_Voice" +msgstr "_Hlas" + +#: ../data/glade/history_manager.glade.h:1 +msgid "" +"Welcome to Gajim History Logs Manager\n" +"\n" +"You can select logs from the left and/or search database from below.\n" +"\n" +"WARNING:\n" +"If you plan to do massive deletions, please make sure Gajim is not running. " +"Generally avoid deletions with contacts you currently chat with." +msgstr "" +"Vítejte do Gajimova Správce Historie\n" +"\n" +"Můžete zvolit záznamy nalevo a/nebo prohledat databázi dole.\n" +"\n" +"VAROVÃNÃ:\n" +"Pokud plánujete rozsáhlé promazání, ujistÄ›te se, že Gajim neběží. ObecnÄ› se " +"vyvarujte mazání historie kontaktu, se kterým si právÄ› píšete." + +#: ../data/glade/history_manager.glade.h:7 +msgid "Delete" +msgstr "Smazat" + +#: ../data/glade/history_manager.glade.h:8 +msgid "Export" +msgstr "Export" + +#: ../data/glade/history_manager.glade.h:9 +msgid "Gajim History Logs Manager" +msgstr "Gajimův Správce Historie" + +#: ../data/glade/history_manager.glade.h:10 +msgid "_Search Database" +msgstr "_Hledat v databázi" + +# FIXME: query ma cesky ekvivalent? +#: ../data/glade/history_window.glade.h:1 +msgid "Build custom query" +msgstr "Sestavit vlastní query" + +#: ../data/glade/history_window.glade.h:2 +msgid "Conversation History" +msgstr "Historie konverzace" + +#: ../data/glade/history_window.glade.h:3 +msgid "Query Builder..." +msgstr "Kontrukce dotazů..." + +#: ../data/glade/history_window.glade.h:4 +msgid "Search" +msgstr "Najít" + +#: ../data/glade/history_window.glade.h:5 +msgid "_Search" +msgstr "_Najít" + +#: ../data/glade/invitation_received_dialog.glade.h:1 +msgid "Accept" +msgstr "PÅ™ijmout" + +#: ../data/glade/invitation_received_dialog.glade.h:2 +#: ../data/glade/privacy_list_edit_window.glade.h:8 +msgid "Deny" +msgstr "Odmítnout" + +#: ../data/glade/invitation_received_dialog.glade.h:3 +msgid "Invitation Received" +msgstr "PÅ™ijata pozvánka" + +#: ../data/glade/join_groupchat_window.glade.h:1 ../src/dialogs.py:941 +msgid "Join Group Chat" +msgstr "PÅ™ipojit se do diskuze" + +#: ../data/glade/join_groupchat_window.glade.h:2 +#: ../data/glade/manage_bookmarks_window.glade.h:4 +#: ../data/glade/vcard_information_window.glade.h:28 +msgid "Nickname:" +msgstr "PÅ™ezdívka:" + +#: ../data/glade/join_groupchat_window.glade.h:3 +#: ../data/glade/manage_bookmarks_window.glade.h:5 +msgid "Password:" +msgstr "Heslo:" + +#: ../data/glade/join_groupchat_window.glade.h:4 +msgid "Recently:" +msgstr "Nedávno:" + +#: ../data/glade/join_groupchat_window.glade.h:5 +#: ../data/glade/manage_bookmarks_window.glade.h:7 +msgid "Room:" +msgstr "Místnost:" + +#: ../data/glade/join_groupchat_window.glade.h:6 +#: ../data/glade/manage_bookmarks_window.glade.h:8 +msgid "Server:" +msgstr "Server:" + +#: ../data/glade/join_groupchat_window.glade.h:7 ../src/disco.py:1145 +#: ../src/disco.py:1507 +msgid "_Join" +msgstr "_Vstoupit" + +#: ../data/glade/manage_accounts_window.glade.h:1 +msgid "Manage Accounts" +msgstr "Spravuj úÄty" + +#: ../data/glade/manage_bookmarks_window.glade.h:1 +msgid "Auto join" +msgstr "Automaticky vstoupit" + +#: ../data/glade/manage_bookmarks_window.glade.h:2 +msgid "If checked, Gajim will join this group chat on startup" +msgstr "Pokud je zaÅ¡krtnuto, Gajim se pÅ™ipojí do této místnosti pÅ™i spuÅ¡tÄ›ní" + +#: ../data/glade/manage_bookmarks_window.glade.h:3 +msgid "Manage Bookmarks" +msgstr "Spravuj záložky" + +#: ../data/glade/manage_bookmarks_window.glade.h:6 +#, fuzzy +msgid "Print status:" +msgstr "ÄŒas tisku:" + +#: ../data/glade/manage_bookmarks_window.glade.h:9 +msgid "Title:" +msgstr "Titul:" + +#: ../data/glade/manage_proxies_window.glade.h:1 +msgid "Properties" +msgstr "Vlastnosti" + +#: ../data/glade/manage_proxies_window.glade.h:2 +msgid "Settings" +msgstr "Nastavení" + +#: ../data/glade/manage_proxies_window.glade.h:3 +msgid "HTTP Connect" +msgstr "HTTP pÅ™ipojení" + +#: ../data/glade/manage_proxies_window.glade.h:4 +msgid "Manage Proxy Profiles" +msgstr "Spravuj profily Proxy" + +#: ../data/glade/manage_proxies_window.glade.h:5 +#: ../data/glade/vcard_information_window.glade.h:27 +msgid "Name:" +msgstr "Jméno:" + +#: ../data/glade/manage_proxies_window.glade.h:7 +msgid "Type:" +msgstr "Typ:" + +#: ../data/glade/manage_proxies_window.glade.h:8 +msgid "Use authentication" +msgstr "Použij autentifikaci" + +#: ../data/glade/message_window.glade.h:1 +msgid "Click to insert an emoticon (Alt+M)" +msgstr "Klikni pro vložení smajlíku (Alt+M)" + +#: ../data/glade/message_window.glade.h:2 ../src/chat_control.py:966 +msgid "OpenPGP Encryption" +msgstr "OpenPGP Å ifrování" + +#. Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector) +#: ../data/glade/message_window.glade.h:4 +#: ../data/glade/roster_window.glade.h:9 +msgid "_Actions" +msgstr "_Akce" + +#. Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector) +#: ../data/glade/message_window.glade.h:6 +#: ../data/glade/xml_console_window.glade.h:11 +#: ../src/filetransfers_window.py:249 +msgid "_Send" +msgstr "Ode_slat" + +#: ../data/glade/passphrase_dialog.glade.h:1 +msgid "Passphrase" +msgstr "Heslo" + +#: ../data/glade/preferences_window.glade.h:1 +msgid "Advanced Configuration Editor" +msgstr "Editor rozšířeného nastavení" + +#: ../data/glade/preferences_window.glade.h:2 +msgid "Applications" +msgstr "Aplikace" + +#. a header for custom browser/client/file manager. so translate sth like: Custom Settings +#: ../data/glade/preferences_window.glade.h:4 +msgid "Custom" +msgstr "Vlastní" + +#: ../data/glade/preferences_window.glade.h:5 +msgid "Format of a line" +msgstr "Formát řádky" + +#: ../data/glade/preferences_window.glade.h:6 +#, fuzzy +msgid "GMail Options" +msgstr "Aplikace" + +#: ../data/glade/preferences_window.glade.h:7 +msgid "Interface Customization" +msgstr "PÅ™izpůsobení rozhraní" + +#: ../data/glade/preferences_window.glade.h:9 +msgid "Preset Status Messages" +msgstr "PÅ™ednastavené stavy" + +#: ../data/glade/preferences_window.glade.h:11 +msgid "Visual Notifications" +msgstr "Vizuální upozornÄ›ní" + +#: ../data/glade/preferences_window.glade.h:12 +msgid "A_fter nickname:" +msgstr "_Po pÅ™ezdívce:" + +#: ../data/glade/preferences_window.glade.h:13 +msgid "Advanced" +msgstr "Rozšířené" + +#: ../data/glade/preferences_window.glade.h:14 +msgid "" +"All chat states\n" +"Composing only\n" +"Disabled" +msgstr "" +"VÅ¡echny stavy rozhovoru\n" +"Pouze píšu zprávu\n" +"Vypnuto" + +#: ../data/glade/preferences_window.glade.h:17 +msgid "Allow _OS information to be sent" +msgstr "Povolit odeslání informace o _OS" + +#: ../data/glade/preferences_window.glade.h:18 +msgid "Allow popup/notifications when I'm _away/na/busy/invisible" +msgstr "" +"Povolit popup/upozornÄ›ní pokud jsem _pryÄ/nedostupný/neruÅ¡it/neviditelný" + +#: ../data/glade/preferences_window.glade.h:19 +msgid "Also known as iChat style" +msgstr "Známý také jako iChat styl" + +#: ../data/glade/preferences_window.glade.h:20 +msgid "Ask status message when I:" +msgstr "Ptej se na stav pÅ™i:" + +#: ../data/glade/preferences_window.glade.h:21 +msgid "Auto _away after:" +msgstr "_Automaticky pryÄ po:" + +#: ../data/glade/preferences_window.glade.h:22 +msgid "Auto _not available after:" +msgstr "Automaticky _nedostupný po:" + +#: ../data/glade/preferences_window.glade.h:23 +msgid "" +"Autodetect on every Gajim startup\n" +"Always use GNOME default applications\n" +"Always use KDE default applications\n" +"Custom" +msgstr "" +"Automaticky zjistit pÅ™i každém startu aplikace\n" +"Vždy použít výchozí aplikace z GNOME\n" +"Vždy použít výchozí aplikace z KDE\n" +"Vlastní" + +#: ../data/glade/preferences_window.glade.h:27 +msgid "B_efore nickname:" +msgstr "PÅ™e_d pÅ™ezdívkou:" + +#: ../data/glade/preferences_window.glade.h:28 ../src/chat_control.py:718 +msgid "Chat" +msgstr "Rozhovor" + +#: ../data/glade/preferences_window.glade.h:29 +msgid "Chat state noti_fications:" +msgstr "_UpozornÄ›ní o stavu rozhovoru:" + +#: ../data/glade/preferences_window.glade.h:30 +msgid "" +"Check this option, only if someone you don't have in the roster spams/annoys " +"you. Use with caution, cause it blocks all messages from any contact that is " +"not in the roster" +msgstr "" +"ZaÅ¡krtnÄ›te pouze pokud Vás obtěžuje nÄ›kdo, koho nemáte v Seznamu. Použijte s " +"rozvahou, protože tato volba zakáže vÅ¡echny zprávy od kontaktů, které jeÅ¡tÄ› " +"nemáte v Seznamu" + +#: ../data/glade/preferences_window.glade.h:31 +msgid "Default status _iconset:" +msgstr "Výchozí _ikony stavů:" + +#: ../data/glade/preferences_window.glade.h:32 +msgid "Display _extra email details" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:33 +msgid "Display a_vatars of contacts in roster" +msgstr "Zobrazovat a_vatary kontaktů v Seznamu" + +#: ../data/glade/preferences_window.glade.h:34 +msgid "Display status _messages of contacts in roster" +msgstr "Zobrazovat p_opis stavu kontaktů v Seznamu" + +#: ../data/glade/preferences_window.glade.h:35 +msgid "E_very 5 minutes" +msgstr "_Každých 5 minut" + +#: ../data/glade/preferences_window.glade.h:36 +msgid "Emoticons:" +msgstr "Smajlíky:" + +#: ../data/glade/preferences_window.glade.h:37 +msgid "Events" +msgstr "Události" + +#: ../data/glade/preferences_window.glade.h:38 +msgid "" +"Gajim can send and receive meta-information related to a conversation you " +"may have with a contact. Here you can specify which chatstates you want to " +"send to the other party." +msgstr "" +"Gajim umí ohlaÅ¡ovat svoji schopnost posílat a pÅ™ijímat meta-informace " +"vztahující se k rozhovoru. Tady můžete nastavit, které stavy rozhovoru " +"chcete posílat svému protÄ›jÅ¡ku." + +#: ../data/glade/preferences_window.glade.h:39 +msgid "" +"Gajim will automatically show new events by poping up the relative window" +msgstr "Gajim automaticky zobrazí nové události vyzdvihnutím relativního okna" + +#: ../data/glade/preferences_window.glade.h:40 +msgid "" +"Gajim will notify you for new events via a popup in the bottom right of the " +"screen" +msgstr "" +"Gajim Vás upozorní o nové zprávÄ› pomocí popupu v pravém dolním rohu obrazovky" + +#: ../data/glade/preferences_window.glade.h:41 +msgid "" +"Gajim will notify you via a popup window in the bottom right of the screen " +"about contacts that just signed in" +msgstr "" +"Gajim Vás upozorní o novÄ› pÅ™ipojených kontaktech pomocí popupu v pravém " +"dolním rohu obrazovky" + +#: ../data/glade/preferences_window.glade.h:42 +msgid "" +"Gajim will notify you via a popup window in the bottom right of the screen " +"about contacts that just signed out" +msgstr "" +"Gajim Vás upozorní o přávÄ› odpojených kontaktech pomocí popupu v pravém " +"dolním rohu obrazovky" + +#: ../data/glade/preferences_window.glade.h:43 +msgid "" +"Gajim will only change the icon of the contact that triggered the new event" +msgstr "Gajim pouze zmÄ›ní ikonu kontaktu, který vyvolal novou událost" + +#: ../data/glade/preferences_window.glade.h:45 +msgid "" +"If checked, Gajim will display avatars of contacts in roster window and in " +"group chats" +msgstr "" +"Pokud zaÅ¡krtnuto, Gajim bude zobrazovat avatary kontaktů v oknÄ› Seznamu a v " +"diskuzích" + +#: ../data/glade/preferences_window.glade.h:46 +msgid "" +"If checked, Gajim will display status messages of contacts under the contact " +"name in roster window and in group chats" +msgstr "" +"Pokud zaÅ¡krtnuto, Gajim bude zobrazovat popisy stavů kontaktů pod jménem v " +"oknÄ› Seznamu a v diskuzích" + +#: ../data/glade/preferences_window.glade.h:47 +msgid "" +"If checked, Gajim will remember the roster and chat window positions in the " +"screen and the sizes of them next time you run it" +msgstr "" +"Pokud bude zaÅ¡krtnuto, Gajim si bude pamatovat polohy a velikosti Seznamu a " +"oken rozhovorů po příštím spuÅ¡tÄ›ní" + +#: ../data/glade/preferences_window.glade.h:48 +msgid "" +"If checked, Gajim will use protocol-specific status icons. (eg. A contact " +"from MSN will have the equivalent msn icon for status online, away, busy, " +"etc...)" +msgstr "" +"Pokud zaÅ¡krtnuto, Gajim použije ikony specifické pro protokol (napÅ™. kontakt " +"z MSN bude mít odpovídající ikonu msn pro stavy pÅ™ipojen, pryÄ, neruÅ¡it, " +"atd...)" + +#: ../data/glade/preferences_window.glade.h:49 +msgid "" +"If not disabled, Gajim will replace ascii smilies like ':)' with equivalent " +"animated or static graphical emoticons" +msgstr "" +"Pokud zaÅ¡krtnuto, Gajim nahradí ascii smajlíky jako ':)' za ekvivalentní " +"animované nebo statické grafické smajlíky" + +#: ../data/glade/preferences_window.glade.h:50 +msgid "Ma_nage..." +msgstr "Sp_ravovat..." + +#: ../data/glade/preferences_window.glade.h:51 +msgid "" +"Never\n" +"Always\n" +"Per account\n" +"Per type" +msgstr "" +"Nikdy\n" +"Vždy\n" +"Podle úÄtu\n" +"Podle typu" + +#: ../data/glade/preferences_window.glade.h:55 +msgid "Notify me about contacts that: " +msgstr "Upozorni mÄ› na kontakty které se: " + +#: ../data/glade/preferences_window.glade.h:56 +#, fuzzy +msgid "Notify on new _GMail email" +msgstr "Upozorni pÅ™i novém _Gmail e-mailu" + +#: ../data/glade/preferences_window.glade.h:57 +msgid "On every _message" +msgstr "PÅ™i každé _zprávÄ›" + +#: ../data/glade/preferences_window.glade.h:58 +msgid "One message _window:" +msgstr "_Okno jednoduché zprávy:" + +#: ../data/glade/preferences_window.glade.h:59 +msgid "Play _sounds" +msgstr "PÅ™ehrávat _zvuky" + +#: ../data/glade/preferences_window.glade.h:60 +msgid "Preferences" +msgstr "Nastavení" + +#: ../data/glade/preferences_window.glade.h:61 +msgid "Print time:" +msgstr "ÄŒas tisku:" + +#: ../data/glade/preferences_window.glade.h:62 +msgid "Save _position and size for roster and chat windows" +msgstr "Uložit _pozici a velikost pro seznam a okna rozhovorů" + +#: ../data/glade/preferences_window.glade.h:63 +msgid "Show only in _roster" +msgstr "Zobrazit pouze v _Seznamu" + +#: ../data/glade/preferences_window.glade.h:64 +msgid "Sign _in" +msgstr "_PÅ™ihlásí" + +#: ../data/glade/preferences_window.glade.h:65 +msgid "Sign _out" +msgstr "_Odhlásí" + +#: ../data/glade/preferences_window.glade.h:66 +msgid "Status" +msgstr "Stav" + +#: ../data/glade/preferences_window.glade.h:67 +msgid "T_heme:" +msgstr "_Téma:" + +#: ../data/glade/preferences_window.glade.h:68 +msgid "The auto away status message" +msgstr "Text stavu automaticky pryÄ" + +#: ../data/glade/preferences_window.glade.h:69 +msgid "The auto not available status message" +msgstr "Text stavu nedostupný" + +#: ../data/glade/preferences_window.glade.h:70 +msgid "Use _transports iconsets" +msgstr "Používej ikony _transportů" + +#: ../data/glade/preferences_window.glade.h:71 +msgid "Use system _default" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:72 +msgid "Use t_rayicon (aka. notification area icon)" +msgstr "_Ikona v systrayi (jinak Å™eÄeno v oznamovací oblasti)" + +#: ../data/glade/preferences_window.glade.h:73 +msgid "" +"When a new event (message, file transfer request etc..) is received, the " +"following methods may be used to inform you about it. Please note that " +"events about new messages only occur if it is a new message from a contact " +"you are not already chatting with" +msgstr "" +"Když nová událost (zpráva, žádost o pÅ™enos souboru, a podobnÄ›) je pÅ™ijata, " +"následující metody Vás mohou upozornit. VÄ›zte prosím, že událost pÅ™ijetí " +"nové zprávy nastane pouze tehdy, pokud je od kontaktu, se kterým už " +"nehovoříte" + +#: ../data/glade/preferences_window.glade.h:74 +msgid "When new event is received" +msgstr "Když je pÅ™ijata nová zpráva" + +#: ../data/glade/preferences_window.glade.h:75 +#, fuzzy +msgid "_Advanced Notifications Control..." +msgstr "Editor rozšířeného nastavení" + +#: ../data/glade/preferences_window.glade.h:76 +msgid "_After time:" +msgstr "_Po Äase:" + +#: ../data/glade/preferences_window.glade.h:77 +msgid "_Before time:" +msgstr "PÅ™e_d Äasem:" + +#: ../data/glade/preferences_window.glade.h:78 +msgid "_Browser:" +msgstr "_ProhlížeÄ:" + +#: ../data/glade/preferences_window.glade.h:79 +msgid "_File manager:" +msgstr "_Správce souborů:" + +#: ../data/glade/preferences_window.glade.h:80 +msgid "_Font:" +msgstr "_Písmo:" + +#: ../data/glade/preferences_window.glade.h:81 +msgid "_Highlight misspelled words" +msgstr "Zvýrazňovat _slova s pÅ™eklepy" + +#: ../data/glade/preferences_window.glade.h:82 +msgid "_Ignore events from contacts not in the roster" +msgstr "_Ignorovat události od kontaktů mimo můj Seznam" + +#: ../data/glade/preferences_window.glade.h:83 +msgid "_Incoming message:" +msgstr "_Příchozí zpráva:" + +#: ../data/glade/preferences_window.glade.h:84 +msgid "_Log status changes of contacts" +msgstr "Zaznamenávat zmÄ›ny _stavu kontaktů" + +#: ../data/glade/preferences_window.glade.h:85 +msgid "_Mail client:" +msgstr "E-_mailový klient:" + +#: ../data/glade/preferences_window.glade.h:86 +msgid "_Never" +msgstr "_Nikdy" + +#: ../data/glade/preferences_window.glade.h:87 +msgid "_Notify me about it" +msgstr "_Upozornit mÄ›" + +#: ../data/glade/preferences_window.glade.h:88 +msgid "_Open..." +msgstr "_Otevřít..." + +#: ../data/glade/preferences_window.glade.h:89 +msgid "_Outgoing message:" +msgstr "_Odchozí zpráva:" + +#: ../data/glade/preferences_window.glade.h:90 +msgid "_Player:" +msgstr "_PÅ™ehrávaÄ:" + +#: ../data/glade/preferences_window.glade.h:91 +msgid "_Pop it up" +msgstr "Zobrazit o_kno se zprávou" + +#: ../data/glade/preferences_window.glade.h:92 +msgid "_Reset to Default Colors" +msgstr "_Vrátit k výchozím barvám" + +#: ../data/glade/preferences_window.glade.h:93 +msgid "_Sort contacts by status" +msgstr "_SeÅ™adit podle stavu" + +#: ../data/glade/preferences_window.glade.h:94 +msgid "_Status message:" +msgstr "_Stav:" + +#: ../data/glade/preferences_window.glade.h:95 +msgid "_URL:" +msgstr "_URL:" + +#: ../data/glade/preferences_window.glade.h:96 +msgid "minutes" +msgstr "minutách" + +#: ../data/glade/privacy_list_edit_window.glade.h:1 +msgid "Add / Edit a rule" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:2 +#, fuzzy +msgid "List of rules" +msgstr "Formát řádky" + +#: ../data/glade/privacy_list_edit_window.glade.h:3 +msgid "Privacy List" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:5 ../src/config.py:2281 +msgid "All" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:6 +msgid "Allow" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:7 +#, fuzzy +msgid "Default" +msgstr "Smazat" + +#: ../data/glade/privacy_list_edit_window.glade.h:9 +#, fuzzy +msgid "JabberID" +msgstr "Jabber ID:" + +#: ../data/glade/privacy_list_edit_window.glade.h:10 +#, fuzzy +msgid "Order:" +msgstr "Server:" + +#: ../data/glade/privacy_list_edit_window.glade.h:11 ../src/dialogs.py:1626 +#, fuzzy +msgid "Privacy List" +msgstr "Ban List" + +#: ../data/glade/privacy_list_edit_window.glade.h:12 +#, fuzzy +msgid "all by subscription" +msgstr "_Autorizace" + +#: ../data/glade/privacy_list_edit_window.glade.h:13 +#, fuzzy +msgid "all in the group" +msgstr "Ve skupinÄ›" + +#: ../data/glade/privacy_list_edit_window.glade.h:14 +msgid "" +"none\n" +"both\n" +"from\n" +"to" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:18 +#, fuzzy +msgid "to send me messages" +msgstr "Odeslat zprávu" + +#: ../data/glade/privacy_list_edit_window.glade.h:19 +msgid "to send me queries" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:20 +#, fuzzy +msgid "to send me status" +msgstr "Požádat o zobrazení je(jí)ho stavu" + +#: ../data/glade/privacy_list_edit_window.glade.h:21 +#, fuzzy +msgid "to view my status" +msgstr "Dovol mu/jí vidÄ›t můj stav" + +#: ../data/glade/privacy_lists_first_window.glade.h:1 +msgid "Create your own Privacy Lists" +msgstr "" + +#: ../data/glade/privacy_lists_first_window.glade.h:2 +msgid "Server-based Privacy Lists" +msgstr "" + +#: ../data/glade/remove_account_window.glade.h:1 +msgid "What do you want to do?" +msgstr "Co by jste rád(a) dÄ›lal(a)?" + +#: ../data/glade/remove_account_window.glade.h:2 +msgid "Remove account _only from Gajim" +msgstr "Odstranit úÄet _pouze z Gajimu" + +#: ../data/glade/remove_account_window.glade.h:3 +msgid "Remove account from Gajim and from _server" +msgstr "Odstranit úÄet z Gajimu i ze _serveru" + +#: ../data/glade/roster_contact_context_menu.glade.h:1 +#, fuzzy +msgid "A_sk to see his/her status" +msgstr "Požádat o zobrazení je(jí)ho stavu" + +#: ../data/glade/roster_contact_context_menu.glade.h:2 +msgid "Add Special _Notification" +msgstr "PÅ™idat zvláštní _upozornÄ›ní" + +#: ../data/glade/roster_contact_context_menu.glade.h:3 +msgid "Assign Open_PGP Key" +msgstr "PÅ™iÅ™adit Open_PGP klíÄ" + +#: ../data/glade/roster_contact_context_menu.glade.h:4 +msgid "Edit _Groups" +msgstr "Upravit _skupiny" + +#: ../data/glade/roster_contact_context_menu.glade.h:5 +#: ../data/glade/systray_context_menu.glade.h:1 +msgid "Send Single _Message" +msgstr "Odeslat jednoduchou _zprávu" + +#: ../data/glade/roster_contact_context_menu.glade.h:7 +msgid "Start _Chat" +msgstr "ZaÄít _rozhovor" + +#: ../data/glade/roster_contact_context_menu.glade.h:9 +#, fuzzy +msgid "_Allow him/her to see my status" +msgstr "Dovol mu/jí vidÄ›t můj stav" + +#: ../data/glade/roster_contact_context_menu.glade.h:10 +#, fuzzy +msgid "_Forbid him/her to see my status" +msgstr "Zakaž mu/jí vidÄ›t můj stav" + +#: ../data/glade/roster_contact_context_menu.glade.h:12 +#: ../src/roster_window.py:1482 +msgid "_Remove from Roster" +msgstr "Odst_ranit ze Seznamu" + +#: ../data/glade/roster_contact_context_menu.glade.h:13 +#: ../src/roster_window.py:1470 +msgid "_Rename" +msgstr "_PÅ™ejmenovat" + +#: ../data/glade/roster_contact_context_menu.glade.h:14 +msgid "_Subscription" +msgstr "_Autorizace" + +#: ../data/glade/roster_window.glade.h:1 +msgid "A_ccounts" +msgstr "ÚÄ_ty" + +#: ../data/glade/roster_window.glade.h:2 +msgid "Add _Contact" +msgstr "PÅ™idat _kontakt" + +#: ../data/glade/roster_window.glade.h:3 +msgid "File _Transfers" +msgstr "_PÅ™enosy souborů" + +#: ../data/glade/roster_window.glade.h:4 +msgid "Frequently Asked Questions (online)" +msgstr "ÄŒasto kladené dotazy - FAQ (online)" + +#: ../data/glade/roster_window.glade.h:6 +msgid "Help online" +msgstr "NápovÄ›da online" + +#: ../data/glade/roster_window.glade.h:7 +msgid "Profile, Avatar" +msgstr "Profil, Avatar" + +#: ../data/glade/roster_window.glade.h:8 +msgid "Show _Offline Contacts" +msgstr "Zobrazit _odpojené kontakty" + +#: ../data/glade/roster_window.glade.h:11 +msgid "_Contents" +msgstr "_Obsah" + +# FIXME: chtelo by to cesky vyraz pro service discovery +#: ../data/glade/roster_window.glade.h:12 +msgid "_Discover Services" +msgstr "_Prohlížet služby" + +#: ../data/glade/roster_window.glade.h:13 ../src/disco.py:1252 +#: ../src/roster_window.py:1462 +msgid "_Edit" +msgstr "_Úpravy" + +#: ../data/glade/roster_window.glade.h:14 +msgid "_FAQ" +msgstr "_FAQ" + +#: ../data/glade/roster_window.glade.h:16 +msgid "_Help" +msgstr "_NápovÄ›da" + +#: ../data/glade/roster_window.glade.h:17 +msgid "_Preferences" +msgstr "_Nastavení" + +#: ../data/glade/roster_window.glade.h:18 +msgid "_Quit" +msgstr "_Konec" + +#: ../data/glade/service_discovery_window.glade.h:1 +msgid "G_o" +msgstr "_Jdi" + +#: ../data/glade/service_discovery_window.glade.h:2 +msgid "_Address:" +msgstr "_Adresa:" + +#: ../data/glade/service_discovery_window.glade.h:3 +msgid "_Filter:" +msgstr "_Filtr:" + +#: ../data/glade/service_registration_window.glade.h:1 +msgid "Register to" +msgstr "Zaregistrovat" + +#: ../data/glade/service_registration_window.glade.h:2 +msgid "_Cancel" +msgstr "_ZruÅ¡it" + +#: ../data/glade/service_registration_window.glade.h:3 +msgid "_OK" +msgstr "_OK" + +#: ../data/glade/single_message_window.glade.h:1 +msgid "0" +msgstr "0" + +#: ../data/glade/single_message_window.glade.h:2 +msgid "From:" +msgstr "Odesílatel:" + +#: ../data/glade/single_message_window.glade.h:3 +msgid "Reply to this message" +msgstr "OdpovÄ›dÄ›t na tuto zprávu" + +#: ../data/glade/single_message_window.glade.h:4 +msgid "Sen_d" +msgstr "O_deslat" + +#: ../data/glade/single_message_window.glade.h:5 +msgid "Send message" +msgstr "Odeslat zprávu" + +#: ../data/glade/single_message_window.glade.h:6 +msgid "Send message and close window" +msgstr "Odeslat zprávu a zavřít okno" + +#: ../data/glade/single_message_window.glade.h:7 +msgid "Subject:" +msgstr "PÅ™edmÄ›t:" + +#: ../data/glade/single_message_window.glade.h:8 +msgid "To:" +msgstr "Příjemce:" + +#: ../data/glade/single_message_window.glade.h:9 +msgid "_Reply" +msgstr "_OdpovÄ›dÄ›t" + +#: ../data/glade/single_message_window.glade.h:10 +msgid "_Send & Close" +msgstr "Ode_slat a zavřít" + +#: ../data/glade/subscription_request_window.glade.h:1 +msgid "Authorize contact so he can know when you're connected" +msgstr "Autorizovat kontakt, aby vÄ›dÄ›l kdy jste pÅ™ipojen(a)" + +#: ../data/glade/subscription_request_window.glade.h:2 +msgid "Contact _Info" +msgstr "_Informace o kontaktu" + +#: ../data/glade/subscription_request_window.glade.h:3 +msgid "Deny authorization from contact so he cannot know when you're connected" +msgstr "" +"Odmítne autorizaci od kontaktu, takže nebude vidÄ›t kdy jste pÅ™ipojen(a)" + +#: ../data/glade/subscription_request_window.glade.h:4 +msgid "Subscription Request" +msgstr "Žádost o autorizaci" + +#: ../data/glade/subscription_request_window.glade.h:5 +msgid "_Authorize" +msgstr "_Autorizuj" + +#: ../data/glade/subscription_request_window.glade.h:6 +msgid "_Deny" +msgstr "O_dmítnout" + +#: ../data/glade/systray_context_menu.glade.h:2 +msgid "Show All Pending _Events" +msgstr "Zobrazit vÅ¡echny Äekající _události" + +#: ../data/glade/systray_context_menu.glade.h:3 +msgid "Show _Roster" +msgstr "Zobrazit _Seznam" + +#: ../data/glade/systray_context_menu.glade.h:4 +msgid "Sta_tus" +msgstr "S_tav" + +#. "About" is the text of a tab of vcard window +#: ../data/glade/vcard_information_window.glade.h:2 +msgid "About" +msgstr "O aplikaci" + +#: ../data/glade/vcard_information_window.glade.h:3 +msgid "Address" +msgstr "Adresa" + +#: ../data/glade/vcard_information_window.glade.h:4 +msgid "Ask:" +msgstr "Žádá:" + +#: ../data/glade/vcard_information_window.glade.h:5 +msgid "Birthday:" +msgstr "Den narození:" + +#: ../data/glade/vcard_information_window.glade.h:6 +msgid "City:" +msgstr "Obec:" + +#: ../data/glade/vcard_information_window.glade.h:7 +msgid "Client:" +msgstr "Klient:" + +#: ../data/glade/vcard_information_window.glade.h:8 +msgid "Company:" +msgstr "SpoleÄnost:" + +#: ../data/glade/vcard_information_window.glade.h:9 +msgid "Contact Information" +msgstr "Informace o kontaktu" + +#: ../data/glade/vcard_information_window.glade.h:10 +msgid "Country:" +msgstr "ZemÄ›:" + +#: ../data/glade/vcard_information_window.glade.h:11 +msgid "Department:" +msgstr "OddÄ›lení:" + +#: ../data/glade/vcard_information_window.glade.h:12 +msgid "E-Mail:" +msgstr "E-Mail:" + +#: ../data/glade/vcard_information_window.glade.h:13 +msgid "Extra Address:" +msgstr "Další adresa:" + +#. Family Name +#: ../data/glade/vcard_information_window.glade.h:15 +msgid "Family:" +msgstr "Rodina:" + +#: ../data/glade/vcard_information_window.glade.h:16 +msgid "Format: YYYY-MM-DD" +msgstr "Formát: RRRR-MM-DD" + +#. Given Name +#: ../data/glade/vcard_information_window.glade.h:19 +msgid "Given:" +msgstr "KÅ™estní:" + +#: ../data/glade/vcard_information_window.glade.h:20 +msgid "Homepage:" +msgstr "Dom. stránka:" + +#: ../data/glade/vcard_information_window.glade.h:21 +msgid "Jabber" +msgstr "Jabber" + +#: ../data/glade/vcard_information_window.glade.h:22 +msgid "Jabber ID:" +msgstr "Jabber ID:" + +#: ../data/glade/vcard_information_window.glade.h:23 +msgid "Location" +msgstr "Poloha" + +#. Middle Name +#: ../data/glade/vcard_information_window.glade.h:25 +msgid "Middle:" +msgstr "StÅ™ední:" + +#: ../data/glade/vcard_information_window.glade.h:26 +msgid "More" +msgstr "Více" + +#: ../data/glade/vcard_information_window.glade.h:29 +msgid "OS:" +msgstr "OS:" + +#: ../data/glade/vcard_information_window.glade.h:30 +msgid "Phone No.:" +msgstr "Telefon:" + +#: ../data/glade/vcard_information_window.glade.h:31 +msgid "Position:" +msgstr "Pozice:" + +#: ../data/glade/vcard_information_window.glade.h:32 +msgid "Postal Code:" +msgstr "PSÄŒ:" + +#. Prefix in Name +#: ../data/glade/vcard_information_window.glade.h:34 +msgid "Prefix:" +msgstr "Titul:" + +#: ../data/glade/vcard_information_window.glade.h:35 +msgid "Resource:" +msgstr "Zdroj:" + +#: ../data/glade/vcard_information_window.glade.h:36 +msgid "Role:" +msgstr "Postavení:" + +#: ../data/glade/vcard_information_window.glade.h:37 +msgid "Set _Avatar" +msgstr "Nastavit _Avatara" + +#: ../data/glade/vcard_information_window.glade.h:38 +msgid "State:" +msgstr "Stát:" + +#: ../data/glade/vcard_information_window.glade.h:39 +msgid "Status:" +msgstr "Stav:" + +#: ../data/glade/vcard_information_window.glade.h:40 +msgid "Street:" +msgstr "Ulice:" + +#: ../data/glade/vcard_information_window.glade.h:41 +msgid "Subscription:" +msgstr "Autorizace:" + +#. Suffix in Name +#: ../data/glade/vcard_information_window.glade.h:43 +msgid "Suffix:" +msgstr "Za jménem:" + +#: ../data/glade/vcard_information_window.glade.h:44 +msgid "Work" +msgstr "Práce" + +#: ../data/glade/vcard_information_window.glade.h:45 +msgid "_Log conversation history" +msgstr "_Zaznamenat historii konverzace" + +#: ../data/glade/vcard_information_window.glade.h:46 +msgid "_Publish" +msgstr "_ZveÅ™ejnit" + +#: ../data/glade/vcard_information_window.glade.h:47 +msgid "_Retrieve" +msgstr "_Získat" + +#: ../data/glade/xml_console_window.glade.h:1 +msgid "Jabber Traffic" +msgstr "Provoz Jabberu" + +#: ../data/glade/xml_console_window.glade.h:2 +msgid "XML Input" +msgstr "Vstup XML" + +#. XML Console enable checkbutton +#: ../data/glade/xml_console_window.glade.h:4 +msgid "Enable" +msgstr "Povolit" + +#. Info/Query make the "IQ" initials. So translate like this 'YourLang/YourLang (Info/Query)'. Thanks (it's a tooltip so width is not a problem) +#: ../data/glade/xml_console_window.glade.h:6 +msgid "Info/Query" +msgstr "Info/Query" + +#. Info/Query: all(?) jabber xml start with Whom do you want to ban?\n" "\n" @@ -375,37 +2429,37 @@ msgstr "" "Koho chcete zakázat?\n" "\n" -#: ../src/config.py:2023 +#: ../src/config.py:2062 msgid "Adding Member..." msgstr "PÅ™idávám Älena..." -#: ../src/config.py:2024 +#: ../src/config.py:2063 msgid "" "Whom do you want to make a member?\n" "\n" msgstr "Kdo se má stát Älenem?\n" -#: ../src/config.py:2026 +#: ../src/config.py:2065 msgid "Adding Owner..." msgstr "PÅ™idávám vlastníka..." -#: ../src/config.py:2027 +#: ../src/config.py:2066 msgid "" "Whom do you want to make a owner?\n" "\n" msgstr "Kdo se má stát vlastníkem?\n" -#: ../src/config.py:2029 +#: ../src/config.py:2068 msgid "Adding Administrator..." msgstr "PÅ™idávám správce..." -#: ../src/config.py:2030 +#: ../src/config.py:2069 msgid "" "Whom do you want to make an administrator?\n" "\n" msgstr "Kdo se má stát správcem?\n" -#: ../src/config.py:2031 +#: ../src/config.py:2070 msgid "" "Can be one of the following:\n" "1. user@domain/resource (only that resource matches).\n" @@ -418,87 +2472,93 @@ msgstr "" "1. uživatel@doména/zdroj (pouze zdroji, který je uveden).\n" "2. uživatel@doména (kterýkoliv zdroj odpovídá).\n" "3. doména/zdroj (pouze zdroji, který je uveden).\n" -"4. doména (doména samotná odpovídá, stejnÄ› jako kterýkoliv uživatel@doména),\n" +"4. doména (doména samotná odpovídá, stejnÄ› jako kterýkoliv " +"uživatel@doména),\n" "doména/zdroj, nebo adresa obsahující poddoménu." -#: ../src/config.py:2127 +#: ../src/config.py:2166 #, python-format msgid "Removing %s account" msgstr "Odstraňuju úÄet %s" -#: ../src/config.py:2144 ../src/roster_window.py:1831 +#: ../src/config.py:2183 ../src/roster_window.py:1857 msgid "Password Required" msgstr "Vyžadováno heslo" -#: ../src/config.py:2145 ../src/roster_window.py:1832 +#: ../src/config.py:2184 ../src/roster_window.py:1858 #, python-format msgid "Enter your password for account %s" msgstr "Zadejte heslo pro úÄet %s" -#: ../src/config.py:2146 ../src/roster_window.py:1833 +#: ../src/config.py:2185 ../src/roster_window.py:1859 msgid "Save password" msgstr "Uložit heslo" -#: ../src/config.py:2159 +#: ../src/config.py:2198 #, python-format msgid "Account \"%s\" is connected to the server" msgstr "ÚÄet \"%s\" se pÅ™ipojil k serveru" -#: ../src/config.py:2160 +#: ../src/config.py:2199 msgid "If you remove it, the connection will be lost." msgstr "Pokud jej smažete, pÅ™ipojení bude ztraceno." -#: ../src/config.py:2295 +#: ../src/config.py:2282 +msgid "Enter and leave only" +msgstr "" + +#: ../src/config.py:2352 msgid "New Room" msgstr "Nová místnost" -#: ../src/config.py:2326 +#: ../src/config.py:2383 msgid "This bookmark has invalid data" msgstr "Tato záložka má neplatná data" -#: ../src/config.py:2327 -msgid "Please be sure to fill out server and room fields or remove this bookmark." +#: ../src/config.py:2384 +msgid "" +"Please be sure to fill out server and room fields or remove this bookmark." msgstr "" "Prosím nezapomeňte vyplnit políÄka server a místnost, nebo smažte tuto " "záložku." -#: ../src/config.py:2564 +#: ../src/config.py:2638 msgid "Invalid username" msgstr "Neplatné uživatelské jméno" -#: ../src/config.py:2565 +#: ../src/config.py:2639 msgid "You must provide a username to configure this account." msgstr "Musíte zadat uživatelské jméno pÅ™ed nastavením tohoto úÄtu." -#: ../src/config.py:2574 ../src/dialogs.py:1028 +#: ../src/config.py:2648 ../src/dialogs.py:1118 msgid "Invalid password" msgstr "Neplatné heslo" -#: ../src/config.py:2575 +#: ../src/config.py:2649 msgid "You must enter a password for the new account." msgstr "Musíte zadat heslo pro nový úÄet." -#: ../src/config.py:2579 ../src/dialogs.py:1033 +#: ../src/config.py:2653 ../src/dialogs.py:1123 msgid "Passwords do not match" msgstr "Hesla se neshodují" -#: ../src/config.py:2580 ../src/dialogs.py:1034 +#: ../src/config.py:2654 ../src/dialogs.py:1124 msgid "The passwords typed in both fields must be identical." msgstr "Hesla zadaná v obou políÄkách musí být identická." -#: ../src/config.py:2599 +#: ../src/config.py:2673 msgid "Duplicate Jabber ID" msgstr "Dvakrát použité Jabber ID" -#: ../src/config.py:2600 +#: ../src/config.py:2674 msgid "This account is already configured in Gajim." msgstr "Tento úÄet už je nastaven v Gajimu." -#: ../src/config.py:2617 +#: ../src/config.py:2691 msgid "Account has been added successfully" msgstr "ÚÄet byl úspěšnÄ› pÅ™idán" -#: ../src/config.py:2618 ../src/config.py:2651 +#: ../src/config.py:2692 ../src/config.py:2725 msgid "" "You can set advanced account options by pressing Advanced button, or later " "by clicking in Accounts menuitem under Edit menu from the main window." @@ -506,23 +2566,23 @@ msgstr "" "Můžete nastavit rozšířené volby úÄtu po stisknutí tlaÄítka rozšířené, nebo " "pozdÄ›ji stisknutím v položce menu ÚÄty v nabídce Úpravy hlavního okna." -#: ../src/config.py:2650 +#: ../src/config.py:2724 msgid "Your new account has been created successfully" msgstr "Váš úÄet byl úspěšnÄ› vytvoÅ™en" -#: ../src/config.py:2666 +#: ../src/config.py:2740 msgid "An error occured during account creation" msgstr "Nastala chyba pÅ™i vytváření úÄtu" -#: ../src/config.py:2723 +#: ../src/config.py:2797 msgid "Account name is in use" msgstr "Jméno úÄtu se používá" -#: ../src/config.py:2724 +#: ../src/config.py:2798 msgid "You already have an account using this name." msgstr "Již máte úÄet s tímto jménem." -#: ../src/conversation_textview.py:182 +#: ../src/conversation_textview.py:205 msgid "" "Text below this line is what has been said since the last time you paid " "attention to this group chat" @@ -530,386 +2590,462 @@ msgstr "" "Text pod touto Äarou oznaÄuje to, co bylo Å™eÄeno po posledním Ätení této " "diskuze" -#: ../src/conversation_textview.py:239 +#: ../src/conversation_textview.py:263 #, python-format msgid "Actions for \"%s\"" msgstr "Akce pro \"%s\"" -#: ../src/conversation_textview.py:251 +#: ../src/conversation_textview.py:275 msgid "Read _Wikipedia Article" msgstr "Číst Älánkek na _Wikipedia" -#: ../src/conversation_textview.py:255 +#: ../src/conversation_textview.py:280 msgid "Look it up in _Dictionary" msgstr "Vyhledat ve _slovníku" #. we must have %s in the url if not WIKTIONARY -#: ../src/conversation_textview.py:270 +#: ../src/conversation_textview.py:296 #, python-format msgid "Dictionary URL is missing an \"%s\" and it is not WIKTIONARY" msgstr "URL slovníku chybí \"%s\" a není to WIKTIONARY" #. we must have %s in the url -#: ../src/conversation_textview.py:281 +#: ../src/conversation_textview.py:308 #, python-format msgid "Web Search URL is missing an \"%s\"" msgstr "URL pro hledání na webu chybí \"%s\"" -#: ../src/conversation_textview.py:284 +#: ../src/conversation_textview.py:311 msgid "Web _Search for it" msgstr "_Hledat na Webu" -#: ../src/conversation_textview.py:574 +#: ../src/conversation_textview.py:607 msgid "Yesterday" msgstr "VÄera" #. the number is >= 2 #. %i is day in year (1-365), %d (1-31) we want %i -#: ../src/conversation_textview.py:578 +#: ../src/conversation_textview.py:611 #, python-format msgid "%i days ago" msgstr "pÅ™ed %i dny" #. if we have subject, show it too! -#: ../src/conversation_textview.py:634 +#: ../src/conversation_textview.py:686 #, python-format msgid "Subject: %s\n" msgstr "PÅ™edmÄ›t: %s\n" #. only say that to non Windows users -#: ../src/dbus_support.py:34 +#: ../src/dbus_support.py:32 msgid "D-Bus python bindings are missing in this computer" msgstr "D-Bus python bindings chybí na tomto poÄítaÄi" -#: ../src/dbus_support.py:35 +#: ../src/dbus_support.py:33 msgid "D-Bus capabilities of Gajim cannot be used" msgstr "Možnosti D-Bus nemohou být použity" -#: ../src/dialogs.py:64 +#: ../src/dialogs.py:55 #, python-format msgid "Contact's name: %s" msgstr "Jméno kontaktu: %s" -#: ../src/dialogs.py:66 +#: ../src/dialogs.py:57 #, python-format msgid "JID: %s" msgstr "JID: %s" -#: ../src/dialogs.py:169 +#. Group name +#. In group boolean +#: ../src/dialogs.py:173 msgid "Group" msgstr "Skupina" -#: ../src/dialogs.py:176 +#: ../src/dialogs.py:180 msgid "In the group" msgstr "Ve skupinÄ›" -#: ../src/dialogs.py:226 +#: ../src/dialogs.py:230 msgid "KeyID" msgstr "ID klíÄe" -#: ../src/dialogs.py:229 +#: ../src/dialogs.py:233 msgid "Contact name" msgstr "Jméno kontaktu" -#: ../src/dialogs.py:263 +#: ../src/dialogs.py:266 #, python-format msgid "%s Status Message" msgstr "Text stavu %s" -#: ../src/dialogs.py:265 +#: ../src/dialogs.py:268 msgid "Status Message" msgstr "Text stavu" -#: ../src/dialogs.py:340 +#: ../src/dialogs.py:343 msgid "Save as Preset Status Message" msgstr "Uložit jako pÅ™ednastavený stav" -#: ../src/dialogs.py:341 +#: ../src/dialogs.py:344 msgid "Please type a name for this status message" msgstr "NapiÅ¡te jméno pro tento stav" -#: ../src/dialogs.py:369 +#: ../src/dialogs.py:391 #, python-format msgid "Please fill in the data of the contact you want to add in account %s" msgstr "Prosím vyplňte údaje kontaktu, který chcete pÅ™idat do úÄtu %s" -#: ../src/dialogs.py:371 +#: ../src/dialogs.py:393 msgid "Please fill in the data of the contact you want to add" msgstr "Prosím vyplňte údaje o kontaktu, který chcete pÅ™idat" -#. the user can be in mutiple groups, see in all of them -#: ../src/dialogs.py:380 ../src/disco.py:118 ../src/disco.py:119 -#: ../src/disco.py:1258 ../src/roster_window.py:188 -#: ../src/roster_window.py:249 ../src/roster_window.py:284 -#: ../src/roster_window.py:304 ../src/roster_window.py:328 -#: ../src/roster_window.py:2903 ../src/roster_window.py:2905 -#: ../src/systray.py:291 ../src/common/helpers.py:42 +#: ../src/dialogs.py:403 ../src/disco.py:109 ../src/disco.py:110 +#: ../src/disco.py:1249 ../src/roster_window.py:207 +#: ../src/roster_window.py:273 ../src/roster_window.py:309 +#: ../src/roster_window.py:329 ../src/roster_window.py:353 +#: ../src/roster_window.py:2973 ../src/roster_window.py:2975 +#: ../src/common/helpers.py:39 msgid "Transports" msgstr "Transporty" -#: ../src/dialogs.py:452 ../src/dialogs.py:458 +#: ../src/dialogs.py:493 ../src/dialogs.py:499 msgid "Invalid User ID" msgstr "Neplatný identifikátor uživatele" -#: ../src/dialogs.py:459 +#: ../src/dialogs.py:500 msgid "The user ID must not contain a resource." msgstr "User ID nesmí obsahovat zdroj." -#: ../src/dialogs.py:466 +#: ../src/dialogs.py:513 msgid "Contact already in roster" msgstr "Kontakt už je v Seznamu" -#: ../src/dialogs.py:467 +#: ../src/dialogs.py:514 msgid "This contact is already listed in your roster." msgstr "Tento kontakt už je obsažen ve VaÅ¡em seznamu." -#: ../src/dialogs.py:528 +#: ../src/dialogs.py:576 msgid "A GTK+ jabber client" msgstr "GTK+ Jabber client" -#: ../src/dialogs.py:538 +#: ../src/dialogs.py:577 +msgid "GTK+ Version:" +msgstr "" + +#: ../src/dialogs.py:578 +msgid "PyGTK Version:" +msgstr "" + +#: ../src/dialogs.py:586 +#, fuzzy +msgid "Current Developers:" +msgstr "Vysloužilí vývojáři:" + +#: ../src/dialogs.py:588 msgid "Past Developers:" msgstr "Vysloužilí vývojáři:" -#: ../src/dialogs.py:541 +#: ../src/dialogs.py:592 msgid "THANKS:" msgstr "DÃKY:" -#. remove one english setence +#. remove one english sentence #. and add it manually as translatable -#: ../src/dialogs.py:548 +#: ../src/dialogs.py:598 msgid "Last but not least, we would like to thank all the package maintainers." -msgstr "Poslední, nikoliv nejmenší, podÄ›kování patří vÅ¡em správcům instalaÄních balíÄků." +msgstr "" +"Poslední, nikoliv nejmenší, podÄ›kování patří vÅ¡em správcům instalaÄních " +"balíÄků." #. here you write your name in the form Name FamilyName -#: ../src/dialogs.py:562 +#: ../src/dialogs.py:612 msgid "translator-credits" msgstr "Petr Menšík " -#: ../src/dialogs.py:818 +#: ../src/dialogs.py:738 +#, python-format +msgid "Unable to bind to port %s." +msgstr "" + +#: ../src/dialogs.py:739 +msgid "" +"Maybe you have another running instance of Gajim. File Transfer will be " +"canceled." +msgstr "" + +#: ../src/dialogs.py:881 #, python-format msgid "Subscription request for account %s from %s" msgstr "Žádost o autorizaci pro úÄet %s od %s" -#: ../src/dialogs.py:821 +#: ../src/dialogs.py:884 #, python-format msgid "Subscription request from %s" msgstr "Žádost o autorizaci od %s" -#: ../src/dialogs.py:864 +#: ../src/dialogs.py:926 msgid "You can not join a group chat unless you are connected." msgstr "Nemůžete vstoupit do diskuze pokud nejste pÅ™ipojen(a)." -#: ../src/dialogs.py:877 +#: ../src/dialogs.py:939 #, python-format msgid "Join Group Chat with account %s" msgstr "Vstoupit do diskuze z úÄtu %s" -#: ../src/dialogs.py:879 ../src/gtkgui.glade.h:177 -msgid "Join Group Chat" -msgstr "PÅ™ipojit se do diskuze" - -#: ../src/dialogs.py:968 +#: ../src/dialogs.py:1030 msgid "Invalid room or server name" msgstr "Neplatná místnost nebo jméno serveru" -#: ../src/dialogs.py:969 +#: ../src/dialogs.py:1031 msgid "The room name or server name has not allowed characters." msgstr "Místnost nebo jméno serveru obsahuje nepÅ™ijatelné znaky." -#: ../src/dialogs.py:988 +#: ../src/dialogs.py:1050 #, python-format msgid "Start Chat with account %s" msgstr "ZaÄít rozhovor z úÄtu %s" -#: ../src/dialogs.py:990 +#: ../src/dialogs.py:1052 msgid "Start Chat" msgstr "ZaÄít rozhovor" -#: ../src/dialogs.py:991 +#: ../src/dialogs.py:1053 +#, fuzzy msgid "" -"Fill in the contact ID of the contact you would like\n" +"Fill in the jid, or nick of the contact you would like\n" "to send a chat message to:" msgstr "Vyplňte ID kontaktu se kterým chcete zaÄít rozhovor:" #. if offline or connecting -#: ../src/dialogs.py:999 ../src/dialogs.py:1322 ../src/dialogs.py:1442 +#: ../src/dialogs.py:1078 ../src/dialogs.py:1427 ../src/dialogs.py:1551 msgid "Connection not available" msgstr "Spojení není dostupné" -#: ../src/dialogs.py:1000 ../src/dialogs.py:1323 ../src/dialogs.py:1443 +#: ../src/dialogs.py:1079 ../src/dialogs.py:1428 ../src/dialogs.py:1552 #, python-format msgid "Please make sure you are connected with \"%s\"." msgstr "Prosím ujistÄ›te se že jste pÅ™ipojen s úÄtem \"%s\"." -#: ../src/dialogs.py:1010 +#: ../src/dialogs.py:1088 ../src/dialogs.py:1091 +#, fuzzy +msgid "Invalid JID" +msgstr "Neplatné Jabber ID" + +#: ../src/dialogs.py:1091 +#, python-format +msgid "Unable to parse \"%s\"." +msgstr "" + +#: ../src/dialogs.py:1100 msgid "Without a connection, you can not change your password." msgstr "Nemůžete mÄ›nit heslo, pokud nejste pÅ™ipojen(a)." -#: ../src/dialogs.py:1029 +#: ../src/dialogs.py:1119 msgid "You must enter a password." msgstr "Musíte zadat heslo." #. img to display #. default value -#: ../src/dialogs.py:1075 ../src/gajim.py:443 ../src/notify.py:129 +#: ../src/dialogs.py:1165 ../src/notify.py:126 ../src/notify.py:268 msgid "Contact Signed In" msgstr "Kontakt se pÅ™ihlásil" -#: ../src/dialogs.py:1077 ../src/gajim.py:474 ../src/notify.py:131 +#: ../src/dialogs.py:1167 ../src/notify.py:134 ../src/notify.py:270 msgid "Contact Signed Out" msgstr "Kontakt se odhlásil" #. chat message -#: ../src/dialogs.py:1079 ../src/gajim.py:609 ../src/notify.py:133 +#: ../src/dialogs.py:1169 ../src/notify.py:154 ../src/notify.py:272 msgid "New Message" msgstr "Nová zpráva" #. single message -#: ../src/dialogs.py:1079 ../src/gajim.py:603 ../src/notify.py:133 +#: ../src/dialogs.py:1169 ../src/notify.py:138 ../src/notify.py:272 msgid "New Single Message" msgstr "Nová jednoduché zpráva" -#: ../src/dialogs.py:1080 ../src/gajim.py:586 ../src/notify.py:134 +#. private message +#: ../src/dialogs.py:1170 ../src/notify.py:145 ../src/notify.py:273 msgid "New Private Message" msgstr "Nová soukromá zpráva" -#: ../src/dialogs.py:1080 ../src/gajim.py:1049 ../src/notify.py:142 +#: ../src/dialogs.py:1170 ../src/gajim.py:1044 ../src/notify.py:281 msgid "New E-mail" msgstr "Nový E-mail" -#: ../src/dialogs.py:1082 ../src/gajim.py:1187 ../src/notify.py:136 +#: ../src/dialogs.py:1172 ../src/gajim.py:1187 ../src/notify.py:275 msgid "File Transfer Request" msgstr "Žádost o pÅ™enos souboru" -#: ../src/dialogs.py:1084 ../src/gajim.py:1035 ../src/gajim.py:1164 -#: ../src/notify.py:138 +#: ../src/dialogs.py:1174 ../src/gajim.py:1022 ../src/gajim.py:1164 +#: ../src/notify.py:277 msgid "File Transfer Error" msgstr "Chyba pÅ™enosu souboru" -#: ../src/dialogs.py:1086 ../src/gajim.py:1222 ../src/gajim.py:1244 -#: ../src/gajim.py:1261 ../src/notify.py:140 +#: ../src/dialogs.py:1176 ../src/gajim.py:1222 ../src/gajim.py:1244 +#: ../src/gajim.py:1261 ../src/notify.py:279 msgid "File Transfer Completed" msgstr "PÅ™enos souboru dokonÄen" -#: ../src/dialogs.py:1087 ../src/gajim.py:1225 ../src/notify.py:140 +#: ../src/dialogs.py:1177 ../src/gajim.py:1225 ../src/notify.py:279 msgid "File Transfer Stopped" msgstr "PÅ™enos souboru zastaven" -#: ../src/dialogs.py:1089 ../src/gajim.py:953 ../src/notify.py:144 +#: ../src/dialogs.py:1179 ../src/gajim.py:920 ../src/notify.py:283 msgid "Groupchat Invitation" msgstr "Skupinová pozvánka" +#: ../src/dialogs.py:1181 ../src/notify.py:118 ../src/notify.py:285 +#, fuzzy +msgid "Contact Changed Status" +msgstr "Kontakt se odhlásil" + #. FIXME: for Received with should become 'in' -#: ../src/dialogs.py:1254 +#: ../src/dialogs.py:1359 #, python-format msgid "Single Message with account %s" msgstr "Jednoduchá zpráva z úÄtu %s" -#: ../src/dialogs.py:1256 +#: ../src/dialogs.py:1361 msgid "Single Message" msgstr "Jednoduchá zpráva" #. prepare UI for Sending -#: ../src/dialogs.py:1259 +#: ../src/dialogs.py:1364 #, python-format msgid "Send %s" msgstr "Odeslat %s" #. prepare UI for Receiving -#: ../src/dialogs.py:1282 +#: ../src/dialogs.py:1387 #, python-format msgid "Received %s" msgstr "PÅ™ijaté %s" #. we create a new blank window to send and we preset RE: and to jid -#: ../src/dialogs.py:1347 +#: ../src/dialogs.py:1454 #, python-format msgid "RE: %s" msgstr "RE: %s" -#: ../src/dialogs.py:1348 +#: ../src/dialogs.py:1455 #, python-format msgid "%s wrote:\n" msgstr "%s napsal(a):\n" -#: ../src/dialogs.py:1392 +#: ../src/dialogs.py:1499 #, python-format msgid "XML Console for %s" msgstr "XML Konzole pro %s" -#: ../src/dialogs.py:1394 +#: ../src/dialogs.py:1501 msgid "XML Console" msgstr "XML Konzole" +#: ../src/dialogs.py:1620 +#, python-format +msgid "Privacy List %s" +msgstr "" + +#: ../src/dialogs.py:1624 +#, python-format +msgid "Privacy List for %s" +msgstr "" + +#: ../src/dialogs.py:1716 +#, fuzzy +msgid "Edit a rule" +msgstr "Formát řádky" + +#: ../src/dialogs.py:1801 +#, fuzzy +msgid "Add a rule" +msgstr "Formát řádky" + +#: ../src/dialogs.py:1897 +#, python-format +msgid "Privacy Lists for %s" +msgstr "" + +#: ../src/dialogs.py:1899 +#, fuzzy +msgid "Privacy Lists" +msgstr "Soukromé rozhovory" + #. FIXME: use nickname instead of contact_jid -#: ../src/dialogs.py:1480 +#: ../src/dialogs.py:1988 +#, python-format msgid "%(contact_jid)s has invited you to %(room_jid)s room" msgstr "%(contact_jid)s Vás pozval(a) do místnosti %(room_jid)s" #. only if not None and not '' -#: ../src/dialogs.py:1486 +#: ../src/dialogs.py:1994 #, python-format msgid "Comment: %s" msgstr "Komentář: %s" -#: ../src/dialogs.py:1549 +#: ../src/dialogs.py:2054 msgid "Choose Sound" msgstr "Vyberte zvuk" -#: ../src/dialogs.py:1559 ../src/dialogs.py:1605 +#: ../src/dialogs.py:2064 ../src/dialogs.py:2107 msgid "All files" msgstr "VÅ¡echny soubory" -#: ../src/dialogs.py:1564 +#: ../src/dialogs.py:2069 msgid "Wav Sounds" msgstr "Waw soubory" -#: ../src/dialogs.py:1595 +#: ../src/dialogs.py:2097 msgid "Choose Image" msgstr "Vyberte obrázek" -#: ../src/dialogs.py:1610 +#: ../src/dialogs.py:2112 msgid "Images" msgstr "Obrázky" -#: ../src/dialogs.py:1656 +#: ../src/dialogs.py:2157 #, python-format msgid "When %s becomes:" msgstr "Kdy %s může být:" -#: ../src/dialogs.py:1658 +#: ../src/dialogs.py:2159 #, python-format msgid "Adding Special Notification for %s" msgstr "PÅ™idávám zvláštní notifikaci pro %s" -#: ../src/disco.py:117 +#: ../src/dialogs.py:2232 +#, fuzzy +msgid "Condition" +msgstr "Spojení" + +#: ../src/disco.py:108 msgid "Others" msgstr "Ostatní" #. conference is a category for listing mostly groupchats in service discovery -#: ../src/disco.py:121 +#: ../src/disco.py:112 msgid "Conference" msgstr "Diskuze" -#: ../src/disco.py:420 +#: ../src/disco.py:411 msgid "Without a connection, you can not browse available services" msgstr "Bez spojení nemůžete prohlížet dostupné služby" -#: ../src/disco.py:499 +#: ../src/disco.py:490 #, python-format msgid "Service Discovery using account %s" msgstr "Procházení služeb s použitím úÄtu %s" -#: ../src/disco.py:500 +#: ../src/disco.py:491 msgid "Service Discovery" msgstr "Service Discovery" -#: ../src/disco.py:637 +#: ../src/disco.py:628 msgid "The service could not be found" msgstr "Tato služba nebyla nalezena" -#: ../src/disco.py:638 +#: ../src/disco.py:629 msgid "" "There is no service at the address you entered, or it is not responding. " "Check the address and try again." @@ -917,176 +3053,175 @@ msgstr "" "Služba na zadané adrese neexistuje, nebo neodpovídá. Zkontrolujte adresu a " "opakujte znovu." -#: ../src/disco.py:642 ../src/disco.py:924 +#: ../src/disco.py:633 ../src/disco.py:915 msgid "The service is not browsable" msgstr "Službu nelze prohlížet" -#: ../src/disco.py:643 +#: ../src/disco.py:634 msgid "This type of service does not contain any items to browse." msgstr "Tento typ služby neobsahuje žádné položky, které je možné prohlížet." -#: ../src/disco.py:723 +#: ../src/disco.py:714 #, python-format msgid "Browsing %s using account %s" msgstr "Procházím %s pomocí úÄtu %s" -#: ../src/disco.py:762 +#: ../src/disco.py:753 msgid "_Browse" msgstr "_Prohlížet" -#: ../src/disco.py:925 +#: ../src/disco.py:916 msgid "This service does not contain any items to browse." msgstr "Tato služba neobsahuje žádné položky, které je možno prohlížet." -#: ../src/disco.py:1146 ../src/disco.py:1263 +#: ../src/disco.py:1137 ../src/disco.py:1254 msgid "Re_gister" msgstr "Re_gistrace" -#: ../src/disco.py:1154 ../src/disco.py:1516 ../src/gtkgui.glade.h:349 -msgid "_Join" -msgstr "_Vstoupit" - -#: ../src/disco.py:1261 ../src/gtkgui.glade.h:333 ../src/roster_window.py:1436 -msgid "_Edit" -msgstr "_Úpravy" - # FIXME: tohle je blbe prelozene, najit v kontextu a vymyslet lepsi oznaceni -#: ../src/disco.py:1300 +#: ../src/disco.py:1291 #, python-format msgid "Scanning %d / %d.." msgstr "Skenuji %d / %d.." #. Users column -#: ../src/disco.py:1482 +#: ../src/disco.py:1473 msgid "Users" msgstr "Uživatelé" #. Description column -#: ../src/disco.py:1489 +#: ../src/disco.py:1480 msgid "Description" msgstr "Popis" -#: ../src/filetransfers_window.py:81 +#: ../src/filetransfers_window.py:72 msgid "File" msgstr "Soubor" -#: ../src/filetransfers_window.py:96 +#: ../src/filetransfers_window.py:87 msgid "Time" msgstr "ÄŒas" -#: ../src/filetransfers_window.py:108 +#: ../src/filetransfers_window.py:99 msgid "Progress" msgstr "PrůbÄ›h" -#: ../src/filetransfers_window.py:176 ../src/filetransfers_window.py:238 +#: ../src/filetransfers_window.py:163 ../src/filetransfers_window.py:223 #, python-format msgid "Filename: %s" msgstr "Soubor: %s" -#: ../src/filetransfers_window.py:178 ../src/filetransfers_window.py:328 +#: ../src/filetransfers_window.py:164 ../src/filetransfers_window.py:291 #, python-format msgid "Size: %s" msgstr "Velikost: %s" #. You is a reply of who sent a file #. You is a reply of who received a file -#: ../src/filetransfers_window.py:187 ../src/filetransfers_window.py:197 -#: ../src/history_manager.py:453 +#: ../src/filetransfers_window.py:173 ../src/filetransfers_window.py:183 +#: ../src/history_manager.py:454 msgid "You" msgstr "Vy" -#: ../src/filetransfers_window.py:188 ../src/filetransfers_window.py:240 +#: ../src/filetransfers_window.py:174 ../src/filetransfers_window.py:224 #, python-format msgid "Sender: %s" msgstr "Odesílatel: %s" -#: ../src/filetransfers_window.py:189 ../src/filetransfers_window.py:574 -#: ../src/tooltips.py:617 +#: ../src/filetransfers_window.py:175 ../src/filetransfers_window.py:556 +#: ../src/tooltips.py:639 msgid "Recipient: " msgstr "Příjemce: " -#: ../src/filetransfers_window.py:200 +#: ../src/filetransfers_window.py:186 #, python-format msgid "Saved in: %s" msgstr "Uloženo do: %s" -#: ../src/filetransfers_window.py:203 +#: ../src/filetransfers_window.py:188 msgid "File transfer completed" msgstr "PÅ™enos soubor dokonÄen" -#: ../src/filetransfers_window.py:205 ../src/gtkgui.glade.h:366 -msgid "_Open Containing Folder" -msgstr "_Otevřít obsahující složku" - -#: ../src/filetransfers_window.py:219 ../src/filetransfers_window.py:227 +#: ../src/filetransfers_window.py:204 ../src/filetransfers_window.py:212 msgid "File transfer canceled" msgstr "PÅ™enos souboru zruÅ¡en" -#: ../src/filetransfers_window.py:219 ../src/filetransfers_window.py:228 +#: ../src/filetransfers_window.py:204 ../src/filetransfers_window.py:213 msgid "Connection with peer cannot be established." msgstr "Spojení s protistranou se nepodaÅ™ilo navázat." -#: ../src/filetransfers_window.py:242 +#: ../src/filetransfers_window.py:225 msgid "File transfer stopped by the contact of the other side" msgstr "PÅ™enos souboru byl ukonÄen protistranou" -#: ../src/filetransfers_window.py:259 +#: ../src/filetransfers_window.py:242 msgid "Choose File to Send..." msgstr "Vyber soubor k odeslání..." -#. Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector) -#: ../src/filetransfers_window.py:266 ../src/gtkgui.glade.h:390 -msgid "_Send" -msgstr "Ode_slat" - -#: ../src/filetransfers_window.py:273 +#: ../src/filetransfers_window.py:256 msgid "Gajim cannot access this file" msgstr "Gajim nemůže otevřít tento soubor" -#: ../src/filetransfers_window.py:274 +#: ../src/filetransfers_window.py:257 msgid "This file is being used by another process." msgstr "Tento soubor je používán jiným procesem." -#: ../src/filetransfers_window.py:310 ../src/filetransfers_window.py:345 -msgid "This file already exists" -msgstr "Tento soubor už existuje" - -#: ../src/filetransfers_window.py:310 -msgid "What do you want to do?" -msgstr "Co by jste rád(a) dÄ›lal(a)?" - -#: ../src/filetransfers_window.py:326 +#: ../src/filetransfers_window.py:289 #, python-format msgid "File: %s" msgstr "Soubor: %s" -#: ../src/filetransfers_window.py:331 +#: ../src/filetransfers_window.py:294 #, python-format msgid "Type: %s" msgstr "Typ: %s" -#: ../src/filetransfers_window.py:333 +#: ../src/filetransfers_window.py:296 #, python-format msgid "Description: %s" msgstr "Popis: %s" -#: ../src/filetransfers_window.py:334 +#: ../src/filetransfers_window.py:297 #, python-format msgid "%s wants to send you a file:" msgstr "%s Vám chce poslat soubor:" -#: ../src/filetransfers_window.py:346 -msgid "Would you like to overwrite it?" -msgstr "Chcete jej pÅ™epsat?" +#: ../src/filetransfers_window.py:311 +#, python-format +msgid "Cannot overwrite existing file \"%s\"" +msgstr "" -#: ../src/filetransfers_window.py:358 +#: ../src/filetransfers_window.py:312 +msgid "" +"A file with this name already exists and you do not have permission to " +"overwrite it." +msgstr "" + +#: ../src/filetransfers_window.py:319 ../src/gtkgui_helpers.py:685 +msgid "This file already exists" +msgstr "Tento soubor už existuje" + +#: ../src/filetransfers_window.py:319 ../src/gtkgui_helpers.py:685 +msgid "What do you want to do?" +msgstr "Co by jste rád(a) dÄ›lal(a)?" + +#: ../src/filetransfers_window.py:331 +#, python-format +msgid "Directory \"%s\" is not writable" +msgstr "" + +#: ../src/filetransfers_window.py:331 +msgid "You do not have permission to create files in this directory." +msgstr "" + +#: ../src/filetransfers_window.py:341 msgid "Save File as..." msgstr "Uložit jako..." #. Print remaining time in format 00:00:00 #. You can change the places of (hours), (minutes), (seconds) - #. they are not translatable. -#: ../src/filetransfers_window.py:437 +#: ../src/filetransfers_window.py:420 #, python-format msgid "%(hours)02.d:%(minutes)02.d:%(seconds)02.d" msgstr "%(hours)02.d:%(minutes)02.d:%(seconds)02.d" @@ -1094,62 +3229,58 @@ msgstr "%(hours)02.d:%(minutes)02.d:%(seconds)02.d" #. This should make the string Kb/s, #. where 'Kb' part is taken from %s. #. Only the 's' after / (which means second) should be translated. -#: ../src/filetransfers_window.py:509 +#: ../src/filetransfers_window.py:492 #, python-format msgid "(%(filesize_unit)s/s)" msgstr "(%(filesize_unit)s/s)" -#: ../src/filetransfers_window.py:546 ../src/filetransfers_window.py:549 +#: ../src/filetransfers_window.py:528 ../src/filetransfers_window.py:531 msgid "Invalid File" msgstr "Neplatný soubor" -#: ../src/filetransfers_window.py:546 +#: ../src/filetransfers_window.py:528 msgid "File: " msgstr "Soubor: " -#: ../src/filetransfers_window.py:550 +#: ../src/filetransfers_window.py:532 msgid "It is not possible to send empty files" msgstr "Není možné posílat prázdné soubory" -#: ../src/filetransfers_window.py:570 ../src/tooltips.py:498 -#: ../src/tooltips.py:607 +#: ../src/filetransfers_window.py:552 ../src/tooltips.py:511 +#: ../src/tooltips.py:629 msgid "Name: " msgstr "Jméno: " -#: ../src/filetransfers_window.py:572 ../src/tooltips.py:611 +#: ../src/filetransfers_window.py:554 ../src/tooltips.py:633 msgid "Sender: " msgstr "Odesílatel: " -#: ../src/filetransfers_window.py:761 +#: ../src/filetransfers_window.py:742 msgid "Pause" msgstr "Pauza" -#: ../src/filetransfers_window.py:772 ../src/gtkgui.glade.h:328 -msgid "_Continue" -msgstr "_PokraÄovat" - -#: ../src/gajim-remote.py:84 +#: ../src/gajim-remote.py:82 msgid "shows a help on specific command" msgstr "zobrazí nápovÄ›du pro konkrétní příkaz" #. User gets help for the command, specified by this parameter -#: ../src/gajim-remote.py:87 +#: ../src/gajim-remote.py:85 msgid "command" msgstr "příkaz" -#: ../src/gajim-remote.py:88 +#: ../src/gajim-remote.py:86 msgid "show help on command" msgstr "zobraz nápovÄ›du k příkazu" -#: ../src/gajim-remote.py:92 +#: ../src/gajim-remote.py:90 msgid "Shows or hides the roster window" msgstr "Zobrazí nebo skryje okno Seznamu" -#: ../src/gajim-remote.py:96 +#: ../src/gajim-remote.py:94 msgid "Popups a window with the next unread message" msgstr "OtevÅ™e okno s další nepÅ™eÄtenou zprávou" -#: ../src/gajim-remote.py:100 +#: ../src/gajim-remote.py:98 msgid "" "Prints a list of all contacts in the roster. Each contact appear on a " "separate line" @@ -1157,43 +3288,47 @@ msgstr "" "Vytiskne vÅ¡ech kontaktů v Seznamu. Každý kontakt se objeví na samostatném " "řádku" -#: ../src/gajim-remote.py:102 ../src/gajim-remote.py:115 -#: ../src/gajim-remote.py:125 ../src/gajim-remote.py:138 -#: ../src/gajim-remote.py:159 ../src/gajim-remote.py:189 -#: ../src/gajim-remote.py:197 ../src/gajim-remote.py:204 -#: ../src/gajim-remote.py:211 +#: ../src/gajim-remote.py:100 ../src/gajim-remote.py:114 +#: ../src/gajim-remote.py:124 ../src/gajim-remote.py:137 +#: ../src/gajim-remote.py:151 ../src/gajim-remote.py:172 +#: ../src/gajim-remote.py:202 ../src/gajim-remote.py:211 +#: ../src/gajim-remote.py:218 ../src/gajim-remote.py:225 +#: ../src/gajim-remote.py:236 msgid "account" msgstr "úÄet" -#: ../src/gajim-remote.py:102 +#: ../src/gajim-remote.py:100 msgid "show only contacts of the given account" msgstr "zobraz pouze kontakty zadaného úÄtu" -#: ../src/gajim-remote.py:107 +#: ../src/gajim-remote.py:105 msgid "Prints a list of registered accounts" msgstr "Vypíše seznam registrovaných úÄtů" -#: ../src/gajim-remote.py:111 +#: ../src/gajim-remote.py:109 msgid "Changes the status of account or accounts" msgstr "ZmÄ›ní stav úÄtu nebo úÄtů" -#: ../src/gajim-remote.py:113 +#. offline, online, chat, away, xa, dnd, invisible should not be translated +#: ../src/gajim-remote.py:112 msgid "status" msgstr "stav" -#: ../src/gajim-remote.py:113 +#: ../src/gajim-remote.py:112 msgid "one of: offline, online, chat, away, xa, dnd, invisible " -msgstr "jeden z: odpojen, pÅ™ipojen, ukecaný, pryÄ, nedostupný, neruÅ¡it, neviditelný " +msgstr "" +"jeden z: odpojen, pÅ™ipojen, ukecaný, pryÄ, nedostupný, neruÅ¡it, neviditelný " -#: ../src/gajim-remote.py:114 ../src/gajim-remote.py:135 +#: ../src/gajim-remote.py:113 ../src/gajim-remote.py:134 +#: ../src/gajim-remote.py:148 msgid "message" msgstr "zpráva" -#: ../src/gajim-remote.py:114 +#: ../src/gajim-remote.py:113 msgid "status message" msgstr "text stavu" -#: ../src/gajim-remote.py:115 +#: ../src/gajim-remote.py:114 msgid "" "change status of account \"account\". If not specified, try to change status " "of all accounts that have \"sync with global status\" option set" @@ -1201,144 +3336,181 @@ msgstr "" "zmÄ›nit stav úÄtu \"account\". Pokud není uveden, zkuste zmÄ›nit stav vÅ¡ech " "úÄtů které mají povolenu volbu \"sync with global status\" " -#: ../src/gajim-remote.py:121 +#: ../src/gajim-remote.py:120 msgid "Shows the chat dialog so that you can send messages to a contact" msgstr "Zobrazte okno rozhovoru, aby jste mohl(a) poslat zprávu kontaktu" -#: ../src/gajim-remote.py:123 +#: ../src/gajim-remote.py:122 msgid "JID of the contact that you want to chat with" msgstr "JID kontaktu, se kterým chcete komunikovat" -#: ../src/gajim-remote.py:125 ../src/gajim-remote.py:189 +#: ../src/gajim-remote.py:124 ../src/gajim-remote.py:202 msgid "if specified, contact is taken from the contact list of this account" msgstr "pokud uvedeno, kontakt bude vzít ze seznamu kontaktů pro tento úÄet" -#: ../src/gajim-remote.py:130 +#: ../src/gajim-remote.py:129 +#, fuzzy msgid "" -"Sends new message to a contact in the roster. Both OpenPGP key and account " -"are optional. If you want to set only 'account', without 'OpenPGP key', just " -"set 'OpenPGP key' to ''." +"Sends new chat message to a contact in the roster. Both OpenPGP key and " +"account are optional. If you want to set only 'account', without 'OpenPGP " +"key', just set 'OpenPGP key' to ''." msgstr "" "Poslat novou zprávu kontaktu v Seznamu. Obojí OpenPGP klÃ­Ä a úÄet jsou " "volitelné. Pokud chcete nastavit pouze 'account' bez 'OpenPGP key', nastavte " "prostÄ› 'OpenPGP key' na ''." -#: ../src/gajim-remote.py:134 +#: ../src/gajim-remote.py:133 ../src/gajim-remote.py:146 msgid "JID of the contact that will receive the message" msgstr "JID kontaktu, který obdrží zprávu" -#: ../src/gajim-remote.py:135 +#: ../src/gajim-remote.py:134 ../src/gajim-remote.py:148 msgid "message contents" msgstr "TÄ›lo zprávy" -#: ../src/gajim-remote.py:136 +#: ../src/gajim-remote.py:135 ../src/gajim-remote.py:149 msgid "pgp key" msgstr "pgp klíÄ" -#: ../src/gajim-remote.py:136 +#: ../src/gajim-remote.py:135 ../src/gajim-remote.py:149 msgid "if specified, the message will be encrypted using this public key" msgstr "pokud bude uvedeno, zpráva bude zaÅ¡ifrována tímto veÅ™ejným klíÄem" -#: ../src/gajim-remote.py:138 +#: ../src/gajim-remote.py:137 ../src/gajim-remote.py:151 msgid "if specified, the message will be sent using this account" msgstr "pokud bude uvedeno, zpráva bude odeslána z tohoto úÄtu" -#: ../src/gajim-remote.py:143 +#: ../src/gajim-remote.py:142 +#, fuzzy +msgid "" +"Sends new single message to a contact in the roster. Both OpenPGP key and " +"account are optional. If you want to set only 'account', without 'OpenPGP " +"key', just set 'OpenPGP key' to ''." +msgstr "" +"Poslat novou zprávu kontaktu v Seznamu. Obojí OpenPGP klÃ­Ä a úÄet jsou " +"volitelné. Pokud chcete nastavit pouze 'account' bez 'OpenPGP key', nastavte " +"prostÄ› 'OpenPGP key' na ''." + +#: ../src/gajim-remote.py:147 +#, fuzzy +msgid "subject" +msgstr "PÅ™edmÄ›t" + +#: ../src/gajim-remote.py:147 +#, fuzzy +msgid "message subject" +msgstr "Zpráva odeslána" + +#: ../src/gajim-remote.py:156 msgid "Gets detailed info on a contact" msgstr "Získej detailní informace o kontaktu" -#: ../src/gajim-remote.py:145 ../src/gajim-remote.py:158 -#: ../src/gajim-remote.py:188 +#: ../src/gajim-remote.py:158 ../src/gajim-remote.py:171 +#: ../src/gajim-remote.py:201 ../src/gajim-remote.py:210 msgid "JID of the contact" msgstr "JID kontaktu" -#: ../src/gajim-remote.py:149 +#: ../src/gajim-remote.py:162 msgid "Gets detailed info on a account" msgstr "Získej detailní informace o úÄtu" -#: ../src/gajim-remote.py:151 +#: ../src/gajim-remote.py:164 msgid "Name of the account" msgstr "Jméno úÄtu" -#: ../src/gajim-remote.py:155 +#: ../src/gajim-remote.py:168 msgid "Sends file to a contact" msgstr "PoÅ¡le soubor kontaktu" -#: ../src/gajim-remote.py:157 +#: ../src/gajim-remote.py:170 msgid "file" msgstr "soubor" -#: ../src/gajim-remote.py:157 +#: ../src/gajim-remote.py:170 msgid "File path" msgstr "Cesta k souboru" -#: ../src/gajim-remote.py:159 +#: ../src/gajim-remote.py:172 msgid "if specified, file will be sent using this account" msgstr "pokud bude uvedeno, zpráva bude odeslána z tohoto úÄtu" -#: ../src/gajim-remote.py:164 +#: ../src/gajim-remote.py:177 msgid "Lists all preferences and their values" msgstr "Vypíše vÅ¡echna nastavení a jejich hodnoty" # FIXME: opravit, pokud je mozne prekladat i key & value -#: ../src/gajim-remote.py:168 +#: ../src/gajim-remote.py:181 msgid "Sets value of 'key' to 'value'." msgstr "Nastaví hodnotu klíÄe 'key' na hodnotu 'value'" -#: ../src/gajim-remote.py:170 +#: ../src/gajim-remote.py:183 msgid "key=value" msgstr "klíÄ=hodnota" # FIXME: opet -#: ../src/gajim-remote.py:170 +#: ../src/gajim-remote.py:183 msgid "'key' is the name of the preference, 'value' is the value to set it to" msgstr "'klíÄ' je jméno volby, 'hodnota' je hodnota která se nastavuje" -#: ../src/gajim-remote.py:175 +#: ../src/gajim-remote.py:188 msgid "Deletes a preference item" msgstr "Smaže položku nastavení" -#: ../src/gajim-remote.py:177 +#: ../src/gajim-remote.py:190 msgid "key" msgstr "klíÄ" -#: ../src/gajim-remote.py:177 +#: ../src/gajim-remote.py:190 msgid "name of the preference to be deleted" msgstr "jméno volby, která bude smazána" -#: ../src/gajim-remote.py:181 +#: ../src/gajim-remote.py:194 msgid "Writes the current state of Gajim preferences to the .config file" msgstr "Zapíše aktuální nastavení do souboru .config" -#: ../src/gajim-remote.py:186 +#: ../src/gajim-remote.py:199 msgid "Removes contact from roster" msgstr "Odstraní kontakt ze Seznamu" -#: ../src/gajim-remote.py:195 +#: ../src/gajim-remote.py:208 msgid "Adds contact to roster" msgstr "PÅ™idat kontakt do Seznamu" -#: ../src/gajim-remote.py:197 -msgid "Adds new contact to this account." +#: ../src/gajim-remote.py:210 +msgid "jid" +msgstr "" + +#: ../src/gajim-remote.py:211 +#, fuzzy +msgid "Adds new contact to this account" msgstr "PÅ™idá nový kontakt do tohoto úÄtu." -#: ../src/gajim-remote.py:202 +#: ../src/gajim-remote.py:216 msgid "Returns current status (the global one unless account is specified)" msgstr "Vrátí aktuální stav (globální, pokud není uveden úÄet)" -#: ../src/gajim-remote.py:209 -msgid "Returns current status message(the global one unless account is specified)" +#: ../src/gajim-remote.py:223 +msgid "" +"Returns current status message(the global one unless account is specified)" msgstr "Vrací aktuální stav (globální, pokud není uveden úÄet)" -#: ../src/gajim-remote.py:216 +#: ../src/gajim-remote.py:230 msgid "Returns number of unreaded messages" msgstr "Vrací poÄet nepÅ™eÄtených zpráv" +#: ../src/gajim-remote.py:234 +msgid "Open 'Start Chat' dialog" +msgstr "" + #: ../src/gajim-remote.py:236 +#, fuzzy +msgid "Starts chat, using this account" +msgstr "ZaÄít rozhovor z úÄtu %s" + +#: ../src/gajim-remote.py:256 msgid "Missing argument \"contact_jid\"" msgstr "Chybí parametry \"contact_jid\"" -#: ../src/gajim-remote.py:255 +#: ../src/gajim-remote.py:275 #, python-format msgid "" "'%s' is not in your roster.\n" @@ -1347,16 +3519,16 @@ msgstr "" "'%s' není ve vaÅ¡em Seznamu.\n" "Prosím uveÄte úÄet, pÅ™es který bude odeslána zpráva." -#: ../src/gajim-remote.py:258 +#: ../src/gajim-remote.py:278 msgid "You have no active account" msgstr "Nemáte aktivní úÄet" -#: ../src/gajim-remote.py:301 +#: ../src/gajim-remote.py:321 #, python-format msgid "Unknown D-Bus version: %s" msgstr "Neznámá verze D-Bus: %s" -#: ../src/gajim-remote.py:328 +#: ../src/gajim-remote.py:348 #, python-format msgid "" "Usage: %s %s %s \n" @@ -1365,16 +3537,16 @@ msgstr "" "Použití: %s %s %s \n" "\t %s" -#: ../src/gajim-remote.py:331 +#: ../src/gajim-remote.py:351 msgid "Arguments:" msgstr "Parametry:" -#: ../src/gajim-remote.py:335 +#: ../src/gajim-remote.py:355 #, python-format msgid "%s not found" msgstr "%s nebyl nalezen" -#: ../src/gajim-remote.py:339 +#: ../src/gajim-remote.py:359 #, python-format msgid "" "Usage: %s command [arguments]\n" @@ -1383,7 +3555,7 @@ msgstr "" "Použití: %s příkaz [parametry]\n" "Příkaz je jeden z:\n" -#: ../src/gajim-remote.py:413 +#: ../src/gajim-remote.py:433 #, python-format msgid "" "Argument \"%s\" is not specified. \n" @@ -1428,104 +3600,88 @@ msgstr "" "verzi z %s" #: ../src/gajim.py:65 -msgid "Please make sure that GTK+ and PyGTK have libglade support in your system." -msgstr "UjistÄ›te se prosím, že GTK+ a PyGTK ve VaÅ¡em systému podporují libglade." +msgid "" +"Please make sure that GTK+ and PyGTK have libglade support in your system." +msgstr "" +"UjistÄ›te se prosím, že GTK+ a PyGTK ve VaÅ¡em systému podporují libglade." #: ../src/gajim.py:70 msgid "Gajim needs PySQLite2 to run" msgstr "Gajim vyžaduje PySQLite2" -#: ../src/gajim.py:235 +#. set the icon to all newly opened wind +#: ../src/gajim.py:151 +msgid "Gajim is already running" +msgstr "" + +#: ../src/gajim.py:152 +msgid "" +"Another instance of Gajim seems to be running\n" +"Run anyway?" +msgstr "" + +#: ../src/gajim.py:267 #, python-format msgid "HTTP (%s) Authorization for %s (id: %s)" msgstr "HTTP (%s) Autorizace pro %s (id: %s)" -#: ../src/gajim.py:236 +#: ../src/gajim.py:268 msgid "Do you accept this request?" msgstr "Chcete pÅ™ijmout tuto žádost?" -#: ../src/gajim.py:438 +#: ../src/gajim.py:611 #, python-format -msgid "%(nickname)s Signed In" -msgstr "%(nickname)s se pÅ™ihlásil" - -#: ../src/gajim.py:469 -#, python-format -msgid "%(nickname)s Signed Out" -msgstr "%(nickname)s se odhlásil" - -#: ../src/gajim.py:583 -#, python-format -msgid "New Private Message from room %s" -msgstr "Nová soukromá zpráva z místnosti %s" - -#: ../src/gajim.py:584 -#, python-format -msgid "%(nickname)s: %(message)s" -msgstr "%(nickname)s: %(message)s" - -#: ../src/gajim.py:606 -#, python-format -msgid "New Single Message from %(nickname)s" -msgstr "Nová jednoduché zpráva od %(nickname)s" - -#: ../src/gajim.py:612 -#, python-format -msgid "New Message from %(nickname)s" -msgstr "Nová zpráva od %(nickname)s" - -#: ../src/gajim.py:660 msgid "error while sending %s ( %s )" msgstr "chyba pÅ™i odesílání %s ( %s )" -#: ../src/gajim.py:700 +#: ../src/gajim.py:651 msgid "Authorization accepted" msgstr "Autorizace pÅ™ijata" -#: ../src/gajim.py:701 +#: ../src/gajim.py:652 #, python-format msgid "The contact \"%s\" has authorized you to see his or her status." msgstr "Kontakt \"%s\" Vás autorizoval k zobrazení jeho stavu." -#: ../src/gajim.py:709 +#: ../src/gajim.py:660 #, python-format msgid "Contact \"%s\" removed subscription from you" msgstr "Kontakt \"%s\" Vám odebral autorizaci" # FIXME: hrozna veta -#: ../src/gajim.py:710 +#: ../src/gajim.py:661 msgid "You will always see him or her as offline." msgstr "Uvidíte jej nebo ji vždy jako odpojenou." -#: ../src/gajim.py:736 +#: ../src/gajim.py:704 #, python-format msgid "Contact with \"%s\" cannot be established" msgstr "Kontakt s \"%s\" nebyl navázán" -#: ../src/gajim.py:737 ../src/common/connection.py:349 +#: ../src/gajim.py:705 ../src/common/connection.py:398 msgid "Check your connection or try again later." msgstr "Ověřte spojení nebo zkuste pozdÄ›ji." -#: ../src/gajim.py:874 ../src/roster_window.py:986 +#: ../src/gajim.py:849 ../src/roster_window.py:1025 #, python-format msgid "%s is now %s (%s)" msgstr "%s je nyní %s (%s)" -#: ../src/gajim.py:963 +#: ../src/gajim.py:930 msgid "Your passphrase is incorrect" msgstr "VaÅ¡e heslo je neplatné" -#: ../src/gajim.py:964 +#: ../src/gajim.py:931 msgid "You are currently connected without your OpenPGP key." msgstr "MomentálnÄ› jste pÅ™ipojen(a) bez vaÅ¡eho OpenPGP klíÄe." #. FIXME: find a better image -#: ../src/gajim.py:1045 +#: ../src/gajim.py:1033 #, python-format msgid "New E-mail on %(gmail_mail_address)s" msgstr "Nový E-mail on %(gmail_mail_address)s" -#: ../src/gajim.py:1047 +#: ../src/gajim.py:1035 #, python-format msgid "You have %d new E-mail message" msgid_plural "You have %d new E-mail messages" @@ -1533,6 +3689,14 @@ msgstr[0] "Máte %d nepÅ™eÄtený E-mail" msgstr[1] "Máte nepÅ™eÄtených E-mailů" msgstr[2] "Máte nepÅ™eÄtené zprávy" +#. each message has a 'From', 'Subject' and 'Snippet' field +#: ../src/gajim.py:1040 +#, python-format +msgid "" +"\n" +"From: %(from_address)s" +msgstr "" + #: ../src/gajim.py:1185 #, python-format msgid "%s wants to send you a file." @@ -1568,153 +3732,165 @@ msgstr "publikování vizitky bylo úspěšné" msgid "Your personal information has been published successfully." msgstr "VaÅ¡e osobní údaje byly úspěšnÄ› publikovány." -#: ../src/gajim.py:1298 +#: ../src/gajim.py:1304 msgid "vCard publication failed" msgstr "publikování vizitky se nezdaÅ™ilo" -#: ../src/gajim.py:1298 +#: ../src/gajim.py:1304 msgid "" "There was an error while publishing your personal information, try again " "later." -msgstr "Nastala chyba pÅ™i publikování VaÅ¡ich osobních údajů, zkuste to pozdÄ›ji znovu." +msgstr "" +"Nastala chyba pÅ™i publikování VaÅ¡ich osobních údajů, zkuste to pozdÄ›ji znovu." # FIXME: jaky je rozdil mezi settings a preferences? #. it is good to notify the user #. in case he or she cannot see the output of the console -#: ../src/gajim.py:1628 +#: ../src/gajim.py:1683 msgid "Could not save your settings and preferences" msgstr "Nelze uložit VaÅ¡e nastavení" -#: ../src/gajim.py:1842 +#: ../src/gajim.py:1903 msgid "Session Management support not available (missing gnome.ui module)" msgstr "Podpora Správce sezení není dostupná (schází gnome.ui modul)" -#: ../src/gajim.py:1872 +#: ../src/gajim.py:1932 msgid "Migrating Logs..." msgstr "PÅ™evádím historii..." -#: ../src/gajim.py:1873 +#: ../src/gajim.py:1933 msgid "Please wait while logs are being migrated..." msgstr "Prosím vyÄkejte až bude historie pÅ™evedena..." -#: ../src/gajim_themes_window.py:67 +#: ../src/gajim_themes_window.py:59 msgid "Theme" msgstr "Téma" #. don't confuse translators -#: ../src/gajim_themes_window.py:149 +#: ../src/gajim_themes_window.py:141 msgid "theme name" msgstr "jméno tématu" -#: ../src/gajim_themes_window.py:166 +#: ../src/gajim_themes_window.py:158 msgid "You cannot delete your current theme" msgstr "Nemůžete smazat právÄ› používané téma" -#: ../src/gajim_themes_window.py:167 +#: ../src/gajim_themes_window.py:159 msgid "Please first choose another for your current theme." msgstr "Vyberte prosím napÅ™ed jiné téma." -#: ../src/groupchat_control.py:68 +#: ../src/groupchat_control.py:99 msgid "Private Chat" msgstr "Soukromý rozhovor" -#: ../src/groupchat_control.py:68 +#: ../src/groupchat_control.py:99 msgid "Private Chats" msgstr "Soukromé rozhovory" -#: ../src/groupchat_control.py:84 +#: ../src/groupchat_control.py:115 msgid "Sending private message failed" msgstr "Odesílání soukromé zprávy selhalo" #. in second %s code replaces with nickname -#: ../src/groupchat_control.py:86 +#: ../src/groupchat_control.py:117 #, python-format msgid "You are no longer in room \"%s\" or \"%s\" has left." msgstr "U¾ nejste v místnosti \"%s\" nebo \"%s\" ode¹el(a)." -#: ../src/groupchat_control.py:98 +#: ../src/groupchat_control.py:129 msgid "Group Chat" msgstr "Diskuze" -#: ../src/groupchat_control.py:98 +#: ../src/groupchat_control.py:129 msgid "Group Chats" msgstr "Diskuze" -#: ../src/groupchat_control.py:567 +#: ../src/groupchat_control.py:308 +#, fuzzy +msgid "Insert Nickname" +msgstr "ZmÄ›_nit pÅ™ezdívku" + +#: ../src/groupchat_control.py:702 msgid "This room has no subject" msgstr "Místnost nemá žádné téma" #. do not print 'kicked by None' -#: ../src/groupchat_control.py:665 +#: ../src/groupchat_control.py:801 #, python-format msgid "%(nick)s has been kicked: %(reason)s" msgstr "%(nick)s byli vyhozeni: %(reason)s" -#: ../src/groupchat_control.py:669 +#: ../src/groupchat_control.py:805 #, python-format msgid "%(nick)s has been kicked by %(who)s: %(reason)s" msgstr "%(nick)s byli vyhozeni od %(who)s: %(reason)s" # FIXME: preklad pro ban? zabanovani je hnusne #. do not print 'banned by None' -#: ../src/groupchat_control.py:676 +#: ../src/groupchat_control.py:812 #, python-format msgid "%(nick)s has been banned: %(reason)s" msgstr "%(nick)s byli zakázáni: %(reason)s" -#: ../src/groupchat_control.py:680 +#: ../src/groupchat_control.py:816 #, python-format msgid "%(nick)s has been banned by %(who)s: %(reason)s" msgstr "%(nick)s byl zakázán od %(who)s: %(reason)s" -#: ../src/groupchat_control.py:688 +#: ../src/groupchat_control.py:824 #, python-format msgid "You are now known as %s" msgstr "Jste nyní znám(a) jako %s" -#: ../src/groupchat_control.py:690 +#: ../src/groupchat_control.py:826 #, python-format msgid "%s is now known as %s" msgstr "%s se pÅ™ejmenoval na %s" -#: ../src/groupchat_control.py:729 +#: ../src/groupchat_control.py:897 #, python-format msgid "%s has left" msgstr "%s odeÅ¡el(a)" +#: ../src/groupchat_control.py:902 +#, python-format +msgid "%s has joined the room" +msgstr "" + #. No status message -#: ../src/groupchat_control.py:731 ../src/roster_window.py:989 +#: ../src/groupchat_control.py:904 ../src/roster_window.py:1028 #, python-format msgid "%s is now %s" msgstr "%s je nyní %s" -#: ../src/groupchat_control.py:843 ../src/groupchat_control.py:860 -#: ../src/groupchat_control.py:953 ../src/groupchat_control.py:969 +#: ../src/groupchat_control.py:1022 ../src/groupchat_control.py:1039 +#: ../src/groupchat_control.py:1132 ../src/groupchat_control.py:1148 #, python-format msgid "Nickname not found: %s" msgstr "PÅ™ezdívka nenalezena: %s" -#: ../src/groupchat_control.py:887 +#: ../src/groupchat_control.py:1066 #, python-format msgid "Invited %(contact_jid)s to %(room_jid)s." msgstr "Pozval(a) %(contact_jid)s do %(room_jid)s." #. %s is something the user wrote but it is not a jid so we inform -#: ../src/groupchat_control.py:894 ../src/groupchat_control.py:924 +#: ../src/groupchat_control.py:1073 ../src/groupchat_control.py:1103 #, python-format msgid "%s does not appear to be a valid JID" msgstr "%s nevypadá jako platné JID" -#: ../src/groupchat_control.py:991 +#: ../src/groupchat_control.py:1185 +#, python-format msgid "No such command: /%s (if you want to send this, prefix it with /say)" msgstr "Neznámý příkaz: /%s (pokud to chcete odeslat, napiÅ¡te pÅ™ed to /say)" -#: ../src/groupchat_control.py:1013 +#: ../src/groupchat_control.py:1207 #, python-format msgid "Commands: %s" msgstr "Příkazy: %s" -#: ../src/groupchat_control.py:1015 +#: ../src/groupchat_control.py:1209 #, python-format msgid "" "Usage: /%s [reason], bans the JID from the room. The nickname " @@ -1726,19 +3902,20 @@ msgstr "" "PÅ™ezdívka nájemníka může být nahrazena, pokud neobsahuje \"@\". Pokud je JID " "právÄ› v místnosti, bude vyhozen. NEpodporuje mezery v pÅ™ezdívce." -#: ../src/groupchat_control.py:1021 +#: ../src/groupchat_control.py:1215 #, python-format -msgid "Usage: /%s , opens a private chat window to the specified occupant." +msgid "" +"Usage: /%s , opens a private chat window to the specified occupant." msgstr "" "Použití: /%s , otevÅ™e okno soukromého rozhovoru uvedenému " "nájemníkovi." -#: ../src/groupchat_control.py:1025 +#: ../src/groupchat_control.py:1219 #, python-format msgid "Usage: /%s, clears the text window." msgstr "Použití: /%s, smaže zprávy v oknÄ›." -#: ../src/groupchat_control.py:1027 +#: ../src/groupchat_control.py:1221 #, python-format msgid "" "Usage: /%s [reason], closes the current window or tab, displaying reason if " @@ -1747,11 +3924,12 @@ msgstr "" "Použití: /%s [důvod], uzavÅ™e toto okno nebo záložku, a vypíše důvod, pokud " "byl uveden." -#: ../src/groupchat_control.py:1030 +#: ../src/groupchat_control.py:1224 +#, python-format msgid "Usage: /%s, hide the chat buttons." msgstr "Použití: /%s, skryje tlaÄítka rozhovoru." -#: ../src/groupchat_control.py:1032 +#: ../src/groupchat_control.py:1226 #, python-format msgid "" "Usage: /%s [reason], invites JID to the current room, optionally " @@ -1760,7 +3938,7 @@ msgstr "" "Použití: /%s [důvod], pozve JID do této místnosti, případnÄ› s uvedeným " "důvodem." -#: ../src/groupchat_control.py:1036 +#: ../src/groupchat_control.py:1230 #, python-format msgid "" "Usage: /%s @[/nickname], offers to join room@server optionally " @@ -1769,7 +3947,7 @@ msgstr "" "Použití: /%s @[/pÅ™ezdívka], nabízí vstup do místnosti " "místnost@server, případnÄ› s uvedenou pÅ™ezdívkou." -#: ../src/groupchat_control.py:1040 +#: ../src/groupchat_control.py:1234 #, python-format msgid "" "Usage: /%s [reason], removes the occupant specified by nickname " @@ -1779,7 +3957,7 @@ msgstr "" "Použití: /%s [důvod], odstraní nájemníka urÄeného pÅ™ezdívkou z " "místnosti a případnÄ› zobrazí důvod. NEpodporuje mezery v pÅ™ezdívce." -#: ../src/groupchat_control.py:1045 +#: ../src/groupchat_control.py:1239 #, python-format msgid "" "Usage: /%s , sends action to the current room. Use third person. (e." @@ -1788,7 +3966,8 @@ msgstr "" "Použití: /%s , poÅ¡le akci do aktuální místnosti. Použijte tÅ™etí osobu " "(například /%s explodoval.)" -#: ../src/groupchat_control.py:1049 +#: ../src/groupchat_control.py:1243 +#, python-format msgid "" "Usage: /%s [message], opens a private message windowand sends " "message to the occupant specified by nickname." @@ -1796,1836 +3975,188 @@ msgstr "" "Použití: /%s [zpráva], otevÅ™e okno se soukromou zprávou a odeÅ¡le " "zprávu nájemníkovi urÄeném pÅ™ezdívkou." -#: ../src/groupchat_control.py:1054 +#: ../src/groupchat_control.py:1248 #, python-format msgid "Usage: /%s , changes your nickname in current room." msgstr "Použití: /%s , zmÄ›ní VaÅ¡i pÅ™ezdívku v aktuální místnosti" -#: ../src/groupchat_control.py:1058 +#: ../src/groupchat_control.py:1252 +#, fuzzy, python-format +msgid "Usage: /%s , display the names of room occupants." +msgstr "" +"Použití: /%s [téma], zobrazí nebo aktualizuje téma v aktuální místnosti." + +#: ../src/groupchat_control.py:1256 #, python-format msgid "Usage: /%s [topic], displays or updates the current room topic." -msgstr "Použití: /%s [téma], zobrazí nebo aktualizuje téma v aktuální místnosti." +msgstr "" +"Použití: /%s [téma], zobrazí nebo aktualizuje téma v aktuální místnosti." -#: ../src/groupchat_control.py:1061 +#: ../src/groupchat_control.py:1259 #, python-format -msgid "Usage: /%s , sends a message without looking for other commands." +msgid "" +"Usage: /%s , sends a message without looking for other commands." msgstr "Použití: /%s , odeÅ¡le zprávu bez hledání jiných příkazů." -#: ../src/groupchat_control.py:1064 +#: ../src/groupchat_control.py:1262 #, python-format msgid "No help info for /%s" msgstr "Žádná další nápovÄ›da pro /%s" -#: ../src/groupchat_control.py:1100 +#: ../src/groupchat_control.py:1304 #, python-format msgid "Are you sure you want to leave room \"%s\"?" msgstr "Jste si jistý(á), že chcete opustit místnost \"%s\"?" -#: ../src/groupchat_control.py:1101 +#: ../src/groupchat_control.py:1305 msgid "If you close this window, you will be disconnected from this room." msgstr "Pokud zavÅ™ete toto okno, budete odpojen(a) z této místnosti." -#: ../src/groupchat_control.py:1105 +#: ../src/groupchat_control.py:1309 msgid "Do _not ask me again" msgstr "PříštÄ› _nezobrazovat" -#: ../src/groupchat_control.py:1139 +#: ../src/groupchat_control.py:1343 msgid "Changing Subject" msgstr "MÄ›ním Téma" -#: ../src/groupchat_control.py:1140 +#: ../src/groupchat_control.py:1344 msgid "Please specify the new subject:" msgstr "Prosím zadejte nové téma:" -#: ../src/groupchat_control.py:1148 +#: ../src/groupchat_control.py:1352 msgid "Changing Nickname" msgstr "MÄ›ním pÅ™ezdívku" -#: ../src/groupchat_control.py:1149 +#: ../src/groupchat_control.py:1353 msgid "Please specify the new nickname you want to use:" msgstr "Prosím zadejte novou pÅ™ezdívku, kterou chcete používat:" -#: ../src/groupchat_control.py:1174 +#: ../src/groupchat_control.py:1379 msgid "Bookmark already set" msgstr "Záložka je už nastavena" -#: ../src/groupchat_control.py:1175 +#: ../src/groupchat_control.py:1380 #, python-format msgid "Room \"%s\" is already in your bookmarks." msgstr "Místnost \"%s\" už je ve VaÅ¡ich záložkách." -#: ../src/groupchat_control.py:1184 +#: ../src/groupchat_control.py:1389 msgid "Bookmark has been added successfully" msgstr "Záložka byla úspěšnÄ› pÅ™idána" -#: ../src/groupchat_control.py:1185 +#: ../src/groupchat_control.py:1390 msgid "You can manage your bookmarks via Actions menu in your roster." msgstr "Můžete spravovat VaÅ¡e záložky pÅ™es menu Akce ve vaÅ¡em Seznamu." #. ask for reason -#: ../src/groupchat_control.py:1294 +#: ../src/groupchat_control.py:1500 #, python-format msgid "Kicking %s" msgstr "Vyhazuji %s" -#: ../src/groupchat_control.py:1295 ../src/groupchat_control.py:1540 +#: ../src/groupchat_control.py:1501 ../src/groupchat_control.py:1779 msgid "You may specify a reason below:" msgstr "Můžete uvést důvod níže:" #. ask for reason -#: ../src/groupchat_control.py:1539 +#: ../src/groupchat_control.py:1778 #, python-format msgid "Banning %s" msgstr "Zakazuji %s" # FIXME: neni presne -#: ../src/gtkexcepthook.py:52 +#: ../src/gtkexcepthook.py:51 msgid "A programming error has been detected" msgstr "Byla objevena chyba v programu" -#: ../src/gtkexcepthook.py:53 +#: ../src/gtkexcepthook.py:52 msgid "" "It probably is not fatal, but should be reported to the developers " "nonetheless." msgstr "PravdÄ›podobnÄ› není fatální, ale pÅ™esto by mÄ›la být ohlášena vývojářům." -#: ../src/gtkexcepthook.py:59 +#: ../src/gtkexcepthook.py:58 msgid "_Report Bug" msgstr "_Ohlásit chybu" -#: ../src/gtkexcepthook.py:82 +#: ../src/gtkexcepthook.py:81 msgid "Details" msgstr "Detaily" -#. this always tracebacks -#: ../src/gtkgui.glade.h:1 -msgid "0" -msgstr "0" - -#: ../src/gtkgui.glade.h:2 -msgid "" -"Account is being created\n" -"\n" -"Please wait..." -msgstr "" -"Vytváří se úÄet\n" -"\n" -"Prosím Äekejte..." - -#: ../src/gtkgui.glade.h:5 -msgid "Advanced Configuration Editor" -msgstr "Editor rozšířeného nastavení" - -#: ../src/gtkgui.glade.h:6 -msgid "Applications" -msgstr "Aplikace" - -# FIXME: better czech translation -#: ../src/gtkgui.glade.h:7 -msgid "Chatstate Tab Colors" -msgstr "Barvy záložky stavu rozhovoru" - -#. a header for custom browser/client/file manager. so translate sth like: Custom Settings -#: ../src/gtkgui.glade.h:9 -msgid "Custom" -msgstr "Vlastní" - -#: ../src/gtkgui.glade.h:10 -msgid "Description" -msgstr "Popis" - -#: ../src/gtkgui.glade.h:11 -msgid "Format of a line" -msgstr "Formát řádky" - -#: ../src/gtkgui.glade.h:12 -msgid "Interface Customization" -msgstr "PÅ™izpůsobení rozhraní" - -#: ../src/gtkgui.glade.h:13 -msgid "Jabber Traffic" -msgstr "Provoz Jabberu" - -#: ../src/gtkgui.glade.h:14 -msgid "Miscellaneous" -msgstr "PřísluÅ¡enství" - -#: ../src/gtkgui.glade.h:15 -msgid "NOTE: You should restart gajim for some setting to take effect" -msgstr "POZNÃMKA: MÄ›l(a) by jste restartovat gajim, aby se projevila vÅ¡echna nastavení" - -#: ../src/gtkgui.glade.h:16 -msgid "OpenPGP" -msgstr "OpenPGP" - -#: ../src/gtkgui.glade.h:17 -msgid "Personal Information" -msgstr "Osobní údaje" - -#: ../src/gtkgui.glade.h:18 -msgid "Please choose one of the options below:" -msgstr "Prosím zvolte z následujících možností:" - -#: ../src/gtkgui.glade.h:19 -msgid "Please fill in the data for your new account" -msgstr "Prosím vyplňte údaje pro Váš nový úÄet" - -#: ../src/gtkgui.glade.h:20 -msgid "Preset Status Messages" -msgstr "PÅ™ednastavené stavy" - -#: ../src/gtkgui.glade.h:21 -msgid "Properties" -msgstr "Vlastnosti" - -#: ../src/gtkgui.glade.h:22 -msgid "Settings" -msgstr "Nastavení" - -#: ../src/gtkgui.glade.h:23 -msgid "Sounds" -msgstr "Zvuky" - -#: ../src/gtkgui.glade.h:24 -msgid "Type your new status message" -msgstr "NapiÅ¡te nový popis stavu" - -#: ../src/gtkgui.glade.h:25 -msgid "Visual Notifications" -msgstr "Vizuální upozornÄ›ní" - -#: ../src/gtkgui.glade.h:26 -msgid "What do you want to do?" -msgstr "Co by jste rád(a) dÄ›lal(a)?" - -#: ../src/gtkgui.glade.h:27 -msgid "XML Input" -msgstr "Vstup XML" - -#: ../src/gtkgui.glade.h:28 -msgid "A list of active, completed and stopped file transfers" -msgstr "Seznam aktivních, dokonÄených a zastavených pÅ™enosů souborů" - -#: ../src/gtkgui.glade.h:29 -msgid "A_ccounts" -msgstr "ÚÄ_ty" - -#: ../src/gtkgui.glade.h:30 -msgid "A_fter nickname:" -msgstr "_Po pÅ™ezdívce:" - -#. "About" is the text of a tab of vcard window -#: ../src/gtkgui.glade.h:32 -msgid "About" -msgstr "O aplikaci" - -#: ../src/gtkgui.glade.h:33 -msgid "Accept" -msgstr "PÅ™ijmout" - -#: ../src/gtkgui.glade.h:34 -msgid "Account" -msgstr "ÚÄet" - -#: ../src/gtkgui.glade.h:35 -msgid "" -"Account\n" -"Group\n" -"Contact\n" -"Banner" -msgstr "" -"ÚÄet\n" -"Skupina\n" -"Kontakt\n" -"Titulek" - -#: ../src/gtkgui.glade.h:39 -msgid "Account Modification" -msgstr "Úprava úÄtu" - -#: ../src/gtkgui.glade.h:40 -msgid "Accounts" -msgstr "ÚÄty" - -#: ../src/gtkgui.glade.h:42 -msgid "Add New Contact" -msgstr "PÅ™idat nový kontakt" - -#: ../src/gtkgui.glade.h:43 -msgid "Add Special _Notification" -msgstr "PÅ™idat zvláštní _upozornÄ›ní" - -#: ../src/gtkgui.glade.h:44 -msgid "Add _Contact" -msgstr "PÅ™idat _kontakt" - -#: ../src/gtkgui.glade.h:45 -msgid "Address" -msgstr "Adresa" - -#: ../src/gtkgui.glade.h:46 -msgid "Advanced" -msgstr "Rozšířené" - -#: ../src/gtkgui.glade.h:47 -msgid "Advanced Configuration Editor" -msgstr "Editor rozšířeného nastavení" - -#: ../src/gtkgui.glade.h:48 -msgid "" -"All chat states\n" -"Composing only\n" -"Disabled" -msgstr "" -"VÅ¡echny stavy rozhovoru\n" -"Pouze píšu zprávu\n" -"Vypnuto" - -#: ../src/gtkgui.glade.h:51 -msgid "Allow _OS information to be sent" -msgstr "Povolit odeslání informace o _OS" - -#: ../src/gtkgui.glade.h:52 -msgid "Allow him/her to see my status" -msgstr "Dovol mu/jí vidÄ›t můj stav" - -#: ../src/gtkgui.glade.h:53 -msgid "Allow popup/notifications when I'm _away/na/busy/invisible" -msgstr "Povolit popup/upozornÄ›ní pokud jsem _pryÄ/nedostupný/neruÅ¡it/neviditelný" - -#: ../src/gtkgui.glade.h:54 -msgid "Also known as iChat style" -msgstr "Známý také jako iChat styl" - -#: ../src/gtkgui.glade.h:55 -msgid "Ask status message when I:" -msgstr "Ptej se na stav pÅ™i:" - -#: ../src/gtkgui.glade.h:56 -msgid "Ask to see his/her status" -msgstr "Požádat o zobrazení je(jí)ho stavu" - -#: ../src/gtkgui.glade.h:57 -msgid "Ask:" -msgstr "Žádá:" - -#: ../src/gtkgui.glade.h:58 -msgid "Assign Open_PGP Key" -msgstr "PÅ™iÅ™adit Open_PGP klíÄ" - -#: ../src/gtkgui.glade.h:59 -msgid "Authorize contact so he can know when you're connected" -msgstr "Autorizovat kontakt, aby vÄ›dÄ›l kdy jste pÅ™ipojen(a)" - -#: ../src/gtkgui.glade.h:60 -msgid "Auto _away after:" -msgstr "_Automaticky pryÄ po:" - -#: ../src/gtkgui.glade.h:61 -msgid "Auto _not available after:" -msgstr "Automaticky _nedostupný po:" - -#: ../src/gtkgui.glade.h:62 -msgid "Auto join" -msgstr "Automaticky vstoupit" - -#: ../src/gtkgui.glade.h:63 -msgid "" -"Autodetect on every Gajim startup\n" -"Always use GNOME default applications\n" -"Always use KDE default applications\n" -"Custom" -msgstr "" -"Automaticky zjistit pÅ™i každém startu aplikace\n" -"Vždy použít výchozí aplikace z GNOME\n" -"Vždy použít výchozí aplikace z KDE\n" -"Vlastní" - -#: ../src/gtkgui.glade.h:67 -msgid "Automatically authorize contact" -msgstr "Automaticky autorizovat kontakt" - -#: ../src/gtkgui.glade.h:68 -msgid "Autoreconnect when connection is lost" -msgstr "Automaticky se znovu pÅ™ipojit pÅ™i ztrátÄ› spojení" - -#: ../src/gtkgui.glade.h:69 -msgid "B_efore nickname:" -msgstr "PÅ™e_d pÅ™ezdívkou:" - -#: ../src/gtkgui.glade.h:70 -msgid "Birthday:" -msgstr "Den narození:" - -#: ../src/gtkgui.glade.h:71 -msgid "Bold" -msgstr "TuÄné" - -# FIXME: query ma cesky ekvivalent? -#: ../src/gtkgui.glade.h:72 -msgid "Build custom query" -msgstr "Sestavit vlastní query" - -#: ../src/gtkgui.glade.h:73 -msgid "C_onnect on Gajim startup" -msgstr "_PÅ™ipojit po startu Gajimu" - -#: ../src/gtkgui.glade.h:74 -msgid "Cancel file transfer" -msgstr "ZruÅ¡it pÅ™enos souboru" - -#: ../src/gtkgui.glade.h:75 -msgid "Cancels the selected file transfer" -msgstr "Zruší vybraný pÅ™enos souboru" - -#: ../src/gtkgui.glade.h:76 -msgid "Cancels the selected file transfer and removes incomplete file" -msgstr "Zruší vybraný pÅ™enos souboru a smaže nedokonÄený soubor" - -#: ../src/gtkgui.glade.h:77 -msgid "Chan_ge Password" -msgstr "_ZmÄ›nit heslo" - -#: ../src/gtkgui.glade.h:78 -msgid "Change Password" -msgstr "ZmÄ›nit heslo" - -#: ../src/gtkgui.glade.h:79 -msgid "Change _Nickname" -msgstr "ZmÄ›_nit pÅ™ezdívku" - -#: ../src/gtkgui.glade.h:80 -msgid "Change _Subject" -msgstr "ZmÄ›nit _pÅ™edmÄ›t" - -#: ../src/gtkgui.glade.h:82 -msgid "Chat state noti_fications:" -msgstr "_UpozornÄ›ní o stavu rozhovoru:" - -#: ../src/gtkgui.glade.h:83 -msgid "" -"Check this option, only if someone you don't have in the roster spams/annoys " -"you. Use with caution, cause it blocks all messages from any contact that is " -"not in the roster" -msgstr "" -"ZaÅ¡krtnÄ›te pouze pokud Vás obtěžuje nÄ›kdo, koho nemáte v Seznamu. Použijte s " -"rozvahou, protože tato volba zakáže vÅ¡echny zprávy od kontaktů, které jeÅ¡tÄ› " -"nemáte v Seznamu" - -#: ../src/gtkgui.glade.h:84 -msgid "" -"Check this so Gajim will connect in port 5223 where legacy servers are " -"expected to have SSL capabilities. Note that Gajim uses TLS encryption by " -"default if broadcasted by the server, and with this option enabled TLS will " -"be disabled" -msgstr "" -"ZaÅ¡krtnÄ›te pokud se má Gajim pÅ™ipojit na port 5223, kde obvykle nabízejí " -"starší servery SSL. Pozor- Gajim použije TLS Å¡ifrování standardnÄ›, pokud " -"server ohlásí jeho podporu. Touto volbou bude TLS vypnuto" - -#: ../src/gtkgui.glade.h:85 -msgid "Choose _Key..." -msgstr "Vyberte _klíÄ..." - -#: ../src/gtkgui.glade.h:86 -msgid "City:" -msgstr "Obec:" - -#: ../src/gtkgui.glade.h:87 -msgid "Clean _up" -msgstr "_Vymazat" - -#: ../src/gtkgui.glade.h:88 -msgid "Click to change account's password" -msgstr "KliknÄ›te pro zmÄ›nu hesla k úÄtu" - -#: ../src/gtkgui.glade.h:89 -msgid "Click to insert an emoticon (Alt+M)" -msgstr "Klikni pro vložení smajlíku (Alt+M)" - -#: ../src/gtkgui.glade.h:90 -msgid "Click to see features (like MSN, ICQ transports) of jabber servers" -msgstr "KliknÄ›te pro seznam vlastností (jako MSN, ICQ transporty) jabber serverů" - -#: ../src/gtkgui.glade.h:91 -msgid "Click to see past conversation in this room" -msgstr "KliknÄ›te pro starší konverzaci v této místnosti" - -#: ../src/gtkgui.glade.h:92 -msgid "Click to see past conversations with this contact" -msgstr "KliknÄ›te pro starší konverzaci s tímto kontaktem" - -#: ../src/gtkgui.glade.h:93 -msgid "Client:" -msgstr "Klient:" - -#: ../src/gtkgui.glade.h:94 -msgid "Company:" -msgstr "SpoleÄnost:" - -#: ../src/gtkgui.glade.h:95 -msgid "Composing" -msgstr "Píšu zprávu" - -#: ../src/gtkgui.glade.h:96 -msgid "Configure _Room" -msgstr "Nastavit _místnost" - -#: ../src/gtkgui.glade.h:97 -msgid "Connect when I press Finish" -msgstr "PÅ™ipojit když stisknu DokonÄit" - -#: ../src/gtkgui.glade.h:98 -msgid "Connection" -msgstr "Spojení" - -#: ../src/gtkgui.glade.h:99 -msgid "Contact Information" -msgstr "Informace o kontaktu" - -#: ../src/gtkgui.glade.h:100 -msgid "Contact _Info" -msgstr "_Informace o kontaktu" - -#: ../src/gtkgui.glade.h:101 -msgid "Conversation History" -msgstr "Historie konverzace" - -#: ../src/gtkgui.glade.h:102 -msgid "Country:" -msgstr "ZemÄ›:" - -#: ../src/gtkgui.glade.h:103 -msgid "Default status _iconset:" -msgstr "Výchozí _ikony stavů:" - -#: ../src/gtkgui.glade.h:104 -msgid "Delete MOTD" -msgstr "Smazat MOTD" - -#: ../src/gtkgui.glade.h:105 -msgid "Deletes Message of the Day" -msgstr "Smaže zprávu dne" - -#: ../src/gtkgui.glade.h:106 -msgid "Deny" -msgstr "Odmítnout" - -#: ../src/gtkgui.glade.h:107 -msgid "Deny authorization from contact so he cannot know when you're connected" -msgstr "Odmítne autorizaci od kontaktu, takže nebude vidÄ›t kdy jste pÅ™ipojen(a)" - -#: ../src/gtkgui.glade.h:108 -msgid "Department:" -msgstr "OddÄ›lení:" - -#: ../src/gtkgui.glade.h:109 -msgid "Display a_vatars of contacts in roster" -msgstr "Zobrazovat a_vatary kontaktů v Seznamu" - -#: ../src/gtkgui.glade.h:110 -msgid "Display status _messages of contacts in roster" -msgstr "Zobrazovat p_opis stavu kontaktů v Seznamu" - -#: ../src/gtkgui.glade.h:111 -msgid "E-Mail:" -msgstr "E-Mail:" - -#: ../src/gtkgui.glade.h:112 -msgid "E_very 5 minutes" -msgstr "_Každých 5 minut" - -#: ../src/gtkgui.glade.h:113 -msgid "Edit Groups" -msgstr "Upravit skupiny" - -#: ../src/gtkgui.glade.h:114 -msgid "Edit Personal Information..." -msgstr "Upravit osobní informace..." - -#: ../src/gtkgui.glade.h:115 -msgid "Edit _Groups" -msgstr "Upravit _skupiny" - -#: ../src/gtkgui.glade.h:116 -msgid "Emoticons:" -msgstr "Smajlíky:" - -#. XML Console enable checkbutton -#: ../src/gtkgui.glade.h:118 -msgid "Enable" -msgstr "Povolit" - -#: ../src/gtkgui.glade.h:119 -msgid "Enter it again for confirmation:" -msgstr "Zadejte znovu pro ověření:" - -#: ../src/gtkgui.glade.h:120 -msgid "Enter new password:" -msgstr "Zadejte heslo:" - -#: ../src/gtkgui.glade.h:121 -msgid "Events" -msgstr "Události" - -#: ../src/gtkgui.glade.h:122 -msgid "Extra Address:" -msgstr "Další adresa:" - -#. Family Name -#: ../src/gtkgui.glade.h:124 -msgid "Family:" -msgstr "Rodina:" - -#: ../src/gtkgui.glade.h:125 -msgid "File Transfers" -msgstr "PÅ™enosy souborů" - -#: ../src/gtkgui.glade.h:126 -msgid "File _Transfers" -msgstr "_PÅ™enosy souborů" - -#: ../src/gtkgui.glade.h:127 -msgid "Filter:" -msgstr "Filtr:" - -#: ../src/gtkgui.glade.h:128 -msgid "Font style:" -msgstr "Staly písma:" - -#: ../src/gtkgui.glade.h:129 -msgid "Forbid him/her to see my status" -msgstr "Zakaž mu/jí vidÄ›t můj stav" - -#: ../src/gtkgui.glade.h:130 -msgid "Format: YYYY-MM-DD" -msgstr "Formát: RRRR-MM-DD" - -#: ../src/gtkgui.glade.h:131 -msgid "Frequently Asked Questions (online)" -msgstr "ÄŒasto kladené dotazy - FAQ (online)" - -#: ../src/gtkgui.glade.h:132 -msgid "From:" -msgstr "Odesílatel:" - -#: ../src/gtkgui.glade.h:133 -msgid "G_o" -msgstr "_Jdi" - -#: ../src/gtkgui.glade.h:134 ../src/notify.py:167 ../src/notify.py:189 -#: ../src/notify.py:201 ../src/tooltips.py:339 -msgid "Gajim" -msgstr "Gajim" - -#: ../src/gtkgui.glade.h:135 -msgid "Gajim Themes Customization" -msgstr "Úprava témat Gajimu" - -#: ../src/gtkgui.glade.h:136 -msgid "" -"Gajim can send and receive meta-information related to a conversation you " -"may have with a contact. Here you can specify which chatstates you want to " -"send to the other party." -msgstr "" -"Gajim umí ohlaÅ¡ovat svoji schopnost posílat a pÅ™ijímat meta-informace " -"vztahující se k rozhovoru. Tady můžete nastavit, které stavy rozhovoru chcete posílat svému protÄ›jÅ¡ku." - -#: ../src/gtkgui.glade.h:137 -msgid "Gajim will automatically show new events by poping up the relative window" -msgstr "Gajim automaticky zobrazí nové události vyzdvihnutím relativního okna" - -#: ../src/gtkgui.glade.h:138 -msgid "" -"Gajim will notify you for new events via a popup in the bottom right of the " -"screen" -msgstr "Gajim Vás upozorní o nové zprávÄ› pomocí popupu v pravém dolním rohu obrazovky" - -#: ../src/gtkgui.glade.h:139 -msgid "" -"Gajim will notify you via a popup window in the bottom right of the screen " -"about contacts that just signed in" -msgstr "" -"Gajim Vás upozorní o novÄ› pÅ™ipojených kontaktech pomocí popupu v pravém " -"dolním rohu obrazovky" - -#: ../src/gtkgui.glade.h:140 -msgid "" -"Gajim will notify you via a popup window in the bottom right of the screen " -"about contacts that just signed out" -msgstr "" -"Gajim Vás upozorní o přávÄ› odpojených kontaktech pomocí popupu v pravém " -"dolním rohu obrazovky" - -#: ../src/gtkgui.glade.h:141 -msgid "Gajim will only change the icon of the contact that triggered the new event" -msgstr "Gajim pouze zmÄ›ní ikonu kontaktu, který vyvolal novou událost" - -#: ../src/gtkgui.glade.h:142 -msgid "Gajim: Account Creation Wizard" -msgstr "Gajim: Průvodce vytváření úÄtu" - -#. user has no group, print him in General -#: ../src/gtkgui.glade.h:143 ../src/roster_window.py:265 -#: ../src/roster_window.py:1157 ../src/roster_window.py:1379 -#: ../src/systray.py:286 -msgid "General" -msgstr "Obecné" - -#. Given Name -#: ../src/gtkgui.glade.h:145 -msgid "Given:" -msgstr "KÅ™estní:" - -#: ../src/gtkgui.glade.h:146 -msgid "Gone" -msgstr "PryÄ" - -#: ../src/gtkgui.glade.h:147 -msgid "Group:" -msgstr "Skupina:" - -#: ../src/gtkgui.glade.h:148 -msgid "HTTP Connect" -msgstr "HTTP pÅ™ipojení" - -#: ../src/gtkgui.glade.h:149 -msgid "Help online" -msgstr "NápovÄ›da online" - -#: ../src/gtkgui.glade.h:150 -msgid "Hides the window" -msgstr "Skryje okno" - -#: ../src/gtkgui.glade.h:151 -msgid "Homepage:" -msgstr "Dom. stránka:" - -#: ../src/gtkgui.glade.h:152 -msgid "Hostname: " -msgstr "PoÄítaÄ: " - -#: ../src/gtkgui.glade.h:153 -msgid "I already have an account I want to use" -msgstr "Už mám úÄet který bych rád(a) použil(a)" - -#: ../src/gtkgui.glade.h:154 -msgid "I want to _register for a new account" -msgstr "ChtÄ›l(a) bych za_registrovat nový úÄet" - -#: ../src/gtkgui.glade.h:155 -msgid "I would like to add you to my contact list." -msgstr "ChtÄ›la bych si Vás pÅ™idat do mého Seznamu." - -#: ../src/gtkgui.glade.h:156 -msgid "" -"If checked, Gajim will also broadcast some more IPs except from just your " -"IP, so file transfer has higher chances of working right." -msgstr "Pokud je zaÅ¡krtnuto, Gajim ohlásí navíc nÄ›kolik dalších IP kromÄ› Vaší IP, takže pÅ™enos souboru má vÄ›tší Å¡anci správného fungování." - -#: ../src/gtkgui.glade.h:157 -msgid "" -"If checked, Gajim will display avatars of contacts in roster window and in " -"group chats" -msgstr "Pokud zaÅ¡krtnuto, Gajim bude zobrazovat avatary kontaktů v oknÄ› Seznamu a v diskuzích" - -#: ../src/gtkgui.glade.h:158 -msgid "" -"If checked, Gajim will display status messages of contacts under the contact " -"name in roster window and in group chats" -msgstr "" -"Pokud zaÅ¡krtnuto, Gajim bude zobrazovat popisy stavů kontaktů pod jménem v " -"oknÄ› Seznamu a v diskuzích" - -#: ../src/gtkgui.glade.h:159 -msgid "If checked, Gajim will join this group chat on startup" -msgstr "Pokud je zaÅ¡krtnuto, Gajim se pÅ™ipojí do této místnosti pÅ™i spuÅ¡tÄ›ní" - -#: ../src/gtkgui.glade.h:160 -msgid "If checked, Gajim will remember the password for this account" -msgstr "Pokud bude zaÅ¡krtnuto, Gajim si bude pamatovat heslo pro tento úÄet" - -#: ../src/gtkgui.glade.h:161 -msgid "" -"If checked, Gajim will remember the roster and chat window positions in the " -"screen and the sizes of them next time you run it" -msgstr "" -"Pokud bude zaÅ¡krtnuto, Gajim si bude pamatovat polohy a velikosti Seznamu a " -"oken rozhovorů po příštím spuÅ¡tÄ›ní" - -#: ../src/gtkgui.glade.h:162 -msgid "" -"If checked, Gajim will send keep-alive packets so it prevents connection " -"timeout which results in disconnection" -msgstr "" -"Pokud zaÅ¡krtnuto, Gajim bude posílat keep-alive pakety, aby pÅ™edeÅ¡el ztrátÄ› " -"spojení způsobenou neÄinností" - -#: ../src/gtkgui.glade.h:163 -msgid "" -"If checked, Gajim will store the password in ~/.gajim/config with 'read' " -"permission only for you" -msgstr "" -"Pokud zaÅ¡krtnuto, Gajim uloží heslo v ~/.gajim/config s právem Ätení pouze " -"pro Vás" - -#: ../src/gtkgui.glade.h:164 -msgid "" -"If checked, Gajim will use protocol-specific status icons. (eg. A contact " -"from MSN will have the equivalent msn icon for status online, away, busy, " -"etc...)" -msgstr "" -"Pokud zaÅ¡krtnuto, Gajim použije ikony specifické pro protokol (napÅ™. kontakt " -"z MSN bude mít odpovídající ikonu msn pro stavy pÅ™ipojen, pryÄ, neruÅ¡it, " -"atd...)" - -#: ../src/gtkgui.glade.h:165 -msgid "" -"If checked, Gajim, when launched, will automatically connect to jabber using " -"this account" -msgstr "Pokud zaÅ¡krtnuto, Gajim po spuÅ¡tÄ›ní se automaticky pÅ™ipojí pomocí tohoto úÄtu" - -#: ../src/gtkgui.glade.h:166 -msgid "" -"If checked, any change to the global status (handled by the combobox at the " -"bottom of the roster window) will change the status of this account " -"accordingly" -msgstr "" -"Pokud zaÅ¡krtnuto, jakákoliv zmÄ›na globálního stavu (pomocí comboboxu na " -"spodní stranÄ› Seznamu) zmÄ›ní stav tohoto úÄtu také" - -#: ../src/gtkgui.glade.h:167 -msgid "" -"If not disabled, Gajim will replace ascii smilies like ':)' with equivalent " -"animated or static graphical emoticons" -msgstr "" -"Pokud zaÅ¡krtnuto, Gajim nahradí ascii smajlíky jako ':)' za ekvivalentní " -"animované nebo statické grafické smajlíky" - -#: ../src/gtkgui.glade.h:168 -msgid "" -"If you have 2 or more accounts and it is checked, Gajim will list all " -"contacts as if you had one account" -msgstr "" -"Máte-li 2 nebo více úÄtů a je zaÅ¡krtnuto, Gajim zobrazí vÅ¡echny kontakty " -"jako by byly z jednoho úÄtu" - -#: ../src/gtkgui.glade.h:169 -msgid "Inactive" -msgstr "Neaktivní" - -#. Info/Query make the "IQ" initials. So translate like this 'YourLang/YourLang (Info/Query)'. Thanks (it's a tooltip so width is not a problem) -#: ../src/gtkgui.glade.h:171 -msgid "Info/Query" -msgstr "Info/Query" - -#: ../src/gtkgui.glade.h:172 -msgid "Information about you, as stored in the server" -msgstr "Informace o Vás, jak jsou uloženy na serveru" - -#: ../src/gtkgui.glade.h:173 -msgid "Invitation Received" -msgstr "PÅ™ijata pozvánka" - -#: ../src/gtkgui.glade.h:174 -msgid "Italic" -msgstr "Latinka" - -#: ../src/gtkgui.glade.h:175 -msgid "Jabber" -msgstr "Jabber" - -#: ../src/gtkgui.glade.h:176 -msgid "Jabber ID:" -msgstr "Jabber ID:" - -#: ../src/gtkgui.glade.h:178 -msgid "Join _Group Chat" -msgstr "Vstoupit do _Diskuze" - -#: ../src/gtkgui.glade.h:179 -msgid "Location" -msgstr "Poloha" - -#: ../src/gtkgui.glade.h:180 -msgid "" -"MUC\n" -"Messages" -msgstr "" -"Zprávy\n" -"z MUC" - -# FIXME: I dont really know what this is and where it is -#: ../src/gtkgui.glade.h:182 -msgid "" -"MUC Directed\n" -"Messages" -msgstr "" -"MUC Directed\n" -"Messages" - -#: ../src/gtkgui.glade.h:184 -msgid "Ma_nage..." -msgstr "Sp_ravovat..." - -#: ../src/gtkgui.glade.h:185 -msgid "Manage Accounts" -msgstr "Spravuj úÄty" - -#: ../src/gtkgui.glade.h:186 -msgid "Manage Bookmarks" -msgstr "Spravuj záložky" - -#: ../src/gtkgui.glade.h:187 -msgid "Manage Proxy Profiles" -msgstr "Spravuj profily Proxy" - -#: ../src/gtkgui.glade.h:188 -msgid "Manage..." -msgstr "Spravovat..." - -#. Middle Name -#: ../src/gtkgui.glade.h:190 -msgid "Middle:" -msgstr "StÅ™ední:" - -#: ../src/gtkgui.glade.h:191 -msgid "Mo_derator" -msgstr "Mo_derátor" - -#: ../src/gtkgui.glade.h:192 -msgid "More" -msgstr "Více" - -#: ../src/gtkgui.glade.h:193 -msgid "Name:" -msgstr "Jméno:" - -#: ../src/gtkgui.glade.h:194 -msgid "" -"Never\n" -"Always\n" -"Per account\n" -"Per type" -msgstr "" -"Nikdy\n" -"Vždy\n" -"Podle úÄtu\n" -"Podle typu" - -#: ../src/gtkgui.glade.h:198 -msgid "Nickname:" -msgstr "PÅ™ezdívka" - -#. None means no proxy profile selected -#: ../src/gtkgui.glade.h:201 -msgid "None" -msgstr "Žádný" - -#: ../src/gtkgui.glade.h:202 -msgid "Notify me about contacts that: " -msgstr "Upozorni mÄ› na kontakty které se: " - -#: ../src/gtkgui.glade.h:203 -msgid "Notify on new _Gmail e-mail" -msgstr "Upozorni pÅ™i novém _Gmail e-mailu" - -#: ../src/gtkgui.glade.h:204 -msgid "OS:" -msgstr "OS:" - -#: ../src/gtkgui.glade.h:205 -msgid "On every _message" -msgstr "PÅ™i každé _zprávÄ›" - -#: ../src/gtkgui.glade.h:206 -msgid "One message _window:" -msgstr "_Okno jednoduché zprávy:" - -#: ../src/gtkgui.glade.h:208 -msgid "Pass_word:" -msgstr "He_slo:" - -#: ../src/gtkgui.glade.h:209 -msgid "Passphrase" -msgstr "Heslo" - -#: ../src/gtkgui.glade.h:210 -msgid "Password:" -msgstr "Heslo:" - -#: ../src/gtkgui.glade.h:211 ../src/tooltips.py:645 -msgid "Paused" -msgstr "Pozastaveno" - -#: ../src/gtkgui.glade.h:212 -msgid "Personal Information" -msgstr "Osobní údaje" - -#: ../src/gtkgui.glade.h:213 -msgid "Phone No.:" -msgstr "Telefon:" - -#: ../src/gtkgui.glade.h:214 -msgid "Play _sounds" -msgstr "PÅ™ehrávat _zvuky" - -#: ../src/gtkgui.glade.h:215 -msgid "Port: " -msgstr "Port: " - -#: ../src/gtkgui.glade.h:216 -msgid "Position:" -msgstr "Pozice:" - -#: ../src/gtkgui.glade.h:217 -msgid "Postal Code:" -msgstr "PSÄŒ:" - -#: ../src/gtkgui.glade.h:218 -msgid "Preferences" -msgstr "Nastavení" - -#. Prefix in Name -#: ../src/gtkgui.glade.h:220 -msgid "Prefix:" -msgstr "Titul:" - -#: ../src/gtkgui.glade.h:221 -msgid "Preset messages:" -msgstr "Uložené stavy:" - -#: ../src/gtkgui.glade.h:222 -msgid "Print time:" -msgstr "ÄŒas tisku:" - -#: ../src/gtkgui.glade.h:223 -msgid "Priori_ty:" -msgstr "Priori_ta:" - -#: ../src/gtkgui.glade.h:224 -msgid "" -"Priority is used in Jabber to determine who gets the events from the jabber " -"server when two or more clients are connected using the same account; The " -"client with the highest priority gets the events" -msgstr "" -"Priorita je v Jabberu použita ke zjiÅ¡tÄ›ní, kdo obdrží zprávu od jabber " -"serveru, pokud je pÅ™ipojeno více klientů pÅ™es stejný úÄet. Zprávu obdrží " -"klient s vyšší prioritou" - -#: ../src/gtkgui.glade.h:225 -msgid "Profile, Avatar" -msgstr "Profil, Avatar" - -#: ../src/gtkgui.glade.h:226 -msgid "Protocol:" -msgstr "Protokol:" - -#: ../src/gtkgui.glade.h:227 -msgid "Proxy:" -msgstr "Proxy:" - -#: ../src/gtkgui.glade.h:228 -msgid "Query Builder..." -msgstr "Kontrukce dotazů..." - -#: ../src/gtkgui.glade.h:229 -msgid "Recently:" -msgstr "Nedávno:" - -#: ../src/gtkgui.glade.h:230 -msgid "Register to" -msgstr "Zaregistrovat" - -#: ../src/gtkgui.glade.h:231 -msgid "Remove account _only from Gajim" -msgstr "Odstranit úÄet _pouze z Gajimu" - -#: ../src/gtkgui.glade.h:232 -msgid "Remove account from Gajim and from _server" -msgstr "Odstranit úÄet z Gajimu i ze _serveru" - -#: ../src/gtkgui.glade.h:233 -msgid "Remove file transfer from the list." -msgstr "Odstranit pÅ™enos souboru ze výpisu." - -#: ../src/gtkgui.glade.h:234 -msgid "Removes completed, canceled and failed file transfers from the list" -msgstr "Odstraní dokonÄené, zruÅ¡ené nebo pÅ™enosy které selhaly, z výpisu" - -#: ../src/gtkgui.glade.h:235 -msgid "Reply to this message" -msgstr "OdpovÄ›dÄ›t na tuto zprávu" - -#: ../src/gtkgui.glade.h:236 -msgid "Resour_ce: " -msgstr "Zd_roj: " - -#: ../src/gtkgui.glade.h:237 -msgid "" -"Resource is sent to the Jabber server in order to separate the same JID in " -"two or more parts depending on the number of the clients connected in the " -"same server with the same account. So you might be connected in the same " -"account with resource 'Home' and 'Work' at the same time. The resource which " -"has the highest priority will get the events. (see below)" -msgstr "" -"Zdroj je odeslán Jabber serveru pro oddÄ›lení stejné JID na dvÄ› nebo více " -"Äástí závisejících na poÄtu pÅ™ipojených klientů na stejný server se stejným " -"úÄtem. Takže můžete být pÅ™ipojeni ke stejnému úÄtu se zdroji 'Domov' a " -"'Práce' zároveň. Zdroj, který má nejvyšší prioritu obdrží zprávy. (více " -"následuje)" - -#: ../src/gtkgui.glade.h:238 -msgid "Resource:" -msgstr "Zdroj:" - -#: ../src/gtkgui.glade.h:239 -msgid "Role:" -msgstr "Postavení:" - -#: ../src/gtkgui.glade.h:240 -msgid "Room Configuration" -msgstr "Nastavení místnosti" - -#: ../src/gtkgui.glade.h:241 -msgid "Room:" -msgstr "Místnost:" - -#: ../src/gtkgui.glade.h:242 -msgid "Save _passphrase (insecure)" -msgstr "Uložit _heslo (nebezpeÄné)" - -#: ../src/gtkgui.glade.h:243 -msgid "Save _position and size for roster and chat windows" -msgstr "Uložit _pozici a velikost pro seznam a okna rozhovorů" - -# FIXME: not accurate -#: ../src/gtkgui.glade.h:244 -msgid "Save as Preset..." -msgstr "Uložit stav..." - -#: ../src/gtkgui.glade.h:245 -msgid "Save conversation _logs for all contacts" -msgstr "Uložit _historii pro vÅ¡echny kontakty" - -#: ../src/gtkgui.glade.h:246 -msgid "Save pass_word" -msgstr "Uložit _heslo" - -#: ../src/gtkgui.glade.h:247 -msgid "Search" -msgstr "Najít" - -#: ../src/gtkgui.glade.h:248 -msgid "Sen_d" -msgstr "O_deslat" - -#: ../src/gtkgui.glade.h:249 -msgid "Send File" -msgstr "Odeslat Soubor" - -#: ../src/gtkgui.glade.h:250 -msgid "Send Single _Message" -msgstr "Odeslat jednoduchou _zprávu" - -#: ../src/gtkgui.glade.h:251 -msgid "Send Single _Message..." -msgstr "Odeslat jednoduchou _zprávu..." - -#: ../src/gtkgui.glade.h:252 -msgid "Send _File" -msgstr "Odeslat _Soubor" - -#: ../src/gtkgui.glade.h:253 -msgid "Send keep-alive packets" -msgstr "Odesílat keep-alive pakety" - -#: ../src/gtkgui.glade.h:254 -msgid "Send message" -msgstr "Odeslat zprávu" - -#: ../src/gtkgui.glade.h:255 -msgid "Send message and close window" -msgstr "Odeslat zprávu a zavřít okno" - -#: ../src/gtkgui.glade.h:256 -msgid "Sends a message to currently connected users to this server" -msgstr "Poslat zprávu momentálnÄ› pÅ™ipojeným uživatelům tohoto serveru" - -#: ../src/gtkgui.glade.h:257 -msgid "Server:" -msgstr "Server:" - -#: ../src/gtkgui.glade.h:258 -msgid "Servers Features" -msgstr "Vlastnosti serveru" - -#: ../src/gtkgui.glade.h:259 -msgid "Set MOTD" -msgstr "Nastavit MOTD" - -#: ../src/gtkgui.glade.h:260 -msgid "Set _Avatar" -msgstr "Nastavit _Avatara" - -#: ../src/gtkgui.glade.h:261 -msgid "Set my profile when I connect" -msgstr "Nastavit profil, když se pÅ™ipojuji" - -#: ../src/gtkgui.glade.h:262 -msgid "Sets Message of the Day" -msgstr "Nastaví Zprávu dne" - -#: ../src/gtkgui.glade.h:263 -msgid "Show All Pending _Events" -msgstr "Zobrazit vÅ¡echny Äekající _události" - -#: ../src/gtkgui.glade.h:264 -msgid "Show _Offline Contacts" -msgstr "Zobrazit _odpojené kontakty" - -#: ../src/gtkgui.glade.h:265 -msgid "Show _Roster" -msgstr "Zobrazit _Seznam" - -#: ../src/gtkgui.glade.h:266 -msgid "Show _XML Console" -msgstr "Zobrazit _XML konzoli" - -#: ../src/gtkgui.glade.h:267 -msgid "Show only in _roster" -msgstr "Zobrazit pouze v _Seznamu" - -#: ../src/gtkgui.glade.h:268 -msgid "Shows a list of file transfers between you and other" -msgstr "Zobrazí výpis pÅ™enosů souborů mezi Vámi a ostatními" - -#: ../src/gtkgui.glade.h:269 -msgid "Sign _in" -msgstr "_PÅ™ihlásí" - -#: ../src/gtkgui.glade.h:270 -msgid "Sign _out" -msgstr "_Odhlásí" - -#: ../src/gtkgui.glade.h:271 -msgid "Sta_tus" -msgstr "S_tav" - -#: ../src/gtkgui.glade.h:272 -msgid "Start _Chat" -msgstr "ZaÄít _rozhovor" - -#: ../src/gtkgui.glade.h:273 -msgid "State:" -msgstr "Stát:" - -#: ../src/gtkgui.glade.h:274 -msgid "Status" -msgstr "Stav" - -#: ../src/gtkgui.glade.h:275 -msgid "Status:" -msgstr "Stav:" - -#: ../src/gtkgui.glade.h:276 -msgid "Street:" -msgstr "Ulice:" - -#: ../src/gtkgui.glade.h:277 -msgid "Subject:" -msgstr "PÅ™edmÄ›t:" - -#: ../src/gtkgui.glade.h:278 -msgid "Subscription Request" -msgstr "Žádost o autorizaci" - -#: ../src/gtkgui.glade.h:279 -msgid "Subscription:" -msgstr "Autorizace:" - -#. Suffix in Name -#: ../src/gtkgui.glade.h:281 -msgid "Suffix:" -msgstr "Za jménem:" - -#: ../src/gtkgui.glade.h:282 -msgid "Synch_ronize account status with global status" -msgstr "Synch_ronizovat stav úÄtu s globálním stavem" - -#: ../src/gtkgui.glade.h:283 -msgid "T_heme:" -msgstr "_Téma:" - -#: ../src/gtkgui.glade.h:284 -msgid "Text _color:" -msgstr "_Barva textu:" - -#: ../src/gtkgui.glade.h:285 -msgid "Text _font:" -msgstr "Písmo textu:" - -#: ../src/gtkgui.glade.h:286 -msgid "The auto away status message" -msgstr "Text stavu automaticky pryÄ" - -#: ../src/gtkgui.glade.h:287 -msgid "The auto not available status message" -msgstr "Text stavu nedostupný" - -#: ../src/gtkgui.glade.h:288 -msgid "" -"This action removes single file transfer from the list. If the transfer is " -"active, it is first stopped and then removed" -msgstr "" -"Tato akce smaže jeden pÅ™enos souboru z výpisu. Pokud je pÅ™enos aktivní, bude " -"nejdříve zastaven a potom smazán" - -#: ../src/gtkgui.glade.h:289 -msgid "Title:" -msgstr "Titul:" - -#: ../src/gtkgui.glade.h:290 -msgid "To:" -msgstr "Příjemce:" - -#: ../src/gtkgui.glade.h:291 -msgid "Toggle Open_PGP Encryption" -msgstr "PÅ™epnout Open_PGP Å¡ifrování" - -#: ../src/gtkgui.glade.h:292 -msgid "Type:" -msgstr "Typ:" - -#: ../src/gtkgui.glade.h:293 -msgid "Underline" -msgstr "Podtržení" - -#: ../src/gtkgui.glade.h:294 -msgid "Update MOTD" -msgstr "Upravit MOTD" - -#: ../src/gtkgui.glade.h:295 -msgid "Updates Message of the Day" -msgstr "Upraví Zprávu dne" - -#: ../src/gtkgui.glade.h:296 -msgid "Use _SSL (legacy)" -msgstr "Použít _SSL (staré)" - -#: ../src/gtkgui.glade.h:297 -msgid "Use _transports iconsets" -msgstr "Používej ikony _transportů" - -#: ../src/gtkgui.glade.h:298 -msgid "Use authentication" -msgstr "Použij autentifikaci" - -#: ../src/gtkgui.glade.h:299 -msgid "Use custom hostname/port" -msgstr "Použít vlastní jméno poÄítaÄe/port" - -#: ../src/gtkgui.glade.h:300 -msgid "Use file transfer proxies" -msgstr "Použij proxy pÅ™i pÅ™enosu souborů" - -#: ../src/gtkgui.glade.h:301 -msgid "Use t_rayicon (aka. notification area icon)" -msgstr "_Ikona v systrayi (jinak Å™eÄeno v oznamovací oblasti)" - -#: ../src/gtkgui.glade.h:302 -msgid "User ID:" -msgstr "Uživatel:" - -#: ../src/gtkgui.glade.h:303 -msgid "When a file transfer is complete show a popup notification" -msgstr "Zobraz upozornÄ›ní, až bude pÅ™enos souboru dokonÄen" - -#: ../src/gtkgui.glade.h:304 -msgid "" -"When a new event (message, file transfer request etc..) is received, the " -"following methods may be used to inform you about it. Please note that " -"events about new messages only occur if it is a new message from a contact " -"you are not already chatting with" -msgstr "" -"Když nová událost (zpráva, žádost o pÅ™enos souboru, a podobnÄ›) je pÅ™ijata, " -"následující metody Vás mohou upozornit. VÄ›zte prosím, že událost pÅ™ijetí nové " -"zprávy nastane pouze tehdy, pokud je od kontaktu, se kterým už nehovoříte" - -#: ../src/gtkgui.glade.h:305 -msgid "When new event is received" -msgstr "Když je pÅ™ijata nová zpráva" - -#: ../src/gtkgui.glade.h:306 -msgid "Work" -msgstr "Práce" - -#: ../src/gtkgui.glade.h:307 -msgid "" -"You need to have an account in order to connect\n" -"to the Jabber network." -msgstr "PotÅ™ebujete mít úÄet pro pÅ™ipojení k síti Jabber." - -#: ../src/gtkgui.glade.h:309 -msgid "Your JID:" -msgstr "VaÅ¡e JID:" - -#. Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector) -#: ../src/gtkgui.glade.h:311 -msgid "_Actions" -msgstr "_Akce" - -#: ../src/gtkgui.glade.h:312 -msgid "_Add Contact..." -msgstr "PÅ™id_at kontakt..." - -#: ../src/gtkgui.glade.h:313 -msgid "_Add to Roster" -msgstr "PÅ™id_at do Seznamu" - -#: ../src/gtkgui.glade.h:314 -msgid "_Address:" -msgstr "_Adresa:" - -#: ../src/gtkgui.glade.h:315 -msgid "_Admin" -msgstr "_Správce" - -#: ../src/gtkgui.glade.h:316 -msgid "_Administrator" -msgstr "_Správce" - -#: ../src/gtkgui.glade.h:317 -msgid "_Advanced" -msgstr "_Rozšířené" - -#: ../src/gtkgui.glade.h:318 -msgid "_After time:" -msgstr "_Po Äase:" - -#: ../src/gtkgui.glade.h:319 -msgid "_Authorize" -msgstr "_Autorizuj" - -#: ../src/gtkgui.glade.h:320 -msgid "_Background:" -msgstr "_Pozadí:" - -#: ../src/gtkgui.glade.h:321 -msgid "_Ban" -msgstr "_Zakázat" - -#: ../src/gtkgui.glade.h:322 -msgid "_Before time:" -msgstr "PÅ™e_d Äasem:" - -#: ../src/gtkgui.glade.h:323 -msgid "_Bookmark This Room" -msgstr "_PÅ™idej do záložek" - -#: ../src/gtkgui.glade.h:324 -msgid "_Browser:" -msgstr "_ProhlížeÄ:" - -#: ../src/gtkgui.glade.h:325 -msgid "_Cancel" -msgstr "_ZruÅ¡it" - -#: ../src/gtkgui.glade.h:326 -msgid "_Compact View Alt+C" -msgstr "_ZjednoduÅ¡ený pohled Alt+C" - -#: ../src/gtkgui.glade.h:327 -msgid "_Contents" -msgstr "_Obsah" - -#: ../src/gtkgui.glade.h:329 -msgid "_Copy JID/Email Address" -msgstr "_Kopírovat JID/Emailovou adresu" - -#: ../src/gtkgui.glade.h:330 -msgid "_Copy Link Location" -msgstr "_Kopírovat odkaz" - -#: ../src/gtkgui.glade.h:331 -msgid "_Deny" -msgstr "O_dmítnout" - -# FIXME: chtelo by to cesky vyraz pro service discovery -#: ../src/gtkgui.glade.h:332 -msgid "_Discover Services" -msgstr "_Prohlížet služby" - -#: ../src/gtkgui.glade.h:334 -msgid "_FAQ" -msgstr "_FAQ" - -#: ../src/gtkgui.glade.h:335 -msgid "_File manager:" -msgstr "_Správce souborů:" - -#: ../src/gtkgui.glade.h:336 -msgid "_Filter:" -msgstr "_Filtr:" - -#: ../src/gtkgui.glade.h:337 -msgid "_Finish" -msgstr "_DokonÄit" - -#: ../src/gtkgui.glade.h:338 -msgid "_Font:" -msgstr "_Písmo:" - -#: ../src/gtkgui.glade.h:339 -msgid "_Group Chat" -msgstr "_Diskuze" - -#: ../src/gtkgui.glade.h:340 -msgid "_Help" -msgstr "_NápovÄ›da" - -#: ../src/gtkgui.glade.h:341 -msgid "_Highlight misspelled words" -msgstr "Zvýrazňovat _slova s pÅ™eklepy" - -#: ../src/gtkgui.glade.h:342 -msgid "_History" -msgstr "_Historie" - -#: ../src/gtkgui.glade.h:343 -msgid "_Host:" -msgstr "_PoÄítaÄ:" - -#. Info/Query: all(?) jabber xml start with Welcome to Gajim History Logs Manager\n" -"\n" -"You can select logs from the left and/or search database from below.\n" -"\n" -"WARNING:\n" -"If you plan to do massive deletions, please make sure Gajim is not running. " -"Generally avoid deletions with contacts you currently chat with." +#: ../src/gtkgui_helpers.py:717 +msgid "Extension not supported" msgstr "" -"Vítejte do Gajimova Správce Historie\n" -"\n" -"Můžete zvolit záznamy nalevo a/nebo prohledat databázi dole.\n" -"\n" -"VAROVÃNÃ:\n" -"Pokud plánujete rozsáhlé promazání, ujistÄ›te se, že Gajim neběží. " -"ObecnÄ› se vyvarujte mazání historie kontaktu, se kterým si právÄ› píšete." -#: ../src/history_manager.glade.h:7 -msgid "Delete" -msgstr "Smazat" +#: ../src/gtkgui_helpers.py:718 +#, python-format +msgid "Image cannot be saved in %(type)s format. Save as %(new_filename)s?" +msgstr "" -#: ../src/history_manager.glade.h:8 -msgid "Export" -msgstr "Export" +#: ../src/gtkgui_helpers.py:727 +#, fuzzy +msgid "Save Image as..." +msgstr "Uložit jako..." -#: ../src/history_manager.glade.h:9 -msgid "Gajim History Logs Manager" -msgstr "Gajimův Správce Historie" - -#: ../src/history_manager.glade.h:10 -msgid "_Search Database" -msgstr "_Hledat v databázi" - -#: ../src/history_manager.py:58 +#: ../src/history_manager.py:61 msgid "Cannot find history logs database" msgstr "Nemůžu nalézt databázi s historií" #. holds jid -#: ../src/history_manager.py:102 +#: ../src/history_manager.py:104 msgid "Contacts" msgstr "Kontakty" #. holds time -#: ../src/history_manager.py:115 ../src/history_manager.py:155 -#: ../src/history_window.py:94 +#: ../src/history_manager.py:117 ../src/history_manager.py:157 +#: ../src/history_window.py:85 msgid "Date" msgstr "Datum" #. holds nickname -#: ../src/history_manager.py:121 ../src/history_manager.py:173 +#: ../src/history_manager.py:123 ../src/history_manager.py:175 msgid "Nickname" msgstr "PÅ™ezdívka" #. holds message -#: ../src/history_manager.py:129 ../src/history_manager.py:161 -#: ../src/history_window.py:102 +#: ../src/history_manager.py:131 ../src/history_manager.py:163 +#: ../src/history_window.py:93 msgid "Message" msgstr "Zpráva" #. holds subject -#: ../src/history_manager.py:136 ../src/history_manager.py:167 +#: ../src/history_manager.py:138 ../src/history_manager.py:169 msgid "Subject" msgstr "PÅ™edmÄ›t" -#: ../src/history_manager.py:181 +#: ../src/history_manager.py:183 msgid "" "Do you want to clean up the database? (STRONGLY NOT RECOMMENDED IF GAJIM IS " "RUNNING)" msgstr "Chcete proÄistit databázi? (VELICE NEDOPORUÄŒUJEME POKUD GAJIM BĚŽÃ)" -#: ../src/history_manager.py:183 +#: ../src/history_manager.py:185 msgid "" "Normally allocated database size will not be freed, it will just become " "reusable. If you really want to reduce database filesize, click YES, else " @@ -3634,143 +4165,180 @@ msgid "" "In case you click YES, please wait..." msgstr "" "BěžnÄ› se velikost alokovaná databází neuvolňuje, pouze se oznaÄí k novému " -"použití. Pokud opravdu chcete snížit velikost databáze, kliknÄ›te ANO, jinak NE.\n" +"použití. Pokud opravdu chcete snížit velikost databáze, kliknÄ›te ANO, jinak " +"NE.\n" "\n" "V případÄ› kliknutí na ANO prosím vyÄkejte..." -#: ../src/history_manager.py:390 +#: ../src/history_manager.py:391 msgid "Exporting History Logs..." msgstr "Exportuji záznamy historie..." -#: ../src/history_manager.py:466 +#: ../src/history_manager.py:467 #, python-format msgid "%(who)s on %(time)s said: %(message)s\n" msgstr "%(who)s v %(time)s Å™ekl(a): %(message)s\n" -#: ../src/history_manager.py:466 +#: ../src/history_manager.py:467 msgid "who" msgstr "kdo" -#: ../src/history_manager.py:504 +#: ../src/history_manager.py:505 msgid "Do you really want to delete logs of the selected contact?" msgid_plural "Do you really want to delete logs of the selected contacts?" msgstr[0] "VážnÄ› chcete smazat vÅ¡echny záznamy historie vybraného kontaktu?" msgstr[1] "VážnÄ› chcete smazat vÅ¡echny záznamy historie vybraných kontaktů?" msgstr[2] "" -#: ../src/history_manager.py:508 ../src/history_manager.py:544 +#: ../src/history_manager.py:509 ../src/history_manager.py:545 msgid "This is an irreversible operation." msgstr "Tato operace je nevratná." -#: ../src/history_manager.py:541 +#: ../src/history_manager.py:542 msgid "Do you really want to delete the selected message?" msgid_plural "Do you really want to delete the selected messages?" msgstr[0] "VážnÄ› chcete smazat vybranou zprávu?" msgstr[1] "VážnÄ› chcete smazat vybrané zprávy?" msgstr[2] "" -#: ../src/history_window.py:111 ../src/history_window.py:113 +#: ../src/history_window.py:102 ../src/history_window.py:104 #, python-format msgid "Conversation History with %s" msgstr "Historie rozhovorů s %s" -#: ../src/history_window.py:265 +#: ../src/history_window.py:258 #, python-format msgid "%(nick)s is now %(status)s: %(status_msg)s" msgstr "%(nick)s je nyní %(status)s: %(status_msg)s" -#: ../src/history_window.py:269 +#: ../src/history_window.py:262 ../src/notify.py:113 #, python-format msgid "%(nick)s is now %(status)s" msgstr "%(nick)s je nyní %(status)s" -#: ../src/history_window.py:275 +#: ../src/history_window.py:268 #, python-format msgid "Status is now: %(status)s: %(status_msg)s" msgstr "Status je nyní %(status)s: %(status_msg)s" -#: ../src/history_window.py:278 +#: ../src/history_window.py:271 #, python-format msgid "Status is now: %(status)s" msgstr "Status je nyní %(status)s" -#: ../src/message_window.py:233 +#: ../src/message_window.py:244 msgid "Messages" msgstr "Zprávy" -#: ../src/message_window.py:234 +#: ../src/message_window.py:245 #, python-format msgid "%s - Gajim" msgstr "%s - Gajim" -#: ../src/roster_window.py:140 +#: ../src/notify.py:111 +#, fuzzy, python-format +msgid "%(nick)s Changed Status" +msgstr "%(nick)s je nyní %(status)s" + +#: ../src/notify.py:121 +#, python-format +msgid "%(nickname)s Signed In" +msgstr "%(nickname)s se pÅ™ihlásil" + +#: ../src/notify.py:129 +#, python-format +msgid "%(nickname)s Signed Out" +msgstr "%(nickname)s se odhlásil" + +#: ../src/notify.py:141 +#, python-format +msgid "New Single Message from %(nickname)s" +msgstr "Nová jednoduché zpráva od %(nickname)s" + +#: ../src/notify.py:150 +#, python-format +msgid "New Private Message from room %s" +msgstr "Nová soukromá zpráva z místnosti %s" + +#: ../src/notify.py:151 +#, python-format +msgid "%(nickname)s: %(message)s" +msgstr "%(nickname)s: %(message)s" + +#: ../src/notify.py:157 +#, python-format +msgid "New Message from %(nickname)s" +msgstr "Nová zpráva od %(nickname)s" + +#: ../src/roster_window.py:131 msgid "Merged accounts" msgstr "Spojené úÄty" -#: ../src/roster_window.py:263 ../src/common/helpers.py:42 +#: ../src/roster_window.py:288 ../src/common/helpers.py:39 msgid "Observers" msgstr "PÅ™ihlížející" -#: ../src/roster_window.py:516 +#: ../src/roster_window.py:544 #, python-format msgid "You are already in room %s" msgstr "Už jsi v místnosti %s" -#: ../src/roster_window.py:520 ../src/roster_window.py:2234 +#: ../src/roster_window.py:548 ../src/roster_window.py:2280 msgid "You cannot join a room while you are invisible" msgstr "Nemůžete vstoupit do diskuze, pokud jste neviditelný(á)" #. the 'manage gc bookmarks' item is showed #. below to avoid duplicate code #. add -#: ../src/roster_window.py:709 +#: ../src/roster_window.py:748 #, python-format msgid "to %s account" msgstr "do úÄtu %s" #. disco -#: ../src/roster_window.py:716 +#: ../src/roster_window.py:755 #, python-format msgid "using %s account" msgstr "pomocí úÄtu %s" -#. new message +#. new chat #. for chat_with #. for single message -#: ../src/roster_window.py:724 ../src/systray.py:194 ../src/systray.py:201 +#: ../src/roster_window.py:763 ../src/systray.py:193 ../src/systray.py:198 #, python-format msgid "using account %s" msgstr "pomocí úÄtu %s" #. profile, avatar -#: ../src/roster_window.py:733 +#: ../src/roster_window.py:772 +#, python-format msgid "of account %s" msgstr "úÄtu %s" -#: ../src/roster_window.py:792 +#: ../src/roster_window.py:831 msgid "Manage Bookmarks..." msgstr "Spravovat záložky..." -#: ../src/roster_window.py:816 +#: ../src/roster_window.py:855 #, python-format msgid "for account %s" msgstr "pro úÄet %s" #. History manager -#: ../src/roster_window.py:837 +#: ../src/roster_window.py:876 msgid "History Manager" msgstr "Správce historie" -#: ../src/roster_window.py:846 +#: ../src/roster_window.py:885 msgid "_Join New Room" msgstr "_Vstoupit do nové místnosti" -#: ../src/roster_window.py:1132 +#: ../src/roster_window.py:1159 #, python-format msgid "Transport \"%s\" will be removed" msgstr "Transport \"%s\" bude smazán" -#: ../src/roster_window.py:1132 +#: ../src/roster_window.py:1159 msgid "" "You will no longer be able to send and receive messages to contacts from " "this transport." @@ -3778,67 +4346,68 @@ msgstr "" "Už více nebudete moci posílat i pÅ™ijímat zprávy od kontaktů z tohoto " "transportu." -#: ../src/roster_window.py:1174 +#: ../src/roster_window.py:1201 msgid "Assign OpenPGP Key" msgstr "PÅ™iÅ™adit OpenPGP klíÄ" -#: ../src/roster_window.py:1175 +#: ../src/roster_window.py:1202 msgid "Select a key to apply to the contact" msgstr "Vybrat klÃ­Ä k použítí s kontaktem" -#: ../src/roster_window.py:1332 +#: ../src/roster_window.py:1358 msgid "I would like to add you to my roster" msgstr "Rád bych si Vás pÅ™idal(a) do svého seznamu" -#: ../src/roster_window.py:1384 +#: ../src/roster_window.py:1410 msgid "Re_name" msgstr "PÅ™ejme_novat" -#: ../src/roster_window.py:1415 +#: ../src/roster_window.py:1441 msgid "_Log on" msgstr "PÅ™ih_lásit" -#: ../src/roster_window.py:1424 +#: ../src/roster_window.py:1450 msgid "Log _off" msgstr "_Odhlásit" -#: ../src/roster_window.py:1519 +#: ../src/roster_window.py:1545 msgid "_Change Status Message" msgstr "Z_mÄ›nit popis stavu" -#: ../src/roster_window.py:1589 +#: ../src/roster_window.py:1621 msgid "Authorization has been sent" msgstr "Autorizace byla odeslána" -#: ../src/roster_window.py:1590 +#: ../src/roster_window.py:1622 #, python-format msgid "Now \"%s\" will know your status." msgstr "Nyní bude \"%s\" znát váš status." -#: ../src/roster_window.py:1614 +#: ../src/roster_window.py:1646 msgid "Subscription request has been sent" msgstr "Žádost o autorizaci byla odeslána" -#: ../src/roster_window.py:1615 +#: ../src/roster_window.py:1647 #, python-format msgid "If \"%s\" accepts this request you will know his or her status." -msgstr "Pokud \"%s\" povolí VaÅ¡i žádost o autorizaci, budete vidÄ›t jeho status." +msgstr "" +"Pokud \"%s\" povolí VaÅ¡i žádost o autorizaci, budete vidÄ›t jeho status." -#: ../src/roster_window.py:1626 +#: ../src/roster_window.py:1658 msgid "Authorization has been removed" msgstr "Autorizace byla zruÅ¡ena" -#: ../src/roster_window.py:1627 +#: ../src/roster_window.py:1659 #, python-format msgid "Now \"%s\" will always see you as offline." msgstr "Nyní Vás \"%s\" uvidí vždy jako odpojeného." -#: ../src/roster_window.py:1796 +#: ../src/roster_window.py:1822 #, python-format msgid "Contact \"%s\" will be removed from your roster" msgstr "Kontakt \"%s\" bude smazán z VaÅ¡eho rosteru" -#: ../src/roster_window.py:1800 +#: ../src/roster_window.py:1826 msgid "" "By removing this contact you also remove authorization resulting in him or " "her always seeing you as offline." @@ -3846,7 +4415,7 @@ msgstr "" "Smazáním kontaktu také zrušíte autorizaci. Kontakt Vás tak vždy uvidí jako " "odpojeného." -#: ../src/roster_window.py:1804 +#: ../src/roster_window.py:1830 msgid "" "By removing this contact you also by default remove authorization resulting " "in him or her always seeing you as offline." @@ -3854,36 +4423,36 @@ msgstr "" "Smazáním kontaktu také zrušíte autorizaci. Kontakt Vás tak vždy uvidí jako " "odpojeného." -#: ../src/roster_window.py:1805 +#: ../src/roster_window.py:1831 msgid "I want this contact to know my status after removal" msgstr "Chci aby tento kontakt vÄ›dÄ›l o mém stavu i po odstranÄ›ní" -#: ../src/roster_window.py:1873 +#: ../src/roster_window.py:1899 msgid "Passphrase Required" msgstr "Heslo Vyžadováno" -#: ../src/roster_window.py:1874 +#: ../src/roster_window.py:1900 #, python-format msgid "Enter GPG key passphrase for account %s." msgstr "Zadej heslo GPG klíÄe pro úÄet %s." -#: ../src/roster_window.py:1879 +#: ../src/roster_window.py:1905 msgid "Save passphrase" msgstr "Uložit heslo" -#: ../src/roster_window.py:1887 +#: ../src/roster_window.py:1913 msgid "Wrong Passphrase" msgstr "Nesprávné heslo" -#: ../src/roster_window.py:1888 +#: ../src/roster_window.py:1914 msgid "Please retype your GPG passphrase or press Cancel." msgstr "Prosím zopakujte VaÅ¡e heslo pro GPG klíÄ, nebo stisknÄ›te ZruÅ¡it." -#: ../src/roster_window.py:1936 ../src/roster_window.py:1993 +#: ../src/roster_window.py:1963 ../src/roster_window.py:2020 msgid "You are participating in one or more group chats" msgstr "ÚÄinkujete v jedné nebo více diskuzích" -#: ../src/roster_window.py:1937 ../src/roster_window.py:1994 +#: ../src/roster_window.py:1964 ../src/roster_window.py:2021 msgid "" "Changing your status to invisible will result in disconnection from those " "group chats. Are you sure you want to go invisible?" @@ -3891,19 +4460,20 @@ msgstr "" "ZmÄ›na vaÅ¡eho stavu na neviditelný způsobí odpojení od tÄ›chto diskuzí. Jste " "si jistý(á), že se chcete stát neviditelným(ou)?" -#: ../src/roster_window.py:1953 +#: ../src/roster_window.py:1980 msgid "No account available" msgstr "Žádný úÄet není dostupný" -#: ../src/roster_window.py:1954 +#: ../src/roster_window.py:1981 msgid "You must create an account before you can chat with other contacts." -msgstr "Musíte vytvoÅ™it úÄet pÅ™ed tím, než budete moci hovoÅ™it s jinými uživateli." +msgstr "" +"Musíte vytvoÅ™it úÄet pÅ™ed tím, než budete moci hovoÅ™it s jinými uživateli." -#: ../src/roster_window.py:2399 ../src/roster_window.py:2405 +#: ../src/roster_window.py:2452 ../src/roster_window.py:2458 msgid "You have unread messages" msgstr "Máte nepÅ™eÄtené zprávy" -#: ../src/roster_window.py:2400 ../src/roster_window.py:2406 +#: ../src/roster_window.py:2453 ../src/roster_window.py:2459 msgid "" "Messages will only be available for reading them later if you have history " "enabled." @@ -3911,31 +4481,30 @@ msgstr "" "Zprávy bude možné Äíst pozdÄ›ji pouze v případÄ›, budete-li mít povolenou " "historii." -#: ../src/roster_window.py:3147 +#: ../src/roster_window.py:3231 #, python-format msgid "Drop %s in group %s" msgstr "Smazat %s ve skupinÄ› %s" -#: ../src/roster_window.py:3154 +#: ../src/roster_window.py:3238 #, python-format msgid "Make %s and %s metacontacts" msgstr "UÄiň %s a %s metakontakty" # FIXME: nejak divne, asi spatne prelozene -#: ../src/roster_window.py:3320 +#: ../src/roster_window.py:3408 msgid "Change Status Message..." msgstr "ZmÄ›nit popis stavu..." -#: ../src/systray.py:155 +#: ../src/systray.py:154 msgid "_Change Status Message..." msgstr "_ZmÄ›nit popis stavu..." -#: ../src/systray.py:236 +#: ../src/systray.py:231 msgid "Hide this menu" msgstr "Skryje toto menu" -#: ../src/systraywin32.py:266 ../src/systraywin32.py:285 -#: ../src/tooltips.py:315 +#: ../src/systraywin32.py:261 ../src/systraywin32.py:280 #, python-format msgid "Gajim - %d unread message" msgid_plural "Gajim - %d unread messages" @@ -3943,110 +4512,120 @@ msgstr[0] "Gajim - %d nepÅ™eÄtenou zprávu" msgstr[1] "Gajim - %d nepÅ™eÄtené zprávy" msgstr[2] "Gajim - %d nepÅ™eÄtených zpráv" -#: ../src/tooltips.py:321 -#, python-format -msgid "Gajim - %d unread single message" -msgid_plural "Gajim - %d unread single messages" +#: ../src/tooltips.py:326 +#, fuzzy, python-format +msgid " %d unread message" +msgid_plural " %d unread messages" +msgstr[0] "Gajim - %d nepÅ™eÄtenou zprávu" +msgstr[1] "Gajim - %d nepÅ™eÄtené zprávy" +msgstr[2] "Gajim - %d nepÅ™eÄtených zpráv" + +#: ../src/tooltips.py:332 +#, fuzzy, python-format +msgid " %d unread single message" +msgid_plural " %d unread single messages" msgstr[0] "Gajim - %d nepÅ™eÄtenou prosté zprávu" msgstr[1] "Gajim - %d nepÅ™eÄtené prosté zprávy" msgstr[2] "Gajim - %d nepÅ™eÄtených zpráv" -#: ../src/tooltips.py:327 -#, python-format -msgid "Gajim - %d unread group chat message" -msgid_plural "Gajim - %d unread group chat messages" +#: ../src/tooltips.py:338 +#, fuzzy, python-format +msgid " %d unread group chat message" +msgid_plural " %d unread group chat messages" msgstr[0] "Gajim - %d nepÅ™eÄtenou zprávu z diskuze" msgstr[1] "Gajim - %d nepÅ™eÄtené zprávy z diskuze" msgstr[2] "Gajim - %d nepÅ™eÄtených zpráv" -#: ../src/tooltips.py:333 -#, python-format -msgid "Gajim - %d unread private message" -msgid_plural "Gajim - %d unread private messages" +#: ../src/tooltips.py:344 +#, fuzzy, python-format +msgid " %d unread private message" +msgid_plural " %d unread private messages" msgstr[0] "Gajim - %d nepÅ™eÄtenou soukromou zprávu" msgstr[1] "Gajim - %d nepÅ™eÄtené soukromé zprávy" msgstr[2] "Gajim - %d nepÅ™eÄtených zpráv" -#: ../src/tooltips.py:348 ../src/tooltips.py:350 +#: ../src/tooltips.py:359 ../src/tooltips.py:361 #, python-format msgid "Gajim - %s" msgstr "Gajim - %s" -#: ../src/tooltips.py:383 +#: ../src/tooltips.py:395 msgid "Role: " msgstr "Role:" -#: ../src/tooltips.py:384 +#: ../src/tooltips.py:396 msgid "Affiliation: " msgstr "PÅ™idružení:" -#: ../src/tooltips.py:386 ../src/tooltips.py:518 +#: ../src/tooltips.py:398 ../src/tooltips.py:537 msgid "Resource: " msgstr "Zdroj: " -#: ../src/tooltips.py:394 ../src/tooltips.py:521 ../src/tooltips.py:543 -#: ../src/tooltips.py:654 +#: ../src/tooltips.py:407 ../src/tooltips.py:540 ../src/tooltips.py:565 +#: ../src/tooltips.py:676 msgid "Status: " msgstr "Stav: " -#: ../src/tooltips.py:501 +#: ../src/tooltips.py:514 msgid "Subscription: " msgstr "Autorizace: " -#: ../src/tooltips.py:510 +#: ../src/tooltips.py:523 msgid "OpenPGP: " msgstr "OpenPGP: " -#: ../src/tooltips.py:548 +#: ../src/tooltips.py:570 +#, python-format msgid "Last status on %s" msgstr "Poslední stav v %s" -#: ../src/tooltips.py:550 +#: ../src/tooltips.py:572 +#, python-format msgid "Since %s" msgstr "Od %s" -#: ../src/tooltips.py:610 +#: ../src/tooltips.py:632 msgid "Download" msgstr "Download" -#: ../src/tooltips.py:616 +#: ../src/tooltips.py:638 msgid "Upload" msgstr "Upload" -#: ../src/tooltips.py:623 +#: ../src/tooltips.py:645 msgid "Type: " msgstr "Typ: " -#: ../src/tooltips.py:629 +#: ../src/tooltips.py:651 msgid "Transferred: " msgstr "PÅ™eneseno: " -#: ../src/tooltips.py:632 ../src/tooltips.py:653 +#: ../src/tooltips.py:654 ../src/tooltips.py:675 msgid "Not started" msgstr "NespuÅ¡tÄ›no" -#: ../src/tooltips.py:636 +#: ../src/tooltips.py:658 msgid "Stopped" msgstr "Zastaveno" -#: ../src/tooltips.py:638 ../src/tooltips.py:641 +#: ../src/tooltips.py:660 ../src/tooltips.py:663 msgid "Completed" msgstr "DokonÄeno" #. stalled is not paused. it is like 'frozen' it stopped alone -#: ../src/tooltips.py:649 +#: ../src/tooltips.py:671 msgid "Stalled" msgstr "Stagnuje" -#: ../src/tooltips.py:651 +#: ../src/tooltips.py:673 msgid "Transferring" msgstr "PÅ™enáším" -#: ../src/tooltips.py:683 +#: ../src/tooltips.py:705 msgid "This service has not yet responded with detailed information" msgstr "Tato služba dosud neodpovÄ›dÄ›la s detaily" -#: ../src/tooltips.py:686 +#: ../src/tooltips.py:708 msgid "" "This service could not respond with detailed information.\n" "It is most likely legacy or broken" @@ -4054,104 +4633,106 @@ msgstr "" "Tato služba nemůže odpovÄ›dÄ›t s více podrobnostmi.\n" "PravdÄ›podobnÄ› je stará nebo rozbitá" -#. unknown format -#: ../src/vcard.py:174 +#. keep identation +#: ../src/vcard.py:188 msgid "Could not load image" msgstr "NezdaÅ™ilo se naÄtení obrázku" -#: ../src/vcard.py:250 +#: ../src/vcard.py:289 msgid "?Client:Unknown" msgstr "?Client:Neznámý" -#: ../src/vcard.py:252 +#: ../src/vcard.py:291 msgid "?OS:Unknown" msgstr "?OS:Neznámý" -#: ../src/vcard.py:269 +#: ../src/vcard.py:308 +#, python-format msgid "since %s" msgstr "od %s" -#: ../src/vcard.py:293 +#: ../src/vcard.py:332 msgid "" "This contact is interested in your presence information, but you are not " "interested in his/her presence" msgstr "Tento kontakt zajímá Váš stav, ale Vy se nezajímate o jeho stav" -#: ../src/vcard.py:295 +#: ../src/vcard.py:334 msgid "" "You are interested in the contact's presence information, but he/she is not " "interested in yours" msgstr "Vy se zajímáte o stav kontaktu, ale on se nezajímá o Váš stav" -#: ../src/vcard.py:297 +#: ../src/vcard.py:336 msgid "You and the contact are interested in each other's presence information" msgstr "Vy i kontakt se zajímáte o stav toho druhého" #. None -#: ../src/vcard.py:299 +#: ../src/vcard.py:338 msgid "" "You are not interested in the contact's presence, and neither he/she is " "interested in yours" msgstr "Vy ani kontakt se nezajímáte o stav toho druhého" -#: ../src/vcard.py:308 +#: ../src/vcard.py:347 msgid "You are waiting contact's answer about your subscription request" msgstr "ÄŒekáte na odpovÄ›Ä kontaktu na vaÅ¡i žádost o autorizaci" -#: ../src/vcard.py:320 ../src/vcard.py:343 +#: ../src/vcard.py:359 ../src/vcard.py:382 msgid " resource with priority " msgstr "zdroj s prioritou " -#: ../src/vcard.py:422 +#: ../src/vcard.py:458 msgid "Without a connection you can not publish your contact information." msgstr "Bez opÄ›tovného pÅ™ipojení nemůžete zveÅ™ejnit VaÅ¡e osobní údaje." -#: ../src/vcard.py:451 +#: ../src/vcard.py:491 msgid "Without a connection, you can not get your contact information." msgstr "Bez opÄ›tovného pÅ™ipojení nemůžete získat VaÅ¡e osobní údaje." -#: ../src/vcard.py:455 +#: ../src/vcard.py:495 msgid "Personal details" msgstr "Osobní údaje" -#: ../src/common/check_paths.py:61 +#: ../src/common/check_paths.py:35 msgid "creating logs database" msgstr "vytvářím databázi historie" -#: ../src/common/check_paths.py:106 ../src/common/check_paths.py:117 -#: ../src/common/check_paths.py:124 +#: ../src/common/check_paths.py:82 ../src/common/check_paths.py:93 +#: ../src/common/check_paths.py:100 #, python-format msgid "%s is file but it should be a directory" msgstr "%s je soubor, ale mÄ›l by být adresář" -#: ../src/common/check_paths.py:107 ../src/common/check_paths.py:118 -#: ../src/common/check_paths.py:125 ../src/common/check_paths.py:132 +#: ../src/common/check_paths.py:83 ../src/common/check_paths.py:94 +#: ../src/common/check_paths.py:101 ../src/common/check_paths.py:109 msgid "Gajim will now exit" msgstr "Gajim se nyní ukonÄí" -#: ../src/common/check_paths.py:131 +#: ../src/common/check_paths.py:108 #, python-format msgid "%s is directory but should be file" msgstr "%s je adresář, ale mÄ›l by být soubor" -#: ../src/common/check_paths.py:149 +#: ../src/common/check_paths.py:124 #, python-format msgid "creating %s directory" msgstr "vytvářím adresář %s " -#: ../src/common/exceptions.py:35 +#: ../src/common/exceptions.py:32 msgid "pysqlite2 (aka python-pysqlite2) dependency is missing. Exiting..." -msgstr "Závislost na pysqlite2 (neboli python-pysqlite2) není splnÄ›na. KonÄím..." +msgstr "" +"Závislost na pysqlite2 (neboli python-pysqlite2) není splnÄ›na. KonÄím..." -#: ../src/common/exceptions.py:43 +#: ../src/common/exceptions.py:40 msgid "Service not available: Gajim is not running, or remote_control is False" msgstr "Služba není dostupná. Gajim neběží, nebo remote_control je vypnutý" -#: ../src/common/exceptions.py:51 +#: ../src/common/exceptions.py:48 msgid "D-Bus is not present on this machine or python module is missing" msgstr "D-Bus není přítomna na tohto stroji nebo modul pythonu chybí" -#: ../src/common/exceptions.py:59 +#: ../src/common/exceptions.py:56 msgid "" "Session bus is not available.\n" "Try reading http://trac.gajim.org/wiki/GajimDBus" @@ -4159,33 +4740,64 @@ msgstr "" "Session bus není k dispozici.\n" "Zkuste pÅ™eÄíst http://trac.gajim.org/wiki/GajimDBus" -#: ../src/common/config.py:53 +#: ../src/common/config.py:51 msgid "Use DBus and Notification-Daemon to show notifications" msgstr "Používej DBus a NotifikaÄního démona k zobrazování notifikací" -#: ../src/common/config.py:57 +#: ../src/common/config.py:55 msgid "Time in minutes, after which your status changes to away." msgstr "ÄŒas v minutách, po kterém se Váš stav pÅ™epne na pryÄ." -#: ../src/common/config.py:58 +#: ../src/common/config.py:56 msgid "Away as a result of being idle" msgstr "PryÄ jako výsledek neÄinnosti" -#: ../src/common/config.py:60 +#: ../src/common/config.py:58 msgid "Time in minutes, after which your status changes to not available." msgstr "ÄŒas v minutách, po kterém se Váš stav pÅ™epne na nedostupný." -#: ../src/common/config.py:61 +#: ../src/common/config.py:59 msgid "Not available as a result of being idle" msgstr "Nedostupný jako výsledek neÄinnosti" -#: ../src/common/config.py:88 +#: ../src/common/config.py:77 +msgid "List (space separated) of rows (accounts and groups) that are collapsed" +msgstr "" + +#: ../src/common/config.py:83 +msgid "" +"'always' - print time for every message.\n" +"'sometimes' - print time every print_ichat_every_foo_minutes minute.\n" +"'never' - never print time." +msgstr "" + +#: ../src/common/config.py:84 +msgid "" +"Value of fuzziness from 1 to 4 or 0 to disable fuzzyclock. 1 is the most " +"precise clock, 4 the less precise one." +msgstr "" + +#: ../src/common/config.py:87 msgid "Treat * / _ pairs as possible formatting characters." msgstr "Ber * / _ páry jako možné formátovací znaky." -#: ../src/common/config.py:89 -msgid "If True, do not remove */_ . So *abc* will be bold but with * * not removed." -msgstr "Pokud zapnuto, nemažte */_ . Potom *abc* bude tuÄnÄ› ale s * * neodstranÄ›nými." +#: ../src/common/config.py:88 +msgid "" +"If True, do not remove */_ . So *abc* will be bold but with * * not removed." +msgstr "" +"Pokud zapnuto, nemažte */_ . Potom *abc* bude tuÄnÄ› ale s * * neodstranÄ›nými." + +#: ../src/common/config.py:98 +msgid "" +"Character to add after nickname when using nick completion (tab) in group " +"chat" +msgstr "" + +#: ../src/common/config.py:99 +msgid "" +"Character to propose to add after desired nickname when desired nickname is " +"used by someone else in group chat" +msgstr "" #: ../src/common/config.py:131 msgid "Add * and [n] in roster title?" @@ -4228,6 +4840,12 @@ msgstr "" msgid "If checked, Gajim can be controlled remotely using gajim-remote." msgstr "Pokud zaÅ¡krtnuta, Gajim může být ovládán vzdálenÄ› pomocí gajim-remote." +#: ../src/common/config.py:145 +msgid "" +"When not printing time for every message (print_time==sometimes), print it " +"every x minutes" +msgstr "" + #: ../src/common/config.py:146 msgid "Ask before closing a group chat tab/window." msgstr "Ptát se pÅ™ed zavÅ™ením oken/záložek diskuzí." @@ -4236,13 +4854,17 @@ msgstr "Ptát se pÅ™ed zavÅ™ením oken/záložek diskuzí." msgid "" "Always ask before closing group chat tab/window in this space separated list " "of room jids." -msgstr "Ptát se pÅ™ed zavÅ™ením oken/záložek diskuzí uvedených v tomto mezerami oddÄ›lením seznamu místností." +msgstr "" +"Ptát se pÅ™ed zavÅ™ením oken/záložek diskuzí uvedených v tomto mezerami " +"oddÄ›lením seznamu místností." #: ../src/common/config.py:148 msgid "" "Never ask before closing group chat tab/window in this space separated list " "of room jids." -msgstr "Nikdy se neptát pÅ™ed zavÅ™ením oken/záložek diskuzí uvedených v tomto mezerami oddÄ›lením seznamu místností." +msgstr "" +"Nikdy se neptát pÅ™ed zavÅ™ením oken/záložek diskuzí uvedených v tomto " +"mezerami oddÄ›lením seznamu místností." #: ../src/common/config.py:151 msgid "" @@ -4261,7 +4883,8 @@ msgid "Show tab when only one conversation?" msgstr "Zobrazit záložku pÅ™i jediném rozhovoru?" #: ../src/common/config.py:162 -msgid "Show tab border if one conversation?" +#, fuzzy +msgid "Show tabbed notebook border in chat windows?" msgstr "Zobrazit okraj záložky pÅ™i jediném rozhovoru?" #: ../src/common/config.py:163 @@ -4312,31 +4935,49 @@ msgstr "" "pokud zapnuto, Gajim se zeptá na avatara každého kontaktu který nemÄ›l " "naposledy avatara nebo kterého uložený je příliÅ¡ starý." -#. FIXME: remove you and make it Gajim will not; and/or his or *her* status messages -#: ../src/common/config.py:184 +#: ../src/common/config.py:183 +#, fuzzy msgid "" -"If False, you will no longer see status line in chats when a contact changes " -"his or her status and/or his status message." +"If False, Gajim will no longer print status line in chats when a contact " +"changes his or her status and/or his or her status message." msgstr "" "Pokud vypnuto, nebudete vidÄ›t řádku se stavem v rozhovorech, když kontakt " "zmÄ›ní svůj stav." +#: ../src/common/config.py:184 +msgid "" +"can be \"none\", \"all\" or \"in_and_out\". If \"none\", Gajim will no " +"longer print status line in groupchats when a member changes his or her " +"status and/or his or her status message. If \"all\" Gajim will print all " +"status messages. If \"in_and_out\", gajim will only print FOO enters/leaves " +"room" +msgstr "" + +#: ../src/common/config.py:187 +msgid "Don't show avatar for the transport itself." +msgstr "" + #: ../src/common/config.py:189 msgid "" "If True and installed GTK+ and PyGTK versions are at least 2.8, make the " "window flash (the default behaviour in most Window Managers) when holding " "pending events." -msgstr "Pokud je True a instalované GTK+ a PyGTK verze jsou alespoň 2.8, blikej oknem (výchozí chování ve vÄ›tÅ¡inÄ› Window Managerů) pokud Äekají nové události." +msgstr "" +"Pokud je True a instalované GTK+ a PyGTK verze jsou alespoň 2.8, blikej " +"oknem (výchozí chování ve vÄ›tÅ¡inÄ› Window Managerů) pokud Äekají nové " +"události." #: ../src/common/config.py:191 msgid "" "Jabberd1.4 does not like sha info when one join a password protected room. " "Turn this option to False to stop sending sha info in groupchat presences" msgstr "" -"Jabberd1.4 nemá rád sha informaci, pokud nÄ›kdo vstupuje do místnosti chránÄ›né heslem. " -"ZaÅ¡krtnÄ›te tuto volbu na False, aby se sha informace neposílala v presenci u diskuzí" +"Jabberd1.4 nemá rád sha informaci, pokud nÄ›kdo vstupuje do místnosti " +"chránÄ›né heslem. ZaÅ¡krtnÄ›te tuto volbu na False, aby se sha informace " +"neposílala v presenci u diskuzí" -#: ../src/common/config.py:193 +#. always, never, peracct, pertype should not be translated +#: ../src/common/config.py:194 msgid "" "Controls the window where new messages are placed.\n" "'always' - All messages are sent to a single window.\n" @@ -4350,100 +4991,116 @@ msgstr "" "'vždy' - VÅ¡echny zprávy jsou odeslány do jediného okna.\n" "'nikdy' - VÅ¡echny zprávy dostanou svoje vlastní okno.\n" "'peracct' - Zprávy pro každý úÄet jsou doruÄeny do zvláštních oken.\n" -"'pertype' - Každý typ zprávy (napÅ™. rohovor vs diskuze) jsou odeslány do zvláštního okna. VÄ›zte, že zmÄ›na této volby vyžaduje restartování Gajimu, aby se projevila" +"'pertype' - Každý typ zprávy (napÅ™. rohovor vs diskuze) jsou odeslány do " +"zvláštního okna. VÄ›zte, že zmÄ›na této volby vyžaduje restartování Gajimu, " +"aby se projevila" -#: ../src/common/config.py:194 +#: ../src/common/config.py:195 msgid "If False, you will no longer see the avatar in the chat window" msgstr "Pokud je False, nebudete nadále vidÄ›t avatary v oknÄ› rozhovoru" -#: ../src/common/config.py:195 +#: ../src/common/config.py:196 msgid "If True, pressing the escape key closes a tab/window" msgstr "Pokud je True, stiskem escape zavÅ™ete záložku nebo okno" -#: ../src/common/config.py:196 +#: ../src/common/config.py:197 msgid "Hides the buttons in group chat window" msgstr "Skryje tlaÄítka v oknÄ› diskuze" -#: ../src/common/config.py:197 +#: ../src/common/config.py:198 msgid "Hides the buttons in two persons chat window" msgstr "Skryje tlaÄítka v oknÄ› rozhovoru dvou lidí" -#: ../src/common/config.py:198 +#: ../src/common/config.py:199 msgid "Hides the banner in a group chat window" msgstr "Skryje nadpis v oknÄ› diskuze" -#: ../src/common/config.py:199 +#: ../src/common/config.py:200 msgid "Hides the banner in two persons chat window" msgstr "Skryje nadpis v oknÄ› rozhovoru dvou lidí" -#: ../src/common/config.py:200 +#: ../src/common/config.py:201 msgid "Hides the room occupants list in groupchat window" msgstr "Skryje seznam lidí místnosti v oknÄ› diskuze" +#: ../src/common/config.py:202 +msgid "Merge consecutive nickname in chat window" +msgstr "" + +#: ../src/common/config.py:203 +msgid "Indentation when using merge consecutive nickame" +msgstr "" + +#: ../src/common/config.py:204 +msgid "List of colors that will be used to color nicknames in groupchats" +msgstr "" + #. yes, no, ask -#: ../src/common/config.py:233 +#: ../src/common/config.py:237 msgid "Jabberd2 workaround" msgstr "Jabberd2 workaround" -#: ../src/common/config.py:237 +#: ../src/common/config.py:241 msgid "" "If checked, Gajim will use your IP and proxies defined in " "file_transfer_proxies option for file transfer." -msgstr "Pokud je zaÅ¡krtnuto, Gajim použije Vaší IP a proxy servery definované ve volbÄ› pro pÅ™enos souborů file_transfer_proxies." +msgstr "" +"Pokud je zaÅ¡krtnuto, Gajim použije Vaší IP a proxy servery definované ve " +"volbÄ› pro pÅ™enos souborů file_transfer_proxies." -#: ../src/common/config.py:290 +#: ../src/common/config.py:297 msgid "Sleeping" msgstr "Spím" -#: ../src/common/config.py:291 +#: ../src/common/config.py:298 msgid "Back soon" msgstr "Hned jsem zpÄ›t" -#: ../src/common/config.py:291 +#: ../src/common/config.py:298 msgid "Back in some minutes." msgstr "Jsem zpátky za pár minut." -#: ../src/common/config.py:292 +#: ../src/common/config.py:299 msgid "Eating" msgstr "Jím" -#: ../src/common/config.py:292 +#: ../src/common/config.py:299 msgid "I'm eating, so leave me a message." msgstr "PrávÄ› jím, prosím zanechte mi zprávu." -#: ../src/common/config.py:293 +#: ../src/common/config.py:300 msgid "Movie" msgstr "Film" -#: ../src/common/config.py:293 +#: ../src/common/config.py:300 msgid "I'm watching a movie." msgstr "Dívám se na film." -#: ../src/common/config.py:294 +#: ../src/common/config.py:301 msgid "Working" msgstr "Pracuji" -#: ../src/common/config.py:294 +#: ../src/common/config.py:301 msgid "I'm working." msgstr "PrávÄ› pracuji." -#: ../src/common/config.py:295 +#: ../src/common/config.py:302 msgid "Phone" msgstr "Telefon" -#: ../src/common/config.py:295 +#: ../src/common/config.py:302 msgid "I'm on the phone." msgstr "Zrovna telefonuji." -#: ../src/common/config.py:296 +#: ../src/common/config.py:303 msgid "Out" msgstr "Venku" -#: ../src/common/config.py:296 +#: ../src/common/config.py:303 msgid "I'm out enjoying life" msgstr "Užívám si života venku" -#: ../src/common/config.py:305 +#: ../src/common/config.py:312 msgid "" "Sound to play when a MUC message contains one of the words in " "muc_highlight_words, or when a MUC message contains your nickname." @@ -4451,7 +5108,7 @@ msgstr "" "Zvuk, který bude pÅ™ehrán, pokud zpráva diskuze obsahuje jedno ze slov v " "muc_highlight_words, nebo když obsahuje VaÅ¡i pÅ™ezdívku." -#: ../src/common/config.py:306 +#: ../src/common/config.py:313 msgid "" "Sound to play when any MUC message arrives. (This setting is taken into " "account only if notify_on_all_muc_messages is True)" @@ -4459,96 +5116,97 @@ msgstr "" "Zvuk, který bude pÅ™ehrán pÅ™i každé příchozí zprávÄ› diskuze. (Tato volba se " "bere v úvahu pouze tehdy, je-li zapnuto notify_on_all_muc_messages)" -#: ../src/common/config.py:314 ../src/common/optparser.py:181 +#: ../src/common/config.py:321 ../src/common/optparser.py:185 msgid "green" msgstr "zelený" -#: ../src/common/config.py:318 ../src/common/optparser.py:167 +#: ../src/common/config.py:325 ../src/common/optparser.py:171 msgid "grocery" msgstr "potraviny" -#: ../src/common/config.py:322 +#: ../src/common/config.py:329 msgid "human" msgstr "ÄlovÄ›k" -#: ../src/common/config.py:326 +#: ../src/common/config.py:333 msgid "marine" msgstr "mariňák" -#: ../src/common/connection.py:152 +#: ../src/common/connection.py:172 #, python-format msgid "Connection with account \"%s\" has been lost" msgstr "Spojení s úÄtem \"%s\" bylo ztraceno" -#: ../src/common/connection.py:153 +#: ../src/common/connection.py:173 msgid "To continue sending and receiving messages, you will need to reconnect." -msgstr "Pro pokraÄování v pÅ™ijímání a odesílání zpráv se musíte znovu pÅ™ipojit." +msgstr "" +"Pro pokraÄování v pÅ™ijímání a odesílání zpráv se musíte znovu pÅ™ipojit." -#: ../src/common/connection.py:169 ../src/common/connection.py:195 +#: ../src/common/connection.py:185 ../src/common/connection.py:211 #, python-format msgid "Transport %s answered wrongly to register request." msgstr "Transport %s odpovÄ›dÄ›l chybnÄ› na požadavek registrace." #. wrong answer -#: ../src/common/connection.py:194 +#: ../src/common/connection.py:210 msgid "Invalid answer" msgstr "Neplatná odpovÄ›Ä" -#: ../src/common/connection.py:348 ../src/common/connection.py:384 -#: ../src/common/connection.py:754 +#: ../src/common/connection.py:397 ../src/common/connection.py:433 +#: ../src/common/connection.py:857 #, python-format msgid "Could not connect to \"%s\"" msgstr "Nemůžu se pÅ™ipojit k \"%s\"" -#: ../src/common/connection.py:362 +#: ../src/common/connection.py:411 #, python-format msgid "Connected to server %s:%s with %s" msgstr "PÅ™ipojen k server %s: %s s %s" -#: ../src/common/connection.py:385 +#: ../src/common/connection.py:434 msgid "Check your connection or try again later" msgstr "Ověřte pÅ™ipojení nebo zkuste pozdÄ›ji" -#: ../src/common/connection.py:410 +#: ../src/common/connection.py:459 #, python-format msgid "Authentication failed with \"%s\"" msgstr "Autentizace selhala s \"%s\"" -#: ../src/common/connection.py:411 +#: ../src/common/connection.py:460 msgid "Please check your login and password for correctness." msgstr "Prosím zkontrolujte správnost jména a hesla." #. We didn't set a passphrase -#: ../src/common/connection.py:487 +#: ../src/common/connection.py:573 msgid "OpenPGP passphrase was not given" msgstr "OpenPGP heslo nebylo zadáno" #. %s is the account name here -#: ../src/common/connection.py:489 +#: ../src/common/connection.py:575 #, python-format msgid "You will be connected to %s without OpenPGP." msgstr "Budete pÅ™ipojen(a) k %s bez OpenPGP." #. do not show I'm invisible! -#: ../src/common/connection.py:526 +#: ../src/common/connection.py:612 msgid "invisible" msgstr "neviditelný" -#: ../src/common/connection.py:527 +#: ../src/common/connection.py:613 msgid "offline" msgstr "odpojen" -#: ../src/common/connection.py:528 +#: ../src/common/connection.py:614 #, python-format msgid "I'm %s" msgstr "Jsem %s" #. we're not english -#: ../src/common/connection.py:611 +#: ../src/common/connection.py:699 msgid "[This message is encrypted]" msgstr "[Tato zpráva je zaÅ¡ifrovaná]" -#: ../src/common/connection.py:649 +#: ../src/common/connection.py:742 #, python-format msgid "" "Subject: %s\n" @@ -4557,220 +5215,307 @@ msgstr "" "PÅ™edmÄ›t: %s\n" "%s" -#: ../src/common/connection.py:699 +#: ../src/common/connection.py:795 ../src/common/connection_handlers.py:1511 msgid "I would like to add you to my roster." msgstr "Rád(a) bych si tÄ› pÅ™idal(a) do seznamu." -#: ../src/common/helpers.py:103 +#: ../src/common/connection_handlers.py:49 +msgid "Unable to load idle module" +msgstr "" + +#: ../src/common/connection_handlers.py:581 +#, python-format +msgid "Registration information for transport %s has not arrived in time" +msgstr "" + +#. password required to join +#. we are banned +#. room does not exist +#: ../src/common/connection_handlers.py:1450 +#: ../src/common/connection_handlers.py:1453 +#: ../src/common/connection_handlers.py:1456 +#: ../src/common/connection_handlers.py:1459 +#: ../src/common/connection_handlers.py:1462 +#: ../src/common/connection_handlers.py:1465 +#: ../src/common/connection_handlers.py:1473 +msgid "Unable to join room" +msgstr "" + +#: ../src/common/connection_handlers.py:1451 +msgid "A password is required to join this room." +msgstr "" + +#: ../src/common/connection_handlers.py:1454 +#, fuzzy +msgid "You are banned from this room." +msgstr "Už jsi v místnosti %s" + +#: ../src/common/connection_handlers.py:1457 +msgid "Such room does not exist." +msgstr "" + +#: ../src/common/connection_handlers.py:1460 +msgid "Room creation is restricted." +msgstr "" + +#: ../src/common/connection_handlers.py:1463 +msgid "Your registered nickname must be used." +msgstr "" + +#: ../src/common/connection_handlers.py:1466 +#, fuzzy +msgid "You are not in the members list." +msgstr "Nejste pÅ™ipojen(a) k serveru" + +#: ../src/common/connection_handlers.py:1474 +msgid "" +"Your desired nickname is in use or registered by another occupant.\n" +"Please specify another nickname below:" +msgstr "" + +#. BE CAREFUL: no con.updateRosterItem() in a callback +#: ../src/common/connection_handlers.py:1519 +#, python-format +msgid "we are now subscribed to %s" +msgstr "" + +#: ../src/common/connection_handlers.py:1521 +#, fuzzy, python-format +msgid "unsubscribe request from %s" +msgstr "Žádost o autorizaci od %s" + +#: ../src/common/connection_handlers.py:1523 +#, python-format +msgid "we are now unsubscribed from %s" +msgstr "" + +#: ../src/common/connection_handlers.py:1680 +#, python-format +msgid "" +"JID %s is not RFC compliant. It will not be added to your roster. Use roster " +"management tools such as http://jru.jabberstudio.org/ to remove it" +msgstr "" + +#: ../src/common/helpers.py:100 msgid "Invalid character in username." msgstr "Neplatný znak v uživatelském jménÄ›." -#: ../src/common/helpers.py:108 +#: ../src/common/helpers.py:105 msgid "Server address required." msgstr "Je potÅ™eba adresa serveru." -#: ../src/common/helpers.py:113 +#: ../src/common/helpers.py:110 msgid "Invalid character in hostname." msgstr "Neplatný znak v hostname." -#: ../src/common/helpers.py:119 +#: ../src/common/helpers.py:116 msgid "Invalid character in resource." msgstr "Neplatný znak ve zdroji." #. GiB means gibibyte -#: ../src/common/helpers.py:159 +#: ../src/common/helpers.py:156 #, python-format msgid "%s GiB" msgstr "%s GiB" #. GB means gigabyte -#: ../src/common/helpers.py:162 +#: ../src/common/helpers.py:159 #, python-format msgid "%s GB" msgstr "%s GB" #. MiB means mibibyte -#: ../src/common/helpers.py:166 +#: ../src/common/helpers.py:163 #, python-format msgid "%s MiB" msgstr "%s MiB" #. MB means megabyte -#: ../src/common/helpers.py:169 +#: ../src/common/helpers.py:166 #, python-format msgid "%s MB" msgstr "%s MB" #. KiB means kibibyte -#: ../src/common/helpers.py:173 +#: ../src/common/helpers.py:170 #, python-format msgid "%s KiB" msgstr "%s KiB" #. KB means kilo bytes -#: ../src/common/helpers.py:176 +#: ../src/common/helpers.py:173 #, python-format msgid "%s KB" msgstr "%s KB" #. B means bytes -#: ../src/common/helpers.py:179 +#: ../src/common/helpers.py:176 #, python-format msgid "%s B" msgstr "%s B" -#: ../src/common/helpers.py:189 +#: ../src/common/helpers.py:205 msgid "_Busy" msgstr "_NeruÅ¡it" -#: ../src/common/helpers.py:191 +#: ../src/common/helpers.py:207 msgid "Busy" msgstr "NeruÅ¡it" -#: ../src/common/helpers.py:194 +#: ../src/common/helpers.py:210 msgid "_Not Available" msgstr "Ne_dostupný" -#: ../src/common/helpers.py:196 +#: ../src/common/helpers.py:212 msgid "Not Available" msgstr "Nedostupný" -#: ../src/common/helpers.py:199 +#: ../src/common/helpers.py:215 msgid "_Free for Chat" msgstr "_Ukecaný" -#: ../src/common/helpers.py:201 +#: ../src/common/helpers.py:217 msgid "Free for Chat" msgstr "Ukecaný" -#: ../src/common/helpers.py:204 +#: ../src/common/helpers.py:220 msgid "_Available" msgstr "PÅ™ip_ojen" -#: ../src/common/helpers.py:206 +#: ../src/common/helpers.py:222 msgid "Available" msgstr "PÅ™ipojen" -#: ../src/common/helpers.py:208 +#: ../src/common/helpers.py:224 msgid "Connecting" msgstr "PÅ™ipojuji se" -#: ../src/common/helpers.py:211 +#: ../src/common/helpers.py:227 msgid "A_way" msgstr "_PryÄ" -#: ../src/common/helpers.py:213 +#: ../src/common/helpers.py:229 msgid "Away" msgstr "PryÄ" -#: ../src/common/helpers.py:216 +#: ../src/common/helpers.py:232 msgid "_Offline" msgstr "_Odpojen" -#: ../src/common/helpers.py:218 +#: ../src/common/helpers.py:234 msgid "Offline" msgstr "Odpojen" -#: ../src/common/helpers.py:221 +#: ../src/common/helpers.py:237 msgid "_Invisible" msgstr "Ne_viditelný" -#: ../src/common/helpers.py:223 -msgid "Invisible" -msgstr "Neviditelný" - -#: ../src/common/helpers.py:227 +#: ../src/common/helpers.py:243 msgid "?contact has status:Unknown" msgstr "?contact has status:Neznámý" -#: ../src/common/helpers.py:229 +#: ../src/common/helpers.py:245 msgid "?contact has status:Has errors" msgstr "stav" -#: ../src/common/helpers.py:234 +#: ../src/common/helpers.py:250 msgid "?Subscription we already have:None" msgstr "?Subscription we already have:Žádná" -#: ../src/common/helpers.py:236 +#: ../src/common/helpers.py:252 msgid "To" msgstr "Příjemce" -#: ../src/common/helpers.py:238 +#: ../src/common/helpers.py:254 msgid "From" msgstr "Odesílatel" -#: ../src/common/helpers.py:240 +#: ../src/common/helpers.py:256 msgid "Both" msgstr "Obojí" -#: ../src/common/helpers.py:248 +#: ../src/common/helpers.py:264 msgid "?Ask (for Subscription):None" msgstr "?Ask (for Subscription):Žádná" -#: ../src/common/helpers.py:250 +#: ../src/common/helpers.py:266 msgid "Subscribe" msgstr "Žádat autorizaci" -#: ../src/common/helpers.py:259 +#: ../src/common/helpers.py:275 msgid "?Group Chat Contact Role:None" msgstr "?Group Chat Contact Role:Žádná" -#: ../src/common/helpers.py:262 +#: ../src/common/helpers.py:278 msgid "Moderators" msgstr "ModerátoÅ™i" -#: ../src/common/helpers.py:264 +#: ../src/common/helpers.py:280 msgid "Moderator" msgstr "Moderátor" -#: ../src/common/helpers.py:267 +#: ../src/common/helpers.py:283 msgid "Participants" msgstr "ÚÄastníci" -#: ../src/common/helpers.py:269 +#: ../src/common/helpers.py:285 msgid "Participant" msgstr "ÚÄastník" -#: ../src/common/helpers.py:272 +#: ../src/common/helpers.py:288 msgid "Visitors" msgstr "NávÅ¡tÄ›vníci" -#: ../src/common/helpers.py:274 +#: ../src/common/helpers.py:290 msgid "Visitor" msgstr "NávÅ¡tÄ›vník" -#: ../src/common/helpers.py:310 +#: ../src/common/helpers.py:326 msgid "is paying attention to the conversation" msgstr "vÄ›nuje pozornost rozhovoru" -#: ../src/common/helpers.py:312 +#: ../src/common/helpers.py:328 msgid "is doing something else" msgstr "dÄ›lá nÄ›co jiného" -#: ../src/common/helpers.py:314 +#: ../src/common/helpers.py:330 msgid "is composing a message..." msgstr "píše zprávu..." #. paused means he or she was compoing but has stopped for a while -#: ../src/common/helpers.py:317 +#: ../src/common/helpers.py:333 msgid "paused composing a message" msgstr "pozastavil(a) psaní zprávy" -#: ../src/common/helpers.py:319 +#: ../src/common/helpers.py:335 msgid "has closed the chat window or tab" msgstr "zavÅ™el(a) okno zprávy" #. we talk about a file -#: ../src/common/optparser.py:62 +#: ../src/common/optparser.py:60 #, python-format msgid "error: cannot open %s for reading" msgstr "chyba: nemůžu otevřít %s pro Ätení" -#: ../src/common/optparser.py:167 +#: ../src/common/optparser.py:171 msgid "gtk+" msgstr "gtk+" -#: ../src/common/optparser.py:176 ../src/common/optparser.py:177 +#: ../src/common/optparser.py:180 ../src/common/optparser.py:181 msgid "cyan" msgstr "azurová" +#~ msgid "Would you like to overwrite it?" +#~ msgstr "Chcete jej pÅ™epsat?" + +#~ msgid "Automatically authorize contact" +#~ msgstr "Automaticky autorizovat kontakt" + +#~ msgid "Send File" +#~ msgstr "Odeslat Soubor" + +#~ msgid "Underline" +#~ msgstr "Podtržení" + +#~ msgid "_Join New Room..." +#~ msgstr "_Vstoupit do nové místnosti..." diff --git a/po/de.po b/po/de.po index 4ebe8cc74..0c265fdc8 100644 --- a/po/de.po +++ b/po/de.po @@ -3,19 +3,19 @@ # This file is distributed under the same license as the gajim package. # Fridtjof Busse , 2005, 2006. # -#: ../src/gajim-remote.py:204 ../src/gajim-remote.py:211 +#: ../src/gajim-remote.py:218 ../src/gajim-remote.py:225 msgid "" msgstr "" "Project-Id-Version: gajim 0.9\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2006-04-13 12:52+0200\n" -"PO-Revision-Date: 2006-04-12 08:34+0200\n" +"POT-Creation-Date: 2006-09-04 14:11+0200\n" +"PO-Revision-Date: 2006-09-06 19:57+0200\n" "Last-Translator: Fridtjof Busse \n" "Language-Team: German \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Plural-Forms: nplurals=2; plural=(n != 1);" #: ../gajim.desktop.in.h:1 msgid "A GTK+ Jabber client" @@ -23,36 +23,2213 @@ msgstr "Ein GTK+ Jabber-Client" #: ../gajim.desktop.in.h:2 msgid "Gajim Instant Messenger" -msgstr "Gajim·Instant·Messenger" +msgstr "Gajim Instant Messenger" #: ../gajim.desktop.in.h:3 msgid "Jabber IM Client" msgstr "Jabber IM-Client" -#: ../src/advanced.py:71 +#: ../data/glade/account_context_menu.glade.h:1 +msgid "Send Single _Message..." +msgstr "Einzelne _Nachricht senden..." + +#: ../data/glade/account_context_menu.glade.h:2 +msgid "_Add Contact..." +msgstr "Kontakt _hinzufügen ..." + +#: ../data/glade/account_context_menu.glade.h:3 +msgid "_Discover Services..." +msgstr "_Durchsuche Dienste..." + +#: ../data/glade/account_context_menu.glade.h:4 +#: ../data/glade/roster_window.glade.h:15 +#: ../data/glade/systray_context_menu.glade.h:5 +msgid "_Group Chat" +msgstr "_Gruppenchat" + +#: ../data/glade/account_context_menu.glade.h:5 +msgid "_Modify Account..." +msgstr "Konto bearbeiten" + +#: ../data/glade/account_context_menu.glade.h:6 +msgid "_Status" +msgstr "_Status" + +#: ../data/glade/account_creation_wizard_window.glade.h:1 +msgid "" +"Account is being created\n" +"\n" +"Please wait..." +msgstr "" +"Accouunt wird erstellt\n" +"\n" +"Bitte warten..." + +#: ../data/glade/account_creation_wizard_window.glade.h:4 +msgid "Please choose one of the options below:" +msgstr "Bitte wählen Sie eine der Optionen:" + +#: ../data/glade/account_creation_wizard_window.glade.h:5 +msgid "Please fill in the data for your new account" +msgstr "Bitte geben Sie die Daten für Ihr neues Konto ein" + +#: ../data/glade/account_creation_wizard_window.glade.h:6 +msgid "Click to see features (like MSN, ICQ transports) of jabber servers" +msgstr "" +"Klicken, um die Fähigkeiten (z.B. MSN-, ICQ-Transporte) auf Jabber-Servern " +"zu sehen." + +#: ../data/glade/account_creation_wizard_window.glade.h:7 +msgid "Connect when I press Finish" +msgstr "Verbinde, sobald ich Fertig klicke" + +#: ../data/glade/account_creation_wizard_window.glade.h:8 +msgid "Gajim: Account Creation Wizard" +msgstr "Gajim: Kontoeinrichtungs-Wizard" + +#: ../data/glade/account_creation_wizard_window.glade.h:9 +msgid "I already have an account I want to use" +msgstr "Ich habe bereits ein Konto, das ich benutzen möchte" + +#: ../data/glade/account_creation_wizard_window.glade.h:10 +msgid "I want to _register for a new account" +msgstr "Ich möchte ein neues Konto _erstellen" + +#: ../data/glade/account_creation_wizard_window.glade.h:11 +#: ../data/glade/account_modification_window.glade.h:18 +msgid "If checked, Gajim will remember the password for this account" +msgstr "Falls gewählt, speichert Gajim das Passwort für dieses Konto" + +#: ../data/glade/account_creation_wizard_window.glade.h:12 +#: ../data/glade/manage_proxies_window.glade.h:6 +msgid "Pass_word:" +msgstr "Pass_wort:" + +#: ../data/glade/account_creation_wizard_window.glade.h:13 +#: ../data/glade/account_modification_window.glade.h:37 +msgid "Save pass_word" +msgstr "Pass_wort speichern" + +#: ../data/glade/account_creation_wizard_window.glade.h:14 +msgid "Servers Features" +msgstr "Fähigkeiten des Servers" + +#: ../data/glade/account_creation_wizard_window.glade.h:15 +msgid "Set my profile when I connect" +msgstr "Setze mein Profil, wenn ich mich verbinde" + +#: ../data/glade/account_creation_wizard_window.glade.h:16 +msgid "" +"You need to have an account in order to connect\n" +"to the Jabber network." +msgstr "" +"Sie müssen ein Konto erstellen, bevor Sie sich zum Jabber-Netzwerk \n" +"verbinden können." + +#: ../data/glade/account_creation_wizard_window.glade.h:18 +msgid "Your JID:" +msgstr "Ihre JID:" + +#: ../data/glade/account_creation_wizard_window.glade.h:19 +#: ../data/glade/roster_window.glade.h:10 +msgid "_Advanced" +msgstr "_Erweitert" + +#: ../data/glade/account_creation_wizard_window.glade.h:20 +msgid "_Finish" +msgstr "_Beenden" + +#: ../data/glade/account_creation_wizard_window.glade.h:21 +#: ../data/glade/manage_proxies_window.glade.h:9 +msgid "_Host:" +msgstr "_Server:" + +#: ../data/glade/account_creation_wizard_window.glade.h:22 +#: ../data/glade/account_modification_window.glade.h:45 +msgid "_Password:" +msgstr "_Passwort:" + +#: ../data/glade/account_creation_wizard_window.glade.h:23 +#: ../data/glade/manage_proxies_window.glade.h:10 +msgid "_Port:" +msgstr "_Port:" + +#: ../data/glade/account_creation_wizard_window.glade.h:24 +msgid "_Retype Password:" +msgstr "Passwort e_rneut eingeben:" + +#: ../data/glade/account_creation_wizard_window.glade.h:25 +msgid "_Server:" +msgstr "_Server:" + +#: ../data/glade/account_creation_wizard_window.glade.h:26 +msgid "_Use proxy" +msgstr "_Proxy benutzen" + +#: ../data/glade/account_creation_wizard_window.glade.h:27 +#: ../data/glade/manage_proxies_window.glade.h:11 +msgid "_Username:" +msgstr "_Benutzername:" + +#: ../data/glade/account_modification_window.glade.h:1 +#: ../data/glade/preferences_window.glade.h:8 +msgid "Miscellaneous" +msgstr "Verschiedenes" + +#: ../data/glade/account_modification_window.glade.h:2 +msgid "OpenPGP" +msgstr "OpenPGP" + +#: ../data/glade/account_modification_window.glade.h:3 +msgid "Personal Information" +msgstr "Persönliche Informationen" + +#: ../data/glade/account_modification_window.glade.h:4 +msgid "Account" +msgstr "Konto" + +#: ../data/glade/account_modification_window.glade.h:5 +msgid "Account Modification" +msgstr "Konto-Änderung" + +#: ../data/glade/account_modification_window.glade.h:6 +msgid "Autoreconnect when connection is lost" +msgstr "Automatisch neu verbinden, wenn die Verbindung abbricht" + +#: ../data/glade/account_modification_window.glade.h:7 +msgid "C_onnect on Gajim startup" +msgstr "Beim Pr_ogrammstart verbinden" + +#: ../data/glade/account_modification_window.glade.h:8 +msgid "Chan_ge Password" +msgstr "Pass_wort ändern" + +#: ../data/glade/account_modification_window.glade.h:9 +msgid "" +"Check this so Gajim will connect in port 5223 where legacy servers are " +"expected to have SSL capabilities. Note that Gajim uses TLS encryption by " +"default if broadcasted by the server, and with this option enabled TLS will " +"be disabled" +msgstr "" +"Aktivieren Sie diese Option, damit Gajim auf Port 5223 verbindet, auf dem " +"veraltete Server SSL-Fähigkeiten haben. Beachten Sie, dass Gajim " +"standardmäßig TLS-Verschlüsselung benutzt wenn sie vom Server verwendet wird " +"und sie TLS mit dieser Option deaktivieren" + +#: ../data/glade/account_modification_window.glade.h:10 +msgid "Choose _Key..." +msgstr "_Schlüssel wählen..." + +#: ../data/glade/account_modification_window.glade.h:11 +msgid "Click to change account's password" +msgstr "Klicken, um das Konto-Passwort zu ändern" + +#: ../data/glade/account_modification_window.glade.h:12 +msgid "Connection" +msgstr "Verbindung" + +#: ../data/glade/account_modification_window.glade.h:13 +msgid "Edit Personal Information..." +msgstr "Persönliche _Details bearbeiten..." + +#: ../data/glade/account_modification_window.glade.h:14 +#: ../data/glade/roster_window.glade.h:5 ../src/notify.py:406 +#: ../src/notify.py:428 ../src/notify.py:440 ../src/tooltips.py:330 +msgid "Gajim" +msgstr "Gajim" + +#: ../data/glade/account_modification_window.glade.h:15 +#: ../data/glade/preferences_window.glade.h:46 ../src/roster_window.py:300 +#: ../src/roster_window.py:1256 ../src/roster_window.py:1640 +msgid "General" +msgstr "Allgemein" + +#: ../data/glade/account_modification_window.glade.h:16 +msgid "Hostname: " +msgstr "Hostname: " + +#: ../data/glade/account_modification_window.glade.h:17 +msgid "" +"If checked, Gajim will also broadcast some more IPs except from just your " +"IP, so file transfer has higher chances of working." +msgstr "" +"Wenn aktiviert, wird Gajim von mehr IPs senden als nur Ihrer eigenen IP, " +"wodurch Datentransfers eine höhere Erfolgswahrscheinlichkeit bekommen." + +#: ../data/glade/account_modification_window.glade.h:19 +msgid "" +"If checked, Gajim will send keep-alive packets so it prevents connection " +"timeout which results in disconnection" +msgstr "" +"Wenn aktiviert, sendet Gajim regelmäßig keep-alive-Pakete, um den " +"Verbindungsabbruch durch eine Zeitüberschreitung zu verhindern" + +#: ../data/glade/account_modification_window.glade.h:20 +msgid "" +"If checked, Gajim will store the password in ~/.gajim/config with 'read' " +"permission only for you" +msgstr "" +"Wenn aktiviert, wird Gajim das Passwort in ~/.gajim/config mit " +"Lese-Rechten nur für Sie speichern" + +#: ../data/glade/account_modification_window.glade.h:21 +msgid "" +"If checked, Gajim, when launched, will automatically connect to jabber using " +"this account" +msgstr "" +"Wenn aktiviert, wird Gajim während des Startvorgangs " +"automatisch zu diesem Konto verbinden" + +#: ../data/glade/account_modification_window.glade.h:22 +msgid "" +"If checked, any change to the global status (handled by the combobox at the " +"bottom of the roster window) will change the status of this account " +"accordingly" +msgstr "" +"Wenn aktiviert, wird jede Änderung des globalen Status (verwaltet von der " +"Combobox am Fuße des Kontaktfenster) auch den Status dieses Kontakts " +"entsprechend ändern" + +#: ../data/glade/account_modification_window.glade.h:23 +msgid "Information about you, as stored in the server" +msgstr "Informationen über Sie, wie sie auf dem Server gespeichert sind" + +#: ../data/glade/account_modification_window.glade.h:24 +msgid "Manage..." +msgstr "Verwalten ..." + +#: ../data/glade/account_modification_window.glade.h:25 ../src/config.py:1511 +msgid "No key selected" +msgstr "Kein Schlüssel gewählt" + +#. None means no proxy profile selected +#: ../data/glade/account_modification_window.glade.h:27 ../src/config.py:1112 +#: ../src/config.py:1117 ../src/config.py:1289 ../src/config.py:1569 +#: ../src/config.py:1642 ../src/config.py:2351 +msgid "None" +msgstr "Kein" + +#: ../data/glade/account_modification_window.glade.h:28 +msgid "Personal Information" +msgstr "Persönliche Informationen" + +#: ../data/glade/account_modification_window.glade.h:29 +msgid "Port: " +msgstr "Port: " + +#: ../data/glade/account_modification_window.glade.h:30 +msgid "Priori_ty:" +msgstr "Priori_tät:" + +#: ../data/glade/account_modification_window.glade.h:31 +msgid "" +"Priority is used in Jabber to determine who gets the events from the jabber " +"server when two or more clients are connected using the same account; The " +"client with the highest priority gets the events" +msgstr "" +"Die Priorität wird von Jabber verwendet, um festzustellen, wer die " +"Ereignisse des Jabber-Servers bekommt, wenn zwei oder mehr Clients mit dem " +"selben Konto verbunden sind. Der Client mit der höchsten Priorität bekommt " +"die Ereignisse" + +#: ../data/glade/account_modification_window.glade.h:32 +msgid "Proxy:" +msgstr "Proxy:" + +#: ../data/glade/account_modification_window.glade.h:33 +msgid "Resour_ce: " +msgstr "Ressour_ce: " + +#: ../data/glade/account_modification_window.glade.h:34 +msgid "" +"Resource is sent to the Jabber server in order to separate the same JID in " +"two or more parts depending on the number of the clients connected in the " +"same server with the same account. So you might be connected in the same " +"account with resource 'Home' and 'Work' at the same time. The resource which " +"has the highest priority will get the events. (see below)" +msgstr "" +"Die Resource wird zum Jabber-Server geschickt, um die selbe JID in zwei oder " +"mehr Teile zu separieren, abhängig von der Anzahl der Clients die mit dem " +"selben Konto auf dem selben Server verbunden sind. Daher kann man " +"gleichzeitig mit den Ressourcen \"Heim\" und \"Arbeit\" auf das selbe Konto " +"verbinden. Die Ressource mit der höchsten Priorität wird die Nachrichten " +"erhalten (siehe unten)" + +#: ../data/glade/account_modification_window.glade.h:35 +msgid "Save _passphrase (insecure)" +msgstr "_Passphrase speichern (unsicher)" + +#: ../data/glade/account_modification_window.glade.h:36 +msgid "Save conversation _logs for all contacts" +msgstr "Unter_haltungsverlauf für alle Kontakte dieses Kontos speichern" + +#: ../data/glade/account_modification_window.glade.h:38 +msgid "Send keep-alive packets" +msgstr "Sende keep-alive Pakete" + +#: ../data/glade/account_modification_window.glade.h:39 +msgid "Synch_ronize account status with global status" +msgstr "Konto-Status mit globalem Status abgleichen" + +#: ../data/glade/account_modification_window.glade.h:40 +msgid "Use _SSL (legacy)" +msgstr "_SSL verwenden" + +#: ../data/glade/account_modification_window.glade.h:41 +msgid "Use custom hostname/port" +msgstr "Verwende benutzerdefinierten Hostname und Port" + +#: ../data/glade/account_modification_window.glade.h:42 +msgid "Use file transfer proxies" +msgstr "Verwende Datentransfer-Proxies" + +#: ../data/glade/account_modification_window.glade.h:43 +msgid "_Jabber ID:" +msgstr "_Jabber ID:" + +#: ../data/glade/account_modification_window.glade.h:44 +msgid "_Name: " +msgstr "_Name: " + +#: ../data/glade/accounts_window.glade.h:1 +msgid "Accounts" +msgstr "Konten" + +#: ../data/glade/accounts_window.glade.h:2 +msgid "" +"If you have 2 or more accounts and it is checked, Gajim will list all " +"contacts as if you had one account" +msgstr "" +"Wenn Sie zwei oder mehr Konten haben und diese Option gewählt ist, wird " +"Gajim alle Kontakte auflisten, als hätten Sie ein Konto" + +#: ../data/glade/accounts_window.glade.h:3 +msgid "_Merge accounts" +msgstr "Konten _zusammenführen" + +#: ../data/glade/accounts_window.glade.h:4 +msgid "_Modify" +msgstr "_Ändern" + +#: ../data/glade/accounts_window.glade.h:5 +#: ../data/glade/remove_account_window.glade.h:4 +msgid "_Remove" +msgstr "_Entfernen" + +#: ../data/glade/add_new_contact_window.glade.h:1 +msgid "A_ccount:" +msgstr "_Konto:" + +#: ../data/glade/add_new_contact_window.glade.h:2 +msgid "A_llow this contact to view my status" +msgstr "Er_laube diesem Kontakt, meinen Status zu sehen" + +#: ../data/glade/add_new_contact_window.glade.h:3 +msgid "Add New Contact" +msgstr "Neuen Kontakt hinzufügen" + +#: ../data/glade/add_new_contact_window.glade.h:4 +msgid "I would like to add you to my contact list." +msgstr "Ich würde Dich gerne zu meiner Kontaktliste hinzufügen." + +#: ../data/glade/add_new_contact_window.glade.h:5 +msgid "" +"You have to register to this transport\n" +"to be able to add a contact from this\n" +"protocol. Click on register button to\n" +"proceed." +msgstr "" +"Sie müssen sich bei diesem Transport\n" +"registrieren, um einen Kontakt von\n" +"diesem Protokoll hinzufügen zu können.\n" +"Klicken Sie auf den Registrier-Knopf,\n" +"um fortzufahren." + +#: ../data/glade/add_new_contact_window.glade.h:9 +msgid "" +"You must be connected to the transport to be able\n" +"to add a contact from this protocol." +msgstr "" +"Sie müssen mit dem Transport verbunden sein, um einen\n" +"Kontakt von diesem Protokoll hinzufügen zu können." + +#: ../data/glade/add_new_contact_window.glade.h:11 +msgid "_Group:" +msgstr "_Gruppe:" + +#: ../data/glade/add_new_contact_window.glade.h:12 +msgid "_Nickname:" +msgstr "_Spitzname:" + +#: ../data/glade/add_new_contact_window.glade.h:13 +msgid "_Protocol:" +msgstr "_Protokoll:" + +#: ../data/glade/add_new_contact_window.glade.h:14 +msgid "_Register" +msgstr "_Registrieren" + +#: ../data/glade/add_new_contact_window.glade.h:15 +msgid "_User ID:" +msgstr "_Benutzer-ID:" + +#: ../data/glade/advanced_configuration_window.glade.h:1 +msgid "Description" +msgstr "Beschreibung" + +#: ../data/glade/advanced_configuration_window.glade.h:2 +msgid "NOTE: You should restart gajim for some setting to take effect" +msgstr "" +"HINWEIS: Sie sollten gajim neustarten, damit alle Änderungen in Kraft " +"treten" + +#: ../data/glade/advanced_configuration_window.glade.h:3 +msgid "Advanced Configuration Editor" +msgstr "Erweiterter Konfigurations-Editor" + +#: ../data/glade/advanced_configuration_window.glade.h:4 +msgid "Filter:" +msgstr "Filter:" + +#: ../data/glade/advanced_menuitem_menu.glade.h:1 +msgid "Delete MOTD" +msgstr "Lösche MOTD" + +#: ../data/glade/advanced_menuitem_menu.glade.h:2 +msgid "Deletes Message of the Day" +msgstr "Löscht die Nachricht des Tages" + +#: ../data/glade/advanced_menuitem_menu.glade.h:3 +msgid "Sends a message to currently connected users to this server" +msgstr "Sendet eine Nachricht an momentan angemeldete Benutzer des Servers" + +#: ../data/glade/advanced_menuitem_menu.glade.h:4 +msgid "Set MOTD" +msgstr "Setze MOTD" + +#: ../data/glade/advanced_menuitem_menu.glade.h:5 +msgid "Sets Message of the Day" +msgstr "Setzt Message of the Day" + +#: ../data/glade/advanced_menuitem_menu.glade.h:6 +msgid "Show _XML Console" +msgstr "Zeige _XML Konsole" + +#: ../data/glade/advanced_menuitem_menu.glade.h:7 +msgid "Update MOTD" +msgstr "MOTD Aktualisieren" + +#: ../data/glade/advanced_menuitem_menu.glade.h:8 +msgid "Updates Message of the Day" +msgstr "Aktualisiert Message of the Day" + +#: ../data/glade/advanced_menuitem_menu.glade.h:9 +msgid "_Administrator" +msgstr "_Administrator" + +#: ../data/glade/advanced_menuitem_menu.glade.h:10 +msgid "_Privacy Lists" +msgstr "Prviatlisten" + +#: ../data/glade/advanced_menuitem_menu.glade.h:11 +msgid "_Send Server Message" +msgstr "_Sende Servernachricht" + +#: ../data/glade/advanced_menuitem_menu.glade.h:12 +msgid "_Send Single Message" +msgstr "Sende _einzelne Nachricht" + +#: ../data/glade/advanced_notifications_window.glade.h:1 +msgid " a window/tab opened with that contact " +msgstr " ein Fenster/Tab mit diesem Kontakt geöffnet " + +#: ../data/glade/advanced_notifications_window.glade.h:2 +msgid "Actions" +msgstr "Aktionen" + +#: ../data/glade/advanced_notifications_window.glade.h:3 +msgid "Conditions" +msgstr "Ereignisse" + +#: ../data/glade/advanced_notifications_window.glade.h:4 +#: ../data/glade/preferences_window.glade.h:10 +msgid "Sounds" +msgstr "Klänge" + +#: ../data/glade/advanced_notifications_window.glade.h:5 +msgid "Advanced Actions" +msgstr "Erweiterte Aktionen" + +#: ../data/glade/advanced_notifications_window.glade.h:6 +msgid "Advanced Notifications Control" +msgstr "Erweiterter Benachrichtigungs-Editor" + +#: ../data/glade/advanced_notifications_window.glade.h:7 +msgid "All Status " +msgstr "Alle Status " + +#: ../data/glade/advanced_notifications_window.glade.h:8 +#: ../src/common/helpers.py:230 +msgid "Away" +msgstr "Abwesend" + +#: ../data/glade/advanced_notifications_window.glade.h:9 +msgid "Busy " +msgstr "Beschäftigt " + +#: ../data/glade/advanced_notifications_window.glade.h:10 +msgid "Don't have " +msgstr "habe nicht " + +#: ../data/glade/advanced_notifications_window.glade.h:11 +msgid "Have " +msgstr "habe " + +#: ../data/glade/advanced_notifications_window.glade.h:12 +#: ../src/common/helpers.py:240 +msgid "Invisible" +msgstr "Unsichtbar" + +#: ../data/glade/advanced_notifications_window.glade.h:13 +msgid "Launch a command" +msgstr "Starte ein Kommando" + +#: ../data/glade/advanced_notifications_window.glade.h:14 +#: ../src/common/helpers.py:213 +msgid "Not Available" +msgstr "Nicht verfügbar" + +#: ../data/glade/advanced_notifications_window.glade.h:15 +msgid "Online / Free For Chat" +msgstr "Frei zum Chatten" + +#: ../data/glade/advanced_notifications_window.glade.h:16 +msgid "Play a sound" +msgstr "Klänge abspielen" + +#: ../data/glade/advanced_notifications_window.glade.h:17 +msgid "" +"Receive a Message\n" +"Contact Connected\n" +"Contact Disconnected\n" +"Contact Change Status\n" +"Group Chat Message Highlight\n" +"Group Chat Message Received\n" +"File Transfert Resquest\n" +"File Transfert Started\n" +"File Transfert Finished" +msgstr "" +"Nachricht empfangen\n" +"Kontakt verbunden\n" +"Kontakt nicht mehr verbunden\n" +"Kontakt ändert Status\n" +"Gruppenchat-Nachricht hervorgehoben\n" +"Gruppenchat-Nachricht empfangen\n" +"Anfrage zur Dateiübertragung\n" +"Dateiübertragung begonnen\n" +"Dateiübertragung beendet" + +#: ../data/glade/advanced_notifications_window.glade.h:26 +msgid "Some special(s) status..." +msgstr "Einen speziellen Status ..." + +#: ../data/glade/advanced_notifications_window.glade.h:27 +msgid "When " +msgstr "Wenn " + +#: ../data/glade/advanced_notifications_window.glade.h:28 +msgid "_Activate Windows manager UrgencyHint to make chat taskbar to flash" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:29 +msgid "_Disable auto opening chat window" +msgstr "_Deaktiviere automatisch öffnendes Chatfenster" + +#: ../data/glade/advanced_notifications_window.glade.h:30 +msgid "_Disable existing popup window" +msgstr "_Deaktivere existierendes Popup-Fenster" + +#: ../data/glade/advanced_notifications_window.glade.h:31 +msgid "_Disable existing sound for this event" +msgstr "_Deaktivere existierenden Sound für dieses Ereignis" + +#: ../data/glade/advanced_notifications_window.glade.h:32 +msgid "_Disable showing event in roster" +msgstr "_Deaktivere die Ereignisanzeige im Roster" + +#: ../data/glade/advanced_notifications_window.glade.h:33 +msgid "_Disable showing event in systray" +msgstr "_Deaktiviere die Ereignisanzeige im Systry" + +#: ../data/glade/advanced_notifications_window.glade.h:34 +msgid "_Inform me with a popup window" +msgstr "_Informiere mich mit einem Popup-Fenster" + +#: ../data/glade/advanced_notifications_window.glade.h:35 +msgid "_Open chat window with user" +msgstr "Ein Chat-Fenster mit Benutzer öffnen" + +#: ../data/glade/advanced_notifications_window.glade.h:36 +msgid "_Show event in roster" +msgstr "Zeige Ereignis in der _Kontaktliste" + +#: ../data/glade/advanced_notifications_window.glade.h:37 +msgid "_Show event in systray" +msgstr "Zeige _Ereignisse im Systray" + +#: ../data/glade/advanced_notifications_window.glade.h:38 +msgid "and I " +msgstr "und ich " + +#: ../data/glade/advanced_notifications_window.glade.h:39 +msgid "" +"contact(s)\n" +"group(s)\n" +"everybody" +msgstr "" +"Kontakt(e)\n" +"Gruppe(n)\n" +"Alle" + +#: ../data/glade/advanced_notifications_window.glade.h:42 +msgid "for " +msgstr "für " + +#: ../data/glade/advanced_notifications_window.glade.h:43 +msgid "when I'm " +msgstr "wenn ich bin " + +#: ../data/glade/change_password_dialog.glade.h:1 +msgid "Change Password" +msgstr "Passwort ändern" + +#: ../data/glade/change_password_dialog.glade.h:2 +msgid "Enter it again for confirmation:" +msgstr "Erneut eingeben zur Bestätigung:" + +#: ../data/glade/change_password_dialog.glade.h:3 +msgid "Enter new password:" +msgstr "Neues Passwort eingeben:" + +#: ../data/glade/change_status_message_dialog.glade.h:1 +msgid "Type your new status message" +msgstr "Geben Sie Ihre neue Statusnachricht ein" + +#: ../data/glade/change_status_message_dialog.glade.h:2 +msgid "Preset messages:" +msgstr "Voreingestellte Nachrichten:" + +#: ../data/glade/change_status_message_dialog.glade.h:3 +msgid "Save as Preset..." +msgstr "Speichere als Voreinstellung ..." + +#: ../data/glade/chat_context_menu.glade.h:1 +msgid "Join _Group Chat" +msgstr "_Chatraum beitreten" + +#: ../data/glade/chat_context_menu.glade.h:2 +#: ../data/glade/chat_control_popup_menu.glade.h:4 +#: ../data/glade/gc_occupants_menu.glade.h:2 +#: ../data/glade/roster_contact_context_menu.glade.h:9 +msgid "_Add to Roster" +msgstr "Zur Kont_aktliste hinzufügen" + +#: ../data/glade/chat_context_menu.glade.h:3 +msgid "_Copy JID/Email Address" +msgstr "Email-Adresse _kopieren" + +#: ../data/glade/chat_context_menu.glade.h:4 +msgid "_Copy Link Location" +msgstr "Link-Adresse _kopieren" + +#: ../data/glade/chat_context_menu.glade.h:5 +msgid "_Open Email Composer" +msgstr "Email-Programm _öffnen" + +#: ../data/glade/chat_context_menu.glade.h:6 +msgid "_Open Link in Browser" +msgstr "Link _öffnen" + +#: ../data/glade/chat_context_menu.glade.h:7 +#: ../data/glade/roster_window.glade.h:19 +#: ../data/glade/systray_context_menu.glade.h:6 +msgid "_Start Chat" +msgstr "Chat starten" + +#: ../data/glade/chat_control_popup_menu.glade.h:1 +msgid "Click to see past conversations with this contact" +msgstr "Klicken, um die früheren Unterhaltungen mit diesem Kontakt zu sehen" + +#: ../data/glade/chat_control_popup_menu.glade.h:2 +#: ../data/glade/roster_contact_context_menu.glade.h:7 +msgid "Send _File" +msgstr "_Datei Senden" + +#: ../data/glade/chat_control_popup_menu.glade.h:3 +msgid "Toggle Open_PGP Encryption" +msgstr "OpenG_PG Verschlüsselung aktivieren" + +#: ../data/glade/chat_control_popup_menu.glade.h:5 +#: ../data/glade/gc_control_popup_menu.glade.h:6 +msgid "_Compact View Alt+C" +msgstr "_Kompakte Ansicht Alt+C" + +#: ../data/glade/chat_control_popup_menu.glade.h:6 +#: ../data/glade/gc_control_popup_menu.glade.h:7 +#: ../data/glade/gc_occupants_menu.glade.h:5 +#: ../data/glade/roster_contact_context_menu.glade.h:12 +msgid "_History" +msgstr "_Verlauf" + +#: ../data/glade/data_form_window.glade.h:1 +msgid "Room Configuration" +msgstr "Raum-Konfiguration" + +#: ../data/glade/edit_groups_dialog.glade.h:1 +msgid "Edit Groups" +msgstr "Gruppen bearbeiten" + +#: ../data/glade/filetransfers.glade.h:1 +msgid "A list of active, completed and stopped file transfers" +msgstr "" +"Eine Liste der aktiven, fertigen und angehaltenen Dateitransfers von und zu " +"Ihren Freunden." + +#: ../data/glade/filetransfers.glade.h:2 +msgid "Cancel file transfer" +msgstr "Dateitransfer abbrechen" + +#: ../data/glade/filetransfers.glade.h:3 +msgid "Cancels the selected file transfer" +msgstr "Bricht den ausgewählten Dateitransfer ab" + +#: ../data/glade/filetransfers.glade.h:4 +msgid "Cancels the selected file transfer and removes incomplete file" +msgstr "" +"Bricht den ausgewählten Dateitransfer ab und löscht unvollständige Daten" + +#: ../data/glade/filetransfers.glade.h:5 +msgid "Clean _up" +msgstr "Aufrä_umen" + +#: ../data/glade/filetransfers.glade.h:6 +msgid "File Transfers" +msgstr "Dateitransfers" + +#: ../data/glade/filetransfers.glade.h:7 +msgid "Hides the window" +msgstr "Schließt das Fenster" + +#: ../data/glade/filetransfers.glade.h:8 +msgid "Remove file transfer from the list." +msgstr "Entferne Dateitransfer von Liste" + +#: ../data/glade/filetransfers.glade.h:9 +msgid "Removes completed, canceled and failed file transfers from the list" +msgstr "" +"Entferne beendete, abgebrochene und fehlgeschlagene Dateitransfers von der " +"Liste" + +#: ../data/glade/filetransfers.glade.h:10 +msgid "Shows a list of file transfers between you and other" +msgstr "Zeigt eine Liste von Dateitransfers" + +#: ../data/glade/filetransfers.glade.h:11 +msgid "" +"This action removes single file transfer from the list. If the transfer is " +"active, it is first stopped and then removed" +msgstr "" +"Diese Aktion entfernt einen Dateitransfer von der Liste. Falls der Transfer " +"aktiv ist, wird er erst gestoppt, dann entfernt" + +#: ../data/glade/filetransfers.glade.h:12 +msgid "When a file transfer is complete show a popup notification" +msgstr "Zeige eine Benachrichtigung, wenn die Datei komplett übertragen wurde." + +#: ../data/glade/filetransfers.glade.h:13 ../src/filetransfers_window.py:752 +msgid "_Continue" +msgstr "_Fortsetzen" + +#: ../data/glade/filetransfers.glade.h:14 +msgid "_Notify me when a file transfer is complete" +msgstr "_Benachrichtige mich, wenn der Dateitransfer abgeschlossen ist" + +#: ../data/glade/filetransfers.glade.h:15 ../src/filetransfers_window.py:190 +msgid "_Open Containing Folder" +msgstr "_Öffne Ordner" + +#: ../data/glade/filetransfers.glade.h:16 +msgid "_Pause" +msgstr "_Pause" + +#: ../data/glade/filetransfers.glade.h:17 +msgid "file transfers list" +msgstr "Dateitransfer-Liste" + +#: ../data/glade/gajim_themes_window.glade.h:1 +msgid "Chatstate Tab Colors" +msgstr "Chatstatus Tabellenfarbe" + +#: ../data/glade/gajim_themes_window.glade.h:2 +msgid "" +"Account\n" +"Group\n" +"Contact\n" +"Banner" +msgstr "" +"Konto\n" +"Gruppe\n" +"Kontakt\n" +"Banner" + +#: ../data/glade/gajim_themes_window.glade.h:6 ../src/config.py:327 +msgid "Active" +msgstr "Aktiv" + +#: ../data/glade/gajim_themes_window.glade.h:7 +msgid "Bold" +msgstr "Fett" + +#: ../data/glade/gajim_themes_window.glade.h:8 +msgid "Composing" +msgstr "Erstellen" + +#: ../data/glade/gajim_themes_window.glade.h:9 +msgid "Font style:" +msgstr "Schriftart:" + +#: ../data/glade/gajim_themes_window.glade.h:10 +msgid "Gajim Themes Customization" +msgstr "Gajim Thema Einstellungen" + +#: ../data/glade/gajim_themes_window.glade.h:11 +msgid "Gone" +msgstr "Weg" + +#: ../data/glade/gajim_themes_window.glade.h:12 +msgid "Inactive" +msgstr "Inaktiv" + +#: ../data/glade/gajim_themes_window.glade.h:13 +msgid "Italic" +msgstr "Kursiv" + +#: ../data/glade/gajim_themes_window.glade.h:14 +msgid "" +"MUC\n" +"Messages" +msgstr "" +"MUC\n" +"Nachrichten" + +#: ../data/glade/gajim_themes_window.glade.h:16 +msgid "" +"MUC Directed\n" +"Messages" +msgstr "" +"MUC gerichtete\n" +"Nachrichten" + +#: ../data/glade/gajim_themes_window.glade.h:18 ../src/tooltips.py:649 +msgid "Paused" +msgstr "Unterbrochen" + +#: ../data/glade/gajim_themes_window.glade.h:19 +msgid "Text _color:" +msgstr "Text_farbe:" + +#: ../data/glade/gajim_themes_window.glade.h:20 +msgid "Text _font:" +msgstr "Schrift_art:" + +#: ../data/glade/gajim_themes_window.glade.h:21 +msgid "_Background:" +msgstr "_Hintergrund:" + +#: ../data/glade/gc_control_popup_menu.glade.h:1 +msgid "Change _Nickname" +msgstr "_Spitzname ändern" + +#: ../data/glade/gc_control_popup_menu.glade.h:2 +msgid "Change _Subject" +msgstr "_Thema ändern" + +#: ../data/glade/gc_control_popup_menu.glade.h:3 +msgid "Click to see past conversation in this room" +msgstr "Klicken, um die früheren Unterhaltungen in diesem Raum zu sehen" + +#: ../data/glade/gc_control_popup_menu.glade.h:4 +msgid "Configure _Room" +msgstr "_Raum einrichten" + +#: ../data/glade/gc_control_popup_menu.glade.h:5 +msgid "_Bookmark This Room" +msgstr "Raum zu _Bookmarks hinzufügen" + +#: ../data/glade/gc_occupants_menu.glade.h:1 +msgid "Mo_derator" +msgstr "Mo_derator" + +#: ../data/glade/gc_occupants_menu.glade.h:3 +msgid "_Admin" +msgstr "_Admin" + +#: ../data/glade/gc_occupants_menu.glade.h:4 +msgid "_Ban" +msgstr "_Verbannen" + +#: ../data/glade/gc_occupants_menu.glade.h:6 +msgid "_Kick" +msgstr "_Rausschmeißen" + +#: ../data/glade/gc_occupants_menu.glade.h:7 +msgid "_Member" +msgstr "_Mitglied" + +#: ../data/glade/gc_occupants_menu.glade.h:8 +msgid "_Occupant Actions" +msgstr "_Benutzer Aktionen" + +#: ../data/glade/gc_occupants_menu.glade.h:9 +msgid "_Owner" +msgstr "_Besitzer" + +#: ../data/glade/gc_occupants_menu.glade.h:10 +msgid "_Send Private Message" +msgstr "Private Nachricht _Senden" + +#: ../data/glade/gc_occupants_menu.glade.h:11 +msgid "_Voice" +msgstr "_Stimme verleihen" + +#: ../data/glade/history_manager.glade.h:1 +msgid "" +"Welcome to Gajim History Logs Manager\n" +"\n" +"You can select logs from the left and/or search database from below.\n" +"\n" +"WARNING:\n" +"If you plan to do massive deletions, please make sure Gajim is not running. " +"Generally avoid deletions with contacts you currently chat with." +msgstr "" +"Willkommen zum Gajim Verlaufslog-Manager\n" +"\n" +"Sie können Logs links auswählen und/oder unten die Datenbank durchsuchen.\n" +"\n" +"WARNUNG:\n" +"Wenn Sie massiv Daten löschen möchten, stellen Sie sicher, dass Gajim nicht " +"läuft. Vermeiden Sie generell Löschungen von Kontakten, mit denen Sie gerade " +"chatte." + +#: ../data/glade/history_manager.glade.h:7 +msgid "Delete" +msgstr "Löschen" + +#: ../data/glade/history_manager.glade.h:8 +msgid "Export" +msgstr "Export" + +#: ../data/glade/history_manager.glade.h:9 +msgid "Gajim History Logs Manager" +msgstr "Gajim Verlaufs-Logmanager" + +#: ../data/glade/history_manager.glade.h:10 +msgid "_Search Database" +msgstr "_Suche Datenbank" + +#: ../data/glade/history_window.glade.h:1 +msgid "Build custom query" +msgstr "Personalisierte Anfrage bauen" + +#: ../data/glade/history_window.glade.h:2 +msgid "Conversation History" +msgstr "Unterhaltungs-Verlauf" + +#: ../data/glade/history_window.glade.h:3 +msgid "Query Builder..." +msgstr "Anfrage-Baukasten ..." + +#: ../data/glade/history_window.glade.h:4 +msgid "Search" +msgstr "Suche" + +#: ../data/glade/history_window.glade.h:5 +msgid "_Search" +msgstr "_Suche" + +#: ../data/glade/invitation_received_dialog.glade.h:1 +msgid "Accept" +msgstr "Akzeptieren" + +#: ../data/glade/invitation_received_dialog.glade.h:2 +#: ../data/glade/privacy_list_edit_window.glade.h:8 +msgid "Deny" +msgstr "Ablehnen" + +#: ../data/glade/invitation_received_dialog.glade.h:3 +msgid "Invitation Received" +msgstr "Einladung empfangen" + +#: ../data/glade/join_groupchat_window.glade.h:1 ../src/dialogs.py:1067 +msgid "Join Group Chat" +msgstr "Betrete Chatraum" + +#: ../data/glade/join_groupchat_window.glade.h:2 +#: ../data/glade/manage_bookmarks_window.glade.h:4 +#: ../data/glade/vcard_information_window.glade.h:25 +msgid "Nickname:" +msgstr "Spitzname:" + +#: ../data/glade/join_groupchat_window.glade.h:3 +#: ../data/glade/manage_bookmarks_window.glade.h:5 +msgid "Password:" +msgstr "Passwort:" + +#: ../data/glade/join_groupchat_window.glade.h:4 +msgid "Recently:" +msgstr "Kürzlich:" + +#: ../data/glade/join_groupchat_window.glade.h:5 +#: ../data/glade/manage_bookmarks_window.glade.h:7 +msgid "Room:" +msgstr "Raum:" + +#: ../data/glade/join_groupchat_window.glade.h:6 +#: ../data/glade/manage_bookmarks_window.glade.h:8 +msgid "Server:" +msgstr "Server:" + +#: ../data/glade/join_groupchat_window.glade.h:7 ../src/disco.py:1145 +#: ../src/disco.py:1510 +msgid "_Join" +msgstr "_Betreten" + +#: ../data/glade/manage_accounts_window.glade.h:1 +msgid "Manage Accounts" +msgstr "Konten Verwalten" + +#: ../data/glade/manage_bookmarks_window.glade.h:1 +msgid "Auto join" +msgstr "Automatisch verbinden" + +#: ../data/glade/manage_bookmarks_window.glade.h:2 +msgid "If checked, Gajim will join this group chat on startup" +msgstr "Wenn gewählt, tritt Gajim dem Chatraum beim Programmstart bei" + +#: ../data/glade/manage_bookmarks_window.glade.h:3 +msgid "Manage Bookmarks" +msgstr "Verwalte Bookmarks" + +#: ../data/glade/manage_bookmarks_window.glade.h:6 +msgid "Print status:" +msgstr "Status anzeigen:" + +#: ../data/glade/manage_bookmarks_window.glade.h:9 +msgid "Title:" +msgstr "Titel:" + +#: ../data/glade/manage_proxies_window.glade.h:1 +msgid "Properties" +msgstr "Eigenschaften" + +#: ../data/glade/manage_proxies_window.glade.h:2 +msgid "Settings" +msgstr "Einstellungen" + +#: ../data/glade/manage_proxies_window.glade.h:3 +msgid "HTTP Connect" +msgstr "HTTP Connect" + +#: ../data/glade/manage_proxies_window.glade.h:4 +msgid "Manage Proxy Profiles" +msgstr "Proxy Verwaltung" + +#: ../data/glade/manage_proxies_window.glade.h:5 +#: ../data/glade/vcard_information_window.glade.h:24 +msgid "Name:" +msgstr "Name:" + +#: ../data/glade/manage_proxies_window.glade.h:7 +msgid "Type:" +msgstr "Art:" + +#: ../data/glade/manage_proxies_window.glade.h:8 +msgid "Use authentication" +msgstr "Verwende Authentifizierung" + +#: ../data/glade/message_window.glade.h:1 +msgid "Click to insert an emoticon (Alt+M)" +msgstr "Klicken Sie, um ein Emoticon einzufügen (Alt+M)" + +#: ../data/glade/message_window.glade.h:2 ../src/chat_control.py:1066 +msgid "OpenPGP Encryption" +msgstr "OpenPGP-Verschlüsselung" + +#. Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector) +#: ../data/glade/message_window.glade.h:4 +#: ../data/glade/roster_window.glade.h:9 +msgid "_Actions" +msgstr "_Aktionen" + +#. Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector) +#: ../data/glade/message_window.glade.h:6 +#: ../data/glade/xml_console_window.glade.h:11 +#: ../src/filetransfers_window.py:249 +msgid "_Send" +msgstr "_Senden" + +#: ../data/glade/passphrase_dialog.glade.h:1 +msgid "Passphrase" +msgstr "Passphrase" + +#: ../data/glade/preferences_window.glade.h:1 +msgid "Advanced Configuration Editor" +msgstr "Erweiterter Konfigurations-Editor" + +#: ../data/glade/preferences_window.glade.h:2 +msgid "Applications" +msgstr "Anwendungen" + +#. a header for custom browser/client/file manager. so translate sth like: Custom Settings +#: ../data/glade/preferences_window.glade.h:4 +msgid "Custom" +msgstr "Benutzerdefiniert" + +#: ../data/glade/preferences_window.glade.h:5 +msgid "Format of a line" +msgstr "Format einer Zeile" + +#: ../data/glade/preferences_window.glade.h:6 +msgid "GMail Options" +msgstr "Gmail-Optionen" + +#: ../data/glade/preferences_window.glade.h:7 +msgid "Interface Customization" +msgstr "Benutzerdefiniertes Aussehen" + +#: ../data/glade/preferences_window.glade.h:9 +msgid "Preset Status Messages" +msgstr "Voreingestellte Status-Nachrichten" + +#: ../data/glade/preferences_window.glade.h:11 +msgid "Visual Notifications" +msgstr "Visuelle Benachrichtigungen" + +#: ../data/glade/preferences_window.glade.h:12 +msgid "A_fter nickname:" +msgstr "Nach dem Spit_znamen:" + +#: ../data/glade/preferences_window.glade.h:13 +msgid "Advanced" +msgstr "Erweitert" + +#: ../data/glade/preferences_window.glade.h:14 +msgid "" +"All chat states\n" +"Composing only\n" +"Disabled" +msgstr "" +"Immer\n" +"Nur beim Schreiben\n" +"Deaktiviert" + +#: ../data/glade/preferences_window.glade.h:17 +msgid "Allow _OS information to be sent" +msgstr "Sende _Betriebssystem-Information" + +#: ../data/glade/preferences_window.glade.h:18 +msgid "Allow popup/notifications when I'm _away/na/busy/invisible" +msgstr "" +"Popups/Benachrichtigungen _zulassen, wenn ich abwesend/NA/beschäftigt/" +"unsichtbar bin" + +#: ../data/glade/preferences_window.glade.h:19 +msgid "Also known as iChat style" +msgstr "Auch als iChat-Stil bekannt" + +#: ../data/glade/preferences_window.glade.h:20 +msgid "" +"An example: If you have enabled status message for away, Gajim won't ask you " +"anymore for a status message when you change your status to away; it will " +"use the default one set here" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:21 +msgid "Ask status message when I:" +msgstr "Erfrage Status-Nachricht beim: " + +#: ../data/glade/preferences_window.glade.h:22 +msgid "Auto _away after:" +msgstr "Automatisch _abwesend nach:" + +#: ../data/glade/preferences_window.glade.h:23 +msgid "Auto _not available after:" +msgstr "Automatisch _nicht verfügbar nach:" + +#: ../data/glade/preferences_window.glade.h:24 +msgid "" +"Autodetect on every Gajim startup\n" +"Always use GNOME default applications\n" +"Always use KDE default applications\n" +"Custom" +msgstr "" +"Bei jedem Programmstart automatisch erkennen\n" +"Immer GNOME Standard-Anwendungen verwenden\n" +"Immer KDE Standard-Anwendungen verwenden\n" +"Benutzerdefiniert" + +#: ../data/glade/preferences_window.glade.h:28 +msgid "B_efore nickname:" +msgstr "Vor d_em Spitznamen:" + +#: ../data/glade/preferences_window.glade.h:29 ../src/chat_control.py:806 +msgid "Chat" +msgstr "Chat" + +#: ../data/glade/preferences_window.glade.h:30 +msgid "Chat state noti_fications:" +msgstr "Sende Statusbenachrichtigungen:" + +#: ../data/glade/preferences_window.glade.h:31 +msgid "" +"Check this option, only if someone you don't have in the roster spams/annoys " +"you. Use with caution, cause it blocks all messages from any contact that is " +"not in the roster" +msgstr "" +"Aktivieren Sie diese Option nur, wenn jemand, der nicht in ihrer Liste ist, " +"sie zuspammt oder belästigt. Verwenden Sie sie mit Vorsicht, da sie alle " +"Nachrichten von allen Kontakten blockiert, die nicht in ihrer Liste sind." + +#: ../data/glade/preferences_window.glade.h:32 +msgid "Default Status Messages" +msgstr "Vorgegebene Status-Nachrichten" + +#: ../data/glade/preferences_window.glade.h:33 +msgid "Default status _iconset:" +msgstr "Standard Status-S_ymbole:" + +#: ../data/glade/preferences_window.glade.h:34 +msgid "Display _extra email details" +msgstr "Zeige zusätzliche _Email-Details" + +#: ../data/glade/preferences_window.glade.h:35 +msgid "Display a_vatars of contacts in roster" +msgstr "Zeige A_vatare von Kontakten im Roster" + +#: ../data/glade/preferences_window.glade.h:36 +msgid "Display status _messages of contacts in roster" +msgstr "Zeige die Status_nachrichten von Kontakten im Roster" + +#: ../data/glade/preferences_window.glade.h:37 +msgid "E_very 5 minutes" +msgstr "Alle 5 _Minuten" + +#: ../data/glade/preferences_window.glade.h:38 +msgid "Emoticons:" +msgstr "Emoticons:" + +#: ../data/glade/preferences_window.glade.h:39 +msgid "Events" +msgstr "Ereignisse" + +#: ../data/glade/preferences_window.glade.h:40 +msgid "" +"Gajim can send and receive meta-information related to a conversation you " +"may have with a contact. Here you can specify which chatstates you want to " +"send to the other party." +msgstr "" +"Gajim kann Meta-Information, die eine Unterhaltung mit einem Kontakt " +"betrifft, empfangen und versenden. Hier können Sie definieren welche " +"Chatstates Sie Ihrem Gegenüber senden möchten." + +#: ../data/glade/preferences_window.glade.h:41 +msgid "" +"Gajim will automatically show new events by poping up the relative window" +msgstr "" +"Gajim zeigt neue Ereignisse automatisch anzeigen, indem das betreffende " +"Fenster geöffnet wird" + +#: ../data/glade/preferences_window.glade.h:42 +msgid "" +"Gajim will notify you for new events via a popup in the bottom right of the " +"screen" +msgstr "" +"Gajim wird Sie über neue Ereignisse mit einem Popup in der rechten unteren " +"Ecke des Bildschirms benachrichtigen" + +#: ../data/glade/preferences_window.glade.h:43 +msgid "" +"Gajim will notify you via a popup window in the bottom right of the screen " +"about contacts that just signed in" +msgstr "" +"Gajim wird Sie über ein Popup-Fenster in der rechten unteren Ecke des " +"Bildschirmes über Kontakte informieren, die sich gerade angemeldet haben" + +#: ../data/glade/preferences_window.glade.h:44 +msgid "" +"Gajim will notify you via a popup window in the bottom right of the screen " +"about contacts that just signed out" +msgstr "" +"Gajim wird Sie über ein Popup-Fenster in der rechten unteren Bildschirmecke " +"über Kontakte informieren, die sich gerade abgemeldet haben" + +#: ../data/glade/preferences_window.glade.h:45 +msgid "" +"Gajim will only change the icon of the contact that triggered the new event" +msgstr "" +"Gajim wird nur das Symbol des Kontaktes ändern, von dem die neue Nachricht " +"kommt" + +#: ../data/glade/preferences_window.glade.h:47 +msgid "" +"If checked, Gajim will also include information about the sender of the new " +"emails" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:48 +msgid "" +"If checked, Gajim will display avatars of contacts in roster window and in " +"group chats" +msgstr "" +"Wenn aktiviert, wird Gajim einen Avatar im Roster-Fenster und in " +"Gruppenchats einblenden" + +#: ../data/glade/preferences_window.glade.h:49 +msgid "" +"If checked, Gajim will display status messages of contacts under the contact " +"name in roster window and in group chats" +msgstr "" +"Wenn aktiviert, wird Gajim für jeden Kontakt unter dem Kontaktnamen im " +"Roster und im Gruppenchat-Fenster die Statusnachricht anzeigen" + +#: ../data/glade/preferences_window.glade.h:50 +msgid "" +"If checked, Gajim will remember the roster and chat window positions in the " +"screen and the sizes of them next time you run it" +msgstr "" +"Wenn gewählt, merkt sich Gajim die Position und Größe der Kontaktliste auf " +"dem Bildschirm" + +#: ../data/glade/preferences_window.glade.h:51 +msgid "" +"If checked, Gajim will use protocol-specific status icons. (eg. A contact " +"from MSN will have the equivalent msn icon for status online, away, busy, " +"etc...)" +msgstr "Wenn Sie diese Option aktivieren wird Gajim Protokoll-spezifische Symbole verwenden (Ein Kontakt aus MSN wird z.B. das äquivalente MSN-Symbol für den Status \"Anwesend\", \"Abwesend\", \"Beschäftigt\", etc. haben)" + +#: ../data/glade/preferences_window.glade.h:52 +msgid "" +"If not disabled, Gajim will replace ascii smilies like ':)' with equivalent " +"animated or static graphical emoticons" +msgstr "" +"Wenn nicht deaktivert, wird Gajim ASCII-Smilies wie ':)' mit äquivalenten " +"graphischen Emoticons ersetzen" + +#: ../data/glade/preferences_window.glade.h:53 +msgid "Ma_nage..." +msgstr "_Verwalte ..." + +#: ../data/glade/preferences_window.glade.h:54 +msgid "" +"Never\n" +"Always\n" +"Per account\n" +"Per type" +msgstr "" +"Niemals\n" +"Immer\n" +"Pro Account\n" +"Pro Typ" + +#: ../data/glade/preferences_window.glade.h:58 +msgid "Notify me about contacts that: " +msgstr "Ãœber Kontakte benachrichtigen, die sich " + +#: ../data/glade/preferences_window.glade.h:59 +msgid "Notify on new _GMail email" +msgstr "Ãœber neue _Gmail E-Mail benachrichtigen" + +#: ../data/glade/preferences_window.glade.h:60 +msgid "On every _message" +msgstr "In jeder _Zeile" + +#: ../data/glade/preferences_window.glade.h:61 +msgid "One message _window:" +msgstr "Ein _Nachrichtenfenster:" + +#: ../data/glade/preferences_window.glade.h:62 +msgid "Play _sounds" +msgstr "_Klänge abspielen" + +#: ../data/glade/preferences_window.glade.h:63 +msgid "Preferences" +msgstr "Einstellungen" + +#: ../data/glade/preferences_window.glade.h:64 +msgid "Print time:" +msgstr "Zeit anzeigen:" + +#: ../data/glade/preferences_window.glade.h:65 +msgid "Save _position and size for roster and chat windows" +msgstr "Speichere _Position und Größe der Kontaktliste und Chatfenster" + +#: ../data/glade/preferences_window.glade.h:66 +msgid "Show only in _roster" +msgstr "Nur in der _Kontaktliste anzeigen" + +#: ../data/glade/preferences_window.glade.h:67 +msgid "Sign _in" +msgstr "_anmelden" + +#: ../data/glade/preferences_window.glade.h:68 +msgid "Sign _out" +msgstr "a_bmelden" + +#: ../data/glade/preferences_window.glade.h:69 +msgid "Status" +msgstr "Status" + +#: ../data/glade/preferences_window.glade.h:70 +msgid "T_heme:" +msgstr "T_hema:" + +#: ../data/glade/preferences_window.glade.h:71 +msgid "The auto away status message" +msgstr "Automatische Statusnachricht für Abwesend" + +#: ../data/glade/preferences_window.glade.h:72 +msgid "The auto not available status message" +msgstr "Automatische Statusnachricht für Nicht verfügbar" + +#: ../data/glade/preferences_window.glade.h:73 +msgid "Use _transports iconsets" +msgstr "_Transport-Symbole verwenden" + +#: ../data/glade/preferences_window.glade.h:74 +msgid "Use system _default" +msgstr "Benutze System-_Voreinstellung" + +#: ../data/glade/preferences_window.glade.h:75 +msgid "Use t_rayicon (aka. notification area icon)" +msgstr "Verwende _Trayicon (Benachrichtigungs-Icon)" + +#: ../data/glade/preferences_window.glade.h:76 +msgid "" +"When a new event (message, file transfer request etc..) is received, the " +"following methods may be used to inform you about it. Please note that " +"events about new messages only occur if it is a new message from a contact " +"you are not already chatting with" +msgstr "" +"Wenn ein neues Ereignis (Nachricht, Dateitransferanfrage usw.) empfangen " +"wird, können die folgenden Methoden zur Benachrichtigung verwendet werden. " +"Bitte beachten Sie, dass Ereignisse über neue Nachrichten nur auftreten, " +"wenn Sie eine Nachricht von einem Kontakt erhalten, mit dem Sie nicht " +"bereits chatten" + +#: ../data/glade/preferences_window.glade.h:77 +msgid "When new event is received" +msgstr "Wenn neue Nachricht empfangen wird" + +#: ../data/glade/preferences_window.glade.h:78 +msgid "_Advanced Notifications Control..." +msgstr "_Erweiterter Konfigurations-Editor" + +#: ../data/glade/preferences_window.glade.h:79 +msgid "_After time:" +msgstr "_Nach der Zeit:" + +#: ../data/glade/preferences_window.glade.h:80 +msgid "_Before time:" +msgstr "_Vor der Zeit:" + +#: ../data/glade/preferences_window.glade.h:81 +msgid "_Browser:" +msgstr "_Browser:" + +#: ../data/glade/preferences_window.glade.h:82 +msgid "_File manager:" +msgstr "_Dateimanager:" + +#: ../data/glade/preferences_window.glade.h:83 +msgid "_Font:" +msgstr "_Schriftart:" + +#: ../data/glade/preferences_window.glade.h:84 +msgid "_Highlight misspelled words" +msgstr "Falsch geschriebene Wörter _hervorheben" + +#: ../data/glade/preferences_window.glade.h:85 +msgid "_Ignore events from contacts not in the roster" +msgstr "Ereignisse von Kontakten, die nicht in der Liste sind, _ignorieren" + +#: ../data/glade/preferences_window.glade.h:86 +msgid "_Incoming message:" +msgstr "_Eingehende Nachricht:" + +#: ../data/glade/preferences_window.glade.h:87 +msgid "_Log status changes of contacts" +msgstr "_Logge die Statusveränderungen von Kontakten" + +#: ../data/glade/preferences_window.glade.h:88 +msgid "_Mail client:" +msgstr "_Mail-Programm:" + +#: ../data/glade/preferences_window.glade.h:89 +msgid "_Never" +msgstr "_Nie" + +#: ../data/glade/preferences_window.glade.h:90 +msgid "_Notify me about it" +msgstr "Be_nachrichtigen" + +#: ../data/glade/preferences_window.glade.h:91 +msgid "_Open..." +msgstr "Ö_ffnen ..." + +#: ../data/glade/preferences_window.glade.h:92 +msgid "_Outgoing message:" +msgstr "_Ausgehende Nachricht:" + +#: ../data/glade/preferences_window.glade.h:93 +msgid "_Player:" +msgstr "_Player:" + +#: ../data/glade/preferences_window.glade.h:94 +msgid "_Pop it up" +msgstr "_Öffnen" + +#: ../data/glade/preferences_window.glade.h:95 +msgid "_Reset to Default Colors" +msgstr "Auf Standard-Farben zu_rücksetzen" + +#: ../data/glade/preferences_window.glade.h:96 +msgid "_Sort contacts by status" +msgstr "Kontakte nach Status _sortieren" + +#: ../data/glade/preferences_window.glade.h:97 +msgid "_Status message:" +msgstr "_Statusnachricht:" + +#: ../data/glade/preferences_window.glade.h:98 +msgid "_URL:" +msgstr "_URL:" + +#: ../data/glade/preferences_window.glade.h:99 +msgid "minutes" +msgstr "Minuten" + +#: ../data/glade/preferences_window.glade.h:100 +msgid "Επιλογή μιας γÏαμματοσειÏάς" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:101 +msgid "Επιλογή χÏώματος" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:1 +msgid "Add / Edit a rule" +msgstr "Hinzufügen / Ändern einer Regel" + +#: ../data/glade/privacy_list_edit_window.glade.h:2 +msgid "List of rules" +msgstr "Liste aller Regeln" + +#: ../data/glade/privacy_list_edit_window.glade.h:3 +msgid "Privacy List" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:4 +msgid "Active for this session" +msgstr "Aktiviert für diese Sitzung" + +#: ../data/glade/privacy_list_edit_window.glade.h:5 +msgid "Active on each startup" +msgstr "Bei jedem Programmstart aktiv" + +#: ../data/glade/privacy_list_edit_window.glade.h:6 ../src/config.py:2350 +msgid "All" +msgstr "Alle" + +#: ../data/glade/privacy_list_edit_window.glade.h:7 +msgid "Allow" +msgstr "Erlauben" + +#: ../data/glade/privacy_list_edit_window.glade.h:9 +msgid "JabberID" +msgstr "Jabber-ID:" + +#: ../data/glade/privacy_list_edit_window.glade.h:10 +msgid "Order:" +msgstr "Reihenfolge:" + +#: ../data/glade/privacy_list_edit_window.glade.h:11 ../src/dialogs.py:1761 +msgid "Privacy List" +msgstr "Privatliste" + +#: ../data/glade/privacy_list_edit_window.glade.h:12 +msgid "all by subscription" +msgstr "alle nach Anmeldung" + +#: ../data/glade/privacy_list_edit_window.glade.h:13 +msgid "all in the group" +msgstr "Alle in der Gruppe" + +#: ../data/glade/privacy_list_edit_window.glade.h:14 +msgid "" +"none\n" +"both\n" +"from\n" +"to" +msgstr "" +"keine\n" +"beide\n" +"von\n" +"an" + +#: ../data/glade/privacy_list_edit_window.glade.h:18 +msgid "to send me messages" +msgstr "um mir Nachrichten zu senden" + +#: ../data/glade/privacy_list_edit_window.glade.h:19 +msgid "to send me queries" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:20 +msgid "to send me status" +msgstr "um mir den Status zu senden" + +#: ../data/glade/privacy_list_edit_window.glade.h:21 +msgid "to view my status" +msgstr "um meinen Status zu sehen" + +#: ../data/glade/privacy_lists_first_window.glade.h:1 +msgid "Create your own Privacy Lists" +msgstr "Erstelle eigene Privatliste" + +#: ../data/glade/privacy_lists_first_window.glade.h:2 +msgid "Server-based Privacy Lists" +msgstr "Server-basierte Privatliste" + +#: ../data/glade/remove_account_window.glade.h:1 +msgid "What do you want to do?" +msgstr "Was möchten Sie tun?" + +#: ../data/glade/remove_account_window.glade.h:2 +msgid "Remove account _only from Gajim" +msgstr "Konto entfernen (_nur in Gajim)" + +#: ../data/glade/remove_account_window.glade.h:3 +msgid "Remove account from Gajim and from _server" +msgstr "Konto _entfernen (in Gajim und auf dem Server)" + +#: ../data/glade/roster_contact_context_menu.glade.h:1 +msgid "A_sk to see his/her status" +msgstr "Darum bitten, seinen/ihren _Status zu sehen" + +#: ../data/glade/roster_contact_context_menu.glade.h:2 +msgid "Add Special _Notification" +msgstr "Spezielle Be_nachrichtigung hinzufügen" + +#: ../data/glade/roster_contact_context_menu.glade.h:3 +msgid "Assign Open_PGP Key" +msgstr "Open_PGP-Schlüssel zuweisen" + +#: ../data/glade/roster_contact_context_menu.glade.h:4 +#: ../src/roster_window.py:1619 +msgid "Edit _Groups" +msgstr "_Gruppen bearbeiten" + +#: ../data/glade/roster_contact_context_menu.glade.h:5 +#: ../src/roster_window.py:1577 +msgid "In_vite to" +msgstr "Einladen zu" + +#: ../data/glade/roster_contact_context_menu.glade.h:6 +#: ../data/glade/systray_context_menu.glade.h:1 +msgid "Send Single _Message" +msgstr "Einzelne Nachricht Senden" + +#: ../data/glade/roster_contact_context_menu.glade.h:8 +msgid "Start _Chat" +msgstr "_Chat starten" + +#: ../data/glade/roster_contact_context_menu.glade.h:10 +msgid "_Allow him/her to see my status" +msgstr "Er_laube ihm/ihr, meinen Status zu sehen" + +#: ../data/glade/roster_contact_context_menu.glade.h:11 +msgid "_Forbid him/her to see my status" +msgstr "_Verbiete ihm/ihr, meinen Status zu sehen" + +#: ../data/glade/roster_contact_context_menu.glade.h:13 +#: ../src/roster_window.py:1571 ../src/roster_window.py:1717 +msgid "_Remove from Roster" +msgstr "Entfernen von _Kontaktliste" + +#: ../data/glade/roster_contact_context_menu.glade.h:14 +#: ../src/roster_window.py:1705 +msgid "_Rename" +msgstr "_Umbenennen" + +#: ../data/glade/roster_contact_context_menu.glade.h:15 +msgid "_Subscription" +msgstr "Abonnement" + +#: ../data/glade/roster_window.glade.h:1 +msgid "A_ccounts" +msgstr "_Konten" + +#: ../data/glade/roster_window.glade.h:2 +msgid "Add _Contact" +msgstr "_Kontakt hinzufügen" + +#: ../data/glade/roster_window.glade.h:3 +msgid "File _Transfers" +msgstr "_Dateitransfers" + +#: ../data/glade/roster_window.glade.h:4 +msgid "Frequently Asked Questions (online)" +msgstr "Häufig gestellte Fragen (online)" + +#: ../data/glade/roster_window.glade.h:6 +msgid "Help online" +msgstr "Online-Hilfe" + +#: ../data/glade/roster_window.glade.h:7 +msgid "Profile, Avatar" +msgstr "Profile, Avatar" + +#: ../data/glade/roster_window.glade.h:8 +msgid "Show _Offline Contacts" +msgstr "_Abgemeldete Kontakte anzeigen" + +#: ../data/glade/roster_window.glade.h:11 +msgid "_Contents" +msgstr "In_halte" + +#: ../data/glade/roster_window.glade.h:12 +msgid "_Discover Services" +msgstr "_Dienste durchsuchen" + +#: ../data/glade/roster_window.glade.h:13 ../src/disco.py:1255 +#: ../src/roster_window.py:1697 +msgid "_Edit" +msgstr "_Ändern" + +#: ../data/glade/roster_window.glade.h:14 +msgid "_FAQ" +msgstr "_FAQ" + +#: ../data/glade/roster_window.glade.h:16 +msgid "_Help" +msgstr "_Hilfe" + +#: ../data/glade/roster_window.glade.h:17 +msgid "_Preferences" +msgstr "_Einstellungen" + +#: ../data/glade/roster_window.glade.h:18 +msgid "_Quit" +msgstr "_Beenden" + +#: ../data/glade/service_discovery_window.glade.h:1 +msgid "G_o" +msgstr "_Los" + +#: ../data/glade/service_discovery_window.glade.h:2 +msgid "_Address:" +msgstr "_Adresse:" + +#: ../data/glade/service_discovery_window.glade.h:3 +msgid "_Filter:" +msgstr "_Filter:" + +#: ../data/glade/service_registration_window.glade.h:1 +msgid "Register to" +msgstr "Registrieren auf" + +#: ../data/glade/service_registration_window.glade.h:2 +msgid "_Cancel" +msgstr "_Abbrechen" + +#: ../data/glade/service_registration_window.glade.h:3 +msgid "_OK" +msgstr "_OK" + +#: ../data/glade/single_message_window.glade.h:1 +msgid "0" +msgstr "0" + +#: ../data/glade/single_message_window.glade.h:2 +msgid "From:" +msgstr "Von:" + +#: ../data/glade/single_message_window.glade.h:3 +msgid "Reply to this message" +msgstr "Nachricht beantworten" + +#: ../data/glade/single_message_window.glade.h:4 +msgid "Sen_d" +msgstr "Sen_den" + +#: ../data/glade/single_message_window.glade.h:5 +msgid "Send message" +msgstr "Nachricht senden" + +#: ../data/glade/single_message_window.glade.h:6 +msgid "Send message and close window" +msgstr "Nachricht senden und Fenster schließen" + +#: ../data/glade/single_message_window.glade.h:7 +msgid "Subject:" +msgstr "Thema:" + +#: ../data/glade/single_message_window.glade.h:8 +msgid "To:" +msgstr "An:" + +#: ../data/glade/single_message_window.glade.h:9 +msgid "_Reply" +msgstr "Antwo_rten" + +#: ../data/glade/single_message_window.glade.h:10 +msgid "_Send & Close" +msgstr "_Senden & Schließen" + +#: ../data/glade/subscription_request_window.glade.h:1 +msgid "Authorize contact so he can know when you're connected" +msgstr "Kontakt autorisieren, sodass er sehen kann, wann Sie verbunden sind" + +#: ../data/glade/subscription_request_window.glade.h:2 +msgid "Contact _Info" +msgstr "Kontakt-_Info" + +#: ../data/glade/subscription_request_window.glade.h:3 +msgid "Deny authorization from contact so he cannot know when you're connected" +msgstr "" +"Autorisierung des Kontakts verweigern, sodass er nicht sehen kann, wann Sie " +"verbunden sind" + +#: ../data/glade/subscription_request_window.glade.h:4 +msgid "Subscription Request" +msgstr "Abonnementanfrage" + +#: ../data/glade/subscription_request_window.glade.h:5 +msgid "_Authorize" +msgstr "_Autorisieren" + +#: ../data/glade/subscription_request_window.glade.h:6 +msgid "_Deny" +msgstr "_Ablehnen" + +#: ../data/glade/systray_context_menu.glade.h:2 +msgid "Show All Pending _Events" +msgstr "Zeige alle schwebenden _Ereignisse" + +#: ../data/glade/systray_context_menu.glade.h:3 +msgid "Show _Roster" +msgstr "_Roster anzeigen" + +#: ../data/glade/systray_context_menu.glade.h:4 +msgid "Sta_tus" +msgstr "Sta_tus" + +#. "About" is the text of a tab of vcard window +#: ../data/glade/vcard_information_window.glade.h:2 +msgid "About" +msgstr "Ãœber" + +#: ../data/glade/vcard_information_window.glade.h:3 +msgid "Address" +msgstr "Adresse" + +#. Given Name +#: ../data/glade/vcard_information_window.glade.h:5 +msgid "Ask:" +msgstr "Frage:" + +#: ../data/glade/vcard_information_window.glade.h:6 +msgid "Birthday:" +msgstr "Geburtstag:" + +#: ../data/glade/vcard_information_window.glade.h:7 +msgid "City:" +msgstr "Stadt:" + +#: ../data/glade/vcard_information_window.glade.h:8 +msgid "Client:" +msgstr "Client:" + +#: ../data/glade/vcard_information_window.glade.h:9 +msgid "Company:" +msgstr "Firma:" + +#: ../data/glade/vcard_information_window.glade.h:10 +msgid "Contact" +msgstr "Kontakt" + +#: ../data/glade/vcard_information_window.glade.h:11 +msgid "Country:" +msgstr "Land:" + +#: ../data/glade/vcard_information_window.glade.h:12 +msgid "Department:" +msgstr "Abteilung:" + +#: ../data/glade/vcard_information_window.glade.h:13 +msgid "E-Mail:" +msgstr "E-Mail:" + +#: ../data/glade/vcard_information_window.glade.h:14 +msgid "Extra Address:" +msgstr "Zusatz-Adresse:" + +#. Family Name +#: ../data/glade/vcard_information_window.glade.h:16 +msgid "Family:" +msgstr "Nachname:" + +#. Given Name +#: ../data/glade/vcard_information_window.glade.h:18 +msgid "Given:" +msgstr "Vorname:" + +#: ../data/glade/vcard_information_window.glade.h:19 +msgid "Homepage:" +msgstr "Homepage:" + +#: ../data/glade/vcard_information_window.glade.h:20 +msgid "Jabber ID:" +msgstr "Jabber-ID:" + +#. Middle Name +#: ../data/glade/vcard_information_window.glade.h:22 +msgid "Middle:" +msgstr "Mittelname" + +#: ../data/glade/vcard_information_window.glade.h:23 +msgid "More" +msgstr "Mehr" + +#: ../data/glade/vcard_information_window.glade.h:26 +msgid "OS:" +msgstr "BS:" + +#: ../data/glade/vcard_information_window.glade.h:27 +msgid "Personal Info" +msgstr "Persönliche Details" + +#: ../data/glade/vcard_information_window.glade.h:28 +msgid "Phone No.:" +msgstr "Telefon-Nr.:" + +#: ../data/glade/vcard_information_window.glade.h:29 +msgid "Position:" +msgstr "Position:" + +#: ../data/glade/vcard_information_window.glade.h:30 +msgid "Postal Code:" +msgstr "Postleitzahl:" + +#. Prefix in Name +#: ../data/glade/vcard_information_window.glade.h:32 +msgid "Prefix:" +msgstr "Präfix" + +#: ../data/glade/vcard_information_window.glade.h:33 +msgid "Resource:" +msgstr "Ressource:" + +#: ../data/glade/vcard_information_window.glade.h:34 +msgid "Role:" +msgstr "Rolle:" + +#: ../data/glade/vcard_information_window.glade.h:35 +msgid "State:" +msgstr "Staat:" + +#: ../data/glade/vcard_information_window.glade.h:36 +msgid "Status:" +msgstr "Status:" + +#: ../data/glade/vcard_information_window.glade.h:37 +msgid "Street:" +msgstr "Straße:" + +#. Family Name +#: ../data/glade/vcard_information_window.glade.h:39 +msgid "Subscription:" +msgstr "Abonnement:" + +#. Suffix in Name +#: ../data/glade/vcard_information_window.glade.h:41 +msgid "Suffix:" +msgstr "Suffix:" + +#: ../data/glade/vcard_information_window.glade.h:42 +msgid "Work" +msgstr "Arbeit" + +#: ../data/glade/vcard_information_window.glade.h:43 +msgid "_Log conversation history" +msgstr "Unterhaltungs-Ver_lauf" + +#: ../data/glade/vcard_information_window.glade.h:44 +msgid "_Publish" +msgstr "_Veröffentlichen" + +#: ../data/glade/vcard_information_window.glade.h:45 +msgid "_Retrieve" +msgstr "Ab_rufen" + +#: ../data/glade/xml_console_window.glade.h:1 +msgid "Jabber Traffic" +msgstr "Jabber Verkehrsdaten" + +#: ../data/glade/xml_console_window.glade.h:2 +msgid "XML Input" +msgstr "XML Direkteingabe" + +#. XML Console enable checkbutton +#: ../data/glade/xml_console_window.glade.h:4 +msgid "Enable" +msgstr "Einschalten" + +#. Info/Query make the "IQ" initials. So translate like this 'YourLang/YourLang (Info/Query)'. Thanks (it's a tooltip so width is not a problem) +#: ../data/glade/xml_console_window.glade.h:6 +msgid "Info/Query" +msgstr "Info/Query" + +#. Info/Query: all(?) jabber xml start with Whom do you want to ban?\n" "\n" @@ -369,11 +2547,11 @@ msgstr "" "Wen möchten Sie verbannen?\n" "\n" -#: ../src/config.py:2023 +#: ../src/config.py:2129 msgid "Adding Member..." -msgstr "Füge Mitglied hinzu..." +msgstr "Füge Mitglied hinzu ..." -#: ../src/config.py:2024 +#: ../src/config.py:2130 msgid "" "Whom do you want to make a member?\n" "\n" @@ -381,11 +2559,11 @@ msgstr "" "Wen möchten Sie zum Mitglied machen?\n" "\n" -#: ../src/config.py:2026 +#: ../src/config.py:2132 msgid "Adding Owner..." -msgstr "Füge Besitzer hinzu..." +msgstr "Füge Besitzer hinzu ..." -#: ../src/config.py:2027 +#: ../src/config.py:2133 msgid "" "Whom do you want to make a owner?\n" "\n" @@ -393,11 +2571,11 @@ msgstr "" "Wen möchten Sie zum Besitzer machen?\n" "\n" -#: ../src/config.py:2029 +#: ../src/config.py:2135 msgid "Adding Administrator..." -msgstr "Füge Administrator hinzu..." +msgstr "Füge Administrator hinzu ..." -#: ../src/config.py:2030 +#: ../src/config.py:2136 msgid "" "Whom do you want to make an administrator?\n" "\n" @@ -405,7 +2583,7 @@ msgstr "" "Wen möchten Sie zum Administrator machen?\n" "\n" -#: ../src/config.py:2031 +#: ../src/config.py:2137 msgid "" "Can be one of the following:\n" "1. user@domain/resource (only that resource matches).\n" @@ -420,84 +2598,88 @@ msgstr "" "3 domain (die Domain selbst trifft zu, als auch jeder benutzer@domain,\n" "jede domain/resource oder Adresse, die eine Subdomain enthält." -#: ../src/config.py:2127 +#: ../src/config.py:2234 #, python-format msgid "Removing %s account" msgstr "Entferne Konto %s" -#: ../src/config.py:2144 ../src/roster_window.py:1859 +#: ../src/config.py:2251 ../src/roster_window.py:2145 msgid "Password Required" msgstr "Passwort benötigt" -#: ../src/config.py:2145 ../src/roster_window.py:1860 +#: ../src/config.py:2252 ../src/roster_window.py:2146 #, python-format msgid "Enter your password for account %s" msgstr "Geben Sie ihr Passwort für %s ein" -#: ../src/config.py:2146 ../src/roster_window.py:1861 +#: ../src/config.py:2253 ../src/roster_window.py:2147 msgid "Save password" msgstr "Passwort speichern" -#: ../src/config.py:2159 +#: ../src/config.py:2266 #, python-format msgid "Account \"%s\" is connected to the server" msgstr "Konto \"%s\" ist mit Server verbunden" -#: ../src/config.py:2160 +#: ../src/config.py:2267 msgid "If you remove it, the connection will be lost." msgstr "Wenn Sie es entfernen, wird die Verbindung beendet." -#: ../src/config.py:2295 +#: ../src/config.py:2351 +msgid "Enter and leave only" +msgstr "Nur betreten und verlassen" + +#: ../src/config.py:2421 msgid "New Room" msgstr "Neuer Raum" -#: ../src/config.py:2326 +#: ../src/config.py:2452 msgid "This bookmark has invalid data" msgstr "Dieser Bookmark hat ungültige Daten" -#: ../src/config.py:2327 +#: ../src/config.py:2453 msgid "" "Please be sure to fill out server and room fields or remove this bookmark." msgstr "Bitte Serverfeld und Raumfeld ausfüllen oder Bookmark löschen." -#: ../src/config.py:2564 +#: ../src/config.py:2707 msgid "Invalid username" msgstr "Ungültiger Benutzername" -#: ../src/config.py:2565 +#: ../src/config.py:2708 msgid "You must provide a username to configure this account." msgstr "" "Sie müssen einen Benutzernamen angeben, um diesen Account zu konfigurieren." -#: ../src/config.py:2574 ../src/dialogs.py:1036 +#: ../src/config.py:2717 ../src/dialogs.py:1248 msgid "Invalid password" msgstr "Ungültiges Passwort" -#: ../src/config.py:2575 +#: ../src/config.py:2718 msgid "You must enter a password for the new account." msgstr "Sie müssen ein Passwort für das neue Konto eingeben." -#: ../src/config.py:2579 ../src/dialogs.py:1041 +#: ../src/config.py:2722 ../src/dialogs.py:1253 msgid "Passwords do not match" msgstr "Passwörter stimmen nicht überein" -#: ../src/config.py:2580 ../src/dialogs.py:1042 +#: ../src/config.py:2723 ../src/dialogs.py:1254 msgid "The passwords typed in both fields must be identical." msgstr "Die Passwörter in beiden Feldern müssen identisch sein." -#: ../src/config.py:2599 +#: ../src/config.py:2742 msgid "Duplicate Jabber ID" msgstr "Doppelte Jabber ID" -#: ../src/config.py:2600 +#: ../src/config.py:2743 msgid "This account is already configured in Gajim." msgstr "Dieser Kontakt bwurde in Gajim bereits konfiguriert." -#: ../src/config.py:2617 +#: ../src/config.py:2760 msgid "Account has been added successfully" msgstr "Account wurde erfolgreich hinzugefügt" -#: ../src/config.py:2618 ../src/config.py:2651 +#: ../src/config.py:2761 ../src/config.py:2794 msgid "" "You can set advanced account options by pressing Advanced button, or later " "by clicking in Accounts menuitem under Edit menu from the main window." @@ -506,23 +2688,23 @@ msgstr "" "oder durchklicken des Konto-Menüpunktes im Bearbeiten-Menü des Hauptfensters " "erreichen." -#: ../src/config.py:2650 +#: ../src/config.py:2793 msgid "Your new account has been created successfully" msgstr "Ihr neues Konto wurde erfolgreich erstellt" -#: ../src/config.py:2666 +#: ../src/config.py:2809 msgid "An error occured during account creation" msgstr "Während der Konto-Erstellung ist ein Fehler aufgetreten" -#: ../src/config.py:2723 +#: ../src/config.py:2866 msgid "Account name is in use" msgstr "Kontoname ist schon vergeben" -#: ../src/config.py:2724 +#: ../src/config.py:2867 msgid "You already have an account using this name." msgstr "Sie haben bereits ein Konto mit diesem Namen." -#: ../src/conversation_textview.py:182 +#: ../src/conversation_textview.py:272 msgid "" "Text below this line is what has been said since the last time you paid " "attention to this group chat" @@ -530,391 +2712,502 @@ msgstr "" "Text unterhalb dieser Linie stellt dar, was seit ihrem letzten Besuch in " "diesem Gruppenchat gesagt wurde" -#: ../src/conversation_textview.py:239 +#: ../src/conversation_textview.py:331 #, python-format msgid "Actions for \"%s\"" msgstr "Aktionen für \"%s\"" -#: ../src/conversation_textview.py:251 +#: ../src/conversation_textview.py:343 msgid "Read _Wikipedia Article" msgstr "_Wikipedia-Artikel lesen" -#: ../src/conversation_textview.py:255 +#: ../src/conversation_textview.py:348 msgid "Look it up in _Dictionary" msgstr "Im Wörterbuch _suchen" #. we must have %s in the url if not WIKTIONARY -#: ../src/conversation_textview.py:270 +#: ../src/conversation_textview.py:364 #, python-format msgid "Dictionary URL is missing an \"%s\" and it is not WIKTIONARY" msgstr "In Wörterbuch URL fehlt ein \"%s\" und ist nicht Wiktionary" #. we must have %s in the url -#: ../src/conversation_textview.py:281 +#: ../src/conversation_textview.py:376 #, python-format msgid "Web Search URL is missing an \"%s\"" msgstr "In Websuche URL fehlt ein \"%s\"" -#: ../src/conversation_textview.py:284 +#: ../src/conversation_textview.py:379 msgid "Web _Search for it" msgstr "Im _Internet suchen" -#: ../src/conversation_textview.py:574 +#: ../src/conversation_textview.py:675 msgid "Yesterday" msgstr "Gestern" #. the number is >= 2 #. %i is day in year (1-365), %d (1-31) we want %i -#: ../src/conversation_textview.py:578 +#: ../src/conversation_textview.py:679 #, python-format msgid "%i days ago" msgstr "Vor %i Tagen" #. if we have subject, show it too! -#: ../src/conversation_textview.py:634 +#: ../src/conversation_textview.py:755 #, python-format msgid "Subject: %s\n" msgstr "Thema: %s\n" #. only say that to non Windows users -#: ../src/dbus_support.py:34 +#: ../src/dbus_support.py:32 msgid "D-Bus python bindings are missing in this computer" msgstr "Auf diesem Computer fehlen die Python Bibliotheken für D-Bus" -#: ../src/dbus_support.py:35 +#: ../src/dbus_support.py:33 msgid "D-Bus capabilities of Gajim cannot be used" msgstr "Gajims D-BUS-Möglichkeiten können nicht genutzt werden" -#: ../src/dialogs.py:64 +#: ../src/dialogs.py:57 #, python-format -msgid "Contact's name: %s" +msgid "Contact name: %s" msgstr "Kontaktname: %s" -#: ../src/dialogs.py:66 +#: ../src/dialogs.py:59 #, python-format msgid "JID: %s" msgstr "JID: %s " -#: ../src/dialogs.py:169 +#: ../src/dialogs.py:204 msgid "Group" msgstr "Gruppe" -#: ../src/dialogs.py:176 +#: ../src/dialogs.py:211 msgid "In the group" msgstr "In der Gruppe" -#: ../src/dialogs.py:226 +#: ../src/dialogs.py:261 msgid "KeyID" msgstr "Schlüssel-ID" -#: ../src/dialogs.py:229 +#: ../src/dialogs.py:264 msgid "Contact name" msgstr "Name des Kontakts" -#: ../src/dialogs.py:263 +#: ../src/dialogs.py:298 #, python-format msgid "%s Status Message" msgstr "%s Status-Nachricht" -#: ../src/dialogs.py:265 +#: ../src/dialogs.py:300 msgid "Status Message" msgstr "Status-Nachricht" -#: ../src/dialogs.py:340 +#: ../src/dialogs.py:375 msgid "Save as Preset Status Message" msgstr "Als derzeitige Statusnachricht speichern" -#: ../src/dialogs.py:341 +#: ../src/dialogs.py:376 msgid "Please type a name for this status message" msgstr "Bitte geben Sie einen Namen für diese Statusnachricht ein:" -#: ../src/dialogs.py:369 +#: ../src/dialogs.py:396 +msgid "Jabber ID" +msgstr "Jabber-ID" + +#: ../src/dialogs.py:397 +msgid "AIM Address" +msgstr "AIM-Adresse" + +#: ../src/dialogs.py:398 +msgid "GG Number" +msgstr "GG Nummer" + +#: ../src/dialogs.py:399 +msgid "ICQ Number" +msgstr "ICQ-Nummer" + +#: ../src/dialogs.py:400 +msgid "MSN Address" +msgstr "MSN-Adresse" + +#: ../src/dialogs.py:401 +msgid "Yahoo! Address" +msgstr "Yahoo!-Adresse" + +#: ../src/dialogs.py:436 #, python-format msgid "Please fill in the data of the contact you want to add in account %s" msgstr "" "Bitte füllen Sie die Daten aus für den Kontakt, den Sie dem Konto %s " "hinzufügen wollen" -#: ../src/dialogs.py:371 +#: ../src/dialogs.py:438 msgid "Please fill in the data of the contact you want to add" msgstr "Bitte geben sie die Daten des neuen Kontakts ein" -#. the user can be in mutiple groups, see in all of them -#: ../src/dialogs.py:380 ../src/disco.py:118 ../src/disco.py:119 -#: ../src/disco.py:1258 ../src/roster_window.py:214 -#: ../src/roster_window.py:275 ../src/roster_window.py:310 -#: ../src/roster_window.py:330 ../src/roster_window.py:354 -#: ../src/roster_window.py:2940 ../src/roster_window.py:2942 -#: ../src/systray.py:291 ../src/common/helpers.py:42 +#: ../src/dialogs.py:446 ../src/disco.py:109 ../src/disco.py:110 +#: ../src/disco.py:1252 ../src/roster_window.py:217 +#: ../src/roster_window.py:283 ../src/roster_window.py:319 +#: ../src/roster_window.py:371 ../src/roster_window.py:398 +#: ../src/roster_window.py:3271 ../src/roster_window.py:3273 +#: ../src/common/helpers.py:40 msgid "Transports" msgstr "Transports" -#: ../src/dialogs.py:452 ../src/dialogs.py:458 +#: ../src/dialogs.py:584 ../src/dialogs.py:590 msgid "Invalid User ID" msgstr "Ungültige Benutzer ID" -#: ../src/dialogs.py:459 +#: ../src/dialogs.py:591 msgid "The user ID must not contain a resource." msgstr "Die Benutzer-ID darf keine resource enthalten." -#: ../src/dialogs.py:466 +#: ../src/dialogs.py:605 msgid "Contact already in roster" msgstr "Kontakt bereits im Roster" -#: ../src/dialogs.py:467 +#: ../src/dialogs.py:606 msgid "This contact is already listed in your roster." msgstr "Der Kontakt befindet sich bereit in Ihrem Roster." -#: ../src/dialogs.py:528 +#: ../src/dialogs.py:638 +msgid "User ID" +msgstr "Benutzer-ID" + +#: ../src/dialogs.py:692 msgid "A GTK+ jabber client" msgstr "Ein GTK+ Jabber-Client" -#: ../src/dialogs.py:539 +#: ../src/dialogs.py:693 +msgid "GTK+ Version:" +msgstr "GTK+-Version:" + +#: ../src/dialogs.py:694 +msgid "PyGTK Version:" +msgstr "PyGTK-Version" + +#: ../src/dialogs.py:702 +msgid "Current Developers:" +msgstr "Derzeitige Entwickler:" + +#: ../src/dialogs.py:704 msgid "Past Developers:" msgstr "Frühere Entwickler:" -#: ../src/dialogs.py:543 +#: ../src/dialogs.py:708 msgid "THANKS:" msgstr "DANKE:" -#. remove one english setence +#. remove one english sentence #. and add it manually as translatable -#: ../src/dialogs.py:550 +#: ../src/dialogs.py:714 msgid "Last but not least, we would like to thank all the package maintainers." msgstr "Zuletzt möchten wird gerne allen Paket-Verwaltern danken." #. here you write your name in the form Name FamilyName -#: ../src/dialogs.py:564 +#: ../src/dialogs.py:728 msgid "translator-credits" msgstr "Ins Deutsche übersetzt von Fridtjof Busse" -#: ../src/dialogs.py:826 +#: ../src/dialogs.py:854 +#, python-format +msgid "Unable to bind to port %s." +msgstr "Konnte nicht mit Port %s verbinden." + +#: ../src/dialogs.py:855 +msgid "" +"Maybe you have another running instance of Gajim. File Transfer will be " +"canceled." +msgstr "" +"Möglicherweise läuft bei Ihnen bereits ein Gajim. Der Dateitransfer\n" +"wird abgebrochen." + +#: ../src/dialogs.py:997 #, python-format msgid "Subscription request for account %s from %s" msgstr "Abonnement-Anforderung für Konto %s von %s" -#: ../src/dialogs.py:829 +#: ../src/dialogs.py:1000 #, python-format msgid "Subscription request from %s" msgstr "Abonnement-Anforderung von %s" -#: ../src/dialogs.py:872 +#: ../src/dialogs.py:1044 ../src/roster_window.py:591 +#, python-format +msgid "You are already in room %s" +msgstr "Sie sind bereits im Raum %s" + +#: ../src/dialogs.py:1052 msgid "You can not join a group chat unless you are connected." msgstr "Sie können einem Chatraum erst beitreten, wenn Sie verbunden sind." -#: ../src/dialogs.py:885 +#: ../src/dialogs.py:1065 #, python-format msgid "Join Group Chat with account %s" msgstr "Betrete Chatraum mit Account %s" -#: ../src/dialogs.py:887 ../src/gtkgui.glade.h:177 -msgid "Join Group Chat" -msgstr "Betrete Chatraum" - -#: ../src/dialogs.py:976 +#: ../src/dialogs.py:1158 msgid "Invalid room or server name" msgstr "Ungültiger Raum oder Servername" -#: ../src/dialogs.py:977 +#: ../src/dialogs.py:1159 msgid "The room name or server name has not allowed characters." msgstr "Der Raum- oder Servername enthält ungültige Zeichen." -#: ../src/dialogs.py:996 +#: ../src/dialogs.py:1180 #, python-format msgid "Start Chat with account %s" msgstr "Starte Chat mit Account %s" -#: ../src/dialogs.py:998 +#: ../src/dialogs.py:1182 msgid "Start Chat" msgstr "Chat starten" -#: ../src/dialogs.py:999 +#: ../src/dialogs.py:1183 msgid "" -"Fill in the contact ID of the contact you would like\n" +"Fill in the jid, or nick of the contact you would like\n" "to send a chat message to:" msgstr "" -"Geben Sie die Benutzer-ID des Kontaktes ein,\n" +"Geben Sie die JID oder den Spitznamen des Kontaktes ein,\n" "an den Sie eine Chat-Nachricht schicken wollen:" #. if offline or connecting -#: ../src/dialogs.py:1007 ../src/dialogs.py:1330 ../src/dialogs.py:1450 +#: ../src/dialogs.py:1208 ../src/dialogs.py:1562 ../src/dialogs.py:1686 msgid "Connection not available" msgstr "Verbindung nicht verfügbar" -#: ../src/dialogs.py:1008 ../src/dialogs.py:1331 ../src/dialogs.py:1451 +#: ../src/dialogs.py:1209 ../src/dialogs.py:1563 ../src/dialogs.py:1687 #, python-format msgid "Please make sure you are connected with \"%s\"." msgstr "Vergewissern Sie sich, dass Sie mit \"%s\" verbunden sind." -#: ../src/dialogs.py:1018 +#: ../src/dialogs.py:1218 ../src/dialogs.py:1221 +msgid "Invalid JID" +msgstr "Ungültige JID" + +#: ../src/dialogs.py:1221 +#, python-format +msgid "Unable to parse \"%s\"." +msgstr "Kann \"%s\" nicht parsen." + +#: ../src/dialogs.py:1230 msgid "Without a connection, you can not change your password." msgstr "Sie müssen verbunden sein, um Ihr Passwort zu ändern" -#: ../src/dialogs.py:1037 +#: ../src/dialogs.py:1249 msgid "You must enter a password." msgstr "Sie müssen ein Passwort eingeben." #. img to display #. default value -#: ../src/dialogs.py:1083 ../src/gajim.py:443 ../src/notify.py:129 +#: ../src/dialogs.py:1295 ../src/notify.py:205 ../src/notify.py:366 msgid "Contact Signed In" msgstr "Kontakt hat sich angemeldet" -#: ../src/dialogs.py:1085 ../src/gajim.py:474 ../src/notify.py:131 +#: ../src/dialogs.py:1297 ../src/notify.py:213 ../src/notify.py:368 msgid "Contact Signed Out" msgstr "Kontakt hat sich abgemeldet" #. chat message -#: ../src/dialogs.py:1087 ../src/gajim.py:609 ../src/notify.py:133 +#: ../src/dialogs.py:1299 ../src/notify.py:232 ../src/notify.py:370 msgid "New Message" msgstr "Neue Nachricht" #. single message -#: ../src/dialogs.py:1087 ../src/gajim.py:603 ../src/notify.py:133 +#: ../src/dialogs.py:1299 ../src/notify.py:217 ../src/notify.py:370 msgid "New Single Message" msgstr "Neue einzelne Nachricht" -#: ../src/dialogs.py:1088 ../src/gajim.py:586 ../src/notify.py:134 +#. private message +#: ../src/dialogs.py:1300 ../src/notify.py:224 ../src/notify.py:371 msgid "New Private Message" msgstr "Neue private Nachricht" -#: ../src/dialogs.py:1088 ../src/gajim.py:1049 ../src/notify.py:142 +#: ../src/dialogs.py:1300 ../src/gajim.py:1072 ../src/notify.py:379 msgid "New E-mail" msgstr "Neue E-Mail" -#: ../src/dialogs.py:1090 ../src/gajim.py:1187 ../src/notify.py:136 +#: ../src/dialogs.py:1302 ../src/gajim.py:1204 ../src/notify.py:373 msgid "File Transfer Request" msgstr "Dateitransfer Anfrage" -#: ../src/dialogs.py:1092 ../src/gajim.py:1035 ../src/gajim.py:1164 -#: ../src/notify.py:138 +#: ../src/dialogs.py:1304 ../src/gajim.py:1050 ../src/gajim.py:1180 +#: ../src/notify.py:375 msgid "File Transfer Error" msgstr "Dateitransfer-Fehler" -#: ../src/dialogs.py:1094 ../src/gajim.py:1222 ../src/gajim.py:1244 -#: ../src/gajim.py:1261 ../src/notify.py:140 +#: ../src/dialogs.py:1306 ../src/gajim.py:1240 ../src/gajim.py:1262 +#: ../src/gajim.py:1279 ../src/notify.py:377 msgid "File Transfer Completed" msgstr "Dateitransfer beendet" -#: ../src/dialogs.py:1095 ../src/gajim.py:1225 ../src/notify.py:140 +#: ../src/dialogs.py:1307 ../src/gajim.py:1243 ../src/notify.py:377 msgid "File Transfer Stopped" msgstr "Dateitransfer gestoppt" -#: ../src/dialogs.py:1097 ../src/gajim.py:953 ../src/notify.py:144 +#: ../src/dialogs.py:1309 ../src/gajim.py:948 ../src/notify.py:381 msgid "Groupchat Invitation" msgstr "Gruppenchat-Einladung" -#. FIXME: for Received with should become 'in' -#: ../src/dialogs.py:1262 +#: ../src/dialogs.py:1311 ../src/notify.py:197 ../src/notify.py:383 +msgid "Contact Changed Status" +msgstr "Kontakt hat Status verändert" + +#: ../src/dialogs.py:1492 #, python-format -msgid "Single Message with account %s" +msgid "Single Message using account %s" msgstr "Einzelne Nachricht mit Account %s" -#: ../src/dialogs.py:1264 +#: ../src/dialogs.py:1494 +#, python-format +msgid "Single Message in account %s" +msgstr "Einzelne Nachricht in Account %s" + +#: ../src/dialogs.py:1496 msgid "Single Message" msgstr "Einzelne Nachricht" #. prepare UI for Sending -#: ../src/dialogs.py:1267 +#: ../src/dialogs.py:1499 #, python-format msgid "Send %s" msgstr "Sende %s" #. prepare UI for Receiving -#: ../src/dialogs.py:1290 +#: ../src/dialogs.py:1522 #, python-format msgid "Received %s" msgstr "%s empfangen" #. we create a new blank window to send and we preset RE: and to jid -#: ../src/dialogs.py:1355 +#: ../src/dialogs.py:1589 #, python-format msgid "RE: %s" msgstr "RE: %s" -#: ../src/dialogs.py:1356 +#: ../src/dialogs.py:1590 #, python-format msgid "%s wrote:\n" msgstr "%s schrieb:\n" -#: ../src/dialogs.py:1400 +#: ../src/dialogs.py:1634 #, python-format msgid "XML Console for %s" msgstr "XML Konsole für %s" -#: ../src/dialogs.py:1402 +#: ../src/dialogs.py:1636 msgid "XML Console" msgstr "XML Konsole" +#: ../src/dialogs.py:1755 +#, python-format +msgid "Privacy List %s" +msgstr "Privatliste %s" + +#: ../src/dialogs.py:1759 +#, python-format +msgid "Privacy List for %s" +msgstr "" + +#: ../src/dialogs.py:1851 +msgid "Edit a rule" +msgstr "Eine Regel bearbeiten" + +#: ../src/dialogs.py:1936 +msgid "Add a rule" +msgstr "Eine Regel hinzufügen" + +#: ../src/dialogs.py:2033 +#, python-format +msgid "Privacy Lists for %s" +msgstr "Privatliste für %s" + +#: ../src/dialogs.py:2035 +msgid "Privacy Lists" +msgstr "Privatlist" + #. FIXME: use nickname instead of contact_jid -#: ../src/dialogs.py:1488 +#: ../src/dialogs.py:2124 #, python-format msgid "%(contact_jid)s has invited you to %(room_jid)s room" msgstr "%(contact_jid)s hat Sie in %(room_jid)s eingeladen" #. only if not None and not '' -#: ../src/dialogs.py:1494 +#: ../src/dialogs.py:2130 #, python-format msgid "Comment: %s" msgstr "Kommentar: %s" -#: ../src/dialogs.py:1554 +#: ../src/dialogs.py:2193 msgid "Choose Sound" msgstr "Sound wählen" -#: ../src/dialogs.py:1564 ../src/dialogs.py:1607 +#: ../src/dialogs.py:2203 ../src/dialogs.py:2248 msgid "All files" msgstr "Alle Dateien" -#: ../src/dialogs.py:1569 +#: ../src/dialogs.py:2208 msgid "Wav Sounds" msgstr "Wav Dateien" -#: ../src/dialogs.py:1597 +#: ../src/dialogs.py:2238 msgid "Choose Image" msgstr "Bild auswählen" -#: ../src/dialogs.py:1612 +#: ../src/dialogs.py:2253 msgid "Images" msgstr "Bilder" -#: ../src/dialogs.py:1658 +#: ../src/dialogs.py:2298 #, python-format msgid "When %s becomes:" msgstr "Wenn %s wird:" -#: ../src/dialogs.py:1660 +#: ../src/dialogs.py:2300 #, python-format msgid "Adding Special Notification for %s" msgstr "Füge speziellen Hinweis für %s hinzu" -#: ../src/disco.py:117 +#. # means number +#: ../src/dialogs.py:2371 +msgid "#" +msgstr "Nr." + +#: ../src/dialogs.py:2377 +msgid "Condition" +msgstr "Bedingung" + +#: ../src/dialogs.py:2498 +msgid "when I am " +msgstr "wenn Ich bin " + +#: ../src/disco.py:108 msgid "Others" msgstr "Andere" #. conference is a category for listing mostly groupchats in service discovery -#: ../src/disco.py:121 +#: ../src/disco.py:112 msgid "Conference" msgstr "Konferenz" -#: ../src/disco.py:420 +#: ../src/disco.py:412 msgid "Without a connection, you can not browse available services" msgstr "Sie müssen angemeldet sein um Dienste zu durchsuchen" -#: ../src/disco.py:499 +#: ../src/disco.py:490 #, python-format msgid "Service Discovery using account %s" msgstr "Dienste durchsuchen für Konto %s" -#: ../src/disco.py:500 +#: ../src/disco.py:491 msgid "Service Discovery" msgstr "Dienste durchsuchen" -#: ../src/disco.py:637 +#: ../src/disco.py:628 msgid "The service could not be found" msgstr "Der Dienst konnte nicht gefunden werden" -#: ../src/disco.py:638 +#: ../src/disco.py:629 msgid "" "There is no service at the address you entered, or it is not responding. " "Check the address and try again." @@ -922,171 +3215,179 @@ msgstr "" "Es existiert keine Dienst an der Adresse, die sie angegeben haben oder er " "antwortet nicht. Ãœberprüfen Sie die Adresse und versuchen Sie es erneut." -#: ../src/disco.py:642 ../src/disco.py:924 +#: ../src/disco.py:633 ../src/disco.py:915 msgid "The service is not browsable" msgstr "Der Dienst ist nicht durchsuchbar" -#: ../src/disco.py:643 +#: ../src/disco.py:634 msgid "This type of service does not contain any items to browse." msgstr "Dieser Art von Diest enthält keine durchsuchbaren Objekte." -#: ../src/disco.py:723 +#: ../src/disco.py:714 #, python-format msgid "Browsing %s using account %s" msgstr "Durchsuche %s mit Konto %s" -#: ../src/disco.py:762 +#: ../src/disco.py:753 msgid "_Browse" msgstr "_Durchsuche" -#: ../src/disco.py:925 +#: ../src/disco.py:916 msgid "This service does not contain any items to browse." msgstr "Dieser Dienst enthält keine keine durchsuchbaren Objekte." -#: ../src/disco.py:1146 ../src/disco.py:1263 +#: ../src/disco.py:1137 ../src/disco.py:1257 msgid "Re_gister" msgstr "Re_gistrieren" -#: ../src/disco.py:1154 ../src/disco.py:1516 ../src/gtkgui.glade.h:350 -msgid "_Join" -msgstr "_Betreten" - -#: ../src/disco.py:1261 ../src/gtkgui.glade.h:334 ../src/roster_window.py:1462 -msgid "_Edit" -msgstr "_Ändern" - -#: ../src/disco.py:1300 +#: ../src/disco.py:1294 #, python-format msgid "Scanning %d / %d.." msgstr "Durchsuche %d / %d.." #. Users column -#: ../src/disco.py:1482 +#: ../src/disco.py:1476 msgid "Users" msgstr "Benutzer" #. Description column -#: ../src/disco.py:1489 +#: ../src/disco.py:1483 msgid "Description" msgstr "Beschreibung" -#: ../src/filetransfers_window.py:81 +#: ../src/filetransfers_window.py:72 msgid "File" msgstr "Datei" -#: ../src/filetransfers_window.py:96 +#: ../src/filetransfers_window.py:87 msgid "Time" msgstr "Zeit" -#: ../src/filetransfers_window.py:108 +#: ../src/filetransfers_window.py:99 msgid "Progress" msgstr "Fortschritt" -#: ../src/filetransfers_window.py:176 ../src/filetransfers_window.py:238 +#: ../src/filetransfers_window.py:163 ../src/filetransfers_window.py:223 #, python-format msgid "Filename: %s" msgstr "Dateiname: %s" -#: ../src/filetransfers_window.py:178 ../src/filetransfers_window.py:308 +#: ../src/filetransfers_window.py:164 ../src/filetransfers_window.py:291 #, python-format msgid "Size: %s" msgstr "Größe: %s" #. You is a reply of who sent a file #. You is a reply of who received a file -#: ../src/filetransfers_window.py:187 ../src/filetransfers_window.py:197 -#: ../src/history_manager.py:452 +#: ../src/filetransfers_window.py:173 ../src/filetransfers_window.py:183 +#: ../src/history_manager.py:454 msgid "You" msgstr "Sie" -#: ../src/filetransfers_window.py:188 ../src/filetransfers_window.py:240 +#: ../src/filetransfers_window.py:174 #, python-format msgid "Sender: %s" msgstr "Gespeichert in: %s" -#: ../src/filetransfers_window.py:189 ../src/filetransfers_window.py:555 -#: ../src/tooltips.py:617 +#: ../src/filetransfers_window.py:175 ../src/filetransfers_window.py:555 +#: ../src/tooltips.py:621 msgid "Recipient: " msgstr "Empfänger: " -#: ../src/filetransfers_window.py:200 +#: ../src/filetransfers_window.py:186 #, python-format msgid "Saved in: %s" msgstr "Absender: %s" -#: ../src/filetransfers_window.py:203 +#: ../src/filetransfers_window.py:188 msgid "File transfer completed" msgstr "Dateitransfer abgeschlossen" -#: ../src/filetransfers_window.py:205 ../src/gtkgui.glade.h:366 -msgid "_Open Containing Folder" -msgstr "_Öffne Ordner" - -#: ../src/filetransfers_window.py:219 ../src/filetransfers_window.py:227 +#: ../src/filetransfers_window.py:204 ../src/filetransfers_window.py:212 msgid "File transfer canceled" msgstr "Dateitranfer abgebrochen" -#: ../src/filetransfers_window.py:219 ../src/filetransfers_window.py:228 +#: ../src/filetransfers_window.py:204 ../src/filetransfers_window.py:213 msgid "Connection with peer cannot be established." msgstr "Verbindung zum Teilnehmer kann nicht hergestellt werden" -#: ../src/filetransfers_window.py:242 +#: ../src/filetransfers_window.py:224 +#, python-format +msgid "Recipient: %s" +msgstr "Empfänger: %s" + +#: ../src/filetransfers_window.py:225 msgid "File transfer stopped by the contact of the other side" msgstr "Gegenseite hat Dateitransfer gestoppt" -#: ../src/filetransfers_window.py:259 +#: ../src/filetransfers_window.py:242 msgid "Choose File to Send..." -msgstr "Datei auswählen..." +msgstr "Datei auswählen ..." -#. Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector) -#: ../src/filetransfers_window.py:266 ../src/gtkgui.glade.h:390 -msgid "_Send" -msgstr "_Senden" - -#: ../src/filetransfers_window.py:273 +#: ../src/filetransfers_window.py:256 msgid "Gajim cannot access this file" msgstr "Gajim kann auf diese Datei nicht zugreifen" -#: ../src/filetransfers_window.py:274 +#: ../src/filetransfers_window.py:257 msgid "This file is being used by another process." msgstr "Diese Datei wird von einem anderen Prozess verwendet." -#: ../src/filetransfers_window.py:306 +#: ../src/filetransfers_window.py:289 #, python-format msgid "File: %s" msgstr "Datei: %s" -#: ../src/filetransfers_window.py:311 +#: ../src/filetransfers_window.py:294 #, python-format msgid "Type: %s" msgstr "Typ: %s" -#: ../src/filetransfers_window.py:313 +#: ../src/filetransfers_window.py:296 #, python-format msgid "Description: %s" msgstr "Beschreibung: %s" -#: ../src/filetransfers_window.py:314 +#: ../src/filetransfers_window.py:297 #, python-format msgid "%s wants to send you a file:" msgstr "%s möchte ihnen eine Datei senden:" -#: ../src/filetransfers_window.py:329 +#: ../src/filetransfers_window.py:311 +#, python-format +msgid "Cannot overwrite existing file \"%s\"" +msgstr "Kann existierende Datei \"%s\" nicht überschreiben" + +#: ../src/filetransfers_window.py:312 +msgid "" +"A file with this name already exists and you do not have permission to " +"overwrite it." +msgstr "Eine Datei dieses Namens existiert bereits, und Sie haben nicht die Rechte, sie zu überschreiben." + +#: ../src/filetransfers_window.py:319 ../src/gtkgui_helpers.py:685 msgid "This file already exists" msgstr "Diese Datei existiert schon" -#: ../src/filetransfers_window.py:329 +#: ../src/filetransfers_window.py:319 ../src/gtkgui_helpers.py:685 msgid "What do you want to do?" msgstr "Was möchten Sie tun?" -#: ../src/filetransfers_window.py:344 +#: ../src/filetransfers_window.py:331 +#, python-format +msgid "Directory \"%s\" is not writable" +msgstr "Verzeichnis \"%s\" ist nicht schreibbar" + +#: ../src/filetransfers_window.py:331 +msgid "You do not have permission to create files in this directory." +msgstr "Ihre Benutzerrechte erlauben es Ihnen nicht, in diesem Verzeichnis Dateien anzulegen." + +#: ../src/filetransfers_window.py:341 msgid "Save File as..." -msgstr "Datei speichern unter..." +msgstr "Datei speichern unter ..." #. Print remaining time in format 00:00:00 #. You can change the places of (hours), (minutes), (seconds) - #. they are not translatable. -#: ../src/filetransfers_window.py:419 +#: ../src/filetransfers_window.py:420 #, python-format msgid "%(hours)02.d:%(minutes)02.d:%(seconds)02.d" msgstr "%(hours)02.d:%(minutes)02.d:%(seconds)02.d" @@ -1111,87 +3412,86 @@ msgstr "Datei: " msgid "It is not possible to send empty files" msgstr "Es nicht möglich, leere Dateien zu versenden" -#: ../src/filetransfers_window.py:551 ../src/tooltips.py:498 -#: ../src/tooltips.py:607 +#: ../src/filetransfers_window.py:551 ../src/tooltips.py:492 +#: ../src/tooltips.py:611 msgid "Name: " msgstr "Name: " -#: ../src/filetransfers_window.py:553 ../src/tooltips.py:611 +#: ../src/filetransfers_window.py:553 ../src/tooltips.py:615 msgid "Sender: " msgstr "Absender: " -#: ../src/filetransfers_window.py:742 +#: ../src/filetransfers_window.py:741 msgid "Pause" msgstr "Pause" -#: ../src/filetransfers_window.py:753 ../src/gtkgui.glade.h:328 -msgid "_Continue" -msgstr "_Fortsetzen" - -#: ../src/gajim-remote.py:84 +#: ../src/gajim-remote.py:82 msgid "shows a help on specific command" msgstr "zeige die Hilfe für einen bestimmten Befehl" #. User gets help for the command, specified by this parameter -#: ../src/gajim-remote.py:87 +#: ../src/gajim-remote.py:85 msgid "command" msgstr "Befehl" -#: ../src/gajim-remote.py:88 +#: ../src/gajim-remote.py:86 msgid "show help on command" msgstr "zeige Hilfe für Befehl" -#: ../src/gajim-remote.py:92 +#: ../src/gajim-remote.py:90 msgid "Shows or hides the roster window" msgstr "Ein- oder Ausblenden des Hauptfensters" -#: ../src/gajim-remote.py:96 +#: ../src/gajim-remote.py:94 msgid "Popups a window with the next unread message" msgstr "Zeige Popup-Fenster mit der nächsten ungelesenen Nachricht" -#: ../src/gajim-remote.py:100 +#: ../src/gajim-remote.py:98 msgid "" "Prints a list of all contacts in the roster. Each contact appear on a " "separate line" msgstr "Gibt eine Liste aller Kontakte im Roster aus. Eine Zeile je Kontakt" -#: ../src/gajim-remote.py:102 ../src/gajim-remote.py:115 -#: ../src/gajim-remote.py:125 ../src/gajim-remote.py:138 -#: ../src/gajim-remote.py:159 ../src/gajim-remote.py:189 -#: ../src/gajim-remote.py:197 ../src/gajim-remote.py:204 -#: ../src/gajim-remote.py:211 +#: ../src/gajim-remote.py:100 ../src/gajim-remote.py:114 +#: ../src/gajim-remote.py:124 ../src/gajim-remote.py:137 +#: ../src/gajim-remote.py:151 ../src/gajim-remote.py:172 +#: ../src/gajim-remote.py:202 ../src/gajim-remote.py:211 +#: ../src/gajim-remote.py:218 ../src/gajim-remote.py:225 +#: ../src/gajim-remote.py:236 msgid "account" msgstr "Konto" -#: ../src/gajim-remote.py:102 +#: ../src/gajim-remote.py:100 msgid "show only contacts of the given account" msgstr "zeige nur Kontakte für das gegebene Konto" -#: ../src/gajim-remote.py:107 +#: ../src/gajim-remote.py:105 msgid "Prints a list of registered accounts" msgstr "Gibt eine Liste registrierter Konten aus" -#: ../src/gajim-remote.py:111 +#: ../src/gajim-remote.py:109 msgid "Changes the status of account or accounts" msgstr "Ändere den Status eines oder mehrerer Konten" -#: ../src/gajim-remote.py:113 +#. offline, online, chat, away, xa, dnd, invisible should not be translated +#: ../src/gajim-remote.py:112 msgid "status" msgstr "Status" -#: ../src/gajim-remote.py:113 +#: ../src/gajim-remote.py:112 msgid "one of: offline, online, chat, away, xa, dnd, invisible " msgstr "Eins von: offline, online, chat, away, xa, dnd, invisible " -#: ../src/gajim-remote.py:114 ../src/gajim-remote.py:135 +#: ../src/gajim-remote.py:113 ../src/gajim-remote.py:134 +#: ../src/gajim-remote.py:148 msgid "message" msgstr "Nachricht" -#: ../src/gajim-remote.py:114 +#: ../src/gajim-remote.py:113 msgid "status message" msgstr "Statusnachricht" -#: ../src/gajim-remote.py:115 +#: ../src/gajim-remote.py:114 msgid "" "change status of account \"account\". If not specified, try to change status " "of all accounts that have \"sync with global status\" option set" @@ -1200,151 +3500,177 @@ msgstr "" "aller Konten für die \"Kontostatus mit globalem Status abgleichen\" " "aktiviert ist" -#: ../src/gajim-remote.py:121 +#: ../src/gajim-remote.py:120 msgid "Shows the chat dialog so that you can send messages to a contact" msgstr "" "Zeige Chatfenster, so dass eine Nachricht an einen Kontakt gesendet werden " "kann" -#: ../src/gajim-remote.py:123 +#: ../src/gajim-remote.py:122 msgid "JID of the contact that you want to chat with" msgstr "JID des Kontakts mit Sie chatten möchten" -#: ../src/gajim-remote.py:125 ../src/gajim-remote.py:189 +#: ../src/gajim-remote.py:124 ../src/gajim-remote.py:202 msgid "if specified, contact is taken from the contact list of this account" msgstr "falls angegeben, wird der Kontakt von der Liste dieses Kontos gewählt" -#: ../src/gajim-remote.py:130 +#: ../src/gajim-remote.py:129 msgid "" -"Sends new message to a contact in the roster. Both OpenPGP key and account " -"are optional. If you want to set only 'account', without 'OpenPGP key', just " -"set 'OpenPGP key' to ''." -msgstr "" -"Sende neue Nachricht zu einem Kontakt im Roster. OpenPGP-Schlüssel und Konto " -"sind optional. Falls nur 'Konto' gesetzt werden soll, ohne OpenGPG-" -"Schlüssel, setzen Sie 'OpenGPG-Schlüssel' einfach auf ''." +"Sends new chat message to a contact in the roster. Both OpenPGP key and " +"account are optional. If you want to set only 'account', without 'OpenPGP " +"key', just set 'OpenPGP key' to ''." +msgstr "Sende neue Chat-Nachricht zu einem Kontakt im Roster. OpenPGP-Schlüssel und Konto sind optional. Falls nur 'Konto' gesetzt werden soll, ohne OpenGPG-Schlüssel, setzen Sie 'OpenGPG-Schlüssel' einfach auf ''." -#: ../src/gajim-remote.py:134 +#: ../src/gajim-remote.py:133 ../src/gajim-remote.py:146 msgid "JID of the contact that will receive the message" msgstr "JID des Kontakts, der die Nachricht empfängt" -#: ../src/gajim-remote.py:135 +#: ../src/gajim-remote.py:134 ../src/gajim-remote.py:148 msgid "message contents" msgstr "Nachrichteninhalt" -#: ../src/gajim-remote.py:136 +#: ../src/gajim-remote.py:135 ../src/gajim-remote.py:149 msgid "pgp key" msgstr "PGP-Schlüssel" -#: ../src/gajim-remote.py:136 +#: ../src/gajim-remote.py:135 ../src/gajim-remote.py:149 msgid "if specified, the message will be encrypted using this public key" msgstr "falls angegeben, wird die Nachricht damit verschlüsselt" -#: ../src/gajim-remote.py:138 +#: ../src/gajim-remote.py:137 ../src/gajim-remote.py:151 msgid "if specified, the message will be sent using this account" msgstr "falls angegeben, wird die Nachricht über dieses Konto gesendet" -#: ../src/gajim-remote.py:143 +#: ../src/gajim-remote.py:142 +msgid "" +"Sends new single message to a contact in the roster. Both OpenPGP key and " +"account are optional. If you want to set only 'account', without 'OpenPGP " +"key', just set 'OpenPGP key' to ''." +msgstr "Sende neue Einzel-Nachricht zu einem Kontakt im Roster. OpenPGP-Schlüssel und " +"Konto sind optional. Falls nur 'Konto' gesetzt werden soll, ohne OpenGPG-Schlüssel, " +"lassen Sie 'OpenGPG-Schlüssel' einfach leer." + +#: ../src/gajim-remote.py:147 +msgid "subject" +msgstr "Betreff" + +#: ../src/gajim-remote.py:147 +msgid "message subject" +msgstr "Nachrichten-Betreff" + +#: ../src/gajim-remote.py:156 msgid "Gets detailed info on a contact" msgstr "Zeige detaillierte Informationen über Kontakt" -#: ../src/gajim-remote.py:145 ../src/gajim-remote.py:158 -#: ../src/gajim-remote.py:188 +#: ../src/gajim-remote.py:158 ../src/gajim-remote.py:171 +#: ../src/gajim-remote.py:201 ../src/gajim-remote.py:210 msgid "JID of the contact" msgstr "JID des Kontakts" -#: ../src/gajim-remote.py:149 +#: ../src/gajim-remote.py:162 msgid "Gets detailed info on a account" msgstr "Zeige detaillierte Informationen über ein Konto" -#: ../src/gajim-remote.py:151 +#: ../src/gajim-remote.py:164 msgid "Name of the account" msgstr "Name des Kontos" -#: ../src/gajim-remote.py:155 +#: ../src/gajim-remote.py:168 msgid "Sends file to a contact" msgstr "Sendet dem Kontakt eine Datei" -#: ../src/gajim-remote.py:157 +#: ../src/gajim-remote.py:170 msgid "file" msgstr "Datei" -#: ../src/gajim-remote.py:157 +#: ../src/gajim-remote.py:170 msgid "File path" msgstr "Dateipfad" -#: ../src/gajim-remote.py:159 +#: ../src/gajim-remote.py:172 msgid "if specified, file will be sent using this account" msgstr "Falls angegeben, wird die Nachricht über dieses Konto gesendet" -#: ../src/gajim-remote.py:164 +#: ../src/gajim-remote.py:177 msgid "Lists all preferences and their values" msgstr "Zeige alle Einstellung und ihre Werte" -#: ../src/gajim-remote.py:168 +#: ../src/gajim-remote.py:181 msgid "Sets value of 'key' to 'value'." msgstr "Setze Wert von 'Schlüssel' auf 'Wert'." -#: ../src/gajim-remote.py:170 +#: ../src/gajim-remote.py:183 msgid "key=value" msgstr "key=value" -#: ../src/gajim-remote.py:170 +#: ../src/gajim-remote.py:183 msgid "'key' is the name of the preference, 'value' is the value to set it to" msgstr "" "'key' ist der Name der Einstellung, 'value' ist der Wert der einzustellende " "Wert" -#: ../src/gajim-remote.py:175 +#: ../src/gajim-remote.py:188 msgid "Deletes a preference item" msgstr "Lösche eine Einstellung" -#: ../src/gajim-remote.py:177 +#: ../src/gajim-remote.py:190 msgid "key" msgstr "Schlüssel" -#: ../src/gajim-remote.py:177 +#: ../src/gajim-remote.py:190 msgid "name of the preference to be deleted" msgstr "Name der zu löschenden Einstellung" -#: ../src/gajim-remote.py:181 +#: ../src/gajim-remote.py:194 msgid "Writes the current state of Gajim preferences to the .config file" msgstr "Schreibe die aktuellen Gajim-Einstellung in die Konfigurationsdatei" -#: ../src/gajim-remote.py:186 +#: ../src/gajim-remote.py:199 msgid "Removes contact from roster" msgstr "Entfernt den Kontakt aus dem Roster" -#: ../src/gajim-remote.py:195 +#: ../src/gajim-remote.py:208 msgid "Adds contact to roster" msgstr "Fügt Kontakt zum Roster hinzu" -#: ../src/gajim-remote.py:197 -msgid "Adds new contact to this account." +#: ../src/gajim-remote.py:210 +msgid "jid" +msgstr "JID" + +#: ../src/gajim-remote.py:211 +msgid "Adds new contact to this account" msgstr "Fügt neuen Kontakt zu diesem Konto hinzu" -#: ../src/gajim-remote.py:202 +#: ../src/gajim-remote.py:216 msgid "Returns current status (the global one unless account is specified)" msgstr "" "Gibt derzeitigen Status zurück·(der globale, außer, es wird ein Account " "spezifiziert)" -#: ../src/gajim-remote.py:209 +#: ../src/gajim-remote.py:223 msgid "" "Returns current status message(the global one unless account is specified)" msgstr "" "Gibt derzeitige Statusnachricht zurück·(der globale, außer, es wird ein " "Account angegeben)" -#: ../src/gajim-remote.py:216 +#: ../src/gajim-remote.py:230 msgid "Returns number of unreaded messages" msgstr "Gibt die Zahl der ungelesenen Nachrichten zurück" +#: ../src/gajim-remote.py:234 +msgid "Open 'Start Chat' dialog" +msgstr "" + #: ../src/gajim-remote.py:236 +msgid "Starts chat, using this account" +msgstr "Starte Chat mit diesem Account" + +#: ../src/gajim-remote.py:256 msgid "Missing argument \"contact_jid\"" msgstr "Fehlendes Argument \"contact_jid\"" -#: ../src/gajim-remote.py:255 +#: ../src/gajim-remote.py:275 #, python-format msgid "" "'%s' is not in your roster.\n" @@ -1353,16 +3679,16 @@ msgstr "" "'%s' ist nicht in ihrer Kontaktliste.\n" "Bitte geben Sie ein Konto zum Senden der Nachricht an." -#: ../src/gajim-remote.py:258 +#: ../src/gajim-remote.py:278 msgid "You have no active account" msgstr "Kein aktives Konto" -#: ../src/gajim-remote.py:301 +#: ../src/gajim-remote.py:321 #, python-format msgid "Unknown D-Bus version: %s" msgstr "Unbekannte D-BUS-Version: %s" -#: ../src/gajim-remote.py:328 +#: ../src/gajim-remote.py:348 #, python-format msgid "" "Usage: %s %s %s \n" @@ -1371,16 +3697,16 @@ msgstr "" "Verwendung: %s %s %s \n" "\t %s" -#: ../src/gajim-remote.py:331 +#: ../src/gajim-remote.py:351 msgid "Arguments:" msgstr "Parameter:" -#: ../src/gajim-remote.py:335 +#: ../src/gajim-remote.py:355 #, python-format msgid "%s not found" msgstr "%s nicht gefunden" -#: ../src/gajim-remote.py:339 +#: ../src/gajim-remote.py:359 #, python-format msgid "" "Usage: %s command [arguments]\n" @@ -1389,7 +3715,7 @@ msgstr "" "Verwendung: %s Befehl [Argumente]\n" "Befehl ist einer von:\n" -#: ../src/gajim-remote.py:413 +#: ../src/gajim-remote.py:433 #, python-format msgid "" "Argument \"%s\" is not specified. \n" @@ -1398,31 +3724,31 @@ msgstr "" "Argument \"%s\" wurde nicht angegeben. \n" "Geben Sie \"%s help %s\" ein für Hilfe" -#: ../src/gajim.py:48 +#: ../src/gajim.py:56 msgid "Gajim needs Xserver to run. Quiting..." -msgstr "Gajim benötigt einen laufenden Xserver. Breche ab..." +msgstr "Gajim benötigt einen laufenden Xserver. Breche ab ..." -#: ../src/gajim.py:52 +#: ../src/gajim.py:60 msgid "Gajim needs PyGTK 2.6 or above" msgstr "Gajim benötigt PyGTK 2.6 oder höher" -#: ../src/gajim.py:53 +#: ../src/gajim.py:61 msgid "Gajim needs PyGTK 2.6 or above to run. Quiting..." -msgstr "Gajim benötigt PyGTK 2.6 oder höher. Beende..." +msgstr "Gajim benötigt PyGTK 2.6 oder höher. Beende ..." -#: ../src/gajim.py:55 +#: ../src/gajim.py:63 msgid "Gajim needs GTK 2.6 or above" msgstr "Gajim benötigt GTK 2.6 oder höher" -#: ../src/gajim.py:56 +#: ../src/gajim.py:64 msgid "Gajim needs GTK 2.6 or above to run. Quiting..." -msgstr "Gajim benötigt GTK 2.6+. Breche ab..." +msgstr "Gajim benötigt GTK 2.6+. Breche ab ..." -#: ../src/gajim.py:61 +#: ../src/gajim.py:69 msgid "GTK+ runtime is missing libglade support" msgstr "GTK+ runtine fehlt libglade-Unterstützung" -#: ../src/gajim.py:63 +#: ../src/gajim.py:71 #, python-format msgid "" "Please remove your current GTK+ runtime and install the latest stable " @@ -1431,155 +3757,151 @@ msgstr "" "Bitte entfernen Sie Ihre derzeitige GTK+ Laufzeitumgebung und installieren " "Siedie aktuelle Version von %s" -#: ../src/gajim.py:65 +#: ../src/gajim.py:73 msgid "" "Please make sure that GTK+ and PyGTK have libglade support in your system." msgstr "" "Bitte stellen Sie sicher, dass GTK+ und PyGTK auf Ihrem System libglade-" "Unterstützung besitzen." -#: ../src/gajim.py:70 +#: ../src/gajim.py:78 msgid "Gajim needs PySQLite2 to run" msgstr "Gajim benötigt PySQLite2 zum Starten" -#: ../src/gajim.py:235 +#. set the icon to all newly opened wind +#: ../src/gajim.py:159 +msgid "Gajim is already running" +msgstr "Gajim läuft bereits" + +#: ../src/gajim.py:160 +msgid "" +"Another instance of Gajim seems to be running\n" +"Run anyway?" +msgstr "" +"Eine andere Instanz von Gajim schein bereits zu laufen\n" +"Trotzdem starten?" + +#: ../src/gajim.py:261 #, python-format msgid "HTTP (%s) Authorization for %s (id: %s)" msgstr "HTTP (%s) Autorisierung für %s (id: %s)" -#: ../src/gajim.py:236 +#: ../src/gajim.py:262 msgid "Do you accept this request?" msgstr "Akzeptieren Sie diese Anfrage?" -#: ../src/gajim.py:438 +#: ../src/gajim.py:590 #, python-format -msgid "%(nickname)s Signed In" -msgstr "%(nickname)s·angemeldet" +msgid "Subject: %s" +msgstr "Thema: %s" -#: ../src/gajim.py:469 -#, python-format -msgid "%(nickname)s Signed Out" -msgstr "%(nickname)s abgemeldet" - -#: ../src/gajim.py:583 -#, python-format -msgid "New Private Message from room %s" -msgstr "Neue private Nachricht von Raum %s" - -#: ../src/gajim.py:584 -#, python-format -msgid "%(nickname)s: %(message)s" -msgstr "%(nickname)s:·%(message)s" - -#: ../src/gajim.py:606 -#, python-format -msgid "New Single Message from %(nickname)s" -msgstr "Neue einzelne Nachricht von %(nickname)s" - -#: ../src/gajim.py:612 -#, python-format -msgid "New Message from %(nickname)s" -msgstr "Neue Nachricht von %(nickname)s" - -#: ../src/gajim.py:660 +#: ../src/gajim.py:633 #, python-format msgid "error while sending %s ( %s )" msgstr "Fehler beim Senden von %s ( %s )" -#: ../src/gajim.py:700 +#: ../src/gajim.py:673 msgid "Authorization accepted" msgstr "Autorisierung akzeptiert" -#: ../src/gajim.py:701 +#: ../src/gajim.py:674 #, python-format msgid "The contact \"%s\" has authorized you to see his or her status." msgstr "Kontakt \"%s\" hat Sie autorisiert seinen oder ihren Staus zu sehen." -#: ../src/gajim.py:709 +#: ../src/gajim.py:682 #, python-format msgid "Contact \"%s\" removed subscription from you" msgstr "Kontakt \"%s\" hat das Abonnement zurückgezogen" -#: ../src/gajim.py:710 +#: ../src/gajim.py:683 msgid "You will always see him or her as offline." msgstr "Sie werden den Kontakt ab sofort als offline sehen." -#: ../src/gajim.py:736 +#: ../src/gajim.py:726 #, python-format msgid "Contact with \"%s\" cannot be established" msgstr "Kontakt mit \"%s\" konnte nicht hergestellt werden" -#: ../src/gajim.py:737 ../src/common/connection.py:349 +#: ../src/gajim.py:727 ../src/common/connection.py:402 msgid "Check your connection or try again later." msgstr "" "Ãœberprüfen Sie die Verbindung oder versuchen Sie es später noch einmal." -#: ../src/gajim.py:874 ../src/roster_window.py:1012 +#: ../src/gajim.py:871 ../src/roster_window.py:1082 #, python-format msgid "%s is now %s (%s)" msgstr "%s ist jetzt %s (%s)" -#: ../src/gajim.py:963 +#: ../src/gajim.py:958 msgid "Your passphrase is incorrect" msgstr "Ihre Passphrase ist falsch" -#: ../src/gajim.py:964 +#: ../src/gajim.py:959 msgid "You are currently connected without your OpenPGP key." msgstr "Sie wurden ohne ihren GPG-Schlüssel verbunden" #. FIXME: find a better image -#: ../src/gajim.py:1045 +#: ../src/gajim.py:1061 #, python-format msgid "New E-mail on %(gmail_mail_address)s" msgstr "Neue E-Mail auf %(gmail_mail_address)s" -#: ../src/gajim.py:1047 +#: ../src/gajim.py:1063 #, python-format msgid "You have %d new E-mail message" msgid_plural "You have %d new E-mail messages" msgstr[0] "Sie haben %d ungelesene E-Mail-Nachricht" msgstr[1] "Sie haben %d ungelesene E-Mail-Nachrichten" -#: ../src/gajim.py:1185 +#. each message has a 'From', 'Subject' and 'Snippet' field +#: ../src/gajim.py:1068 +#, python-format +msgid "" +"\n" +"From: %(from_address)s" +msgstr "\nVon: %(from_address)s" + +#: ../src/gajim.py:1201 #, python-format msgid "%s wants to send you a file." msgstr "%s möchte ihnen eine Datei senden." -#: ../src/gajim.py:1245 +#: ../src/gajim.py:1263 #, python-format msgid "You successfully received %(filename)s from %(name)s." msgstr "Sie haben %(filename)s erfolgreich von %(name)s erhalten." #. ft stopped -#: ../src/gajim.py:1249 +#: ../src/gajim.py:1267 #, python-format msgid "File transfer of %(filename)s from %(name)s stopped." msgstr "Dateitransfer %(filename)s von %(name)s wurde gestoppt." -#: ../src/gajim.py:1262 +#: ../src/gajim.py:1280 #, python-format msgid "You successfully sent %(filename)s to %(name)s." msgstr "Sie haben%(filename)s erfolgreich an %(name)s gesendet." #. ft stopped -#: ../src/gajim.py:1266 +#: ../src/gajim.py:1284 #, python-format msgid "File transfer of %(filename)s to %(name)s stopped." msgstr "Dateitransfer von %(filename)s an %(name)s wurde gestoppt." -#: ../src/gajim.py:1295 +#: ../src/gajim.py:1313 msgid "vCard publication succeeded" msgstr "vCard erfolgreich veröffentlicht" -#: ../src/gajim.py:1295 +#: ../src/gajim.py:1313 msgid "Your personal information has been published successfully." msgstr "Ihre persönlichen Informationen wurden erfolgreich veröffentlicht." -#: ../src/gajim.py:1304 +#: ../src/gajim.py:1322 msgid "vCard publication failed" msgstr "vCard Veröffentlichung fehlgeschlagen" -#: ../src/gajim.py:1304 +#: ../src/gajim.py:1322 msgid "" "There was an error while publishing your personal information, try again " "later." @@ -1589,142 +3911,143 @@ msgstr "" #. it is good to notify the user #. in case he or she cannot see the output of the console -#: ../src/gajim.py:1634 +#: ../src/gajim.py:1701 msgid "Could not save your settings and preferences" msgstr "Konnte Einstellungen nicht speichern" -#: ../src/gajim.py:1848 +#: ../src/gajim.py:1923 msgid "Session Management support not available (missing gnome.ui module)" msgstr "" "Sitzungsmanagment-Unterstützung nicht verfügbar (fehlendes gnome.ui Modul)" -#: ../src/gajim.py:1878 -msgid "Migrating Logs..." -msgstr "Migriere Logs..." - -#: ../src/gajim.py:1879 -msgid "Please wait while logs are being migrated..." -msgstr "Bitte warten Sie, während die Logs migriert werden..." - -#: ../src/gajim_themes_window.py:67 +#: ../src/gajim_themes_window.py:60 msgid "Theme" msgstr "Thema" #. don't confuse translators -#: ../src/gajim_themes_window.py:149 +#: ../src/gajim_themes_window.py:142 msgid "theme name" msgstr "Name des Themas" -#: ../src/gajim_themes_window.py:166 +#: ../src/gajim_themes_window.py:159 msgid "You cannot delete your current theme" msgstr "Sie können ihr derzeitiges Theme nicht löschen" -#: ../src/gajim_themes_window.py:167 +#: ../src/gajim_themes_window.py:160 msgid "Please first choose another for your current theme." msgstr "Bitte wählen Sie zuerst einen anderen Namen für ihr derzeitiges Theme." -#: ../src/groupchat_control.py:68 +#: ../src/groupchat_control.py:99 msgid "Private Chat" msgstr "Privater Chat" -#: ../src/groupchat_control.py:68 +#: ../src/groupchat_control.py:99 msgid "Private Chats" msgstr "Private Chats" -#: ../src/groupchat_control.py:84 +#: ../src/groupchat_control.py:115 msgid "Sending private message failed" msgstr "Senden privater Nachricht fehlgeschlagen" #. in second %s code replaces with nickname -#: ../src/groupchat_control.py:86 +#: ../src/groupchat_control.py:117 #, python-format msgid "You are no longer in room \"%s\" or \"%s\" has left." msgstr "Sie sind nicht mehr im Raum \"%s\" oder \"%s\" hat den Raum verlassen." -#: ../src/groupchat_control.py:98 +#: ../src/groupchat_control.py:136 msgid "Group Chat" msgstr "Gruppenchat" -#: ../src/groupchat_control.py:98 +#: ../src/groupchat_control.py:136 msgid "Group Chats" msgstr "Gruppenchat" -#: ../src/groupchat_control.py:595 +#: ../src/groupchat_control.py:305 +msgid "Insert Nickname" +msgstr "Spitzname einfügen" + +#: ../src/groupchat_control.py:641 msgid "This room has no subject" msgstr "Dieser Raum hat kein Thema" #. do not print 'kicked by None' -#: ../src/groupchat_control.py:693 +#: ../src/groupchat_control.py:740 #, python-format msgid "%(nick)s has been kicked: %(reason)s" msgstr "%(nick)s wurde rausgeschmissen: %(reason)s" -#: ../src/groupchat_control.py:697 +#: ../src/groupchat_control.py:744 #, python-format msgid "%(nick)s has been kicked by %(who)s: %(reason)s" msgstr "%(nick)s wurde von %(who)s rausgeschmissen: %(reason)s" #. do not print 'banned by None' -#: ../src/groupchat_control.py:704 +#: ../src/groupchat_control.py:751 #, python-format msgid "%(nick)s has been banned: %(reason)s" msgstr "%(nick)s wurde gebannt: %(reason)s" -#: ../src/groupchat_control.py:708 +#: ../src/groupchat_control.py:755 #, python-format msgid "%(nick)s has been banned by %(who)s: %(reason)s" msgstr "%(nick)s wurde von %(who)s gebannt: %(reason)s" -#: ../src/groupchat_control.py:716 +#: ../src/groupchat_control.py:763 #, python-format msgid "You are now known as %s" msgstr "Sie heißen nun %s" -#: ../src/groupchat_control.py:718 +#: ../src/groupchat_control.py:765 #, python-format msgid "%s is now known as %s" msgstr "%s heißt jetzt %s" -#: ../src/groupchat_control.py:757 +#: ../src/groupchat_control.py:843 #, python-format msgid "%s has left" msgstr "%s hat den Raum verlassen" +#: ../src/groupchat_control.py:848 +#, python-format +msgid "%s has joined the room" +msgstr "" + #. No status message -#: ../src/groupchat_control.py:759 ../src/roster_window.py:1015 +#: ../src/groupchat_control.py:850 ../src/roster_window.py:1085 #, python-format msgid "%s is now %s" msgstr "%s ist jetzt %s" -#: ../src/groupchat_control.py:871 ../src/groupchat_control.py:888 -#: ../src/groupchat_control.py:981 ../src/groupchat_control.py:997 +#: ../src/groupchat_control.py:968 ../src/groupchat_control.py:986 +#: ../src/groupchat_control.py:1079 ../src/groupchat_control.py:1095 #, python-format msgid "Nickname not found: %s" msgstr "Spitzname nicht gefunden: %s" -#: ../src/groupchat_control.py:915 +#: ../src/groupchat_control.py:1013 #, python-format msgid "Invited %(contact_jid)s to %(room_jid)s." msgstr "%(contact_jid)s in %(room_jid)s eingeladen" #. %s is something the user wrote but it is not a jid so we inform -#: ../src/groupchat_control.py:922 ../src/groupchat_control.py:952 +#: ../src/groupchat_control.py:1020 ../src/groupchat_control.py:1050 #, python-format msgid "%s does not appear to be a valid JID" msgstr "%s scheint keine gültige JID zu sein" -#: ../src/groupchat_control.py:1019 +#: ../src/groupchat_control.py:1132 #, python-format msgid "No such command: /%s (if you want to send this, prefix it with /say)" msgstr "" "Kein Kommando: /%s (wenn Sie dies senden wollen, setzen Sie /say voran)" -#: ../src/groupchat_control.py:1041 +#: ../src/groupchat_control.py:1154 #, python-format msgid "Commands: %s" msgstr "Kommandos: %s" -#: ../src/groupchat_control.py:1043 +#: ../src/groupchat_control.py:1156 #, python-format msgid "" "Usage: /%s [reason], bans the JID from the room. The nickname " @@ -1737,7 +4060,7 @@ msgstr "" "\" enthält. Wenn die JIDderzeit im Raum ist, wird er/sie/es ebenfalls " "gebannt. Unterstützt KEINE Leerzeichen im Spitznamen." -#: ../src/groupchat_control.py:1049 +#: ../src/groupchat_control.py:1162 #, python-format msgid "" "Usage: /%s , opens a private chat window to the specified occupant." @@ -1745,26 +4068,24 @@ msgstr "" "Bedienung: /%s , öffnet ein privates Chatfenster mit dem " "spezifierten Inhaber." -#: ../src/groupchat_control.py:1053 +#: ../src/groupchat_control.py:1166 #, python-format msgid "Usage: /%s, clears the text window." msgstr "Bedienung: /%s, leert das Textfenster." -#: ../src/groupchat_control.py:1055 +#: ../src/groupchat_control.py:1168 #, python-format msgid "" "Usage: /%s [reason], closes the current window or tab, displaying reason if " "specified." -msgstr "" -"Bedienung: /%s [Grund], schließt das aktuelle Fenster oder Tab, mit Anzeige " -"eines Grundes falls angegeben." +msgstr "Bedienung: /%s [Grund], schließt das aktuelle Fenster oder Tab, mit Anzeige eines Grundes falls angegeben." -#: ../src/groupchat_control.py:1058 +#: ../src/groupchat_control.py:1171 #, python-format msgid "Usage: /%s, hide the chat buttons." msgstr "Verwendung: /%s, versteckt die Chatbuttons." -#: ../src/groupchat_control.py:1060 +#: ../src/groupchat_control.py:1173 #, python-format msgid "" "Usage: /%s [reason], invites JID to the current room, optionally " @@ -1773,7 +4094,7 @@ msgstr "" "Bedienung: /%s [Grund], lädt die JID in den aktuellen Raum, optional " "mit der Angabe eines Grundes." -#: ../src/groupchat_control.py:1064 +#: ../src/groupchat_control.py:1177 #, python-format msgid "" "Usage: /%s @[/nickname], offers to join room@server optionally " @@ -1782,7 +4103,7 @@ msgstr "" "Bedienung: /%s @ [/Spitzname], bietet den Beitritt zu " "Raum@Server an, optional mit Spitznamen." -#: ../src/groupchat_control.py:1068 +#: ../src/groupchat_control.py:1181 #, python-format msgid "" "Usage: /%s [reason], removes the occupant specified by nickname " @@ -1793,7 +4114,7 @@ msgstr "" "Raumes und zeigt optional einen Grund. Unterstützt KEINE Leerzeichen im " "Spitznamen." -#: ../src/groupchat_control.py:1073 +#: ../src/groupchat_control.py:1186 #, python-format msgid "" "Usage: /%s , sends action to the current room. Use third person. (e." @@ -1802,7 +4123,7 @@ msgstr "" "Bedienung: /%s , sendet die Aktion im aktuellen Raum. Verwende " "dritte Person, z.B. /%s explodiert)." -#: ../src/groupchat_control.py:1077 +#: ../src/groupchat_control.py:1190 #, python-format msgid "" "Usage: /%s [message], opens a private message windowand sends " @@ -1812,18 +4133,24 @@ msgstr "" "Nachrichtenfenster und sendet die Nachricht zum Inhaber des angegebenen " "Spitznamen." -#: ../src/groupchat_control.py:1082 +#: ../src/groupchat_control.py:1195 #, python-format msgid "Usage: /%s , changes your nickname in current room." msgstr "Bedienung: /%s , ändert den Spitznamen im aktuellen Raum." -#: ../src/groupchat_control.py:1086 +#: ../src/groupchat_control.py:1199 +#, python-format +msgid "Usage: /%s , display the names of room occupants." +msgstr "" +"Benutzung: /%s , zeigt die Namen der Raumbesucher." + +#: ../src/groupchat_control.py:1203 #, python-format msgid "Usage: /%s [topic], displays or updates the current room topic." msgstr "" "Benutzung: /%s [topic], zeigt oder aktualisiert das derzeitige Raumthema." -#: ../src/groupchat_control.py:1089 +#: ../src/groupchat_control.py:1206 #, python-format msgid "" "Usage: /%s , sends a message without looking for other commands." @@ -1831,82 +4158,82 @@ msgstr "" "Benutzung: /%s , sendet eine Nachricht ohne andere Befehle zu " "beachten." -#: ../src/groupchat_control.py:1092 +#: ../src/groupchat_control.py:1209 #, python-format msgid "No help info for /%s" msgstr "Keine Hilfe vorhanden für /%s" -#: ../src/groupchat_control.py:1128 +#: ../src/groupchat_control.py:1251 #, python-format msgid "Are you sure you want to leave room \"%s\"?" msgstr "Möchten Sie den Raum \"%s\" wirklich verlassen?g" -#: ../src/groupchat_control.py:1129 +#: ../src/groupchat_control.py:1252 msgid "If you close this window, you will be disconnected from this room." msgstr "" "Wenn Sie dieses Fenster schließen, wird die Verbindung zu diesem Raum " "geschlossen." -#: ../src/groupchat_control.py:1133 +#: ../src/groupchat_control.py:1256 msgid "Do _not ask me again" msgstr "_Nicht noch einmal fragen" -#: ../src/groupchat_control.py:1167 +#: ../src/groupchat_control.py:1289 msgid "Changing Subject" msgstr "Thema ändern" -#: ../src/groupchat_control.py:1168 +#: ../src/groupchat_control.py:1290 msgid "Please specify the new subject:" msgstr "Bitte bestimmen Sie ein neues Thema" -#: ../src/groupchat_control.py:1176 +#: ../src/groupchat_control.py:1298 msgid "Changing Nickname" msgstr "Spitzname ändern" -#: ../src/groupchat_control.py:1177 +#: ../src/groupchat_control.py:1299 msgid "Please specify the new nickname you want to use:" msgstr "Bitte geben Sie an, welchen Spitznamen Sie verwenden möchten:" -#: ../src/groupchat_control.py:1202 +#: ../src/groupchat_control.py:1325 msgid "Bookmark already set" msgstr "Bookmark existiert schon" -#: ../src/groupchat_control.py:1203 +#: ../src/groupchat_control.py:1326 #, python-format msgid "Room \"%s\" is already in your bookmarks." msgstr "Der Raum \"%s\" ist schon in den Bookmarks." -#: ../src/groupchat_control.py:1212 +#: ../src/groupchat_control.py:1335 msgid "Bookmark has been added successfully" msgstr "Bookmark wurde erfolgreich hinzugefügt" -#: ../src/groupchat_control.py:1213 +#: ../src/groupchat_control.py:1336 msgid "You can manage your bookmarks via Actions menu in your roster." msgstr "" "Sie können ihre Bookmarks über das Aktionen-Menü in der Kontaktliste " "bearbeiten" #. ask for reason -#: ../src/groupchat_control.py:1322 +#: ../src/groupchat_control.py:1446 #, python-format msgid "Kicking %s" msgstr "%s rausschmeißen" -#: ../src/groupchat_control.py:1323 ../src/groupchat_control.py:1568 +#: ../src/groupchat_control.py:1447 ../src/groupchat_control.py:1725 msgid "You may specify a reason below:" msgstr "Sie können eine Begründung angeben:" #. ask for reason -#: ../src/groupchat_control.py:1567 +#: ../src/groupchat_control.py:1724 #, python-format msgid "Banning %s" msgstr "%s verbannen" -#: ../src/gtkexcepthook.py:52 +#: ../src/gtkexcepthook.py:51 msgid "A programming error has been detected" msgstr "Es wurde ein Programmfehler entdeckt" -#: ../src/gtkexcepthook.py:53 +#: ../src/gtkexcepthook.py:52 msgid "" "It probably is not fatal, but should be reported to the developers " "nonetheless." @@ -1914,1778 +4241,89 @@ msgstr "" "Es ist vermutlich nicht fatal, aber der Fehler sollte trotzdem den " "Entwicklern gemeldet werden" -#: ../src/gtkexcepthook.py:59 +#: ../src/gtkexcepthook.py:58 msgid "_Report Bug" msgstr "Bug melden" -#: ../src/gtkexcepthook.py:82 +#: ../src/gtkexcepthook.py:81 msgid "Details" msgstr "Details" -#. this always tracebacks -#: ../src/gtkgui.glade.h:1 -msgid "0" -msgstr "0" - -#: ../src/gtkgui.glade.h:2 -msgid "" -"Account is being created\n" -"\n" -"Please wait..." -msgstr "" -"Accouunt wird erstellt\n" -"\n" -"Bitte warten..." - -#: ../src/gtkgui.glade.h:5 -msgid "Advanced Configuration Editor" -msgstr "Erweiterter Konfigurations-Editor" - -#: ../src/gtkgui.glade.h:6 -msgid "Applications" -msgstr "Anwendungen" - -#: ../src/gtkgui.glade.h:7 -msgid "Chatstate Tab Colors" -msgstr "Chatstatus Tabellenfarbe" - -#. a header for custom browser/client/file manager. so translate sth like: Custom Settings -#: ../src/gtkgui.glade.h:9 -msgid "Custom" -msgstr "Benutzerdefiniert" - -#: ../src/gtkgui.glade.h:10 -msgid "Description" -msgstr "Beschreibung" - -#: ../src/gtkgui.glade.h:11 -msgid "Format of a line" -msgstr "Format einer Zeile" - -#: ../src/gtkgui.glade.h:12 -msgid "Interface Customization" -msgstr "Benutzerdefiniertes Aussehen" - -#: ../src/gtkgui.glade.h:13 -msgid "Jabber Traffic" -msgstr "Jabber Verkehrsdaten" - -#: ../src/gtkgui.glade.h:14 -msgid "Miscellaneous" -msgstr "Verschiedenes" - -#: ../src/gtkgui.glade.h:15 -msgid "NOTE: You should restart gajim for some setting to take effect" -msgstr "" -"HINWEIS: Sie sollten gajim neustarten, damit alle Änderungen in Kraft " -"treten" - -#: ../src/gtkgui.glade.h:16 -msgid "OpenPGP" -msgstr "OpenPGP" - -#: ../src/gtkgui.glade.h:17 -msgid "Personal Information" -msgstr "Persönliche Informationen" - -#: ../src/gtkgui.glade.h:18 -msgid "Please choose one of the options below:" -msgstr "Bitte wählen Sie eine der Optionen:" - -#: ../src/gtkgui.glade.h:19 -msgid "Please fill in the data for your new account" -msgstr "Bitte geben Sie die Daten für Ihr neues Konto ein" - -#: ../src/gtkgui.glade.h:20 -msgid "Preset Status Messages" -msgstr "Voreingestellte Status-Nachrichten" - -#: ../src/gtkgui.glade.h:21 -msgid "Properties" -msgstr "Eigenschaften" - -#: ../src/gtkgui.glade.h:22 -msgid "Settings" -msgstr "Einstellungen" - -#: ../src/gtkgui.glade.h:23 -msgid "Sounds" -msgstr "Klänge" - -#: ../src/gtkgui.glade.h:24 -msgid "Type your new status message" -msgstr "Geben Sie Ihre neue Statusnachricht ein" - -#: ../src/gtkgui.glade.h:25 -msgid "Visual Notifications" -msgstr "Visuelle Benachrichtigungen" - -#: ../src/gtkgui.glade.h:26 -msgid "What do you want to do?" -msgstr "Was möchten Sie tun?" - -#: ../src/gtkgui.glade.h:27 -msgid "XML Input" -msgstr "XML Direkteingabe" - -#: ../src/gtkgui.glade.h:28 -msgid "A list of active, completed and stopped file transfers" -msgstr "" -"Eine Liste der aktiven, fertigen und angehaltenen Dateitransfers von und zu " -"Ihren Freunden." - -#: ../src/gtkgui.glade.h:29 -msgid "A_ccounts" -msgstr "_Konten" - -#: ../src/gtkgui.glade.h:30 -msgid "A_fter nickname:" -msgstr "Nach dem Spit_znamen:" - -#. "About" is the text of a tab of vcard window -#: ../src/gtkgui.glade.h:32 -msgid "About" -msgstr "Ãœber" - -#: ../src/gtkgui.glade.h:33 -msgid "Accept" -msgstr "Akzeptieren" - -#: ../src/gtkgui.glade.h:34 -msgid "Account" -msgstr "Konto" - -#: ../src/gtkgui.glade.h:35 -msgid "" -"Account\n" -"Group\n" -"Contact\n" -"Banner" -msgstr "" -"Konto\n" -"Gruppe\n" -"Kontakt\n" -"Banner" - -#: ../src/gtkgui.glade.h:39 -msgid "Account Modification" -msgstr "Konto-Änderung" - -#: ../src/gtkgui.glade.h:40 -msgid "Accounts" -msgstr "Konten" - -#: ../src/gtkgui.glade.h:42 -msgid "Add New Contact" -msgstr "Neuen Kontakt hinzufügen" - -#: ../src/gtkgui.glade.h:43 -msgid "Add Special _Notification" -msgstr "Spezielle Be_nachrichtigung hinzufügen" - -#: ../src/gtkgui.glade.h:44 -msgid "Add _Contact" -msgstr "_Kontakt hinzufügen" - -#: ../src/gtkgui.glade.h:45 -msgid "Address" -msgstr "Adresse" - -#: ../src/gtkgui.glade.h:46 -msgid "Advanced" -msgstr "Erweitert" - -#: ../src/gtkgui.glade.h:47 -msgid "Advanced Configuration Editor" -msgstr "Erweiterter Konfigurations-Editor" - -#: ../src/gtkgui.glade.h:48 -msgid "" -"All chat states\n" -"Composing only\n" -"Disabled" -msgstr "" -"Immer\n" -"Nur beim Schreiben\n" -"Deaktiviert" - -#: ../src/gtkgui.glade.h:51 -msgid "Allow _OS information to be sent" -msgstr "Sende _Betriebssystem-Information" - -#: ../src/gtkgui.glade.h:52 -msgid "Allow him/her to see my status" -msgstr "Erlaube ihm/ihr meinen Status zu sehen" - -#: ../src/gtkgui.glade.h:53 -msgid "Allow popup/notifications when I'm _away/na/busy/invisible" -msgstr "" -"Popups/Benachrichtigungen _zulassen, wenn ich abwesend/NA/beschäftigt/" -"unsichtbar bin" - -#: ../src/gtkgui.glade.h:54 -msgid "Also known as iChat style" -msgstr "Auch als iChat-Stil bekannt" - -#: ../src/gtkgui.glade.h:55 -msgid "Ask status message when I:" -msgstr "Erfrage Status-Nachricht beim: " - -#: ../src/gtkgui.glade.h:56 -msgid "Ask to see his/her status" -msgstr "Darum bitten, seinen/ihren Status zu sehen" - -#: ../src/gtkgui.glade.h:57 -msgid "Ask:" -msgstr "Frage:" - -#: ../src/gtkgui.glade.h:58 -msgid "Assign Open_PGP Key" -msgstr "Open_PGP-Schlüssel zuweisen" - -#: ../src/gtkgui.glade.h:59 -msgid "Authorize contact so he can know when you're connected" -msgstr "Kontakt autorisieren, sodass er sehen kann, wann Sie verbunden sind" - -#: ../src/gtkgui.glade.h:60 -msgid "Auto _away after:" -msgstr "Automatisch _abwesend nach:" - -#: ../src/gtkgui.glade.h:61 -msgid "Auto _not available after:" -msgstr "Automatisch _nicht verfügbar nach:" - -#: ../src/gtkgui.glade.h:62 -msgid "Auto join" -msgstr "Automatisch verbinden" - -#: ../src/gtkgui.glade.h:63 -msgid "" -"Autodetect on every Gajim startup\n" -"Always use GNOME default applications\n" -"Always use KDE default applications\n" -"Custom" -msgstr "" -"Bei jedem Programmstart automatisch erkennen\n" -"Immer GNOME Standard-Anwendungen verwenden\n" -"Immer KDE Standard-Anwendungen verwenden\n" -"Benutzerdefiniert" - -#: ../src/gtkgui.glade.h:67 -msgid "Automatically authorize contact" -msgstr "Kontakt automatisch autorisieren" - -#: ../src/gtkgui.glade.h:68 -msgid "Autoreconnect when connection is lost" -msgstr "Automatisch neu verbinden, wenn die Verbindung abbricht" - -#: ../src/gtkgui.glade.h:69 -msgid "B_efore nickname:" -msgstr "Vor d_em Spitznamen:" - -#: ../src/gtkgui.glade.h:70 -msgid "Birthday:" -msgstr "Geburtstag:" - -#: ../src/gtkgui.glade.h:71 -msgid "Bold" -msgstr "Fett" - -#: ../src/gtkgui.glade.h:72 -msgid "Build custom query" -msgstr "Personalisierte Anfrage bauen" - -#: ../src/gtkgui.glade.h:73 -msgid "C_onnect on Gajim startup" -msgstr "Beim Pr_ogrammstart verbinden" - -#: ../src/gtkgui.glade.h:74 -msgid "Cancel file transfer" -msgstr "Dateitransfer abbrechen" - -#: ../src/gtkgui.glade.h:75 -msgid "Cancels the selected file transfer" -msgstr "Bricht den ausgewählten Dateitransfer ab" - -#: ../src/gtkgui.glade.h:76 -msgid "Cancels the selected file transfer and removes incomplete file" -msgstr "" -"Bricht den ausgewählten Dateitransfer ab und löscht unvollständige Daten" - -#: ../src/gtkgui.glade.h:77 -msgid "Chan_ge Password" -msgstr "Pass_wort ändern" - -#: ../src/gtkgui.glade.h:78 -msgid "Change Password" -msgstr "Passwort ändern" - -#: ../src/gtkgui.glade.h:79 -msgid "Change _Nickname" -msgstr "_Spitzname ändern" - -#: ../src/gtkgui.glade.h:80 -msgid "Change _Subject" -msgstr "_Thema ändern" - -#: ../src/gtkgui.glade.h:82 -msgid "Chat state noti_fications:" -msgstr "Sende Statusbenachrichtigungen:" - -#: ../src/gtkgui.glade.h:83 -msgid "" -"Check this option, only if someone you don't have in the roster spams/annoys " -"you. Use with caution, cause it blocks all messages from any contact that is " -"not in the roster" -msgstr "" -"Aktivieren Sie diese Option nur, wenn jemand, der nicht in ihrer Liste ist, " -"sie zuspammt oder belästigt. Verwenden Sie sie mit Vorsicht, da sie alle " -"Nachrichten von allen Kontakten blockiert, die nicht in ihrer Liste sind." - -#: ../src/gtkgui.glade.h:84 -msgid "" -"Check this so Gajim will connect in port 5223 where legacy servers are " -"expected to have SSL capabilities. Note that Gajim uses TLS encryption by " -"default if broadcasted by the server, and with this option enabled TLS will " -"be disabled" -msgstr "" -"Aktivieren Sie diese Option, damit Gajim auf Port 5223 verbindet, auf dem " -"veraltete Server SSL-Fähigkeiten haben. Beachten Sie, dass Gajim " -"standardmäßig TLS-Verschlüsselung benutzt wenn sie vom Server verwendet wird " -"und sie TLS mit dieser Option deaktivieren" - -#: ../src/gtkgui.glade.h:85 -msgid "Choose _Key..." -msgstr "_Schlüssel wählen..." - -#: ../src/gtkgui.glade.h:86 -msgid "City:" -msgstr "Stadt:" - -#: ../src/gtkgui.glade.h:87 -msgid "Clean _up" -msgstr "Aufrä_umen" - -#: ../src/gtkgui.glade.h:88 -msgid "Click to change account's password" -msgstr "Klicken, um das Konto-Passwort zu ändern" - -#: ../src/gtkgui.glade.h:89 -msgid "Click to insert an emoticon (Alt+M)" -msgstr "Klicken Sie, um ein Emoticon einzufügen (Alt+M)" - -#: ../src/gtkgui.glade.h:90 -msgid "Click to see features (like MSN, ICQ transports) of jabber servers" -msgstr "" -"Klicken, um die Fähigkeiten (z.B. MSN, ICQ Transporte) auf Jabber-Servern zu " -"sehen." - -#: ../src/gtkgui.glade.h:91 -msgid "Click to see past conversation in this room" -msgstr "Klicken, um die früheren Unterhaltungen in diesem Raum zu sehen" - -#: ../src/gtkgui.glade.h:92 -msgid "Click to see past conversations with this contact" -msgstr "Klicken, um die früheren Unterhaltungen mit diesem Kontakt zu sehen" - -#: ../src/gtkgui.glade.h:93 -msgid "Client:" -msgstr "Client:" - -#: ../src/gtkgui.glade.h:94 -msgid "Company:" -msgstr "Firma:" - -#: ../src/gtkgui.glade.h:95 -msgid "Composing" -msgstr "Erstellen" - -#: ../src/gtkgui.glade.h:96 -msgid "Configure _Room" -msgstr "_Raum einrichten" - -#: ../src/gtkgui.glade.h:97 -msgid "Connect when I press Finish" -msgstr "verbinde, sobald ich Fertig klicke" - -#: ../src/gtkgui.glade.h:98 -msgid "Connection" -msgstr "Verbindung" - -#: ../src/gtkgui.glade.h:99 -msgid "Contact Information" -msgstr "Kontakt-Information" - -#: ../src/gtkgui.glade.h:100 -msgid "Contact _Info" -msgstr "Kontakt-_Info" - -#: ../src/gtkgui.glade.h:101 -msgid "Conversation History" -msgstr "Unterhaltungs-Verlauf" - -#: ../src/gtkgui.glade.h:102 -msgid "Country:" -msgstr "Land:" - -#: ../src/gtkgui.glade.h:103 -msgid "Default status _iconset:" -msgstr "Standard Status-S_ymbole:" - -#: ../src/gtkgui.glade.h:104 -msgid "Delete MOTD" -msgstr "Lösche MOTD" - -#: ../src/gtkgui.glade.h:105 -msgid "Deletes Message of the Day" -msgstr "Löscht die Nachricht des Tages" - -#: ../src/gtkgui.glade.h:106 -msgid "Deny" -msgstr "Ablehnen" - -#: ../src/gtkgui.glade.h:107 -msgid "Deny authorization from contact so he cannot know when you're connected" -msgstr "" -"Autorisierung des Kontakts verweigern, sodass er nicht sehen kann, wann Sie " -"verbunden sind" - -#: ../src/gtkgui.glade.h:108 -msgid "Department:" -msgstr "Abteilung:" - -#: ../src/gtkgui.glade.h:109 -msgid "Display a_vatars of contacts in roster" -msgstr "Zeige A_vatare von Kontakten im Roster" - -#: ../src/gtkgui.glade.h:110 -msgid "Display status _messages of contacts in roster" -msgstr "Zeige die Status_nachrichten von Kontakten im Roster" - -#: ../src/gtkgui.glade.h:111 -msgid "E-Mail:" -msgstr "E-Mail:" - -#: ../src/gtkgui.glade.h:112 -msgid "E_very 5 minutes" -msgstr "Alle 5 _Minuten" - -#: ../src/gtkgui.glade.h:113 -msgid "Edit Groups" -msgstr "Gruppen bearbeiten" - -#: ../src/gtkgui.glade.h:114 -msgid "Edit Personal Information..." -msgstr "Persönliche _Details bearbeiten..." - -#: ../src/gtkgui.glade.h:115 -msgid "Edit _Groups" -msgstr "_Gruppen bearbeiten" - -#: ../src/gtkgui.glade.h:116 -msgid "Emoticons:" -msgstr "Emoticons:" - -#. XML Console enable checkbutton -#: ../src/gtkgui.glade.h:118 -msgid "Enable" -msgstr "Einschalten" - -#: ../src/gtkgui.glade.h:119 -msgid "Enter it again for confirmation:" -msgstr "Erneut eingeben zur Bestätigung:" - -#: ../src/gtkgui.glade.h:120 -msgid "Enter new password:" -msgstr "Neues Passwort eingeben:" - -#: ../src/gtkgui.glade.h:121 -msgid "Events" -msgstr "Ereignisse" - -#: ../src/gtkgui.glade.h:122 -msgid "Extra Address:" -msgstr "Zusatz-Adresse:" - -#. Family Name -#: ../src/gtkgui.glade.h:124 -msgid "Family:" -msgstr "Nachname:" - -#: ../src/gtkgui.glade.h:125 -msgid "File Transfers" -msgstr "Dateitransfers" - -#: ../src/gtkgui.glade.h:126 -msgid "File _Transfers" -msgstr "_Dateitransfers" - -#: ../src/gtkgui.glade.h:127 -msgid "Filter:" -msgstr "Filter:" - -#: ../src/gtkgui.glade.h:128 -msgid "Font style:" -msgstr "Schriftart:" - -#: ../src/gtkgui.glade.h:129 -msgid "Forbid him/her to see my status" -msgstr "Verbiete ihm/ihr meinen Status zu sehen" - -#: ../src/gtkgui.glade.h:130 -msgid "Format: YYYY-MM-DD" -msgstr "Format: JJJJ-MM-TT" - -#: ../src/gtkgui.glade.h:131 -msgid "Frequently Asked Questions (online)" -msgstr "Häufig gestellte Fragen (online)" - -#: ../src/gtkgui.glade.h:132 -msgid "From:" -msgstr "Von:" - -#: ../src/gtkgui.glade.h:133 -msgid "G_o" -msgstr "_Los" - -#: ../src/gtkgui.glade.h:134 ../src/notify.py:167 ../src/notify.py:189 -#: ../src/notify.py:201 ../src/tooltips.py:339 -msgid "Gajim" -msgstr "Gajim" - -#: ../src/gtkgui.glade.h:135 -msgid "Gajim Themes Customization" -msgstr "Gajim Thema Einstellungen" - -#: ../src/gtkgui.glade.h:136 -msgid "" -"Gajim can send and receive meta-information related to a conversation you " -"may have with a contact. Here you can specify which chatstates you want to " -"send to the other party." -msgstr "" -"Gajim kann Meta-Information, die eine Unterhaltung mit einem Kontakt " -"betrifft, empfangen und versenden. Hier können Sie definieren welche " -"Chatstates Sie Ihrem Gegenüber senden möchten." - -#: ../src/gtkgui.glade.h:137 -msgid "" -"Gajim will automatically show new events by poping up the relative window" -msgstr "" -"Gajim zeigt neue Ereignisse automatisch anzeigen, indem das betreffende " -"Fenster geöffnet wird" - -#: ../src/gtkgui.glade.h:138 -msgid "" -"Gajim will notify you for new events via a popup in the bottom right of the " -"screen" -msgstr "" -"Gajim wird Sie über neue Ereignisse mit einem Popup in der rechten unteren " -"Ecke des Bildschirms benachrichtigen" - -#: ../src/gtkgui.glade.h:139 -msgid "" -"Gajim will notify you via a popup window in the bottom right of the screen " -"about contacts that just signed in" -msgstr "" -"Gajim wird Sie über ein Popup-Fenster in der rechten unteren Ecke des " -"Bildschirmes über Kontakte informieren, die sich gerade angemeldet haben" - -#: ../src/gtkgui.glade.h:140 -msgid "" -"Gajim will notify you via a popup window in the bottom right of the screen " -"about contacts that just signed out" -msgstr "" -"Gajim wird Sie über ein Popup-Fenster in der rechten unteren Bildschirmecke " -"über Kontakte informieren, die sich gerade abgemeldet haben" - -#: ../src/gtkgui.glade.h:141 -msgid "" -"Gajim will only change the icon of the contact that triggered the new event" -msgstr "" -"Gajim wird nur das Symbol des Kontaktes ändern, von dem die neue Nachricht " -"kommt" - -#: ../src/gtkgui.glade.h:142 -msgid "Gajim: Account Creation Wizard" -msgstr "Gajim: Kontoeinrichtungs-Wizard" - -#. user has no group, print him in General -#: ../src/gtkgui.glade.h:143 ../src/roster_window.py:291 -#: ../src/roster_window.py:1183 ../src/roster_window.py:1405 -#: ../src/systray.py:286 -msgid "General" -msgstr "Allgemein" - -#. Given Name -#: ../src/gtkgui.glade.h:145 -msgid "Given:" -msgstr "Vorname:" - -#: ../src/gtkgui.glade.h:146 -msgid "Gone" -msgstr "Weg" - -#: ../src/gtkgui.glade.h:147 -msgid "Group:" -msgstr "Gruppe:" - -#: ../src/gtkgui.glade.h:148 -msgid "HTTP Connect" -msgstr "HTTP Connect" - -#: ../src/gtkgui.glade.h:149 -msgid "Help online" -msgstr "Online-Hilfe" - -#: ../src/gtkgui.glade.h:150 -msgid "Hides the window" -msgstr "Schließt das Fenster" - -#: ../src/gtkgui.glade.h:151 -msgid "Homepage:" -msgstr "Homepage:" - -#: ../src/gtkgui.glade.h:152 -msgid "Hostname: " -msgstr "Hostname: " - -#: ../src/gtkgui.glade.h:153 -msgid "I already have an account I want to use" -msgstr "Ich habe bereits ein Konto, das ich benutzen möchte" - -#: ../src/gtkgui.glade.h:154 -msgid "I want to _register for a new account" -msgstr "Ich möchte ein neues Konto _erstellen" - -#: ../src/gtkgui.glade.h:155 -msgid "I would like to add you to my contact list." -msgstr "Ich würde Dich gerne zu meiner Kontaktliste hinzufügen." - -#: ../src/gtkgui.glade.h:156 -msgid "" -"If checked, Gajim will also broadcast some more IPs except from just your " -"IP, so file transfer has higher chances of working right." -msgstr "" -"Wenn aktiviert, wird Gajim von mehr IPs senden als nur Ihrer eigenen IP, " -"wodurch Datentransfers eine höhere Erfolgswahrscheinlichkeit bekommen." - -#: ../src/gtkgui.glade.h:157 -msgid "" -"If checked, Gajim will display avatars of contacts in roster window and in " -"group chats" -msgstr "" -"Wenn aktiviert, wird Gajim einen Avatar im Roster-Fenster und in " -"Gruppenchats einblenden" - -#: ../src/gtkgui.glade.h:158 -msgid "" -"If checked, Gajim will display status messages of contacts under the contact " -"name in roster window and in group chats" -msgstr "" -"Wenn aktiviert, wird Gajim für jeden Kontakt unter dem Kontaktnamen im " -"Roster und im Gruppenchat-Fenster die Statusnachricht anzeigen" - -#: ../src/gtkgui.glade.h:159 -msgid "If checked, Gajim will join this group chat on startup" -msgstr "Wenn gewählt, tritt Gajim dem Chatraum beim Programmstart bei" - -#: ../src/gtkgui.glade.h:160 -msgid "If checked, Gajim will remember the password for this account" -msgstr "Falls gewählt, speichert Gajim das Passwort für dieses Konto" - -#: ../src/gtkgui.glade.h:161 -msgid "" -"If checked, Gajim will remember the roster and chat window positions in the " -"screen and the sizes of them next time you run it" -msgstr "" -"Wenn gewählt, merkt sich Gajim die Position und Größe der Kontaktliste auf " -"dem Bildschirm" - -#: ../src/gtkgui.glade.h:162 -msgid "" -"If checked, Gajim will send keep-alive packets so it prevents connection " -"timeout which results in disconnection" -msgstr "" -"Wenn aktiviert, sendet Gajim regelmäßig keep-alive-Pakete, um den " -"Verbindungsabbruch aufgrund einer Zeitüberschreitung zu verhindern" - -#: ../src/gtkgui.glade.h:163 -msgid "" -"If checked, Gajim will store the password in ~/.gajim/config with 'read' " -"permission only for you" -msgstr "" -"Wenn Sie diese Option wählen, wird Gajim das Passwort in ~/.gajim/config mit " -"'lese' -Rechten nur für Sie" - -#: ../src/gtkgui.glade.h:164 -msgid "" -"If checked, Gajim will use protocol-specific status icons. (eg. A contact " -"from MSN will have the equivalent msn icon for status online, away, busy, " -"etc...)" -msgstr "" -"Wenn Sie diese Option aktivieren wird Gajim Protokoll-spezifische Symbole " -"verwenden (Ein Kontakt aus MSN wird z.B. das äquivalente MSN-Symbol für den " -"Status \"Anwesend\", \"Abwesend\", \"Beschäftigt\", etc... haben)" - -#: ../src/gtkgui.glade.h:165 -msgid "" -"If checked, Gajim, when launched, will automatically connect to jabber using " -"this account" -msgstr "" -"Wenn Sie diese Option wählen, wird Gajim während des Startvorgangs " -"automatisch zu diesem Konto verbinden" - -#: ../src/gtkgui.glade.h:166 -msgid "" -"If checked, any change to the global status (handled by the combobox at the " -"bottom of the roster window) will change the status of this account " -"accordingly" -msgstr "" -"Wenn gewählt, wird jede Änderung des globalen Status (verwaltet von der " -"Combobox am Fuße des Kontaktfenster) auch den Status dieses Kontakts " -"entsprechend ändern" - -#: ../src/gtkgui.glade.h:167 -msgid "" -"If not disabled, Gajim will replace ascii smilies like ':)' with equivalent " -"animated or static graphical emoticons" -msgstr "" -"Wenn nicht deaktivert, wird Gajim ASCII-Smilies wie ':)' mit äquivalenten " -"graphischen Emoticons ersetzen" - -#: ../src/gtkgui.glade.h:168 -msgid "" -"If you have 2 or more accounts and it is checked, Gajim will list all " -"contacts as if you had one account" -msgstr "" -"Wenn Sie zwei oder mehr Konten haben und diese Option gewählt ist, wird " -"Gajim alle Kontakte auflisten, als hätten Sie ein Konto" - -#: ../src/gtkgui.glade.h:169 -msgid "Inactive" -msgstr "Inaktiv" - -#. Info/Query make the "IQ" initials. So translate like this 'YourLang/YourLang (Info/Query)'. Thanks (it's a tooltip so width is not a problem) -#: ../src/gtkgui.glade.h:171 -msgid "Info/Query" -msgstr "Info/Query" - -#: ../src/gtkgui.glade.h:172 -msgid "Information about you, as stored in the server" -msgstr "Informationen über Sie, wie sie auf dem Server gespeichert sind" - -#: ../src/gtkgui.glade.h:173 -msgid "Invitation Received" -msgstr "Einladung empfangen" - -#: ../src/gtkgui.glade.h:174 -msgid "Italic" -msgstr "Kursiv" - -#: ../src/gtkgui.glade.h:175 -msgid "Jabber" -msgstr "Jabber" - -#: ../src/gtkgui.glade.h:176 -msgid "Jabber ID:" -msgstr "Jabber-ID:" - -#: ../src/gtkgui.glade.h:178 -msgid "Join _Group Chat" -msgstr "_Chatraum beitreten" - -#: ../src/gtkgui.glade.h:179 -msgid "Location" -msgstr "Ort" - -#: ../src/gtkgui.glade.h:180 -msgid "" -"MUC\n" -"Messages" -msgstr "" -"MUC\n" -"Nachrichten" - -#: ../src/gtkgui.glade.h:182 -msgid "" -"MUC Directed\n" -"Messages" -msgstr "" -"MUC gerichtete\n" -"Nachrichten" - -#: ../src/gtkgui.glade.h:184 -msgid "Ma_nage..." -msgstr "_Verwalte..." - -#: ../src/gtkgui.glade.h:185 -msgid "Manage Accounts" -msgstr "Konten Verwalten" - -#: ../src/gtkgui.glade.h:186 -msgid "Manage Bookmarks" -msgstr "Verwalte Bookmarks" - -#: ../src/gtkgui.glade.h:187 -msgid "Manage Proxy Profiles" -msgstr "Proxy Verwaltung" - -#: ../src/gtkgui.glade.h:188 -msgid "Manage..." -msgstr "Verwalten..." - -#. Middle Name -#: ../src/gtkgui.glade.h:190 -msgid "Middle:" -msgstr "Mittelname" - -#: ../src/gtkgui.glade.h:191 -msgid "Mo_derator" -msgstr "Mo_derator" - -#: ../src/gtkgui.glade.h:192 -msgid "More" -msgstr "Mehr" - -#: ../src/gtkgui.glade.h:193 -msgid "Name:" -msgstr "Name:" - -#: ../src/gtkgui.glade.h:194 -msgid "" -"Never\n" -"Always\n" -"Per account\n" -"Per type" -msgstr "" -"Niemals\n" -"Immer\n" -"Pro Account\n" -"Pro Typ" - -#: ../src/gtkgui.glade.h:198 -msgid "Nickname:" -msgstr "Spitzname:" - -#. None means no proxy profile selected -#: ../src/gtkgui.glade.h:201 -msgid "None" -msgstr "Kein" - -#: ../src/gtkgui.glade.h:202 -msgid "Notify me about contacts that: " -msgstr "Ãœber Kontakte benachrichtigen, die sich " - -#: ../src/gtkgui.glade.h:203 -msgid "Notify on new _Gmail e-mail" -msgstr "Ãœber neue _Gmail E-Mail benachrichtigen" - -#: ../src/gtkgui.glade.h:204 -msgid "OS:" -msgstr "BS:" - -#: ../src/gtkgui.glade.h:205 -msgid "On every _message" -msgstr "In jeder _Zeile" - -#: ../src/gtkgui.glade.h:206 -msgid "One message _window:" -msgstr "Ein _Nachrichtenfenster:" - -#: ../src/gtkgui.glade.h:208 -msgid "Pass_word:" -msgstr "Pass_wort:" - -#: ../src/gtkgui.glade.h:209 -msgid "Passphrase" -msgstr "Passphrase" - -#: ../src/gtkgui.glade.h:210 -msgid "Password:" -msgstr "Passwort:" - -#: ../src/gtkgui.glade.h:211 ../src/tooltips.py:645 -msgid "Paused" -msgstr "Unterbrochen" - -#: ../src/gtkgui.glade.h:212 -msgid "Personal Information" -msgstr "Persönliche Details bearbeiten..." - -#: ../src/gtkgui.glade.h:213 -msgid "Phone No.:" -msgstr "Telefon-Nr.:" - -#: ../src/gtkgui.glade.h:214 -msgid "Play _sounds" -msgstr "_Klänge abspielen" - -#: ../src/gtkgui.glade.h:215 -msgid "Port: " -msgstr "Port: " - -#: ../src/gtkgui.glade.h:216 -msgid "Position:" -msgstr "Position:" - -#: ../src/gtkgui.glade.h:217 -msgid "Postal Code:" -msgstr "Postleitzahl:" - -#: ../src/gtkgui.glade.h:218 -msgid "Preferences" -msgstr "Einstellungen" - -#. Prefix in Name -#: ../src/gtkgui.glade.h:220 -msgid "Prefix:" -msgstr "Präfix" - -#: ../src/gtkgui.glade.h:221 -msgid "Preset messages:" -msgstr "Voreingestellte Nachrichten:" - -#: ../src/gtkgui.glade.h:222 -msgid "Print time:" -msgstr "Zeit anzeigen:" - -#: ../src/gtkgui.glade.h:223 -msgid "Priori_ty:" -msgstr "Priori_tät:" - -#: ../src/gtkgui.glade.h:224 -msgid "" -"Priority is used in Jabber to determine who gets the events from the jabber " -"server when two or more clients are connected using the same account; The " -"client with the highest priority gets the events" -msgstr "" -"Die Priorität wird von Jabber verwendet, um festzustellen, wer die " -"Ereignisse des Jabber-Servers bekommt, wenn zwei oder mehr Clients mit dem " -"selben Konto verbunden sind. Der Client mit der höchsten Priorität bekommt " -"die Ereignisse" - -#: ../src/gtkgui.glade.h:225 -msgid "Profile, Avatar" -msgstr "Profile, Avatar" - -#: ../src/gtkgui.glade.h:226 -msgid "Protocol:" -msgstr "Protokoll:" - -#: ../src/gtkgui.glade.h:227 -msgid "Proxy:" -msgstr "Proxy:" - -#: ../src/gtkgui.glade.h:228 -msgid "Query Builder..." -msgstr "Anfrage-Baukasten..." - -#: ../src/gtkgui.glade.h:229 -msgid "Recently:" -msgstr "Kürzlich:" - -#: ../src/gtkgui.glade.h:230 -msgid "Register to" -msgstr "Registrieren auf" - -#: ../src/gtkgui.glade.h:231 -msgid "Remove account _only from Gajim" -msgstr "Konto entfernen (_nur in Gajim)" - -#: ../src/gtkgui.glade.h:232 -msgid "Remove account from Gajim and from _server" -msgstr "Konto _entfernen (in Gajim und auf dem Server)" - -#: ../src/gtkgui.glade.h:233 -msgid "Remove file transfer from the list." -msgstr "Entferne Dateitransfer von Liste" - -#: ../src/gtkgui.glade.h:234 -msgid "Removes completed, canceled and failed file transfers from the list" -msgstr "" -"Entferne beendete, abgebrochene und fehlgeschlagene Dateitransfers von der " -"Liste" - -#: ../src/gtkgui.glade.h:235 -msgid "Reply to this message" -msgstr "Nachricht beantworten" - -#: ../src/gtkgui.glade.h:236 -msgid "Resour_ce: " -msgstr "Ressour_ce: " - -#: ../src/gtkgui.glade.h:237 -msgid "" -"Resource is sent to the Jabber server in order to separate the same JID in " -"two or more parts depending on the number of the clients connected in the " -"same server with the same account. So you might be connected in the same " -"account with resource 'Home' and 'Work' at the same time. The resource which " -"has the highest priority will get the events. (see below)" -msgstr "" -"Die Resource wird zum Jabber-Server geschickt, um die selbe JID in zwei oder " -"mehr Teile zu separieren, abhängig von der Anzahl der Clients die mit dem " -"selben Konto auf dem selben Server verbunden sind. Daher kann man " -"gleichzeitig mit den Ressourcen \"Heim\" und \"Arbeit\" auf das selbe Konto " -"verbinden. Die Ressource mit der höchsten Priorität wird die Nachrichten " -"erhalten (siehe unten)" - -#: ../src/gtkgui.glade.h:238 -msgid "Resource:" -msgstr "Ressource:" - -#: ../src/gtkgui.glade.h:239 -msgid "Role:" -msgstr "Rolle:" - -#: ../src/gtkgui.glade.h:240 -msgid "Room Configuration" -msgstr "Raum-Konfiguration" - -#: ../src/gtkgui.glade.h:241 -msgid "Room:" -msgstr "Raum:" - -#: ../src/gtkgui.glade.h:242 -msgid "Save _passphrase (insecure)" -msgstr "_Passphrase speichern (unsicher)" - -#: ../src/gtkgui.glade.h:243 -msgid "Save _position and size for roster and chat windows" -msgstr "Speichere _Position und Größe der Kontaktliste und Chatfenster" - -#: ../src/gtkgui.glade.h:244 -msgid "Save as Preset..." -msgstr "Speichere als Voreinstellung..." - -#: ../src/gtkgui.glade.h:245 -msgid "Save conversation _logs for all contacts" -msgstr "Unter_haltungsverlauf für alle Kontakte dieses Kontos speichern" - -#: ../src/gtkgui.glade.h:246 -msgid "Save pass_word" -msgstr "Pass_wort speichern" - -#: ../src/gtkgui.glade.h:247 -msgid "Search" -msgstr "Suche" - -#: ../src/gtkgui.glade.h:248 -msgid "Sen_d" -msgstr "Sen_den" - -#: ../src/gtkgui.glade.h:249 -msgid "Send File" -msgstr "Datei Senden" - -#: ../src/gtkgui.glade.h:250 -msgid "Send Single _Message" -msgstr "Einzelne Nachricht Senden" - -#: ../src/gtkgui.glade.h:251 -msgid "Send Single _Message..." -msgstr "Einzelne _Nachricht senden" - -#: ../src/gtkgui.glade.h:252 -msgid "Send _File" -msgstr "_Datei Senden" - -#: ../src/gtkgui.glade.h:253 -msgid "Send keep-alive packets" -msgstr "Sende keep-alive Pakete" - -#: ../src/gtkgui.glade.h:254 -msgid "Send message" -msgstr "Nachricht senden" - -#: ../src/gtkgui.glade.h:255 -msgid "Send message and close window" -msgstr "Nachricht senden und Fenster schließen" - -#: ../src/gtkgui.glade.h:256 -msgid "Sends a message to currently connected users to this server" -msgstr "Sendet eine Nachricht an momentan angemeldete Benutzer des Servers" - -#: ../src/gtkgui.glade.h:257 -msgid "Server:" -msgstr "Server:" - -#: ../src/gtkgui.glade.h:258 -msgid "Servers Features" -msgstr "Fähigkeiten des Servers" - -#: ../src/gtkgui.glade.h:259 -msgid "Set MOTD" -msgstr "Setze MOTD" - -#: ../src/gtkgui.glade.h:260 -msgid "Set _Avatar" -msgstr "_Avatar wählen" - -#: ../src/gtkgui.glade.h:261 -msgid "Set my profile when I connect" -msgstr "Setze mein Profil, wenn ich mich verbinde" - -#: ../src/gtkgui.glade.h:262 -msgid "Sets Message of the Day" -msgstr "Setzt Message of the Day" - -#: ../src/gtkgui.glade.h:263 -msgid "Show All Pending _Events" -msgstr "Zeige alle schwebenden _Ereignisse" - -#: ../src/gtkgui.glade.h:264 -msgid "Show _Offline Contacts" -msgstr "_Abgemeldete Kontakte anzeigen" - -#: ../src/gtkgui.glade.h:265 -msgid "Show _Roster" -msgstr "_Roster anzeigen" - -#: ../src/gtkgui.glade.h:266 -msgid "Show _XML Console" -msgstr "Zeige _XML Konsole" - -#: ../src/gtkgui.glade.h:267 -msgid "Show only in _roster" -msgstr "Nur in der _Kontaktliste anzeigen" - -#: ../src/gtkgui.glade.h:268 -msgid "Shows a list of file transfers between you and other" -msgstr "Zeigt eine Liste von Dateitransfers" - -#: ../src/gtkgui.glade.h:269 -msgid "Sign _in" -msgstr "_anmelden" - -#: ../src/gtkgui.glade.h:270 -msgid "Sign _out" -msgstr "a_bmelden" - -#: ../src/gtkgui.glade.h:271 -msgid "Sta_tus" -msgstr "Sta_tus" - -#: ../src/gtkgui.glade.h:272 -msgid "Start _Chat" -msgstr "_Chat starten" - -#: ../src/gtkgui.glade.h:273 -msgid "State:" -msgstr "Staat:" - -#: ../src/gtkgui.glade.h:274 -msgid "Status" -msgstr "Status" - -#: ../src/gtkgui.glade.h:275 -msgid "Status:" -msgstr "Status:" - -#: ../src/gtkgui.glade.h:276 -msgid "Street:" -msgstr "Straße:" - -#: ../src/gtkgui.glade.h:277 -msgid "Subject:" -msgstr "Thema:" - -#: ../src/gtkgui.glade.h:278 -msgid "Subscription Request" -msgstr "Abonnementanfrage" - -#: ../src/gtkgui.glade.h:279 -msgid "Subscription:" -msgstr "Abonnement:" - -#. Suffix in Name -#: ../src/gtkgui.glade.h:281 -msgid "Suffix:" -msgstr "Suffix:" - -#: ../src/gtkgui.glade.h:282 -msgid "Synch_ronize account status with global status" -msgstr "Konto-Status mit globalem Status abgleichen" - -#: ../src/gtkgui.glade.h:283 -msgid "T_heme:" -msgstr "T_hema:" - -#: ../src/gtkgui.glade.h:284 -msgid "Text _color:" -msgstr "Text_farbe:" - -#: ../src/gtkgui.glade.h:285 -msgid "Text _font:" -msgstr "Schrift_art:" - -#: ../src/gtkgui.glade.h:286 -msgid "The auto away status message" -msgstr "Automatische Statusnachricht für Abwesend" - -#: ../src/gtkgui.glade.h:287 -msgid "The auto not available status message" -msgstr "Automatische Statusnachricht für Nicht verfügbar" - -#: ../src/gtkgui.glade.h:288 -msgid "" -"This action removes single file transfer from the list. If the transfer is " -"active, it is first stopped and then removed" -msgstr "" -"Diese Aktion entfernt einen Dateitransfer von der Liste. Falls der Transfer " -"aktiv ist, wird er erst gestoppt, dann entfernt" - -#: ../src/gtkgui.glade.h:289 -msgid "Title:" -msgstr "Titel:" - -#: ../src/gtkgui.glade.h:290 -msgid "To:" -msgstr "An:" - -#: ../src/gtkgui.glade.h:291 -msgid "Toggle Open_PGP Encryption" -msgstr "OpenG_PG Verschlüsselung aktivieren" - -#: ../src/gtkgui.glade.h:292 -msgid "Type:" -msgstr "Art:" - -#: ../src/gtkgui.glade.h:293 -msgid "Underline" -msgstr "Unterstreichen" - -#: ../src/gtkgui.glade.h:294 -msgid "Update MOTD" -msgstr "MOTD Aktualisieren" - -#: ../src/gtkgui.glade.h:295 -msgid "Updates Message of the Day" -msgstr "Aktualisiert Message of the Day" - -#: ../src/gtkgui.glade.h:296 -msgid "Use _SSL (legacy)" -msgstr "_SSL verwenden" - -#: ../src/gtkgui.glade.h:297 -msgid "Use _transports iconsets" -msgstr "_Transport-Symbole verwenden" - -#: ../src/gtkgui.glade.h:298 -msgid "Use authentication" -msgstr "Verwende Authentifizierung" - -#: ../src/gtkgui.glade.h:299 -msgid "Use custom hostname/port" -msgstr "Verwende benutzerdefinierten Hostname und Port" - -#: ../src/gtkgui.glade.h:300 -msgid "Use file transfer proxies" -msgstr "Verwende Datentransfer-Proxies" - -#: ../src/gtkgui.glade.h:301 -msgid "Use t_rayicon (aka. notification area icon)" -msgstr "Verwende _Trayicon (Benachrichtigungs-Icon)" - -#: ../src/gtkgui.glade.h:302 -msgid "User ID:" -msgstr "Benutzer-ID:" - -#: ../src/gtkgui.glade.h:303 -msgid "When a file transfer is complete show a popup notification" -msgstr "Zeige eine Benachrichtigung, wenn die Datei komplett übertragen wurde." - -#: ../src/gtkgui.glade.h:304 -msgid "" -"When a new event (message, file transfer request etc..) is received, the " -"following methods may be used to inform you about it. Please note that " -"events about new messages only occur if it is a new message from a contact " -"you are not already chatting with" -msgstr "" -"Wenn ein neues Ereignis (Nachricht, Dateitransferanfrage usw.) empfangen " -"wird, können die folgenden Methoden zur Benachrichtigung verwendet werden. " -"Bitte beachten Sie, dass Ereignisse über neue Nachrichten nur auftreten, " -"wenn Sie eine Nachricht von einem Kontakt erhalten, mit dem Sie nicht " -"bereits chatten" - -#: ../src/gtkgui.glade.h:305 -msgid "When new event is received" -msgstr "Wenn neue Nachricht empfangen wird" - -#: ../src/gtkgui.glade.h:306 -msgid "Work" -msgstr "Arbeit" - -#: ../src/gtkgui.glade.h:307 -msgid "" -"You need to have an account in order to connect\n" -"to the Jabber network." -msgstr "" -"Sie müssen ein Konto erstellen, bevor Sie zum Jabber-Netzwerk verbinden\n" -"können." - -#: ../src/gtkgui.glade.h:309 -msgid "Your JID:" -msgstr "Ihre JID:" - -#. Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector) -#: ../src/gtkgui.glade.h:311 -msgid "_Actions" -msgstr "_Aktionen" - -#: ../src/gtkgui.glade.h:312 -msgid "_Add Contact..." -msgstr "Kontakt _Hinzufügen..." - -#: ../src/gtkgui.glade.h:313 -msgid "_Add to Roster" -msgstr "Zur Kont_aktliste hinzufügen" - -#: ../src/gtkgui.glade.h:314 -msgid "_Address:" -msgstr "_Adresse:" - -#: ../src/gtkgui.glade.h:315 -msgid "_Admin" -msgstr "_Admin" - -#: ../src/gtkgui.glade.h:316 -msgid "_Administrator" -msgstr "_Administrator" - -#: ../src/gtkgui.glade.h:317 -msgid "_Advanced" -msgstr "Erweitert" - -#: ../src/gtkgui.glade.h:318 -msgid "_After time:" -msgstr "_Nach der Zeit:" - -#: ../src/gtkgui.glade.h:319 -msgid "_Authorize" -msgstr "_Autorisieren" - -#: ../src/gtkgui.glade.h:320 -msgid "_Background:" -msgstr "_Hintergrund:" - -#: ../src/gtkgui.glade.h:321 -msgid "_Ban" -msgstr "_Verbannen" - -#: ../src/gtkgui.glade.h:322 -msgid "_Before time:" -msgstr "_Vor der Zeit:" - -#: ../src/gtkgui.glade.h:323 -msgid "_Bookmark This Room" -msgstr "Raum zu _Bookmarks hinzufügen" - -#: ../src/gtkgui.glade.h:324 -msgid "_Browser:" -msgstr "_Browser:" - -#: ../src/gtkgui.glade.h:325 -msgid "_Cancel" -msgstr "_Abbrechen" - -#: ../src/gtkgui.glade.h:326 -msgid "_Compact View Alt+C" -msgstr "_Kompakte Ansicht Alt+C" - -#: ../src/gtkgui.glade.h:327 -msgid "_Contents" -msgstr "In_halte" - -#: ../src/gtkgui.glade.h:329 -msgid "_Copy JID/Email Address" -msgstr "Email-Adresse _kopieren" - -#: ../src/gtkgui.glade.h:330 -msgid "_Copy Link Location" -msgstr "Link-Adresse _kopieren" - -#: ../src/gtkgui.glade.h:331 -msgid "_Deny" -msgstr "_Ablehnen" - -#: ../src/gtkgui.glade.h:332 -msgid "_Discover Services" -msgstr "_Dienste durchsuchen" - -#: ../src/gtkgui.glade.h:333 -msgid "_Discover Services..." -msgstr "_Durchsuche Dienste..." - -#: ../src/gtkgui.glade.h:335 -msgid "_FAQ" -msgstr "_FAQ" - -#: ../src/gtkgui.glade.h:336 -msgid "_File manager:" -msgstr "_Dateimanager:" - -#: ../src/gtkgui.glade.h:337 -msgid "_Filter:" -msgstr "_Filter:" - -#: ../src/gtkgui.glade.h:338 -msgid "_Finish" -msgstr "_Beenden" - -#: ../src/gtkgui.glade.h:339 -msgid "_Font:" -msgstr "_Schriftart:" - -#: ../src/gtkgui.glade.h:340 -msgid "_Group Chat" -msgstr "_Gruppenchat" - -#: ../src/gtkgui.glade.h:341 -msgid "_Help" -msgstr "_Hilfe" - -#: ../src/gtkgui.glade.h:342 -msgid "_Highlight misspelled words" -msgstr "Falsch geschriebene Wörter _hervorheben" - -#: ../src/gtkgui.glade.h:343 -msgid "_History" -msgstr "_Verlauf" - -#: ../src/gtkgui.glade.h:344 -msgid "_Host:" -msgstr "_Server:" - -#. Info/Query: all(?) jabber xml start with Welcome to Gajim History Logs Manager\n" -"\n" -"You can select logs from the left and/or search database from below.\n" -"\n" -"WARNING:\n" -"If you plan to do massive deletions, please make sure Gajim is not running. " -"Generally avoid deletions with contacts you currently chat with." -msgstr "" -"Willkommen zum Gajim Verlaufslog-Manager\n" -"\n" -"Sie können Logs links auswählen und/oder unten die Datenbank durchsuchen.\n" -"\n" -"WARNUNG:\n" -"Wenn Sie massiv Daten löschen möchten, stellen Sie sicher, dass Gajim nicht " -"läuft. Vermeiden Sie generell Löschungen von Kontakten, mit denen Sie gerade " -"chatte." +#: ../src/gtkgui_helpers.py:717 +msgid "Extension not supported" +msgstr "Erweiterung wird nicht unterstützt." -#: ../src/history_manager.glade.h:7 -msgid "Delete" -msgstr "Löschen" +#: ../src/gtkgui_helpers.py:718 +#, python-format +msgid "Image cannot be saved in %(type)s format. Save as %(new_filename)s?" +msgstr "Bild kann nicht im %(type)s-Format gespeichert werden. Als %(new_filename)s speichern?" -#: ../src/history_manager.glade.h:8 -msgid "Export" -msgstr "Export" +#: ../src/gtkgui_helpers.py:727 +msgid "Save Image as..." +msgstr "Bild speichern unter ..." -#: ../src/history_manager.glade.h:9 -msgid "Gajim History Logs Manager" -msgstr "Gajim Verlaufs-Logmanager" - -#: ../src/history_manager.glade.h:10 -msgid "_Search Database" -msgstr "_Suche Datenbank" - -#: ../src/history_manager.py:58 +#: ../src/history_manager.py:61 msgid "Cannot find history logs database" msgstr "Kann Verlaufslog-Datenkbank nicht finden" #. holds jid -#: ../src/history_manager.py:102 +#: ../src/history_manager.py:104 msgid "Contacts" msgstr "Kontakte" #. holds time -#: ../src/history_manager.py:115 ../src/history_manager.py:155 -#: ../src/history_window.py:94 +#: ../src/history_manager.py:117 ../src/history_manager.py:157 +#: ../src/history_window.py:85 msgid "Date" msgstr "Datum" #. holds nickname -#: ../src/history_manager.py:121 ../src/history_manager.py:173 +#: ../src/history_manager.py:123 ../src/history_manager.py:175 msgid "Nickname" msgstr "Spitzname" #. holds message -#: ../src/history_manager.py:129 ../src/history_manager.py:161 -#: ../src/history_window.py:102 +#: ../src/history_manager.py:131 ../src/history_manager.py:163 +#: ../src/history_window.py:93 msgid "Message" msgstr "Nachricht" #. holds subject -#: ../src/history_manager.py:136 ../src/history_manager.py:167 +#: ../src/history_manager.py:138 ../src/history_manager.py:169 msgid "Subject" msgstr "Betreff" -#: ../src/history_manager.py:181 +#: ../src/history_manager.py:183 msgid "" "Do you want to clean up the database? (STRONGLY NOT RECOMMENDED IF GAJIM IS " "RUNNING)" msgstr "" "Möchtne Sie die Datenbank säubern? (NICHT EMPFOHLEN WENN GAJIM GERADE LÄUFT)" -#: ../src/history_manager.py:183 +#: ../src/history_manager.py:185 msgid "" "Normally allocated database size will not be freed, it will just become " "reusable. If you really want to reduce database filesize, click YES, else " @@ -3693,144 +4331,172 @@ msgid "" "\n" "In case you click YES, please wait..." msgstr "" -"Der allozierte Datenbankspeicherplatz wird nicht freigegeben, er wird nur " -"wiederverwendbar. Wenn Sie wirklich den Speicherplatz reduzieren möchten, " -"klicken Sie JA, ansonsten NEIN.\n" +"Der allozierte Datenbankspeicherplatz wird nicht freigegeben, er wird nur wiederverwendbar. Wenn Sie wirklich den Speicherplatz reduzieren möchten, klicken Sie JA, ansonsten NEIN.\n" "\n" -"Falls Sie JA klicken, warten Sie bitte einen Augenblick..." +"Falls Sie JA klicken, warten Sie bitte einen Augenblick ..." -#: ../src/history_manager.py:389 +#: ../src/history_manager.py:391 msgid "Exporting History Logs..." -msgstr "Exportiere Verlaufslog..." +msgstr "Exportiere Verlaufslog ..." -#: ../src/history_manager.py:465 +#: ../src/history_manager.py:467 #, python-format msgid "%(who)s on %(time)s said: %(message)s\n" msgstr "%(who)s·sagte um·%(time)s:·%(message)s\n" -#: ../src/history_manager.py:465 +#: ../src/history_manager.py:467 msgid "who" msgstr "wer" -#: ../src/history_manager.py:503 +#: ../src/history_manager.py:505 msgid "Do you really want to delete logs of the selected contact?" msgid_plural "Do you really want to delete logs of the selected contacts?" msgstr[0] "Möchten Sie wirklich alle Logs des ausgewählten Kontakts löschen?" msgstr[1] "Möchten Sie wirklich alle Logs des ausgewählten Kontakte löschen?" -#: ../src/history_manager.py:507 ../src/history_manager.py:543 +#: ../src/history_manager.py:509 ../src/history_manager.py:545 msgid "This is an irreversible operation." msgstr "Dies ist ein unwiderruflicher Vorgang." -#: ../src/history_manager.py:540 +#: ../src/history_manager.py:542 msgid "Do you really want to delete the selected message?" msgid_plural "Do you really want to delete the selected messages?" msgstr[0] "Möchten Sie die ausgewählte Nachricht wirklich löschen?" msgstr[1] "Möchten Sie die ausgewählten Nachrichten wirklich löschen?" -#: ../src/history_window.py:111 ../src/history_window.py:113 +#: ../src/history_window.py:102 ../src/history_window.py:104 #, python-format msgid "Conversation History with %s" msgstr "Unterhaltungs-Verlauf mit %s" -#: ../src/history_window.py:265 +#: ../src/history_window.py:258 #, python-format msgid "%(nick)s is now %(status)s: %(status_msg)s" msgstr "%(nick)s ist jezt %(status)s: %(status_msg)s" -#: ../src/history_window.py:269 +#: ../src/history_window.py:262 ../src/notify.py:192 #, python-format msgid "%(nick)s is now %(status)s" msgstr "%(nick)s ist jetzt %(status)s" -#: ../src/history_window.py:275 +#: ../src/history_window.py:268 #, python-format msgid "Status is now: %(status)s: %(status_msg)s" msgstr "Status ist jetzt: %(status)s: %(status_msg)s" -#: ../src/history_window.py:278 +#: ../src/history_window.py:271 #, python-format msgid "Status is now: %(status)s" msgstr "Status ist jetzt: %(status)s" -#: ../src/message_window.py:233 +#: ../src/message_window.py:254 msgid "Messages" msgstr "Nachrichten" -#: ../src/message_window.py:234 +#: ../src/message_window.py:255 #, python-format msgid "%s - Gajim" msgstr "%s - Gajim" -#: ../src/roster_window.py:140 -msgid "Merged accounts" -msgstr "Konten zusammenführen" +#: ../src/notify.py:190 +#, python-format +msgid "%(nick)s Changed Status" +msgstr "%(nick)s änderte Status" -#: ../src/roster_window.py:289 ../src/common/helpers.py:42 +#: ../src/notify.py:200 +#, python-format +msgid "%(nickname)s Signed In" +msgstr "%(nickname)s angemeldet" + +#: ../src/notify.py:208 +#, python-format +msgid "%(nickname)s Signed Out" +msgstr "%(nickname)s abgemeldet" + +#: ../src/notify.py:220 +#, python-format +msgid "New Single Message from %(nickname)s" +msgstr "Neue einzelne Nachricht von %(nickname)s" + +#: ../src/notify.py:228 +#, python-format +msgid "New Private Message from room %s" +msgstr "Neue private Nachricht von Raum %s" + +#: ../src/notify.py:229 +#, python-format +msgid "%(nickname)s: %(message)s" +msgstr "%(nickname)s:·%(message)s" + +#: ../src/notify.py:235 +#, python-format +msgid "New Message from %(nickname)s" +msgstr "Neue Nachricht von %(nickname)s" + +#: ../src/roster_window.py:138 +msgid "Merged accounts" +msgstr "Alle Konten" + +#: ../src/roster_window.py:298 ../src/common/helpers.py:40 msgid "Observers" msgstr "Beobachter" -#: ../src/roster_window.py:542 -#, python-format -msgid "You are already in room %s" -msgstr "Sie sind bereits im Raum %s" - -#: ../src/roster_window.py:546 ../src/roster_window.py:2262 +#: ../src/roster_window.py:595 ../src/roster_window.py:2570 msgid "You cannot join a room while you are invisible" msgstr "Sie können einem Chatraum nicht beitreten, wenn Sie unsichtbar sind." #. the 'manage gc bookmarks' item is showed #. below to avoid duplicate code #. add -#: ../src/roster_window.py:735 +#: ../src/roster_window.py:791 #, python-format msgid "to %s account" msgstr "an %s Konto" #. disco -#: ../src/roster_window.py:742 +#: ../src/roster_window.py:796 #, python-format msgid "using %s account" msgstr "mit %s Konto" -#. new message +#. new chat #. for chat_with #. for single message -#: ../src/roster_window.py:750 ../src/systray.py:194 ../src/systray.py:201 +#: ../src/roster_window.py:802 ../src/systray.py:181 ../src/systray.py:186 #, python-format msgid "using account %s" msgstr "mit Konto %s" #. profile, avatar -#: ../src/roster_window.py:759 +#: ../src/roster_window.py:868 #, python-format msgid "of account %s" msgstr "von Konto %s" -#: ../src/roster_window.py:818 +#: ../src/roster_window.py:888 msgid "Manage Bookmarks..." -msgstr "Verwalte Bookmarks..." +msgstr "Verwalte Bookmarks ..." -#: ../src/roster_window.py:842 +#: ../src/roster_window.py:912 #, python-format msgid "for account %s" msgstr "für Konto %s" #. History manager -#: ../src/roster_window.py:863 +#: ../src/roster_window.py:933 msgid "History Manager" msgstr "Verlaufmanager" -#: ../src/roster_window.py:872 +#: ../src/roster_window.py:942 msgid "_Join New Room" msgstr "_Neuen Raum betreten" -#: ../src/roster_window.py:1158 +#: ../src/roster_window.py:1221 #, python-format msgid "Transport \"%s\" will be removed" msgstr "Transport \"%s\" wird entfernt" -#: ../src/roster_window.py:1158 +#: ../src/roster_window.py:1222 msgid "" "You will no longer be able to send and receive messages to contacts from " "this transport." @@ -3838,67 +4504,84 @@ msgstr "" "Sie können nun keine Nachrichten mehr mit Kontakten von diesem Transport " "austauschen." -#: ../src/roster_window.py:1200 +#: ../src/roster_window.py:1224 +msgid "Transports will be removed" +msgstr "Transporte werden entfernt" + +#: ../src/roster_window.py:1229 +#, python-format +msgid "" +"You will no longer be able to send and receive messages to contacts from " +"these transports:%s" +msgstr "" +"Sie können nun keine Nachrichten mehr mit Kontakten von diesen Transporten " +"austauschen:%s" + +#: ../src/roster_window.py:1273 msgid "Assign OpenPGP Key" msgstr "OpenPGP-Schlüssel Zuweisen" -#: ../src/roster_window.py:1201 +#: ../src/roster_window.py:1274 msgid "Select a key to apply to the contact" msgstr "Weisen Sie dem Kontakt einen Schüssel zu" -#: ../src/roster_window.py:1358 +#: ../src/roster_window.py:1411 ../src/roster_window.py:1586 +msgid "_New room" +msgstr "_Neuer Raum" + +#: ../src/roster_window.py:1469 msgid "I would like to add you to my roster" msgstr "Ich würde dich gerne in meine Liste aufnehmen" -#: ../src/roster_window.py:1410 +#: ../src/roster_window.py:1645 msgid "Re_name" msgstr "_Umbenennen" -#: ../src/roster_window.py:1441 +#: ../src/roster_window.py:1676 msgid "_Log on" msgstr "_Anmelden" -#: ../src/roster_window.py:1450 +#: ../src/roster_window.py:1685 msgid "Log _off" msgstr "_Abmelden" -#: ../src/roster_window.py:1545 +#: ../src/roster_window.py:1780 msgid "_Change Status Message" msgstr "Ändere _Statusnachricht" -#: ../src/roster_window.py:1617 +#: ../src/roster_window.py:1856 msgid "Authorization has been sent" msgstr "Autorisierung wurde erneut gesendet" -#: ../src/roster_window.py:1618 +#: ../src/roster_window.py:1857 #, python-format msgid "Now \"%s\" will know your status." msgstr "\"%s\" kennt jetzt ihren Status." -#: ../src/roster_window.py:1642 +#: ../src/roster_window.py:1881 msgid "Subscription request has been sent" msgstr "Abonnement-Anforderung wurde gesendet" -#: ../src/roster_window.py:1643 +#: ../src/roster_window.py:1882 #, python-format msgid "If \"%s\" accepts this request you will know his or her status." msgstr "Wenn d\"%s\" diese Anfrage akzeptiert, erfahren Sie dessen Status." -#: ../src/roster_window.py:1654 +#: ../src/roster_window.py:1893 msgid "Authorization has been removed" msgstr "Autorisierung wurde entfernt" -#: ../src/roster_window.py:1655 +#: ../src/roster_window.py:1894 #, python-format msgid "Now \"%s\" will always see you as offline." msgstr "\"%s\" wird Sie nun immer als offline sehen." -#: ../src/roster_window.py:1824 +#: ../src/roster_window.py:2100 #, python-format msgid "Contact \"%s\" will be removed from your roster" msgstr "Kontakt \"%s\" wird von ihrer Kontaktliste entfernt" -#: ../src/roster_window.py:1828 +#: ../src/roster_window.py:2104 msgid "" "By removing this contact you also remove authorization resulting in him or " "her always seeing you as offline." @@ -3906,7 +4589,7 @@ msgstr "" "Durch die Entfernung dieses Kontaktes entziehen Sie ihm auch die " "Authorisation, wodurch der Kontakt sie nur noch als offline sehen wird." -#: ../src/roster_window.py:1832 +#: ../src/roster_window.py:2108 msgid "" "By removing this contact you also by default remove authorization resulting " "in him or her always seeing you as offline." @@ -3914,39 +4597,54 @@ msgstr "" "Durch die Entfernung dieses Kontaktes entziehen Sie ihm auch die " "Authorisation, wodurch der Kontakt sie nur noch als offline sehen wird." -#: ../src/roster_window.py:1833 +#: ../src/roster_window.py:2109 msgid "I want this contact to know my status after removal" msgstr "" "I möchte, dass dieser Kontakt meinen Status auch nach der Entfernung sieht" -#: ../src/roster_window.py:1901 +#. several contact to remove at the same time +#: ../src/roster_window.py:2113 +msgid "Contacts will be removed from your roster" +msgstr "Kontakte werden von ihrer Kontaktliste entfernt" + +#: ../src/roster_window.py:2117 +#, python-format +msgid "" +"By removing these contacts:%s\n" +"you also remove authorization resulting in them always seeing you as offline." +msgstr "" +"Durch die Entfernung dieser Kontakte:%s\n" +"entziehen Sie ihnen auch die Authorisation, wodurch die Kontakte Sie nur " +"noch als offline sehen werden." + +#: ../src/roster_window.py:2187 msgid "Passphrase Required" msgstr "Passphrase benötigt" -#: ../src/roster_window.py:1902 +#: ../src/roster_window.py:2188 #, python-format msgid "Enter GPG key passphrase for account %s." msgstr "Geben Sie die GPG-Passphrase für das Konto %s ein." -#: ../src/roster_window.py:1907 +#: ../src/roster_window.py:2193 msgid "Save passphrase" msgstr "Passphrase speichern" -#: ../src/roster_window.py:1915 +#: ../src/roster_window.py:2201 msgid "Wrong Passphrase" msgstr "Falsche Passphrase" -#: ../src/roster_window.py:1916 +#: ../src/roster_window.py:2202 msgid "Please retype your GPG passphrase or press Cancel." msgstr "" "Bitte geben Sie Ihre GPG-Passphrase erneut ein oder klicken Sie auf " "Abbrechen." -#: ../src/roster_window.py:1964 ../src/roster_window.py:2021 +#: ../src/roster_window.py:2254 ../src/roster_window.py:2311 msgid "You are participating in one or more group chats" msgstr "Sie nehmen an einem oder mehreren Gruppenchats teil" -#: ../src/roster_window.py:1965 ../src/roster_window.py:2022 +#: ../src/roster_window.py:2255 ../src/roster_window.py:2312 msgid "" "Changing your status to invisible will result in disconnection from those " "group chats. Are you sure you want to go invisible?" @@ -3954,159 +4652,165 @@ msgstr "" "Wenn Sie Ihren Status auf unsichtbar setzen, werden sie von diesen " "Gruppenchats getrennt. Sind Sie sicher, dass sie unsichtbar werden möchten?" -#: ../src/roster_window.py:1981 +#: ../src/roster_window.py:2271 msgid "No account available" msgstr "Kein Konto vorhanden" -#: ../src/roster_window.py:1982 +#: ../src/roster_window.py:2272 msgid "You must create an account before you can chat with other contacts." msgstr "" "Sie müssen ein Konto erstellen, bevor Sie zum Jabber-Netzwerk verbinden " "können." -#: ../src/roster_window.py:2427 ../src/roster_window.py:2433 +#: ../src/roster_window.py:2748 ../src/roster_window.py:2754 msgid "You have unread messages" msgstr "Sie haben ungelesene Nachrichten" -#: ../src/roster_window.py:2428 ../src/roster_window.py:2434 +#: ../src/roster_window.py:2749 ../src/roster_window.py:2755 msgid "" "Messages will only be available for reading them later if you have history " "enabled." msgstr "Um Nachrichten später lesen zu können, muss der Verlauf aktiv sein." -#: ../src/roster_window.py:3184 +#: ../src/roster_window.py:3540 #, python-format msgid "Drop %s in group %s" msgstr "Setze %s in Gruppe %s" -#: ../src/roster_window.py:3191 +#: ../src/roster_window.py:3547 #, python-format msgid "Make %s and %s metacontacts" msgstr "Mache %s und %s Metakontakte" -#: ../src/roster_window.py:3358 +#: ../src/roster_window.py:3729 msgid "Change Status Message..." -msgstr "Ändere Statusnachricht..." +msgstr "Ändere Statusnachricht ..." -#: ../src/systray.py:155 +#: ../src/systray.py:142 msgid "_Change Status Message..." -msgstr "Ändere _Statusnachricht..." +msgstr "Ändere _Statusnachricht ..." -#: ../src/systray.py:236 +#: ../src/systray.py:219 msgid "Hide this menu" msgstr "Versteckt dieses Menü" -#: ../src/systraywin32.py:266 ../src/systraywin32.py:285 -#: ../src/tooltips.py:315 +#: ../src/systraywin32.py:269 #, python-format msgid "Gajim - %d unread message" msgid_plural "Gajim - %d unread messages" msgstr[0] "Gajim - %d ungelesene Nachricht" msgstr[1] "Gajim - %d ungelesene Nachrichten" -#: ../src/tooltips.py:321 +#: ../src/tooltips.py:306 #, python-format -msgid "Gajim - %d unread single message" -msgid_plural "Gajim - %d unread single messages" -msgstr[0] "Gajim - %d ungelesene Einzel-Nachricht" -msgstr[1] "Gajim - %d ungelesene Einzel-Nachrichten" +msgid " %d unread message" +msgid_plural " %d unread messages" +msgstr[0] " %d ungelesene Nachricht" +msgstr[1] " %d ungelesene Nachrichten" -#: ../src/tooltips.py:327 +#: ../src/tooltips.py:312 #, python-format -msgid "Gajim - %d unread group chat message" -msgid_plural "Gajim - %d unread group chat messages" -msgstr[0] "Gajim - %d ungelesene Gruppenchat-Nachricht" -msgstr[1] "Gajim - %d ungelesene Gruppenchat-Nachrichten" +msgid " %d unread single message" +msgid_plural " %d unread single messages" +msgstr[0] " %d ungelesene Einzel-Nachricht" +msgstr[1] " %d ungelesene Einzel-Nachrichten" -#: ../src/tooltips.py:333 +#: ../src/tooltips.py:318 #, python-format -msgid "Gajim - %d unread private message" -msgid_plural "Gajim - %d unread private messages" -msgstr[0] "Gajim - %d ungelesene private Nachricht" -msgstr[1] "Gajim - %d ungelesene private Nachrichten" +msgid " %d unread group chat message" +msgid_plural " %d unread group chat messages" +msgstr[0] " %d ungelesene Gruppenchat-Nachricht" +msgstr[1] " %d ungelesene Gruppenchat-Nachrichten" -#: ../src/tooltips.py:348 ../src/tooltips.py:350 +#: ../src/tooltips.py:324 +#, python-format +msgid " %d unread private message" +msgid_plural " %d unread private messages" +msgstr[0] " %d ungelesene private Nachricht" +msgstr[1] " %d ungelesene private Nachrichten" + +#: ../src/tooltips.py:339 ../src/tooltips.py:341 #, python-format msgid "Gajim - %s" msgstr "Gajim - %s" -#: ../src/tooltips.py:383 +#: ../src/tooltips.py:375 msgid "Role: " msgstr "Rolle:" -#: ../src/tooltips.py:384 +#: ../src/tooltips.py:376 msgid "Affiliation: " msgstr "Zugehörigkeit: " -#: ../src/tooltips.py:386 ../src/tooltips.py:518 +#: ../src/tooltips.py:378 ../src/tooltips.py:518 msgid "Resource: " msgstr "Ressource: " -#: ../src/tooltips.py:394 ../src/tooltips.py:521 ../src/tooltips.py:543 -#: ../src/tooltips.py:654 +#: ../src/tooltips.py:387 ../src/tooltips.py:522 ../src/tooltips.py:547 +#: ../src/tooltips.py:658 msgid "Status: " msgstr "Status: " -#: ../src/tooltips.py:501 +#: ../src/tooltips.py:495 msgid "Subscription: " msgstr "Abonnement: " -#: ../src/tooltips.py:510 +#: ../src/tooltips.py:504 msgid "OpenPGP: " msgstr "OpenPGP: " -#: ../src/tooltips.py:548 +#: ../src/tooltips.py:552 #, python-format msgid "Last status on %s" msgstr "Letzter Status auf %s" -#: ../src/tooltips.py:550 +#: ../src/tooltips.py:554 #, python-format msgid "Since %s" msgstr "Seit %s" -#: ../src/tooltips.py:610 +#: ../src/tooltips.py:614 msgid "Download" msgstr "Download" -#: ../src/tooltips.py:616 +#: ../src/tooltips.py:620 msgid "Upload" msgstr "Upload" -#: ../src/tooltips.py:623 +#: ../src/tooltips.py:627 msgid "Type: " msgstr "Typ: " -#: ../src/tooltips.py:629 +#: ../src/tooltips.py:633 msgid "Transferred: " msgstr "Ãœbertragen: " -#: ../src/tooltips.py:632 ../src/tooltips.py:653 +#: ../src/tooltips.py:636 ../src/tooltips.py:657 msgid "Not started" msgstr "Nicht gestartet" -#: ../src/tooltips.py:636 +#: ../src/tooltips.py:640 msgid "Stopped" msgstr "Angehalten" -#: ../src/tooltips.py:638 ../src/tooltips.py:641 +#: ../src/tooltips.py:642 ../src/tooltips.py:645 msgid "Completed" msgstr "Abgeschlossen" #. stalled is not paused. it is like 'frozen' it stopped alone -#: ../src/tooltips.py:649 +#: ../src/tooltips.py:653 msgid "Stalled" msgstr "Steht still" -#: ../src/tooltips.py:651 +#: ../src/tooltips.py:655 msgid "Transferring" msgstr "Ãœbertrage" -#: ../src/tooltips.py:683 +#: ../src/tooltips.py:687 msgid "This service has not yet responded with detailed information" msgstr "Dieser Dienst hat nicht mit detaillierten Informationen geantwortet" -#: ../src/tooltips.py:686 +#: ../src/tooltips.py:690 msgid "" "This service could not respond with detailed information.\n" "It is most likely legacy or broken" @@ -4115,24 +4819,24 @@ msgstr "" "Er ist wahrscheinlich verwaltet oder defekt" #. keep identation -#: ../src/vcard.py:186 +#: ../src/vcard.py:193 msgid "Could not load image" msgstr "Konnte Bild nicht laden" -#: ../src/vcard.py:262 +#: ../src/vcard.py:305 msgid "?Client:Unknown" msgstr "Unbekannt" -#: ../src/vcard.py:264 +#: ../src/vcard.py:307 msgid "?OS:Unknown" msgstr "Unbekannt" -#: ../src/vcard.py:281 +#: ../src/vcard.py:326 #, python-format msgid "since %s" msgstr "seit %s" -#: ../src/vcard.py:305 +#: ../src/vcard.py:352 msgid "" "This contact is interested in your presence information, but you are not " "interested in his/her presence" @@ -4140,7 +4844,7 @@ msgstr "" "Dieser Kontakt ist an Ihren Anwesenheitsinformationen interessiert, aber Sie " "sindnicht an seiner/ihrer Anwesenheit interessiert" -#: ../src/vcard.py:307 +#: ../src/vcard.py:354 msgid "" "You are interested in the contact's presence information, but he/she is not " "interested in yours" @@ -4148,14 +4852,14 @@ msgstr "" "Sie sind an den Anwesenheitsinformationen des Kontakts interessiert, aber er/" "sieist nicht an ihren interessiert" -#: ../src/vcard.py:309 +#: ../src/vcard.py:356 msgid "You and the contact are interested in each other's presence information" msgstr "" "Sie und der Kontakt sind an den Anwesenheitsinformationen des anderen " "interessiert" #. None -#: ../src/vcard.py:311 +#: ../src/vcard.py:358 msgid "" "You are not interested in the contact's presence, and neither he/she is " "interested in yours" @@ -4163,68 +4867,67 @@ msgstr "" "Sie sind nicht an der Anwesenheit des Kontakts interessiert, und er/sie " "istnicht interessiert an ihrer" -#: ../src/vcard.py:320 +#: ../src/vcard.py:367 msgid "You are waiting contact's answer about your subscription request" msgstr "Sie warten auf die Antwort des Kontaktes auf ihre Abonnement-Anfrage" -#: ../src/vcard.py:332 ../src/vcard.py:355 +#: ../src/vcard.py:379 ../src/vcard.py:402 msgid " resource with priority " msgstr " resource mit Priorität " -#: ../src/vcard.py:434 +#: ../src/vcard.py:479 msgid "Without a connection you can not publish your contact information." msgstr "" "Sie müssen angemeldet sein, um Kontakt-Informationen zu veröffentlichen" -#: ../src/vcard.py:463 +#: ../src/vcard.py:512 msgid "Without a connection, you can not get your contact information." msgstr "Sie müssen angemeldet sein, um Kontakt-Informationen abzurufen" -#: ../src/vcard.py:467 +#: ../src/vcard.py:518 msgid "Personal details" msgstr "Persönliche Details" -#: ../src/common/check_paths.py:39 +#: ../src/common/check_paths.py:35 msgid "creating logs database" msgstr "Erstelle Log-Datenbank" -#: ../src/common/check_paths.py:84 ../src/common/check_paths.py:95 -#: ../src/common/check_paths.py:102 +#: ../src/common/check_paths.py:87 ../src/common/check_paths.py:98 +#: ../src/common/check_paths.py:105 #, python-format msgid "%s is file but it should be a directory" msgstr "%s ist eine Datei, kein Verzeichnis" -#: ../src/common/check_paths.py:85 ../src/common/check_paths.py:96 -#: ../src/common/check_paths.py:103 ../src/common/check_paths.py:110 +#: ../src/common/check_paths.py:88 ../src/common/check_paths.py:99 +#: ../src/common/check_paths.py:106 ../src/common/check_paths.py:114 msgid "Gajim will now exit" msgstr "Gajim wird nun beendet" -#: ../src/common/check_paths.py:109 +#: ../src/common/check_paths.py:113 #, python-format msgid "%s is directory but should be file" msgstr "%s ist ein Verzeichnis, sollte aber eine Datei sein" -#: ../src/common/check_paths.py:125 +#: ../src/common/check_paths.py:129 #, python-format msgid "creating %s directory" msgstr "Erstelle Verzeichnis %s" -#: ../src/common/exceptions.py:35 +#: ../src/common/exceptions.py:32 msgid "pysqlite2 (aka python-pysqlite2) dependency is missing. Exiting..." -msgstr "" -"pysqlite2 (auch python-pysqlite2 genannt) Abhängigkeit fehlt. Beende..." +msgstr "pysqlite2 (auch python-pysqlite2 genannt) Abhängigkeit fehlt. Beende ..." -#: ../src/common/exceptions.py:43 +#: ../src/common/exceptions.py:40 msgid "Service not available: Gajim is not running, or remote_control is False" msgstr "" "Dienst nicht verfügbar: Gajim ist nicht aktiv oder remote_control ist " "deaktiviert" -#: ../src/common/exceptions.py:51 +#: ../src/common/exceptions.py:48 msgid "D-Bus is not present on this machine or python module is missing" msgstr "D-Bus auf diesem Computer nicht vorhanden oder das Python-Modul fehlt" -#: ../src/common/exceptions.py:59 +#: ../src/common/exceptions.py:56 msgid "" "Session bus is not available.\n" "Try reading http://trac.gajim.org/wiki/GajimDBus" @@ -4232,27 +4935,48 @@ msgstr "" "Sitzungsbus ist nicht verfügbar.\"Bitte lesen Sie http://trac.gajim.org/wiki/" "GajimDBus" -#: ../src/common/config.py:53 +#: ../src/common/config.py:51 msgid "Use DBus and Notification-Daemon to show notifications" msgstr "" "Verwende DBus und Benachrichtigungs-Daemon um Benachrichtigungen zu zeigen" -#: ../src/common/config.py:57 +#: ../src/common/config.py:55 msgid "Time in minutes, after which your status changes to away." msgstr "Zeit in Minuten, nach der Ihr Status auf abwesend gesetzt wird" -#: ../src/common/config.py:58 +#: ../src/common/config.py:56 msgid "Away as a result of being idle" msgstr "Abwesend, da untätig" -#: ../src/common/config.py:60 +#: ../src/common/config.py:58 msgid "Time in minutes, after which your status changes to not available." msgstr "Zeit in Minuten, nach der Ihr Status auf nicht verfügbar gesetzt wird." -#: ../src/common/config.py:61 +#: ../src/common/config.py:59 msgid "Not available as a result of being idle" msgstr "Nicht verfügbar, da untätig" +#: ../src/common/config.py:77 +msgid "List (space separated) of rows (accounts and groups) that are collapsed" +msgstr "" + +#: ../src/common/config.py:83 +msgid "Language used by speller" +msgstr "Sprache der Rechtschreib-Prüfung" + +#: ../src/common/config.py:84 +msgid "" +"'always' - print time for every message.\n" +"'sometimes' - print time every print_ichat_every_foo_minutes minute.\n" +"'never' - never print time." +msgstr "" + +#: ../src/common/config.py:85 +msgid "" +"Value of fuzziness from 1 to 4 or 0 to disable fuzzyclock. 1 is the most " +"precise clock, 4 the less precise one." +msgstr "" + #: ../src/common/config.py:88 msgid "Treat * / _ pairs as possible formatting characters." msgstr "Behandle * / _ Paare als mögliche Formatierungszeichen." @@ -4264,11 +4988,23 @@ msgstr "" "Falls wahr, entferne */_ nicht. So wird *abc* fett aber * * wird nicht " "entfernt." -#: ../src/common/config.py:131 +#: ../src/common/config.py:99 +msgid "" +"Character to add after nickname when using nick completion (tab) in group " +"chat" +msgstr "" + +#: ../src/common/config.py:100 +msgid "" +"Character to propose to add after desired nickname when desired nickname is " +"used by someone else in group chat" +msgstr "" + +#: ../src/common/config.py:132 msgid "Add * and [n] in roster title?" msgstr "Füge * und [n] in die Kontaktleiste?" -#: ../src/common/config.py:132 +#: ../src/common/config.py:133 msgid "" "How many lines to remember from previous conversation when a chat tab/window " "is reopened." @@ -4276,12 +5012,12 @@ msgstr "" "Wie viele Zeilen von der vorherigen Unterhaltung gespeichert werden, wenn " "ein Chat Tab/Fenster wieder geöffnet wird." -#: ../src/common/config.py:133 +#: ../src/common/config.py:134 msgid "How many minutes should last lines from previous conversation last." msgstr "" "Wie viele Minuten die Zeilen vom vorherigen Chat angezeigt werden sollen." -#: ../src/common/config.py:134 +#: ../src/common/config.py:135 msgid "" "Send message on Ctrl+Enter and with Enter make new line (Mirabilis ICQ " "Client default behaviour)." @@ -4289,11 +5025,11 @@ msgstr "" "Sende Nachricht mit Strg+Enter und mache bei Enter einen Zeilenumbruch " "(Mirabilis ICQ-Client Standardeinstellung)." -#: ../src/common/config.py:136 +#: ../src/common/config.py:137 msgid "How many lines to store for Ctrl+KeyUP." msgstr "Wie viele Zeilen für Strg+BildAuf gespeichert werden." -#: ../src/common/config.py:139 +#: ../src/common/config.py:140 #, python-format msgid "" "Either custom url with %s in it where %s is the word/phrase or 'WIKTIONARY' " @@ -4302,17 +5038,23 @@ msgstr "" "Entweder eine spezielle URL mit %s, wobei %s das Word/Phrase ist oder " "'WIKTIONARY', was bedeutet, dass ein Wörterbuch verwendet wird." -#: ../src/common/config.py:142 +#: ../src/common/config.py:143 msgid "If checked, Gajim can be controlled remotely using gajim-remote." msgstr "" "Falls aktiviert kann Gajim aus der Ferne mittels gajim-remote kontrolliert " "werden." #: ../src/common/config.py:146 +msgid "" +"When not printing time for every message (print_time==sometimes), print it " +"every x minutes" +msgstr "" + +#: ../src/common/config.py:147 msgid "Ask before closing a group chat tab/window." msgstr "Fragen, bevor ein Gruppenchat Tab/Fenster geschlossen wird." -#: ../src/common/config.py:147 +#: ../src/common/config.py:148 msgid "" "Always ask before closing group chat tab/window in this space separated list " "of room jids." @@ -4320,7 +5062,7 @@ msgstr "" "Immer fragen, bevor ein Gruppenchat-Fenster/Tab aus der Leerzeichen-" "seperierten\"Liste von Raumnamen geschlossen wird." -#: ../src/common/config.py:148 +#: ../src/common/config.py:149 msgid "" "Never ask before closing group chat tab/window in this space separated list " "of room jids." @@ -4328,7 +5070,7 @@ msgstr "" "Niemals fragen, bevor ein Gruppenchat-Fenster/Tab aus der Leerzeichen-" "seperiertenListe von Raumnamen geschlossen wird." -#: ../src/common/config.py:151 +#: ../src/common/config.py:152 msgid "" "Overrides the host we send for File Transfer in case of address translation/" "port forwarding." @@ -4336,23 +5078,23 @@ msgstr "" "Ãœberschreibt den Host für Datenübertragung für den Fall von NAT/Port-" "Forwarding" -#: ../src/common/config.py:153 +#: ../src/common/config.py:154 msgid "IEC standard says KiB = 1024 bytes, KB = 1000 bytes." msgstr "IEC-Standard sagt KiB = 1024 Byte, KB = 1000 Byte." -#: ../src/common/config.py:161 +#: ../src/common/config.py:162 msgid "Show tab when only one conversation?" msgstr "Tab bei einer einzelnen Unterhaltung anzeigen?" -#: ../src/common/config.py:162 -msgid "Show tab border if one conversation?" -msgstr "Tab-Grenze bei nur einer Konversation anzeigen?" - #: ../src/common/config.py:163 +msgid "Show tabbed notebook border in chat windows?" +msgstr "Tab-Grenze im Chat-Fenster anzeigen?" + +#: ../src/common/config.py:164 msgid "Show close button in tab?" msgstr "Schließen-Button im Tab anzeigen?" -#: ../src/common/config.py:176 +#: ../src/common/config.py:177 msgid "" "A semicolon-separated list of words that will be highlighted in multi-user " "chat." @@ -4360,7 +5102,7 @@ msgstr "" "Eine mit Semilkolon getrennte List von Worten, die in einem Gruppenchat " "hervorgehoben werden." -#: ../src/common/config.py:177 +#: ../src/common/config.py:178 msgid "" "If True, quits Gajim when X button of Window Manager is clicked. This " "setting is taken into account only if trayicon is used." @@ -4369,11 +5111,11 @@ msgstr "" "geklickt wird.Diese Option wird nur beachtet, wenn die Trayicon-" "Unterstützung aktiv ist." -#: ../src/common/config.py:178 +#: ../src/common/config.py:179 msgid "If True, Gajim registers for xmpp:// on each startup." msgstr "Falls wahr, registriert Gajim bei jedem Start für xmpp://." -#: ../src/common/config.py:179 +#: ../src/common/config.py:180 msgid "" "If True, Gajim will display an icon on each tab containing unread messages. " "Depending on the theme, this icon may be animated." @@ -4381,7 +5123,7 @@ msgstr "" "Falls wahr. wird Gajim ein Icon auf jedem Tab mit ungelesenen Nachrichten " "anzeigen.Abhängig vom Theme ist dieses Icon animiert." -#: ../src/common/config.py:180 +#: ../src/common/config.py:181 msgid "" "If True, Gajim will display the status message, if not empty, for every " "contact under the contact name in roster window" @@ -4389,7 +5131,7 @@ msgstr "" "Falls aktiviert, wird Gajim für jeden Kontakt die Statusnachricht, falls " "nicht leer, unter dem jeweiligen Kontaktnamen im Roster anzeigen" -#: ../src/common/config.py:182 +#: ../src/common/config.py:183 msgid "" "If True, Gajim will ask for avatar each contact that did not have an avatar " "last time or has one cached that is too old." @@ -4397,16 +5139,34 @@ msgstr "" "Falls aktiviert fragt Gajim nach einem Avatar für jeden Kontakt, der beim " "letzten Mal keinen hatte oder einen veralteten hat." -#. FIXME: remove you and make it Gajim will not; and/or his or *her* status messages #: ../src/common/config.py:184 msgid "" -"If False, you will no longer see status line in chats when a contact changes " -"his or her status and/or his status message." +"If False, Gajim will no longer print status line in chats when a contact " +"changes his or her status and/or his or her status message." msgstr "" "Falls deaktiviert, werden Sie keine Statuszeile im Chat sehen, wenn ein " -"Kontaktseinen Status und/oder seine Statusnachricht ändert." +"Kontakt seinen Status und/oder seine Statusnachricht ändert." + +#: ../src/common/config.py:185 +msgid "" +"can be \"none\", \"all\" or \"in_and_out\". If \"none\", Gajim will no " +"longer print status line in groupchats when a member changes his or her " +"status and/or his or her status message. If \"all\" Gajim will print all " +"status messages. If \"in_and_out\", gajim will only print FOO enters/leaves " +"room" +msgstr "" + +#: ../src/common/config.py:188 +msgid "" +"If True, restored messages will use a smaller font than the default one." +msgstr "" +"Falls aktiv, werden wiederhergestellte Nachrichten mit einer kleineren Schrift als der Standard dargestellt." #: ../src/common/config.py:189 +msgid "Don't show avatar for the transport itself." +msgstr "Zeige keinen Avatar für den Transport selber." + +#: ../src/common/config.py:191 msgid "" "If True and installed GTK+ and PyGTK versions are at least 2.8, make the " "window flash (the default behaviour in most Window Managers) when holding " @@ -4416,7 +5176,7 @@ msgstr "" "sind, lasse das Fenster bei neuen Ereignissen aufblitzen (Standardverhalten " "in den meisten Window-Managers) " -#: ../src/common/config.py:191 +#: ../src/common/config.py:193 msgid "" "Jabberd1.4 does not like sha info when one join a password protected room. " "Turn this option to False to stop sending sha info in groupchat presences" @@ -4425,7 +5185,8 @@ msgstr "" "wird. Deaktivieren Sie diese Option um keine sha info in Gruppenchats zu " "senden" -#: ../src/common/config.py:193 +#. always, never, peracct, pertype should not be translated +#: ../src/common/config.py:196 msgid "" "Controls the window where new messages are placed.\n" "'always' - All messages are sent to a single window.\n" @@ -4444,41 +5205,57 @@ msgstr "" "einem speziellen Fenster. Falls Sie diese Option ändern, muss Gajim neu " "gestartet werden, damit die Änderungen übernommen werden" -#: ../src/common/config.py:194 +#: ../src/common/config.py:197 msgid "If False, you will no longer see the avatar in the chat window" msgstr "" "Wenn deaktiviert, werden Sie den Avatar nicht mehr im Chatfenster sehen" -#: ../src/common/config.py:195 +#: ../src/common/config.py:198 msgid "If True, pressing the escape key closes a tab/window" msgstr "Wenn aktiviert, schließt die Escape-Taste ein Tab/Fenster" -#: ../src/common/config.py:196 +#: ../src/common/config.py:199 msgid "Hides the buttons in group chat window" msgstr "Versteckt die Button im Gruppenchat-Fenster" -#: ../src/common/config.py:197 +#: ../src/common/config.py:200 msgid "Hides the buttons in two persons chat window" msgstr "Versteckt die Buttons im Zwei-Personen-Chatfenster" -#: ../src/common/config.py:198 +#: ../src/common/config.py:201 msgid "Hides the banner in a group chat window" msgstr "Versteckt das Banner im Gruppenchat-Fenster" -#: ../src/common/config.py:199 +#: ../src/common/config.py:202 msgid "Hides the banner in two persons chat window" msgstr "Versteckt das Banner im Zwei-Personen-Chatfenster" -#: ../src/common/config.py:200 +#: ../src/common/config.py:203 msgid "Hides the room occupants list in groupchat window" msgstr "Versteckt die Raumbenutzerliste im Gruppenchat-Fenster" +#: ../src/common/config.py:204 +msgid "Merge consecutive nickname in chat window" +msgstr "" + +#: ../src/common/config.py:205 +msgid "Indentation when using merge consecutive nickame" +msgstr "" + +#: ../src/common/config.py:206 +msgid "List of colors that will be used to color nicknames in groupchats" +msgstr "Farbliste, die für die Einfärbung von Spitzenamen im Gruppenchat verwendet wird" + +#: ../src/common/config.py:207 +msgid "Ctrl-Tab go to next composing tab when none is unread" +msgstr "Strg-Tab, um zum nächsten Verfassen-Fenster zu gehen wenn keines ungelesen ist" + #. yes, no, ask -#: ../src/common/config.py:233 +#: ../src/common/config.py:240 msgid "Jabberd2 workaround" msgstr "Jabberd2 Workaround" -#: ../src/common/config.py:237 +#: ../src/common/config.py:244 msgid "" "If checked, Gajim will use your IP and proxies defined in " "file_transfer_proxies option for file transfer." @@ -4486,59 +5263,97 @@ msgstr "" "Wenn aktiviert, wird Gajim Ihre IP und die in der file_transfer_proxies " "Optiondefinierten Proxies für den Datentransfer verwenden." -#: ../src/common/config.py:290 +#: ../src/common/config.py:305 +msgid "all or space separated status" +msgstr "alle oder Leerzeichen-getrennter Status" + +#: ../src/common/config.py:306 +msgid "'yes', 'no', or 'both'" +msgstr "'ja', 'nein' oder 'beide'" + +#: ../src/common/config.py:307 ../src/common/config.py:309 +#: ../src/common/config.py:310 ../src/common/config.py:313 +#: ../src/common/config.py:314 +msgid "'yes', 'no' or ''" +msgstr "'ja, 'nein' oder ''" + +#: ../src/common/config.py:320 msgid "Sleeping" msgstr "Schlafen" -#: ../src/common/config.py:291 +#: ../src/common/config.py:321 msgid "Back soon" msgstr "Bin gleich wieder da" -#: ../src/common/config.py:291 +#: ../src/common/config.py:321 msgid "Back in some minutes." msgstr "Bin in ein paar Minuten zurück." -#: ../src/common/config.py:292 +#: ../src/common/config.py:322 msgid "Eating" msgstr "Essen" -#: ../src/common/config.py:292 +#: ../src/common/config.py:322 msgid "I'm eating, so leave me a message." msgstr "Ich esse gerade, also hinterlasst eine Nachricht." -#: ../src/common/config.py:293 +#: ../src/common/config.py:323 msgid "Movie" msgstr "Film" -#: ../src/common/config.py:293 +#: ../src/common/config.py:323 msgid "I'm watching a movie." msgstr "Ich sehe mir einen Film an." -#: ../src/common/config.py:294 +#: ../src/common/config.py:324 msgid "Working" msgstr "Arbeit" -#: ../src/common/config.py:294 +#: ../src/common/config.py:324 msgid "I'm working." msgstr "Ich arbeite." -#: ../src/common/config.py:295 +#: ../src/common/config.py:325 msgid "Phone" msgstr "Telefon" -#: ../src/common/config.py:295 +#: ../src/common/config.py:325 msgid "I'm on the phone." msgstr "Ich telefoniere." -#: ../src/common/config.py:296 +#: ../src/common/config.py:326 msgid "Out" msgstr "Draußen" -#: ../src/common/config.py:296 +#: ../src/common/config.py:326 msgid "I'm out enjoying life" msgstr "Ich bin draußen und genieße das Leben" -#: ../src/common/config.py:305 +#: ../src/common/config.py:330 +msgid "I'm avavilable" +msgstr "Ich bin angemeldet" + +#: ../src/common/config.py:331 +msgid "I'm free for chat" +msgstr "Ich bin frei zum Chatten" + +#: ../src/common/config.py:332 +msgid "Be right back" +msgstr "Bin gleich zurück" + +#: ../src/common/config.py:333 +msgid "I'm not available" +msgstr "Ich bin nicht da" + +#: ../src/common/config.py:334 +msgid "Do not disturb" +msgstr "Bitte nicht stören" + +#: ../src/common/config.py:335 ../src/common/config.py:336 +msgid "Bye !" +msgstr "Auf Wiedersehen!" + +#: ../src/common/config.py:345 msgid "" "Sound to play when a MUC message contains one of the words in " "muc_highlight_words, or when a MUC message contains your nickname." @@ -4547,7 +5362,7 @@ msgstr "" "muc_highlights_works-Liste enthält oder wenn die Nachricht Ihren Nickname " "erhält." -#: ../src/common/config.py:306 +#: ../src/common/config.py:346 msgid "" "Sound to play when any MUC message arrives. (This setting is taken into " "account only if notify_on_all_muc_messages is True)" @@ -4555,97 +5370,97 @@ msgstr "" "Abzuspielender Ton, falls eine MUC-Nachricht ankommt. (Diese Einstellung " "wirdnur beachtet, wenn notify_on_all_muc_messages aktiviert ist)" -#: ../src/common/config.py:314 ../src/common/optparser.py:181 +#: ../src/common/config.py:354 ../src/common/optparser.py:188 msgid "green" msgstr "grün" -#: ../src/common/config.py:318 ../src/common/optparser.py:167 +#: ../src/common/config.py:358 ../src/common/optparser.py:174 msgid "grocery" msgstr "gemüse" -#: ../src/common/config.py:322 +#: ../src/common/config.py:362 msgid "human" msgstr "menschlich" -#: ../src/common/config.py:326 +#: ../src/common/config.py:366 msgid "marine" msgstr "Marine" -#: ../src/common/connection.py:152 +#: ../src/common/connection.py:176 #, python-format msgid "Connection with account \"%s\" has been lost" msgstr "Verbindung mit Konto \"%s\" abgebrochen" -#: ../src/common/connection.py:153 +#: ../src/common/connection.py:177 msgid "To continue sending and receiving messages, you will need to reconnect." msgstr "" "Um weiter Senden um Empfangen zu können, müssen Sie sich erneut verbinden." -#: ../src/common/connection.py:169 ../src/common/connection.py:195 +#: ../src/common/connection.py:189 ../src/common/connection.py:215 #, python-format msgid "Transport %s answered wrongly to register request." msgstr "Transport %s beantwortete unsere Registrierungsanfrage nicht korrekt." #. wrong answer -#: ../src/common/connection.py:194 +#: ../src/common/connection.py:214 msgid "Invalid answer" msgstr "Ungültige Antwort" -#: ../src/common/connection.py:348 ../src/common/connection.py:384 -#: ../src/common/connection.py:754 +#: ../src/common/connection.py:401 ../src/common/connection.py:437 +#: ../src/common/connection.py:860 #, python-format msgid "Could not connect to \"%s\"" msgstr "Konnte nicht mit %s verbinden" -#: ../src/common/connection.py:362 +#: ../src/common/connection.py:415 #, python-format msgid "Connected to server %s:%s with %s" msgstr "Verbunden mit Server %s:%s mit %s" -#: ../src/common/connection.py:385 +#: ../src/common/connection.py:438 msgid "Check your connection or try again later" msgstr "Ãœberprüfen Sie die Verbindung oder versuchen Sie es später noch einmal" -#: ../src/common/connection.py:410 +#: ../src/common/connection.py:463 #, python-format msgid "Authentication failed with \"%s\"" msgstr "Authentifizierung mit \"%s\" fehlgeschlagen" -#: ../src/common/connection.py:411 +#: ../src/common/connection.py:464 msgid "Please check your login and password for correctness." msgstr "Bitte überprüfen Sie ihren Benutzernamen und Passwort." #. We didn't set a passphrase -#: ../src/common/connection.py:487 +#: ../src/common/connection.py:577 msgid "OpenPGP passphrase was not given" msgstr "Keine OpenPGP-Passphrase gewählt" #. %s is the account name here -#: ../src/common/connection.py:489 +#: ../src/common/connection.py:579 #, python-format msgid "You will be connected to %s without OpenPGP." msgstr "Sie werden ohne OpenPGP mit %s verbunden." #. do not show I'm invisible! -#: ../src/common/connection.py:526 +#: ../src/common/connection.py:616 msgid "invisible" msgstr "unsichtbar" -#: ../src/common/connection.py:527 +#: ../src/common/connection.py:617 msgid "offline" msgstr "abgemeldet" -#: ../src/common/connection.py:528 +#: ../src/common/connection.py:618 #, python-format msgid "I'm %s" msgstr "Ich bin %s" #. we're not english -#: ../src/common/connection.py:611 +#: ../src/common/connection.py:703 msgid "[This message is encrypted]" msgstr "[Diese Nachricht ist verschlüsselt]" -#: ../src/common/connection.py:649 +#: ../src/common/connection.py:746 #, python-format msgid "" "Subject: %s\n" @@ -4654,223 +5469,372 @@ msgstr "" "Thema: %s\n" "%s" -#: ../src/common/connection.py:699 +#: ../src/common/connection.py:884 +msgid "Not fetched because of invisible status" +msgstr "Nicht abgeholt aufgrund eines Unsichtbar-Status" + +#: ../src/common/connection_handlers.py:51 +msgid "Unable to load idle module" +msgstr "Fehler beim Betreten des Raum" + +#: ../src/common/connection_handlers.py:176 +msgid "Wrong host" +msgstr "Falscher Host" + +#: ../src/common/connection_handlers.py:176 +msgid "" +"The host you configured as the ft_override_host_to_send advanced option is " +"not valid, so ignored." +msgstr "" +"Der Host, den Sie für die erweiterte Option ft_override_host_to_send angeben " +"haben ist ungültig und wird ignoriert." + +#: ../src/common/connection_handlers.py:588 +#, python-format +msgid "Registration information for transport %s has not arrived in time" +msgstr "" +"Registrierungsinformation für Transport %s sind nicht rechtzeitig angekommen" + +#: ../src/common/connection_handlers.py:1438 +#, python-format +msgid "Nickname not allowed: %s" +msgstr "Spitzname nicht erlaubt: %s" + +#. password required to join +#. we are banned +#. room does not exist +#: ../src/common/connection_handlers.py:1507 +#: ../src/common/connection_handlers.py:1510 +#: ../src/common/connection_handlers.py:1513 +#: ../src/common/connection_handlers.py:1516 +#: ../src/common/connection_handlers.py:1519 +#: ../src/common/connection_handlers.py:1522 +#: ../src/common/connection_handlers.py:1530 +msgid "Unable to join room" +msgstr "Fehler beim Betreten des Raum" + +#: ../src/common/connection_handlers.py:1508 +msgid "A password is required to join this room." +msgstr "Für das Betreten dieses Raumes ist ein Passwort nötig." + +#: ../src/common/connection_handlers.py:1511 +msgid "You are banned from this room." +msgstr "Sie sind aus diesem Raum gebannt" + +#: ../src/common/connection_handlers.py:1514 +msgid "Such room does not exist." +msgstr "Dieser Raum existiert nicht." + +#: ../src/common/connection_handlers.py:1517 +msgid "Room creation is restricted." +msgstr "Raumerstellung ist beschränkt" + +#: ../src/common/connection_handlers.py:1520 +msgid "Your registered nickname must be used." +msgstr "Sie müssen Ihren registrierten Spitznamen verwenden" + +#: ../src/common/connection_handlers.py:1523 +msgid "You are not in the members list." +msgstr "Sie sind nicht in der Mitgliedliste" + +#: ../src/common/connection_handlers.py:1531 +msgid "" +"Your desired nickname is in use or registered by another occupant.\n" +"Please specify another nickname below:" +msgstr "" +"Der gwünschte Benutzername wird bereits verwendet oder ist von einem anderen " +"Benutzer registriert.\n" +"Bitte geben Sie einen anderen Benutzernamen an:" + +#: ../src/common/connection_handlers.py:1577 msgid "I would like to add you to my roster." msgstr "Ich würde dich gerne zu meiner Liste hinzufügen." -#: ../src/common/helpers.py:103 +#. BE CAREFUL: no con.updateRosterItem() in a callback +#: ../src/common/connection_handlers.py:1598 +#, python-format +msgid "we are now subscribed to %s" +msgstr "wir haben jetzt %s abonniert" + +#: ../src/common/connection_handlers.py:1600 +#, python-format +msgid "unsubscribe request from %s" +msgstr "Anfrage zur Kündigung des Abonnements von %s" + +#: ../src/common/connection_handlers.py:1602 +#, python-format +msgid "we are now unsubscribed from %s" +msgstr "%s hat das Abonnement beendet" + +#: ../src/common/connection_handlers.py:1772 +#, python-format +msgid "" +"JID %s is not RFC compliant. It will not be added to your roster. Use roster " +"management tools such as http://jru.jabberstudio.org/ to remove it" +msgstr "" +"Jid %s ist nicht RFC-konform. Sie wird nicht zu ihrem Roster hinzugefügt. " +"Verwenden Sie ein Roster-Managment-Tool wie , " +"um ihn zu entfernen" + +#: ../src/common/helpers.py:101 msgid "Invalid character in username." msgstr "Ungültiges Zeichen im Benutzernamen" -#: ../src/common/helpers.py:108 +#: ../src/common/helpers.py:106 msgid "Server address required." msgstr "Server-Adresse wird benötigt." -#: ../src/common/helpers.py:113 +#: ../src/common/helpers.py:111 msgid "Invalid character in hostname." msgstr "Ungültiges Zeichen in Hostname." -#: ../src/common/helpers.py:119 +#: ../src/common/helpers.py:117 msgid "Invalid character in resource." msgstr "Ungültiges Zeichen in Resource." #. GiB means gibibyte -#: ../src/common/helpers.py:159 +#: ../src/common/helpers.py:157 #, python-format msgid "%s GiB" msgstr "%s GiB" #. GB means gigabyte -#: ../src/common/helpers.py:162 +#: ../src/common/helpers.py:160 #, python-format msgid "%s GB" msgstr "%s GB" #. MiB means mibibyte -#: ../src/common/helpers.py:166 +#: ../src/common/helpers.py:164 #, python-format msgid "%s MiB" msgstr "%s MiB" #. MB means megabyte -#: ../src/common/helpers.py:169 +#: ../src/common/helpers.py:167 #, python-format msgid "%s MB" msgstr "%s MB" #. KiB means kibibyte -#: ../src/common/helpers.py:173 +#: ../src/common/helpers.py:171 #, python-format msgid "%s KiB" msgstr "%s KiB" #. KB means kilo bytes -#: ../src/common/helpers.py:176 +#: ../src/common/helpers.py:174 #, python-format msgid "%s KB" msgstr "%s KB" #. B means bytes -#: ../src/common/helpers.py:179 +#: ../src/common/helpers.py:177 #, python-format msgid "%s B" msgstr "%s B" -#: ../src/common/helpers.py:189 +#: ../src/common/helpers.py:206 msgid "_Busy" msgstr "_Beschäftigt" -#: ../src/common/helpers.py:191 +#: ../src/common/helpers.py:208 msgid "Busy" msgstr "Beschäftigt" -#: ../src/common/helpers.py:194 +#: ../src/common/helpers.py:211 msgid "_Not Available" msgstr "_Nicht verfügbar" -#: ../src/common/helpers.py:196 -msgid "Not Available" -msgstr "Nicht verfügbar" - -#: ../src/common/helpers.py:199 +#: ../src/common/helpers.py:216 msgid "_Free for Chat" msgstr "_Frei zum Chatten" -#: ../src/common/helpers.py:201 +#: ../src/common/helpers.py:218 msgid "Free for Chat" msgstr "Frei zum Chatten" -#: ../src/common/helpers.py:204 +#: ../src/common/helpers.py:221 msgid "_Available" msgstr "_Angemeldet" -#: ../src/common/helpers.py:206 +#: ../src/common/helpers.py:223 msgid "Available" msgstr "Angemeldet" -#: ../src/common/helpers.py:208 +#: ../src/common/helpers.py:225 msgid "Connecting" msgstr "Verbinde" -#: ../src/common/helpers.py:211 +#: ../src/common/helpers.py:228 msgid "A_way" msgstr "_Abwesend" -#: ../src/common/helpers.py:213 -msgid "Away" -msgstr "Abwesend" - -#: ../src/common/helpers.py:216 +#: ../src/common/helpers.py:233 msgid "_Offline" msgstr "A_bgemeldet" -#: ../src/common/helpers.py:218 +#: ../src/common/helpers.py:235 msgid "Offline" msgstr "Abgemeldet" -#: ../src/common/helpers.py:221 +#: ../src/common/helpers.py:238 msgid "_Invisible" msgstr "_Unsichtbar" -#: ../src/common/helpers.py:223 -msgid "Invisible" -msgstr "Unsichtbar" - -#: ../src/common/helpers.py:227 +#: ../src/common/helpers.py:244 msgid "?contact has status:Unknown" msgstr "Unbekannt" -#: ../src/common/helpers.py:229 +#: ../src/common/helpers.py:246 msgid "?contact has status:Has errors" msgstr "Hat Fehler" -#: ../src/common/helpers.py:234 +#: ../src/common/helpers.py:251 msgid "?Subscription we already have:None" msgstr "Keine" -#: ../src/common/helpers.py:236 +#: ../src/common/helpers.py:253 msgid "To" msgstr "An" -#: ../src/common/helpers.py:238 +#: ../src/common/helpers.py:255 msgid "From" msgstr "Von" -#: ../src/common/helpers.py:240 +#: ../src/common/helpers.py:257 msgid "Both" msgstr "Beide" -#: ../src/common/helpers.py:248 +#: ../src/common/helpers.py:265 msgid "?Ask (for Subscription):None" msgstr "Keine:" -#: ../src/common/helpers.py:250 +#: ../src/common/helpers.py:267 msgid "Subscribe" msgstr "Abonnieren" -#: ../src/common/helpers.py:259 +#: ../src/common/helpers.py:276 msgid "?Group Chat Contact Role:None" msgstr "Keine" -#: ../src/common/helpers.py:262 +#: ../src/common/helpers.py:279 msgid "Moderators" msgstr "Moderatoren" -#: ../src/common/helpers.py:264 +#: ../src/common/helpers.py:281 msgid "Moderator" msgstr "Moderator" -#: ../src/common/helpers.py:267 +#: ../src/common/helpers.py:284 msgid "Participants" msgstr "Teilnehmer" -#: ../src/common/helpers.py:269 +#: ../src/common/helpers.py:286 msgid "Participant" msgstr "Teilnehmer" -#: ../src/common/helpers.py:272 +#: ../src/common/helpers.py:289 msgid "Visitors" msgstr "Besucher" -#: ../src/common/helpers.py:274 +#: ../src/common/helpers.py:291 msgid "Visitor" msgstr "Besucher" -#: ../src/common/helpers.py:310 +#: ../src/common/helpers.py:327 msgid "is paying attention to the conversation" msgstr "beobachtet diese Unterhaltung" -#: ../src/common/helpers.py:312 +#: ../src/common/helpers.py:329 msgid "is doing something else" msgstr "tut etwas anderes" -#: ../src/common/helpers.py:314 +#: ../src/common/helpers.py:331 msgid "is composing a message..." -msgstr "schreibt im Moment..." +msgstr "schreibt im Moment ..." #. paused means he or she was compoing but has stopped for a while -#: ../src/common/helpers.py:317 +#: ../src/common/helpers.py:334 msgid "paused composing a message" -msgstr "schreibt im Moment nicht mehr..." +msgstr "schreibt im Moment nicht mehr ..." -#: ../src/common/helpers.py:319 +#: ../src/common/helpers.py:336 msgid "has closed the chat window or tab" -msgstr "hat das Chatfenster oder den Reiter geschlossen" +msgstr "hat das Chatfenster oder den Tab geschlossen" #. we talk about a file -#: ../src/common/optparser.py:62 +#: ../src/common/optparser.py:60 #, python-format msgid "error: cannot open %s for reading" msgstr "Fehler: %s kann nicht zum Lesen geöffnet werden" -#: ../src/common/optparser.py:167 +#: ../src/common/optparser.py:174 msgid "gtk+" msgstr "gtk+" -#: ../src/common/optparser.py:176 ../src/common/optparser.py:177 +#: ../src/common/optparser.py:183 ../src/common/optparser.py:184 msgid "cyan" msgstr "cyan" +#, fuzzy +#~ msgid "_Account:" +#~ msgstr "Konto:" + +#~ msgid "_Subscribe" +#~ msgstr "_Abonnieren" + +#, fuzzy +#~ msgid "Add" +#~ msgstr "Adresse" + +#, fuzzy +#~ msgid "Away " +#~ msgstr "Abwesend" + +#, fuzzy +#~ msgid "Down" +#~ msgstr "Download" + +#, fuzzy +#~ msgid "List of special notifications settings" +#~ msgstr "Füge speziellen Hinweis für %s hinzu" + +#, fuzzy +#~ msgid "Not Available " +#~ msgstr "Nicht verfügbar" + +#, fuzzy +#~ msgid "Default" +#~ msgstr "Löschen" + +#~ msgid "Contact Information" +#~ msgstr "Kontakt-Information" + +#~ msgid "Format: YYYY-MM-DD" +#~ msgstr "Format: JJJJ-MM-TT" + +#~ msgid "Jabber" +#~ msgstr "Jabber" + +#~ msgid "Set _Avatar" +#~ msgstr "_Avatar wählen" + +#~ msgid "Migrating Logs..." +#~ msgstr "Migriere Logs..." + +#~ msgid "Please wait while logs are being migrated..." +#~ msgstr "Bitte warten Sie, während die Logs migriert werden..." + +#~ msgid "Automatically authorize contact" +#~ msgstr "Kontakt automatisch autorisieren" + +#~ msgid "Send File" +#~ msgstr "Datei Senden" + +#~ msgid "Underline" +#~ msgstr "Unterstreichen" + #~ msgid "Would you like to overwrite it?" #~ msgstr "Möchten Sie die Datei überschreiben?" @@ -4883,9 +5847,6 @@ msgstr "cyan" #~ msgid "Please modify your special notification below" #~ msgstr "Bitte wählen Sie eine der Optionen:" -#~ msgid "Ad_vanced Actions" -#~ msgstr "Er_weiterte Aktionen" - #~ msgid "Delete Message of the Day" #~ msgstr "Lösche Nachricht des Tages" @@ -4953,60 +5914,6 @@ msgstr "cyan" #~ msgid "Session bus is not available" #~ msgstr "Session-Bus nicht verfügbar" -#~ msgid "Unable to load idle module" -#~ msgstr "Fehler beim Betreten des Raum" - -#~ msgid "Unable to join room" -#~ msgstr "Fehler beim Betreten des Raum" - -#~ msgid "A password is required to join this room." -#~ msgstr "Für das Betreten dieses Raumes ist ein Passwort nötig." - -#~ msgid "You are banned from this room." -#~ msgstr "Sie sind aus diesem Raum gebannt" - -#~ msgid "Such room does not exist." -#~ msgstr "Dieser Raum existiert nicht." - -#~ msgid "Room creation is restricted." -#~ msgstr "Raumerstellung ist beschränkt" - -#~ msgid "Your registered nickname must be used." -#~ msgstr "Sie müssen Ihren registrierten Spitznamen verwenden" - -#~ msgid "You are not in the members list." -#~ msgstr "Sie sind nicht in der Mitgliedliste" - -#~ msgid "" -#~ "Your desired nickname is in use or registered by another occupant.\n" -#~ "Please specify another nickname below:" -#~ msgstr "" -#~ "Der gwünschte Benutzername wird bereits verwendet oder ist von einem " -#~ "anderen Benutzer registriert.\n" -#~ "Bitte geben Sie einen anderen Benutzernamen an:" - -#~ msgid "we are now subscribed to %s" -#~ msgstr "wir haben jetzt %s abonniert" - -#~ msgid "unsubscribe request from %s" -#~ msgstr "Anfrage zur Kündigung des Abonnements von %s" - -#~ msgid "we are now unsubscribed from %s" -#~ msgstr "%s hat das Abonnement beendet" - -#~ msgid "" -#~ "JID %s is not RFC compliant. It will not be added to your roster. Use " -#~ "roster management tools such as http://jru.jabberstudio.org/ to remove it" -#~ msgstr "" -#~ "Jid % ist nicht RfC-konform. Sie wird nicht zu ihrem Roster hinzugefügt. " -#~ "VerwendenSie ein Roster-Managmenttool wie http://jru.jabberstudio.org/ um " -#~ "ihn zu entfernen." - -#~ msgid "Registration information for transport %s has not arrived in time" -#~ msgstr "" -#~ "Registrierungsinformation für Transport %s sind nicht rechtzeitig " -#~ "angekommen" - #~ msgid "Sound" #~ msgstr "Sound" @@ -5075,9 +5982,6 @@ msgstr "cyan" #~ msgid "Stoping selected file transfer" #~ msgstr "Bricht den ausgewählten Dateitransfer ab" -#~ msgid "Use a single chat window with _tabs" -#~ msgstr "Ein einzelnes Chat-Fenster mit _Reitern verwenden" - #~ msgid "" #~ "If you close this tab and you have history disabled, the message will be " #~ "lost." @@ -5128,12 +6032,6 @@ msgstr "cyan" #~ msgid "(%s/s)" #~ msgstr "(%s/s)" -#~ msgid "Dbus is not supported." -#~ msgstr "Dbus wird nicht unterstützt." - -#~ msgid "Service not available" -#~ msgstr "Dienst nicht verfügbar" - #~ msgid "Session bus is not available." #~ msgstr "Session-Bus nicht verfügbar." @@ -5164,9 +6062,6 @@ msgstr "cyan" #~ msgid "Send Authorization to" #~ msgstr "Autorisierung senden" -#~ msgid "No such command: /%s" -#~ msgstr "Kein Kommando: /%s" - #~ msgid "Log" #~ msgstr "Log" @@ -5176,9 +6071,6 @@ msgstr "cyan" #~ msgid "Log presences in an _external file" #~ msgstr "Anwesenheit in eine _externe Datei speichern" -#~ msgid "Unable to write file in %s" -#~ msgstr "Kann Datei nicht in %s schreiben" - #~ msgid "" #~ "You can set advanced account options by pressing Advanced button,or later " #~ "by clicking in Accounts menuitem under Edit menu from the main window." @@ -5318,9 +6210,6 @@ msgstr "cyan" #~ msgid "_Compact View" #~ msgstr "_Kompakte Ansicht" -#~ msgid "_Nickname:" -#~ msgstr "_Spitzname:" - #~ msgid "_Refresh" #~ msgstr "_Aktualisieren" @@ -5343,9 +6232,6 @@ msgstr "cyan" #~ msgid "New _Room" #~ msgstr "Neuer _Raum" -#~ msgid "Account:" -#~ msgstr "Konto:" - #~ msgid "Always use compact _view" #~ msgstr "Benutze immer die kompakte Ansicht" diff --git a/po/el.po b/po/el.po index b979341eb..4c1284826 100644 --- a/po/el.po +++ b/po/el.po @@ -7,12 +7,12 @@ # Filippos Papadopoulos , 2005. # Stathis Kamperis , 2005 # -#: ../src/gajim-remote.py:204 ../src/gajim-remote.py:211 +#: ../src/gajim-remote.py:218 ../src/gajim-remote.py:225 msgid "" msgstr "" "Project-Id-Version: gajim\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2006-04-13 12:52+0200\n" +"POT-Creation-Date: 2006-07-04 00:03+0200\n" "PO-Revision-Date: 2006-04-19 18:47+0200\n" "Last-Translator: Stavros Giannouris \n" "Language-Team: Hellenic-Ελληνικά-Greek\n" @@ -36,30 +36,2117 @@ msgstr "Gajim Instant Messenger" msgid "Jabber IM Client" msgstr "Ένα Ï€ÏόγÏαμμα για το Jabber" -#: ../src/advanced.py:71 +#: ../data/glade/account_context_menu.glade.h:1 +msgid "Send Single _Message..." +msgstr "Αποστολή Î¼Î¿Î½Î¿Ï _μηνÏματος" + +#: ../data/glade/account_context_menu.glade.h:2 +msgid "_Add Contact..." +msgstr "_ΠÏοσθήκη επαφής..." + +#: ../data/glade/account_context_menu.glade.h:3 +msgid "_Discover Services..." +msgstr "ΕÏÏεση _ΥπηÏεσιών..." + +#: ../data/glade/account_context_menu.glade.h:4 +#: ../data/glade/roster_window.glade.h:15 +#: ../data/glade/systray_context_menu.glade.h:5 +msgid "_Group Chat" +msgstr "_Ομαδική συζήτηση" + +#: ../data/glade/account_context_menu.glade.h:5 +msgid "_Modify Account..." +msgstr "_ΕπεξεÏγασία λογαÏιασμοÏ..." + +#: ../data/glade/account_context_menu.glade.h:6 +msgid "_Status" +msgstr "_Κατάσταση" + +#: ../data/glade/account_creation_wizard_window.glade.h:1 +msgid "" +"Account is being created\n" +"\n" +"Please wait..." +msgstr "" +"Ο ΛογαÏιασμός δημιουÏγείται\n" +"\n" +"ΠαÏακαλώ πεÏιμένετε..." + +#: ../data/glade/account_creation_wizard_window.glade.h:4 +msgid "Please choose one of the options below:" +msgstr "ΠαÏακαλώ επιλέξτε ένα από τα παÏακάτω:" + +#: ../data/glade/account_creation_wizard_window.glade.h:5 +msgid "Please fill in the data for your new account" +msgstr "ΠαÏακαλώ συμπληÏώστε τα δεδομένα για το νέο λογαÏιασμό σας" + +#: ../data/glade/account_creation_wizard_window.glade.h:6 +msgid "Click to see features (like MSN, ICQ transports) of jabber servers" +msgstr "" +"Πατήστε για να δείτε τα χαÏακτηÏιστικά (όπως μεταφοÏές MSN, ICQ) των " +"διακομιστών του jabber" + +#: ../data/glade/account_creation_wizard_window.glade.h:7 +msgid "Connect when I press Finish" +msgstr "ΣÏνδεση όταν επιλέξω Τέλος" + +#: ../data/glade/account_creation_wizard_window.glade.h:8 +msgid "Gajim: Account Creation Wizard" +msgstr "Gajim: Οδηγός δημιουÏγίας λογαÏιασμοÏ" + +#: ../data/glade/account_creation_wizard_window.glade.h:9 +msgid "I already have an account I want to use" +msgstr "Έχω ήδη ένα λογαÏιασμό που θέλω να χÏησιμοποιήσω" + +#: ../data/glade/account_creation_wizard_window.glade.h:10 +msgid "I want to _register for a new account" +msgstr "_Επιλέξτε εάν επιθυμείτε να καταχωÏήσετε νέο jabber λογαÏιασμό" + +#: ../data/glade/account_creation_wizard_window.glade.h:11 +#: ../data/glade/account_modification_window.glade.h:18 +msgid "If checked, Gajim will remember the password for this account" +msgstr "Αν επιλεγεί, το Gajim θα θυμάται τον κωδικό για αυτόν το λογαÏιασμό" + +#: ../data/glade/account_creation_wizard_window.glade.h:12 +#: ../data/glade/manage_proxies_window.glade.h:6 +msgid "Pass_word:" +msgstr "_Κωδικός:" + +#: ../data/glade/account_creation_wizard_window.glade.h:13 +#: ../data/glade/account_modification_window.glade.h:37 +msgid "Save pass_word" +msgstr "_Αποθήκευση" + +#: ../data/glade/account_creation_wizard_window.glade.h:14 +msgid "Servers Features" +msgstr "ΧαÏακτηÏιστικά διακομιστή" + +#: ../data/glade/account_creation_wizard_window.glade.h:15 +msgid "Set my profile when I connect" +msgstr "ΚαθοÏισμός του Ï€Ïοφίλ μου κατά τη σÏνδεση" + +#: ../data/glade/account_creation_wizard_window.glade.h:16 +msgid "" +"You need to have an account in order to connect\n" +"to the Jabber network." +msgstr "" +"ΠÏέπει να δημιουÏγήσετε ένα λογαÏιασμό Ï€ÏÎ¿Ï„Î¿Ï Î¼Ï€Î¿Ïέσετε\n" +"να συνδεθείτε στο Jabber." + +#: ../data/glade/account_creation_wizard_window.glade.h:18 +msgid "Your JID:" +msgstr "Το JID σας:" + +#: ../data/glade/account_creation_wizard_window.glade.h:19 +#: ../data/glade/roster_window.glade.h:10 +msgid "_Advanced" +msgstr "Για Ï€Ïο_χωÏημένους" + +#: ../data/glade/account_creation_wizard_window.glade.h:20 +msgid "_Finish" +msgstr "_Τέλος" + +#: ../data/glade/account_creation_wizard_window.glade.h:21 +#: ../data/glade/manage_proxies_window.glade.h:9 +msgid "_Host:" +msgstr "_Ξένος υπολογιστής:" + +#: ../data/glade/account_creation_wizard_window.glade.h:22 +#: ../data/glade/account_modification_window.glade.h:45 +msgid "_Password:" +msgstr "_Κωδικός:" + +#: ../data/glade/account_creation_wizard_window.glade.h:23 +#: ../data/glade/manage_proxies_window.glade.h:10 +msgid "_Port:" +msgstr "_ΘÏÏα:" + +#: ../data/glade/account_creation_wizard_window.glade.h:24 +msgid "_Retype Password:" +msgstr "Επανά_ληψη κωδικοÏ:" + +#: ../data/glade/account_creation_wizard_window.glade.h:25 +msgid "_Server:" +msgstr "_Διακομιστής:" + +#: ../data/glade/account_creation_wizard_window.glade.h:26 +msgid "_Use proxy" +msgstr "_ΧÏήση μεσολαβητή" + +#: ../data/glade/account_creation_wizard_window.glade.h:27 +#: ../data/glade/manage_proxies_window.glade.h:11 +msgid "_Username:" +msgstr "_Όνομα χÏήστη:" + +#: ../data/glade/account_modification_window.glade.h:1 +#: ../data/glade/preferences_window.glade.h:8 +msgid "Miscellaneous" +msgstr "ΔιάφοÏα" + +#: ../data/glade/account_modification_window.glade.h:2 +msgid "OpenPGP" +msgstr "OpenPGP" + +#: ../data/glade/account_modification_window.glade.h:3 +msgid "Personal Information" +msgstr "ΠÏοσωπικές πληÏοφοÏίες" + +#: ../data/glade/account_modification_window.glade.h:4 +msgid "Account" +msgstr "ΛογαÏιασμός" + +#: ../data/glade/account_modification_window.glade.h:5 +msgid "Account Modification" +msgstr "ΤÏοποποίηση λογαÏιασμοÏ" + +#: ../data/glade/account_modification_window.glade.h:6 +msgid "Autoreconnect when connection is lost" +msgstr "Αυτόματη επανασÏνδεση κατά την απώλεια της σÏνδεσης" + +#: ../data/glade/account_modification_window.glade.h:7 +msgid "C_onnect on Gajim startup" +msgstr "ΣÏνδεση κατά την ε_κκίνηση του Gajim" + +#: ../data/glade/account_modification_window.glade.h:8 +msgid "Chan_ge Password" +msgstr "Αλλα_γή συνθηματικοÏ" + +#: ../data/glade/account_modification_window.glade.h:9 +msgid "" +"Check this so Gajim will connect in port 5223 where legacy servers are " +"expected to have SSL capabilities. Note that Gajim uses TLS encryption by " +"default if broadcasted by the server, and with this option enabled TLS will " +"be disabled" +msgstr "" +"Επιλέξτε το ώστε το Gajim να συνδεθεί στην θÏÏα 5223 όπου οι παλαιότεÏοι " +"διακομιστές αναμένουν SSL σÏνδεση. Σημειώστε ότι το Gajim χÏησιμοποιεί " +"κÏυπτογÏάφηση TLS αυτόματα αν αυτή η δυνατότητα του γνωστοποιηθεί από τον " +"διακομιστή, και ότι με αυτή την επιλογή απενεÏγοποιείτε το TLS" + +#: ../data/glade/account_modification_window.glade.h:10 +msgid "Choose _Key..." +msgstr "Επιλογή _κλειδιοÏ..." + +#: ../data/glade/account_modification_window.glade.h:11 +msgid "Click to change account's password" +msgstr "Πατήστε για να αλλάξετε τον κωδικό του λογαÏιασμοÏ" + +#: ../data/glade/account_modification_window.glade.h:12 +msgid "Connection" +msgstr "ΣÏνδεση" + +#: ../data/glade/account_modification_window.glade.h:13 +msgid "Edit Personal Information..." +msgstr "ΤÏοποποίηση Ï€Ïοσωπικών πληÏοφοÏιών..." + +#: ../data/glade/account_modification_window.glade.h:14 +#: ../data/glade/roster_window.glade.h:5 ../src/notify.py:308 +#: ../src/notify.py:330 ../src/notify.py:342 ../src/tooltips.py:350 +msgid "Gajim" +msgstr "Gajim" + +#: ../data/glade/account_modification_window.glade.h:15 +#: ../data/glade/preferences_window.glade.h:44 +#: ../data/glade/vcard_information_window.glade.h:17 +#: ../src/roster_window.py:290 ../src/roster_window.py:1184 +#: ../src/roster_window.py:1405 +msgid "General" +msgstr "Γενικά" + +#: ../data/glade/account_modification_window.glade.h:16 +msgid "Hostname: " +msgstr "Ξένος υπολογιστής:" + +#: ../data/glade/account_modification_window.glade.h:17 +#, fuzzy +msgid "" +"If checked, Gajim will also broadcast some more IPs except from just your " +"IP, so file transfer has higher chances of working." +msgstr "" +"Αν επιλεγεί, το Gajim θα δημοσιοποιήσει μεÏικές ακόμα IP εκτός από τη δική " +"σας, ώστε να υπάÏχουν πεÏισσότεÏες πιθανότητες να δουλέψει η μεταφοÏά " +"αÏχείων." + +#: ../data/glade/account_modification_window.glade.h:19 +msgid "" +"If checked, Gajim will send keep-alive packets so it prevents connection " +"timeout which results in disconnection" +msgstr "" +"Αν επιλεγεί, το Gajim θα στέλνει πακέτα keep-alive ώστε να αποφÏγει την " +"διακοπή της σÏνδεσης" + +#: ../data/glade/account_modification_window.glade.h:20 +msgid "" +"If checked, Gajim will store the password in ~/.gajim/config with 'read' " +"permission only for you" +msgstr "" +"Εάν επιλεγεί, το Gajim θα αποθηκεÏσει το συνθηματικό στο ~/.gajim/config με " +"δικαίωμα ανάγνωσης μόνο για εσάς" + +#: ../data/glade/account_modification_window.glade.h:21 +msgid "" +"If checked, Gajim, when launched, will automatically connect to jabber using " +"this account" +msgstr "" +"Εάν επιλεγεί, το Gajim, όταν εκτελεστεί, θα συνδεθεί αυτόματα στο jabber " +"χÏησιμοποιώντας αυτόν το λογαÏιασμό" + +#: ../data/glade/account_modification_window.glade.h:22 +msgid "" +"If checked, any change to the global status (handled by the combobox at the " +"bottom of the roster window) will change the status of this account " +"accordingly" +msgstr "" +"Εάν επιλεγεί, οι αλλαγές που γίνονται στη γενική κατάσταση (από τον επιλογέα " +"στο κάτω μέÏος της λίστας επαφών) θα αλλάζουν ανάλογα την κατάσταση Î±Ï…Ï„Î¿Ï " +"του λογαÏιασμοÏ" + +#: ../data/glade/account_modification_window.glade.h:23 +msgid "Information about you, as stored in the server" +msgstr "Οι πληÏοφοÏίες για εσάς αποθηκεÏονται στο διακομιστή" + +#: ../data/glade/account_modification_window.glade.h:24 +msgid "Manage..." +msgstr "ΔιαχείÏιση..." + +#: ../data/glade/account_modification_window.glade.h:25 ../src/config.py:1448 +msgid "No key selected" +msgstr "Καμία επιλογή κλειδιοÏ" + +#. None means no proxy profile selected +#: ../data/glade/account_modification_window.glade.h:27 ../src/config.py:1053 +#: ../src/config.py:1058 ../src/config.py:1230 ../src/config.py:1505 +#: ../src/config.py:1578 ../src/config.py:2282 +msgid "None" +msgstr "Τίποτα" + +#: ../data/glade/account_modification_window.glade.h:28 +msgid "Personal Information" +msgstr "ΠÏοσωπικές πληÏοφοÏίες" + +#: ../data/glade/account_modification_window.glade.h:29 +msgid "Port: " +msgstr "ΘÏÏα: " + +#: ../data/glade/account_modification_window.glade.h:30 +msgid "Priori_ty:" +msgstr "Π_ÏοτεÏαιότητα:" + +#: ../data/glade/account_modification_window.glade.h:31 +msgid "" +"Priority is used in Jabber to determine who gets the events from the jabber " +"server when two or more clients are connected using the same account; The " +"client with the highest priority gets the events" +msgstr "" +"Η Ï€ÏοτεÏαιότητα χÏησιμοποιείται στο Jabber για να καθοÏίσει ποιος λαμβάνει " +"τα γεγονότα από τον jabber διακομιστή όταν δÏο ή πεÏισσότεÏες εφαÏμογές " +"είναι συνδεδεμένες χÏησιμοποιώντας τον ίδιο λογαÏιασμό· Η εφαÏμογή με την " +"μεγαλÏτεÏη Ï€ÏοτεÏαιότητα λαμβάνει τα γεγονότα" + +#: ../data/glade/account_modification_window.glade.h:32 +msgid "Proxy:" +msgstr "Μεσολαβητής:" + +#: ../data/glade/account_modification_window.glade.h:33 +msgid "Resour_ce: " +msgstr "_ΠόÏος: " + +#: ../data/glade/account_modification_window.glade.h:34 +msgid "" +"Resource is sent to the Jabber server in order to separate the same JID in " +"two or more parts depending on the number of the clients connected in the " +"same server with the same account. So you might be connected in the same " +"account with resource 'Home' and 'Work' at the same time. The resource which " +"has the highest priority will get the events. (see below)" +msgstr "" +"Ο πόÏος στέλνεται στον Jabber διακομιστή ώστε να διαχωÏιστεί το ίδιο JID σε " +"δÏο ή πεÏισσότεÏα μέÏη ανάλογα με τον αÏιθμό των εφαÏμογών που είναι " +"συνδεδεμένες στον ίδιο διακομιστή με τον ίδιο λογαÏιασμό. Έτσι μποÏείτε να " +"είστε συνδεδεμένος με τον ίδιο λογαÏιασμό με πόÏο 'Σπίτι' και 'Δουλειά' την " +"ίδια στιγμή. Ο πόÏος με τη μεγαλÏτεÏη Ï€ÏοτεÏαιότητα θα λαμβάνει τα γεγονότα. " +"(βλέπε και πιο κάτω)" + +#: ../data/glade/account_modification_window.glade.h:35 +msgid "Save _passphrase (insecure)" +msgstr "Αποθήκευση _κωδικοφÏάσης (πεÏιοÏισμένη ασφάλεια)" + +#: ../data/glade/account_modification_window.glade.h:36 +msgid "Save conversation _logs for all contacts" +msgstr "Αποθήκευση ιστοÏι_ÎºÎ¿Ï ÏƒÏ…Î½Î¿Î¼Î¹Î»Î¹ÏŽÎ½ για όλες τις επαφές" + +#: ../data/glade/account_modification_window.glade.h:38 +msgid "Send keep-alive packets" +msgstr "Αποστολή πακέτων keep-alive" + +#: ../data/glade/account_modification_window.glade.h:39 +msgid "Synch_ronize account status with global status" +msgstr "ΣυγχÏο_νισμός κατάστασης λογαÏÎ¹Î±ÏƒÎ¼Î¿Ï Î¼Îµ την γενική κατάσταση" + +#: ../data/glade/account_modification_window.glade.h:40 +msgid "Use _SSL (legacy)" +msgstr "ΧÏήση _SSL (για λόγους συμβατότητας)" + +#: ../data/glade/account_modification_window.glade.h:41 +msgid "Use custom hostname/port" +msgstr "ΧÏήση Ï€ÏοσαÏμοσμένου διακομιστή/θÏÏας" + +#: ../data/glade/account_modification_window.glade.h:42 +msgid "Use file transfer proxies" +msgstr "ΧÏήση μεσολαβητών μεταφοÏάς αÏχείων" + +#: ../data/glade/account_modification_window.glade.h:43 +#: ../data/glade/add_new_contact_window.glade.h:6 +msgid "_Jabber ID:" +msgstr "_Jabber ID:" + +#: ../data/glade/account_modification_window.glade.h:44 +msgid "_Name: " +msgstr "_Όνομα: " + +#: ../data/glade/accounts_window.glade.h:1 +msgid "Accounts" +msgstr "ΛογαÏιασμοί" + +#: ../data/glade/accounts_window.glade.h:2 +msgid "" +"If you have 2 or more accounts and it is checked, Gajim will list all " +"contacts as if you had one account" +msgstr "" +"Αν έχετε 2 ή πεÏισσότεÏους λογαÏιασμοÏÏ‚ και έχει επιλεγεί, το Gajim θα " +"εμφανίζει τις επαφές σας σαν να είχατε ένα λογαÏιασμό" + +#: ../data/glade/accounts_window.glade.h:3 +msgid "_Merge accounts" +msgstr "_Συνένωση λογαÏιασμών" + +#: ../data/glade/accounts_window.glade.h:4 +msgid "_Modify" +msgstr "_ΤÏοποποίηση" + +#: ../data/glade/accounts_window.glade.h:5 +#: ../data/glade/remove_account_window.glade.h:4 +msgid "_Remove" +msgstr "_ΑφαίÏεση" + +#: ../data/glade/add_new_contact_window.glade.h:1 +#, fuzzy +msgid "A_llow this contact to view my status" +msgstr "ΕπίτÏεψε τον/την να βλέπει την κατάστασή μου" + +#: ../data/glade/add_new_contact_window.glade.h:2 +msgid "Add New Contact" +msgstr "ΠÏοσθήκη νέας επαφής" + +#: ../data/glade/add_new_contact_window.glade.h:3 +msgid "I would like to add you to my contact list." +msgstr "Θα ήθελα να σε Ï€Ïοσθέσω στην λίστα επαφών μου." + +#: ../data/glade/add_new_contact_window.glade.h:4 +#, fuzzy +msgid "_Account:" +msgstr "ΛογαÏιασμός:" + +#: ../data/glade/add_new_contact_window.glade.h:5 +#, fuzzy +msgid "_Group:" +msgstr "Ομάδα:" + +#: ../data/glade/add_new_contact_window.glade.h:7 +msgid "_Nickname:" +msgstr "_Όνομα χÏήστη:" + +#: ../data/glade/add_new_contact_window.glade.h:8 +#, fuzzy +msgid "_Protocol:" +msgstr "ΠÏωτόκολλο:" + +#: ../data/glade/add_new_contact_window.glade.h:9 +msgid "_Subscribe" +msgstr "_ΕγγÏαφή" + +#: ../data/glade/add_new_contact_window.glade.h:10 +#, fuzzy +msgid "_User ID:" +msgstr "Ταυτότητα χÏήστη:" + +#: ../data/glade/advanced_configuration_window.glade.h:1 +msgid "Description" +msgstr "ΠεÏιγÏαφή" + +#: ../data/glade/advanced_configuration_window.glade.h:2 +msgid "NOTE: You should restart gajim for some setting to take effect" +msgstr "" +"ΣΗΜΕΙΩΣΗ: Θα Ï€Ïέπει να επανεκκινήσετε το gajim για να εφαÏμοστοÏν " +"μεÏικές Ïυθμίσεις" + +#: ../data/glade/advanced_configuration_window.glade.h:3 +msgid "Advanced Configuration Editor" +msgstr "ΕπεξεÏγασία Ïυθμίσεων για Ï€ÏοχωÏημένους" + +#: ../data/glade/advanced_configuration_window.glade.h:4 +msgid "Filter:" +msgstr "ΦιλτÏάÏισμα:" + +#: ../data/glade/advanced_menuitem_menu.glade.h:1 +msgid "Delete MOTD" +msgstr "ΔιαγÏαφή MOTD" + +#: ../data/glade/advanced_menuitem_menu.glade.h:2 +msgid "Deletes Message of the Day" +msgstr "ΔιαγÏάφει το Μήνυμα της ΗμέÏας (MOTD)" + +#: ../data/glade/advanced_menuitem_menu.glade.h:3 +msgid "Sends a message to currently connected users to this server" +msgstr "" +"Στέλνει ένα μήνυμα στους χÏήστες που είναι συνδεδεμένοι σε αυτό το διακομιστή" + +#: ../data/glade/advanced_menuitem_menu.glade.h:4 +msgid "Set MOTD" +msgstr "ΟÏισμός MOTD" + +#: ../data/glade/advanced_menuitem_menu.glade.h:5 +msgid "Sets Message of the Day" +msgstr "ΟÏίζει το Μήνυμα της ΗμέÏας (MOTD)" + +#: ../data/glade/advanced_menuitem_menu.glade.h:6 +msgid "Show _XML Console" +msgstr "Κονσόλα _XML" + +#: ../data/glade/advanced_menuitem_menu.glade.h:7 +msgid "Update MOTD" +msgstr "ΕνημέÏωση MOTD" + +#: ../data/glade/advanced_menuitem_menu.glade.h:8 +msgid "Updates Message of the Day" +msgstr "ΕνημεÏώνει το Μήνυμα της ΗμέÏας (MOTD)" + +#: ../data/glade/advanced_menuitem_menu.glade.h:9 +msgid "_Administrator" +msgstr "_ΔιαχειÏιστής" + +#: ../data/glade/advanced_menuitem_menu.glade.h:10 +msgid "_Privacy Lists" +msgstr "" + +#: ../data/glade/advanced_menuitem_menu.glade.h:11 +msgid "_Send Server Message" +msgstr "_Αποστολή μηνÏματος διακομιστή" + +#: ../data/glade/advanced_menuitem_menu.glade.h:12 +msgid "_Send Single Message" +msgstr "_Αποστολή Î¼Î¿Î½Î¿Ï Î¼Î·Î½Ïματος" + +#: ../data/glade/advanced_notifications_window.glade.h:1 +msgid " a window/tab opened with that contact " +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:2 +#, fuzzy +msgid "Actions" +msgstr "ΕφαÏμογές" + +#: ../data/glade/advanced_notifications_window.glade.h:3 +#, fuzzy +msgid "Conditions" +msgstr "Ήχοι" + +#: ../data/glade/advanced_notifications_window.glade.h:4 +#: ../data/glade/preferences_window.glade.h:10 +msgid "Sounds" +msgstr "Ήχοι" + +#: ../data/glade/advanced_notifications_window.glade.h:5 +#, fuzzy +msgid "Add" +msgstr "ΔιεÏθυνση" + +#: ../data/glade/advanced_notifications_window.glade.h:6 +#, fuzzy +msgid "Advanced Actions" +msgstr "ΕνέÏγειες για ΠÏο_χωÏημένους" + +#: ../data/glade/advanced_notifications_window.glade.h:7 +#, fuzzy +msgid "Advanced Notifications Control" +msgstr "ΕπεξεÏγασία Ïυθμίσεων για Ï€ÏοχωÏημένους" + +#: ../data/glade/advanced_notifications_window.glade.h:8 +#, fuzzy +msgid "All Status " +msgstr "Κατάσταση: " + +#: ../data/glade/advanced_notifications_window.glade.h:9 +msgid "And I " +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:10 +#, fuzzy +msgid "Away " +msgstr "ΑπομακÏυσμένος" + +#: ../data/glade/advanced_notifications_window.glade.h:11 +#, fuzzy +msgid "Busy " +msgstr "Απασχολημένος" + +#: ../data/glade/advanced_notifications_window.glade.h:12 +msgid "Don't have " +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:13 +#, fuzzy +msgid "Down" +msgstr "Λήψη" + +#: ../data/glade/advanced_notifications_window.glade.h:14 +msgid "Have " +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:15 +#: ../src/common/helpers.py:239 +msgid "Invisible" +msgstr "Αφανής" + +#: ../data/glade/advanced_notifications_window.glade.h:16 +#, fuzzy +msgid "Launch a command" +msgstr "εντολή" + +#: ../data/glade/advanced_notifications_window.glade.h:17 +#, fuzzy +msgid "List of special notifications settings" +msgstr "ΠÏοσθήκη ειδικής ειδοποίησης για το %s" + +#: ../data/glade/advanced_notifications_window.glade.h:18 +#, fuzzy +msgid "Not Available " +msgstr "Μη διαθέσιμος" + +#: ../data/glade/advanced_notifications_window.glade.h:19 +#, fuzzy +msgid "Online / Free For Chat" +msgstr "Διαθέσιμος για κουβέντα" + +#: ../data/glade/advanced_notifications_window.glade.h:20 +#, fuzzy +msgid "Play a sound" +msgstr "ΑναπαÏαγωγή _ήχων" + +#: ../data/glade/advanced_notifications_window.glade.h:21 +msgid "" +"Receive a Message\n" +"Contact Connected\n" +"Contact Disconnected\n" +"Contact Change Status\n" +"Group Chat Message Highlight\n" +"Group Chat Message Received\n" +"File Transfert Resquest\n" +"File Transfert Started\n" +"File Transfert Finished" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:30 +msgid "Some special(s) status..." +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:31 +msgid "Up" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:32 +msgid "When " +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:33 +msgid "_Activate Windows manager UrgencyHint to make chat taskbar to flash" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:34 +#, fuzzy +msgid "_Disable auto opening chat window" +msgstr "ΑποκÏÏπτει τα κουμπιά σε παÏάθυÏο ομαδικής κουβέντας" + +#: ../data/glade/advanced_notifications_window.glade.h:35 +msgid "_Disable existing popup window" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:36 +msgid "_Disable existing sound for this event" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:37 +msgid "_Disable showing event in roster" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:38 +msgid "_Disable showing event in systray" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:39 +msgid "_Inform me with a popup window" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:40 +#, fuzzy +msgid "_Open chat window with user" +msgstr "ΧÏήση ενός παÏαθÏÏου κουβέντας με _καÏτέλες" + +#: ../data/glade/advanced_notifications_window.glade.h:41 +#, fuzzy +msgid "_Show event in roster" +msgstr "Εμφά_νισε το μόνο στο κÏÏιο παÏάθυÏο" + +#: ../data/glade/advanced_notifications_window.glade.h:42 +#, fuzzy +msgid "_Show event in systray" +msgstr "Εμφά_νισε το μόνο στο κÏÏιο παÏάθυÏο" + +#: ../data/glade/advanced_notifications_window.glade.h:43 +msgid "" +"contact(s)\n" +"group(s)\n" +"everybody" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:46 +#, fuzzy +msgid "for " +msgstr "ΘÏÏα: " + +#: ../data/glade/advanced_notifications_window.glade.h:47 +msgid "when I'm " +msgstr "" + +#: ../data/glade/change_password_dialog.glade.h:1 +msgid "Change Password" +msgstr "Αλλαγή κωδικοÏ" + +#: ../data/glade/change_password_dialog.glade.h:2 +msgid "Enter it again for confirmation:" +msgstr "ΕπαναπληκτÏολογήστε για επιβεβαίωση:" + +#: ../data/glade/change_password_dialog.glade.h:3 +msgid "Enter new password:" +msgstr "ΠληκτÏολογήστε νέο κωδικό:" + +#: ../data/glade/change_status_message_dialog.glade.h:1 +msgid "Type your new status message" +msgstr "Εισάγετε το νέο μήνυμα κατάστασης" + +#: ../data/glade/change_status_message_dialog.glade.h:2 +msgid "Preset messages:" +msgstr "ΠÏοκαθοÏισμένα μηνÏματα:" + +#: ../data/glade/change_status_message_dialog.glade.h:3 +msgid "Save as Preset..." +msgstr "Αποθήκευση ως Ï€ÏοκαθοÏισμένο..." + +#: ../data/glade/chat_context_menu.glade.h:1 +msgid "Join _Group Chat" +msgstr "Συμμετοχή σε _Ομαδική συζήτηση" + +#: ../data/glade/chat_context_menu.glade.h:2 +#: ../data/glade/chat_control_popup_menu.glade.h:4 +#: ../data/glade/gc_occupants_menu.glade.h:2 +#: ../data/glade/roster_contact_context_menu.glade.h:8 +msgid "_Add to Roster" +msgstr "_ΠÏοσθήκη στη λίστα επαφών" + +#: ../data/glade/chat_context_menu.glade.h:3 +msgid "_Copy JID/Email Address" +msgstr "Α_ντιγÏαφή JID/Email διεÏθυνσης" + +#: ../data/glade/chat_context_menu.glade.h:4 +msgid "_Copy Link Location" +msgstr "_ΑντιγÏαφή τοποθεσίας δεσμοÏ" + +#: ../data/glade/chat_context_menu.glade.h:5 +msgid "_Open Email Composer" +msgstr "_Άνοιγμα Ï€ÏογÏάμματος αλληλογÏαφίας" + +#: ../data/glade/chat_context_menu.glade.h:6 +msgid "_Open Link in Browser" +msgstr "_Άνοιγμα Î´ÎµÏƒÎ¼Î¿Ï ÏƒÎµ πεÏιηγητή" + +#: ../data/glade/chat_context_menu.glade.h:7 +#: ../data/glade/roster_window.glade.h:19 +#: ../data/glade/systray_context_menu.glade.h:6 +msgid "_Start Chat" +msgstr "_ΈναÏξη κουβέντας" + +#: ../data/glade/chat_control_popup_menu.glade.h:1 +msgid "Click to see past conversations with this contact" +msgstr "Πατήστε για να δείτε παλιότεÏες συζητήσεις με αυτή την επαφή" + +#: ../data/glade/chat_control_popup_menu.glade.h:2 +#: ../data/glade/roster_contact_context_menu.glade.h:6 +msgid "Send _File" +msgstr "Αποστολή _αÏχείου" + +#: ../data/glade/chat_control_popup_menu.glade.h:3 +msgid "Toggle Open_PGP Encryption" +msgstr "Εν/ΑπενεÏγοποίηση _κÏυπτογÏάφησης OpenPGP" + +#: ../data/glade/chat_control_popup_menu.glade.h:5 +#: ../data/glade/gc_control_popup_menu.glade.h:6 +msgid "_Compact View Alt+C" +msgstr "_Συμπαγής όψη Alt+C" + +#: ../data/glade/chat_control_popup_menu.glade.h:6 +#: ../data/glade/gc_control_popup_menu.glade.h:7 +#: ../data/glade/gc_occupants_menu.glade.h:5 +#: ../data/glade/roster_contact_context_menu.glade.h:11 +msgid "_History" +msgstr "_ΙστοÏικό" + +#: ../data/glade/data_form_window.glade.h:1 +msgid "Room Configuration" +msgstr "Ρυθμίσεις δωματίου" + +#: ../data/glade/edit_groups_dialog.glade.h:1 +msgid "Edit Groups" +msgstr "ΤÏοποποίηση ομάδων" + +#: ../data/glade/filetransfers.glade.h:1 +msgid "A list of active, completed and stopped file transfers" +msgstr "Λίστα ενεÏγών, ολοκληÏωμένων και σταματημένων μεταφοÏών αÏχείων" + +#: ../data/glade/filetransfers.glade.h:2 +msgid "Cancel file transfer" +msgstr "ΑκÏÏωση της μεταφοÏάς αÏχείου" + +#: ../data/glade/filetransfers.glade.h:3 +msgid "Cancels the selected file transfer" +msgstr "ΑκυÏώνει την επιλεγμένη μεταφοÏά αÏχείου" + +#: ../data/glade/filetransfers.glade.h:4 +msgid "Cancels the selected file transfer and removes incomplete file" +msgstr "" +"ΑκυÏώνει την επιλεγμένη μεταφοÏά αÏχείου και διαγÏάφει το ημιτελές αÏχείο" + +#: ../data/glade/filetransfers.glade.h:5 +msgid "Clean _up" +msgstr "Εκκα_θάÏιση" + +#: ../data/glade/filetransfers.glade.h:6 +msgid "File Transfers" +msgstr "ΜεταφοÏές αÏχείων" + +#: ../data/glade/filetransfers.glade.h:7 +msgid "Hides the window" +msgstr "ΑποκÏÏπτει το παÏάθυÏο" + +#: ../data/glade/filetransfers.glade.h:8 +msgid "Remove file transfer from the list." +msgstr "ΑφαίÏεση της μεταφοÏάς αÏχείου από τη λίστα." + +#: ../data/glade/filetransfers.glade.h:9 +msgid "Removes completed, canceled and failed file transfers from the list" +msgstr "" +"ΑφαιÏεί τις ολοκληÏωμένες, ακυÏωμένες και αποτυχημένες μεταφοÏές από τη λίστα" + +#: ../data/glade/filetransfers.glade.h:10 +msgid "Shows a list of file transfers between you and other" +msgstr "Δείχνει τη λίστα μεταφοÏών αÏχείων Î¼ÎµÏ„Î±Î¾Ï ÎµÏƒÎ¬Ï‚ και άλλων" + +#: ../data/glade/filetransfers.glade.h:11 +msgid "" +"This action removes single file transfer from the list. If the transfer is " +"active, it is first stopped and then removed" +msgstr "" +"Αυτή η ενέÏγεια αφαιÏεί μια μεταφοÏά αÏχείου από τη λίστα. Αν η μεταφοÏά " +"είναι ενεÏγή, τότε Ï€Ïώτα διακόπτεται και μετά αφαιÏείται" + +#: ../data/glade/filetransfers.glade.h:12 +msgid "When a file transfer is complete show a popup notification" +msgstr "Ειδοποίησε με όταν έχει ολοκληÏωθεί μια μεταφοÏά αÏχείου" + +#: ../data/glade/filetransfers.glade.h:13 ../src/filetransfers_window.py:753 +msgid "_Continue" +msgstr "_Συνέχεια" + +#: ../data/glade/filetransfers.glade.h:14 +msgid "_Notify me when a file transfer is complete" +msgstr "_Ειδοποίησε με όταν έχει ολοκληÏωθεί μια μεταφοÏά αÏχείου" + +#: ../data/glade/filetransfers.glade.h:15 ../src/filetransfers_window.py:190 +msgid "_Open Containing Folder" +msgstr "_Άνοιγμα του πεÏιέχοντος φακέλου" + +#: ../data/glade/filetransfers.glade.h:16 +msgid "_Pause" +msgstr "_ΠαÏση" + +#: ../data/glade/filetransfers.glade.h:17 +msgid "file transfers list" +msgstr "λίστα μεταφοÏών αÏχείων" + +#: ../data/glade/gajim_themes_window.glade.h:1 +msgid "Chatstate Tab Colors" +msgstr "ΧÏώματα κατάστασης κουβέντας" + +#: ../data/glade/gajim_themes_window.glade.h:2 +msgid "" +"Account\n" +"Group\n" +"Contact\n" +"Banner" +msgstr "" +"ΛογαÏιασμός\n" +"Ομάδα\n" +"Επαφή\n" +"Banner" + +#: ../data/glade/gajim_themes_window.glade.h:6 +#: ../data/glade/privacy_list_edit_window.glade.h:4 ../src/config.py:326 +msgid "Active" +msgstr "ΕνεÏγοποιημένο" + +#: ../data/glade/gajim_themes_window.glade.h:7 +msgid "Bold" +msgstr "Έντονα" + +#: ../data/glade/gajim_themes_window.glade.h:8 +msgid "Composing" +msgstr "ΣÏνθεση" + +#: ../data/glade/gajim_themes_window.glade.h:9 +msgid "Font style:" +msgstr "ΓÏαμματοσειÏά:" + +#: ../data/glade/gajim_themes_window.glade.h:10 +msgid "Gajim Themes Customization" +msgstr "ΠÏοσαÏμογή θεμάτων Gajim" + +#: ../data/glade/gajim_themes_window.glade.h:11 +msgid "Gone" +msgstr "Έξω" + +#: ../data/glade/gajim_themes_window.glade.h:12 +msgid "Inactive" +msgstr "ΑνενεÏγό" + +#: ../data/glade/gajim_themes_window.glade.h:13 +msgid "Italic" +msgstr "Πλάγια" + +#: ../data/glade/gajim_themes_window.glade.h:14 +msgid "" +"MUC\n" +"Messages" +msgstr "" +"MUC\n" +"ΜηνÏματα" + +#: ../data/glade/gajim_themes_window.glade.h:16 +msgid "" +"MUC Directed\n" +"Messages" +msgstr "" +"ΜηνÏματα Ï€Ïος\n" +"ομαδικές κουβέντες" + +#: ../data/glade/gajim_themes_window.glade.h:18 ../src/tooltips.py:667 +msgid "Paused" +msgstr "ΠαÏση" + +#: ../data/glade/gajim_themes_window.glade.h:19 +msgid "Text _color:" +msgstr "ΧÏώμα _κειμένου:" + +#: ../data/glade/gajim_themes_window.glade.h:20 +msgid "Text _font:" +msgstr "ΓÏα_μματοσειÏά κειμένου:" + +#: ../data/glade/gajim_themes_window.glade.h:21 +msgid "_Background:" +msgstr "ΧÏώμα _φόντου:" + +#: ../data/glade/gc_control_popup_menu.glade.h:1 +msgid "Change _Nickname" +msgstr "Αλλαγή _ψευδώνυμου" + +#: ../data/glade/gc_control_popup_menu.glade.h:2 +msgid "Change _Subject" +msgstr "Αλλαγή _θέματος" + +#: ../data/glade/gc_control_popup_menu.glade.h:3 +msgid "Click to see past conversation in this room" +msgstr "Πατήστε για να δείτε παλιότεÏες συζητήσεις σε αυτό το δωμάτιο" + +#: ../data/glade/gc_control_popup_menu.glade.h:4 +msgid "Configure _Room" +msgstr "ΤÏοποποίηση _δωματίου" + +#: ../data/glade/gc_control_popup_menu.glade.h:5 +msgid "_Bookmark This Room" +msgstr "_Τοποθέτηση σελιδοδείκτη για αυτό το δωμάτιο" + +#: ../data/glade/gc_occupants_menu.glade.h:1 +msgid "Mo_derator" +msgstr "_Συντονιστής" + +#: ../data/glade/gc_occupants_menu.glade.h:3 +msgid "_Admin" +msgstr "_ΔιαχειÏιστής" + +#: ../data/glade/gc_occupants_menu.glade.h:4 +msgid "_Ban" +msgstr "_ΑπαγόÏευση Ï€Ïόσβασης" + +#: ../data/glade/gc_occupants_menu.glade.h:6 +msgid "_Kick" +msgstr "_ΞεφοÏτώσου τον" + +#: ../data/glade/gc_occupants_menu.glade.h:7 +msgid "_Member" +msgstr "_Μέλος" + +#: ../data/glade/gc_occupants_menu.glade.h:8 +msgid "_Occupant Actions" +msgstr "_ΕνέÏγειες για τους συμμετέχοντες" + +#: ../data/glade/gc_occupants_menu.glade.h:9 +msgid "_Owner" +msgstr "_Ιδιοκτήτης" + +#: ../data/glade/gc_occupants_menu.glade.h:10 +msgid "_Send Private Message" +msgstr "_Αποστολή Ï€ÏÎ¿ÏƒÏ‰Ï€Î¹ÎºÎ¿Ï Î¼Î·Î½Ïματος" + +#: ../data/glade/gc_occupants_menu.glade.h:11 +msgid "_Voice" +msgstr "_Φωνή" + +#: ../data/glade/history_manager.glade.h:1 +msgid "" +"Welcome to Gajim History Logs Manager\n" +"\n" +"You can select logs from the left and/or search database from below.\n" +"\n" +"WARNING:\n" +"If you plan to do massive deletions, please make sure Gajim is not running. " +"Generally avoid deletions with contacts you currently chat with." +msgstr "" +"Καλωσήλθατε στον διαχειÏιστή ιστοÏÎ¹ÎºÎ¿Ï Ï„Î¿Ï… Gajim\n" +"\n" +"ΜποÏείτε να επιλέξετε καταγÏαφές από Ï„'αÏιστεÏά ή να εÏευνήσετε τη βάση " +"δεδομένων παÏακάτω.\n" +"\n" +"ΠΡΟΕΙΔΟΠΟΙΗΣΗ:\n" +"Αν σκοπεÏετε να κάνετε μαζικές διαγÏαφές, σιγουÏευτείτε ότι δεν Ï„Ïέχει το " +"Gajim. Γενικά να αποφÏγετε να διαγÏάψετε από επαφές που συζητάτε αυτή τη " +"στιγμή." + +#: ../data/glade/history_manager.glade.h:7 +msgid "Delete" +msgstr "ΔιαγÏαφή" + +#: ../data/glade/history_manager.glade.h:8 +msgid "Export" +msgstr "Εξαγωγή" + +#: ../data/glade/history_manager.glade.h:9 +msgid "Gajim History Logs Manager" +msgstr "ΔιαχειÏιστής βάσης δεδομένων ιστοÏÎ¹ÎºÎ¿Ï Gajim" + +#: ../data/glade/history_manager.glade.h:10 +msgid "_Search Database" +msgstr "_Αναζήτηση στη βάση δεδομένων" + +#: ../data/glade/history_window.glade.h:1 +msgid "Build custom query" +msgstr "Κατασκευή Ï€ÏοσαÏμοσμένου εÏωτήματος" + +#: ../data/glade/history_window.glade.h:2 +msgid "Conversation History" +msgstr "ΙστοÏικό κουβέντας" + +#: ../data/glade/history_window.glade.h:3 +msgid "Query Builder..." +msgstr "Κατασκευή εÏωτήματος..." + +#: ../data/glade/history_window.glade.h:4 +msgid "Search" +msgstr "Αναζήτηση" + +#: ../data/glade/history_window.glade.h:5 +msgid "_Search" +msgstr "_Αναζήτηση" + +#: ../data/glade/invitation_received_dialog.glade.h:1 +msgid "Accept" +msgstr "Αποδοχή" + +#: ../data/glade/invitation_received_dialog.glade.h:2 +#: ../data/glade/privacy_list_edit_window.glade.h:8 +msgid "Deny" +msgstr "ΆÏνηση" + +#: ../data/glade/invitation_received_dialog.glade.h:3 +msgid "Invitation Received" +msgstr "ΠαÏαλήφθηκε μια Ï€Ïόσκληση" + +#: ../data/glade/join_groupchat_window.glade.h:1 ../src/dialogs.py:941 +msgid "Join Group Chat" +msgstr "Συμμετοχή σε Ομαδική συζήτηση" + +#: ../data/glade/join_groupchat_window.glade.h:2 +#: ../data/glade/manage_bookmarks_window.glade.h:4 +#: ../data/glade/vcard_information_window.glade.h:28 +msgid "Nickname:" +msgstr "Όνομα χÏήστη:" + +#: ../data/glade/join_groupchat_window.glade.h:3 +#: ../data/glade/manage_bookmarks_window.glade.h:5 +msgid "Password:" +msgstr "Κωδικός:" + +#: ../data/glade/join_groupchat_window.glade.h:4 +msgid "Recently:" +msgstr "ΠÏόσφατα:" + +#: ../data/glade/join_groupchat_window.glade.h:5 +#: ../data/glade/manage_bookmarks_window.glade.h:7 +msgid "Room:" +msgstr "Δωμάτιο:" + +#: ../data/glade/join_groupchat_window.glade.h:6 +#: ../data/glade/manage_bookmarks_window.glade.h:8 +msgid "Server:" +msgstr "Διακομιστής:" + +#: ../data/glade/join_groupchat_window.glade.h:7 ../src/disco.py:1145 +#: ../src/disco.py:1507 +msgid "_Join" +msgstr "_Συμμετοχή" + +#: ../data/glade/manage_accounts_window.glade.h:1 +msgid "Manage Accounts" +msgstr "ΔιαχείÏιση λογαÏιασμών" + +#: ../data/glade/manage_bookmarks_window.glade.h:1 +msgid "Auto join" +msgstr "Αυτόματη είσοδος" + +#: ../data/glade/manage_bookmarks_window.glade.h:2 +msgid "If checked, Gajim will join this group chat on startup" +msgstr "" +"Αν επιλεγεί, το Gajim θα σας συνδέει αυτόματα σε αυτή την ομαδική συζήτηση " +"κατά την εκκίνηση" + +#: ../data/glade/manage_bookmarks_window.glade.h:3 +msgid "Manage Bookmarks" +msgstr "ΔιαχείÏιση σελιδοδεικτών" + +#: ../data/glade/manage_bookmarks_window.glade.h:6 +#, fuzzy +msgid "Print status:" +msgstr "Εμφάνιση χÏόνου:" + +#: ../data/glade/manage_bookmarks_window.glade.h:9 +msgid "Title:" +msgstr "Τίτλος:" + +#: ../data/glade/manage_proxies_window.glade.h:1 +msgid "Properties" +msgstr "Ιδιότητες" + +#: ../data/glade/manage_proxies_window.glade.h:2 +msgid "Settings" +msgstr "Ρυθμίσεις" + +#: ../data/glade/manage_proxies_window.glade.h:3 +msgid "HTTP Connect" +msgstr "ΣÏνδεση HTTP" + +#: ../data/glade/manage_proxies_window.glade.h:4 +msgid "Manage Proxy Profiles" +msgstr "ΔιαχείÏιση Ï€Ïοφίλ μεσολαβητή" + +#: ../data/glade/manage_proxies_window.glade.h:5 +#: ../data/glade/vcard_information_window.glade.h:27 +msgid "Name:" +msgstr "Όνομα:" + +#: ../data/glade/manage_proxies_window.glade.h:7 +msgid "Type:" +msgstr "ΤÏπος:" + +#: ../data/glade/manage_proxies_window.glade.h:8 +msgid "Use authentication" +msgstr "ΧÏήση πιστοποίησης" + +#: ../data/glade/message_window.glade.h:1 +msgid "Click to insert an emoticon (Alt+M)" +msgstr "Κάντε κλικ για να εισάγετε φατσοÏλα (Alt+M)" + +#: ../data/glade/message_window.glade.h:2 ../src/chat_control.py:966 +msgid "OpenPGP Encryption" +msgstr "ΚÏυπτογÏάφηση OpenPGP" + +#. Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector) +#: ../data/glade/message_window.glade.h:4 +#: ../data/glade/roster_window.glade.h:9 +msgid "_Actions" +msgstr "_ΕνέÏγειες" + +#. Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector) +#: ../data/glade/message_window.glade.h:6 +#: ../data/glade/xml_console_window.glade.h:11 +#: ../src/filetransfers_window.py:249 +msgid "_Send" +msgstr "_Αποστολή" + +#: ../data/glade/passphrase_dialog.glade.h:1 +msgid "Passphrase" +msgstr "ΚωδικοφÏάση" + +#: ../data/glade/preferences_window.glade.h:1 +msgid "Advanced Configuration Editor" +msgstr "ΕπεξεÏγασία Ïυθμίσεων για Ï€ÏοχωÏημένους" + +#: ../data/glade/preferences_window.glade.h:2 +msgid "Applications" +msgstr "ΕφαÏμογές" + +#. a header for custom browser/client/file manager. so translate sth like: Custom Settings +#: ../data/glade/preferences_window.glade.h:4 +msgid "Custom" +msgstr "ΠÏοσαÏμοσμένες Ïυθμίσεις" + +#: ../data/glade/preferences_window.glade.h:5 +msgid "Format of a line" +msgstr "ΜοÏφή μια γÏαμμής κουβέντας" + +#: ../data/glade/preferences_window.glade.h:6 +#, fuzzy +msgid "GMail Options" +msgstr "ΕφαÏμογές" + +#: ../data/glade/preferences_window.glade.h:7 +msgid "Interface Customization" +msgstr "ΠÏοσαÏμογή διεπαφής" + +#: ../data/glade/preferences_window.glade.h:9 +msgid "Preset Status Messages" +msgstr "ΠÏοκαθοÏισμένα μηνÏματα κατάστασης" + +#: ../data/glade/preferences_window.glade.h:11 +msgid "Visual Notifications" +msgstr "Οπτικές γνωστοποιήσεις" + +#: ../data/glade/preferences_window.glade.h:12 +msgid "A_fter nickname:" +msgstr "Με_τά από ψευδώνυμο:" + +#: ../data/glade/preferences_window.glade.h:13 +msgid "Advanced" +msgstr "ΠÏοχωÏημένοι" + +#: ../data/glade/preferences_window.glade.h:14 +msgid "" +"All chat states\n" +"Composing only\n" +"Disabled" +msgstr "" +"Όλες τις καταστάσεις κουβέντας\n" +"Μόνο αν κάποιος γÏάφει ένα μήνυμα\n" +"ΑπενεÏγοποιημένες" + +#: ../data/glade/preferences_window.glade.h:17 +msgid "Allow _OS information to be sent" +msgstr "Îα επιτÏέπεται η α_ποστολή πληÏοφοÏιών για το λειτ. σÏστημα" + +#: ../data/glade/preferences_window.glade.h:18 +msgid "Allow popup/notifications when I'm _away/na/busy/invisible" +msgstr "" +"Îα επιτÏέπονται οι εμφανίσεις/γνωστοποιήσεις όταν είμαι _απομακÏ./μη διαθ./" +"απασχολ./αφανής" + +#: ../data/glade/preferences_window.glade.h:19 +msgid "Also known as iChat style" +msgstr "Επίσης γνωστό ως στυλ iChat" + +#: ../data/glade/preferences_window.glade.h:20 +msgid "Ask status message when I:" +msgstr "ΕÏώτηση μηνÏματος κατάστασης όταν γίνομαι:" + +#: ../data/glade/preferences_window.glade.h:21 +msgid "Auto _away after:" +msgstr "Αυτόματα _απομακÏυσμένος μετά:" + +#: ../data/glade/preferences_window.glade.h:22 +msgid "Auto _not available after:" +msgstr "Αυτόματα _μη διαθέσιμος μετά:" + +#: ../data/glade/preferences_window.glade.h:23 +msgid "" +"Autodetect on every Gajim startup\n" +"Always use GNOME default applications\n" +"Always use KDE default applications\n" +"Custom" +msgstr "" +"Αυτόματη ανίχνευση σε κάθε έναÏξη του Gajim\n" +"Πάντα χÏήση των Ï€Ïοεπιλεγμένων εφαÏμογών του GNOME\n" +"Πάντα χÏήση των Ï€Ïοεπιλεγμένων εφαÏμογών του KDE\n" +"ΠÏοσαÏμοσμένες Ïυθμίσεις" + +#: ../data/glade/preferences_window.glade.h:27 +msgid "B_efore nickname:" +msgstr "Π_Ïιν το ψευδώνυμο:" + +#: ../data/glade/preferences_window.glade.h:28 ../src/chat_control.py:718 +msgid "Chat" +msgstr "Κουβέντα" + +#: ../data/glade/preferences_window.glade.h:29 +msgid "Chat state noti_fications:" +msgstr "Ειδοπ_οιήσεις για κατάσταση κουβέντας:" + +#: ../data/glade/preferences_window.glade.h:30 +msgid "" +"Check this option, only if someone you don't have in the roster spams/annoys " +"you. Use with caution, cause it blocks all messages from any contact that is " +"not in the roster" +msgstr "" +"Επιλέξτε το, μόνο αν κάποιος που δεν έχετε στη λίστα επαφών σας στέλνει spam " +"ή άλλα ενοχλητικά μηνÏματα. ΧÏησιμοποιήστε το με Ï€Ïοσοχή, γιατί μπλοκάÏει " +"όλα τα μηνÏματα από κάθε επαφή που δεν έχετε στη λίστα επαφών σας" + +#: ../data/glade/preferences_window.glade.h:31 +msgid "Default status _iconset:" +msgstr "ΕξοÏÎ¹ÏƒÎ¼Î¿Ï _σετ εικονιδίων κατάστασης:" + +#: ../data/glade/preferences_window.glade.h:32 +msgid "Display _extra email details" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:33 +msgid "Display a_vatars of contacts in roster" +msgstr "Εμφάνιση των ά_Î²Î±Ï„Î±Ï Ï„Ï‰Î½ επαφών στη λίστα επαφών" + +#: ../data/glade/preferences_window.glade.h:34 +msgid "Display status _messages of contacts in roster" +msgstr "Εμφάνιση των _μηνυμάτων κατάστασης στη λίστα επαφών" + +#: ../data/glade/preferences_window.glade.h:35 +msgid "E_very 5 minutes" +msgstr "Κάθε 5 _λεπτά" + +#: ../data/glade/preferences_window.glade.h:36 +msgid "Emoticons:" +msgstr "ΦατσοÏλες:" + +#: ../data/glade/preferences_window.glade.h:37 +msgid "Events" +msgstr "Γεγονότα" + +#: ../data/glade/preferences_window.glade.h:38 +msgid "" +"Gajim can send and receive meta-information related to a conversation you " +"may have with a contact. Here you can specify which chatstates you want to " +"send to the other party." +msgstr "" +"Το Gajim μποÏεί να να στέλνει και να λαμβάνει μετα-πληÏοφοÏίες σχετικές με " +"μια συζήτηση που έχετε με μια επαφή. Εδώ μποÏείτε να οÏίσετε τι πληÏοφοÏίες " +"θέλετε να στέλνετε στους άλλους." + +#: ../data/glade/preferences_window.glade.h:39 +msgid "" +"Gajim will automatically show new events by poping up the relative window" +msgstr "" +"Το Gajim θα εμφανίσει αυτόματα νέα γεγονότα αναδÏοντας το ανάλογο παÏάθυÏο" + +#: ../data/glade/preferences_window.glade.h:40 +msgid "" +"Gajim will notify you for new events via a popup in the bottom right of the " +"screen" +msgstr "" +"Το Gajim θα σας ειδοποιήσει για το νέο μήνυμα μέσω ενός αναδυόμενου " +"παÏαθÏÏου στο κάτω δεξιά μέÏος της οθόνης" + +#: ../data/glade/preferences_window.glade.h:41 +msgid "" +"Gajim will notify you via a popup window in the bottom right of the screen " +"about contacts that just signed in" +msgstr "" +"Το Gajim θα σας ειδοποιήσει μέσω ενός αναδυόμενου παÏαθÏÏου στο κάτω δεξιά " +"μέÏος της οθόνης για τις επαφές που μόλις συνδέθηκαν στο Jabber" + +#: ../data/glade/preferences_window.glade.h:42 +msgid "" +"Gajim will notify you via a popup window in the bottom right of the screen " +"about contacts that just signed out" +msgstr "" +"Το Gajim θα σας ειδοποιήσει μέσω ενός αναδυόμενου παÏαθÏÏου στο κάτω δεξιά " +"μέÏος της οθόνης για τις επαφές που μόλις αποσυνδέθηκαν στο Jabber" + +#: ../data/glade/preferences_window.glade.h:43 +msgid "" +"Gajim will only change the icon of the contact that triggered the new event" +msgstr "" +"Το Gajim θα αλλάξει μόνο το εικονίδιο της επαφής που Ï€Ïοκάλεσε το νέο γεγονός" + +#: ../data/glade/preferences_window.glade.h:45 +msgid "" +"If checked, Gajim will display avatars of contacts in roster window and in " +"group chats" +msgstr "" +"Αν επιλεγεί, το Gajim θα εμφανίζει τα Î¬Î²Î±Ï„Î±Ï Ï„Ï‰Î½ επαφών στην λίστα επαφών " +"και στις ομαδικές κουβέντες" + +#: ../data/glade/preferences_window.glade.h:46 +msgid "" +"If checked, Gajim will display status messages of contacts under the contact " +"name in roster window and in group chats" +msgstr "" +"Αν επιλεγεί, το Gajim θα εμφανίζει τα μηνÏματα κατάστασης των επαφών σας " +"κάτω από τα ονόματα τους στη λίστα επαφών και στις ομαδικές κουβέντες" + +#: ../data/glade/preferences_window.glade.h:47 +msgid "" +"If checked, Gajim will remember the roster and chat window positions in the " +"screen and the sizes of them next time you run it" +msgstr "" +"Αν επιλεγεί, το Gajim θα θυμάται την θέση και το μέγεθος του κÏÏιου " +"παÏαθÏÏου την επόμενη φοÏά που θα εκτελεστεί" + +#: ../data/glade/preferences_window.glade.h:48 +msgid "" +"If checked, Gajim will use protocol-specific status icons. (eg. A contact " +"from MSN will have the equivalent msn icon for status online, away, busy, " +"etc...)" +msgstr "" +"Αν επιλεγεί, το Gajim θα χÏησιμοποιήσει εικονίδια κατάστασης σχετικά με το " +"Ï€Ïωτόκολλο της επαφής. (πχ. Μια επαφή από το MSN θα έχει το αντίστοιχο msn " +"εικονίδιο για τις καταστάσεις διαθέσιμος, απομακÏυσμένος κλπ..)" + +#: ../data/glade/preferences_window.glade.h:49 +msgid "" +"If not disabled, Gajim will replace ascii smilies like ':)' with equivalent " +"animated or static graphical emoticons" +msgstr "" +"Αν δεν απενεÏγοποιηθεί, το Gajim θα μετατÏέπει όλα ascii σÏμβολα όπως το " +"':)' με τις αντίστοιχες γÏαφικές φατσοÏλες" + +#: ../data/glade/preferences_window.glade.h:50 +msgid "Ma_nage..." +msgstr "Δια_χείÏιση..." + +#: ../data/glade/preferences_window.glade.h:51 +msgid "" +"Never\n" +"Always\n" +"Per account\n" +"Per type" +msgstr "" +"Ποτέ\n" +"Πάντα\n" +"Ανά λογαÏιασμό\n" +"Ανά Ï„Ïπο" + +#: ../data/glade/preferences_window.glade.h:55 +msgid "Notify me about contacts that: " +msgstr "Ειδοποίηση όταν μια επαφή:" + +#: ../data/glade/preferences_window.glade.h:56 +#, fuzzy +msgid "Notify on new _GMail email" +msgstr "Ειδοποίηση σε νέο μήνυμα στο _Gmail" + +#: ../data/glade/preferences_window.glade.h:57 +msgid "On every _message" +msgstr "Σε κάθε _μήνυμα" + +#: ../data/glade/preferences_window.glade.h:58 +msgid "One message _window:" +msgstr "ΠαÏά_θυÏο ενός μηνÏματος:" + +#: ../data/glade/preferences_window.glade.h:59 +msgid "Play _sounds" +msgstr "ΑναπαÏαγωγή _ήχων" + +#: ../data/glade/preferences_window.glade.h:60 +msgid "Preferences" +msgstr "ΠÏοτιμήσεις" + +#: ../data/glade/preferences_window.glade.h:61 +msgid "Print time:" +msgstr "Εμφάνιση χÏόνου:" + +#: ../data/glade/preferences_window.glade.h:62 +msgid "Save _position and size for roster and chat windows" +msgstr "" +"Αποθήκευση _θέσης και μεγέθους για τη λίστα επαφών και για τα παÏάθυÏα " +"κουβέντας" + +#: ../data/glade/preferences_window.glade.h:63 +msgid "Show only in _roster" +msgstr "Εμφά_νισε το μόνο στο κÏÏιο παÏάθυÏο" + +#: ../data/glade/preferences_window.glade.h:64 +msgid "Sign _in" +msgstr "ΣÏν_δεση" + +#: ../data/glade/preferences_window.glade.h:65 +msgid "Sign _out" +msgstr "Αποσ_Ïνδεση" + +#: ../data/glade/preferences_window.glade.h:66 +msgid "Status" +msgstr "Κατάσταση" + +#: ../data/glade/preferences_window.glade.h:67 +msgid "T_heme:" +msgstr "_Θέμα:" + +#: ../data/glade/preferences_window.glade.h:68 +msgid "The auto away status message" +msgstr "Αυτόματο μήνυμα για κατάσταση απομακÏυσμένος" + +#: ../data/glade/preferences_window.glade.h:69 +msgid "The auto not available status message" +msgstr "Αυτόματο μήνυμα για κατάσταση μη διαθέσιμος" + +#: ../data/glade/preferences_window.glade.h:70 +msgid "Use _transports iconsets" +msgstr "ΧÏήση σετ _εικονιδίων κατάστασης:" + +#: ../data/glade/preferences_window.glade.h:71 +msgid "Use system _default" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:72 +msgid "Use t_rayicon (aka. notification area icon)" +msgstr "_Εικονίδιο στην πεÏιοχή γνωστοποίησης" + +#: ../data/glade/preferences_window.glade.h:73 +msgid "" +"When a new event (message, file transfer request etc..) is received, the " +"following methods may be used to inform you about it. Please note that " +"events about new messages only occur if it is a new message from a contact " +"you are not already chatting with" +msgstr "" +"Όταν ληφθεί ένα νέο συμβάν (μήνυμα, αίτημα για μεταφοÏά αÏχείου κλπ.), " +"μποÏεί να χÏησιμοποιηθοÏν οι παÏακάτω μέθοδοι για να ειδοποιηθείτε. ΣΗΜΕΙΩΣΗ:" +"Συμβάντα για νέα μηνÏματα δημιουÏγοÏνται μόνο όταν λαμβάνονται μηνÏματα από " +"επαφές με τις οποίες δεν κουβεντιάζετε ήδη" + +#: ../data/glade/preferences_window.glade.h:74 +msgid "When new event is received" +msgstr "Όταν λαμβάνεται ένα νέο γεγονός" + +#: ../data/glade/preferences_window.glade.h:75 +#, fuzzy +msgid "_Advanced Notifications Control..." +msgstr "ΕπεξεÏγασία Ïυθμίσεων για Ï€ÏοχωÏημένους" + +#: ../data/glade/preferences_window.glade.h:76 +msgid "_After time:" +msgstr "Μετά α_πό χÏόνο:" + +#: ../data/glade/preferences_window.glade.h:77 +msgid "_Before time:" +msgstr "_ΠÏιν από χÏόνο:" + +#: ../data/glade/preferences_window.glade.h:78 +msgid "_Browser:" +msgstr "_ΠεÏιηγητής:" + +#: ../data/glade/preferences_window.glade.h:79 +msgid "_File manager:" +msgstr "_ΔιαχειÏιστής αÏχείων:" + +#: ../data/glade/preferences_window.glade.h:80 +msgid "_Font:" +msgstr "_ΓÏαμματοσειÏά:" + +#: ../data/glade/preferences_window.glade.h:81 +msgid "_Highlight misspelled words" +msgstr "_ΥπογÏάμμιση λέξεων με τυπογÏαφικά λάθη" + +#: ../data/glade/preferences_window.glade.h:82 +msgid "_Ignore events from contacts not in the roster" +msgstr "_Αγνόησε γεγονότα από επαφές που δεν είναι στη λίστα επαφών" + +#: ../data/glade/preferences_window.glade.h:83 +msgid "_Incoming message:" +msgstr "_ΕισεÏχόμενο μήνυμα:" + +#: ../data/glade/preferences_window.glade.h:84 +msgid "_Log status changes of contacts" +msgstr "ΚαταγÏαφή α_λλαγών κατάστασης των επαφών" + +#: ../data/glade/preferences_window.glade.h:85 +msgid "_Mail client:" +msgstr "_ΕφαÏμογή αλληλογÏαφίας:" + +#: ../data/glade/preferences_window.glade.h:86 +msgid "_Never" +msgstr "_Ποτέ" + +#: ../data/glade/preferences_window.glade.h:87 +msgid "_Notify me about it" +msgstr "_Ειδοποίησε με για αυτό" + +#: ../data/glade/preferences_window.glade.h:88 +msgid "_Open..." +msgstr "_Άνοιγμα..." + +#: ../data/glade/preferences_window.glade.h:89 +msgid "_Outgoing message:" +msgstr "Ε_ξεÏχόμενο μήνυμα:" + +#: ../data/glade/preferences_window.glade.h:90 +msgid "_Player:" +msgstr "_ΑναπαÏαγωγέας:" + +#: ../data/glade/preferences_window.glade.h:91 +msgid "_Pop it up" +msgstr "_Εμφάνισε το" + +#: ../data/glade/preferences_window.glade.h:92 +msgid "_Reset to Default Colors" +msgstr "Επανα_φοÏά Ï€Ïοεπιλεγμένων χÏωμάτων" + +#: ../data/glade/preferences_window.glade.h:93 +msgid "_Sort contacts by status" +msgstr "Τα_ξινόμηση επαφών βάσει κατάστασης" + +#: ../data/glade/preferences_window.glade.h:94 +msgid "_Status message:" +msgstr "Μήνυμα κατά_στασης:" + +#: ../data/glade/preferences_window.glade.h:95 +msgid "_URL:" +msgstr "ΔιεÏ_θυνση:" + +#: ../data/glade/preferences_window.glade.h:96 +msgid "minutes" +msgstr "λεπτά" + +#: ../data/glade/privacy_list_edit_window.glade.h:1 +msgid "Add / Edit a rule" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:2 +#, fuzzy +msgid "List of rules" +msgstr "ΜοÏφή μια γÏαμμής κουβέντας" + +#: ../data/glade/privacy_list_edit_window.glade.h:3 +msgid "Privacy List" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:5 ../src/config.py:2281 +msgid "All" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:6 +msgid "Allow" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:7 +#, fuzzy +msgid "Default" +msgstr "ΔιαγÏαφή" + +#: ../data/glade/privacy_list_edit_window.glade.h:9 +#, fuzzy +msgid "JabberID" +msgstr "Jabber ID:" + +#: ../data/glade/privacy_list_edit_window.glade.h:10 +#, fuzzy +msgid "Order:" +msgstr "Διακομιστής:" + +#: ../data/glade/privacy_list_edit_window.glade.h:11 ../src/dialogs.py:1626 +#, fuzzy +msgid "Privacy List" +msgstr "Λίστα Ban" + +#: ../data/glade/privacy_list_edit_window.glade.h:12 +#, fuzzy +msgid "all by subscription" +msgstr "_ΕγγÏαφή" + +#: ../data/glade/privacy_list_edit_window.glade.h:13 +#, fuzzy +msgid "all in the group" +msgstr "Στην ομάδα" + +#: ../data/glade/privacy_list_edit_window.glade.h:14 +msgid "" +"none\n" +"both\n" +"from\n" +"to" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:18 +#, fuzzy +msgid "to send me messages" +msgstr "Αποστολή μηνÏματος" + +#: ../data/glade/privacy_list_edit_window.glade.h:19 +msgid "to send me queries" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:20 +#, fuzzy +msgid "to send me status" +msgstr "Ζήτα να βλέπεις την κατάσταση του/της" + +#: ../data/glade/privacy_list_edit_window.glade.h:21 +#, fuzzy +msgid "to view my status" +msgstr "ΕπίτÏεψε τον/την να βλέπει την κατάστασή μου" + +#: ../data/glade/privacy_lists_first_window.glade.h:1 +msgid "Create your own Privacy Lists" +msgstr "" + +#: ../data/glade/privacy_lists_first_window.glade.h:2 +msgid "Server-based Privacy Lists" +msgstr "" + +#: ../data/glade/remove_account_window.glade.h:1 +msgid "What do you want to do?" +msgstr "ΠαÏακαλώ επιλέξτε την ακÏιβή ενέÏγεια" + +#: ../data/glade/remove_account_window.glade.h:2 +msgid "Remove account _only from Gajim" +msgstr "ΑφαίÏεση λογαÏÎ¹Î±ÏƒÎ¼Î¿Ï Î¼ÏŒÎ½_ο από το Gajim" + +#: ../data/glade/remove_account_window.glade.h:3 +msgid "Remove account from Gajim and from _server" +msgstr "ΑφαίÏεση λογαÏÎ¹Î±ÏƒÎ¼Î¿Ï Î±Ï€ÏŒ το Gajim και από το διακομι_στή" + +#: ../data/glade/roster_contact_context_menu.glade.h:1 +#, fuzzy +msgid "A_sk to see his/her status" +msgstr "Ζήτα να βλέπεις την κατάσταση του/της" + +#: ../data/glade/roster_contact_context_menu.glade.h:2 +msgid "Add Special _Notification" +msgstr "ΠÏοσθήκη ειδικής γνωστοποίησης" + +#: ../data/glade/roster_contact_context_menu.glade.h:3 +msgid "Assign Open_PGP Key" +msgstr "Ανάθεση Open_PGP κλειδιοÏ" + +#: ../data/glade/roster_contact_context_menu.glade.h:4 +msgid "Edit _Groups" +msgstr "ΕπεξεÏγασία _ομάδων" + +#: ../data/glade/roster_contact_context_menu.glade.h:5 +#: ../data/glade/systray_context_menu.glade.h:1 +msgid "Send Single _Message" +msgstr "Αποστολή ενός _μηνÏματος" + +#: ../data/glade/roster_contact_context_menu.glade.h:7 +msgid "Start _Chat" +msgstr "ΈναÏξη _συζήτησης" + +#: ../data/glade/roster_contact_context_menu.glade.h:9 +#, fuzzy +msgid "_Allow him/her to see my status" +msgstr "ΕπίτÏεψε τον/την να βλέπει την κατάστασή μου" + +#: ../data/glade/roster_contact_context_menu.glade.h:10 +#, fuzzy +msgid "_Forbid him/her to see my status" +msgstr "ΑπαγόÏευσε τον/την να βλέπει την κατάστασή μου" + +#: ../data/glade/roster_contact_context_menu.glade.h:12 +#: ../src/roster_window.py:1482 +msgid "_Remove from Roster" +msgstr "Α_φαίÏεση από τη Λίστα επαφών" + +#: ../data/glade/roster_contact_context_menu.glade.h:13 +#: ../src/roster_window.py:1470 +msgid "_Rename" +msgstr "_Μετονομασία" + +#: ../data/glade/roster_contact_context_menu.glade.h:14 +msgid "_Subscription" +msgstr "_ΕγγÏαφή" + +#: ../data/glade/roster_window.glade.h:1 +msgid "A_ccounts" +msgstr "_ΛογαÏιασμοί" + +#: ../data/glade/roster_window.glade.h:2 +msgid "Add _Contact" +msgstr "ΠÏοσθήκη _επαφής" + +#: ../data/glade/roster_window.glade.h:3 +msgid "File _Transfers" +msgstr "_ΜεταφοÏές αÏχείων" + +#: ../data/glade/roster_window.glade.h:4 +msgid "Frequently Asked Questions (online)" +msgstr "Συχνές εÏωτήσεις (online)" + +#: ../data/glade/roster_window.glade.h:6 +msgid "Help online" +msgstr "Online βοήθεια" + +#: ../data/glade/roster_window.glade.h:7 +msgid "Profile, Avatar" +msgstr "ΠÏοφίλ, Avatar" + +#: ../data/glade/roster_window.glade.h:8 +msgid "Show _Offline Contacts" +msgstr "Εμφάνιση _αποσυνδεδεμένων χÏηστών" + +#: ../data/glade/roster_window.glade.h:11 +msgid "_Contents" +msgstr "_ΠεÏιεχόμενα" + +#: ../data/glade/roster_window.glade.h:12 +msgid "_Discover Services" +msgstr "ΕÏÏεση _υπηÏεσιών" + +#: ../data/glade/roster_window.glade.h:13 ../src/disco.py:1252 +#: ../src/roster_window.py:1462 +msgid "_Edit" +msgstr "Ε_πεξεÏγασία" + +#: ../data/glade/roster_window.glade.h:14 +msgid "_FAQ" +msgstr "_Συχνές εÏωτήσεις" + +#: ../data/glade/roster_window.glade.h:16 +msgid "_Help" +msgstr "_Βοήθεια" + +#: ../data/glade/roster_window.glade.h:17 +msgid "_Preferences" +msgstr "_ΠÏοτιμήσεις" + +#: ../data/glade/roster_window.glade.h:18 +msgid "_Quit" +msgstr "_Έξοδος" + +#: ../data/glade/service_discovery_window.glade.h:1 +msgid "G_o" +msgstr "Πάμ_ε" + +#: ../data/glade/service_discovery_window.glade.h:2 +msgid "_Address:" +msgstr "_ΔιεÏθυνση:" + +#: ../data/glade/service_discovery_window.glade.h:3 +msgid "_Filter:" +msgstr "_ΦιλτÏάÏισμα:" + +#: ../data/glade/service_registration_window.glade.h:1 +msgid "Register to" +msgstr "ΕγγÏαφή σε" + +#: ../data/glade/service_registration_window.glade.h:2 +msgid "_Cancel" +msgstr "_ΑκÏÏωση" + +#: ../data/glade/service_registration_window.glade.h:3 +msgid "_OK" +msgstr "_Εντάξει" + +#: ../data/glade/single_message_window.glade.h:1 +msgid "0" +msgstr "0" + +#: ../data/glade/single_message_window.glade.h:2 +msgid "From:" +msgstr "Από:" + +#: ../data/glade/single_message_window.glade.h:3 +msgid "Reply to this message" +msgstr "Απάντηση σε αυτό το μήνυμα" + +#: ../data/glade/single_message_window.glade.h:4 +msgid "Sen_d" +msgstr "Α_ποστολή" + +#: ../data/glade/single_message_window.glade.h:5 +msgid "Send message" +msgstr "Αποστολή μηνÏματος" + +#: ../data/glade/single_message_window.glade.h:6 +msgid "Send message and close window" +msgstr "Αποστολή μηνÏματος και κλείσιμο παÏαθÏÏου" + +#: ../data/glade/single_message_window.glade.h:7 +msgid "Subject:" +msgstr "Θέμα:" + +#: ../data/glade/single_message_window.glade.h:8 +msgid "To:" +msgstr "ΠÏος:" + +#: ../data/glade/single_message_window.glade.h:9 +msgid "_Reply" +msgstr "_Απάντηση" + +#: ../data/glade/single_message_window.glade.h:10 +msgid "_Send & Close" +msgstr "_Αποστολή & Κλείσιμο" + +#: ../data/glade/subscription_request_window.glade.h:1 +msgid "Authorize contact so he can know when you're connected" +msgstr "" +"Εξουσιοδοτήστε μια επαφή ώστε να μποÏεί να ξέÏει πότε είστε συνδεδεμένος" + +#: ../data/glade/subscription_request_window.glade.h:2 +msgid "Contact _Info" +msgstr "Πλη_ÏοφοÏίες επαφής" + +#: ../data/glade/subscription_request_window.glade.h:3 +msgid "Deny authorization from contact so he cannot know when you're connected" +msgstr "" +"ΑÏνηθείτε εξουσιοδότηση σε μια επαφή ώστε να μη μποÏεί να γνωÏίζει πότε " +"είστε συνδεδεμένος" + +#: ../data/glade/subscription_request_window.glade.h:4 +msgid "Subscription Request" +msgstr "Αίτηση εγγÏαφής" + +#: ../data/glade/subscription_request_window.glade.h:5 +msgid "_Authorize" +msgstr "_Εξουσιοδότηση" + +#: ../data/glade/subscription_request_window.glade.h:6 +msgid "_Deny" +msgstr "_ΆÏνηση" + +#: ../data/glade/systray_context_menu.glade.h:2 +msgid "Show All Pending _Events" +msgstr "Εμφάνιση όλων των γεγονότων που εκÏεμοÏν" + +#: ../data/glade/systray_context_menu.glade.h:3 +msgid "Show _Roster" +msgstr "Εμφάνιση _λίστας επαφών" + +#: ../data/glade/systray_context_menu.glade.h:4 +msgid "Sta_tus" +msgstr "Κατάσ_ταση" + +#. "About" is the text of a tab of vcard window +#: ../data/glade/vcard_information_window.glade.h:2 +msgid "About" +msgstr "ΠεÏί" + +#: ../data/glade/vcard_information_window.glade.h:3 +msgid "Address" +msgstr "ΔιεÏθυνση" + +#: ../data/glade/vcard_information_window.glade.h:4 +msgid "Ask:" +msgstr "Ζητείται:" + +#: ../data/glade/vcard_information_window.glade.h:5 +msgid "Birthday:" +msgstr "Γενέθλια:" + +#: ../data/glade/vcard_information_window.glade.h:6 +msgid "City:" +msgstr "Πόλη:" + +#: ../data/glade/vcard_information_window.glade.h:7 +msgid "Client:" +msgstr "ΕφαÏμογή:" + +#: ../data/glade/vcard_information_window.glade.h:8 +msgid "Company:" +msgstr "ΕταιÏία:" + +#: ../data/glade/vcard_information_window.glade.h:9 +msgid "Contact Information" +msgstr "ΠληÏοφοÏίες επαφής" + +#: ../data/glade/vcard_information_window.glade.h:10 +msgid "Country:" +msgstr "ΧώÏα:" + +#: ../data/glade/vcard_information_window.glade.h:11 +msgid "Department:" +msgstr "Τμήμα" + +#: ../data/glade/vcard_information_window.glade.h:12 +msgid "E-Mail:" +msgstr "Ε-Mail:" + +#: ../data/glade/vcard_information_window.glade.h:13 +msgid "Extra Address:" +msgstr "Επιπλέον οδός:" + +#. Family Name +#: ../data/glade/vcard_information_window.glade.h:15 +msgid "Family:" +msgstr "Οικογένεια:" + +#: ../data/glade/vcard_information_window.glade.h:16 +msgid "Format: YYYY-MM-DD" +msgstr "ΜοÏφή: ΕΕΕΕ-ΜΜ-ΗΗ" + +#. Given Name +#: ../data/glade/vcard_information_window.glade.h:19 +msgid "Given:" +msgstr "Δοθέν όνομα" + +#: ../data/glade/vcard_information_window.glade.h:20 +msgid "Homepage:" +msgstr "ΠÏοσωπ. σελίδα:" + +#: ../data/glade/vcard_information_window.glade.h:21 +msgid "Jabber" +msgstr "Jabber" + +#: ../data/glade/vcard_information_window.glade.h:22 +msgid "Jabber ID:" +msgstr "Jabber ID:" + +#: ../data/glade/vcard_information_window.glade.h:23 +msgid "Location" +msgstr "ΠεÏιοχή" + +#. Middle Name +#: ../data/glade/vcard_information_window.glade.h:25 +msgid "Middle:" +msgstr "Μέσο:" + +#: ../data/glade/vcard_information_window.glade.h:26 +msgid "More" +msgstr "ΠεÏισσότεÏα" + +#: ../data/glade/vcard_information_window.glade.h:29 +msgid "OS:" +msgstr "Λειτ. ΣÏστημα:" + +#: ../data/glade/vcard_information_window.glade.h:30 +msgid "Phone No.:" +msgstr "Τηλέφωνο:" + +#: ../data/glade/vcard_information_window.glade.h:31 +msgid "Position:" +msgstr "Θέση:" + +#: ../data/glade/vcard_information_window.glade.h:32 +msgid "Postal Code:" +msgstr "Τ.Κ.:" + +#. Prefix in Name +#: ../data/glade/vcard_information_window.glade.h:34 +msgid "Prefix:" +msgstr "ΠÏόθεμα:" + +#: ../data/glade/vcard_information_window.glade.h:35 +msgid "Resource:" +msgstr "ΠόÏος:" + +#: ../data/glade/vcard_information_window.glade.h:36 +msgid "Role:" +msgstr "Ρόλος:" + +#: ../data/glade/vcard_information_window.glade.h:37 +msgid "Set _Avatar" +msgstr "Κα_θοÏισμός Avatar" + +#: ../data/glade/vcard_information_window.glade.h:38 +msgid "State:" +msgstr "Îομός:" + +#: ../data/glade/vcard_information_window.glade.h:39 +msgid "Status:" +msgstr "Κατάσταση:" + +#: ../data/glade/vcard_information_window.glade.h:40 +msgid "Street:" +msgstr "Οδός:" + +#: ../data/glade/vcard_information_window.glade.h:41 +msgid "Subscription:" +msgstr "ΕγγÏαφή:" + +#. Suffix in Name +#: ../data/glade/vcard_information_window.glade.h:43 +msgid "Suffix:" +msgstr "Κατάληξη:" + +#: ../data/glade/vcard_information_window.glade.h:44 +msgid "Work" +msgstr "Δουλειά" + +#: ../data/glade/vcard_information_window.glade.h:45 +msgid "_Log conversation history" +msgstr "_ΚαταγÏαφή ιστοÏÎ¹ÎºÎ¿Ï ÎºÎ¿Ï…Î²Î­Î½Ï„Î±Ï‚" + +#: ../data/glade/vcard_information_window.glade.h:46 +msgid "_Publish" +msgstr "_Δημοσιοποίηση" + +#: ../data/glade/vcard_information_window.glade.h:47 +msgid "_Retrieve" +msgstr "_Ανάκτηση" + +#: ../data/glade/xml_console_window.glade.h:1 +msgid "Jabber Traffic" +msgstr "Κίνηση Jabber" + +#: ../data/glade/xml_console_window.glade.h:2 +msgid "XML Input" +msgstr "Είσοδος δεδομένων XML" + +#. XML Console enable checkbutton +#: ../data/glade/xml_console_window.glade.h:4 +msgid "Enable" +msgstr "ΕνεÏγοποίηση" + +#. Info/Query make the "IQ" initials. So translate like this 'YourLang/YourLang (Info/Query)'. Thanks (it's a tooltip so width is not a problem) +#: ../data/glade/xml_console_window.glade.h:6 +msgid "Info/Query" +msgstr "ΠληÏοφοÏία/ΕÏώτηση (Info/Query)" + +#. Info/Query: all(?) jabber xml start with Whom do you want to ban?\n" "\n" @@ -382,11 +2453,11 @@ msgstr "" "Ποιόν θέλετε να αποβάλλετε;\n" "\n" -#: ../src/config.py:2023 +#: ../src/config.py:2062 msgid "Adding Member..." msgstr "ΠÏοσθήκη μέλους..." -#: ../src/config.py:2024 +#: ../src/config.py:2063 msgid "" "Whom do you want to make a member?\n" "\n" @@ -394,11 +2465,11 @@ msgstr "" "Ποιόν θέλετε να κάνετε μέλος;\n" "\n" -#: ../src/config.py:2026 +#: ../src/config.py:2065 msgid "Adding Owner..." msgstr "ΠÏοσθήκη ιδιοκτήτη..." -#: ../src/config.py:2027 +#: ../src/config.py:2066 msgid "" "Whom do you want to make a owner?\n" "\n" @@ -406,11 +2477,11 @@ msgstr "" "Ποιόν θέλετε να κάνετε ιδιοκτήτη;\n" "\n" -#: ../src/config.py:2029 +#: ../src/config.py:2068 msgid "Adding Administrator..." msgstr "ΠÏοσθήκη διαχειÏιστή..." -#: ../src/config.py:2030 +#: ../src/config.py:2069 msgid "" "Whom do you want to make an administrator?\n" "\n" @@ -418,7 +2489,7 @@ msgstr "" "Ποιόν θέλετε να κάνετε διαχειÏιστή;\n" "\n" -#: ../src/config.py:2031 +#: ../src/config.py:2070 msgid "" "Can be one of the following:\n" "1. user@domain/resource (only that resource matches).\n" @@ -434,87 +2505,91 @@ msgstr "" "4. τομέας (ταιÏιάζει ο τομέας, και κάθε χÏήστης@τομέας,\n" "τομέας/πόÏος, ή διεÏθυνση που πεÏιέχει υποτομέα." -#: ../src/config.py:2127 +#: ../src/config.py:2166 #, python-format msgid "Removing %s account" msgstr "AφαίÏεση του λογαÏÎ¹Î±ÏƒÎ¼Î¿Ï %s" -#: ../src/config.py:2144 ../src/roster_window.py:1859 +#: ../src/config.py:2183 ../src/roster_window.py:1857 msgid "Password Required" msgstr "Απαιτείται κωδικός" -#: ../src/config.py:2145 ../src/roster_window.py:1860 +#: ../src/config.py:2184 ../src/roster_window.py:1858 #, python-format msgid "Enter your password for account %s" msgstr "ΠληκτÏολογήστε τον κωδικό σας για το λογαÏιασμό %s" -#: ../src/config.py:2146 ../src/roster_window.py:1861 +#: ../src/config.py:2185 ../src/roster_window.py:1859 msgid "Save password" msgstr "Αποθήκευση κωδικοÏ" -#: ../src/config.py:2159 +#: ../src/config.py:2198 #, python-format msgid "Account \"%s\" is connected to the server" msgstr "Ο λογαÏιασμός \"%s\" είναι συνδεδεμένος με το διακομιστή" -#: ../src/config.py:2160 +#: ../src/config.py:2199 msgid "If you remove it, the connection will be lost." msgstr "Αν αφαιÏεθεί, η σÏνδεση θα χαθεί." -#: ../src/config.py:2295 +#: ../src/config.py:2282 +msgid "Enter and leave only" +msgstr "" + +#: ../src/config.py:2352 msgid "New Room" msgstr "Îέο δωμάτιο" -#: ../src/config.py:2326 +#: ../src/config.py:2383 msgid "This bookmark has invalid data" msgstr "Αυτός ο σελιδοδείκτης έχει μη έγκυÏα δεδομένα" -#: ../src/config.py:2327 +#: ../src/config.py:2384 msgid "" "Please be sure to fill out server and room fields or remove this bookmark." msgstr "" "ΠαÏακαλώ συμπληÏώστε τα πεδία του διακομιστή και του δωματίου ή διαφοÏετικά " "αφαιÏέστε το σελιδοδείκτη." -#: ../src/config.py:2564 +#: ../src/config.py:2638 msgid "Invalid username" msgstr "Μη έγκυÏο όνομα χÏήστη" -#: ../src/config.py:2565 +#: ../src/config.py:2639 msgid "You must provide a username to configure this account." msgstr "" "ΠÏέπει να δώσετε ένα όνομα χÏήστη για την παÏαμετÏοποίηση του συγκεκÏιμένου " "λογαÏιασμοÏ." -#: ../src/config.py:2574 ../src/dialogs.py:1036 +#: ../src/config.py:2648 ../src/dialogs.py:1118 msgid "Invalid password" msgstr "Μη έγκυÏος κωδικός" -#: ../src/config.py:2575 +#: ../src/config.py:2649 msgid "You must enter a password for the new account." msgstr "ΠÏέπει να δώσετε έναν κωδικό για το νέο λογαÏιασμό." -#: ../src/config.py:2579 ../src/dialogs.py:1041 +#: ../src/config.py:2653 ../src/dialogs.py:1123 msgid "Passwords do not match" msgstr "Οι κωδικοί δεν ταιÏιάζουν" -#: ../src/config.py:2580 ../src/dialogs.py:1042 +#: ../src/config.py:2654 ../src/dialogs.py:1124 msgid "The passwords typed in both fields must be identical." msgstr "Οι κωδικοί των δυο πεδίων Ï€Ïέπει να είναι ίδιοι." -#: ../src/config.py:2599 +#: ../src/config.py:2673 msgid "Duplicate Jabber ID" msgstr "Διπλότυπο αναγνωÏιστικό Jabber" -#: ../src/config.py:2600 +#: ../src/config.py:2674 msgid "This account is already configured in Gajim." msgstr "Αυτός ο λογαÏιασμός έχει ήδη στηθεί στο Gajim." -#: ../src/config.py:2617 +#: ../src/config.py:2691 msgid "Account has been added successfully" msgstr "Ο λογαÏιασμός Ï€Ïοστέθηκε με επιτυχία" -#: ../src/config.py:2618 ../src/config.py:2651 +#: ../src/config.py:2692 ../src/config.py:2725 msgid "" "You can set advanced account options by pressing Advanced button, or later " "by clicking in Accounts menuitem under Edit menu from the main window." @@ -523,23 +2598,23 @@ msgstr "" "επιλέγοντας το κουμπί για ΠÏοχωÏημένους, ή αÏγότεÏα εάν επιλέξετε " "ΛογαÏιασμοί από το Î¼ÎµÎ½Î¿Ï Î•Ï€ÎµÎ¾ÎµÏγασία στο κυÏίως παÏάθυÏο." -#: ../src/config.py:2650 +#: ../src/config.py:2724 msgid "Your new account has been created successfully" msgstr "Ο νέος σας λογαÏιασμός δημιουÏγήθηκε με επιτυχία" -#: ../src/config.py:2666 +#: ../src/config.py:2740 msgid "An error occured during account creation" msgstr "Σφάλμα κατά τη διάÏκεια δημιουÏγίας λογαÏιασμοÏ" -#: ../src/config.py:2723 +#: ../src/config.py:2797 msgid "Account name is in use" msgstr "Το όνομα λογαÏÎ¹Î±ÏƒÎ¼Î¿Ï ÎµÎ¯Î½Î±Î¹ ήδη σε χÏήση" -#: ../src/config.py:2724 +#: ../src/config.py:2798 msgid "You already have an account using this name." msgstr "Έχετε ήδη ένα λογαÏιασμό με αυτό το όνομα." -#: ../src/conversation_textview.py:182 +#: ../src/conversation_textview.py:205 msgid "" "Text below this line is what has been said since the last time you paid " "attention to this group chat" @@ -547,161 +2622,175 @@ msgstr "" "Το κείμενο κάτω από αυτή τη γÏαμμή είναι ότι έχει λεχθεί από την τελευταία " "φοÏά που κοιτάξατε αυτή την ομαδική συζήτηση" -#: ../src/conversation_textview.py:239 +#: ../src/conversation_textview.py:263 #, python-format msgid "Actions for \"%s\"" msgstr "ΕνέÏγειες για \"%s\"" -#: ../src/conversation_textview.py:251 +#: ../src/conversation_textview.py:275 msgid "Read _Wikipedia Article" msgstr "Ανάγνωση άÏθÏου της _Wikipedia" -#: ../src/conversation_textview.py:255 +#: ../src/conversation_textview.py:280 msgid "Look it up in _Dictionary" msgstr "ΕÏÏεση στο _Λεξικό" #. we must have %s in the url if not WIKTIONARY -#: ../src/conversation_textview.py:270 +#: ../src/conversation_textview.py:296 #, python-format msgid "Dictionary URL is missing an \"%s\" and it is not WIKTIONARY" msgstr "Λείπει ένα \"%s\" από το URL του Î»ÎµÎ¾Î¹ÎºÎ¿Ï ÎºÎ±Î¹ δεν είναι WIKTIONARY" #. we must have %s in the url -#: ../src/conversation_textview.py:281 +#: ../src/conversation_textview.py:308 #, python-format msgid "Web Search URL is missing an \"%s\"" msgstr "Λείπει ένα \"%s\" από το URL της Δικτυακής αναζήτησης" -#: ../src/conversation_textview.py:284 +#: ../src/conversation_textview.py:311 msgid "Web _Search for it" msgstr "Δικτυακή ανα_ζήτηση γι' αυτό" -#: ../src/conversation_textview.py:574 +#: ../src/conversation_textview.py:607 msgid "Yesterday" msgstr "Χθες" #. the number is >= 2 #. %i is day in year (1-365), %d (1-31) we want %i -#: ../src/conversation_textview.py:578 +#: ../src/conversation_textview.py:611 #, python-format msgid "%i days ago" msgstr "Ï€Ïιν από %i μέÏες" #. if we have subject, show it too! -#: ../src/conversation_textview.py:634 +#: ../src/conversation_textview.py:686 #, python-format msgid "Subject: %s\n" msgstr "Θέμα: %s\n" #. only say that to non Windows users -#: ../src/dbus_support.py:34 +#: ../src/dbus_support.py:32 msgid "D-Bus python bindings are missing in this computer" msgstr "Δεν υπάÏχει υποστήÏιξη D-Bus για την python σε αυτόν τον υπολογιστή" -#: ../src/dbus_support.py:35 +#: ../src/dbus_support.py:33 msgid "D-Bus capabilities of Gajim cannot be used" msgstr "Οι δυνατότητες του Gajim για D-Bus δε θα χÏησιμοποιηθοÏν" -#: ../src/dialogs.py:64 +#: ../src/dialogs.py:55 #, python-format msgid "Contact's name: %s" msgstr "Όνομα επαφής: %s" -#: ../src/dialogs.py:66 +#: ../src/dialogs.py:57 #, python-format msgid "JID: %s" msgstr "JID: %s" -#: ../src/dialogs.py:169 +#. Group name +#. In group boolean +#: ../src/dialogs.py:173 msgid "Group" msgstr "Ομάδα" -#: ../src/dialogs.py:176 +#: ../src/dialogs.py:180 msgid "In the group" msgstr "Στην ομάδα" -#: ../src/dialogs.py:226 +#: ../src/dialogs.py:230 msgid "KeyID" msgstr "Ταυτότητα κλειδιοÏ" -#: ../src/dialogs.py:229 +#: ../src/dialogs.py:233 msgid "Contact name" msgstr "Όνομα επαφής" -#: ../src/dialogs.py:263 +#: ../src/dialogs.py:266 #, python-format msgid "%s Status Message" msgstr "Μήνυμα για κατάσταση %s" -#: ../src/dialogs.py:265 +#: ../src/dialogs.py:268 msgid "Status Message" msgstr "Μήνυμα κατάστασης" -#: ../src/dialogs.py:340 +#: ../src/dialogs.py:343 msgid "Save as Preset Status Message" msgstr "Αποθήκευση ως Ï€ÏοκαθοÏισμένο μήνυμα κατάστασης" -#: ../src/dialogs.py:341 +#: ../src/dialogs.py:344 msgid "Please type a name for this status message" msgstr "Εισάγετε ένα όνομα για αυτό το μήνυμα κατάστασης" -#: ../src/dialogs.py:369 +#: ../src/dialogs.py:391 #, python-format msgid "Please fill in the data of the contact you want to add in account %s" msgstr "" "ΠαÏακαλώ συμπληÏώστε τα στοιχεία της επαφής που θέλετε να Ï€Ïοσθέσετε στο " "λογαÏιασμό %s" -#: ../src/dialogs.py:371 +#: ../src/dialogs.py:393 msgid "Please fill in the data of the contact you want to add" msgstr "ΠαÏακαλώ συμπληÏώστε τα στοιχεία της επαφής που θέλετε να Ï€Ïοσθέσετε" -#. the user can be in mutiple groups, see in all of them -#: ../src/dialogs.py:380 ../src/disco.py:118 ../src/disco.py:119 -#: ../src/disco.py:1258 ../src/roster_window.py:214 -#: ../src/roster_window.py:275 ../src/roster_window.py:310 -#: ../src/roster_window.py:330 ../src/roster_window.py:354 -#: ../src/roster_window.py:2940 ../src/roster_window.py:2942 -#: ../src/systray.py:291 ../src/common/helpers.py:42 +#: ../src/dialogs.py:403 ../src/disco.py:109 ../src/disco.py:110 +#: ../src/disco.py:1249 ../src/roster_window.py:207 +#: ../src/roster_window.py:273 ../src/roster_window.py:309 +#: ../src/roster_window.py:329 ../src/roster_window.py:353 +#: ../src/roster_window.py:2973 ../src/roster_window.py:2975 +#: ../src/common/helpers.py:39 msgid "Transports" msgstr "ΜεταφοÏές" -#: ../src/dialogs.py:452 ../src/dialogs.py:458 +#: ../src/dialogs.py:493 ../src/dialogs.py:499 msgid "Invalid User ID" msgstr "Μη έγκυÏη ταυτότητα χÏήστη" -#: ../src/dialogs.py:459 +#: ../src/dialogs.py:500 msgid "The user ID must not contain a resource." msgstr "Το αναγνωÏιστικό χÏήστη δεν Ï€Ïέπει να πεÏιέχει έναν πόÏο." -#: ../src/dialogs.py:466 +#: ../src/dialogs.py:513 msgid "Contact already in roster" msgstr "Επαφή ήδη στη λίστα επαφών" -#: ../src/dialogs.py:467 +#: ../src/dialogs.py:514 msgid "This contact is already listed in your roster." msgstr "Αυτή η επαφή υπάÏχει ήδη στη λίστα επαφών σας." -#: ../src/dialogs.py:528 +#: ../src/dialogs.py:576 msgid "A GTK+ jabber client" msgstr "Ένα Ï€ÏόγÏαμμα για το Jabber γÏαμμένο σε GTK+" -#: ../src/dialogs.py:539 +#: ../src/dialogs.py:577 +msgid "GTK+ Version:" +msgstr "" + +#: ../src/dialogs.py:578 +msgid "PyGTK Version:" +msgstr "" + +#: ../src/dialogs.py:586 +#, fuzzy +msgid "Current Developers:" +msgstr "ΠÏοηγοÏμενοι δημιουÏγοί:" + +#: ../src/dialogs.py:588 msgid "Past Developers:" msgstr "ΠÏοηγοÏμενοι δημιουÏγοί:" -#: ../src/dialogs.py:543 +#: ../src/dialogs.py:592 msgid "THANKS:" msgstr "ΕΥΧΑΡΙΣΤΙΕΣ:" -#. remove one english setence +#. remove one english sentence #. and add it manually as translatable -#: ../src/dialogs.py:550 +#: ../src/dialogs.py:598 msgid "Last but not least, we would like to thank all the package maintainers." msgstr "Τέλος, θα θέλαμε να ευχαÏιστήσουμε όλους τους διαχειÏιστές πακέτων." #. here you write your name in the form Name FamilyName -#: ../src/dialogs.py:564 +#: ../src/dialogs.py:612 msgid "translator-credits" msgstr "" "Îίκος ΚουÏεμένος \n" @@ -709,236 +2798,295 @@ msgstr "" "ΣταÏÏος ΓιαννοÏÏης \n" "Στάθης ΚαμπέÏης " -#: ../src/dialogs.py:826 +#: ../src/dialogs.py:738 +#, fuzzy, python-format +msgid "Unable to bind to port %s." +msgstr "Αδυναμία συμμετοχής στο δωμάτιο" + +#: ../src/dialogs.py:739 +msgid "" +"Maybe you have another running instance of Gajim. File Transfer will be " +"canceled." +msgstr "" + +#: ../src/dialogs.py:881 #, python-format msgid "Subscription request for account %s from %s" msgstr "Αίτηση εγγÏαφής για το λογαÏιασμό %s από %s" -#: ../src/dialogs.py:829 +#: ../src/dialogs.py:884 #, python-format msgid "Subscription request from %s" msgstr "Αίτηση εγγÏαφής από %s" -#: ../src/dialogs.py:872 +#: ../src/dialogs.py:926 msgid "You can not join a group chat unless you are connected." msgstr "" "Δε μποÏείτε να συμμετάσχετε σε μια ομαδική συζήτηση εκτός αν είστε " "συνδεδεμένος." -#: ../src/dialogs.py:885 +#: ../src/dialogs.py:939 #, python-format msgid "Join Group Chat with account %s" msgstr "Συμμετοχή σε Ομαδική συζήτηση με χÏήση του λογαÏÎ¹Î±ÏƒÎ¼Î¿Ï %s" -#: ../src/dialogs.py:887 ../src/gtkgui.glade.h:177 -msgid "Join Group Chat" -msgstr "Συμμετοχή σε Ομαδική συζήτηση" - -#: ../src/dialogs.py:976 +#: ../src/dialogs.py:1030 msgid "Invalid room or server name" msgstr "Μη έγκυÏο δωμάτιο ή όνομα διακομιστή" -#: ../src/dialogs.py:977 +#: ../src/dialogs.py:1031 msgid "The room name or server name has not allowed characters." msgstr "" "Το όνομα του δωματίου ή του διακομιστή πεÏιέχει μη επιτÏεπόμενους χαÏακτήÏες." -#: ../src/dialogs.py:996 +#: ../src/dialogs.py:1050 #, python-format msgid "Start Chat with account %s" msgstr "ΈναÏξη κουβέντας με χÏήση του λογαÏÎ¹Î±ÏƒÎ¼Î¿Ï %s" -#: ../src/dialogs.py:998 +#: ../src/dialogs.py:1052 msgid "Start Chat" msgstr "ΈναÏξη κουβέντας" -#: ../src/dialogs.py:999 +#: ../src/dialogs.py:1053 +#, fuzzy msgid "" -"Fill in the contact ID of the contact you would like\n" +"Fill in the jid, or nick of the contact you would like\n" "to send a chat message to:" msgstr "" "ΣυμπληÏώστε την ταυτότητα της επαφής Ï€Ïος την οποία\n" "θέλετε να στείλετε ένα μήνυμα συζήτησης:" #. if offline or connecting -#: ../src/dialogs.py:1007 ../src/dialogs.py:1330 ../src/dialogs.py:1450 +#: ../src/dialogs.py:1078 ../src/dialogs.py:1427 ../src/dialogs.py:1551 msgid "Connection not available" msgstr "ΣÏνδεση μη διαθέσιμη" -#: ../src/dialogs.py:1008 ../src/dialogs.py:1331 ../src/dialogs.py:1451 +#: ../src/dialogs.py:1079 ../src/dialogs.py:1428 ../src/dialogs.py:1552 #, python-format msgid "Please make sure you are connected with \"%s\"." msgstr "ΠαÏακαλώ βεβαιωθείτε ότι είστε συνδεδεμένοι με το \"%s\"." -#: ../src/dialogs.py:1018 +#: ../src/dialogs.py:1088 ../src/dialogs.py:1091 +#, fuzzy +msgid "Invalid JID" +msgstr "Μη έγκυÏο Jabber ID" + +#: ../src/dialogs.py:1091 +#, fuzzy, python-format +msgid "Unable to parse \"%s\"." +msgstr "ΑδÏνατη η εγγÏαφή αÏχείου στο %s" + +#: ../src/dialogs.py:1100 msgid "Without a connection, you can not change your password." msgstr "ΠÏέπει να είστε συνδεδεμένος για να αλλάξετε τον κωδικό σας." -#: ../src/dialogs.py:1037 +#: ../src/dialogs.py:1119 msgid "You must enter a password." msgstr "ΠÏέπει να πληκτÏολογήσετε ένα κωδικό." #. img to display #. default value -#: ../src/dialogs.py:1083 ../src/gajim.py:443 ../src/notify.py:129 +#: ../src/dialogs.py:1165 ../src/notify.py:126 ../src/notify.py:268 msgid "Contact Signed In" msgstr "ΣÏνδεση επαφής" -#: ../src/dialogs.py:1085 ../src/gajim.py:474 ../src/notify.py:131 +#: ../src/dialogs.py:1167 ../src/notify.py:134 ../src/notify.py:270 msgid "Contact Signed Out" msgstr "ΑποσÏνδεση επαφής" #. chat message -#: ../src/dialogs.py:1087 ../src/gajim.py:609 ../src/notify.py:133 +#: ../src/dialogs.py:1169 ../src/notify.py:154 ../src/notify.py:272 msgid "New Message" msgstr "Îέο μήνυμα" #. single message -#: ../src/dialogs.py:1087 ../src/gajim.py:603 ../src/notify.py:133 +#: ../src/dialogs.py:1169 ../src/notify.py:138 ../src/notify.py:272 msgid "New Single Message" msgstr "Îέο μονό μήνυμα" -#: ../src/dialogs.py:1088 ../src/gajim.py:586 ../src/notify.py:134 +#. private message +#: ../src/dialogs.py:1170 ../src/notify.py:145 ../src/notify.py:273 msgid "New Private Message" msgstr "Îέο Ï€Ïοσωπικό μήνυμα" -#: ../src/dialogs.py:1088 ../src/gajim.py:1049 ../src/notify.py:142 +#: ../src/dialogs.py:1170 ../src/gajim.py:1044 ../src/notify.py:281 msgid "New E-mail" msgstr "Îέο E-Mail" -#: ../src/dialogs.py:1090 ../src/gajim.py:1187 ../src/notify.py:136 +#: ../src/dialogs.py:1172 ../src/gajim.py:1187 ../src/notify.py:275 msgid "File Transfer Request" msgstr "Αίτηση μεταφοÏάς αÏχείου" -#: ../src/dialogs.py:1092 ../src/gajim.py:1035 ../src/gajim.py:1164 -#: ../src/notify.py:138 +#: ../src/dialogs.py:1174 ../src/gajim.py:1022 ../src/gajim.py:1164 +#: ../src/notify.py:277 msgid "File Transfer Error" msgstr "Σφάλμα μεταφοÏάς αÏχείου" -#: ../src/dialogs.py:1094 ../src/gajim.py:1222 ../src/gajim.py:1244 -#: ../src/gajim.py:1261 ../src/notify.py:140 +#: ../src/dialogs.py:1176 ../src/gajim.py:1222 ../src/gajim.py:1244 +#: ../src/gajim.py:1261 ../src/notify.py:279 msgid "File Transfer Completed" msgstr "Η μεταφοÏά αÏχείου ολοκληÏώθηκε" -#: ../src/dialogs.py:1095 ../src/gajim.py:1225 ../src/notify.py:140 +#: ../src/dialogs.py:1177 ../src/gajim.py:1225 ../src/notify.py:279 msgid "File Transfer Stopped" msgstr "Η μεταφοÏά αÏχείου διακόπηκε" -#: ../src/dialogs.py:1097 ../src/gajim.py:953 ../src/notify.py:144 +#: ../src/dialogs.py:1179 ../src/gajim.py:920 ../src/notify.py:283 msgid "Groupchat Invitation" msgstr "ΠÏόσκληση ομαδικής κουβέντας" +#: ../src/dialogs.py:1181 ../src/notify.py:118 ../src/notify.py:285 +#, fuzzy +msgid "Contact Changed Status" +msgstr "ΑποσÏνδεση επαφής" + #. FIXME: for Received with should become 'in' -#: ../src/dialogs.py:1262 +#: ../src/dialogs.py:1359 #, python-format msgid "Single Message with account %s" msgstr "Μονό μήνυμα με χÏήση του λογαÏÎ¹Î±ÏƒÎ¼Î¿Ï %s" -#: ../src/dialogs.py:1264 +#: ../src/dialogs.py:1361 msgid "Single Message" msgstr "Μονό μήνυμα" #. prepare UI for Sending -#: ../src/dialogs.py:1267 +#: ../src/dialogs.py:1364 #, python-format msgid "Send %s" msgstr "Αποστολή %s" #. prepare UI for Receiving -#: ../src/dialogs.py:1290 +#: ../src/dialogs.py:1387 #, python-format msgid "Received %s" msgstr "Έγινε λήψη του %s" #. we create a new blank window to send and we preset RE: and to jid -#: ../src/dialogs.py:1355 +#: ../src/dialogs.py:1454 #, python-format msgid "RE: %s" msgstr "RE: %s" -#: ../src/dialogs.py:1356 +#: ../src/dialogs.py:1455 #, python-format msgid "%s wrote:\n" msgstr "Ο/Η %s έγÏαψε:\n" -#: ../src/dialogs.py:1400 +#: ../src/dialogs.py:1499 #, python-format msgid "XML Console for %s" msgstr "XML Κονσόλα για %s" -#: ../src/dialogs.py:1402 +#: ../src/dialogs.py:1501 msgid "XML Console" msgstr "XML Κονσόλα" +#: ../src/dialogs.py:1620 +#, python-format +msgid "Privacy List %s" +msgstr "" + +#: ../src/dialogs.py:1624 +#, python-format +msgid "Privacy List for %s" +msgstr "" + +#: ../src/dialogs.py:1716 +#, fuzzy +msgid "Edit a rule" +msgstr "ΠÏοσαÏμοσμένες Ρυθμίσεις" + +#: ../src/dialogs.py:1801 +#, fuzzy +msgid "Add a rule" +msgstr "ΠÏοσαÏμοσμένες Ρυθμίσεις" + +#: ../src/dialogs.py:1897 +#, python-format +msgid "Privacy Lists for %s" +msgstr "" + +#: ../src/dialogs.py:1899 +#, fuzzy +msgid "Privacy Lists" +msgstr "ΠÏοσωπικές συζητήσεις" + #. FIXME: use nickname instead of contact_jid -#: ../src/dialogs.py:1488 +#: ../src/dialogs.py:1988 #, python-format msgid "%(contact_jid)s has invited you to %(room_jid)s room" msgstr "Ο/Η %(contact_jid)s σας Ï€Ïοσκάλεσε στο %(room_jid)s" #. only if not None and not '' -#: ../src/dialogs.py:1494 +#: ../src/dialogs.py:1994 #, python-format msgid "Comment: %s" msgstr "Σχόλιο: %s" -#: ../src/dialogs.py:1554 +#: ../src/dialogs.py:2054 msgid "Choose Sound" msgstr "Επιλογή ήχου" -#: ../src/dialogs.py:1564 ../src/dialogs.py:1607 +#: ../src/dialogs.py:2064 ../src/dialogs.py:2107 msgid "All files" msgstr "Όλα τα αÏχεία" -#: ../src/dialogs.py:1569 +#: ../src/dialogs.py:2069 msgid "Wav Sounds" msgstr "ΑÏχεία ήχου Wav" -#: ../src/dialogs.py:1597 +#: ../src/dialogs.py:2097 msgid "Choose Image" msgstr "Επιλογή εικόνας" -#: ../src/dialogs.py:1612 +#: ../src/dialogs.py:2112 msgid "Images" msgstr "Εικόνες" -#: ../src/dialogs.py:1658 +#: ../src/dialogs.py:2157 #, python-format msgid "When %s becomes:" msgstr "Όταν το %s γίνεται:" -#: ../src/dialogs.py:1660 +#: ../src/dialogs.py:2159 #, python-format msgid "Adding Special Notification for %s" msgstr "ΠÏοσθήκη ειδικής ειδοποίησης για το %s" -#: ../src/disco.py:117 +#: ../src/dialogs.py:2232 +#, fuzzy +msgid "Condition" +msgstr "ΣÏνδεση" + +#: ../src/disco.py:108 msgid "Others" msgstr "Άλλα" #. conference is a category for listing mostly groupchats in service discovery -#: ../src/disco.py:121 +#: ../src/disco.py:112 msgid "Conference" msgstr "Ομαδικές συζητήσεις" -#: ../src/disco.py:420 +#: ../src/disco.py:411 msgid "Without a connection, you can not browse available services" msgstr "ΠÏέπει να συνδεθείτε για να πεÏιηγηθείτε στις υπηÏεσίες" -#: ../src/disco.py:499 +#: ../src/disco.py:490 #, python-format msgid "Service Discovery using account %s" msgstr "Ανακάλυψη υπηÏεσιών χÏησιμοποιώντας το λογαÏιασμό %s" -#: ../src/disco.py:500 +#: ../src/disco.py:491 msgid "Service Discovery" msgstr "Ανακάλυψη υπηÏεσιών" -#: ../src/disco.py:637 +#: ../src/disco.py:628 msgid "The service could not be found" msgstr "Η υπηÏεσία δεν ήταν δυνατό να βÏεθεί" -#: ../src/disco.py:638 +#: ../src/disco.py:629 msgid "" "There is no service at the address you entered, or it is not responding. " "Check the address and try again." @@ -946,171 +3094,174 @@ msgstr "" "Δεν υπάÏχει υπηÏεσία στη διεÏθυνση που εισάγατε, ή δεν ανταποκÏίνεται. " "Ελέγξτε τη διεÏθυνση και Ï€Ïοσπαθήστε ξανά." -#: ../src/disco.py:642 ../src/disco.py:924 +#: ../src/disco.py:633 ../src/disco.py:915 msgid "The service is not browsable" msgstr "Η υπηÏεσία δεν είναι πεÏιηγήσιμη" -#: ../src/disco.py:643 +#: ../src/disco.py:634 msgid "This type of service does not contain any items to browse." msgstr "Î‘Ï…Ï„Î¿Ï Ï„Î¿Ï… είδους η υπηÏεσία δεν πεÏιέχει άλλα αντικείμενα." -#: ../src/disco.py:723 +#: ../src/disco.py:714 #, python-format msgid "Browsing %s using account %s" msgstr "ΠεÏιήγηση %s χÏησιμοποιώντας το λογαÏιασμό %s" -#: ../src/disco.py:762 +#: ../src/disco.py:753 msgid "_Browse" msgstr "_ΠεÏιήγηση" -#: ../src/disco.py:925 +#: ../src/disco.py:916 msgid "This service does not contain any items to browse." msgstr "Αυτή η υπηÏεσία δεν πεÏιέχει άλλα αντικείμενα." -#: ../src/disco.py:1146 ../src/disco.py:1263 +#: ../src/disco.py:1137 ../src/disco.py:1254 msgid "Re_gister" msgstr "_ΕγγÏαφή" -#: ../src/disco.py:1154 ../src/disco.py:1516 ../src/gtkgui.glade.h:350 -msgid "_Join" -msgstr "_Συμμετοχή" - -#: ../src/disco.py:1261 ../src/gtkgui.glade.h:334 ../src/roster_window.py:1462 -msgid "_Edit" -msgstr "Ε_πεξεÏγασία" - -#: ../src/disco.py:1300 +#: ../src/disco.py:1291 #, python-format msgid "Scanning %d / %d.." msgstr "ΣάÏωση %d / %d.." #. Users column -#: ../src/disco.py:1482 +#: ../src/disco.py:1473 msgid "Users" msgstr "ΧÏήστες" #. Description column -#: ../src/disco.py:1489 +#: ../src/disco.py:1480 msgid "Description" msgstr "ΠεÏιγÏαφή" -#: ../src/filetransfers_window.py:81 +#: ../src/filetransfers_window.py:72 msgid "File" msgstr "ΑÏχείο" -#: ../src/filetransfers_window.py:96 +#: ../src/filetransfers_window.py:87 msgid "Time" msgstr "ΧÏόνος" -#: ../src/filetransfers_window.py:108 +#: ../src/filetransfers_window.py:99 msgid "Progress" msgstr "ΠÏόοδος" -#: ../src/filetransfers_window.py:176 ../src/filetransfers_window.py:238 +#: ../src/filetransfers_window.py:163 ../src/filetransfers_window.py:223 #, python-format msgid "Filename: %s" msgstr "Όνομα αÏχείου: %s" -#: ../src/filetransfers_window.py:178 ../src/filetransfers_window.py:308 +#: ../src/filetransfers_window.py:164 ../src/filetransfers_window.py:291 #, python-format msgid "Size: %s" msgstr "Mέγεθος: %s" #. You is a reply of who sent a file #. You is a reply of who received a file -#: ../src/filetransfers_window.py:187 ../src/filetransfers_window.py:197 -#: ../src/history_manager.py:452 +#: ../src/filetransfers_window.py:173 ../src/filetransfers_window.py:183 +#: ../src/history_manager.py:454 msgid "You" msgstr "You" -#: ../src/filetransfers_window.py:188 ../src/filetransfers_window.py:240 +#: ../src/filetransfers_window.py:174 ../src/filetransfers_window.py:224 #, python-format msgid "Sender: %s" msgstr "Αποστολέας: %s" -#: ../src/filetransfers_window.py:189 ../src/filetransfers_window.py:555 -#: ../src/tooltips.py:617 +#: ../src/filetransfers_window.py:175 ../src/filetransfers_window.py:556 +#: ../src/tooltips.py:639 msgid "Recipient: " msgstr "ΠαÏαλήπτης: " -#: ../src/filetransfers_window.py:200 +#: ../src/filetransfers_window.py:186 #, python-format msgid "Saved in: %s" msgstr "ΑποθηκεÏτηκε στο: %s" -#: ../src/filetransfers_window.py:203 +#: ../src/filetransfers_window.py:188 msgid "File transfer completed" msgstr "Η μεταφοÏά αÏχείου ολοκληÏώθηκε" -#: ../src/filetransfers_window.py:205 ../src/gtkgui.glade.h:366 -msgid "_Open Containing Folder" -msgstr "_Άνοιγμα του πεÏιέχοντος φακέλου" - -#: ../src/filetransfers_window.py:219 ../src/filetransfers_window.py:227 +#: ../src/filetransfers_window.py:204 ../src/filetransfers_window.py:212 msgid "File transfer canceled" msgstr "Η μεταφοÏά αÏχείου ακυÏώθηκε" -#: ../src/filetransfers_window.py:219 ../src/filetransfers_window.py:228 +#: ../src/filetransfers_window.py:204 ../src/filetransfers_window.py:213 msgid "Connection with peer cannot be established." msgstr "Η σÏνδεση με τον απομακÏυσμένο ομότιμο δεν ήταν εφικτή." -#: ../src/filetransfers_window.py:242 +#: ../src/filetransfers_window.py:225 msgid "File transfer stopped by the contact of the other side" msgstr "Η μεταφοÏά αÏχείου σταμάτησε από την επαφή της άλλης πλευÏάς" -#: ../src/filetransfers_window.py:259 +#: ../src/filetransfers_window.py:242 msgid "Choose File to Send..." msgstr "Επιλέξτε το αÏχείο που θα σταλεί..." -#. Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector) -#: ../src/filetransfers_window.py:266 ../src/gtkgui.glade.h:390 -msgid "_Send" -msgstr "_Αποστολή" - -#: ../src/filetransfers_window.py:273 +#: ../src/filetransfers_window.py:256 msgid "Gajim cannot access this file" msgstr "Το Gajim δεν έχει Ï€Ïόσβαση σε αυτό το αÏχείο" -#: ../src/filetransfers_window.py:274 +#: ../src/filetransfers_window.py:257 msgid "This file is being used by another process." msgstr "Αυτό το αÏχείο χÏησιμοποιείται από άλλη διεÏγασία." -#: ../src/filetransfers_window.py:306 +#: ../src/filetransfers_window.py:289 #, python-format msgid "File: %s" msgstr "ΑÏχείο: %s" -#: ../src/filetransfers_window.py:311 +#: ../src/filetransfers_window.py:294 #, python-format msgid "Type: %s" msgstr "ΤÏπος: %s" -#: ../src/filetransfers_window.py:313 +#: ../src/filetransfers_window.py:296 #, python-format msgid "Description: %s" msgstr "ΠεÏιγÏαφή: %s" -#: ../src/filetransfers_window.py:314 +#: ../src/filetransfers_window.py:297 #, python-format msgid "%s wants to send you a file:" msgstr "O %s επιθυμεί να σας στείλει ένα αÏχείο:" -#: ../src/filetransfers_window.py:329 +#: ../src/filetransfers_window.py:311 +#, python-format +msgid "Cannot overwrite existing file \"%s\"" +msgstr "" + +#: ../src/filetransfers_window.py:312 +msgid "" +"A file with this name already exists and you do not have permission to " +"overwrite it." +msgstr "" + +#: ../src/filetransfers_window.py:319 ../src/gtkgui_helpers.py:685 msgid "This file already exists" msgstr "Αυτό το αÏχείο υπάÏχει ήδη" -#: ../src/filetransfers_window.py:329 +#: ../src/filetransfers_window.py:319 ../src/gtkgui_helpers.py:685 msgid "What do you want to do?" msgstr "Τι θέλετε να κάνετε;" -#: ../src/filetransfers_window.py:344 +#: ../src/filetransfers_window.py:331 +#, python-format +msgid "Directory \"%s\" is not writable" +msgstr "" + +#: ../src/filetransfers_window.py:331 +msgid "You do not have permission to create files in this directory." +msgstr "" + +#: ../src/filetransfers_window.py:341 msgid "Save File as..." msgstr "Αποθήκευση αÏχείου ως..." #. Print remaining time in format 00:00:00 #. You can change the places of (hours), (minutes), (seconds) - #. they are not translatable. -#: ../src/filetransfers_window.py:419 +#: ../src/filetransfers_window.py:420 #, python-format msgid "%(hours)02.d:%(minutes)02.d:%(seconds)02.d" msgstr "%(hours)02.d:%(minutes)02.d:%(seconds)02.d" @@ -1118,29 +3269,29 @@ msgstr "%(hours)02.d:%(minutes)02.d:%(seconds)02.d" #. This should make the string Kb/s, #. where 'Kb' part is taken from %s. #. Only the 's' after / (which means second) should be translated. -#: ../src/filetransfers_window.py:491 +#: ../src/filetransfers_window.py:492 #, python-format msgid "(%(filesize_unit)s/s)" msgstr "(%(filesize_unit)s/δεπτ)" -#: ../src/filetransfers_window.py:527 ../src/filetransfers_window.py:530 +#: ../src/filetransfers_window.py:528 ../src/filetransfers_window.py:531 msgid "Invalid File" msgstr "Μη έγκυÏο αÏχείο" -#: ../src/filetransfers_window.py:527 +#: ../src/filetransfers_window.py:528 msgid "File: " msgstr "ΑÏχείο:" -#: ../src/filetransfers_window.py:531 +#: ../src/filetransfers_window.py:532 msgid "It is not possible to send empty files" msgstr "Δεν είναι δυνατό να στείλετε άδεια αÏχεία" -#: ../src/filetransfers_window.py:551 ../src/tooltips.py:498 -#: ../src/tooltips.py:607 +#: ../src/filetransfers_window.py:552 ../src/tooltips.py:511 +#: ../src/tooltips.py:629 msgid "Name: " msgstr "Όνομα: " -#: ../src/filetransfers_window.py:553 ../src/tooltips.py:611 +#: ../src/filetransfers_window.py:554 ../src/tooltips.py:633 msgid "Sender: " msgstr "Αποστολέας: " @@ -1148,32 +3299,28 @@ msgstr "Αποστολέας: " msgid "Pause" msgstr "ΠαÏση" -#: ../src/filetransfers_window.py:753 ../src/gtkgui.glade.h:328 -msgid "_Continue" -msgstr "_Συνέχεια" - -#: ../src/gajim-remote.py:84 +#: ../src/gajim-remote.py:82 msgid "shows a help on specific command" msgstr "εμφανίζει βοήθεια για μια συγκεκÏιμένη εντολή" #. User gets help for the command, specified by this parameter -#: ../src/gajim-remote.py:87 +#: ../src/gajim-remote.py:85 msgid "command" msgstr "εντολή" -#: ../src/gajim-remote.py:88 +#: ../src/gajim-remote.py:86 msgid "show help on command" msgstr "εμφάνιση βοήθειας στην εντολή" -#: ../src/gajim-remote.py:92 +#: ../src/gajim-remote.py:90 msgid "Shows or hides the roster window" msgstr "Εμφανίζει ή αποκÏÏπτει το παÏάθυÏο λίστας επαφών" -#: ../src/gajim-remote.py:96 +#: ../src/gajim-remote.py:94 msgid "Popups a window with the next unread message" msgstr "Εμφάνιση ενός παÏαθÏÏου με το επόμενο αδιάβαστο μήνυμα" -#: ../src/gajim-remote.py:100 +#: ../src/gajim-remote.py:98 msgid "" "Prints a list of all contacts in the roster. Each contact appear on a " "separate line" @@ -1181,45 +3328,48 @@ msgstr "" "Εμφανίζει όλες τις επαφές στη λίστα επαφών. Κάθε επαφή εμφανίζεται σε μια " "ξεχωÏιστή γÏαμμή" -#: ../src/gajim-remote.py:102 ../src/gajim-remote.py:115 -#: ../src/gajim-remote.py:125 ../src/gajim-remote.py:138 -#: ../src/gajim-remote.py:159 ../src/gajim-remote.py:189 -#: ../src/gajim-remote.py:197 ../src/gajim-remote.py:204 -#: ../src/gajim-remote.py:211 +#: ../src/gajim-remote.py:100 ../src/gajim-remote.py:114 +#: ../src/gajim-remote.py:124 ../src/gajim-remote.py:137 +#: ../src/gajim-remote.py:151 ../src/gajim-remote.py:172 +#: ../src/gajim-remote.py:202 ../src/gajim-remote.py:211 +#: ../src/gajim-remote.py:218 ../src/gajim-remote.py:225 +#: ../src/gajim-remote.py:236 msgid "account" msgstr "λογαÏιασμός" -#: ../src/gajim-remote.py:102 +#: ../src/gajim-remote.py:100 msgid "show only contacts of the given account" msgstr "εμφάνιση μόνο των επαφών του συγκεκÏιμένου λογαÏιασμοÏ" -#: ../src/gajim-remote.py:107 +#: ../src/gajim-remote.py:105 msgid "Prints a list of registered accounts" msgstr "Εμφανίζει τη λίστα των καταχωÏημένων λογαÏιασμών" -#: ../src/gajim-remote.py:111 +#: ../src/gajim-remote.py:109 msgid "Changes the status of account or accounts" msgstr "Αλλάζει την κατάσταση ενός ή πολλών λογαÏιασμών" -#: ../src/gajim-remote.py:113 +#. offline, online, chat, away, xa, dnd, invisible should not be translated +#: ../src/gajim-remote.py:112 msgid "status" msgstr "κατάσταση" -#: ../src/gajim-remote.py:113 +#: ../src/gajim-remote.py:112 msgid "one of: offline, online, chat, away, xa, dnd, invisible " msgstr "" "μία από τις: αποσυνδεδεμένος, συνδεδεμένος, κουβέντα, απομακÏυσμένος, " "εκτεταμένα-απομακÏυσμένος, dnd, αόÏατος " -#: ../src/gajim-remote.py:114 ../src/gajim-remote.py:135 +#: ../src/gajim-remote.py:113 ../src/gajim-remote.py:134 +#: ../src/gajim-remote.py:148 msgid "message" msgstr "μήνυμα" -#: ../src/gajim-remote.py:114 +#: ../src/gajim-remote.py:113 msgid "status message" msgstr "μήνυμα κατάστασης" -#: ../src/gajim-remote.py:115 +#: ../src/gajim-remote.py:114 msgid "" "change status of account \"account\". If not specified, try to change status " "of all accounts that have \"sync with global status\" option set" @@ -1228,157 +3378,194 @@ msgstr "" "δοκιμάστε να αλλάξετε την κατάσταση όλων των λογαÏιασμών που έχουν " "ενεÏγοποιημένη την επιλογή \"συγχÏονισμός με τη γενική κατάσταση\"" -#: ../src/gajim-remote.py:121 +#: ../src/gajim-remote.py:120 msgid "Shows the chat dialog so that you can send messages to a contact" msgstr "" "Εμφανίζει το διαλόγο κουβέντας ώστε να μποÏείτε να στέλνετε μηνÏματα σε μια " "επαφή" -#: ../src/gajim-remote.py:123 +#: ../src/gajim-remote.py:122 msgid "JID of the contact that you want to chat with" msgstr "το JID της επαφής με την οποία θέλετε να συνομιλήσετε" -#: ../src/gajim-remote.py:125 ../src/gajim-remote.py:189 +#: ../src/gajim-remote.py:124 ../src/gajim-remote.py:202 msgid "if specified, contact is taken from the contact list of this account" msgstr "" "εάν έχει καθοÏιστεί, η επαφή λαμβάνεται από την λίστα επαφών Î±Ï…Ï„Î¿Ï Ï„Î¿Ï… " "λογαÏιασμοÏ" -#: ../src/gajim-remote.py:130 +#: ../src/gajim-remote.py:129 +#, fuzzy msgid "" -"Sends new message to a contact in the roster. Both OpenPGP key and account " -"are optional. If you want to set only 'account', without 'OpenPGP key', just " -"set 'OpenPGP key' to ''." +"Sends new chat message to a contact in the roster. Both OpenPGP key and " +"account are optional. If you want to set only 'account', without 'OpenPGP " +"key', just set 'OpenPGP key' to ''." msgstr "" "Αποστολή νέου μηνÏματος σε μια επαφή από την λίστα επαφών. Το κλειδί OpenPGP " "και ο λογαÏιασμός είναι Ï€ÏοαιÏετικά. Εάν θέλετε να καθοÏίσετε μόνο το " "'λογαÏιασμό', χωÏίς το 'κλειδί OpenPGP', απλώς θέστε το 'κλειδί OpenPGP' σε " "''." -#: ../src/gajim-remote.py:134 +#: ../src/gajim-remote.py:133 ../src/gajim-remote.py:146 msgid "JID of the contact that will receive the message" msgstr "το JID της επαφής που θα λάβει το μήνυμα" -#: ../src/gajim-remote.py:135 +#: ../src/gajim-remote.py:134 ../src/gajim-remote.py:148 msgid "message contents" msgstr "πεÏιεχόμενα μηνÏματος" -#: ../src/gajim-remote.py:136 +#: ../src/gajim-remote.py:135 ../src/gajim-remote.py:149 msgid "pgp key" msgstr "κλειδί pgp" -#: ../src/gajim-remote.py:136 +#: ../src/gajim-remote.py:135 ../src/gajim-remote.py:149 msgid "if specified, the message will be encrypted using this public key" msgstr "" "εάν καθοÏιστεί, το μήνυμα θα κÏυπτογÏαφηθεί χÏησιμοποιώντας αυτό το δημόσιο " "κλειδί" -#: ../src/gajim-remote.py:138 +#: ../src/gajim-remote.py:137 ../src/gajim-remote.py:151 msgid "if specified, the message will be sent using this account" msgstr "εάν οÏιστεί, το μήνυμα θα σταλεί χÏησιμοποιώντας αυτόν το λογαÏιασμό" -#: ../src/gajim-remote.py:143 +#: ../src/gajim-remote.py:142 +#, fuzzy +msgid "" +"Sends new single message to a contact in the roster. Both OpenPGP key and " +"account are optional. If you want to set only 'account', without 'OpenPGP " +"key', just set 'OpenPGP key' to ''." +msgstr "" +"Αποστολή νέου μηνÏματος σε μια επαφή από την λίστα επαφών. Το κλειδί OpenPGP " +"και ο λογαÏιασμός είναι Ï€ÏοαιÏετικά. Εάν θέλετε να καθοÏίσετε μόνο το " +"'λογαÏιασμό', χωÏίς το 'κλειδί OpenPGP', απλώς θέστε το 'κλειδί OpenPGP' σε " +"''." + +#: ../src/gajim-remote.py:147 +#, fuzzy +msgid "subject" +msgstr "Θέμα" + +#: ../src/gajim-remote.py:147 +#, fuzzy +msgid "message subject" +msgstr "Το μήνυμα στάλθηκε" + +#: ../src/gajim-remote.py:156 msgid "Gets detailed info on a contact" msgstr "Λήψη αναλυτικών πληÏοφοÏιών για μία επαφή" -#: ../src/gajim-remote.py:145 ../src/gajim-remote.py:158 -#: ../src/gajim-remote.py:188 +#: ../src/gajim-remote.py:158 ../src/gajim-remote.py:171 +#: ../src/gajim-remote.py:201 ../src/gajim-remote.py:210 msgid "JID of the contact" msgstr "το JID της επαφής" -#: ../src/gajim-remote.py:149 +#: ../src/gajim-remote.py:162 msgid "Gets detailed info on a account" msgstr "Λήψη αναλυτικών πληÏοφοÏιών για ένα λογαÏιασμό" -#: ../src/gajim-remote.py:151 +#: ../src/gajim-remote.py:164 msgid "Name of the account" msgstr "Όνομα λογαÏιασμοÏ" -#: ../src/gajim-remote.py:155 +#: ../src/gajim-remote.py:168 msgid "Sends file to a contact" msgstr "Αποστολή αÏχείου σε μία επαφή" -#: ../src/gajim-remote.py:157 +#: ../src/gajim-remote.py:170 msgid "file" msgstr "αÏχείο" -#: ../src/gajim-remote.py:157 +#: ../src/gajim-remote.py:170 msgid "File path" msgstr "ΔιαδÏομή αÏχείου" -#: ../src/gajim-remote.py:159 +#: ../src/gajim-remote.py:172 msgid "if specified, file will be sent using this account" msgstr "εάν οÏιστεί, το αÏχείο θα σταλεί χÏησιμοποιώντας αυτόν το λογαÏιασμό" -#: ../src/gajim-remote.py:164 +#: ../src/gajim-remote.py:177 msgid "Lists all preferences and their values" msgstr "Εμφανίζει όλες τις Ï€Ïοτιμήσεις και τις τιμές τους" -#: ../src/gajim-remote.py:168 +#: ../src/gajim-remote.py:181 msgid "Sets value of 'key' to 'value'." msgstr "ΚαταχωÏεί την 'τιμή' στην τιμή του 'κλειδιοÏ'" -#: ../src/gajim-remote.py:170 +#: ../src/gajim-remote.py:183 msgid "key=value" msgstr "κλειδί=τιμή" -#: ../src/gajim-remote.py:170 +#: ../src/gajim-remote.py:183 msgid "'key' is the name of the preference, 'value' is the value to set it to" msgstr "" "Το 'κλειδί' είναι το όνομα της Ï€Ïοτίμησης, ενώ 'τιμή' είναι η τιμή που του " "έχει Ï€ÏοσδιοÏιστεί" -#: ../src/gajim-remote.py:175 +#: ../src/gajim-remote.py:188 msgid "Deletes a preference item" msgstr "ΔιαγÏάφει μια Ï€Ïοτίμηση" -#: ../src/gajim-remote.py:177 +#: ../src/gajim-remote.py:190 msgid "key" msgstr "κλειδί" -#: ../src/gajim-remote.py:177 +#: ../src/gajim-remote.py:190 msgid "name of the preference to be deleted" msgstr "όνομα της Ï€Ïοτίμησης που Ï€Ïόκειται να διαγÏαφεί" -#: ../src/gajim-remote.py:181 +#: ../src/gajim-remote.py:194 msgid "Writes the current state of Gajim preferences to the .config file" msgstr "" "ΓÏάφει την Ï„Ïέχουσα κατάσταση των Ï€Ïοτιμήσεων του Gajim στο .config αÏχείο" -#: ../src/gajim-remote.py:186 +#: ../src/gajim-remote.py:199 msgid "Removes contact from roster" msgstr "ΑφαιÏεί μια επαφή από τη λίστα επαφών" -#: ../src/gajim-remote.py:195 +#: ../src/gajim-remote.py:208 msgid "Adds contact to roster" msgstr "ΠÏοσθέτει μια επαφή στη λίστα επαφών" -#: ../src/gajim-remote.py:197 -msgid "Adds new contact to this account." +#: ../src/gajim-remote.py:210 +msgid "jid" +msgstr "" + +#: ../src/gajim-remote.py:211 +#, fuzzy +msgid "Adds new contact to this account" msgstr "ΠÏοσθέτει μια επαφή σε αυτό το λογαÏιασμό." -#: ../src/gajim-remote.py:202 +#: ../src/gajim-remote.py:216 msgid "Returns current status (the global one unless account is specified)" msgstr "" "Εμφανίζει την Ï„Ïέχουσα κατάσταση (τη γενική. εκτός εάν έχει Ï€ÏοσδιοÏιστεί " "λογαÏιασμός)" -#: ../src/gajim-remote.py:209 +#: ../src/gajim-remote.py:223 msgid "" "Returns current status message(the global one unless account is specified)" msgstr "" "Εμφανίζει την Ï„Ïέχουσα κατάσταση (τη γενική. εκτός εάν έχει Ï€ÏοσδιοÏιστεί " "λογαÏιασμός)" -#: ../src/gajim-remote.py:216 +#: ../src/gajim-remote.py:230 msgid "Returns number of unreaded messages" msgstr "ΑναφέÏει τον αÏιθμό των μη αναγνωσμένων μηνυμάτων" +#: ../src/gajim-remote.py:234 +msgid "Open 'Start Chat' dialog" +msgstr "" + #: ../src/gajim-remote.py:236 +#, fuzzy +msgid "Starts chat, using this account" +msgstr "ΈναÏξη κουβέντας με χÏήση του λογαÏÎ¹Î±ÏƒÎ¼Î¿Ï %s" + +#: ../src/gajim-remote.py:256 msgid "Missing argument \"contact_jid\"" msgstr "Λείπει το ÏŒÏισμα \"contact_jid\"" -#: ../src/gajim-remote.py:255 +#: ../src/gajim-remote.py:275 #, python-format msgid "" "'%s' is not in your roster.\n" @@ -1387,16 +3574,16 @@ msgstr "" "Η επαφή '%s' δεν είναι στη λίστα σας.\n" "ΠαÏακαλώ καθοÏίστε τον λογαÏιασμό που θα σταλεί το μήνυμα." -#: ../src/gajim-remote.py:258 +#: ../src/gajim-remote.py:278 msgid "You have no active account" msgstr "Δεν έχετε κανέναν ενεÏγό λογαÏιασμό" -#: ../src/gajim-remote.py:301 +#: ../src/gajim-remote.py:321 #, python-format msgid "Unknown D-Bus version: %s" msgstr "Άγνωστη έκδοση του D-Bus: %s" -#: ../src/gajim-remote.py:328 +#: ../src/gajim-remote.py:348 #, python-format msgid "" "Usage: %s %s %s \n" @@ -1405,16 +3592,16 @@ msgstr "" "ΧÏήση: %s %s %s \n" "\t %s" -#: ../src/gajim-remote.py:331 +#: ../src/gajim-remote.py:351 msgid "Arguments:" msgstr "ΟÏίσματα:" -#: ../src/gajim-remote.py:335 +#: ../src/gajim-remote.py:355 #, python-format msgid "%s not found" msgstr "μη υπαÏκτό %s" -#: ../src/gajim-remote.py:339 +#: ../src/gajim-remote.py:359 #, python-format msgid "" "Usage: %s command [arguments]\n" @@ -1423,7 +3610,7 @@ msgstr "" "ΧÏήση: %s εντολή [οÏίσματα]\n" "Η εντολή είναι μία από τις:\n" -#: ../src/gajim-remote.py:413 +#: ../src/gajim-remote.py:433 #, python-format msgid "" "Argument \"%s\" is not specified. \n" @@ -1476,103 +3663,92 @@ msgstr "" msgid "Gajim needs PySQLite2 to run" msgstr "Το Gajim χÏειάζεται την PySQLite2 για να εκτελεστεί" -#: ../src/gajim.py:235 +#. set the icon to all newly opened wind +#: ../src/gajim.py:151 +msgid "Gajim is already running" +msgstr "" + +#: ../src/gajim.py:152 +msgid "" +"Another instance of Gajim seems to be running\n" +"Run anyway?" +msgstr "" + +#: ../src/gajim.py:267 #, python-format msgid "HTTP (%s) Authorization for %s (id: %s)" msgstr "HTTP (%s) Εξουσιοδότηση για %s (id: %s)" -#: ../src/gajim.py:236 +#: ../src/gajim.py:268 msgid "Do you accept this request?" msgstr "Δέχεστε αυτό το αίτημα;" -#: ../src/gajim.py:438 -#, python-format -msgid "%(nickname)s Signed In" -msgstr "ΣÏνδεση %(nickname)s" - -#: ../src/gajim.py:469 -#, python-format -msgid "%(nickname)s Signed Out" -msgstr "ΑποσÏνδεση %(nickname)s" - -#: ../src/gajim.py:583 -#, python-format -msgid "New Private Message from room %s" -msgstr "Îέο Ï€Ïοσωπικό μήνυμα από το δωμάτιο %s" - -#: ../src/gajim.py:584 -#, python-format -msgid "%(nickname)s: %(message)s" -msgstr "%(nickname)s: %(message)s" - -#: ../src/gajim.py:606 -#, python-format -msgid "New Single Message from %(nickname)s" -msgstr "Îέο μονό μήνυμα από %(nickname)s" - -#: ../src/gajim.py:612 -#, python-format -msgid "New Message from %(nickname)s" -msgstr "Îέο μήνυμα από %(nickname)s" - -#: ../src/gajim.py:660 +#: ../src/gajim.py:611 #, python-format msgid "error while sending %s ( %s )" msgstr "σφάλμα κατά την αποστολή του %s ( %s )" -#: ../src/gajim.py:700 +#: ../src/gajim.py:651 msgid "Authorization accepted" msgstr "Λήψη εξουσιοδότησης" -#: ../src/gajim.py:701 +#: ../src/gajim.py:652 #, python-format msgid "The contact \"%s\" has authorized you to see his or her status." msgstr "Η επαφή \"%s\" σας εξουσιοδότησε να βλέπετε την κατάστασή της." -#: ../src/gajim.py:709 +#: ../src/gajim.py:660 #, python-format msgid "Contact \"%s\" removed subscription from you" msgstr "Η επαφή \"%s\" αφαίÏεσαι την εγγÏαφή από εσάς" -#: ../src/gajim.py:710 +#: ../src/gajim.py:661 msgid "You will always see him or her as offline." msgstr "Θα βλέπετε την επαφή πάντα ως αποσυνδεδεμένη." -#: ../src/gajim.py:736 +#: ../src/gajim.py:704 #, python-format msgid "Contact with \"%s\" cannot be established" msgstr "Δεν ήταν δυνατή η επαφή με \"%s\"" -#: ../src/gajim.py:737 ../src/common/connection.py:349 +#: ../src/gajim.py:705 ../src/common/connection.py:398 msgid "Check your connection or try again later." msgstr "Ελέγξτε τη σÏνδεση σας ή δοκιμάστε αÏγότεÏα." -#: ../src/gajim.py:874 ../src/roster_window.py:1012 +#: ../src/gajim.py:849 ../src/roster_window.py:1025 #, python-format msgid "%s is now %s (%s)" msgstr "Ο %s είναι Ï„ÏŽÏα %s (%s)" -#: ../src/gajim.py:963 +#: ../src/gajim.py:930 msgid "Your passphrase is incorrect" msgstr "H κωδική φÏάση είναι λανθασμένη" -#: ../src/gajim.py:964 +#: ../src/gajim.py:931 msgid "You are currently connected without your OpenPGP key." msgstr "Είστε συνδεδεμένοι χωÏίς τη χÏήση του OpenPGP ÎºÎ»ÎµÎ¹Î´Î¹Î¿Ï ÏƒÎ±Ï‚." #. FIXME: find a better image -#: ../src/gajim.py:1045 +#: ../src/gajim.py:1033 #, python-format msgid "New E-mail on %(gmail_mail_address)s" msgstr "Îέα αλληλογÏαφία στο %(gmail_mail_address)s" -#: ../src/gajim.py:1047 +#: ../src/gajim.py:1035 #, python-format msgid "You have %d new E-mail message" msgid_plural "You have %d new E-mail messages" msgstr[0] "Έχετε %d νέο μήνυμα ηλεκτÏονικής αλληλογÏαφίας" msgstr[1] "Έχετε %d νέα μηνÏματα ηλεκτÏονικής αλληλογÏαφίας" +#. each message has a 'From', 'Subject' and 'Snippet' field +#: ../src/gajim.py:1040 +#, python-format +msgid "" +"\n" +"From: %(from_address)s" +msgstr "" + #: ../src/gajim.py:1185 #, python-format msgid "%s wants to send you a file." @@ -1622,143 +3798,153 @@ msgstr "" #. it is good to notify the user #. in case he or she cannot see the output of the console -#: ../src/gajim.py:1634 +#: ../src/gajim.py:1683 msgid "Could not save your settings and preferences" msgstr "Δεν ήταν δυνατή η αποθήκευση των Ï€Ïοτιμήσεων σας" -#: ../src/gajim.py:1848 +#: ../src/gajim.py:1903 msgid "Session Management support not available (missing gnome.ui module)" msgstr "" "Η υποστήÏιξη για ΔιαχείÏιση συνόδων δεν είναι διαθέσιμη (δεν υπάÏχει το " "άÏθÏωμα του gnome.ui)" -#: ../src/gajim.py:1878 +#: ../src/gajim.py:1932 msgid "Migrating Logs..." msgstr "ΜεταφοÏά ιστοÏικοÏ..." -#: ../src/gajim.py:1879 +#: ../src/gajim.py:1933 msgid "Please wait while logs are being migrated..." msgstr "ΠαÏακαλώ πεÏιμένετε όσο μεταφέÏεται το ιστοÏικό..." -#: ../src/gajim_themes_window.py:67 +#: ../src/gajim_themes_window.py:59 msgid "Theme" msgstr "Θέμα" #. don't confuse translators -#: ../src/gajim_themes_window.py:149 +#: ../src/gajim_themes_window.py:141 msgid "theme name" msgstr "όνομα θέματος" -#: ../src/gajim_themes_window.py:166 +#: ../src/gajim_themes_window.py:158 msgid "You cannot delete your current theme" msgstr "Δεν είναι δυνατή η διαγÏαφή του Ï„Ïέχοντος θέματος" -#: ../src/gajim_themes_window.py:167 +#: ../src/gajim_themes_window.py:159 msgid "Please first choose another for your current theme." msgstr "ΠαÏακαλώ επιλέξτε ένα άλλο θέμα Ï€Ïώτα." -#: ../src/groupchat_control.py:68 +#: ../src/groupchat_control.py:99 msgid "Private Chat" msgstr "ΠÏοσωπική συζήτηση" -#: ../src/groupchat_control.py:68 +#: ../src/groupchat_control.py:99 msgid "Private Chats" msgstr "ΠÏοσωπικές συζητήσεις" -#: ../src/groupchat_control.py:84 +#: ../src/groupchat_control.py:115 msgid "Sending private message failed" msgstr "Αποτυχία αποστολής Ï€ÏÎ¿ÏƒÏ‰Ï€Î¹ÎºÎ¿Ï Î¼Î·Î½Ïματος" #. in second %s code replaces with nickname -#: ../src/groupchat_control.py:86 +#: ../src/groupchat_control.py:117 #, python-format msgid "You are no longer in room \"%s\" or \"%s\" has left." msgstr "Δεν είστε πια στο δωμάτιο \"%s\" ή ο/η \"%s\" έφυγε." -#: ../src/groupchat_control.py:98 +#: ../src/groupchat_control.py:129 msgid "Group Chat" msgstr "Ομαδική συζήτηση" -#: ../src/groupchat_control.py:98 +#: ../src/groupchat_control.py:129 msgid "Group Chats" msgstr "Ομαδικές συζητήσεις" -#: ../src/groupchat_control.py:595 +#: ../src/groupchat_control.py:308 +#, fuzzy +msgid "Insert Nickname" +msgstr "Αλλαγή _ψευδώνυμου" + +#: ../src/groupchat_control.py:702 msgid "This room has no subject" msgstr "Αυτό το δωμάτιο δεν έχει θέμα" #. do not print 'kicked by None' -#: ../src/groupchat_control.py:693 +#: ../src/groupchat_control.py:801 #, python-format msgid "%(nick)s has been kicked: %(reason)s" msgstr "Ο %(nick)s πετάχτηκε έξω: %(reason)s" -#: ../src/groupchat_control.py:697 +#: ../src/groupchat_control.py:805 #, python-format msgid "%(nick)s has been kicked by %(who)s: %(reason)s" msgstr "Ο %(nick)s πετάχτηκε έξω από τον %(who)s: %(reason)s" #. do not print 'banned by None' -#: ../src/groupchat_control.py:704 +#: ../src/groupchat_control.py:812 #, python-format msgid "%(nick)s has been banned: %(reason)s" msgstr "Ο %(nick)s έχει απαγοÏευτεί: %(reason)s" -#: ../src/groupchat_control.py:708 +#: ../src/groupchat_control.py:816 #, python-format msgid "%(nick)s has been banned by %(who)s: %(reason)s" msgstr "Ο %(nick)s έχει απαγοÏευτεί από τον %(who)s: %(reason)s" -#: ../src/groupchat_control.py:716 +#: ../src/groupchat_control.py:824 #, python-format msgid "You are now known as %s" msgstr "Είστε Ï„ÏŽÏα γνωστός ως %s" -#: ../src/groupchat_control.py:718 +#: ../src/groupchat_control.py:826 #, python-format msgid "%s is now known as %s" msgstr "Ο %s είναι Ï„ÏŽÏα γνωστός ως %s" -#: ../src/groupchat_control.py:757 +#: ../src/groupchat_control.py:897 #, python-format msgid "%s has left" msgstr "Ο %s έφυγε" +#: ../src/groupchat_control.py:902 +#, python-format +msgid "%s has joined the room" +msgstr "" + #. No status message -#: ../src/groupchat_control.py:759 ../src/roster_window.py:1015 +#: ../src/groupchat_control.py:904 ../src/roster_window.py:1028 #, python-format msgid "%s is now %s" msgstr "Ο %s είναι Ï„ÏŽÏα %s" -#: ../src/groupchat_control.py:871 ../src/groupchat_control.py:888 -#: ../src/groupchat_control.py:981 ../src/groupchat_control.py:997 +#: ../src/groupchat_control.py:1022 ../src/groupchat_control.py:1039 +#: ../src/groupchat_control.py:1132 ../src/groupchat_control.py:1148 #, python-format msgid "Nickname not found: %s" msgstr "Δεν βÏέθηκε το ψευδώνυμο: %s" -#: ../src/groupchat_control.py:915 +#: ../src/groupchat_control.py:1066 #, python-format msgid "Invited %(contact_jid)s to %(room_jid)s." msgstr "ΠÏοσκαλέσατε τον/την %(contact_jid)s στο %(room_jid)s." #. %s is something the user wrote but it is not a jid so we inform -#: ../src/groupchat_control.py:922 ../src/groupchat_control.py:952 +#: ../src/groupchat_control.py:1073 ../src/groupchat_control.py:1103 #, python-format msgid "%s does not appear to be a valid JID" msgstr "Το %s δεν φαίνεται να είναι έγκυÏο JID" -#: ../src/groupchat_control.py:1019 +#: ../src/groupchat_control.py:1185 #, python-format msgid "No such command: /%s (if you want to send this, prefix it with /say)" msgstr "" "Δεν βÏέθηκε η εντολή: /%s (εάν θέλετε να το πείτε αυτό βάλτε το /say μπÏοστά)" -#: ../src/groupchat_control.py:1041 +#: ../src/groupchat_control.py:1207 #, python-format msgid "Commands: %s" msgstr "Εντολές: %s" -#: ../src/groupchat_control.py:1043 +#: ../src/groupchat_control.py:1209 #, python-format msgid "" "Usage: /%s [reason], bans the JID from the room. The nickname " @@ -1771,7 +3957,7 @@ msgstr "" "Εάν το JID είναι στο δωμάτιο, ο χÏήστης θα πεταχτεί έξω επίσης. ΔΕΠ" "υποστηÏίζει κενά στο ψευδώνυμο." -#: ../src/groupchat_control.py:1049 +#: ../src/groupchat_control.py:1215 #, python-format msgid "" "Usage: /%s , opens a private chat window to the specified occupant." @@ -1779,12 +3965,12 @@ msgstr "" "ΧÏήση: /%s <ψευδώνυμο>, ανοίγει ένα παÏάθυÏο Ï€Ïοσωπικής κουβέντας με το " "συγκεκÏιμένο χÏήστη." -#: ../src/groupchat_control.py:1053 +#: ../src/groupchat_control.py:1219 #, python-format msgid "Usage: /%s, clears the text window." msgstr "ΧÏήση: /%s, καθαÏίζει το παÏάθυÏο από το κείμενο." -#: ../src/groupchat_control.py:1055 +#: ../src/groupchat_control.py:1221 #, python-format msgid "" "Usage: /%s [reason], closes the current window or tab, displaying reason if " @@ -1793,12 +3979,12 @@ msgstr "" "ΧÏήση: /%s [λόγος], κλείνει το Ï„Ïέχον παÏάθυÏο ή καÏτέλα, ανακοινώνοντας το " "λόγο εάν έχει Ï€ÏοσδιοÏιστεί." -#: ../src/groupchat_control.py:1058 +#: ../src/groupchat_control.py:1224 #, python-format msgid "Usage: /%s, hide the chat buttons." msgstr "ΧÏήση: /%s, αποκÏÏπτει τα κουμπιά της κουβέντας." -#: ../src/groupchat_control.py:1060 +#: ../src/groupchat_control.py:1226 #, python-format msgid "" "Usage: /%s [reason], invites JID to the current room, optionally " @@ -1807,7 +3993,7 @@ msgstr "" "ΧÏήση: /%s [λόγος], Ï€Ïοσκαλεί το JID στο Ï„Ïέχον δωμάτιο, παÏέχοντας " "Ï€ÏοαιÏετικά και λόγο." -#: ../src/groupchat_control.py:1064 +#: ../src/groupchat_control.py:1230 #, python-format msgid "" "Usage: /%s @[/nickname], offers to join room@server optionally " @@ -1816,7 +4002,7 @@ msgstr "" "ΧÏήση: /%s <δωμάτιο>@<διακομιστής>[/ψευδώνυμο], επιδιώκει την είσοδο στο " "δωμάτιο@διακομιστή, Ï€ÏοαιÏετικά χÏησιμοποιώντας το ψευδώνυμο." -#: ../src/groupchat_control.py:1068 +#: ../src/groupchat_control.py:1234 #, python-format msgid "" "Usage: /%s [reason], removes the occupant specified by nickname " @@ -1826,7 +4012,7 @@ msgstr "" "ΧÏήση: /%s <ψευδώνυμο> [αιτία], βγάζει τον χÏήστη που Ï€ÏοσδιοÏίστηκε από το " "δωμάτιο, Ï€ÏοσδιοÏίζοντας την αιτία. ΔΕΠυποστηÏίζει κενά στο ψευδώνυμο." -#: ../src/groupchat_control.py:1073 +#: ../src/groupchat_control.py:1239 #, python-format msgid "" "Usage: /%s , sends action to the current room. Use third person. (e." @@ -1835,7 +4021,7 @@ msgstr "" "ΧÏήση: /%s <δÏάση>, στέλνει τη δÏάση στο Ï„Ïέχον δωμάτιο, με χÏήση Ï„Ïίτου " "Ï€Ïοσώπου (Ï€.χ. /%s χοÏοπηδάει)." -#: ../src/groupchat_control.py:1077 +#: ../src/groupchat_control.py:1243 #, python-format msgid "" "Usage: /%s [message], opens a private message windowand sends " @@ -1844,17 +4030,22 @@ msgstr "" "ΧÏήση: /%s <ψευδώνυμο> [μήνυμα], ανοίγει ένα παÏάθυÏο Ï€ÏÎ¿ÏƒÏ‰Ï€Î¹ÎºÎ¿Ï Î´Î¹Î±Î»ÏŒÎ³Î¿Ï… " "και στέλνει το μήνυμα στο χÏήστη που Ï€ÏοσδιοÏίστηκε." -#: ../src/groupchat_control.py:1082 +#: ../src/groupchat_control.py:1248 #, python-format msgid "Usage: /%s , changes your nickname in current room." msgstr "ΧÏήση: /%s <ψευδώνυμο>, αλλάζει το ψευδώνυμο σας στο Ï„Ïέχον δωμάτιο." -#: ../src/groupchat_control.py:1086 +#: ../src/groupchat_control.py:1252 +#, fuzzy, python-format +msgid "Usage: /%s , display the names of room occupants." +msgstr "ΧÏήση: /%s [θέμα], εμφανίζει ή αλλάζει το θέμα στο Ï„Ïέχον δωμάτιο." + +#: ../src/groupchat_control.py:1256 #, python-format msgid "Usage: /%s [topic], displays or updates the current room topic." msgstr "ΧÏήση: /%s [θέμα], εμφανίζει ή αλλάζει το θέμα στο Ï„Ïέχον δωμάτιο." -#: ../src/groupchat_control.py:1089 +#: ../src/groupchat_control.py:1259 #, python-format msgid "" "Usage: /%s , sends a message without looking for other commands." @@ -1862,80 +4053,80 @@ msgstr "" "ΧÏήση: /%s <μήνυμα>, στέλνει ένα μήνυμα χωÏίς να γίνει έλεγχος για άλλες " "εντολές." -#: ../src/groupchat_control.py:1092 +#: ../src/groupchat_control.py:1262 #, python-format msgid "No help info for /%s" msgstr "Δεν υπάÏχουν πληÏοφοÏίες για το /%s" -#: ../src/groupchat_control.py:1128 +#: ../src/groupchat_control.py:1304 #, python-format msgid "Are you sure you want to leave room \"%s\"?" msgstr "Είστε σίγουÏοι ότι θέλετε να φÏγετε από το δωμάτιο \"%s\";" -#: ../src/groupchat_control.py:1129 +#: ../src/groupchat_control.py:1305 msgid "If you close this window, you will be disconnected from this room." msgstr "Αν κλείσετε αυτό το παÏάθυÏο, θα αποσυνδεθείτε από αυτό το δωμάτιο." -#: ../src/groupchat_control.py:1133 +#: ../src/groupchat_control.py:1309 msgid "Do _not ask me again" msgstr "Μη_ν με ξαναÏωτήσεις" -#: ../src/groupchat_control.py:1167 +#: ../src/groupchat_control.py:1343 msgid "Changing Subject" msgstr "Αλλαγή θέματος" -#: ../src/groupchat_control.py:1168 +#: ../src/groupchat_control.py:1344 msgid "Please specify the new subject:" msgstr "ΠαÏακαλώ καθοÏίστε το νέο θέμα:" -#: ../src/groupchat_control.py:1176 +#: ../src/groupchat_control.py:1352 msgid "Changing Nickname" msgstr "Αλλαγή ψευδωνÏμου" -#: ../src/groupchat_control.py:1177 +#: ../src/groupchat_control.py:1353 msgid "Please specify the new nickname you want to use:" msgstr "ΠαÏακαλώ καθοÏίστε το νέο ψευδώνυμο που θέλετε να χÏησιμοποιείτε:" -#: ../src/groupchat_control.py:1202 +#: ../src/groupchat_control.py:1379 msgid "Bookmark already set" msgstr "Ο σελιδοδείκτης έχει οÏιστεί ήδη" -#: ../src/groupchat_control.py:1203 +#: ../src/groupchat_control.py:1380 #, python-format msgid "Room \"%s\" is already in your bookmarks." msgstr "Το δωμάτιο \"%s\" υπάÏχει ήδη στους σελιδοδείκτες σας." -#: ../src/groupchat_control.py:1212 +#: ../src/groupchat_control.py:1389 msgid "Bookmark has been added successfully" msgstr "Ο σελιδοδείκτης Ï€Ïοστέθηκε με επιτυχία" -#: ../src/groupchat_control.py:1213 +#: ../src/groupchat_control.py:1390 msgid "You can manage your bookmarks via Actions menu in your roster." msgstr "" "ΜποÏείτε να διαχειÏιστείτε τους σελιδοδείκτες από το Î¼ÎµÎ½Î¿Ï Î•Î½Î­Ïγειας στο " "κεντÏικό παÏάθυÏο." #. ask for reason -#: ../src/groupchat_control.py:1322 +#: ../src/groupchat_control.py:1500 #, python-format msgid "Kicking %s" msgstr "Διώχνοντας τον %s" -#: ../src/groupchat_control.py:1323 ../src/groupchat_control.py:1568 +#: ../src/groupchat_control.py:1501 ../src/groupchat_control.py:1779 msgid "You may specify a reason below:" msgstr "ΜποÏείτε να Ï€ÏοσδιοÏίσετε ένα λόγο παÏακάτω:" #. ask for reason -#: ../src/groupchat_control.py:1567 +#: ../src/groupchat_control.py:1778 #, python-format msgid "Banning %s" msgstr "ΑπαγοÏεÏοντας την Ï€Ïόσβαση στον %s" -#: ../src/gtkexcepthook.py:52 +#: ../src/gtkexcepthook.py:51 msgid "A programming error has been detected" msgstr "Εντοπίστηκε ένα Ï€ÏογÏαμματιστικό σφάλμα" -#: ../src/gtkexcepthook.py:53 +#: ../src/gtkexcepthook.py:52 msgid "" "It probably is not fatal, but should be reported to the developers " "nonetheless." @@ -1943,1773 +4134,83 @@ msgstr "" "Πιθανότατα δεν είναι κÏίσιμο, αλλά Ï€Ïέπει να αναφεÏθεί στους Ï€ÏογÏαμματιστές " "σε κάθε πεÏίπτωση." -#: ../src/gtkexcepthook.py:59 +#: ../src/gtkexcepthook.py:58 msgid "_Report Bug" msgstr "_ΑναφοÏά σφάλματος" -#: ../src/gtkexcepthook.py:82 +#: ../src/gtkexcepthook.py:81 msgid "Details" msgstr "ΛεπτομέÏειες" -#. this always tracebacks -#: ../src/gtkgui.glade.h:1 -msgid "0" -msgstr "0" - -#: ../src/gtkgui.glade.h:2 -msgid "" -"Account is being created\n" -"\n" -"Please wait..." -msgstr "" -"Ο ΛογαÏιασμός δημιουÏγείται\n" -"\n" -"ΠαÏακαλώ πεÏιμένετε..." - -#: ../src/gtkgui.glade.h:5 -msgid "Advanced Configuration Editor" -msgstr "ΕπεξεÏγασία Ïυθμίσεων για Ï€ÏοχωÏημένους" - -#: ../src/gtkgui.glade.h:6 -msgid "Applications" -msgstr "ΕφαÏμογές" - -#: ../src/gtkgui.glade.h:7 -msgid "Chatstate Tab Colors" -msgstr "ΧÏώματα κατάστασης κουβέντας" - -#. a header for custom browser/client/file manager. so translate sth like: Custom Settings -#: ../src/gtkgui.glade.h:9 -msgid "Custom" -msgstr "ΠÏοσαÏμοσμένες Ïυθμίσεις" - -#: ../src/gtkgui.glade.h:10 -msgid "Description" -msgstr "ΠεÏιγÏαφή" - -#: ../src/gtkgui.glade.h:11 -msgid "Format of a line" -msgstr "ΜοÏφή μια γÏαμμής κουβέντας" - -#: ../src/gtkgui.glade.h:12 -msgid "Interface Customization" -msgstr "ΠÏοσαÏμογή διεπαφής" - -#: ../src/gtkgui.glade.h:13 -msgid "Jabber Traffic" -msgstr "Κίνηση Jabber" - -#: ../src/gtkgui.glade.h:14 -msgid "Miscellaneous" -msgstr "ΔιάφοÏα" - -#: ../src/gtkgui.glade.h:15 -msgid "NOTE: You should restart gajim for some setting to take effect" -msgstr "" -"ΣΗΜΕΙΩΣΗ: Θα Ï€Ïέπει να επανεκκινήσετε το gajim για να εφαÏμοστοÏν " -"μεÏικές Ïυθμίσεις" - -#: ../src/gtkgui.glade.h:16 -msgid "OpenPGP" -msgstr "OpenPGP" - -#: ../src/gtkgui.glade.h:17 -msgid "Personal Information" -msgstr "ΠÏοσωπικές πληÏοφοÏίες" - -#: ../src/gtkgui.glade.h:18 -msgid "Please choose one of the options below:" -msgstr "ΠαÏακαλώ επιλέξτε ένα από τα παÏακάτω:" - -#: ../src/gtkgui.glade.h:19 -msgid "Please fill in the data for your new account" -msgstr "ΠαÏακαλώ συμπληÏώστε τα δεδομένα για το νέο λογαÏιασμό σας" - -#: ../src/gtkgui.glade.h:20 -msgid "Preset Status Messages" -msgstr "ΠÏοκαθοÏισμένα μηνÏματα κατάστασης" - -#: ../src/gtkgui.glade.h:21 -msgid "Properties" -msgstr "Ιδιότητες" - -#: ../src/gtkgui.glade.h:22 -msgid "Settings" -msgstr "Ρυθμίσεις" - -#: ../src/gtkgui.glade.h:23 -msgid "Sounds" -msgstr "Ήχοι" - -#: ../src/gtkgui.glade.h:24 -msgid "Type your new status message" -msgstr "Εισάγετε το νέο μήνυμα κατάστασης" - -#: ../src/gtkgui.glade.h:25 -msgid "Visual Notifications" -msgstr "Οπτικές γνωστοποιήσεις" - -#: ../src/gtkgui.glade.h:26 -msgid "What do you want to do?" -msgstr "ΠαÏακαλώ επιλέξτε την ακÏιβή ενέÏγεια" - -#: ../src/gtkgui.glade.h:27 -msgid "XML Input" -msgstr "Είσοδος δεδομένων XML" - -#: ../src/gtkgui.glade.h:28 -msgid "A list of active, completed and stopped file transfers" -msgstr "Λίστα ενεÏγών, ολοκληÏωμένων και σταματημένων μεταφοÏών αÏχείων" - -#: ../src/gtkgui.glade.h:29 -msgid "A_ccounts" -msgstr "_ΛογαÏιασμοί" - -#: ../src/gtkgui.glade.h:30 -msgid "A_fter nickname:" -msgstr "Με_τά από ψευδώνυμο:" - -#. "About" is the text of a tab of vcard window -#: ../src/gtkgui.glade.h:32 -msgid "About" -msgstr "ΠεÏί" - -#: ../src/gtkgui.glade.h:33 -msgid "Accept" -msgstr "Αποδοχή" - -#: ../src/gtkgui.glade.h:34 -msgid "Account" -msgstr "ΛογαÏιασμός" - -#: ../src/gtkgui.glade.h:35 -msgid "" -"Account\n" -"Group\n" -"Contact\n" -"Banner" -msgstr "" -"ΛογαÏιασμός\n" -"Ομάδα\n" -"Επαφή\n" -"Banner" - -#: ../src/gtkgui.glade.h:39 -msgid "Account Modification" -msgstr "ΤÏοποποίηση λογαÏιασμοÏ" - -#: ../src/gtkgui.glade.h:40 -msgid "Accounts" -msgstr "ΛογαÏιασμοί" - -#: ../src/gtkgui.glade.h:42 -msgid "Add New Contact" -msgstr "ΠÏοσθήκη νέας επαφής" - -#: ../src/gtkgui.glade.h:43 -msgid "Add Special _Notification" -msgstr "ΠÏοσθήκη ειδικής γνωστοποίησης" - -#: ../src/gtkgui.glade.h:44 -msgid "Add _Contact" -msgstr "ΠÏοσθήκη _επαφής" - -#: ../src/gtkgui.glade.h:45 -msgid "Address" -msgstr "ΔιεÏθυνση" - -#: ../src/gtkgui.glade.h:46 -msgid "Advanced" -msgstr "ΠÏοχωÏημένοι" - -#: ../src/gtkgui.glade.h:47 -msgid "Advanced Configuration Editor" -msgstr "ΕπεξεÏγασία Ïυθμίσεων για Ï€ÏοχωÏημένους" - -#: ../src/gtkgui.glade.h:48 -msgid "" -"All chat states\n" -"Composing only\n" -"Disabled" -msgstr "" -"Όλες τις καταστάσεις κουβέντας\n" -"Μόνο αν κάποιος γÏάφει ένα μήνυμα\n" -"ΑπενεÏγοποιημένες" - -#: ../src/gtkgui.glade.h:51 -msgid "Allow _OS information to be sent" -msgstr "Îα επιτÏέπεται η α_ποστολή πληÏοφοÏιών για το λειτ. σÏστημα" - -#: ../src/gtkgui.glade.h:52 -msgid "Allow him/her to see my status" -msgstr "ΕπίτÏεψε τον/την να βλέπει την κατάστασή μου" - -#: ../src/gtkgui.glade.h:53 -msgid "Allow popup/notifications when I'm _away/na/busy/invisible" -msgstr "" -"Îα επιτÏέπονται οι εμφανίσεις/γνωστοποιήσεις όταν είμαι _απομακÏ./μη διαθ./" -"απασχολ./αφανής" - -#: ../src/gtkgui.glade.h:54 -msgid "Also known as iChat style" -msgstr "Επίσης γνωστό ως στυλ iChat" - -#: ../src/gtkgui.glade.h:55 -msgid "Ask status message when I:" -msgstr "ΕÏώτηση μηνÏματος κατάστασης όταν γίνομαι:" - -#: ../src/gtkgui.glade.h:56 -msgid "Ask to see his/her status" -msgstr "Ζήτα να βλέπεις την κατάσταση του/της" - -#: ../src/gtkgui.glade.h:57 -msgid "Ask:" -msgstr "Ζητείται:" - -#: ../src/gtkgui.glade.h:58 -msgid "Assign Open_PGP Key" -msgstr "Ανάθεση Open_PGP κλειδιοÏ" - -#: ../src/gtkgui.glade.h:59 -msgid "Authorize contact so he can know when you're connected" -msgstr "" -"Εξουσιοδοτήστε μια επαφή ώστε να μποÏεί να ξέÏει πότε είστε συνδεδεμένος" - -#: ../src/gtkgui.glade.h:60 -msgid "Auto _away after:" -msgstr "Αυτόματα _απομακÏυσμένος μετά:" - -#: ../src/gtkgui.glade.h:61 -msgid "Auto _not available after:" -msgstr "Αυτόματα _μη διαθέσιμος μετά:" - -#: ../src/gtkgui.glade.h:62 -msgid "Auto join" -msgstr "Αυτόματη είσοδος" - -#: ../src/gtkgui.glade.h:63 -msgid "" -"Autodetect on every Gajim startup\n" -"Always use GNOME default applications\n" -"Always use KDE default applications\n" -"Custom" -msgstr "" -"Αυτόματη ανίχνευση σε κάθε έναÏξη του Gajim\n" -"Πάντα χÏήση των Ï€Ïοεπιλεγμένων εφαÏμογών του GNOME\n" -"Πάντα χÏήση των Ï€Ïοεπιλεγμένων εφαÏμογών του KDE\n" -"ΠÏοσαÏμοσμένες Ïυθμίσεις" - -#: ../src/gtkgui.glade.h:67 -msgid "Automatically authorize contact" -msgstr "Αυτόματη εξουσιοδότηση επαφής" - -#: ../src/gtkgui.glade.h:68 -msgid "Autoreconnect when connection is lost" -msgstr "Αυτόματη επανασÏνδεση κατά την απώλεια της σÏνδεσης" - -#: ../src/gtkgui.glade.h:69 -msgid "B_efore nickname:" -msgstr "Π_Ïιν το ψευδώνυμο:" - -#: ../src/gtkgui.glade.h:70 -msgid "Birthday:" -msgstr "Γενέθλια:" - -#: ../src/gtkgui.glade.h:71 -msgid "Bold" -msgstr "Έντονα" - -#: ../src/gtkgui.glade.h:72 -msgid "Build custom query" -msgstr "Κατασκευή Ï€ÏοσαÏμοσμένου εÏωτήματος" - -#: ../src/gtkgui.glade.h:73 -msgid "C_onnect on Gajim startup" -msgstr "ΣÏνδεση κατά την ε_κκίνηση του Gajim" - -#: ../src/gtkgui.glade.h:74 -msgid "Cancel file transfer" -msgstr "ΑκÏÏωση της μεταφοÏάς αÏχείου" - -#: ../src/gtkgui.glade.h:75 -msgid "Cancels the selected file transfer" -msgstr "ΑκυÏώνει την επιλεγμένη μεταφοÏά αÏχείου" - -#: ../src/gtkgui.glade.h:76 -msgid "Cancels the selected file transfer and removes incomplete file" -msgstr "" -"ΑκυÏώνει την επιλεγμένη μεταφοÏά αÏχείου και διαγÏάφει το ημιτελές αÏχείο" - -#: ../src/gtkgui.glade.h:77 -msgid "Chan_ge Password" -msgstr "Αλλα_γή συνθηματικοÏ" - -#: ../src/gtkgui.glade.h:78 -msgid "Change Password" -msgstr "Αλλαγή κωδικοÏ" - -#: ../src/gtkgui.glade.h:79 -msgid "Change _Nickname" -msgstr "Αλλαγή _ψευδώνυμου" - -#: ../src/gtkgui.glade.h:80 -msgid "Change _Subject" -msgstr "Αλλαγή _θέματος" - -#: ../src/gtkgui.glade.h:82 -msgid "Chat state noti_fications:" -msgstr "Ειδοπ_οιήσεις για κατάσταση κουβέντας:" - -#: ../src/gtkgui.glade.h:83 -msgid "" -"Check this option, only if someone you don't have in the roster spams/annoys " -"you. Use with caution, cause it blocks all messages from any contact that is " -"not in the roster" -msgstr "" -"Επιλέξτε το, μόνο αν κάποιος που δεν έχετε στη λίστα επαφών σας στέλνει spam " -"ή άλλα ενοχλητικά μηνÏματα. ΧÏησιμοποιήστε το με Ï€Ïοσοχή, γιατί μπλοκάÏει " -"όλα τα μηνÏματα από κάθε επαφή που δεν έχετε στη λίστα επαφών σας" - -#: ../src/gtkgui.glade.h:84 -msgid "" -"Check this so Gajim will connect in port 5223 where legacy servers are " -"expected to have SSL capabilities. Note that Gajim uses TLS encryption by " -"default if broadcasted by the server, and with this option enabled TLS will " -"be disabled" -msgstr "" -"Επιλέξτε το ώστε το Gajim να συνδεθεί στην θÏÏα 5223 όπου οι παλαιότεÏοι " -"διακομιστές αναμένουν SSL σÏνδεση. Σημειώστε ότι το Gajim χÏησιμοποιεί " -"κÏυπτογÏάφηση TLS αυτόματα αν αυτή η δυνατότητα του γνωστοποιηθεί από τον " -"διακομιστή, και ότι με αυτή την επιλογή απενεÏγοποιείτε το TLS" - -#: ../src/gtkgui.glade.h:85 -msgid "Choose _Key..." -msgstr "Επιλογή _κλειδιοÏ..." - -#: ../src/gtkgui.glade.h:86 -msgid "City:" -msgstr "Πόλη:" - -#: ../src/gtkgui.glade.h:87 -msgid "Clean _up" -msgstr "Εκκα_θάÏιση" - -#: ../src/gtkgui.glade.h:88 -msgid "Click to change account's password" -msgstr "Πατήστε για να αλλάξετε τον κωδικό του λογαÏιασμοÏ" - -#: ../src/gtkgui.glade.h:89 -msgid "Click to insert an emoticon (Alt+M)" -msgstr "Κάντε κλικ για να εισάγετε φατσοÏλα (Alt+M)" - -#: ../src/gtkgui.glade.h:90 -msgid "Click to see features (like MSN, ICQ transports) of jabber servers" -msgstr "" -"Πατήστε για να δείτε τα χαÏακτηÏιστικά (όπως μεταφοÏές MSN, ICQ) των " -"διακομιστών του jabber" - -#: ../src/gtkgui.glade.h:91 -msgid "Click to see past conversation in this room" -msgstr "Πατήστε για να δείτε παλιότεÏες συζητήσεις σε αυτό το δωμάτιο" - -#: ../src/gtkgui.glade.h:92 -msgid "Click to see past conversations with this contact" -msgstr "Πατήστε για να δείτε παλιότεÏες συζητήσεις με αυτή την επαφή" - -#: ../src/gtkgui.glade.h:93 -msgid "Client:" -msgstr "ΕφαÏμογή:" - -#: ../src/gtkgui.glade.h:94 -msgid "Company:" -msgstr "ΕταιÏία:" - -#: ../src/gtkgui.glade.h:95 -msgid "Composing" -msgstr "ΣÏνθεση" - -#: ../src/gtkgui.glade.h:96 -msgid "Configure _Room" -msgstr "ΤÏοποποίηση _δωματίου" - -#: ../src/gtkgui.glade.h:97 -msgid "Connect when I press Finish" -msgstr "ΣÏνδεση όταν επιλέξω Τέλος" - -#: ../src/gtkgui.glade.h:98 -msgid "Connection" -msgstr "ΣÏνδεση" - -#: ../src/gtkgui.glade.h:99 -msgid "Contact Information" -msgstr "ΠληÏοφοÏίες επαφής" - -#: ../src/gtkgui.glade.h:100 -msgid "Contact _Info" -msgstr "Πλη_ÏοφοÏίες επαφής" - -#: ../src/gtkgui.glade.h:101 -msgid "Conversation History" -msgstr "ΙστοÏικό κουβέντας" - -#: ../src/gtkgui.glade.h:102 -msgid "Country:" -msgstr "ΧώÏα:" - -#: ../src/gtkgui.glade.h:103 -msgid "Default status _iconset:" -msgstr "ΕξοÏÎ¹ÏƒÎ¼Î¿Ï _σετ εικονιδίων κατάστασης:" - -#: ../src/gtkgui.glade.h:104 -msgid "Delete MOTD" -msgstr "ΔιαγÏαφή MOTD" - -#: ../src/gtkgui.glade.h:105 -msgid "Deletes Message of the Day" -msgstr "ΔιαγÏάφει το Μήνυμα της ΗμέÏας (MOTD)" - -#: ../src/gtkgui.glade.h:106 -msgid "Deny" -msgstr "ΆÏνηση" - -#: ../src/gtkgui.glade.h:107 -msgid "Deny authorization from contact so he cannot know when you're connected" -msgstr "" -"ΑÏνηθείτε εξουσιοδότηση σε μια επαφή ώστε να μη μποÏεί να γνωÏίζει πότε " -"είστε συνδεδεμένος" - -#: ../src/gtkgui.glade.h:108 -msgid "Department:" -msgstr "Τμήμα" - -#: ../src/gtkgui.glade.h:109 -msgid "Display a_vatars of contacts in roster" -msgstr "Εμφάνιση των ά_Î²Î±Ï„Î±Ï Ï„Ï‰Î½ επαφών στη λίστα επαφών" - -#: ../src/gtkgui.glade.h:110 -msgid "Display status _messages of contacts in roster" -msgstr "Εμφάνιση των _μηνυμάτων κατάστασης στη λίστα επαφών" - -#: ../src/gtkgui.glade.h:111 -msgid "E-Mail:" -msgstr "Ε-Mail:" - -#: ../src/gtkgui.glade.h:112 -msgid "E_very 5 minutes" -msgstr "Κάθε 5 _λεπτά" - -#: ../src/gtkgui.glade.h:113 -msgid "Edit Groups" -msgstr "ΤÏοποποίηση ομάδων" - -#: ../src/gtkgui.glade.h:114 -msgid "Edit Personal Information..." -msgstr "ΤÏοποποίηση Ï€Ïοσωπικών πληÏοφοÏιών..." - -#: ../src/gtkgui.glade.h:115 -msgid "Edit _Groups" -msgstr "ΕπεξεÏγασία _ομάδων" - -#: ../src/gtkgui.glade.h:116 -msgid "Emoticons:" -msgstr "ΦατσοÏλες:" - -#. XML Console enable checkbutton -#: ../src/gtkgui.glade.h:118 -msgid "Enable" -msgstr "ΕνεÏγοποίηση" - -#: ../src/gtkgui.glade.h:119 -msgid "Enter it again for confirmation:" -msgstr "ΕπαναπληκτÏολογήστε για επιβεβαίωση:" - -#: ../src/gtkgui.glade.h:120 -msgid "Enter new password:" -msgstr "ΠληκτÏολογήστε νέο κωδικό:" - -#: ../src/gtkgui.glade.h:121 -msgid "Events" -msgstr "Γεγονότα" - -#: ../src/gtkgui.glade.h:122 -msgid "Extra Address:" -msgstr "Επιπλέον οδός:" - -#. Family Name -#: ../src/gtkgui.glade.h:124 -msgid "Family:" -msgstr "Οικογένεια:" - -#: ../src/gtkgui.glade.h:125 -msgid "File Transfers" -msgstr "ΜεταφοÏές αÏχείων" - -#: ../src/gtkgui.glade.h:126 -msgid "File _Transfers" -msgstr "_ΜεταφοÏές αÏχείων" - -#: ../src/gtkgui.glade.h:127 -msgid "Filter:" -msgstr "ΦιλτÏάÏισμα:" - -#: ../src/gtkgui.glade.h:128 -msgid "Font style:" -msgstr "ΓÏαμματοσειÏά:" - -#: ../src/gtkgui.glade.h:129 -msgid "Forbid him/her to see my status" -msgstr "ΑπαγόÏευσε τον/την να βλέπει την κατάστασή μου" - -#: ../src/gtkgui.glade.h:130 -msgid "Format: YYYY-MM-DD" -msgstr "ΜοÏφή: ΕΕΕΕ-ΜΜ-ΗΗ" - -#: ../src/gtkgui.glade.h:131 -msgid "Frequently Asked Questions (online)" -msgstr "Συχνές εÏωτήσεις (online)" - -#: ../src/gtkgui.glade.h:132 -msgid "From:" -msgstr "Από:" - -#: ../src/gtkgui.glade.h:133 -msgid "G_o" -msgstr "Πάμ_ε" - -#: ../src/gtkgui.glade.h:134 ../src/notify.py:167 ../src/notify.py:189 -#: ../src/notify.py:201 ../src/tooltips.py:339 -msgid "Gajim" -msgstr "Gajim" - -#: ../src/gtkgui.glade.h:135 -msgid "Gajim Themes Customization" -msgstr "ΠÏοσαÏμογή θεμάτων Gajim" - -#: ../src/gtkgui.glade.h:136 -msgid "" -"Gajim can send and receive meta-information related to a conversation you " -"may have with a contact. Here you can specify which chatstates you want to " -"send to the other party." -msgstr "" -"Το Gajim μποÏεί να να στέλνει και να λαμβάνει μετα-πληÏοφοÏίες σχετικές με " -"μια συζήτηση που έχετε με μια επαφή. Εδώ μποÏείτε να οÏίσετε τι πληÏοφοÏίες " -"θέλετε να στέλνετε στους άλλους." - -#: ../src/gtkgui.glade.h:137 -msgid "" -"Gajim will automatically show new events by poping up the relative window" -msgstr "" -"Το Gajim θα εμφανίσει αυτόματα νέα γεγονότα αναδÏοντας το ανάλογο παÏάθυÏο" - -#: ../src/gtkgui.glade.h:138 -msgid "" -"Gajim will notify you for new events via a popup in the bottom right of the " -"screen" -msgstr "" -"Το Gajim θα σας ειδοποιήσει για το νέο μήνυμα μέσω ενός αναδυόμενου " -"παÏαθÏÏου στο κάτω δεξιά μέÏος της οθόνης" - -#: ../src/gtkgui.glade.h:139 -msgid "" -"Gajim will notify you via a popup window in the bottom right of the screen " -"about contacts that just signed in" -msgstr "" -"Το Gajim θα σας ειδοποιήσει μέσω ενός αναδυόμενου παÏαθÏÏου στο κάτω δεξιά " -"μέÏος της οθόνης για τις επαφές που μόλις συνδέθηκαν στο Jabber" - -#: ../src/gtkgui.glade.h:140 -msgid "" -"Gajim will notify you via a popup window in the bottom right of the screen " -"about contacts that just signed out" -msgstr "" -"Το Gajim θα σας ειδοποιήσει μέσω ενός αναδυόμενου παÏαθÏÏου στο κάτω δεξιά " -"μέÏος της οθόνης για τις επαφές που μόλις αποσυνδέθηκαν στο Jabber" - -#: ../src/gtkgui.glade.h:141 -msgid "" -"Gajim will only change the icon of the contact that triggered the new event" -msgstr "" -"Το Gajim θα αλλάξει μόνο το εικονίδιο της επαφής που Ï€Ïοκάλεσε το νέο γεγονός" - -#: ../src/gtkgui.glade.h:142 -msgid "Gajim: Account Creation Wizard" -msgstr "Gajim: Οδηγός δημιουÏγίας λογαÏιασμοÏ" - -#. user has no group, print him in General -#: ../src/gtkgui.glade.h:143 ../src/roster_window.py:291 -#: ../src/roster_window.py:1183 ../src/roster_window.py:1405 -#: ../src/systray.py:286 -msgid "General" -msgstr "Γενικά" - -#. Given Name -#: ../src/gtkgui.glade.h:145 -msgid "Given:" -msgstr "Δοθέν όνομα" - -#: ../src/gtkgui.glade.h:146 -msgid "Gone" -msgstr "Έξω" - -#: ../src/gtkgui.glade.h:147 -msgid "Group:" -msgstr "Ομάδα:" - -#: ../src/gtkgui.glade.h:148 -msgid "HTTP Connect" -msgstr "ΣÏνδεση HTTP" - -#: ../src/gtkgui.glade.h:149 -msgid "Help online" -msgstr "Online βοήθεια" - -#: ../src/gtkgui.glade.h:150 -msgid "Hides the window" -msgstr "ΑποκÏÏπτει το παÏάθυÏο" - -#: ../src/gtkgui.glade.h:151 -msgid "Homepage:" -msgstr "ΠÏοσωπ. σελίδα:" - -#: ../src/gtkgui.glade.h:152 -msgid "Hostname: " -msgstr "Ξένος υπολογιστής:" - -#: ../src/gtkgui.glade.h:153 -msgid "I already have an account I want to use" -msgstr "Έχω ήδη ένα λογαÏιασμό που θέλω να χÏησιμοποιήσω" - -#: ../src/gtkgui.glade.h:154 -msgid "I want to _register for a new account" -msgstr "_Επιλέξτε εάν επιθυμείτε να καταχωÏήσετε νέο jabber λογαÏιασμό" - -#: ../src/gtkgui.glade.h:155 -msgid "I would like to add you to my contact list." -msgstr "Θα ήθελα να σε Ï€Ïοσθέσω στην λίστα επαφών μου." - -#: ../src/gtkgui.glade.h:156 -msgid "" -"If checked, Gajim will also broadcast some more IPs except from just your " -"IP, so file transfer has higher chances of working right." -msgstr "" -"Αν επιλεγεί, το Gajim θα δημοσιοποιήσει μεÏικές ακόμα IP εκτός από τη δική " -"σας, ώστε να υπάÏχουν πεÏισσότεÏες πιθανότητες να δουλέψει η μεταφοÏά " -"αÏχείων." - -#: ../src/gtkgui.glade.h:157 -msgid "" -"If checked, Gajim will display avatars of contacts in roster window and in " -"group chats" -msgstr "" -"Αν επιλεγεί, το Gajim θα εμφανίζει τα Î¬Î²Î±Ï„Î±Ï Ï„Ï‰Î½ επαφών στην λίστα επαφών " -"και στις ομαδικές κουβέντες" - -#: ../src/gtkgui.glade.h:158 -msgid "" -"If checked, Gajim will display status messages of contacts under the contact " -"name in roster window and in group chats" -msgstr "" -"Αν επιλεγεί, το Gajim θα εμφανίζει τα μηνÏματα κατάστασης των επαφών σας " -"κάτω από τα ονόματα τους στη λίστα επαφών και στις ομαδικές κουβέντες" - -#: ../src/gtkgui.glade.h:159 -msgid "If checked, Gajim will join this group chat on startup" -msgstr "" -"Αν επιλεγεί, το Gajim θα σας συνδέει αυτόματα σε αυτή την ομαδική συζήτηση " -"κατά την εκκίνηση" - -#: ../src/gtkgui.glade.h:160 -msgid "If checked, Gajim will remember the password for this account" -msgstr "Αν επιλεγεί, το Gajim θα θυμάται τον κωδικό για αυτόν το λογαÏιασμό" - -#: ../src/gtkgui.glade.h:161 -msgid "" -"If checked, Gajim will remember the roster and chat window positions in the " -"screen and the sizes of them next time you run it" -msgstr "" -"Αν επιλεγεί, το Gajim θα θυμάται την θέση και το μέγεθος του κÏÏιου " -"παÏαθÏÏου την επόμενη φοÏά που θα εκτελεστεί" - -#: ../src/gtkgui.glade.h:162 -msgid "" -"If checked, Gajim will send keep-alive packets so it prevents connection " -"timeout which results in disconnection" -msgstr "" -"Αν επιλεγεί, το Gajim θα στέλνει πακέτα keep-alive ώστε να αποφÏγει την " -"διακοπή της σÏνδεσης" - -#: ../src/gtkgui.glade.h:163 -msgid "" -"If checked, Gajim will store the password in ~/.gajim/config with 'read' " -"permission only for you" -msgstr "" -"Εάν επιλεγεί, το Gajim θα αποθηκεÏσει το συνθηματικό στο ~/.gajim/config με " -"δικαίωμα ανάγνωσης μόνο για εσάς" - -#: ../src/gtkgui.glade.h:164 -msgid "" -"If checked, Gajim will use protocol-specific status icons. (eg. A contact " -"from MSN will have the equivalent msn icon for status online, away, busy, " -"etc...)" -msgstr "" -"Αν επιλεγεί, το Gajim θα χÏησιμοποιήσει εικονίδια κατάστασης σχετικά με το " -"Ï€Ïωτόκολλο της επαφής. (πχ. Μια επαφή από το MSN θα έχει το αντίστοιχο msn " -"εικονίδιο για τις καταστάσεις διαθέσιμος, απομακÏυσμένος κλπ..)" - -#: ../src/gtkgui.glade.h:165 -msgid "" -"If checked, Gajim, when launched, will automatically connect to jabber using " -"this account" -msgstr "" -"Εάν επιλεγεί, το Gajim, όταν εκτελεστεί, θα συνδεθεί αυτόματα στο jabber " -"χÏησιμοποιώντας αυτόν το λογαÏιασμό" - -#: ../src/gtkgui.glade.h:166 -msgid "" -"If checked, any change to the global status (handled by the combobox at the " -"bottom of the roster window) will change the status of this account " -"accordingly" -msgstr "" -"Εάν επιλεγεί, οι αλλαγές που γίνονται στη γενική κατάσταση (από τον επιλογέα " -"στο κάτω μέÏος της λίστας επαφών) θα αλλάζουν ανάλογα την κατάσταση Î±Ï…Ï„Î¿Ï " -"του λογαÏιασμοÏ" - -#: ../src/gtkgui.glade.h:167 -msgid "" -"If not disabled, Gajim will replace ascii smilies like ':)' with equivalent " -"animated or static graphical emoticons" -msgstr "" -"Αν δεν απενεÏγοποιηθεί, το Gajim θα μετατÏέπει όλα ascii σÏμβολα όπως το " -"':)' με τις αντίστοιχες γÏαφικές φατσοÏλες" - -#: ../src/gtkgui.glade.h:168 -msgid "" -"If you have 2 or more accounts and it is checked, Gajim will list all " -"contacts as if you had one account" -msgstr "" -"Αν έχετε 2 ή πεÏισσότεÏους λογαÏιασμοÏÏ‚ και έχει επιλεγεί, το Gajim θα " -"εμφανίζει τις επαφές σας σαν να είχατε ένα λογαÏιασμό" - -#: ../src/gtkgui.glade.h:169 -msgid "Inactive" -msgstr "ΑνενεÏγό" - -#. Info/Query make the "IQ" initials. So translate like this 'YourLang/YourLang (Info/Query)'. Thanks (it's a tooltip so width is not a problem) -#: ../src/gtkgui.glade.h:171 -msgid "Info/Query" -msgstr "ΠληÏοφοÏία/ΕÏώτηση (Info/Query)" - -#: ../src/gtkgui.glade.h:172 -msgid "Information about you, as stored in the server" -msgstr "Οι πληÏοφοÏίες για εσάς αποθηκεÏονται στο διακομιστή" - -#: ../src/gtkgui.glade.h:173 -msgid "Invitation Received" -msgstr "ΠαÏαλήφθηκε μια Ï€Ïόσκληση" - -#: ../src/gtkgui.glade.h:174 -msgid "Italic" -msgstr "Πλάγια" - -#: ../src/gtkgui.glade.h:175 -msgid "Jabber" -msgstr "Jabber" - -#: ../src/gtkgui.glade.h:176 -msgid "Jabber ID:" -msgstr "Jabber ID:" - -#: ../src/gtkgui.glade.h:178 -msgid "Join _Group Chat" -msgstr "Συμμετοχή σε _Ομαδική συζήτηση" - -#: ../src/gtkgui.glade.h:179 -msgid "Location" -msgstr "ΠεÏιοχή" - -#: ../src/gtkgui.glade.h:180 -msgid "" -"MUC\n" -"Messages" -msgstr "" -"MUC\n" -"ΜηνÏματα" - -#: ../src/gtkgui.glade.h:182 -msgid "" -"MUC Directed\n" -"Messages" -msgstr "" -"ΜηνÏματα Ï€Ïος\n" -"ομαδικές κουβέντες" - -#: ../src/gtkgui.glade.h:184 -msgid "Ma_nage..." -msgstr "Δια_χείÏιση..." - -#: ../src/gtkgui.glade.h:185 -msgid "Manage Accounts" -msgstr "ΔιαχείÏιση λογαÏιασμών" - -#: ../src/gtkgui.glade.h:186 -msgid "Manage Bookmarks" -msgstr "ΔιαχείÏιση σελιδοδεικτών" - -#: ../src/gtkgui.glade.h:187 -msgid "Manage Proxy Profiles" -msgstr "ΔιαχείÏιση Ï€Ïοφίλ μεσολαβητή" - -#: ../src/gtkgui.glade.h:188 -msgid "Manage..." -msgstr "ΔιαχείÏιση..." - -#. Middle Name -#: ../src/gtkgui.glade.h:190 -msgid "Middle:" -msgstr "Μέσο:" - -#: ../src/gtkgui.glade.h:191 -msgid "Mo_derator" -msgstr "_Συντονιστής" - -#: ../src/gtkgui.glade.h:192 -msgid "More" -msgstr "ΠεÏισσότεÏα" - -#: ../src/gtkgui.glade.h:193 -msgid "Name:" -msgstr "Όνομα:" - -#: ../src/gtkgui.glade.h:194 -msgid "" -"Never\n" -"Always\n" -"Per account\n" -"Per type" -msgstr "" -"Ποτέ\n" -"Πάντα\n" -"Ανά λογαÏιασμό\n" -"Ανά Ï„Ïπο" - -#: ../src/gtkgui.glade.h:198 -msgid "Nickname:" -msgstr "Όνομα χÏήστη:" - -#. None means no proxy profile selected -#: ../src/gtkgui.glade.h:201 -msgid "None" -msgstr "Τίποτα" - -#: ../src/gtkgui.glade.h:202 -msgid "Notify me about contacts that: " -msgstr "Ειδοποίηση όταν μια επαφή:" - -#: ../src/gtkgui.glade.h:203 -msgid "Notify on new _Gmail e-mail" -msgstr "Ειδοποίηση σε νέο μήνυμα στο _Gmail" - -#: ../src/gtkgui.glade.h:204 -msgid "OS:" -msgstr "Λειτ. ΣÏστημα:" - -#: ../src/gtkgui.glade.h:205 -msgid "On every _message" -msgstr "Σε κάθε _μήνυμα" - -#: ../src/gtkgui.glade.h:206 -msgid "One message _window:" -msgstr "ΠαÏά_θυÏο ενός μηνÏματος:" - -#: ../src/gtkgui.glade.h:208 -msgid "Pass_word:" -msgstr "_Κωδικός:" - -#: ../src/gtkgui.glade.h:209 -msgid "Passphrase" -msgstr "ΚωδικοφÏάση" - -#: ../src/gtkgui.glade.h:210 -msgid "Password:" -msgstr "Κωδικός:" - -#: ../src/gtkgui.glade.h:211 ../src/tooltips.py:645 -msgid "Paused" -msgstr "ΠαÏση" - -#: ../src/gtkgui.glade.h:212 -msgid "Personal Information" -msgstr "ΠÏοσωπικές πληÏοφοÏίες" - -#: ../src/gtkgui.glade.h:213 -msgid "Phone No.:" -msgstr "Τηλέφωνο:" - -#: ../src/gtkgui.glade.h:214 -msgid "Play _sounds" -msgstr "ΑναπαÏαγωγή _ήχων" - -#: ../src/gtkgui.glade.h:215 -msgid "Port: " -msgstr "ΘÏÏα: " - -#: ../src/gtkgui.glade.h:216 -msgid "Position:" -msgstr "Θέση:" - -#: ../src/gtkgui.glade.h:217 -msgid "Postal Code:" -msgstr "Τ.Κ.:" - -#: ../src/gtkgui.glade.h:218 -msgid "Preferences" -msgstr "ΠÏοτιμήσεις" - -#. Prefix in Name -#: ../src/gtkgui.glade.h:220 -msgid "Prefix:" -msgstr "ΠÏόθεμα:" - -#: ../src/gtkgui.glade.h:221 -msgid "Preset messages:" -msgstr "ΠÏοκαθοÏισμένα μηνÏματα:" - -#: ../src/gtkgui.glade.h:222 -msgid "Print time:" -msgstr "Εμφάνιση χÏόνου:" - -#: ../src/gtkgui.glade.h:223 -msgid "Priori_ty:" -msgstr "Π_ÏοτεÏαιότητα:" - -#: ../src/gtkgui.glade.h:224 -msgid "" -"Priority is used in Jabber to determine who gets the events from the jabber " -"server when two or more clients are connected using the same account; The " -"client with the highest priority gets the events" -msgstr "" -"Η Ï€ÏοτεÏαιότητα χÏησιμοποιείται στο Jabber για να καθοÏίσει ποιος λαμβάνει " -"τα γεγονότα από τον jabber διακομιστή όταν δÏο ή πεÏισσότεÏες εφαÏμογές " -"είναι συνδεδεμένες χÏησιμοποιώντας τον ίδιο λογαÏιασμό· Η εφαÏμογή με την " -"μεγαλÏτεÏη Ï€ÏοτεÏαιότητα λαμβάνει τα γεγονότα" - -#: ../src/gtkgui.glade.h:225 -msgid "Profile, Avatar" -msgstr "ΠÏοφίλ, Avatar" - -#: ../src/gtkgui.glade.h:226 -msgid "Protocol:" -msgstr "ΠÏωτόκολλο:" - -#: ../src/gtkgui.glade.h:227 -msgid "Proxy:" -msgstr "Μεσολαβητής:" - -#: ../src/gtkgui.glade.h:228 -msgid "Query Builder..." -msgstr "Κατασκευή εÏωτήματος..." - -#: ../src/gtkgui.glade.h:229 -msgid "Recently:" -msgstr "ΠÏόσφατα:" - -#: ../src/gtkgui.glade.h:230 -msgid "Register to" -msgstr "ΕγγÏαφή σε" - -#: ../src/gtkgui.glade.h:231 -msgid "Remove account _only from Gajim" -msgstr "ΑφαίÏεση λογαÏÎ¹Î±ÏƒÎ¼Î¿Ï Î¼ÏŒÎ½_ο από το Gajim" - -#: ../src/gtkgui.glade.h:232 -msgid "Remove account from Gajim and from _server" -msgstr "ΑφαίÏεση λογαÏÎ¹Î±ÏƒÎ¼Î¿Ï Î±Ï€ÏŒ το Gajim και από το διακομι_στή" - -#: ../src/gtkgui.glade.h:233 -msgid "Remove file transfer from the list." -msgstr "ΑφαίÏεση της μεταφοÏάς αÏχείου από τη λίστα." - -#: ../src/gtkgui.glade.h:234 -msgid "Removes completed, canceled and failed file transfers from the list" -msgstr "" -"ΑφαιÏεί τις ολοκληÏωμένες, ακυÏωμένες και αποτυχημένες μεταφοÏές από τη λίστα" - -#: ../src/gtkgui.glade.h:235 -msgid "Reply to this message" -msgstr "Απάντηση σε αυτό το μήνυμα" - -#: ../src/gtkgui.glade.h:236 -msgid "Resour_ce: " -msgstr "_ΠόÏος: " - -#: ../src/gtkgui.glade.h:237 -msgid "" -"Resource is sent to the Jabber server in order to separate the same JID in " -"two or more parts depending on the number of the clients connected in the " -"same server with the same account. So you might be connected in the same " -"account with resource 'Home' and 'Work' at the same time. The resource which " -"has the highest priority will get the events. (see below)" -msgstr "" -"Ο πόÏος στέλνεται στον Jabber διακομιστή ώστε να διαχωÏιστεί το ίδιο JID σε " -"δÏο ή πεÏισσότεÏα μέÏη ανάλογα με τον αÏιθμό των εφαÏμογών που είναι " -"συνδεδεμένες στον ίδιο διακομιστή με τον ίδιο λογαÏιασμό. Έτσι μποÏείτε να " -"είστε συνδεδεμένος με τον ίδιο λογαÏιασμό με πόÏο 'Σπίτι' και 'Δουλειά' την " -"ίδια στιγμή. Ο πόÏος με τη μεγαλÏτεÏη Ï€ÏοτεÏαιότητα θα λαμβάνει τα γεγονότα. " -"(βλέπε και πιο κάτω)" - -#: ../src/gtkgui.glade.h:238 -msgid "Resource:" -msgstr "ΠόÏος:" - -#: ../src/gtkgui.glade.h:239 -msgid "Role:" -msgstr "Ρόλος:" - -#: ../src/gtkgui.glade.h:240 -msgid "Room Configuration" -msgstr "Ρυθμίσεις δωματίου" - -#: ../src/gtkgui.glade.h:241 -msgid "Room:" -msgstr "Δωμάτιο:" - -#: ../src/gtkgui.glade.h:242 -msgid "Save _passphrase (insecure)" -msgstr "Αποθήκευση _κωδικοφÏάσης (πεÏιοÏισμένη ασφάλεια)" - -#: ../src/gtkgui.glade.h:243 -msgid "Save _position and size for roster and chat windows" -msgstr "" -"Αποθήκευση _θέσης και μεγέθους για τη λίστα επαφών και για τα παÏάθυÏα " -"κουβέντας" - -#: ../src/gtkgui.glade.h:244 -msgid "Save as Preset..." -msgstr "Αποθήκευση ως Ï€ÏοκαθοÏισμένο..." - -#: ../src/gtkgui.glade.h:245 -msgid "Save conversation _logs for all contacts" -msgstr "Αποθήκευση ιστοÏι_ÎºÎ¿Ï ÏƒÏ…Î½Î¿Î¼Î¹Î»Î¹ÏŽÎ½ για όλες τις επαφές" - -#: ../src/gtkgui.glade.h:246 -msgid "Save pass_word" -msgstr "_Αποθήκευση" - -#: ../src/gtkgui.glade.h:247 -msgid "Search" -msgstr "Αναζήτηση" - -#: ../src/gtkgui.glade.h:248 -msgid "Sen_d" -msgstr "Α_ποστολή" - -#: ../src/gtkgui.glade.h:249 -msgid "Send File" -msgstr "Αποστολή αÏχείου" - -#: ../src/gtkgui.glade.h:250 -msgid "Send Single _Message" -msgstr "Αποστολή ενός _μηνÏματος" - -#: ../src/gtkgui.glade.h:251 -msgid "Send Single _Message..." -msgstr "Αποστολή Î¼Î¿Î½Î¿Ï _μηνÏματος" - -#: ../src/gtkgui.glade.h:252 -msgid "Send _File" -msgstr "Αποστολή _αÏχείου" - -#: ../src/gtkgui.glade.h:253 -msgid "Send keep-alive packets" -msgstr "Αποστολή πακέτων keep-alive" - -#: ../src/gtkgui.glade.h:254 -msgid "Send message" -msgstr "Αποστολή μηνÏματος" - -#: ../src/gtkgui.glade.h:255 -msgid "Send message and close window" -msgstr "Αποστολή μηνÏματος και κλείσιμο παÏαθÏÏου" - -#: ../src/gtkgui.glade.h:256 -msgid "Sends a message to currently connected users to this server" -msgstr "" -"Στέλνει ένα μήνυμα στους χÏήστες που είναι συνδεδεμένοι σε αυτό το διακομιστή" - -#: ../src/gtkgui.glade.h:257 -msgid "Server:" -msgstr "Διακομιστής:" - -#: ../src/gtkgui.glade.h:258 -msgid "Servers Features" -msgstr "ΧαÏακτηÏιστικά διακομιστή" - -#: ../src/gtkgui.glade.h:259 -msgid "Set MOTD" -msgstr "ΟÏισμός MOTD" - -#: ../src/gtkgui.glade.h:260 -msgid "Set _Avatar" -msgstr "Κα_θοÏισμός Avatar" - -#: ../src/gtkgui.glade.h:261 -msgid "Set my profile when I connect" -msgstr "ΚαθοÏισμός του Ï€Ïοφίλ μου κατά τη σÏνδεση" - -#: ../src/gtkgui.glade.h:262 -msgid "Sets Message of the Day" -msgstr "ΟÏίζει το Μήνυμα της ΗμέÏας (MOTD)" - -#: ../src/gtkgui.glade.h:263 -msgid "Show All Pending _Events" -msgstr "Εμφάνιση όλων των γεγονότων που εκÏεμοÏν" - -#: ../src/gtkgui.glade.h:264 -msgid "Show _Offline Contacts" -msgstr "Εμφάνιση _αποσυνδεδεμένων χÏηστών" - -#: ../src/gtkgui.glade.h:265 -msgid "Show _Roster" -msgstr "Εμφάνιση _λίστας επαφών" - -#: ../src/gtkgui.glade.h:266 -msgid "Show _XML Console" -msgstr "Κονσόλα _XML" - -#: ../src/gtkgui.glade.h:267 -msgid "Show only in _roster" -msgstr "Εμφά_νισε το μόνο στο κÏÏιο παÏάθυÏο" - -#: ../src/gtkgui.glade.h:268 -msgid "Shows a list of file transfers between you and other" -msgstr "Δείχνει τη λίστα μεταφοÏών αÏχείων Î¼ÎµÏ„Î±Î¾Ï ÎµÏƒÎ¬Ï‚ και άλλων" - -#: ../src/gtkgui.glade.h:269 -msgid "Sign _in" -msgstr "ΣÏν_δεση" - -#: ../src/gtkgui.glade.h:270 -msgid "Sign _out" -msgstr "Αποσ_Ïνδεση" - -#: ../src/gtkgui.glade.h:271 -msgid "Sta_tus" -msgstr "Κατάσ_ταση" - -#: ../src/gtkgui.glade.h:272 -msgid "Start _Chat" -msgstr "ΈναÏξη _συζήτησης" - -#: ../src/gtkgui.glade.h:273 -msgid "State:" -msgstr "Îομός:" - -#: ../src/gtkgui.glade.h:274 -msgid "Status" -msgstr "Κατάσταση" - -#: ../src/gtkgui.glade.h:275 -msgid "Status:" -msgstr "Κατάσταση:" - -#: ../src/gtkgui.glade.h:276 -msgid "Street:" -msgstr "Οδός:" - -#: ../src/gtkgui.glade.h:277 -msgid "Subject:" -msgstr "Θέμα:" - -#: ../src/gtkgui.glade.h:278 -msgid "Subscription Request" -msgstr "Αίτηση εγγÏαφής" - -#: ../src/gtkgui.glade.h:279 -msgid "Subscription:" -msgstr "ΕγγÏαφή:" - -#. Suffix in Name -#: ../src/gtkgui.glade.h:281 -msgid "Suffix:" -msgstr "Κατάληξη:" - -#: ../src/gtkgui.glade.h:282 -msgid "Synch_ronize account status with global status" -msgstr "ΣυγχÏο_νισμός κατάστασης λογαÏÎ¹Î±ÏƒÎ¼Î¿Ï Î¼Îµ την γενική κατάσταση" - -#: ../src/gtkgui.glade.h:283 -msgid "T_heme:" -msgstr "_Θέμα:" - -#: ../src/gtkgui.glade.h:284 -msgid "Text _color:" -msgstr "ΧÏώμα _κειμένου:" - -#: ../src/gtkgui.glade.h:285 -msgid "Text _font:" -msgstr "ΓÏα_μματοσειÏά κειμένου:" - -#: ../src/gtkgui.glade.h:286 -msgid "The auto away status message" -msgstr "Αυτόματο μήνυμα για κατάσταση απομακÏυσμένος" - -#: ../src/gtkgui.glade.h:287 -msgid "The auto not available status message" -msgstr "Αυτόματο μήνυμα για κατάσταση μη διαθέσιμος" - -#: ../src/gtkgui.glade.h:288 -msgid "" -"This action removes single file transfer from the list. If the transfer is " -"active, it is first stopped and then removed" -msgstr "" -"Αυτή η ενέÏγεια αφαιÏεί μια μεταφοÏά αÏχείου από τη λίστα. Αν η μεταφοÏά " -"είναι ενεÏγή, τότε Ï€Ïώτα διακόπτεται και μετά αφαιÏείται" - -#: ../src/gtkgui.glade.h:289 -msgid "Title:" -msgstr "Τίτλος:" - -#: ../src/gtkgui.glade.h:290 -msgid "To:" -msgstr "ΠÏος:" - -#: ../src/gtkgui.glade.h:291 -msgid "Toggle Open_PGP Encryption" -msgstr "Εν/ΑπενεÏγοποίηση _κÏυπτογÏάφησης OpenPGP" - -#: ../src/gtkgui.glade.h:292 -msgid "Type:" -msgstr "ΤÏπος:" - -#: ../src/gtkgui.glade.h:293 -msgid "Underline" -msgstr "ΥπογÏάμμιση" - -#: ../src/gtkgui.glade.h:294 -msgid "Update MOTD" -msgstr "ΕνημέÏωση MOTD" - -#: ../src/gtkgui.glade.h:295 -msgid "Updates Message of the Day" -msgstr "ΕνημεÏώνει το Μήνυμα της ΗμέÏας (MOTD)" - -#: ../src/gtkgui.glade.h:296 -msgid "Use _SSL (legacy)" -msgstr "ΧÏήση _SSL (για λόγους συμβατότητας)" - -#: ../src/gtkgui.glade.h:297 -msgid "Use _transports iconsets" -msgstr "ΧÏήση σετ _εικονιδίων κατάστασης:" - -#: ../src/gtkgui.glade.h:298 -msgid "Use authentication" -msgstr "ΧÏήση πιστοποίησης" - -#: ../src/gtkgui.glade.h:299 -msgid "Use custom hostname/port" -msgstr "ΧÏήση Ï€ÏοσαÏμοσμένου διακομιστή/θÏÏας" - -#: ../src/gtkgui.glade.h:300 -msgid "Use file transfer proxies" -msgstr "ΧÏήση μεσολαβητών μεταφοÏάς αÏχείων" - -#: ../src/gtkgui.glade.h:301 -msgid "Use t_rayicon (aka. notification area icon)" -msgstr "_Εικονίδιο στην πεÏιοχή γνωστοποίησης" - -#: ../src/gtkgui.glade.h:302 -msgid "User ID:" -msgstr "Ταυτότητα χÏήστη:" - -#: ../src/gtkgui.glade.h:303 -msgid "When a file transfer is complete show a popup notification" -msgstr "Ειδοποίησε με όταν έχει ολοκληÏωθεί μια μεταφοÏά αÏχείου" - -#: ../src/gtkgui.glade.h:304 -msgid "" -"When a new event (message, file transfer request etc..) is received, the " -"following methods may be used to inform you about it. Please note that " -"events about new messages only occur if it is a new message from a contact " -"you are not already chatting with" -msgstr "" -"Όταν ληφθεί ένα νέο συμβάν (μήνυμα, αίτημα για μεταφοÏά αÏχείου κλπ.), " -"μποÏεί να χÏησιμοποιηθοÏν οι παÏακάτω μέθοδοι για να ειδοποιηθείτε. ΣΗΜΕΙΩΣΗ:" -"Συμβάντα για νέα μηνÏματα δημιουÏγοÏνται μόνο όταν λαμβάνονται μηνÏματα από " -"επαφές με τις οποίες δεν κουβεντιάζετε ήδη" - -#: ../src/gtkgui.glade.h:305 -msgid "When new event is received" -msgstr "Όταν λαμβάνεται ένα νέο γεγονός" - -#: ../src/gtkgui.glade.h:306 -msgid "Work" -msgstr "Δουλειά" - -#: ../src/gtkgui.glade.h:307 -msgid "" -"You need to have an account in order to connect\n" -"to the Jabber network." -msgstr "" -"ΠÏέπει να δημιουÏγήσετε ένα λογαÏιασμό Ï€ÏÎ¿Ï„Î¿Ï Î¼Ï€Î¿Ïέσετε\n" -"να συνδεθείτε στο Jabber." - -#: ../src/gtkgui.glade.h:309 -msgid "Your JID:" -msgstr "Το JID σας:" - -#. Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector) -#: ../src/gtkgui.glade.h:311 -msgid "_Actions" -msgstr "_ΕνέÏγειες" - -#: ../src/gtkgui.glade.h:312 -msgid "_Add Contact..." -msgstr "_ΠÏοσθήκη επαφής..." - -#: ../src/gtkgui.glade.h:313 -msgid "_Add to Roster" -msgstr "_ΠÏοσθήκη στη λίστα επαφών" - -#: ../src/gtkgui.glade.h:314 -msgid "_Address:" -msgstr "_ΔιεÏθυνση:" - -#: ../src/gtkgui.glade.h:315 -msgid "_Admin" -msgstr "_ΔιαχειÏιστής" - -#: ../src/gtkgui.glade.h:316 -msgid "_Administrator" -msgstr "_ΔιαχειÏιστής" - -#: ../src/gtkgui.glade.h:317 -msgid "_Advanced" -msgstr "Για Ï€Ïο_χωÏημένους" - -#: ../src/gtkgui.glade.h:318 -msgid "_After time:" -msgstr "Μετά α_πό χÏόνο:" - -#: ../src/gtkgui.glade.h:319 -msgid "_Authorize" -msgstr "_Εξουσιοδότηση" - -#: ../src/gtkgui.glade.h:320 -msgid "_Background:" -msgstr "ΧÏώμα _φόντου:" - -#: ../src/gtkgui.glade.h:321 -msgid "_Ban" -msgstr "_ΑπαγόÏευση Ï€Ïόσβασης" - -#: ../src/gtkgui.glade.h:322 -msgid "_Before time:" -msgstr "_ΠÏιν από χÏόνο:" - -#: ../src/gtkgui.glade.h:323 -msgid "_Bookmark This Room" -msgstr "_Τοποθέτηση σελιδοδείκτη για αυτό το δωμάτιο" - -#: ../src/gtkgui.glade.h:324 -msgid "_Browser:" -msgstr "_ΠεÏιηγητής:" - -#: ../src/gtkgui.glade.h:325 -msgid "_Cancel" -msgstr "_ΑκÏÏωση" - -#: ../src/gtkgui.glade.h:326 -msgid "_Compact View Alt+C" -msgstr "_Συμπαγής όψη Alt+C" - -#: ../src/gtkgui.glade.h:327 -msgid "_Contents" -msgstr "_ΠεÏιεχόμενα" - -#: ../src/gtkgui.glade.h:329 -msgid "_Copy JID/Email Address" -msgstr "Α_ντιγÏαφή JID/Email διεÏθυνσης" - -#: ../src/gtkgui.glade.h:330 -msgid "_Copy Link Location" -msgstr "_ΑντιγÏαφή τοποθεσίας δεσμοÏ" - -#: ../src/gtkgui.glade.h:331 -msgid "_Deny" -msgstr "_ΆÏνηση" - -#: ../src/gtkgui.glade.h:332 -msgid "_Discover Services" -msgstr "ΕÏÏεση _υπηÏεσιών" - -#: ../src/gtkgui.glade.h:333 -msgid "_Discover Services..." -msgstr "ΕÏÏεση _ΥπηÏεσιών..." - -#: ../src/gtkgui.glade.h:335 -msgid "_FAQ" -msgstr "_Συχνές εÏωτήσεις" - -#: ../src/gtkgui.glade.h:336 -msgid "_File manager:" -msgstr "_ΔιαχειÏιστής αÏχείων:" - -#: ../src/gtkgui.glade.h:337 -msgid "_Filter:" -msgstr "_ΦιλτÏάÏισμα:" - -#: ../src/gtkgui.glade.h:338 -msgid "_Finish" -msgstr "_Τέλος" - -#: ../src/gtkgui.glade.h:339 -msgid "_Font:" -msgstr "_ΓÏαμματοσειÏά:" - -#: ../src/gtkgui.glade.h:340 -msgid "_Group Chat" -msgstr "_Ομαδική συζήτηση" - -#: ../src/gtkgui.glade.h:341 -msgid "_Help" -msgstr "_Βοήθεια" - -#: ../src/gtkgui.glade.h:342 -msgid "_Highlight misspelled words" -msgstr "_ΥπογÏάμμιση λέξεων με τυπογÏαφικά λάθη" - -#: ../src/gtkgui.glade.h:343 -msgid "_History" -msgstr "_ΙστοÏικό" - -#: ../src/gtkgui.glade.h:344 -msgid "_Host:" -msgstr "_Ξένος υπολογιστής:" - -#. Info/Query: all(?) jabber xml start with Welcome to Gajim History Logs Manager\n" -"\n" -"You can select logs from the left and/or search database from below.\n" -"\n" -"WARNING:\n" -"If you plan to do massive deletions, please make sure Gajim is not running. " -"Generally avoid deletions with contacts you currently chat with." +#: ../src/gtkgui_helpers.py:717 +msgid "Extension not supported" msgstr "" -"Καλωσήλθατε στον διαχειÏιστή ιστοÏÎ¹ÎºÎ¿Ï Ï„Î¿Ï… Gajim\n" -"\n" -"ΜποÏείτε να επιλέξετε καταγÏαφές από Ï„'αÏιστεÏά ή να εÏευνήσετε τη βάση " -"δεδομένων παÏακάτω.\n" -"\n" -"ΠΡΟΕΙΔΟΠΟΙΗΣΗ:\n" -"Αν σκοπεÏετε να κάνετε μαζικές διαγÏαφές, σιγουÏευτείτε ότι δεν Ï„Ïέχει το " -"Gajim. Γενικά να αποφÏγετε να διαγÏάψετε από επαφές που συζητάτε αυτή τη " -"στιγμή." -#: ../src/history_manager.glade.h:7 -msgid "Delete" -msgstr "ΔιαγÏαφή" +#: ../src/gtkgui_helpers.py:718 +#, python-format +msgid "Image cannot be saved in %(type)s format. Save as %(new_filename)s?" +msgstr "" -#: ../src/history_manager.glade.h:8 -msgid "Export" -msgstr "Εξαγωγή" +#: ../src/gtkgui_helpers.py:727 +#, fuzzy +msgid "Save Image as..." +msgstr "Αποθήκευση αÏχείου ως..." -#: ../src/history_manager.glade.h:9 -msgid "Gajim History Logs Manager" -msgstr "ΔιαχειÏιστής βάσης δεδομένων ιστοÏÎ¹ÎºÎ¿Ï Gajim" - -#: ../src/history_manager.glade.h:10 -msgid "_Search Database" -msgstr "_Αναζήτηση στη βάση δεδομένων" - -#: ../src/history_manager.py:58 +#: ../src/history_manager.py:61 msgid "Cannot find history logs database" msgstr "Δεν ήταν δυνατή η εÏÏεση της βάσης δεδομένων ιστοÏικοÏ" #. holds jid -#: ../src/history_manager.py:102 +#: ../src/history_manager.py:104 msgid "Contacts" msgstr "Επαφές" #. holds time -#: ../src/history_manager.py:115 ../src/history_manager.py:155 -#: ../src/history_window.py:94 +#: ../src/history_manager.py:117 ../src/history_manager.py:157 +#: ../src/history_window.py:85 msgid "Date" msgstr "ΗμεÏομηνία" #. holds nickname -#: ../src/history_manager.py:121 ../src/history_manager.py:173 +#: ../src/history_manager.py:123 ../src/history_manager.py:175 msgid "Nickname" msgstr "Όνομα χÏήστη" #. holds message -#: ../src/history_manager.py:129 ../src/history_manager.py:161 -#: ../src/history_window.py:102 +#: ../src/history_manager.py:131 ../src/history_manager.py:163 +#: ../src/history_window.py:93 msgid "Message" msgstr "Μήνυμα" #. holds subject -#: ../src/history_manager.py:136 ../src/history_manager.py:167 +#: ../src/history_manager.py:138 ../src/history_manager.py:169 msgid "Subject" msgstr "Θέμα" -#: ../src/history_manager.py:181 +#: ../src/history_manager.py:183 msgid "" "Do you want to clean up the database? (STRONGLY NOT RECOMMENDED IF GAJIM IS " "RUNNING)" @@ -3717,7 +4218,7 @@ msgstr "" "Θέλετε να καθαÏίσετε τη βάση δεδομένων; (ΑÎΤΕÎΔΕΙΚÎΥΤΑΙ ΙΣΧΥΡΑ ΕΑΠΤΟ GAJIM " "ΤΡΕΧΕΙ)" -#: ../src/history_manager.py:183 +#: ../src/history_manager.py:185 msgid "" "Normally allocated database size will not be freed, it will just become " "reusable. If you really want to reduce database filesize, click YES, else " @@ -3731,20 +4232,20 @@ msgstr "" "\n" "Σε πεÏίπτωση που επιλέξατε ÎΑΙ, παÏακαλώ πεÏιμένετε..." -#: ../src/history_manager.py:389 +#: ../src/history_manager.py:391 msgid "Exporting History Logs..." msgstr "Εξαγωγή ιστοÏικοÏ..." -#: ../src/history_manager.py:465 +#: ../src/history_manager.py:467 #, python-format msgid "%(who)s on %(time)s said: %(message)s\n" msgstr "Ο %(who)s είπε στις %(time)s: %(message)s\n" -#: ../src/history_manager.py:465 +#: ../src/history_manager.py:467 msgid "who" msgstr "ποιος" -#: ../src/history_manager.py:503 +#: ../src/history_manager.py:505 msgid "Do you really want to delete logs of the selected contact?" msgid_plural "Do you really want to delete logs of the selected contacts?" msgstr[0] "" @@ -3752,119 +4253,154 @@ msgstr[0] "" msgstr[1] "" "Θέλετε σίγουÏα να διαγÏάψετε τα αÏχεία καταγÏαφής των επιλεγμένων επαφών;" -#: ../src/history_manager.py:507 ../src/history_manager.py:543 +#: ../src/history_manager.py:509 ../src/history_manager.py:545 msgid "This is an irreversible operation." msgstr "Αυτή η ενέÏγεια δεν είναι αναστÏέψιμη." -#: ../src/history_manager.py:540 +#: ../src/history_manager.py:542 msgid "Do you really want to delete the selected message?" msgid_plural "Do you really want to delete the selected messages?" msgstr[0] "Θέλετε σίγουÏα να διαγÏάψετε το επιλεγμένο μήνυμα;" msgstr[1] "Θέλετε σίγουÏα να διαγÏάψετε τα επιλεγμένα μηνÏματα;" -#: ../src/history_window.py:111 ../src/history_window.py:113 +#: ../src/history_window.py:102 ../src/history_window.py:104 #, python-format msgid "Conversation History with %s" msgstr "ΙστοÏικό κουβέντας με τον %s" -#: ../src/history_window.py:265 +#: ../src/history_window.py:258 #, python-format msgid "%(nick)s is now %(status)s: %(status_msg)s" msgstr "Ο/Η %(nick)s είναι Ï„ÏŽÏα %(status)s: %(status_msg)s" -#: ../src/history_window.py:269 +#: ../src/history_window.py:262 ../src/notify.py:113 #, python-format msgid "%(nick)s is now %(status)s" msgstr "Ο %(nick)s είναι Ï„ÏŽÏα %(status)s" -#: ../src/history_window.py:275 +#: ../src/history_window.py:268 #, python-format msgid "Status is now: %(status)s: %(status_msg)s" msgstr "Η κατάσταση είναι Ï„ÏŽÏα: %(status)s: %(status_msg)s" -#: ../src/history_window.py:278 +#: ../src/history_window.py:271 #, python-format msgid "Status is now: %(status)s" msgstr "Η κατάσταση είναι Ï„ÏŽÏα: %(status)s" -#: ../src/message_window.py:233 +#: ../src/message_window.py:244 msgid "Messages" msgstr "ΜηνÏματα" -#: ../src/message_window.py:234 +#: ../src/message_window.py:245 #, python-format msgid "%s - Gajim" msgstr "%s - Gajim" -#: ../src/roster_window.py:140 +#: ../src/notify.py:111 +#, fuzzy, python-format +msgid "%(nick)s Changed Status" +msgstr "Ο %(nick)s είναι Ï„ÏŽÏα %(status)s" + +#: ../src/notify.py:121 +#, python-format +msgid "%(nickname)s Signed In" +msgstr "ΣÏνδεση %(nickname)s" + +#: ../src/notify.py:129 +#, python-format +msgid "%(nickname)s Signed Out" +msgstr "ΑποσÏνδεση %(nickname)s" + +#: ../src/notify.py:141 +#, python-format +msgid "New Single Message from %(nickname)s" +msgstr "Îέο μονό μήνυμα από %(nickname)s" + +#: ../src/notify.py:150 +#, python-format +msgid "New Private Message from room %s" +msgstr "Îέο Ï€Ïοσωπικό μήνυμα από το δωμάτιο %s" + +#: ../src/notify.py:151 +#, python-format +msgid "%(nickname)s: %(message)s" +msgstr "%(nickname)s: %(message)s" + +#: ../src/notify.py:157 +#, python-format +msgid "New Message from %(nickname)s" +msgstr "Îέο μήνυμα από %(nickname)s" + +#: ../src/roster_window.py:131 msgid "Merged accounts" msgstr "Συνενωμένοι λογαÏιασμοί" -#: ../src/roster_window.py:289 ../src/common/helpers.py:42 +#: ../src/roster_window.py:288 ../src/common/helpers.py:39 msgid "Observers" msgstr "ΠαÏατηÏητές" -#: ../src/roster_window.py:542 +#: ../src/roster_window.py:544 #, python-format msgid "You are already in room %s" msgstr "Î’Ïίσκεστε ήδη στο δωμάτιο %s" -#: ../src/roster_window.py:546 ../src/roster_window.py:2262 +#: ../src/roster_window.py:548 ../src/roster_window.py:2280 msgid "You cannot join a room while you are invisible" msgstr "Δε μποÏείτε να συμμετάσχετε σε μια ομαδική συζήτηση εάν είστε αόÏατος" #. the 'manage gc bookmarks' item is showed #. below to avoid duplicate code #. add -#: ../src/roster_window.py:735 +#: ../src/roster_window.py:748 #, python-format msgid "to %s account" msgstr "στο λογαÏιασμό %s" #. disco -#: ../src/roster_window.py:742 +#: ../src/roster_window.py:755 #, python-format msgid "using %s account" msgstr "χÏήση του λογαÏÎ¹Î±ÏƒÎ¼Î¿Ï %s" -#. new message +#. new chat #. for chat_with #. for single message -#: ../src/roster_window.py:750 ../src/systray.py:194 ../src/systray.py:201 +#: ../src/roster_window.py:763 ../src/systray.py:193 ../src/systray.py:198 #, python-format msgid "using account %s" msgstr "με χÏήση του λογαÏÎ¹Î±ÏƒÎ¼Î¿Ï %s" #. profile, avatar -#: ../src/roster_window.py:759 +#: ../src/roster_window.py:772 #, python-format msgid "of account %s" msgstr "για το λογαÏιασμό %s" -#: ../src/roster_window.py:818 +#: ../src/roster_window.py:831 msgid "Manage Bookmarks..." msgstr "ΔιαχείÏιση σελιδοδεικτών..." -#: ../src/roster_window.py:842 +#: ../src/roster_window.py:855 #, python-format msgid "for account %s" msgstr "για το λογαÏιασμό %s" #. History manager -#: ../src/roster_window.py:863 +#: ../src/roster_window.py:876 msgid "History Manager" msgstr "ΔιαχειÏιστής ιστοÏικοÏ" -#: ../src/roster_window.py:872 +#: ../src/roster_window.py:885 msgid "_Join New Room" msgstr "_ΣÏνδεση σε νέο δωμάτιο" -#: ../src/roster_window.py:1158 +#: ../src/roster_window.py:1159 #, python-format msgid "Transport \"%s\" will be removed" msgstr "Η μεταφοÏά \"%s\" θα αφαιÏεθεί" -#: ../src/roster_window.py:1158 +#: ../src/roster_window.py:1159 msgid "" "You will no longer be able to send and receive messages to contacts from " "this transport." @@ -3872,11 +4408,11 @@ msgstr "" "Δε θα μποÏείτε να στείλετε και να λάβετε μηνÏματα στις επαφές από αυτή τη " "μεταφοÏά." -#: ../src/roster_window.py:1200 +#: ../src/roster_window.py:1201 msgid "Assign OpenPGP Key" msgstr "Ανάθεση OpenPGP κλειδιοÏ" -#: ../src/roster_window.py:1201 +#: ../src/roster_window.py:1202 msgid "Select a key to apply to the contact" msgstr "Επιλέξτε το κλειδί που θέλετε να εφαÏμόσετε στην επαφή" @@ -3900,40 +4436,40 @@ msgstr "_ΑποσÏνδεση" msgid "_Change Status Message" msgstr "Α_λλαγή μηνÏματος κατάστασης" -#: ../src/roster_window.py:1617 +#: ../src/roster_window.py:1621 msgid "Authorization has been sent" msgstr "Η εξουσιοδότηση έχει σταλεί" -#: ../src/roster_window.py:1618 +#: ../src/roster_window.py:1622 #, python-format msgid "Now \"%s\" will know your status." msgstr "ΤώÏα ο/η \"%s\" θα γνωÏίζει την κατάσταση σας." -#: ../src/roster_window.py:1642 +#: ../src/roster_window.py:1646 msgid "Subscription request has been sent" msgstr "Η αίτηση εγγÏαφής έχει σταλεί" -#: ../src/roster_window.py:1643 +#: ../src/roster_window.py:1647 #, python-format msgid "If \"%s\" accepts this request you will know his or her status." msgstr "" "Εάν ο/η \"%s\" αποδεχθεί αυτή την αίτηση, θα γνωÏίζετε την κατάσταση του/της." -#: ../src/roster_window.py:1654 +#: ../src/roster_window.py:1658 msgid "Authorization has been removed" msgstr "Η εξουσιοδότηση έχει αφαιÏεθεί" -#: ../src/roster_window.py:1655 +#: ../src/roster_window.py:1659 #, python-format msgid "Now \"%s\" will always see you as offline." msgstr "ΤώÏα ο/η \"%s\" θα σας βλέπει πάντα ως αποσυνδεδεμένο/η." -#: ../src/roster_window.py:1824 +#: ../src/roster_window.py:1822 #, python-format msgid "Contact \"%s\" will be removed from your roster" msgstr "Η επαφή \"%s\" θα αφαιÏεθεί από τη λίστα επαφών σας" -#: ../src/roster_window.py:1828 +#: ../src/roster_window.py:1826 msgid "" "By removing this contact you also remove authorization resulting in him or " "her always seeing you as offline." @@ -3941,7 +4477,7 @@ msgstr "" "ΑφαιÏώντας αυτή την επαφή αφαιÏείται επίσης και την εξουσιοδότηση, με " "συνέπεια να σας βλέπει πάντα αποσυνδεδεμένο/η." -#: ../src/roster_window.py:1832 +#: ../src/roster_window.py:1830 msgid "" "By removing this contact you also by default remove authorization resulting " "in him or her always seeing you as offline." @@ -3949,36 +4485,36 @@ msgstr "" "ΑφαιÏώντας αυτή την επαφή αφαιÏείται επίσης και την εξουσιοδότηση, με " "συνέπεια να σας βλέπει πάντα αποσυνδεδεμένο/η." -#: ../src/roster_window.py:1833 +#: ../src/roster_window.py:1831 msgid "I want this contact to know my status after removal" msgstr "Επιθυμώ αυτή η επαφή να γνωÏίζει την κατάστασή μου μετά την αφαίÏεση" -#: ../src/roster_window.py:1901 +#: ../src/roster_window.py:1899 msgid "Passphrase Required" msgstr "Απαιτείται κωδικοφÏάση" -#: ../src/roster_window.py:1902 +#: ../src/roster_window.py:1900 #, python-format msgid "Enter GPG key passphrase for account %s." msgstr "ΠληκτÏολογήστε την κωδικοφÏάση GPG για το λογαÏιασμό %s" -#: ../src/roster_window.py:1907 +#: ../src/roster_window.py:1905 msgid "Save passphrase" msgstr "Αποθήκευση της κωδικοφÏάσης" -#: ../src/roster_window.py:1915 +#: ../src/roster_window.py:1913 msgid "Wrong Passphrase" msgstr "Εσφαλμένη κωδικοφÏάση" -#: ../src/roster_window.py:1916 +#: ../src/roster_window.py:1914 msgid "Please retype your GPG passphrase or press Cancel." msgstr "ΠαÏακαλώ εισάγετε ξανά την κωδική φÏάση GPG σας, ή επιλέξτε ΑκÏÏωση." -#: ../src/roster_window.py:1964 ../src/roster_window.py:2021 +#: ../src/roster_window.py:1963 ../src/roster_window.py:2020 msgid "You are participating in one or more group chats" msgstr "Συμμετέχετε σε μία ή πεÏισσότεÏες ομαδικές κουβέντες" -#: ../src/roster_window.py:1965 ../src/roster_window.py:2022 +#: ../src/roster_window.py:1964 ../src/roster_window.py:2021 msgid "" "Changing your status to invisible will result in disconnection from those " "group chats. Are you sure you want to go invisible?" @@ -3986,21 +4522,21 @@ msgstr "" "Εάν αλλάξετε την κατάστασή σας σε αόÏατη, θα αποσυνδεθείτε από αυτές τις " "ομαδικές συζητήσεις. Είστε σίγουÏος/η ότι θέλετε να γίνεται αόÏατος/η;" -#: ../src/roster_window.py:1981 +#: ../src/roster_window.py:1980 msgid "No account available" msgstr "Κανένας λογαÏιασμός δεν είναι διαθέσιμος" -#: ../src/roster_window.py:1982 +#: ../src/roster_window.py:1981 msgid "You must create an account before you can chat with other contacts." msgstr "" "ΠÏέπει να δημιουÏγήσετε ένα λογαÏιασμό για να μποÏέσετε να συνομιλείτε με " "άλλες επαφές." -#: ../src/roster_window.py:2427 ../src/roster_window.py:2433 +#: ../src/roster_window.py:2452 ../src/roster_window.py:2458 msgid "You have unread messages" msgstr "Έχετε μη-αναγνωσμένα μηνÏματα" -#: ../src/roster_window.py:2428 ../src/roster_window.py:2434 +#: ../src/roster_window.py:2453 ../src/roster_window.py:2459 msgid "" "Messages will only be available for reading them later if you have history " "enabled." @@ -4008,139 +4544,145 @@ msgstr "" "Τα μηνÏματα θα είναι διαθέσιμα για ανάγνωση αÏγότεÏα μόνο αν έχετε " "ενεÏγοποιημένο το ιστοÏικό." -#: ../src/roster_window.py:3184 +#: ../src/roster_window.py:3231 #, python-format msgid "Drop %s in group %s" msgstr "ΑφαίÏεση %s από την ομάδα %s" -#: ../src/roster_window.py:3191 +#: ../src/roster_window.py:3238 #, python-format msgid "Make %s and %s metacontacts" msgstr "ΜετατÏοπή των %s και %s σε μεταεπαφές" -#: ../src/roster_window.py:3358 +#: ../src/roster_window.py:3408 msgid "Change Status Message..." msgstr "Αλλαγή μηνÏματος κατάστασης..." -#: ../src/systray.py:155 +#: ../src/systray.py:154 msgid "_Change Status Message..." msgstr "Αλλαγή μηνÏματος _κατάστασης..." -#: ../src/systray.py:236 +#: ../src/systray.py:231 msgid "Hide this menu" msgstr "ΑπόκÏυψη Î±Ï…Ï„Î¿Ï Ï„Î¿Ï… μενοÏ" -#: ../src/systraywin32.py:266 ../src/systraywin32.py:285 -#: ../src/tooltips.py:315 +#: ../src/systraywin32.py:261 ../src/systraywin32.py:280 #, python-format msgid "Gajim - %d unread message" msgid_plural "Gajim - %d unread messages" msgstr[0] "Gajim - %d μη αναγνωσμένο μήνυμα" msgstr[1] "Gajim - %d μη αναγνωσμένα μηνÏματα" -#: ../src/tooltips.py:321 -#, python-format -msgid "Gajim - %d unread single message" -msgid_plural "Gajim - %d unread single messages" -msgstr[0] "Gajim - %d μη αναγνωσμένο μεμονωμένο μήνυμα" -msgstr[1] "Gajim - %d μη αναγνωσμένα μεμονωμένα μηνÏματα" - -#: ../src/tooltips.py:327 -#, python-format -msgid "Gajim - %d unread group chat message" -msgid_plural "Gajim - %d unread group chat messages" +#: ../src/tooltips.py:326 +#, fuzzy, python-format +msgid " %d unread message" +msgid_plural " %d unread messages" msgstr[0] "Gajim - %d μη αναγνωσμένο μήνυμα" msgstr[1] "Gajim - %d μη αναγνωσμένα μηνÏματα" -#: ../src/tooltips.py:333 -#, python-format -msgid "Gajim - %d unread private message" -msgid_plural "Gajim - %d unread private messages" +#: ../src/tooltips.py:332 +#, fuzzy, python-format +msgid " %d unread single message" +msgid_plural " %d unread single messages" +msgstr[0] "Gajim - %d μη αναγνωσμένο μεμονωμένο μήνυμα" +msgstr[1] "Gajim - %d μη αναγνωσμένα μεμονωμένα μηνÏματα" + +#: ../src/tooltips.py:338 +#, fuzzy, python-format +msgid " %d unread group chat message" +msgid_plural " %d unread group chat messages" +msgstr[0] "Gajim - %d μη αναγνωσμένο μήνυμα" +msgstr[1] "Gajim - %d μη αναγνωσμένα μηνÏματα" + +#: ../src/tooltips.py:344 +#, fuzzy, python-format +msgid " %d unread private message" +msgid_plural " %d unread private messages" msgstr[0] "Gajim - %d μη αναγνωσμένο Ï€Ïοσωπικό μήνυμα" msgstr[1] "Gajim - %d μη αναγνωσμένα Ï€Ïοσωπικά μηνÏματα" -#: ../src/tooltips.py:348 ../src/tooltips.py:350 +#: ../src/tooltips.py:359 ../src/tooltips.py:361 #, python-format msgid "Gajim - %s" msgstr "Gajim - %s" -#: ../src/tooltips.py:383 +#: ../src/tooltips.py:395 msgid "Role: " msgstr "Ρόλος: " -#: ../src/tooltips.py:384 +#: ../src/tooltips.py:396 msgid "Affiliation: " msgstr "Συσχέτιση: " -#: ../src/tooltips.py:386 ../src/tooltips.py:518 +#: ../src/tooltips.py:398 ../src/tooltips.py:537 msgid "Resource: " msgstr "ΠόÏος: " -#: ../src/tooltips.py:394 ../src/tooltips.py:521 ../src/tooltips.py:543 -#: ../src/tooltips.py:654 +#: ../src/tooltips.py:407 ../src/tooltips.py:540 ../src/tooltips.py:565 +#: ../src/tooltips.py:676 msgid "Status: " msgstr "Κατάσταση: " -#: ../src/tooltips.py:501 +#: ../src/tooltips.py:514 msgid "Subscription: " msgstr "ΕγγÏαφή: " -#: ../src/tooltips.py:510 +#: ../src/tooltips.py:523 msgid "OpenPGP: " msgstr "OpenPGP: " -#: ../src/tooltips.py:548 +#: ../src/tooltips.py:570 #, python-format msgid "Last status on %s" msgstr "Τελευταία κατάσταση στο %s" -#: ../src/tooltips.py:550 +#: ../src/tooltips.py:572 #, python-format msgid "Since %s" msgstr "Από τις %s" -#: ../src/tooltips.py:610 +#: ../src/tooltips.py:632 msgid "Download" msgstr "Λήψη" -#: ../src/tooltips.py:616 +#: ../src/tooltips.py:638 msgid "Upload" msgstr "Αποστολή" -#: ../src/tooltips.py:623 +#: ../src/tooltips.py:645 msgid "Type: " msgstr "ΤÏπος: " -#: ../src/tooltips.py:629 +#: ../src/tooltips.py:651 msgid "Transferred: " msgstr "ΜεταφέÏθηκαν: " -#: ../src/tooltips.py:632 ../src/tooltips.py:653 +#: ../src/tooltips.py:654 ../src/tooltips.py:675 msgid "Not started" msgstr "Δεν έχει ξεκινήσει" -#: ../src/tooltips.py:636 +#: ../src/tooltips.py:658 msgid "Stopped" msgstr "Διακόπηκε" -#: ../src/tooltips.py:638 ../src/tooltips.py:641 +#: ../src/tooltips.py:660 ../src/tooltips.py:663 msgid "Completed" msgstr "ΟλοκληÏώθηκε" #. stalled is not paused. it is like 'frozen' it stopped alone -#: ../src/tooltips.py:649 +#: ../src/tooltips.py:671 msgid "Stalled" msgstr "Πάγωσε" -#: ../src/tooltips.py:651 +#: ../src/tooltips.py:673 msgid "Transferring" msgstr "ΜεταφέÏεται" -#: ../src/tooltips.py:683 +#: ../src/tooltips.py:705 msgid "This service has not yet responded with detailed information" msgstr "Αυτή η υπηÏεσία δεν έχει απαντήσει ακόμα με λεπτομεÏείς πληÏοφοÏίες" -#: ../src/tooltips.py:686 +#: ../src/tooltips.py:708 msgid "" "This service could not respond with detailed information.\n" "It is most likely legacy or broken" @@ -4149,24 +4691,24 @@ msgstr "" "Είναι είτε χαλασμένη είτε πεπαλαιωμένη." #. keep identation -#: ../src/vcard.py:186 +#: ../src/vcard.py:188 msgid "Could not load image" msgstr "Δεν ήταν δυνατό το φόÏτωμα της εικόνας" -#: ../src/vcard.py:262 +#: ../src/vcard.py:289 msgid "?Client:Unknown" msgstr "?Πελάτης: Άγνωστος" -#: ../src/vcard.py:264 +#: ../src/vcard.py:291 msgid "?OS:Unknown" msgstr "?Λειτ. ΣÏστημα: Άγνωστο" -#: ../src/vcard.py:281 +#: ../src/vcard.py:308 #, python-format msgid "since %s" msgstr "από τις %s" -#: ../src/vcard.py:305 +#: ../src/vcard.py:332 msgid "" "This contact is interested in your presence information, but you are not " "interested in his/her presence" @@ -4174,7 +4716,7 @@ msgstr "" "Αυτή η επαφή ενδιαφέÏεται για την παÏουσία σας ή μη, αλλά εσείς δεν " "ενδιαφέÏεστε για την παÏουσία του/της" -#: ../src/vcard.py:307 +#: ../src/vcard.py:334 msgid "" "You are interested in the contact's presence information, but he/she is not " "interested in yours" @@ -4182,12 +4724,12 @@ msgstr "" "Εσείς ενδιαφέÏεστε για την παÏουσία αυτής της επαφής, αλλά αυτός/η δεν " "ενδιαφέÏεται για τη δική σας" -#: ../src/vcard.py:309 +#: ../src/vcard.py:336 msgid "You and the contact are interested in each other's presence information" msgstr "Εσείς και η επαφή ενδιαφέÏεστε για την παÏουσία ή μη του άλλου" #. None -#: ../src/vcard.py:311 +#: ../src/vcard.py:338 msgid "" "You are not interested in the contact's presence, and neither he/she is " "interested in yours" @@ -4195,71 +4737,71 @@ msgstr "" "Δεν ενδιαφέÏεστε για την παÏουσία ή μη της επαφής, και οÏτε αυτός/η " "ενδιαφέÏεται για εσάς" -#: ../src/vcard.py:320 +#: ../src/vcard.py:347 msgid "You are waiting contact's answer about your subscription request" msgstr "ΠεÏιμένετε την απάντηση της επαφής για την αίτηση συνδÏομής σας" -#: ../src/vcard.py:332 ../src/vcard.py:355 +#: ../src/vcard.py:359 ../src/vcard.py:382 msgid " resource with priority " msgstr " πόÏος με Ï€ÏοτεÏαιότητα" -#: ../src/vcard.py:434 +#: ../src/vcard.py:458 msgid "Without a connection you can not publish your contact information." msgstr "" "ΠÏέπει να είστε συνδεδεμένος για να δημοσιεÏσετε τις πληÏοφοÏίες της επαφής " "σας" -#: ../src/vcard.py:463 +#: ../src/vcard.py:491 msgid "Without a connection, you can not get your contact information." msgstr "" "ΠÏέπει να είστε συνδεδεμένος για να λάβετε τις πληÏοφοÏίες της επαφής σας" -#: ../src/vcard.py:467 +#: ../src/vcard.py:495 msgid "Personal details" msgstr "ΠÏοσωπικές πληÏοφοÏίες" -#: ../src/common/check_paths.py:39 +#: ../src/common/check_paths.py:35 msgid "creating logs database" msgstr "δημιουÏγία βάσης δεδομένων ιστοÏικοÏ" -#: ../src/common/check_paths.py:84 ../src/common/check_paths.py:95 -#: ../src/common/check_paths.py:102 +#: ../src/common/check_paths.py:82 ../src/common/check_paths.py:93 +#: ../src/common/check_paths.py:100 #, python-format msgid "%s is file but it should be a directory" msgstr "Το %s είναι αÏχείο αλλά Ï€Ïέπει να είναι φάκελος" -#: ../src/common/check_paths.py:85 ../src/common/check_paths.py:96 -#: ../src/common/check_paths.py:103 ../src/common/check_paths.py:110 +#: ../src/common/check_paths.py:83 ../src/common/check_paths.py:94 +#: ../src/common/check_paths.py:101 ../src/common/check_paths.py:109 msgid "Gajim will now exit" msgstr "Το Gajim Ï„ÏŽÏα θα κλείσει" -#: ../src/common/check_paths.py:109 +#: ../src/common/check_paths.py:108 #, python-format msgid "%s is directory but should be file" msgstr "Το %s είναι κατάλογος αλλά θα έπÏεπε να είναι αÏχείο" -#: ../src/common/check_paths.py:125 +#: ../src/common/check_paths.py:124 #, python-format msgid "creating %s directory" msgstr "δημιουÏγία φακέλου %s" -#: ../src/common/exceptions.py:35 +#: ../src/common/exceptions.py:32 msgid "pysqlite2 (aka python-pysqlite2) dependency is missing. Exiting..." msgstr "Δεν βÏέθηκε το pysqlite2 (ή python-pysqlite2). Έξοδος..." -#: ../src/common/exceptions.py:43 +#: ../src/common/exceptions.py:40 msgid "Service not available: Gajim is not running, or remote_control is False" msgstr "" "Μη διαθέσιμη υπηÏεσία: Το Gajim δεν Ï„Ïέχει ή δεν είναι ενεÏγοποιημένο το " "remote_control" -#: ../src/common/exceptions.py:51 +#: ../src/common/exceptions.py:48 msgid "D-Bus is not present on this machine or python module is missing" msgstr "" "Δεν υπάÏχει D-Bus διαθέσιμο σε αυτό το μηχάνημα ή το άÏθÏωμα της python " "λείπει" -#: ../src/common/exceptions.py:59 +#: ../src/common/exceptions.py:56 msgid "" "Session bus is not available.\n" "Try reading http://trac.gajim.org/wiki/GajimDBus" @@ -4267,41 +4809,70 @@ msgstr "" "Ο δίαυλος μηνυμάτων δεν είναι διαθέσιμος.\n" "ΠαÏακαλώ συμβουλευτείτε το http://trac.gajim.org/wiki/GajimDBus" -#: ../src/common/config.py:53 +#: ../src/common/config.py:51 msgid "Use DBus and Notification-Daemon to show notifications" msgstr "ΧÏήση του D-Bus και του δαίμονα ειδοποιήσεων για εμφάνιση ειδοποιήσεων" -#: ../src/common/config.py:57 +#: ../src/common/config.py:55 msgid "Time in minutes, after which your status changes to away." msgstr "" "ΧÏόνος σε λεπτά, μετά από τον οποίο η κατάστασή σας θα αλλάξει σε " "απομακÏυσμένος." -#: ../src/common/config.py:58 +#: ../src/common/config.py:56 msgid "Away as a result of being idle" msgstr "ΑπομακÏυσμένος λόγω αδÏάνειας" -#: ../src/common/config.py:60 +#: ../src/common/config.py:58 msgid "Time in minutes, after which your status changes to not available." msgstr "" "ΧÏόνος σε λεπτά, μετά από τον οποίο η κατάστασή σας θα αλλάξει σε μη " "διαθέσιμος." -#: ../src/common/config.py:61 +#: ../src/common/config.py:59 msgid "Not available as a result of being idle" msgstr "Μη διαθέσιμος λόγω αδÏάνειας" -#: ../src/common/config.py:88 +#: ../src/common/config.py:77 +msgid "List (space separated) of rows (accounts and groups) that are collapsed" +msgstr "" + +#: ../src/common/config.py:83 +msgid "" +"'always' - print time for every message.\n" +"'sometimes' - print time every print_ichat_every_foo_minutes minute.\n" +"'never' - never print time." +msgstr "" + +#: ../src/common/config.py:84 +msgid "" +"Value of fuzziness from 1 to 4 or 0 to disable fuzzyclock. 1 is the most " +"precise clock, 4 the less precise one." +msgstr "" + +#: ../src/common/config.py:87 msgid "Treat * / _ pairs as possible formatting characters." msgstr "Τα ζεÏγη * / _ είναι χαÏακτήÏες μοÏφοποίησης." -#: ../src/common/config.py:89 +#: ../src/common/config.py:88 msgid "" "If True, do not remove */_ . So *abc* will be bold but with * * not removed." msgstr "" "Αν είναι αληθές, μην αφαιÏείς */_. Έτσι το *αβγ* θα είναι μεν έντονο αλλά τα " "* * δεν θα αφαιÏεθοÏν." +#: ../src/common/config.py:98 +msgid "" +"Character to add after nickname when using nick completion (tab) in group " +"chat" +msgstr "" + +#: ../src/common/config.py:99 +msgid "" +"Character to propose to add after desired nickname when desired nickname is " +"used by someone else in group chat" +msgstr "" + #: ../src/common/config.py:131 msgid "Add * and [n] in roster title?" msgstr "Îα Ï€Ïοστεθεί * και [n] στον τίτλο της λίστας επαφών;" @@ -4346,6 +4917,12 @@ msgstr "" "Εαν είναι επιλεγμένο, το Gajim μποÏεί να ελεγχθεί από μακÏιά χÏησιμοποιόντας " "το gajim-remote." +#: ../src/common/config.py:145 +msgid "" +"When not printing time for every message (print_time==sometimes), print it " +"every x minutes" +msgstr "" + #: ../src/common/config.py:146 msgid "Ask before closing a group chat tab/window." msgstr "ΕÏώτηση Ï€Ïιν το κλείσιμο καÏτέλας/παÏαθÏÏου ομαδικής κουβέντας." @@ -4383,7 +4960,8 @@ msgid "Show tab when only one conversation?" msgstr "Îα εμφανίζεται καÏτέλα όταν υπάÏχει μόνο μια κουβέντα;" #: ../src/common/config.py:162 -msgid "Show tab border if one conversation?" +#, fuzzy +msgid "Show tabbed notebook border in chat windows?" msgstr "Îα εμφανίζεται καÏτέλα εάν υπάÏχει μόνο μια κουβέντα;" #: ../src/common/config.py:163 @@ -4435,16 +5013,29 @@ msgstr "" "Αν είναι αληθές, το Gajim θα κοιτάει αν κάθε επαφή που δεν είχε ως Ï„ÏŽÏα " "άβαταÏ, έχει Ï„ÏŽÏα ή έχει αλλά είναι πεπαλαιωμένη." -#. FIXME: remove you and make it Gajim will not; and/or his or *her* status messages -#: ../src/common/config.py:184 +#: ../src/common/config.py:183 +#, fuzzy msgid "" -"If False, you will no longer see status line in chats when a contact changes " -"his or her status and/or his status message." +"If False, Gajim will no longer print status line in chats when a contact " +"changes his or her status and/or his or her status message." msgstr "" "Αν είναι ψευδές, το Gajim δε θα τυπώνει γÏαμμή σχετική με την κατάσταση στα " "παÏάθυÏα συζητήσεων όταν η επαφή αλλάζει την κατάσταση και/ή Ï„o μήνυμα " "κατάστασης." +#: ../src/common/config.py:184 +msgid "" +"can be \"none\", \"all\" or \"in_and_out\". If \"none\", Gajim will no " +"longer print status line in groupchats when a member changes his or her " +"status and/or his or her status message. If \"all\" Gajim will print all " +"status messages. If \"in_and_out\", gajim will only print FOO enters/leaves " +"room" +msgstr "" + +#: ../src/common/config.py:187 +msgid "Don't show avatar for the transport itself." +msgstr "" + #: ../src/common/config.py:189 msgid "" "If True and installed GTK+ and PyGTK versions are at least 2.8, make the " @@ -4462,7 +5053,8 @@ msgstr "" "Το jabberd 1.4 δεν δέχεται πληÏοφοÏίες sha όταν γίνεται σÏνδεση σε ένα " "δωμάτιο Ï€Ïοστατευμένο με συνθηματικό. ΑπενεÏγοποιήστε αυτή την επιλογή" -#: ../src/common/config.py:193 +#. always, never, peracct, pertype should not be translated +#: ../src/common/config.py:194 msgid "" "Controls the window where new messages are placed.\n" "'always' - All messages are sent to a single window.\n" @@ -4479,41 +5071,53 @@ msgstr "" "'κατατÏπο' - Κάθε Ï„Ïπος μηνÏματος έχει το δικό του παÏάθυÏο. Αυτή η επιλογή " "απαιτεί επανεκκίνηση του gajim για να εφαÏμοστεί." -#: ../src/common/config.py:194 +#: ../src/common/config.py:195 msgid "If False, you will no longer see the avatar in the chat window" msgstr "Αν Ψευδέςν, δε θα εμφανίζεται πλέον το Î¬Î²Î±Ï„Î±Ï ÏƒÏ„Î¿ παÏάθυÏο κουβέντας" -#: ../src/common/config.py:195 +#: ../src/common/config.py:196 msgid "If True, pressing the escape key closes a tab/window" msgstr "" "Αν Αληθές, πατώντας το πλήκτÏο διαφυγής, κλείνει η καÏτέλα/το παÏάθυÏο." -#: ../src/common/config.py:196 +#: ../src/common/config.py:197 msgid "Hides the buttons in group chat window" msgstr "ΑποκÏÏπτει τα κουμπιά σε παÏάθυÏο ομαδικής κουβέντας" -#: ../src/common/config.py:197 +#: ../src/common/config.py:198 msgid "Hides the buttons in two persons chat window" msgstr "ΑποκÏÏπτει τα κουμπιά στο παÏάθυÏο Ï€ÏÎ¿ÏƒÏ‰Ï€Î¹ÎºÎ¿Ï Î´Î¹Î±Î»ÏŒÎ³Î¿Ï…" -#: ../src/common/config.py:198 +#: ../src/common/config.py:199 msgid "Hides the banner in a group chat window" msgstr "ΕÏώτηση Ï€Ïιν το κλείσιμο καÏτέλας/ παÏαθÏÏου ομαδικής κουβέντας." -#: ../src/common/config.py:199 +#: ../src/common/config.py:200 msgid "Hides the banner in two persons chat window" msgstr "ΑποκÏÏπτει την κεφαλίδα στο παÏάθυÏο Ï€Ïοσωπικής κουβέντας" -#: ../src/common/config.py:200 +#: ../src/common/config.py:201 msgid "Hides the room occupants list in groupchat window" msgstr "ΑποκÏÏπτει τη λίστα συμμετεχόντων στο παÏάθυÏο ομαδικής κουβέντας" +#: ../src/common/config.py:202 +msgid "Merge consecutive nickname in chat window" +msgstr "" + +#: ../src/common/config.py:203 +msgid "Indentation when using merge consecutive nickame" +msgstr "" + +#: ../src/common/config.py:204 +msgid "List of colors that will be used to color nicknames in groupchats" +msgstr "" + #. yes, no, ask -#: ../src/common/config.py:233 +#: ../src/common/config.py:237 msgid "Jabberd2 workaround" msgstr "Ειδική παÏάκαμψη για το jabberd2" -#: ../src/common/config.py:237 +#: ../src/common/config.py:241 msgid "" "If checked, Gajim will use your IP and proxies defined in " "file_transfer_proxies option for file transfer." @@ -4522,59 +5126,59 @@ msgstr "" "διακομιστές που οÏίστηκαν στην επιλογή file_transfer_proxies για τη μεταφοÏά " "αÏχείων." -#: ../src/common/config.py:290 +#: ../src/common/config.py:297 msgid "Sleeping" msgstr "Κοιμάμαι" -#: ../src/common/config.py:291 +#: ../src/common/config.py:298 msgid "Back soon" msgstr "Πίσω σÏντομα" -#: ../src/common/config.py:291 +#: ../src/common/config.py:298 msgid "Back in some minutes." msgstr "Πίσω σε λίγα λεπτά." -#: ../src/common/config.py:292 +#: ../src/common/config.py:299 msgid "Eating" msgstr "ΤÏώω" -#: ../src/common/config.py:292 +#: ../src/common/config.py:299 msgid "I'm eating, so leave me a message." msgstr "ΤώÏα Ï„Ïώω, οπότε αφήστε μήνυμα." -#: ../src/common/config.py:293 +#: ../src/common/config.py:300 msgid "Movie" msgstr "Ταινία" -#: ../src/common/config.py:293 +#: ../src/common/config.py:300 msgid "I'm watching a movie." msgstr "Βλέπω μια ταινία." -#: ../src/common/config.py:294 +#: ../src/common/config.py:301 msgid "Working" msgstr "Δουλειά" -#: ../src/common/config.py:294 +#: ../src/common/config.py:301 msgid "I'm working." msgstr "ΔουλεÏω." -#: ../src/common/config.py:295 +#: ../src/common/config.py:302 msgid "Phone" msgstr "Τηλέφωνο" -#: ../src/common/config.py:295 +#: ../src/common/config.py:302 msgid "I'm on the phone." msgstr "Είμαι στο τηλέφωνο." -#: ../src/common/config.py:296 +#: ../src/common/config.py:303 msgid "Out" msgstr "Έξω" -#: ../src/common/config.py:296 +#: ../src/common/config.py:303 msgid "I'm out enjoying life" msgstr "Είμαι έξω στη ζωή" -#: ../src/common/config.py:305 +#: ../src/common/config.py:312 msgid "" "Sound to play when a MUC message contains one of the words in " "muc_highlight_words, or when a MUC message contains your nickname." @@ -4582,7 +5186,7 @@ msgstr "" "Ο ήχος που θα παιχθεί όταν ληφθεί ένα μήνυμα MUC που πεÏιέχει κάποια λέξη " "από αυτές που έχουν οÏιστεί στο muc_highlight_words, ή στο ψευδώνυμό σας." -#: ../src/common/config.py:306 +#: ../src/common/config.py:313 msgid "" "Sound to play when any MUC message arrives. (This setting is taken into " "account only if notify_on_all_muc_messages is True)" @@ -4590,98 +5194,98 @@ msgstr "" "Ο ήχος που θα παιχθεί όταν ληφθεί οποιοδήποτε μήνυμα MUC. (Αυτή η ÏÏθμιση " "ισχÏει μόνο εάν είναι οÏισμένη η notify_on_all_muc_messages)" -#: ../src/common/config.py:314 ../src/common/optparser.py:181 +#: ../src/common/config.py:321 ../src/common/optparser.py:185 msgid "green" msgstr "Ï€Ïάσινο" -#: ../src/common/config.py:318 ../src/common/optparser.py:167 +#: ../src/common/config.py:325 ../src/common/optparser.py:171 msgid "grocery" msgstr "μανάβικο" -#: ../src/common/config.py:322 +#: ../src/common/config.py:329 msgid "human" msgstr "ζεστό" -#: ../src/common/config.py:326 +#: ../src/common/config.py:333 msgid "marine" msgstr "θαλασσί" -#: ../src/common/connection.py:152 +#: ../src/common/connection.py:172 #, python-format msgid "Connection with account \"%s\" has been lost" msgstr "Η σÏνδεση με τον λογαÏιασμό \"%s\" χάθηκε" -#: ../src/common/connection.py:153 +#: ../src/common/connection.py:173 msgid "To continue sending and receiving messages, you will need to reconnect." msgstr "" "Για να συνεχίσετε να στέλνετε και να λαμβάνετε μηνÏματα, Ï€Ïέπει να " "επανασυνδεθείτε." -#: ../src/common/connection.py:169 ../src/common/connection.py:195 +#: ../src/common/connection.py:185 ../src/common/connection.py:211 #, python-format msgid "Transport %s answered wrongly to register request." msgstr "Η μεταφοÏά %s αποκÏίθηκε εσφαλμένα στην αίτηση εγγÏαφής." #. wrong answer -#: ../src/common/connection.py:194 +#: ../src/common/connection.py:210 msgid "Invalid answer" msgstr "Μη έγκυÏη απόκÏιση" -#: ../src/common/connection.py:348 ../src/common/connection.py:384 -#: ../src/common/connection.py:754 +#: ../src/common/connection.py:397 ../src/common/connection.py:433 +#: ../src/common/connection.py:857 #, python-format msgid "Could not connect to \"%s\"" msgstr "Η σÏνδεση με \"%s\" στάθηκε αδÏνατη" -#: ../src/common/connection.py:362 +#: ../src/common/connection.py:411 #, python-format msgid "Connected to server %s:%s with %s" msgstr "Έγινε σÏνδεση με το διακομιστή %s:%s με %s" -#: ../src/common/connection.py:385 +#: ../src/common/connection.py:434 msgid "Check your connection or try again later" msgstr "Ελέγξτε τη σÏνδεση σας ή δοκιμάστε αÏγότεÏα" -#: ../src/common/connection.py:410 +#: ../src/common/connection.py:459 #, python-format msgid "Authentication failed with \"%s\"" msgstr "Η πιστοποίηση ταυτότητας με \"%s\" απέτυχε" -#: ../src/common/connection.py:411 +#: ../src/common/connection.py:460 msgid "Please check your login and password for correctness." msgstr "ΠαÏακαλώ ελέγξτε το όνομα χÏήστη και το συνθηματικό σας." #. We didn't set a passphrase -#: ../src/common/connection.py:487 +#: ../src/common/connection.py:573 msgid "OpenPGP passphrase was not given" msgstr "Δε δόθηκε κωδική-φÏάση για το OpenPGP" #. %s is the account name here -#: ../src/common/connection.py:489 +#: ../src/common/connection.py:575 #, python-format msgid "You will be connected to %s without OpenPGP." msgstr "Θα συνδεθείτε με %s χωÏίς OpenPGP." #. do not show I'm invisible! -#: ../src/common/connection.py:526 +#: ../src/common/connection.py:612 msgid "invisible" msgstr "αόÏατος" -#: ../src/common/connection.py:527 +#: ../src/common/connection.py:613 msgid "offline" msgstr "αποσυνδεδεμένος" -#: ../src/common/connection.py:528 +#: ../src/common/connection.py:614 #, python-format msgid "I'm %s" msgstr "Είμαι %s" #. we're not english -#: ../src/common/connection.py:611 +#: ../src/common/connection.py:699 msgid "[This message is encrypted]" msgstr "[AÏ…Ï„ÏŒ το μήνυμα είναι κÏυπτογÏαφημένο]" -#: ../src/common/connection.py:649 +#: ../src/common/connection.py:742 #, python-format msgid "" "Subject: %s\n" @@ -4690,223 +5294,311 @@ msgstr "" "Θέμα: %s\n" "%s" -#: ../src/common/connection.py:699 +#: ../src/common/connection.py:795 ../src/common/connection_handlers.py:1511 msgid "I would like to add you to my roster." msgstr "Επιθυμώ να σε Ï€Ïοσθέσω στη λίστα επαφών μου." -#: ../src/common/helpers.py:103 +#: ../src/common/connection_handlers.py:49 +#, fuzzy +msgid "Unable to load idle module" +msgstr "Αδυναμία συμμετοχής στο δωμάτιο" + +#: ../src/common/connection_handlers.py:581 +#, python-format +msgid "Registration information for transport %s has not arrived in time" +msgstr "" +"ΠληÏοφοÏίες σχετικές με την καταχώÏιση δεν έφτασαν εγκαίÏως για την μεταφοÏά " +"%s" + +#. password required to join +#. we are banned +#. room does not exist +#: ../src/common/connection_handlers.py:1450 +#: ../src/common/connection_handlers.py:1453 +#: ../src/common/connection_handlers.py:1456 +#: ../src/common/connection_handlers.py:1459 +#: ../src/common/connection_handlers.py:1462 +#: ../src/common/connection_handlers.py:1465 +#: ../src/common/connection_handlers.py:1473 +msgid "Unable to join room" +msgstr "Αδυναμία συμμετοχής στο δωμάτιο" + +#: ../src/common/connection_handlers.py:1451 +msgid "A password is required to join this room." +msgstr "Απαιτείται συνθηματικό για τη είσοδο σας σε αυτό το δωμάτιο." + +#: ../src/common/connection_handlers.py:1454 +msgid "You are banned from this room." +msgstr "Σας έχει απαγοÏευτεί η είσοδος σε αυτό το δωμάτιο." + +#: ../src/common/connection_handlers.py:1457 +msgid "Such room does not exist." +msgstr "Δεν υπάÏχει τέτοιο δωμάτιο." + +#: ../src/common/connection_handlers.py:1460 +msgid "Room creation is restricted." +msgstr "Δεν επιτÏέπεται η δημιουÏγία δωματίων." + +#: ../src/common/connection_handlers.py:1463 +msgid "Your registered nickname must be used." +msgstr "ΠÏέπει να χÏησιμοποιηθεί το καταχωÏημένο σας ψευδώνυμο." + +#: ../src/common/connection_handlers.py:1466 +msgid "You are not in the members list." +msgstr "Δεν είστε στη λίστα μελών." + +#: ../src/common/connection_handlers.py:1474 +msgid "" +"Your desired nickname is in use or registered by another occupant.\n" +"Please specify another nickname below:" +msgstr "" +"Το επιθυμητό ψευδώνυμο είναι σε χÏήση ή καταχωÏημένο από κάποιον άλλο.\n" +"ΠαÏακαλώ Ï€ÏοσδιοÏίστε ένα άλλο παÏακάτω:" + +#. BE CAREFUL: no con.updateRosterItem() in a callback +#: ../src/common/connection_handlers.py:1519 +#, python-format +msgid "we are now subscribed to %s" +msgstr "Ο %s μόλις σας εξουσιοδότησε" + +#: ../src/common/connection_handlers.py:1521 +#, python-format +msgid "unsubscribe request from %s" +msgstr "αίτηση αφαίÏεσης εξουσιοδότησης από %s" + +#: ../src/common/connection_handlers.py:1523 +#, python-format +msgid "we are now unsubscribed from %s" +msgstr "Ï€Ïαγματοποιήθηκε αφαίÏεση εξουσιοδότησης από %s" + +#: ../src/common/connection_handlers.py:1680 +#, fuzzy, python-format +msgid "" +"JID %s is not RFC compliant. It will not be added to your roster. Use roster " +"management tools such as http://jru.jabberstudio.org/ to remove it" +msgstr "" +"Το Jid %s δεν είναι σÏμμοÏφο Ï€Ïος το RFC. Δεν θα Ï€Ïοστεθεί στη λίστα επαφών " +"σας. ΧÏησιμοποιήστε κάποιο εÏγαλείο διαχείÏισης όπως το http://jru." +"jabberstudio.org για να το αφαιÏέσετε" + +#: ../src/common/helpers.py:100 msgid "Invalid character in username." msgstr "Μη έγκυÏος χαÏακτήÏας στο όνομα του χÏήστη." -#: ../src/common/helpers.py:108 +#: ../src/common/helpers.py:105 msgid "Server address required." msgstr "Απαιτείται η διεÏθυνση του διακομιστή." -#: ../src/common/helpers.py:113 +#: ../src/common/helpers.py:110 msgid "Invalid character in hostname." msgstr "Μη έγκυÏος χαÏακτήÏας στο όνομα του διακομιστή." -#: ../src/common/helpers.py:119 +#: ../src/common/helpers.py:116 msgid "Invalid character in resource." msgstr "Μη έγκυÏος χαÏακτήÏας στον πόÏο." #. GiB means gibibyte -#: ../src/common/helpers.py:159 +#: ../src/common/helpers.py:156 #, python-format msgid "%s GiB" msgstr "%s GiB" #. GB means gigabyte -#: ../src/common/helpers.py:162 +#: ../src/common/helpers.py:159 #, python-format msgid "%s GB" msgstr "%s GB" #. MiB means mibibyte -#: ../src/common/helpers.py:166 +#: ../src/common/helpers.py:163 #, python-format msgid "%s MiB" msgstr "%s MiB" #. MB means megabyte -#: ../src/common/helpers.py:169 +#: ../src/common/helpers.py:166 #, python-format msgid "%s MB" msgstr "%s MB" #. KiB means kibibyte -#: ../src/common/helpers.py:173 +#: ../src/common/helpers.py:170 #, python-format msgid "%s KiB" msgstr "%s KiB" #. KB means kilo bytes -#: ../src/common/helpers.py:176 +#: ../src/common/helpers.py:173 #, python-format msgid "%s KB" msgstr "%s KB" #. B means bytes -#: ../src/common/helpers.py:179 +#: ../src/common/helpers.py:176 #, python-format msgid "%s B" msgstr "%s B" -#: ../src/common/helpers.py:189 +#: ../src/common/helpers.py:205 msgid "_Busy" msgstr "Απα_σχολημένος" -#: ../src/common/helpers.py:191 +#: ../src/common/helpers.py:207 msgid "Busy" msgstr "Απασχολημένος" -#: ../src/common/helpers.py:194 +#: ../src/common/helpers.py:210 msgid "_Not Available" msgstr "_Μη διαθέσιμος" -#: ../src/common/helpers.py:196 +#: ../src/common/helpers.py:212 msgid "Not Available" msgstr "Μη διαθέσιμος" -#: ../src/common/helpers.py:199 +#: ../src/common/helpers.py:215 msgid "_Free for Chat" msgstr "Διαθέσιμος για _κουβέντα" -#: ../src/common/helpers.py:201 +#: ../src/common/helpers.py:217 msgid "Free for Chat" msgstr "Διαθέσιμος για κουβέντα" -#: ../src/common/helpers.py:204 +#: ../src/common/helpers.py:220 msgid "_Available" msgstr "_Διαθέσιμος" -#: ../src/common/helpers.py:206 +#: ../src/common/helpers.py:222 msgid "Available" msgstr "Διαθέσιμος" -#: ../src/common/helpers.py:208 +#: ../src/common/helpers.py:224 msgid "Connecting" msgstr "Συνδέεται" -#: ../src/common/helpers.py:211 +#: ../src/common/helpers.py:227 msgid "A_way" msgstr "Α_πομακÏυσμένος" -#: ../src/common/helpers.py:213 +#: ../src/common/helpers.py:229 msgid "Away" msgstr "ΑπομακÏυσμένος" -#: ../src/common/helpers.py:216 +#: ../src/common/helpers.py:232 msgid "_Offline" msgstr "Απ_οσυνδεδεμένος" -#: ../src/common/helpers.py:218 +#: ../src/common/helpers.py:234 msgid "Offline" msgstr "Αποσυνδεδεμένος" -#: ../src/common/helpers.py:221 +#: ../src/common/helpers.py:237 msgid "_Invisible" msgstr "ΑόÏατ_ος" -#: ../src/common/helpers.py:223 -msgid "Invisible" -msgstr "Αφανής" - -#: ../src/common/helpers.py:227 +#: ../src/common/helpers.py:243 msgid "?contact has status:Unknown" msgstr "?κατάσταση επαφής: Άγνωστη" -#: ../src/common/helpers.py:229 +#: ../src/common/helpers.py:245 msgid "?contact has status:Has errors" msgstr "?κατάσταση επαφής: ΥπάÏχουν σφάλματα" -#: ../src/common/helpers.py:234 +#: ../src/common/helpers.py:250 msgid "?Subscription we already have:None" msgstr "Καμία" -#: ../src/common/helpers.py:236 +#: ../src/common/helpers.py:252 msgid "To" msgstr "ΠÏος" -#: ../src/common/helpers.py:238 +#: ../src/common/helpers.py:254 msgid "From" msgstr "Από" -#: ../src/common/helpers.py:240 +#: ../src/common/helpers.py:256 msgid "Both" msgstr "Και τα δυο" -#: ../src/common/helpers.py:248 +#: ../src/common/helpers.py:264 msgid "?Ask (for Subscription):None" msgstr "Τίποτα" -#: ../src/common/helpers.py:250 +#: ../src/common/helpers.py:266 msgid "Subscribe" msgstr "ΕγγÏαφή" -#: ../src/common/helpers.py:259 +#: ../src/common/helpers.py:275 msgid "?Group Chat Contact Role:None" msgstr "Κανένας" -#: ../src/common/helpers.py:262 +#: ../src/common/helpers.py:278 msgid "Moderators" msgstr "ΔιαχειÏιστές" -#: ../src/common/helpers.py:264 +#: ../src/common/helpers.py:280 msgid "Moderator" msgstr "ΔιαχειÏιστής" -#: ../src/common/helpers.py:267 +#: ../src/common/helpers.py:283 msgid "Participants" msgstr "Συμμετέχοντες" -#: ../src/common/helpers.py:269 +#: ../src/common/helpers.py:285 msgid "Participant" msgstr "Συμμετέχων" -#: ../src/common/helpers.py:272 +#: ../src/common/helpers.py:288 msgid "Visitors" msgstr "Επισκέπτες" -#: ../src/common/helpers.py:274 +#: ../src/common/helpers.py:290 msgid "Visitor" msgstr "Επισκέπτης" -#: ../src/common/helpers.py:310 +#: ../src/common/helpers.py:326 msgid "is paying attention to the conversation" msgstr "έχει την Ï€Ïοσοχή του στην κουβέντα" -#: ../src/common/helpers.py:312 +#: ../src/common/helpers.py:328 msgid "is doing something else" msgstr "κάνει κάτι άλλο" -#: ../src/common/helpers.py:314 +#: ../src/common/helpers.py:330 msgid "is composing a message..." msgstr "γÏάφει ένα μήνυμα..." #. paused means he or she was compoing but has stopped for a while -#: ../src/common/helpers.py:317 +#: ../src/common/helpers.py:333 msgid "paused composing a message" msgstr "σταμάτησε για λίγο να γÏάφει ένα μήνυμα" -#: ../src/common/helpers.py:319 +#: ../src/common/helpers.py:335 msgid "has closed the chat window or tab" msgstr "έκλεισε το παÏάθυÏο ή την καÏτέλα" #. we talk about a file -#: ../src/common/optparser.py:62 +#: ../src/common/optparser.py:60 #, python-format msgid "error: cannot open %s for reading" msgstr "Το αÏχείο %s δε μποÏεί να ανοιχθεί για ανάγνωση" -#: ../src/common/optparser.py:167 +#: ../src/common/optparser.py:171 msgid "gtk+" msgstr "gtk+" -#: ../src/common/optparser.py:176 ../src/common/optparser.py:177 +#: ../src/common/optparser.py:180 ../src/common/optparser.py:181 msgid "cyan" msgstr "κυανό" +#~ msgid "Automatically authorize contact" +#~ msgstr "Αυτόματη εξουσιοδότηση επαφής" + +#~ msgid "Send File" +#~ msgstr "Αποστολή αÏχείου" + +#~ msgid "Underline" +#~ msgstr "ΥπογÏάμμιση" + #~ msgid "Would you like to overwrite it?" #~ msgstr "Θέλετε να αντικατασταθεί;" @@ -4917,14 +5609,6 @@ msgstr "κυανό" #~ msgstr "" #~ "ΧÏήση: /%s, θέτει το παÏάθυÏο της ομαδικής κουβέντας σε συμπαγή κατάσταση." -#, fuzzy -#~ msgid "About me" -#~ msgstr "ΠÏοσαÏμοσμένες Ρυθμίσεις" - -#, fuzzy -#~ msgid "Email" -#~ msgstr "ΠÏοσαÏμοσμένες Ρυθμίσεις" - #, fuzzy #~ msgid "Home" #~ msgstr "ΙστοÏικό" @@ -4945,9 +5629,6 @@ msgstr "κυανό" #~ msgid "Work" #~ msgstr "ΙστοÏικό" -#~ msgid "Ad_vanced Actions" -#~ msgstr "ΕνέÏγειες για ΠÏο_χωÏημένους" - #~ msgid "Delete Message of the Day" #~ msgstr "ΔιαγÏαφή ΜηνÏματος της ΗμέÏας" @@ -4999,9 +5680,6 @@ msgstr "κυανό" #~ msgid "_Mobile:" #~ msgstr "Μέσο:" -#~ msgid "_Nickname:" -#~ msgstr "_Όνομα χÏήστη:" - #, fuzzy #~ msgid "_Profession:" #~ msgstr "Θέση:" @@ -5077,61 +5755,6 @@ msgstr "κυανό" #~ msgid "Session bus is not available" #~ msgstr "To Session bus δεν είναι διαθέσιμο" -#, fuzzy -#~ msgid "Unable to load idle module" -#~ msgstr "Αδυναμία συμμετοχής στο δωμάτιο" - -#~ msgid "Unable to join room" -#~ msgstr "Αδυναμία συμμετοχής στο δωμάτιο" - -#~ msgid "A password is required to join this room." -#~ msgstr "Απαιτείται συνθηματικό για τη είσοδο σας σε αυτό το δωμάτιο." - -#~ msgid "You are banned from this room." -#~ msgstr "Σας έχει απαγοÏευτεί η είσοδος σε αυτό το δωμάτιο." - -#~ msgid "Such room does not exist." -#~ msgstr "Δεν υπάÏχει τέτοιο δωμάτιο." - -#~ msgid "Room creation is restricted." -#~ msgstr "Δεν επιτÏέπεται η δημιουÏγία δωματίων." - -#~ msgid "Your registered nickname must be used." -#~ msgstr "ΠÏέπει να χÏησιμοποιηθεί το καταχωÏημένο σας ψευδώνυμο." - -#~ msgid "You are not in the members list." -#~ msgstr "Δεν είστε στη λίστα μελών." - -#~ msgid "" -#~ "Your desired nickname is in use or registered by another occupant.\n" -#~ "Please specify another nickname below:" -#~ msgstr "" -#~ "Το επιθυμητό ψευδώνυμο είναι σε χÏήση ή καταχωÏημένο από κάποιον άλλο.\n" -#~ "ΠαÏακαλώ Ï€ÏοσδιοÏίστε ένα άλλο παÏακάτω:" - -#~ msgid "we are now subscribed to %s" -#~ msgstr "Ο %s μόλις σας εξουσιοδότησε" - -#~ msgid "unsubscribe request from %s" -#~ msgstr "αίτηση αφαίÏεσης εξουσιοδότησης από %s" - -#~ msgid "we are now unsubscribed from %s" -#~ msgstr "Ï€Ïαγματοποιήθηκε αφαίÏεση εξουσιοδότησης από %s" - -#, fuzzy -#~ msgid "" -#~ "JID %s is not RFC compliant. It will not be added to your roster. Use " -#~ "roster management tools such as http://jru.jabberstudio.org/ to remove it" -#~ msgstr "" -#~ "Το Jid %s δεν είναι σÏμμοÏφο Ï€Ïος το RFC. Δεν θα Ï€Ïοστεθεί στη λίστα " -#~ "επαφών σας. ΧÏησιμοποιήστε κάποιο εÏγαλείο διαχείÏισης όπως το http://jru." -#~ "jabberstudio.org για να το αφαιÏέσετε" - -#~ msgid "Registration information for transport %s has not arrived in time" -#~ msgstr "" -#~ "ΠληÏοφοÏίες σχετικές με την καταχώÏιση δεν έφτασαν εγκαίÏως για την " -#~ "μεταφοÏά %s" - #~ msgid "Sound" #~ msgstr "Ήχος" @@ -5201,9 +5824,6 @@ msgstr "κυανό" #~ msgid "Stoping selected file transfer" #~ msgstr "Διακόπτεται η επιλεγμένη μεταφοÏά αÏχείου" -#~ msgid "Use a single chat window with _tabs" -#~ msgstr "ΧÏήση ενός παÏαθÏÏου κουβέντας με _καÏτέλες" - #~ msgid "" #~ "If you close this tab and you have history disabled, the message will be " #~ "lost." @@ -5301,9 +5921,6 @@ msgstr "κυανό" #~ msgid "Log presences in an _external file" #~ msgstr "Αποθήκευση παÏουσιών σε _εξωτεÏικό αÏχείο" -#~ msgid "Unable to write file in %s" -#~ msgstr "ΑδÏνατη η εγγÏαφή αÏχείου στο %s" - #, fuzzy #~ msgid "" #~ "You can set advanced account options by pressing Advanced button,or later " @@ -5442,9 +6059,6 @@ msgstr "κυανό" #~ msgid "New _Room" #~ msgstr "Îέο _Δωμάτιο" -#~ msgid "Account:" -#~ msgstr "ΛογαÏιασμός:" - #~ msgid "Always use compact _view" #~ msgstr "Îα χÏησιμοποιείται _πάντα η συμπαγής όψη" diff --git a/po/eo.po b/po/eo.po new file mode 100644 index 000000000..3f8bbaf9c --- /dev/null +++ b/po/eo.po @@ -0,0 +1,5277 @@ +# Esperanto translations for gajim package. +# Copyright (C) 2006 THE gajim'S COPYRIGHT HOLDER +# This file is distributed under the same license as the gajim package. +# Segrio Ĥliutĉin , 2006. +# +# +#: ../src/gajim-remote.py:205 ../src/gajim-remote.py:212 +msgid "" +msgstr "" +"Project-Id-Version: gajim 0.10.1\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2006-06-05 12:01+0300\n" +"PO-Revision-Date: 2006-06-23 17:32+0500\n" +"Last-Translator: Segrio Ĥliutĉin \n" +"Language-Team: Esperanto \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: ../gajim.desktop.in.h:1 +msgid "A GTK+ Jabber client" +msgstr "GTK+bazita jabber-kliento" + +#: ../gajim.desktop.in.h:2 +msgid "Gajim Instant Messenger" +msgstr "Gajim tujmesaÄilo" + +#: ../gajim.desktop.in.h:3 +msgid "Jabber IM Client" +msgstr "Jabber-tujmesaÄilo" + +#: ../data/glade/account_context_menu.glade.h:1 +msgid "Send Single _Message..." +msgstr "Sendi unuopan _mesaÄon..." + +#: ../data/glade/account_context_menu.glade.h:2 +msgid "_Add Contact..." +msgstr "_Aligi kontakton..." + +#: ../data/glade/account_context_menu.glade.h:3 +msgid "_Discover Services..." +msgstr "_Serĉi servojn..." + +#: ../data/glade/account_context_menu.glade.h:4 +#: ../data/glade/roster_window.glade.h:15 +#: ../data/glade/systray_context_menu.glade.h:5 +msgid "_Group Chat" +msgstr "_Babilejo" + +#: ../data/glade/account_context_menu.glade.h:5 +msgid "_Modify Account..." +msgstr "_Korekti konton..." + +#: ../data/glade/account_context_menu.glade.h:6 +msgid "_Status" +msgstr "_Stato" + +#: ../data/glade/account_creation_wizard_window.glade.h:1 +msgid "" +"Account is being created\n" +"\n" +"Please wait..." +msgstr "" +"Konto estas kreata\n" +"\n" +"Bonvolu atendi..." + +#: ../data/glade/account_creation_wizard_window.glade.h:4 +msgid "Please choose one of the options below:" +msgstr "Bonvolu elekti unu el sekvaj opcioj:" + +#: ../data/glade/account_creation_wizard_window.glade.h:5 +msgid "Please fill in the data for your new account" +msgstr "Bonvolu plenigi datumon por via nova konto" + +#: ../data/glade/account_creation_wizard_window.glade.h:6 +msgid "Click to see features (like MSN, ICQ transports) of jabber servers" +msgstr "" +"Klaku por vidi trajtoj (kiel MSN, ICQ transportiloj) de jabber-serviloj" + +#: ../data/glade/account_creation_wizard_window.glade.h:7 +msgid "Connect when I press Finish" +msgstr "Konekti kiam vi premos Finigi" + +#: ../data/glade/account_creation_wizard_window.glade.h:8 +msgid "Gajim: Account Creation Wizard" +msgstr "Gajim: Kontkreilo" + +#: ../data/glade/account_creation_wizard_window.glade.h:9 +msgid "I already have an account I want to use" +msgstr "Mi jam havas konton, mi volas uzi Äin" + +#: ../data/glade/account_creation_wizard_window.glade.h:10 +msgid "I want to _register for a new account" +msgstr "Mi volas registri novan konton" + +#: ../data/glade/account_creation_wizard_window.glade.h:11 +#: ../data/glade/account_modification_window.glade.h:18 +msgid "If checked, Gajim will remember the password for this account" +msgstr "Se markitas, Gajim memoros la pasvorton por tiu ĉi konto" + +#: ../data/glade/account_creation_wizard_window.glade.h:12 +#: ../data/glade/manage_proxies_window.glade.h:6 +msgid "Pass_word:" +msgstr "Pas_vorto:" + +#: ../data/glade/account_creation_wizard_window.glade.h:13 +#: ../data/glade/account_modification_window.glade.h:37 +msgid "Save pass_word" +msgstr "Konservi pasvorton" + +#: ../data/glade/account_creation_wizard_window.glade.h:14 +msgid "Servers Features" +msgstr "Servilaj trajtoj" + +#: ../data/glade/account_creation_wizard_window.glade.h:15 +msgid "Set my profile when I connect" +msgstr "Korekti vian personan informon kiam vi konektitos" + +#: ../data/glade/account_creation_wizard_window.glade.h:16 +msgid "" +"You need to have an account in order to connect\n" +"to the Jabber network." +msgstr "" +"Vi bezonas havi konton por ke konekti\n" +"al la jaber-reto." + +#: ../data/glade/account_creation_wizard_window.glade.h:18 +msgid "Your JID:" +msgstr "Via JID:" + +#: ../data/glade/account_creation_wizard_window.glade.h:19 +#: ../data/glade/roster_window.glade.h:10 +msgid "_Advanced" +msgstr "_Krome" + +#: ../data/glade/account_creation_wizard_window.glade.h:20 +msgid "_Finish" +msgstr "_Finigi" + +#: ../data/glade/account_creation_wizard_window.glade.h:21 +#: ../data/glade/manage_proxies_window.glade.h:9 +msgid "_Host:" +msgstr "_Retnodo:" + +#: ../data/glade/account_creation_wizard_window.glade.h:22 +#: ../data/glade/account_modification_window.glade.h:45 +msgid "_Password:" +msgstr "_Pasvorto:" + +#: ../data/glade/account_creation_wizard_window.glade.h:23 +#: ../data/glade/manage_proxies_window.glade.h:10 +msgid "_Port:" +msgstr "_Pordo:" + +#: ../data/glade/account_creation_wizard_window.glade.h:24 +msgid "_Retype Password:" +msgstr "_Ripetu pasvorton:" + +#: ../data/glade/account_creation_wizard_window.glade.h:25 +msgid "_Server:" +msgstr "_Servilo:" + +#: ../data/glade/account_creation_wizard_window.glade.h:26 +msgid "_Use proxy" +msgstr "_Uzi prokuran servilon" + +#: ../data/glade/account_creation_wizard_window.glade.h:27 +#: ../data/glade/manage_proxies_window.glade.h:11 +msgid "_Username:" +msgstr "_Salutnomo:" + +#: ../data/glade/account_modification_window.glade.h:1 +#: ../data/glade/preferences_window.glade.h:7 +msgid "Miscellaneous" +msgstr "Cetero" + +#: ../data/glade/account_modification_window.glade.h:2 +msgid "OpenPGP" +msgstr "OpenPGP" + +#: ../data/glade/account_modification_window.glade.h:3 +msgid "Personal Information" +msgstr "Persona informo" + +#: ../data/glade/account_modification_window.glade.h:4 +msgid "Account" +msgstr "Konto" + +#: ../data/glade/account_modification_window.glade.h:5 +msgid "Account Modification" +msgstr "Konta korektado" + +#: ../data/glade/account_modification_window.glade.h:6 +msgid "Autoreconnect when connection is lost" +msgstr "AÅ­tomate konekti denove kiam konekto rompiÄas" + +#: ../data/glade/account_modification_window.glade.h:7 +msgid "C_onnect on Gajim startup" +msgstr "K_onekti dum lanĉo de Gajim" + +#: ../data/glade/account_modification_window.glade.h:8 +msgid "Chan_ge Password" +msgstr "ÅœanÄi _pasvorton" + +#: ../data/glade/account_modification_window.glade.h:9 +msgid "" +"Check this so Gajim will connect in port 5223 where legacy servers are " +"expected to have SSL capabilities. Note that Gajim uses TLS encryption by " +"default if broadcasted by the server, and with this option enabled TLS will " +"be disabled" +msgstr "" +"Marku tion por ke Gajim konektos al pordo 5223 kie malnovaj serviloj atendas " +"SSL-kapablajn konektojn. Rimarku ke Gajim defaÅ­te uzas TLS-ĉifradon se la " +"servilo subtenas Äin, kaj tiu opcio malÅaltas TLS" + +#: ../data/glade/account_modification_window.glade.h:10 +msgid "Choose _Key..." +msgstr "Elekti _Ålosilon..." + +#: ../data/glade/account_modification_window.glade.h:11 +msgid "Click to change account's password" +msgstr "Klaku pot ÅanÄi konta pasvorton" + +#: ../data/glade/account_modification_window.glade.h:12 +msgid "Connection" +msgstr "Konekto" + +#: ../data/glade/account_modification_window.glade.h:13 +msgid "Edit Personal Information..." +msgstr "Korekti personan informon..." + +#: ../data/glade/account_modification_window.glade.h:14 +#: ../data/glade/roster_window.glade.h:5 ../src/notify.py:304 +#: ../src/notify.py:326 ../src/notify.py:338 ../src/tooltips.py:353 +msgid "Gajim" +msgstr "Gajim" + +#: ../data/glade/account_modification_window.glade.h:15 +#: ../data/glade/preferences_window.glade.h:42 +#: ../data/glade/vcard_information_window.glade.h:17 +#: ../src/roster_window.py:297 ../src/roster_window.py:1177 +#: ../src/roster_window.py:1398 +msgid "General" +msgstr "Äœenerala" + +#: ../data/glade/account_modification_window.glade.h:16 +msgid "Hostname: " +msgstr "Servilnomo: " + +#: ../data/glade/account_modification_window.glade.h:17 +msgid "" +"If checked, Gajim will also broadcast some more IPs except from just your " +"IP, so file transfer has higher chances of working." +msgstr "" +"Se markitas, Gajim anoncos krom vian IP ankoraÅ­ kelkajn IP, do " +"dosiertranmeto havos pli Åancojn funkcii." + +#: ../data/glade/account_modification_window.glade.h:19 +msgid "" +"If checked, Gajim will send keep-alive packets so it prevents connection " +"timeout which results in disconnection" +msgstr "" +"Se markitas, Gajim sendados vivkontrolajn (keep-alive) pakaĵojn, tio " +"preventas diskonekton pro longa neaktiva tempo." + +#: ../data/glade/account_modification_window.glade.h:20 +msgid "" +"If checked, Gajim will store the password in ~/.gajim/config with 'read' " +"permission only for you" +msgstr "" +"Se markitas, Gajim konservos pasvorto en ~/.gajim/config kun legpermeso nur " +"por vi." + +#: ../data/glade/account_modification_window.glade.h:21 +msgid "" +"If checked, Gajim, when launched, will automatically connect to jabber using " +"this account" +msgstr "Se markitas, Gajim aÅ­tomate konektos per tiu konto dum lanĉo" + +#: ../data/glade/account_modification_window.glade.h:22 +msgid "" +"If checked, any change to the global status (handled by the combobox at the " +"bottom of the roster window) will change the status of this account " +"accordingly" +msgstr "" +"Se markitas, ĉiu ÅanÄo de komuna stato (manipulata per listbutono maldekstre " +"en la kontaktlista fenestro) samtempe ÅanÄos la staton de tiu ĉi konto." + +#: ../data/glade/account_modification_window.glade.h:23 +msgid "Information about you, as stored in the server" +msgstr "Informo pri vi, kiel estas en la servilo" + +#: ../data/glade/account_modification_window.glade.h:24 +msgid "Manage..." +msgstr "Administri..." + +#: ../data/glade/account_modification_window.glade.h:25 ../src/config.py:1452 +msgid "No key selected" +msgstr "Neniu Ålosilo elektita" + +#. None means no proxy profile selected +#: ../data/glade/account_modification_window.glade.h:27 ../src/config.py:1052 +#: ../src/config.py:1057 ../src/config.py:1229 ../src/config.py:1509 +#: ../src/config.py:1582 ../src/config.py:2286 +msgid "None" +msgstr "Neniu" + +#: ../data/glade/account_modification_window.glade.h:28 +msgid "Personal Information" +msgstr "Persona informo" + +#: ../data/glade/account_modification_window.glade.h:29 +msgid "Port: " +msgstr "Pordo: " + +#: ../data/glade/account_modification_window.glade.h:30 +msgid "Priori_ty:" +msgstr "Priori_tato:" + +#: ../data/glade/account_modification_window.glade.h:31 +msgid "" +"Priority is used in Jabber to determine who gets the events from the jabber " +"server when two or more clients are connected using the same account; The " +"client with the highest priority gets the events" +msgstr "" +"Prioritato uzatas en Jabber por determini, kiu ricevos eventojn de jabber-" +"servilo, kiam kelkaj klientoj estas konekta per sama konto. La kliento kun " +"la plej granda prioritato ricevas eventojn" + +#: ../data/glade/account_modification_window.glade.h:32 +msgid "Proxy:" +msgstr "Prokura servilo:" + +#: ../data/glade/account_modification_window.glade.h:33 +msgid "Resour_ce: " +msgstr "Risur_cnomo: " + +#: ../data/glade/account_modification_window.glade.h:34 +msgid "" +"Resource is sent to the Jabber server in order to separate the same JID in " +"two or more parts depending on the number of the clients connected in the " +"same server with the same account. So you might be connected in the same " +"account with resource 'Home' and 'Work' at the same time. The resource which " +"has the highest priority will get the events. (see below)" +msgstr "" +"Risurcnomo estas sendata al jabber-servilo por ke distingi klientojn kun " +"samaj JID. Do vi povas samtempe konekti per la sama konto kun risurcnomoj " +"\"Hejmo\" kaj \"Laborejo\". La kliento, kiu havas la plej altan prioritaton, " +"ricevos la eventojn." + +#: ../data/glade/account_modification_window.glade.h:35 +msgid "Save _passphrase (insecure)" +msgstr "Konservi pas_frazon (malsekure)" + +#: ../data/glade/account_modification_window.glade.h:36 +msgid "Save conversation _logs for all contacts" +msgstr "Konservi komunikadajn _protokolojn por ĉiuj kontaktoj" + +#: ../data/glade/account_modification_window.glade.h:38 +msgid "Send keep-alive packets" +msgstr "Sendi vivkontrolajn pakaÄojn" + +#: ../data/glade/account_modification_window.glade.h:39 +msgid "Synch_ronize account status with global status" +msgstr "Sink_ronigi kontan staton kun komuna stato" + +#: ../data/glade/account_modification_window.glade.h:40 +msgid "Use _SSL (legacy)" +msgstr "Uzi _SSL (malnovan)" + +#: ../data/glade/account_modification_window.glade.h:41 +msgid "Use custom hostname/port" +msgstr "Uzi propran servilnomon/pordon" + +#: ../data/glade/account_modification_window.glade.h:42 +msgid "Use file transfer proxies" +msgstr "Uzi dosiertransmetan prokuran servilon" + +#: ../data/glade/account_modification_window.glade.h:43 +#: ../data/glade/add_new_contact_window.glade.h:6 +msgid "_Jabber ID:" +msgstr "_Jabber-ID:" + +#: ../data/glade/account_modification_window.glade.h:44 +msgid "_Name: " +msgstr "_Nomo: " + +#: ../data/glade/accounts_window.glade.h:1 +msgid "Accounts" +msgstr "Kontoj" + +#: ../data/glade/accounts_window.glade.h:2 +msgid "" +"If you have 2 or more accounts and it is checked, Gajim will list all " +"contacts as if you had one account" +msgstr "" +"Se vi havas 2 aÅ­ plie kontojn kaj tio estas markita, Gajim montras ĉiujn " +"kontaktojn, kvazaÅ­ vi havas unu konton" + +#: ../data/glade/accounts_window.glade.h:3 +msgid "_Merge accounts" +msgstr "_Unuigi kontojn" + +#: ../data/glade/accounts_window.glade.h:4 +msgid "_Modify" +msgstr "_Korekti" + +#: ../data/glade/accounts_window.glade.h:5 +#: ../data/glade/remove_account_window.glade.h:4 +msgid "_Remove" +msgstr "_Forigi" + +#: ../data/glade/add_new_contact_window.glade.h:1 +msgid "A_llow this contact to view my status" +msgstr "_Permesi al tiu kontakto vidi mian staton" + +#: ../data/glade/add_new_contact_window.glade.h:2 +msgid "Add New Contact" +msgstr "Aligi novan kontakton" + +#: ../data/glade/add_new_contact_window.glade.h:3 +msgid "I would like to add you to my contact list." +msgstr "Mi petas vin permesi aligi vin en mian kontaktliston." + +#: ../data/glade/add_new_contact_window.glade.h:4 +msgid "_Account:" +msgstr "_Konto:" + +#: ../data/glade/add_new_contact_window.glade.h:5 +msgid "_Group:" +msgstr "_Grupo:" + +#: ../data/glade/add_new_contact_window.glade.h:7 +msgid "_Nickname:" +msgstr "KaÅ_nomo:" + +#: ../data/glade/add_new_contact_window.glade.h:8 +msgid "_Protocol:" +msgstr "_Protokolo:" + +#: ../data/glade/add_new_contact_window.glade.h:9 +msgid "_Subscribe" +msgstr "_Aboni" + +#: ../data/glade/add_new_contact_window.glade.h:10 +msgid "_User ID:" +msgstr "_Uzula ID:" + +#: ../data/glade/advanced_configuration_window.glade.h:1 +msgid "Description" +msgstr "Priskribo" + +#: ../data/glade/advanced_configuration_window.glade.h:2 +msgid "NOTE: You should restart gajim for some setting to take effect" +msgstr "RIMARKU:Vi devas relanĉi gajim por efektigi kelkajn parametrojn" + +#: ../data/glade/advanced_configuration_window.glade.h:3 +msgid "Advanced Configuration Editor" +msgstr "Detala agorda administrilo" + +#: ../data/glade/advanced_configuration_window.glade.h:4 +msgid "Filter:" +msgstr "Filtrilo:" + +#: ../data/glade/advanced_menuitem_menu.glade.h:1 +msgid "Delete MOTD" +msgstr "Forigi tagmesaÄon" + +#: ../data/glade/advanced_menuitem_menu.glade.h:2 +msgid "Deletes Message of the Day" +msgstr "Forigas mesaÄon de la tago" + +#: ../data/glade/advanced_menuitem_menu.glade.h:3 +msgid "Sends a message to currently connected users to this server" +msgstr "Sendas mesaÄon al nuntempe konektitajn uzuloj de tiu ĉi servilo" + +#: ../data/glade/advanced_menuitem_menu.glade.h:4 +msgid "Set MOTD" +msgstr "Enigi tagmesaÄon" + +#: ../data/glade/advanced_menuitem_menu.glade.h:5 +msgid "Sets Message of the Day" +msgstr "Instalas mesaÄon de la tago" + +#: ../data/glade/advanced_menuitem_menu.glade.h:6 +msgid "Show _XML Console" +msgstr "Montri _XML-konzolon" + +#: ../data/glade/advanced_menuitem_menu.glade.h:7 +msgid "Update MOTD" +msgstr "Renovigi tagmesaÄon" + +#: ../data/glade/advanced_menuitem_menu.glade.h:8 +msgid "Updates Message of the Day" +msgstr "Renovigas mesaÄon de la tago" + +#: ../data/glade/advanced_menuitem_menu.glade.h:9 +msgid "_Administrator" +msgstr "_Administristo" + +#: ../data/glade/advanced_menuitem_menu.glade.h:10 +msgid "_Send Server Message" +msgstr "_Sendi servilon mesaÄon" + +#: ../data/glade/advanced_menuitem_menu.glade.h:11 +msgid "_Send Single Message" +msgstr "_Sendi unuopan mesaÄon" + +#: ../data/glade/advanced_notifications_window.glade.h:1 +msgid " a window/tab opened with that contact " +msgstr " iu fenestro/slipo malfermitas kun tiu kontakto " + +#: ../data/glade/advanced_notifications_window.glade.h:2 +msgid "Actions" +msgstr "Agoj" + +#: ../data/glade/advanced_notifications_window.glade.h:3 +msgid "Conditions" +msgstr "Kondiĉoj" + +#: ../data/glade/advanced_notifications_window.glade.h:4 +#: ../data/glade/preferences_window.glade.h:9 +msgid "Sounds" +msgstr "Sonoj" + +#: ../data/glade/advanced_notifications_window.glade.h:5 +msgid "Add" +msgstr "Aldoni" + +#: ../data/glade/advanced_notifications_window.glade.h:6 +msgid "Advanced Actions" +msgstr "Kromaj agoj" + +#: ../data/glade/advanced_notifications_window.glade.h:7 +msgid "Advanced Notifications Control" +msgstr "Kroma agordo de avizado" + +#: ../data/glade/advanced_notifications_window.glade.h:8 +msgid "All Status " +msgstr "Ĉiustate " + +#: ../data/glade/advanced_notifications_window.glade.h:9 +msgid "And I " +msgstr "Kaj mi " + +#: ../data/glade/advanced_notifications_window.glade.h:10 +msgid "Away " +msgstr "Fora " + +#: ../data/glade/advanced_notifications_window.glade.h:11 +msgid "Busy " +msgstr "Okupata " + +#: ../data/glade/advanced_notifications_window.glade.h:12 +msgid "Don't have " +msgstr "Ne havas " + +#: ../data/glade/advanced_notifications_window.glade.h:13 +msgid "Down" +msgstr "Malsupren" + +#: ../data/glade/advanced_notifications_window.glade.h:14 +msgid "Have " +msgstr "Havas " + +#: ../data/glade/advanced_notifications_window.glade.h:15 +#: ../src/common/helpers.py:241 +msgid "Invisible" +msgstr "Nevidebla" + +#: ../data/glade/advanced_notifications_window.glade.h:16 +msgid "Launch a command" +msgstr "Lanĉi komandon" + +#: ../data/glade/advanced_notifications_window.glade.h:17 +msgid "List of special notifications settings" +msgstr "Agordo de specialaj avizoj" + +#: ../data/glade/advanced_notifications_window.glade.h:18 +msgid "Not Available " +msgstr "Nedisponebla " + +#: ../data/glade/advanced_notifications_window.glade.h:19 +msgid "Online / Free For Chat" +msgstr "Enrete / Babilema" + +#: ../data/glade/advanced_notifications_window.glade.h:20 +msgid "Play a sound" +msgstr "Ludi sonon" + +#: ../data/glade/advanced_notifications_window.glade.h:21 +msgid "" +"Receive a Message\n" +"Contact Connected\n" +"Contact Disconnected\n" +"Contact Change Status\n" +"Group Chat Message Highlight\n" +"Group Chat Message Received\n" +"File Transfert Resquest\n" +"File Transfert Started\n" +"File Transfert Finished" +msgstr "" +"MesaÄo venas\n" +"Kontakto konektas\n" +"Kontakto senkonektas\n" +"Kontakto ÅanÄas staton\n" +"Emfazita babileja mesaÄo\n" +"Babileja mesaÄo venas\n" +"Dosiertransmeta peto\n" +"Dosiertransmeto komencis\n" +"Dosiertransmeto finis" + +#: ../data/glade/advanced_notifications_window.glade.h:30 +msgid "Some special(s) status..." +msgstr "Kelka(j) speciala(j) stato(j)..." + +#: ../data/glade/advanced_notifications_window.glade.h:31 +msgid "Up" +msgstr "Supren" + +#: ../data/glade/advanced_notifications_window.glade.h:32 +msgid "When " +msgstr "Kiam " + +#: ../data/glade/advanced_notifications_window.glade.h:33 +msgid "_Activate Windows manager UrgencyHint to make chat taskbar to flash" +msgstr "" +"_Aktivigi fenestragordilan urgkonsileton \"UrgencyHint\" por briligi " +"taskostrion" + +#: ../data/glade/advanced_notifications_window.glade.h:34 +msgid "_Disable auto opening chat window" +msgstr "_MalÅaltas aÅ­tomatan malfermadon de interparola fenestro" + +#: ../data/glade/advanced_notifications_window.glade.h:35 +msgid "_Disable existing popup window" +msgstr "_MalÅalti ekzistan Åprucfenestron" + +#: ../data/glade/advanced_notifications_window.glade.h:36 +msgid "_Disable existing sound for this event" +msgstr "_MalÅalti ekzistan sonon por tiu ĉi evento" + +#: ../data/glade/advanced_notifications_window.glade.h:37 +msgid "_Disable showing event in roster" +msgstr "_MalÅalti eventmontron en kontaktlisto" + +#: ../data/glade/advanced_notifications_window.glade.h:38 +msgid "_Disable showing event in systray" +msgstr "_MalÅalti montron de evento en taskopleto" + +#: ../data/glade/advanced_notifications_window.glade.h:39 +msgid "_Inform me with a popup window" +msgstr "_Infomi min per Åprucfenestro" + +#: ../data/glade/advanced_notifications_window.glade.h:40 +msgid "_Open chat window with user" +msgstr "_Malfermi interparolan fenestron por uzulo" + +#: ../data/glade/advanced_notifications_window.glade.h:41 +msgid "_Show event in roster" +msgstr "_Montri eventon en kontaktlisto" + +#: ../data/glade/advanced_notifications_window.glade.h:42 +msgid "_Show event in systray" +msgstr "_Montri eventon en taskopleto" + +#: ../data/glade/advanced_notifications_window.glade.h:43 +msgid "" +"contact(s)\n" +"group(s)\n" +"everybody" +msgstr "" +"kontakto(j)\n" +"grupo(j)\n" +"ĉiuj" + +#: ../data/glade/advanced_notifications_window.glade.h:46 +msgid "for " +msgstr "por " + +#: ../data/glade/advanced_notifications_window.glade.h:47 +msgid "when I'm " +msgstr "dum mi estas " + +#: ../data/glade/change_password_dialog.glade.h:1 +msgid "Change Password" +msgstr "ÅœanÄi pasvorton" + +#: ../data/glade/change_password_dialog.glade.h:2 +msgid "Enter it again for confirmation:" +msgstr "Enigi Äin denove por konfirmi:" + +#: ../data/glade/change_password_dialog.glade.h:3 +msgid "Enter new password:" +msgstr "Enigi novan pasvorton:" + +#: ../data/glade/change_status_message_dialog.glade.h:1 +msgid "Type your new status message" +msgstr "Tajpu vian novan statmesaÄon" + +#: ../data/glade/change_status_message_dialog.glade.h:2 +msgid "Preset messages:" +msgstr "AntaÅ­preparitaj mesaÄoj:" + +#: ../data/glade/change_status_message_dialog.glade.h:3 +msgid "Save as Preset..." +msgstr "Konservi kiel antaÅ­preparitaj..." + +#: ../data/glade/chat_context_menu.glade.h:1 +msgid "Join _Group Chat" +msgstr "Eniri en babilejon" + +#: ../data/glade/chat_context_menu.glade.h:2 +#: ../data/glade/chat_control_popup_menu.glade.h:4 +#: ../data/glade/gc_occupants_menu.glade.h:2 +#: ../data/glade/roster_contact_context_menu.glade.h:8 +msgid "_Add to Roster" +msgstr "_Aligi al kontaktlisto" + +#: ../data/glade/chat_context_menu.glade.h:3 +msgid "_Copy JID/Email Address" +msgstr "_Kopii JID/retpoÅtan adreson" + +#: ../data/glade/chat_context_menu.glade.h:4 +msgid "_Copy Link Location" +msgstr "_Kopii ligilan lokon" + +#: ../data/glade/chat_context_menu.glade.h:5 +msgid "_Open Email Composer" +msgstr "_Malfermi repoÅt redaktilo" + +#: ../data/glade/chat_context_menu.glade.h:6 +msgid "_Open Link in Browser" +msgstr "_Malfermi ligilo per retrigardilo" + +#: ../data/glade/chat_context_menu.glade.h:7 +#: ../data/glade/roster_window.glade.h:19 +#: ../data/glade/systray_context_menu.glade.h:6 +msgid "_Start Chat" +msgstr "_Ekparoli" + +#: ../data/glade/chat_control_popup_menu.glade.h:1 +msgid "Click to see past conversations with this contact" +msgstr "Klaku por vidi pasintajn interparolojn kun tiu ĉi kontakto" + +#: ../data/glade/chat_control_popup_menu.glade.h:2 +#: ../data/glade/roster_contact_context_menu.glade.h:6 +msgid "Send _File" +msgstr "Sendi _dosieron" + +#: ../data/glade/chat_control_popup_menu.glade.h:3 +msgid "Toggle Open_PGP Encryption" +msgstr "Baskuli Open_PGP-ĉifradon" + +#: ../data/glade/chat_control_popup_menu.glade.h:5 +#: ../data/glade/gc_control_popup_menu.glade.h:6 +msgid "_Compact View Alt+C" +msgstr "_Kompakta vido Alt+C" + +#: ../data/glade/chat_control_popup_menu.glade.h:6 +#: ../data/glade/gc_control_popup_menu.glade.h:7 +#: ../data/glade/gc_occupants_menu.glade.h:5 +#: ../data/glade/roster_contact_context_menu.glade.h:11 +msgid "_History" +msgstr "_Historio" + +#: ../data/glade/data_form_window.glade.h:1 +msgid "Room Configuration" +msgstr "Agordo de babilejo" + +#: ../data/glade/edit_groups_dialog.glade.h:1 +msgid "Edit Groups" +msgstr "AranÄi grupojn" + +#: ../data/glade/filetransfers.glade.h:1 +msgid "A list of active, completed and stopped file transfers" +msgstr "Listo de aktivaj, plenumitaj kaj haltitaj dosiertransmetoj" + +#: ../data/glade/filetransfers.glade.h:2 +msgid "Cancel file transfer" +msgstr "Nuligi dosiertransmeton" + +#: ../data/glade/filetransfers.glade.h:3 +msgid "Cancels the selected file transfer" +msgstr "Nuligas la indikitan dosiertransmeton" + +#: ../data/glade/filetransfers.glade.h:4 +msgid "Cancels the selected file transfer and removes incomplete file" +msgstr "Nuligas la indikitan dosiertransmeton kaj forigas neplenan dosieron" + +#: ../data/glade/filetransfers.glade.h:5 +msgid "Clean _up" +msgstr "Malplenigi" + +#: ../data/glade/filetransfers.glade.h:6 +msgid "File Transfers" +msgstr "Dosieraj transmetoj" + +#: ../data/glade/filetransfers.glade.h:7 +msgid "Hides the window" +msgstr "KaÅas la fenestron" + +#: ../data/glade/filetransfers.glade.h:8 +msgid "Remove file transfer from the list." +msgstr "Forigi dosiertransmeto el la listo." + +#: ../data/glade/filetransfers.glade.h:9 +msgid "Removes completed, canceled and failed file transfers from the list" +msgstr "" +"Forigas plenumitajn, nuligitajn kaj malsukcesajn dosiertransmetojn el la " +"listo" + +#: ../data/glade/filetransfers.glade.h:10 +msgid "Shows a list of file transfers between you and other" +msgstr "Montras liston de dosiertransmetojn inter vi kaj alia" + +#: ../data/glade/filetransfers.glade.h:11 +msgid "" +"This action removes single file transfer from the list. If the transfer is " +"active, it is first stopped and then removed" +msgstr "" +"Tiu ĉi ago forigas unu dosiertransmeton de la listo. Se la transmeto estas " +"aktiva, Äin unue haltitas kaj poste forigitos." + +#: ../data/glade/filetransfers.glade.h:12 +msgid "When a file transfer is complete show a popup notification" +msgstr "Kiam dosiertransmeto estos plemumita montri Åprucfenestron kun avizo" + +#: ../data/glade/filetransfers.glade.h:13 ../src/filetransfers_window.py:761 +msgid "_Continue" +msgstr "_DaÅ­rigi" + +#: ../data/glade/filetransfers.glade.h:14 +msgid "_Notify me when a file transfer is complete" +msgstr "_Avizi min kiam dosiero estas transdonita" + +#: ../data/glade/filetransfers.glade.h:15 ../src/filetransfers_window.py:198 +msgid "_Open Containing Folder" +msgstr "_Malfermi enhavantan dosierujon" + +#: ../data/glade/filetransfers.glade.h:16 +msgid "_Pause" +msgstr "_PaÅ­zi" + +#: ../data/glade/filetransfers.glade.h:17 +msgid "file transfers list" +msgstr "dosiertransdonada listo" + +#: ../data/glade/gajim_themes_window.glade.h:1 +msgid "Chatstate Tab Colors" +msgstr "Babilstata langeta koloroj" + +#: ../data/glade/gajim_themes_window.glade.h:2 +msgid "" +"Account\n" +"Group\n" +"Contact\n" +"Banner" +msgstr "" +"Konto\n" +"Grupo\n" +"Kontakto\n" +"Rubando" + +#: ../data/glade/gajim_themes_window.glade.h:6 ../src/config.py:337 +msgid "Active" +msgstr "Aktiva" + +#: ../data/glade/gajim_themes_window.glade.h:7 +msgid "Bold" +msgstr "Dika" + +#: ../data/glade/gajim_themes_window.glade.h:8 +msgid "Composing" +msgstr "Tajpas mesaÄon" + +#: ../data/glade/gajim_themes_window.glade.h:9 +msgid "Font style:" +msgstr "Tipara fasono:" + +#: ../data/glade/gajim_themes_window.glade.h:10 +msgid "Gajim Themes Customization" +msgstr "Etosa administrado de Gajim" + +#: ../data/glade/gajim_themes_window.glade.h:11 +msgid "Gone" +msgstr "Foriris" + +#: ../data/glade/gajim_themes_window.glade.h:12 +msgid "Inactive" +msgstr "Neaktiva" + +#: ../data/glade/gajim_themes_window.glade.h:13 +msgid "Italic" +msgstr "Kursiva" + +#: ../data/glade/gajim_themes_window.glade.h:14 +msgid "" +"MUC\n" +"Messages" +msgstr "" +"Babilejaj\n" +"MesaÄoj" + +#: ../data/glade/gajim_themes_window.glade.h:16 +msgid "" +"MUC Directed\n" +"Messages" +msgstr "" +"Babilejaj\n" +"mesaÄoj al vi" + +#: ../data/glade/gajim_themes_window.glade.h:18 ../src/tooltips.py:669 +msgid "Paused" +msgstr "PaÅ­zas" + +#: ../data/glade/gajim_themes_window.glade.h:19 +msgid "Text _color:" +msgstr "Teksta _koloro:" + +#: ../data/glade/gajim_themes_window.glade.h:20 +msgid "Text _font:" +msgstr "Teksta _tiparo:" + +#: ../data/glade/gajim_themes_window.glade.h:21 +msgid "_Background:" +msgstr "_Fono:" + +#: ../data/glade/gc_control_popup_menu.glade.h:1 +msgid "Change _Nickname" +msgstr "ÅœanÄi kaÅ_nomon" + +#: ../data/glade/gc_control_popup_menu.glade.h:2 +msgid "Change _Subject" +msgstr "ÅœanÄi _temon" + +#: ../data/glade/gc_control_popup_menu.glade.h:3 +msgid "Click to see past conversation in this room" +msgstr "Klaku por vidi pasintan interparolon en tiu ĉi babilejo" + +#: ../data/glade/gc_control_popup_menu.glade.h:4 +msgid "Configure _Room" +msgstr "Administri _babilejon" + +#: ../data/glade/gc_control_popup_menu.glade.h:5 +msgid "_Bookmark This Room" +msgstr "Aligi legosignon por tiu babilejo" + +#: ../data/glade/gc_occupants_menu.glade.h:1 +msgid "Mo_derator" +msgstr "Mo_derigisto" + +#: ../data/glade/gc_occupants_menu.glade.h:3 +msgid "_Admin" +msgstr "_Estro" + +#: ../data/glade/gc_occupants_menu.glade.h:4 +msgid "_Ban" +msgstr "_Malpermesi" + +#: ../data/glade/gc_occupants_menu.glade.h:6 +msgid "_Kick" +msgstr "_Elpeli" + +#: ../data/glade/gc_occupants_menu.glade.h:7 +msgid "_Member" +msgstr "_Membro" + +#: ../data/glade/gc_occupants_menu.glade.h:8 +msgid "_Occupant Actions" +msgstr "_Agoj por babilanto" + +#: ../data/glade/gc_occupants_menu.glade.h:9 +msgid "_Owner" +msgstr "_Mastro" + +#: ../data/glade/gc_occupants_menu.glade.h:10 +msgid "_Send Private Message" +msgstr "_Sendi privatan mesaÄon" + +#: ../data/glade/gc_occupants_menu.glade.h:11 +msgid "_Voice" +msgstr "_Voĉo" + +#: ../data/glade/history_manager.glade.h:1 +msgid "" +"Welcome to Gajim History Logs Manager\n" +"\n" +"You can select logs from the left and/or search database from below.\n" +"\n" +"WARNING:\n" +"If you plan to do massive deletions, please make sure Gajim is not running. " +"Generally avoid deletions with contacts you currently chat with." +msgstr "" +"Bonvenon al protokoladministrilo de Gajim \n" +"\n" +"Vi povas elekti protokoloj maldekstre kaj/aÅ­ serĉi datumbaze malsupre.\n" +"\n" +"AVERTO:\n" +"Se vi planas fari multajn forigojn, bonvolu certiÄi ke Gajim ne aktivas. " +"Äœenerale evitu forigojn rilatajn al kontaktoj kun kiu vi interparolas " +"nuntempe." + +#: ../data/glade/history_manager.glade.h:7 +msgid "Delete" +msgstr "Forigi" + +#: ../data/glade/history_manager.glade.h:8 +msgid "Export" +msgstr "Eksportado" + +#: ../data/glade/history_manager.glade.h:9 +msgid "Gajim History Logs Manager" +msgstr "Gajim administrilo de protokoloj" + +#: ../data/glade/history_manager.glade.h:10 +msgid "_Search Database" +msgstr "_Serĉi datumbaze" + +#: ../data/glade/history_window.glade.h:1 +msgid "Build custom query" +msgstr "Konnstrui propran informmendon" + +#: ../data/glade/history_window.glade.h:2 +msgid "Conversation History" +msgstr "Historio de interparoloj" + +#: ../data/glade/history_window.glade.h:3 +msgid "Query Builder..." +msgstr "Konstruktilo da petoj..." + +#: ../data/glade/history_window.glade.h:4 +msgid "Search" +msgstr "Serĉi" + +#: ../data/glade/history_window.glade.h:5 +msgid "_Search" +msgstr "_Serĉi" + +#: ../data/glade/invitation_received_dialog.glade.h:1 +msgid "Accept" +msgstr "Akcepti" + +#: ../data/glade/invitation_received_dialog.glade.h:2 +msgid "Deny" +msgstr "Rifuzi" + +#: ../data/glade/invitation_received_dialog.glade.h:3 +msgid "Invitation Received" +msgstr "Invito estas ricevita" + +#: ../data/glade/join_groupchat_window.glade.h:1 ../src/dialogs.py:933 +msgid "Join Group Chat" +msgstr "Eniri babilejen" + +#: ../data/glade/join_groupchat_window.glade.h:2 +#: ../data/glade/manage_bookmarks_window.glade.h:4 +#: ../data/glade/vcard_information_window.glade.h:28 +msgid "Nickname:" +msgstr "KaÅnomo:" + +#: ../data/glade/join_groupchat_window.glade.h:3 +#: ../data/glade/manage_bookmarks_window.glade.h:5 +msgid "Password:" +msgstr "Pasvorto:" + +#: ../data/glade/join_groupchat_window.glade.h:4 +msgid "Recently:" +msgstr "AntaÅ­ nelonge:" + +#: ../data/glade/join_groupchat_window.glade.h:5 +#: ../data/glade/manage_bookmarks_window.glade.h:7 +msgid "Room:" +msgstr "Babilejo:" + +#: ../data/glade/join_groupchat_window.glade.h:6 +#: ../data/glade/manage_bookmarks_window.glade.h:8 +msgid "Server:" +msgstr "Servilo:" + +#: ../data/glade/join_groupchat_window.glade.h:7 ../src/disco.py:1152 +#: ../src/disco.py:1514 +msgid "_Join" +msgstr "_AliÄi" + +#: ../data/glade/manage_accounts_window.glade.h:1 +msgid "Manage Accounts" +msgstr "Administri kontojn" + +#: ../data/glade/manage_bookmarks_window.glade.h:1 +msgid "Auto join" +msgstr "AÅ­tomate aliÄi" + +#: ../data/glade/manage_bookmarks_window.glade.h:2 +msgid "If checked, Gajim will join this group chat on startup" +msgstr "Se markitas, Gajim aliÄos al tiu ĉi babilejo dum lanĉo" + +#: ../data/glade/manage_bookmarks_window.glade.h:3 +msgid "Manage Bookmarks" +msgstr "AranÄi legosignojn" + +#: ../data/glade/manage_bookmarks_window.glade.h:6 +msgid "Print status:" +msgstr "Eligi staton:" + +#: ../data/glade/manage_bookmarks_window.glade.h:9 +msgid "Title:" +msgstr "Titolo:" + +#: ../data/glade/manage_proxies_window.glade.h:1 +msgid "Properties" +msgstr "Agordo" + +#: ../data/glade/manage_proxies_window.glade.h:2 +msgid "Settings" +msgstr "Agordo" + +#: ../data/glade/manage_proxies_window.glade.h:3 +msgid "HTTP Connect" +msgstr "HTTP-konekto" + +#: ../data/glade/manage_proxies_window.glade.h:4 +msgid "Manage Proxy Profiles" +msgstr "Administri prokurservilajn agordojn" + +#: ../data/glade/manage_proxies_window.glade.h:5 +#: ../data/glade/vcard_information_window.glade.h:27 +msgid "Name:" +msgstr "Nomo:" + +#: ../data/glade/manage_proxies_window.glade.h:7 +msgid "Type:" +msgstr "Tipo:" + +#: ../data/glade/manage_proxies_window.glade.h:8 +msgid "Use authentication" +msgstr "Uzi aÅ­tentokontrolon" + +#: ../data/glade/message_window.glade.h:1 +msgid "Click to insert an emoticon (Alt+M)" +msgstr "Klaku por enigi mienon (Alt+M)" + +#: ../data/glade/message_window.glade.h:2 ../src/chat_control.py:972 +msgid "OpenPGP Encryption" +msgstr "Ĉifrado per OpenPGP" + +#. Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector) +#: ../data/glade/message_window.glade.h:4 +#: ../data/glade/roster_window.glade.h:9 +msgid "_Actions" +msgstr "_Agoj" + +#. Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector) +#: ../data/glade/message_window.glade.h:6 +#: ../data/glade/xml_console_window.glade.h:11 +#: ../src/filetransfers_window.py:257 +msgid "_Send" +msgstr "_Sendi" + +#: ../data/glade/passphrase_dialog.glade.h:1 +msgid "Passphrase" +msgstr "Pasfrazo" + +#: ../data/glade/preferences_window.glade.h:1 +msgid "Advanced Configuration Editor" +msgstr "Detala agorda administrilo" + +#: ../data/glade/preferences_window.glade.h:2 +msgid "Applications" +msgstr "Programoj" + +#. a header for custom browser/client/file manager. so translate sth like: Custom Settings +#: ../data/glade/preferences_window.glade.h:4 +msgid "Custom" +msgstr "Propraj" + +#: ../data/glade/preferences_window.glade.h:5 +msgid "Format of a line" +msgstr "AranÄo de lineo" + +#: ../data/glade/preferences_window.glade.h:6 +msgid "Interface Customization" +msgstr "Agordo da fasado" + +#: ../data/glade/preferences_window.glade.h:8 +msgid "Preset Status Messages" +msgstr "AntaÅ­preparitaj statmesaÄoj" + +#: ../data/glade/preferences_window.glade.h:10 +msgid "Visual Notifications" +msgstr "Bildavizoj" + +#: ../data/glade/preferences_window.glade.h:11 +msgid "A_fter nickname:" +msgstr "Post kaÅnomo:" + +#: ../data/glade/preferences_window.glade.h:12 +msgid "Advanced" +msgstr "Krome" + +#: ../data/glade/preferences_window.glade.h:13 +msgid "" +"All chat states\n" +"Composing only\n" +"Disabled" +msgstr "" +"pri ĉiuj babilstatoj\n" +"nur pri tajpado\n" +"neniam" + +#: ../data/glade/preferences_window.glade.h:16 +msgid "Allow _OS information to be sent" +msgstr "Ebligi sendi informon pri _OS" + +#: ../data/glade/preferences_window.glade.h:17 +msgid "Allow popup/notifications when I'm _away/na/busy/invisible" +msgstr "Ebligi avizadon dum stato fora/nedisponebla/okupata/nevidebla" + +#: ../data/glade/preferences_window.glade.h:18 +msgid "Also known as iChat style" +msgstr "Konata ankaÅ­ kiel stilo de iChat" + +#: ../data/glade/preferences_window.glade.h:19 +msgid "Ask status message when I:" +msgstr "Demandi statmesaÄon kiam mi:" + +#: ../data/glade/preferences_window.glade.h:20 +msgid "Auto _away after:" +msgstr "AÅ­tomate _fora post:" + +#: ../data/glade/preferences_window.glade.h:21 +msgid "Auto _not available after:" +msgstr "AÅ­tomate nedisponebla post:" + +#: ../data/glade/preferences_window.glade.h:22 +msgid "" +"Autodetect on every Gajim startup\n" +"Always use GNOME default applications\n" +"Always use KDE default applications\n" +"Custom" +msgstr "" +"AÅ­todetekti dum ĉiu Gajim lanĉo\n" +"Ĉiam uzi defaÅ­lton de GNOME\n" +"Ĉiam uzi defaÅ­lton de KDE\n" +"Propraj" + +#: ../data/glade/preferences_window.glade.h:26 +msgid "B_efore nickname:" +msgstr "AntaÅ­ kaÅnomo:" + +#: ../data/glade/preferences_window.glade.h:27 ../src/chat_control.py:724 +msgid "Chat" +msgstr "Babilejo" + +#: ../data/glade/preferences_window.glade.h:28 +msgid "Chat state noti_fications:" +msgstr "Avizi:" + +#: ../data/glade/preferences_window.glade.h:29 +msgid "" +"Check this option, only if someone you don't have in the roster spams/annoys " +"you. Use with caution, cause it blocks all messages from any contact that is " +"not in the roster" +msgstr "" +"Marku tiun opcion, nur se iu ne el via kontaktlisto spamas/ĉagrenas al vi. " +"Uzi singarde, ĉar tio blokas ĉiujn mesaÄojn de ĉiuj kontaktoj kiuj mankas en " +"via kontaktlisto" + +#: ../data/glade/preferences_window.glade.h:30 +msgid "Default status _iconset:" +msgstr "DefaÅ­lto stata p_iktogramaro" + +#: ../data/glade/preferences_window.glade.h:31 +msgid "Display a_vatars of contacts in roster" +msgstr "Montri kaÅ_bildetojn de kontaktojn en kontaktlisto" + +#: ../data/glade/preferences_window.glade.h:32 +msgid "Display status _messages of contacts in roster" +msgstr "Montri statmesaÄojn de kontaktoj en kontaktlisto" + +#: ../data/glade/preferences_window.glade.h:33 +msgid "E_very 5 minutes" +msgstr "Ĉiujn 5 _minutojn" + +#: ../data/glade/preferences_window.glade.h:34 +msgid "Emoticons:" +msgstr "Mienoj:" + +#: ../data/glade/preferences_window.glade.h:35 +msgid "Events" +msgstr "Eventoj" + +#: ../data/glade/preferences_window.glade.h:36 +msgid "" +"Gajim can send and receive meta-information related to a conversation you " +"may have with a contact. Here you can specify which chatstates you want to " +"send to the other party." +msgstr "" +"Gajim povas sendi kaj ricevi informon rilatan al interparolado kun kontakto. " +"Tie ĉi vi povas spcifi pri kiuj babilstatoj vi volas mesaÄi al " +"interparolanto." + +#: ../data/glade/preferences_window.glade.h:37 +msgid "" +"Gajim will automatically show new events by poping up the relative window" +msgstr "" +"Gajim aÅ­tomate montros novajn eventojn antaÅ­igante la adekvatan fenestron" + +#: ../data/glade/preferences_window.glade.h:38 +msgid "" +"Gajim will notify you for new events via a popup in the bottom right of the " +"screen" +msgstr "" +"Gajim avisos vin pri novaj eventoj per Åprucfenestro en la malsupra dekstra " +"angulo de la ekrano" + +#: ../data/glade/preferences_window.glade.h:39 +msgid "" +"Gajim will notify you via a popup window in the bottom right of the screen " +"about contacts that just signed in" +msgstr "" +"Gajim avisos vin per Åprucfenestro en la malsupra dekstra angulo de la " +"ekrano pri kontaktoj kiu ĵus ensalutis" + +#: ../data/glade/preferences_window.glade.h:40 +msgid "" +"Gajim will notify you via a popup window in the bottom right of the screen " +"about contacts that just signed out" +msgstr "" +"Gajim avisos vin per Åprucfenestro en la malsupra dekstra angulo de la " +"ekrano pri kontaktoj kiu ĵus elsalutis" + +#: ../data/glade/preferences_window.glade.h:41 +msgid "" +"Gajim will only change the icon of the contact that triggered the new event" +msgstr "" +"Gajim nur ÅanÄos la piktogramon de la kontakto, kiu okazigis novan eventon" + +#: ../data/glade/preferences_window.glade.h:43 +msgid "" +"If checked, Gajim will display avatars of contacts in roster window and in " +"group chats" +msgstr "" +"Se markitas, Gajim montros kaÅbildetojn de kontaktoj en kontaktlista " +"fenestro kaj en babilejoj" + +#: ../data/glade/preferences_window.glade.h:44 +msgid "" +"If checked, Gajim will display status messages of contacts under the contact " +"name in roster window and in group chats" +msgstr "" +"Se markitas, Gajim montros statmesaÄojn de kontaktoj sub la kontaktnomo en " +"la kontaktlisto kaj en babilejoj" + +#: ../data/glade/preferences_window.glade.h:45 +msgid "" +"If checked, Gajim will remember the roster and chat window positions in the " +"screen and the sizes of them next time you run it" +msgstr "" +"Se markitas, Gajim memoros the kontaktlista kaj interparola lokoj sur la " +"ekrano kaj la Äia dimensioj je sekva lanĉo." + +#: ../data/glade/preferences_window.glade.h:46 +msgid "" +"If checked, Gajim will use protocol-specific status icons. (eg. A contact " +"from MSN will have the equivalent msn icon for status online, away, busy, " +"etc...)" +msgstr "" +"Se markitas, Gajim uzos protokolo-specifajn statpiktogramojn. (ekzemple " +"kontakto el MSN havos ekvivalentajn piktogramojn de msn por statoj konekta, " +"fora, okupata ktp...)" + +#: ../data/glade/preferences_window.glade.h:47 +msgid "" +"If not disabled, Gajim will replace ascii smilies like ':)' with equivalent " +"animated or static graphical emoticons" +msgstr "" +"Se ne malÅaltita, Gajim anstataÅ­igas ASCII mienojn, kiel \":)\", per " +"ekvivalentaj animaciataj aÅ­ statikaj grafikaj mienoj" + +#: ../data/glade/preferences_window.glade.h:48 +msgid "Ma_nage..." +msgstr "Admi_nistri..." + +#: ../data/glade/preferences_window.glade.h:49 +msgid "" +"Never\n" +"Always\n" +"Per account\n" +"Per type" +msgstr "" +"Neniam\n" +"Ĉiam\n" +"Perkonte\n" +"Perspece" + +#: ../data/glade/preferences_window.glade.h:53 +msgid "Notify me about contacts that: " +msgstr "Avizi min pri kontaktoj kiuj: " + +#: ../data/glade/preferences_window.glade.h:54 +msgid "Notify on new _Gmail e-mail" +msgstr "Avizi pri novaj _Gmail-leteroj" + +#: ../data/glade/preferences_window.glade.h:55 +msgid "On every _message" +msgstr "En ĉiu _mesaÄo" + +#: ../data/glade/preferences_window.glade.h:56 +msgid "One message _window:" +msgstr "_Unu mesaÄfenestro:" + +#: ../data/glade/preferences_window.glade.h:57 +msgid "Play _sounds" +msgstr "Ludi sonojn" + +#: ../data/glade/preferences_window.glade.h:58 +msgid "Preferences" +msgstr "Agordo" + +#: ../data/glade/preferences_window.glade.h:59 +msgid "Print time:" +msgstr "Eligi tempon:" + +#: ../data/glade/preferences_window.glade.h:60 +msgid "Save _position and size for roster and chat windows" +msgstr "" +"Konservi _lokon kaj grandecon de kontaktlista kaj interparola fenestroj" + +#: ../data/glade/preferences_window.glade.h:61 +msgid "Show only in _roster" +msgstr "Montri nur en _kontaktlisto" + +#: ../data/glade/preferences_window.glade.h:62 +msgid "Sign _in" +msgstr "E_nsalutas" + +#: ../data/glade/preferences_window.glade.h:63 +msgid "Sign _out" +msgstr "E_lsalutas" + +#: ../data/glade/preferences_window.glade.h:64 +msgid "Status" +msgstr "Stato" + +#: ../data/glade/preferences_window.glade.h:65 +msgid "T_heme:" +msgstr "_Etoso:" + +#: ../data/glade/preferences_window.glade.h:66 +msgid "The auto away status message" +msgstr "La aÅ­tomate fora statmesaÄo" + +#: ../data/glade/preferences_window.glade.h:67 +msgid "The auto not available status message" +msgstr "La aÅ­tomate nedisponebla statmesaÄo" + +#: ../data/glade/preferences_window.glade.h:68 +msgid "Use _transports iconsets" +msgstr "Uzi _transportilajn piktogramarojn" + +#: ../data/glade/preferences_window.glade.h:69 +msgid "Use system _default" +msgstr "Uzi sisteman defaÅ­lton" + +#: ../data/glade/preferences_window.glade.h:70 +msgid "Use t_rayicon (aka. notification area icon)" +msgstr "Uzi pletpiktogramon" + +#: ../data/glade/preferences_window.glade.h:71 +msgid "" +"When a new event (message, file transfer request etc..) is received, the " +"following methods may be used to inform you about it. Please note that " +"events about new messages only occur if it is a new message from a contact " +"you are not already chatting with" +msgstr "" +"Kiam nova evento (mesaÄo, peto pri dosiertransmeto ktp) estas ricevita, la " +"sekvaj metodoj eblos uzata por informi vin pri Äi. Bonvolu rimarki ke " +"eventoj pri novaj mesaÄoj okazas nur se Äi estas mesaÄo de kontakto kun kiu " +"vi ankoraÅ­ ne parolas" + +#: ../data/glade/preferences_window.glade.h:72 +msgid "When new event is received" +msgstr "Kiam ricevas novan eventon" + +#: ../data/glade/preferences_window.glade.h:73 +msgid "_Advanced Notifications Control..." +msgstr "_Kroma agordo de avizado" + +#: ../data/glade/preferences_window.glade.h:74 +msgid "_After time:" +msgstr "_Post tempo:" + +#: ../data/glade/preferences_window.glade.h:75 +msgid "_Before time:" +msgstr "_AntaÅ­ tempo:" + +#: ../data/glade/preferences_window.glade.h:76 +msgid "_Browser:" +msgstr "_Rigardilo:" + +#: ../data/glade/preferences_window.glade.h:77 +msgid "_File manager:" +msgstr "_Dosieradministrilo:" + +#: ../data/glade/preferences_window.glade.h:78 +msgid "_Font:" +msgstr "_Tiparo:" + +#: ../data/glade/preferences_window.glade.h:79 +msgid "_Highlight misspelled words" +msgstr "_Emfazi misskribajn vortojn" + +#: ../data/glade/preferences_window.glade.h:80 +msgid "_Ignore events from contacts not in the roster" +msgstr "_Ignori eventojn de kontaktoj kiuj mankas en kontaklisto" + +#: ../data/glade/preferences_window.glade.h:81 +msgid "_Incoming message:" +msgstr "E_nira mesaÄo:" + +#: ../data/glade/preferences_window.glade.h:82 +msgid "_Log status changes of contacts" +msgstr "_Protokoli statÅanÄojn de kontaktoj" + +#: ../data/glade/preferences_window.glade.h:83 +msgid "_Mail client:" +msgstr "Ret_poÅtkliento:" + +#: ../data/glade/preferences_window.glade.h:84 +msgid "_Never" +msgstr "_Neniam" + +#: ../data/glade/preferences_window.glade.h:85 +msgid "_Notify me about it" +msgstr "_Avizi min pri tio" + +#: ../data/glade/preferences_window.glade.h:86 +msgid "_Open..." +msgstr "_Malfermi..." + +#: ../data/glade/preferences_window.glade.h:87 +msgid "_Outgoing message:" +msgstr "E_lira mesaÄo:" + +#: ../data/glade/preferences_window.glade.h:88 +msgid "_Player:" +msgstr "_Ludilo:" + +#: ../data/glade/preferences_window.glade.h:89 +msgid "_Pop it up" +msgstr "_AntaÅ­igi la fenestron" + +#: ../data/glade/preferences_window.glade.h:90 +msgid "_Reset to Default Colors" +msgstr "_ReÅargi kolorojn per defaÅ­lto" + +#: ../data/glade/preferences_window.glade.h:91 +msgid "_Sort contacts by status" +msgstr "_Ordigi kontaktojn per stato" + +#: ../data/glade/preferences_window.glade.h:92 +msgid "_Status message:" +msgstr "_StatmesaÄo:" + +#: ../data/glade/preferences_window.glade.h:93 +msgid "_URL:" +msgstr "_URL:" + +#: ../data/glade/preferences_window.glade.h:94 +msgid "minutes" +msgstr "minutoj" + +#: ../data/glade/remove_account_window.glade.h:1 +msgid "What do you want to do?" +msgstr "Kion vi volas fari?" + +#: ../data/glade/remove_account_window.glade.h:2 +msgid "Remove account _only from Gajim" +msgstr "Forigi konton _nur el Gajim" + +#: ../data/glade/remove_account_window.glade.h:3 +msgid "Remove account from Gajim and from _server" +msgstr "Forigi konton el Gajim kaj el _servilo" + +#: ../data/glade/roster_contact_context_menu.glade.h:1 +msgid "A_sk to see his/her status" +msgstr "Peti por vidi lian/Åian staton" + +#: ../data/glade/roster_contact_context_menu.glade.h:2 +msgid "Add Special _Notification" +msgstr "Aligi specialan _avizon" + +#: ../data/glade/roster_contact_context_menu.glade.h:3 +msgid "Assign Open_PGP Key" +msgstr "Enigi Open_PGP-Ålosilon" + +#: ../data/glade/roster_contact_context_menu.glade.h:4 +msgid "Edit _Groups" +msgstr "AranÄi _Grupojn" + +#: ../data/glade/roster_contact_context_menu.glade.h:5 +#: ../data/glade/systray_context_menu.glade.h:1 +msgid "Send Single _Message" +msgstr "Sendi unuopan _mesaÄon" + +#: ../data/glade/roster_contact_context_menu.glade.h:7 +msgid "Start _Chat" +msgstr "Ekparoli" + +#: ../data/glade/roster_contact_context_menu.glade.h:9 +msgid "_Allow him/her to see my status" +msgstr "_Permesi al li/Åi vidi vian staton" + +#: ../data/glade/roster_contact_context_menu.glade.h:10 +msgid "_Forbid him/her to see my status" +msgstr "_Malpermesi al li/Åi vidi vian staton" + +#: ../data/glade/roster_contact_context_menu.glade.h:12 +#: ../src/roster_window.py:1475 +msgid "_Remove from Roster" +msgstr "_Forigi el kontaktlisto" + +#: ../data/glade/roster_contact_context_menu.glade.h:13 +#: ../src/roster_window.py:1463 +msgid "_Rename" +msgstr "_Renomigi" + +#: ../data/glade/roster_contact_context_menu.glade.h:14 +msgid "_Subscription" +msgstr "_Abono" + +#: ../data/glade/roster_window.glade.h:1 +msgid "A_ccounts" +msgstr "K_ontoj" + +#: ../data/glade/roster_window.glade.h:2 +msgid "Add _Contact" +msgstr "Aligi _kontakton" + +#: ../data/glade/roster_window.glade.h:3 +msgid "File _Transfers" +msgstr "Dosieraj _transmetoj" + +#: ../data/glade/roster_window.glade.h:4 +msgid "Frequently Asked Questions (online)" +msgstr "Oftaj demando (enrete)" + +#: ../data/glade/roster_window.glade.h:6 +msgid "Help online" +msgstr "Helpo enreta" + +#: ../data/glade/roster_window.glade.h:7 +msgid "Profile, Avatar" +msgstr "Vizitkarto" + +#: ../data/glade/roster_window.glade.h:8 +msgid "Show _Offline Contacts" +msgstr "Montri senkonektajn kontaktojn" + +#: ../data/glade/roster_window.glade.h:11 +msgid "_Contents" +msgstr "_Enhavo" + +#: ../data/glade/roster_window.glade.h:12 +msgid "_Discover Services" +msgstr "_Serĉi servojn" + +#: ../data/glade/roster_window.glade.h:13 ../src/disco.py:1259 +#: ../src/roster_window.py:1455 +msgid "_Edit" +msgstr "A_dministri" + +#: ../data/glade/roster_window.glade.h:14 +msgid "_FAQ" +msgstr "_Respondaro" + +#: ../data/glade/roster_window.glade.h:16 +msgid "_Help" +msgstr "_Helpo" + +#: ../data/glade/roster_window.glade.h:17 +msgid "_Preferences" +msgstr "_Agordo" + +#: ../data/glade/roster_window.glade.h:18 +msgid "_Quit" +msgstr "_Eliri" + +#: ../data/glade/service_discovery_window.glade.h:1 +msgid "G_o" +msgstr "Ek" + +#: ../data/glade/service_discovery_window.glade.h:2 +msgid "_Address:" +msgstr "_Adreso:" + +#: ../data/glade/service_discovery_window.glade.h:3 +msgid "_Filter:" +msgstr "_Filtrilo:" + +#: ../data/glade/service_registration_window.glade.h:1 +msgid "Register to" +msgstr "Registri ĉe" + +#: ../data/glade/service_registration_window.glade.h:2 +msgid "_Cancel" +msgstr "_Nuligi" + +#: ../data/glade/service_registration_window.glade.h:3 +msgid "_OK" +msgstr "_O kej" + +#: ../data/glade/single_message_window.glade.h:1 +msgid "0" +msgstr "0" + +#: ../data/glade/single_message_window.glade.h:2 +msgid "From:" +msgstr "De:" + +#: ../data/glade/single_message_window.glade.h:3 +msgid "Reply to this message" +msgstr "Respondi al tiu mesaÄo" + +#: ../data/glade/single_message_window.glade.h:4 +msgid "Sen_d" +msgstr "Sen_di" + +#: ../data/glade/single_message_window.glade.h:5 +msgid "Send message" +msgstr "Sendi mesaÄon" + +#: ../data/glade/single_message_window.glade.h:6 +msgid "Send message and close window" +msgstr "Sendi mesaÄon kaj fermi fenestron" + +#: ../data/glade/single_message_window.glade.h:7 +msgid "Subject:" +msgstr "Temo:" + +#: ../data/glade/single_message_window.glade.h:8 +msgid "To:" +msgstr "Al:" + +#: ../data/glade/single_message_window.glade.h:9 +msgid "_Reply" +msgstr "_Respondi" + +#: ../data/glade/single_message_window.glade.h:10 +msgid "_Send & Close" +msgstr "_Sendi kaj fermi" + +#: ../data/glade/subscription_request_window.glade.h:1 +msgid "Authorize contact so he can know when you're connected" +msgstr "Permesi al kontakto koni kiam vi konektas" + +#: ../data/glade/subscription_request_window.glade.h:2 +msgid "Contact _Info" +msgstr "Kontakta _informo" + +#: ../data/glade/subscription_request_window.glade.h:3 +msgid "Deny authorization from contact so he cannot know when you're connected" +msgstr "" +"Rifuzi abonon de kontakto, do li aÅ­ Åi ne povos scii kiam vi estas konektita" + +#: ../data/glade/subscription_request_window.glade.h:4 +msgid "Subscription Request" +msgstr "Mendo de abono" + +#: ../data/glade/subscription_request_window.glade.h:5 +msgid "_Authorize" +msgstr "_Permesi" + +#: ../data/glade/subscription_request_window.glade.h:6 +msgid "_Deny" +msgstr "_Rifuzi" + +#: ../data/glade/systray_context_menu.glade.h:2 +msgid "Show All Pending _Events" +msgstr "Montri ĉiujn nelegitajn _eventojn" + +#: ../data/glade/systray_context_menu.glade.h:3 +msgid "Show _Roster" +msgstr "Montri _kontaktliston" + +#: ../data/glade/systray_context_menu.glade.h:4 +msgid "Sta_tus" +msgstr "Sta_to" + +#. "About" is the text of a tab of vcard window +#: ../data/glade/vcard_information_window.glade.h:2 +msgid "About" +msgstr "Pri si" + +#: ../data/glade/vcard_information_window.glade.h:3 +msgid "Address" +msgstr "Adreso" + +#: ../data/glade/vcard_information_window.glade.h:4 +msgid "Ask:" +msgstr "Demandas:" + +#: ../data/glade/vcard_information_window.glade.h:5 +msgid "Birthday:" +msgstr "NaskiÄtago:" + +#: ../data/glade/vcard_information_window.glade.h:6 +msgid "City:" +msgstr "Urbo:" + +#: ../data/glade/vcard_information_window.glade.h:7 +msgid "Client:" +msgstr "Kliento:" + +#: ../data/glade/vcard_information_window.glade.h:8 +msgid "Company:" +msgstr "Kompanio:" + +#: ../data/glade/vcard_information_window.glade.h:9 +msgid "Contact Information" +msgstr "Kontakta informo" + +#: ../data/glade/vcard_information_window.glade.h:10 +msgid "Country:" +msgstr "Lando:" + +#: ../data/glade/vcard_information_window.glade.h:11 +msgid "Department:" +msgstr "Fako:" + +#: ../data/glade/vcard_information_window.glade.h:12 +msgid "E-Mail:" +msgstr "RetpoÅtadreso:" + +#: ../data/glade/vcard_information_window.glade.h:13 +msgid "Extra Address:" +msgstr "Kroma adreso:" + +#. Family Name +#: ../data/glade/vcard_information_window.glade.h:15 +msgid "Family:" +msgstr "Familia nomo:" + +#: ../data/glade/vcard_information_window.glade.h:16 +msgid "Format: YYYY-MM-DD" +msgstr "Formato: JJJJ-MM-TT" + +#. Given Name +#: ../data/glade/vcard_information_window.glade.h:19 +msgid "Given:" +msgstr "Nomo:" + +#: ../data/glade/vcard_information_window.glade.h:20 +msgid "Homepage:" +msgstr "HejmpaÄo:" + +#: ../data/glade/vcard_information_window.glade.h:21 +msgid "Jabber" +msgstr "Jabber" + +#: ../data/glade/vcard_information_window.glade.h:22 +msgid "Jabber ID:" +msgstr "Jabber-ID:" + +#: ../data/glade/vcard_information_window.glade.h:23 +msgid "Location" +msgstr "Loko" + +#. Middle Name +#: ../data/glade/vcard_information_window.glade.h:25 +msgid "Middle:" +msgstr "Meznomo:" + +#: ../data/glade/vcard_information_window.glade.h:26 +msgid "More" +msgstr "Plu" + +#: ../data/glade/vcard_information_window.glade.h:29 +msgid "OS:" +msgstr "OS:" + +#: ../data/glade/vcard_information_window.glade.h:30 +msgid "Phone No.:" +msgstr "Telefono:" + +#: ../data/glade/vcard_information_window.glade.h:31 +msgid "Position:" +msgstr "Ofico:" + +#: ../data/glade/vcard_information_window.glade.h:32 +msgid "Postal Code:" +msgstr "PoÅtkodo:" + +#. Prefix in Name +#: ../data/glade/vcard_information_window.glade.h:34 +msgid "Prefix:" +msgstr "Prefikso:" + +#: ../data/glade/vcard_information_window.glade.h:35 +msgid "Resource:" +msgstr "Risurco:" + +#: ../data/glade/vcard_information_window.glade.h:36 +msgid "Role:" +msgstr "Rolo:" + +#: ../data/glade/vcard_information_window.glade.h:37 +msgid "Set _Avatar" +msgstr "Starigi kaÅbildeton" + +#: ../data/glade/vcard_information_window.glade.h:38 +msgid "State:" +msgstr "Åœtato:" + +#: ../data/glade/vcard_information_window.glade.h:39 +msgid "Status:" +msgstr "Stato:" + +#: ../data/glade/vcard_information_window.glade.h:40 +msgid "Street:" +msgstr "Strato:" + +#: ../data/glade/vcard_information_window.glade.h:41 +msgid "Subscription:" +msgstr "Abono:" + +#. Suffix in Name +#: ../data/glade/vcard_information_window.glade.h:43 +msgid "Suffix:" +msgstr "Sufikso:" + +#: ../data/glade/vcard_information_window.glade.h:44 +msgid "Work" +msgstr "Laboro" + +#: ../data/glade/vcard_information_window.glade.h:45 +msgid "_Log conversation history" +msgstr "_Protokoli komunikadan historion" + +#: ../data/glade/vcard_information_window.glade.h:46 +msgid "_Publish" +msgstr "_Publiki" + +#: ../data/glade/vcard_information_window.glade.h:47 +msgid "_Retrieve" +msgstr "_Reobteni" + +#: ../data/glade/xml_console_window.glade.h:1 +msgid "Jabber Traffic" +msgstr "Jabber-trafiko" + +#: ../data/glade/xml_console_window.glade.h:2 +msgid "XML Input" +msgstr "XML enigo" + +#. XML Console enable checkbutton +#: ../data/glade/xml_console_window.glade.h:4 +msgid "Enable" +msgstr "Ebligi" + +#. Info/Query make the "IQ" initials. So translate like this 'YourLang/YourLang (Info/Query)'. Thanks (it's a tooltip so width is not a problem) +#: ../data/glade/xml_console_window.glade.h:6 +msgid "Info/Query" +msgstr "Informo/Peto (Info/Query)" + +#. Info/Query: all(?) jabber xml start with Whom do you want to ban?\n" +"\n" +msgstr "" +"Por kiu vi volas malpermesi aliÄon?\n" +"\n" + +#: ../src/config.py:2066 +msgid "Adding Member..." +msgstr "Aligas membron..." + +#: ../src/config.py:2067 +msgid "" +"Whom do you want to make a member?\n" +"\n" +msgstr "" +"Kiun vi volas fari membro?\n" +"\n" + +#: ../src/config.py:2069 +msgid "Adding Owner..." +msgstr "Aligas mastron..." + +#: ../src/config.py:2070 +msgid "" +"Whom do you want to make a owner?\n" +"\n" +msgstr "" +"Kiun vi volas fari mastro?\n" +"\n" + +#: ../src/config.py:2072 +msgid "Adding Administrator..." +msgstr "Aligas administriston..." + +#: ../src/config.py:2073 +msgid "" +"Whom do you want to make an administrator?\n" +"\n" +msgstr "" +"Kiun vi volas fari administristo?\n" +"\n" + +#: ../src/config.py:2074 +msgid "" +"Can be one of the following:\n" +"1. user@domain/resource (only that resource matches).\n" +"2. user@domain (any resource matches).\n" +"3. domain/resource (only that resource matches).\n" +"4. domain (the domain itself matches, as does any user@domain,\n" +"domain/resource, or address containing a subdomain." +msgstr "" +"Devas esti en unu el sekvaj formoj:\n" +"1. uzulo@domajno/risurco (nur tiu risurco).\n" +"2. uzulo@domajno (iu ajn risurco).\n" +"3. domajno/risurco (nur tiu risurco).\n" +"4. domajno (iu kombinaĵo de risurco kaj uzulo\n" +"kun tiu domajno aÅ­ subdomajno)." + +#: ../src/config.py:2170 +#, python-format +msgid "Removing %s account" +msgstr "Forigado de konto %s" + +#: ../src/config.py:2187 ../src/roster_window.py:1838 +msgid "Password Required" +msgstr "Pasvorto necesas" + +#: ../src/config.py:2188 ../src/roster_window.py:1839 +#, python-format +msgid "Enter your password for account %s" +msgstr "Enigi vian pasvorton por konto %s" + +#: ../src/config.py:2189 ../src/roster_window.py:1840 +msgid "Save password" +msgstr "Konservi pasvorton" + +#: ../src/config.py:2202 +#, python-format +msgid "Account \"%s\" is connected to the server" +msgstr "Konto \"%s\" estas konektita al la servilo" + +#: ../src/config.py:2203 +msgid "If you remove it, the connection will be lost." +msgstr "Se vi forigos Äin, la konekto disiÄos." + +#: ../src/config.py:2285 +msgid "All" +msgstr "Ĉiuj" + +#: ../src/config.py:2286 +msgid "Enter and leave only" +msgstr "Nur en/el-irado" + +#: ../src/config.py:2356 +msgid "New Room" +msgstr "Nova babilejo" + +#: ../src/config.py:2387 +msgid "This bookmark has invalid data" +msgstr "Tiu ĉi legosigno havas malkorektan datumon" + +#: ../src/config.py:2388 +msgid "" +"Please be sure to fill out server and room fields or remove this bookmark." +msgstr "" +"Bonvolu konvinkiÄi, ke kampoj Servilo kaj Babilejo estas plenitaj aÅ­ forigi " +"tiun ĉi legosignon." + +#: ../src/config.py:2640 +msgid "Invalid username" +msgstr "Malkorekta salutnomo" + +#: ../src/config.py:2641 +msgid "You must provide a username to configure this account." +msgstr "Vi devas enigi salutnomon por administri tiun ĉi konton." + +#: ../src/config.py:2650 ../src/dialogs.py:1101 +msgid "Invalid password" +msgstr "Malkorekta pasvorto" + +#: ../src/config.py:2651 +msgid "You must enter a password for the new account." +msgstr "Vi devas enigi pasvorton por la nova konto." + +#: ../src/config.py:2655 ../src/dialogs.py:1106 +msgid "Passwords do not match" +msgstr "Pasvortoj diversas" + +#: ../src/config.py:2656 ../src/dialogs.py:1107 +msgid "The passwords typed in both fields must be identical." +msgstr "En ambaÅ­ kampoj la pasvortoj devas esti identaj." + +#: ../src/config.py:2675 +msgid "Duplicate Jabber ID" +msgstr "Ripeta Jabber-ID" + +#: ../src/config.py:2676 +msgid "This account is already configured in Gajim." +msgstr "Tiu ĉi konto jam ĉeestas en kontlisto de Gajim." + +#: ../src/config.py:2693 +msgid "Account has been added successfully" +msgstr "Konto estas sukcese aldonita" + +#: ../src/config.py:2694 ../src/config.py:2727 +msgid "" +"You can set advanced account options by pressing Advanced button, or later " +"by clicking in Accounts menuitem under Edit menu from the main window." +msgstr "" +"Vi povas agordi kromajn kontajn parametrojn alklakinte butonon Krome aÅ­ pli " +"poste menueron Kontoj en menuo Administri de la ĉefa fenestro." + +#: ../src/config.py:2726 +msgid "Your new account has been created successfully" +msgstr "Via nova konto estas sukcese kreita" + +#: ../src/config.py:2742 +msgid "An error occured during account creation" +msgstr "Eraro okazis dum kreado de konto" + +#: ../src/config.py:2799 +msgid "Account name is in use" +msgstr "Kontnomo estas uzata" + +#: ../src/config.py:2800 +msgid "You already have an account using this name." +msgstr "Vi jam havas konto kun tiu nomo." + +#: ../src/conversation_textview.py:201 +msgid "" +"Text below this line is what has been said since the last time you paid " +"attention to this group chat" +msgstr "" +"Teksto sub tiu ĉi lineo estas, kio estas dirita post kiam vi lastfoje " +"atentis al tiu ĉi babiliejo" + +#: ../src/conversation_textview.py:259 +#, python-format +msgid "Actions for \"%s\"" +msgstr "Agoj por \"%s\"" + +#: ../src/conversation_textview.py:271 +msgid "Read _Wikipedia Article" +msgstr "Legi _vikipedian artikolon" + +#: ../src/conversation_textview.py:276 +msgid "Look it up in _Dictionary" +msgstr "Serĉi tion en _vortaro" + +#. we must have %s in the url if not WIKTIONARY +#: ../src/conversation_textview.py:292 +#, python-format +msgid "Dictionary URL is missing an \"%s\" and it is not WIKTIONARY" +msgstr "Vortara URL ne enhavas \"%s\" kaj Äi ne estas WIKTIONARY" + +#. we must have %s in the url +#: ../src/conversation_textview.py:304 +#, python-format +msgid "Web Search URL is missing an \"%s\"" +msgstr "Retserĉila URL ne enhavas \"%s\"" + +#: ../src/conversation_textview.py:307 +msgid "Web _Search for it" +msgstr "Retserĉi tion" + +#: ../src/conversation_textview.py:606 +msgid "Yesterday" +msgstr "HieraÅ­" + +#. the number is >= 2 +#. %i is day in year (1-365), %d (1-31) we want %i +#: ../src/conversation_textview.py:610 +#, python-format +msgid "%i days ago" +msgstr "AntaÅ­ %i tagoj" + +#. if we have subject, show it too! +#: ../src/conversation_textview.py:675 +#, python-format +msgid "Subject: %s\n" +msgstr "Temo: %s\n" + +#. only say that to non Windows users +#: ../src/dbus_support.py:34 +msgid "D-Bus python bindings are missing in this computer" +msgstr "Pitona bindmodulo por D-BUS mankas cxe tiu cxi komputilo" + +#: ../src/dbus_support.py:35 +msgid "D-Bus capabilities of Gajim cannot be used" +msgstr "D-BUS kunigeblo de Gajim ne uzeblas" + +#: ../src/dialogs.py:62 +#, python-format +msgid "Contact's name: %s" +msgstr "Kontaktnomo: %s" + +#: ../src/dialogs.py:64 +#, python-format +msgid "JID: %s" +msgstr "JID: %s" + +#. Group name +#. In group boolean +#: ../src/dialogs.py:174 +msgid "Group" +msgstr "Grupo" + +#: ../src/dialogs.py:181 +msgid "In the group" +msgstr "In la grupo" + +#: ../src/dialogs.py:231 +msgid "KeyID" +msgstr "Åœlosil-ID" + +#: ../src/dialogs.py:234 +msgid "Contact name" +msgstr "Kontaktnomo" + +#: ../src/dialogs.py:267 +#, python-format +msgid "%s Status Message" +msgstr "%s statmesaÄo" + +#: ../src/dialogs.py:269 +msgid "Status Message" +msgstr "StatmesaÄo" + +#: ../src/dialogs.py:344 +msgid "Save as Preset Status Message" +msgstr "Konservi kiel antaÅ­preparita statmesaÄo" + +#: ../src/dialogs.py:345 +msgid "Please type a name for this status message" +msgstr "Bonvolu tajpi nomon de tiu statmesaÄo" + +#: ../src/dialogs.py:391 +#, python-format +msgid "Please fill in the data of the contact you want to add in account %s" +msgstr "Bonvolu pleni la datumo pri kontakto, kiu vi volas aligi ĉe konto %s" + +#: ../src/dialogs.py:393 +msgid "Please fill in the data of the contact you want to add" +msgstr "Bonvolu pleni la datumo pri kontakto, kiu vi volas aligi" + +#: ../src/dialogs.py:403 ../src/disco.py:116 ../src/disco.py:117 +#: ../src/disco.py:1256 ../src/roster_window.py:214 +#: ../src/roster_window.py:281 ../src/roster_window.py:316 +#: ../src/roster_window.py:336 ../src/roster_window.py:360 +#: ../src/roster_window.py:2936 ../src/roster_window.py:2938 +#: ../src/common/helpers.py:41 +msgid "Transports" +msgstr "Transportiloj" + +#: ../src/dialogs.py:489 ../src/dialogs.py:495 +msgid "Invalid User ID" +msgstr "Malkorekta uzula ID" + +#: ../src/dialogs.py:496 +msgid "The user ID must not contain a resource." +msgstr "La uzula ID devas ne enteni risurcon." + +#: ../src/dialogs.py:509 +msgid "Contact already in roster" +msgstr "Kontakto jam estas en kontaktlisto" + +#: ../src/dialogs.py:510 +msgid "This contact is already listed in your roster." +msgstr "Tiu kontakto jam ĉeestas en via kontaktlisto." + +#. FIXME: do versions strings translatable after .10 +#. FIXME: use %s then +#: ../src/dialogs.py:573 +msgid "A GTK+ jabber client" +msgstr "GTK+ jabber-kliento" + +#: ../src/dialogs.py:585 +msgid "Past Developers:" +msgstr "Äœisnunaj programistoj:" + +#: ../src/dialogs.py:589 +msgid "THANKS:" +msgstr "DANKON AL:" + +#. remove one english setence +#. and add it manually as translatable +#: ../src/dialogs.py:596 +msgid "Last but not least, we would like to thank all the package maintainers." +msgstr "Fine ne malpli ol aliajn ni dankas ĉiujn pakaĵvartistojn." + +#. here you write your name in the form Name FamilyName +#: ../src/dialogs.py:610 +msgid "translator-credits" +msgstr "Segrio Ĥliutĉin " + +#: ../src/dialogs.py:873 +#, python-format +msgid "Subscription request for account %s from %s" +msgstr "Demando pri abono por konto %s de %s" + +#: ../src/dialogs.py:876 +#, python-format +msgid "Subscription request from %s" +msgstr "Demando pri abono de %s" + +#: ../src/dialogs.py:918 +msgid "You can not join a group chat unless you are connected." +msgstr "Vi ne povas aliÄi al babilejo dum vi estas senkonekta." + +#: ../src/dialogs.py:931 +#, python-format +msgid "Join Group Chat with account %s" +msgstr "Eniri en babilejon per konto %s" + +#: ../src/dialogs.py:1022 +msgid "Invalid room or server name" +msgstr "Malkorekta nomo de babilejo aÅ­ servilo" + +#: ../src/dialogs.py:1023 +msgid "The room name or server name has not allowed characters." +msgstr "La nomo de babilejo aÅ­ servilo enhavas nepermesajn signojn." + +#: ../src/dialogs.py:1042 +#, python-format +msgid "Start Chat with account %s" +msgstr "Babili per konto %s" + +#: ../src/dialogs.py:1044 +msgid "Start Chat" +msgstr "Babili" + +#: ../src/dialogs.py:1045 +msgid "" +"Fill in the jid, or nick of the contact you would like\n" +"to send a chat message to:" +msgstr "" +"Enigu la JID aÅ­ kaÅnomon de la kontakto,\n" +"al kiu vi volas sendi mesaÄon:" + +#. if offline or connecting +#: ../src/dialogs.py:1070 ../src/dialogs.py:1410 ../src/dialogs.py:1534 +msgid "Connection not available" +msgstr "Konekto mankas" + +#: ../src/dialogs.py:1071 ../src/dialogs.py:1411 ../src/dialogs.py:1535 +#, python-format +msgid "Please make sure you are connected with \"%s\"." +msgstr "Bonvolu konvinkiÄi, ke vi estas konektita kun \"%s\"." + +#: ../src/dialogs.py:1083 +msgid "Without a connection, you can not change your password." +msgstr "Senkonekta vi ne povas ÅanÄi vian pasvorton." + +#: ../src/dialogs.py:1102 +msgid "You must enter a password." +msgstr "Vi devas enigi pasvorton." + +#. img to display +#. default value +#: ../src/dialogs.py:1148 ../src/notify.py:122 ../src/notify.py:264 +msgid "Contact Signed In" +msgstr "Kontakto ensalutis" + +#: ../src/dialogs.py:1150 ../src/notify.py:130 ../src/notify.py:266 +msgid "Contact Signed Out" +msgstr "Kontakto elsalutis" + +#. chat message +#: ../src/dialogs.py:1152 ../src/notify.py:150 ../src/notify.py:268 +msgid "New Message" +msgstr "Nova mesaÄo" + +#. single message +#: ../src/dialogs.py:1152 ../src/notify.py:134 ../src/notify.py:268 +msgid "New Single Message" +msgstr "Nova unuobla mesaÄo" + +#. private message +#: ../src/dialogs.py:1153 ../src/notify.py:141 ../src/notify.py:269 +msgid "New Private Message" +msgstr "Nova privata mesaÄo" + +#: ../src/dialogs.py:1153 ../src/gajim.py:1028 ../src/notify.py:277 +msgid "New E-mail" +msgstr "Nova retletero" + +#: ../src/dialogs.py:1155 ../src/gajim.py:1171 ../src/notify.py:271 +msgid "File Transfer Request" +msgstr "Mendo de dosiera transmeto" + +#: ../src/dialogs.py:1157 ../src/gajim.py:1014 ../src/gajim.py:1148 +#: ../src/notify.py:273 +msgid "File Transfer Error" +msgstr "Dosiertransmeta eraro" + +#: ../src/dialogs.py:1159 ../src/gajim.py:1206 ../src/gajim.py:1228 +#: ../src/gajim.py:1245 ../src/notify.py:275 +msgid "File Transfer Completed" +msgstr "Dosiera transmeto plenumis" + +#: ../src/dialogs.py:1160 ../src/gajim.py:1209 ../src/notify.py:275 +msgid "File Transfer Stopped" +msgstr "Dosiera transmeto haltitas" + +#: ../src/dialogs.py:1162 ../src/gajim.py:912 ../src/notify.py:279 +msgid "Groupchat Invitation" +msgstr "Babileja invitilo" + +#: ../src/dialogs.py:1164 ../src/notify.py:114 ../src/notify.py:281 +msgid "Contact Changed Status" +msgstr "Kontakto ÅanÄis sian staton" + +#. FIXME: for Received with should become 'in' +#: ../src/dialogs.py:1342 +#, python-format +msgid "Single Message with account %s" +msgstr "Unuopa mesaÄo per konto %s" + +#: ../src/dialogs.py:1344 +msgid "Single Message" +msgstr "Unuopa mesaÄo" + +#. prepare UI for Sending +#: ../src/dialogs.py:1347 +#, python-format +msgid "Send %s" +msgstr "Sendi %s" + +#. prepare UI for Receiving +#: ../src/dialogs.py:1370 +#, python-format +msgid "Received %s" +msgstr "Ricevitas %s" + +#. we create a new blank window to send and we preset RE: and to jid +#: ../src/dialogs.py:1437 +#, python-format +msgid "RE: %s" +msgstr "RE: %s" + +#: ../src/dialogs.py:1438 +#, python-format +msgid "%s wrote:\n" +msgstr "%s skribis:\n" + +#: ../src/dialogs.py:1482 +#, python-format +msgid "XML Console for %s" +msgstr "XML-konzolo por %s" + +#: ../src/dialogs.py:1484 +msgid "XML Console" +msgstr "XML-konzolo" + +#. FIXME: use nickname instead of contact_jid +#: ../src/dialogs.py:1572 +#, python-format +msgid "%(contact_jid)s has invited you to %(room_jid)s room" +msgstr "%(contact_jid)s invitas vin al %(room_jid)s babilejo" + +#. only if not None and not '' +#: ../src/dialogs.py:1578 +#, python-format +msgid "Comment: %s" +msgstr "Komento: %s" + +#: ../src/dialogs.py:1638 +msgid "Choose Sound" +msgstr "Elektu sonon" + +#: ../src/dialogs.py:1648 ../src/dialogs.py:1691 +msgid "All files" +msgstr "Ĉiuj dosieroj" + +#: ../src/dialogs.py:1653 +msgid "Wav Sounds" +msgstr "Wav-sonoj" + +#: ../src/dialogs.py:1681 +msgid "Choose Image" +msgstr "Elektu bildon" + +#: ../src/dialogs.py:1696 +msgid "Images" +msgstr "Bildoj" + +#: ../src/dialogs.py:1741 +#, python-format +msgid "When %s becomes:" +msgstr "Kiam %s venas:" + +#: ../src/dialogs.py:1743 +#, python-format +msgid "Adding Special Notification for %s" +msgstr "Aligado de speciala avizo por %s" + +#: ../src/dialogs.py:1816 +msgid "Condition" +msgstr "Kondiĉo" + +#: ../src/disco.py:115 +msgid "Others" +msgstr "Aliaj" + +#. conference is a category for listing mostly groupchats in service discovery +#: ../src/disco.py:119 +msgid "Conference" +msgstr "Babilejoj" + +#: ../src/disco.py:418 +msgid "Without a connection, you can not browse available services" +msgstr "Senkonekta vi ne povas rigardi disponeblajn servojn" + +#: ../src/disco.py:497 +#, python-format +msgid "Service Discovery using account %s" +msgstr "Serĉado de servoj per konto %s" + +#: ../src/disco.py:498 +msgid "Service Discovery" +msgstr "Serĉado de servoj" + +#: ../src/disco.py:635 +msgid "The service could not be found" +msgstr "Neniu servo estas trovita" + +#: ../src/disco.py:636 +msgid "" +"There is no service at the address you entered, or it is not responding. " +"Check the address and try again." +msgstr "" +"Servo mankas ĉe la adreso, kiun vi enigis, aÅ­ Äi ne respondas. Kontrolu la " +"adreson kaj provu denove." + +#: ../src/disco.py:640 ../src/disco.py:922 +msgid "The service is not browsable" +msgstr "Tiu ĉi servo ne rigardeblas" + +#: ../src/disco.py:641 +msgid "This type of service does not contain any items to browse." +msgstr "Tiu tipo de servo ne enhavas erojn por rigardi." + +#: ../src/disco.py:721 +#, python-format +msgid "Browsing %s using account %s" +msgstr "Rigardado %s per konto %s" + +#: ../src/disco.py:760 +msgid "_Browse" +msgstr "_Rigardi" + +#: ../src/disco.py:923 +msgid "This service does not contain any items to browse." +msgstr "Tiu ĉi servo ne havas erojn por rigardi." + +#: ../src/disco.py:1144 ../src/disco.py:1261 +msgid "Re_gister" +msgstr "Re_gistri" + +#: ../src/disco.py:1298 +#, python-format +msgid "Scanning %d / %d.." +msgstr "Skanas %d / %d.." + +#. Users column +#: ../src/disco.py:1480 +msgid "Users" +msgstr "Uzuloj" + +#. Description column +#: ../src/disco.py:1487 +msgid "Description" +msgstr "Priskribo" + +#: ../src/filetransfers_window.py:79 +msgid "File" +msgstr "Dosiero" + +#: ../src/filetransfers_window.py:94 +msgid "Time" +msgstr "Tempo" + +#: ../src/filetransfers_window.py:106 +msgid "Progress" +msgstr "Progreso" + +#: ../src/filetransfers_window.py:171 ../src/filetransfers_window.py:231 +#, python-format +msgid "Filename: %s" +msgstr "Dosiernomo: %s" + +#: ../src/filetransfers_window.py:172 ../src/filetransfers_window.py:299 +#, python-format +msgid "Size: %s" +msgstr "Longo: %s" + +#. You is a reply of who sent a file +#. You is a reply of who received a file +#: ../src/filetransfers_window.py:181 ../src/filetransfers_window.py:191 +#: ../src/history_manager.py:458 +msgid "You" +msgstr "Vi" + +#: ../src/filetransfers_window.py:182 ../src/filetransfers_window.py:232 +#, python-format +msgid "Sender: %s" +msgstr "Sendanto: %s" + +#: ../src/filetransfers_window.py:183 ../src/filetransfers_window.py:564 +#: ../src/tooltips.py:641 +msgid "Recipient: " +msgstr "Ricevanto: " + +#: ../src/filetransfers_window.py:194 +#, python-format +msgid "Saved in: %s" +msgstr "Konservita kiel: %s" + +#: ../src/filetransfers_window.py:196 +msgid "File transfer completed" +msgstr "Dosier transmeto plenumitas" + +#: ../src/filetransfers_window.py:212 ../src/filetransfers_window.py:220 +msgid "File transfer canceled" +msgstr "Dosiera transmeto nuligitas" + +#: ../src/filetransfers_window.py:212 ../src/filetransfers_window.py:221 +msgid "Connection with peer cannot be established." +msgstr "Konekto kun punkto neestableblas." + +#: ../src/filetransfers_window.py:233 +msgid "File transfer stopped by the contact of the other side" +msgstr "Dosier transmeto estas hatlita de aliflanka kontakto" + +#: ../src/filetransfers_window.py:250 +msgid "Choose File to Send..." +msgstr "Electu dosieron por sendi..." + +#: ../src/filetransfers_window.py:264 +msgid "Gajim cannot access this file" +msgstr "Gajim ne povas atingi tiun dosieron" + +#: ../src/filetransfers_window.py:265 +msgid "This file is being used by another process." +msgstr "Tiu ĉi dosiero estas uzata de alia procezo." + +#: ../src/filetransfers_window.py:297 +#, python-format +msgid "File: %s" +msgstr "Dosiero: %s" + +#: ../src/filetransfers_window.py:302 +#, python-format +msgid "Type: %s" +msgstr "Tipo: %s" + +#: ../src/filetransfers_window.py:304 +#, python-format +msgid "Description: %s" +msgstr "Priskribo: %s" + +#: ../src/filetransfers_window.py:305 +#, python-format +msgid "%s wants to send you a file:" +msgstr "%s volas sendi al vi dosieron:" + +#: ../src/filetransfers_window.py:319 +#, python-format +msgid "Cannot overwrite existing file \"%s\"" +msgstr "Ne povas reskribi ekzistan dosieron \"%s\"" + +#: ../src/filetransfers_window.py:320 +msgid "" +"A file with this name already exists and you do not have permission to " +"overwrite it." +msgstr "" +"Dosiero kun tiu namo jam ekzistas kaj vi ne havas permeson reskribi Äin" + +#: ../src/filetransfers_window.py:327 ../src/gtkgui_helpers.py:683 +msgid "This file already exists" +msgstr "Tiu dosiero jam ekzistas" + +#: ../src/filetransfers_window.py:327 ../src/gtkgui_helpers.py:683 +msgid "What do you want to do?" +msgstr "Kion vi volas fari?" + +#: ../src/filetransfers_window.py:339 +#, python-format +msgid "Directory \"%s\" is not writable" +msgstr "Dosierujo \"%s\" ne skribeblas" + +#: ../src/filetransfers_window.py:339 +msgid "You do not have permission to create files in this directory." +msgstr "Vi ne havas permeson krei dosierojn en ĉi tiu dosierujo." + +#: ../src/filetransfers_window.py:349 +msgid "Save File as..." +msgstr "Konservi dosieron kiel..." + +#. Print remaining time in format 00:00:00 +#. You can change the places of (hours), (minutes), (seconds) - +#. they are not translatable. +#: ../src/filetransfers_window.py:428 +#, python-format +msgid "%(hours)02.d:%(minutes)02.d:%(seconds)02.d" +msgstr "%(hours)02.d:%(minutes)02.d:%(seconds)02.d" + +#. This should make the string Kb/s, +#. where 'Kb' part is taken from %s. +#. Only the 's' after / (which means second) should be translated. +#: ../src/filetransfers_window.py:500 +#, python-format +msgid "(%(filesize_unit)s/s)" +msgstr "(%(filesize_unit)s/s)" + +#: ../src/filetransfers_window.py:536 ../src/filetransfers_window.py:539 +msgid "Invalid File" +msgstr "Malkorekta dosiero" + +#: ../src/filetransfers_window.py:536 +msgid "File: " +msgstr "Dosiero: " + +#: ../src/filetransfers_window.py:540 +msgid "It is not possible to send empty files" +msgstr "Neeblas sendi senenhavajn dosierojn" + +#: ../src/filetransfers_window.py:560 ../src/tooltips.py:513 +#: ../src/tooltips.py:631 +msgid "Name: " +msgstr "Nomo: " + +#: ../src/filetransfers_window.py:562 ../src/tooltips.py:635 +msgid "Sender: " +msgstr "Sendanto: " + +#: ../src/filetransfers_window.py:750 +msgid "Pause" +msgstr "PaÅ­zo" + +#: ../src/gajim-remote.py:84 +msgid "shows a help on specific command" +msgstr "Montri helpon pri specifita komando" + +#. User gets help for the command, specified by this parameter +#: ../src/gajim-remote.py:87 +msgid "command" +msgstr "komando" + +#: ../src/gajim-remote.py:88 +msgid "show help on command" +msgstr "montri helpon pri komando" + +#: ../src/gajim-remote.py:92 +msgid "Shows or hides the roster window" +msgstr "Montras aÅ­ kaÅas la kontaktlistan fenestron" + +#: ../src/gajim-remote.py:96 +msgid "Popups a window with the next unread message" +msgstr "AntaÅ­igas fenestron kun la sekva nelegita mesaÄo" + +#: ../src/gajim-remote.py:100 +msgid "" +"Prints a list of all contacts in the roster. Each contact appear on a " +"separate line" +msgstr "" +"Eligas liston de ĉiuj kontaktoj de kontaktlisto. Ĉiu kontakto aperasen " +"separata lineo" + +#: ../src/gajim-remote.py:102 ../src/gajim-remote.py:115 +#: ../src/gajim-remote.py:125 ../src/gajim-remote.py:138 +#: ../src/gajim-remote.py:159 ../src/gajim-remote.py:189 +#: ../src/gajim-remote.py:198 ../src/gajim-remote.py:205 +#: ../src/gajim-remote.py:212 ../src/gajim-remote.py:223 +msgid "account" +msgstr "konto" + +#: ../src/gajim-remote.py:102 +msgid "show only contacts of the given account" +msgstr "Montri kontaktojn nur de specifita konto" + +#: ../src/gajim-remote.py:107 +msgid "Prints a list of registered accounts" +msgstr "Eligas liston de registritaj kontoj" + +#: ../src/gajim-remote.py:111 +msgid "Changes the status of account or accounts" +msgstr "ÅœanÄas staton de konto aÅ­ kontoj" + +#: ../src/gajim-remote.py:113 +msgid "status" +msgstr "stato" + +#: ../src/gajim-remote.py:113 +msgid "one of: offline, online, chat, away, xa, dnd, invisible " +msgstr "" +"unu el: senkonekta, enreta, babilas, fora, nedisponebla, okupata, nevidebla " + +#: ../src/gajim-remote.py:114 ../src/gajim-remote.py:135 +msgid "message" +msgstr "mesaÄo" + +#: ../src/gajim-remote.py:114 +msgid "status message" +msgstr "statmesaÄo" + +#: ../src/gajim-remote.py:115 +msgid "" +"change status of account \"account\". If not specified, try to change status " +"of all accounts that have \"sync with global status\" option set" +msgstr "" +"ÅanÄas staton de konto \"account\". Se ne estas specifita, provas ÅanÄi " +"statojn de ĉiuj kontoj, kiuj havas Åaltitan parametron \"sinkronigi kun " +"komuna stato\"" + +#: ../src/gajim-remote.py:121 +msgid "Shows the chat dialog so that you can send messages to a contact" +msgstr "Montras interparolan fenestron do vi povas sendi mesaÄon al kontakto" + +#: ../src/gajim-remote.py:123 +msgid "JID of the contact that you want to chat with" +msgstr "JID de kontakto, kun kiu vi volas interparoli" + +#: ../src/gajim-remote.py:125 ../src/gajim-remote.py:189 +msgid "if specified, contact is taken from the contact list of this account" +msgstr "Se specifita, kontakto estos prenata el kontaktlisto de tiu ĉi konto" + +#: ../src/gajim-remote.py:130 +msgid "" +"Sends new message to a contact in the roster. Both OpenPGP key and account " +"are optional. If you want to set only 'account', without 'OpenPGP key', just " +"set 'OpenPGP key' to ''." +msgstr "" +"Sendas novan mesaÄon al kontakto el la kontaktlisto. AmbaÅ­ OpenPGP-Ålosilo " +"kaj konto estas fakultativaj. Se vi volas specifi nur konton sen OpenPGP-" +"Ålosilo, do specifu \"OpenPGP-Ålosilo\" kiel \"\"." + +#: ../src/gajim-remote.py:134 +msgid "JID of the contact that will receive the message" +msgstr "JID de kontakto, kiu ricevos la mesaÄon" + +#: ../src/gajim-remote.py:135 +msgid "message contents" +msgstr "mesaÄenhavo" + +#: ../src/gajim-remote.py:136 +msgid "pgp key" +msgstr "Ålosilo de pgp" + +#: ../src/gajim-remote.py:136 +msgid "if specified, the message will be encrypted using this public key" +msgstr "Se specifita, la mesaÄo estos ĉifrita per tiu ĉi publika Ålosilo" + +#: ../src/gajim-remote.py:138 +msgid "if specified, the message will be sent using this account" +msgstr "Se specifita, la mesaÄo estos sendita per tiu ĉi konto" + +#: ../src/gajim-remote.py:143 +msgid "Gets detailed info on a contact" +msgstr "Ricevas detalan informon pri kontakto" + +#: ../src/gajim-remote.py:145 ../src/gajim-remote.py:158 +#: ../src/gajim-remote.py:188 ../src/gajim-remote.py:197 +msgid "JID of the contact" +msgstr "JID de kontakto" + +#: ../src/gajim-remote.py:149 +msgid "Gets detailed info on a account" +msgstr "Ricevas detalan informon pri konto" + +#: ../src/gajim-remote.py:151 +msgid "Name of the account" +msgstr "Nomo de la konto" + +#: ../src/gajim-remote.py:155 +msgid "Sends file to a contact" +msgstr "Sendi dosieron al kontakto" + +#: ../src/gajim-remote.py:157 +msgid "file" +msgstr "dosiero" + +#: ../src/gajim-remote.py:157 +msgid "File path" +msgstr "Dosierindiko" + +#: ../src/gajim-remote.py:159 +msgid "if specified, file will be sent using this account" +msgstr "Se specifita, dosiero estos sendita per tiu ĉi konto" + +#: ../src/gajim-remote.py:164 +msgid "Lists all preferences and their values" +msgstr "Listo de ĉiuj parametroj kaj ilia valoroj" + +#: ../src/gajim-remote.py:168 +msgid "Sets value of 'key' to 'value'." +msgstr "Valorigi \"Ålosilo\" per \"valoro\"." + +#: ../src/gajim-remote.py:170 +msgid "key=value" +msgstr "Ålosilo=valoro" + +#: ../src/gajim-remote.py:170 +msgid "'key' is the name of the preference, 'value' is the value to set it to" +msgstr "\"Ålosilo\" estas nomo de parametro, \"valoro\" estas Äia stato" + +#: ../src/gajim-remote.py:175 +msgid "Deletes a preference item" +msgstr "Forigas parametron" + +#: ../src/gajim-remote.py:177 +msgid "key" +msgstr "Ålosilo" + +#: ../src/gajim-remote.py:177 +msgid "name of the preference to be deleted" +msgstr "nomo de forigota parametro" + +#: ../src/gajim-remote.py:181 +msgid "Writes the current state of Gajim preferences to the .config file" +msgstr "Skribas la aktualan agordon de Gajim en la dosieron \".config\"" + +#: ../src/gajim-remote.py:186 +msgid "Removes contact from roster" +msgstr "Forigas kontakton el kontaktlisto" + +#: ../src/gajim-remote.py:195 +msgid "Adds contact to roster" +msgstr "Aligas kontakton en kontaktliston" + +#: ../src/gajim-remote.py:197 +msgid "jid" +msgstr "jid" + +#: ../src/gajim-remote.py:198 +msgid "Adds new contact to this account" +msgstr "Aldonas novan kontakton en tiun konton" + +#: ../src/gajim-remote.py:203 +msgid "Returns current status (the global one unless account is specified)" +msgstr "Donas tuntempan staton (la komuna se konto estas nespecifita)" + +#: ../src/gajim-remote.py:210 +msgid "" +"Returns current status message(the global one unless account is specified)" +msgstr "Donas tuntempan statmesaÄon (la komuna se konto estas nespecifita)" + +#: ../src/gajim-remote.py:217 +msgid "Returns number of unreaded messages" +msgstr "Donas kvanton de lelegitaj mesaÄoj" + +#: ../src/gajim-remote.py:221 +msgid "Open 'Start Chat' dialog" +msgstr "Malfermi \"Ekparoli\" dialogfenestron" + +#: ../src/gajim-remote.py:223 +msgid "Starts chat, using this account" +msgstr "Babili per tiu ĉi konto" + +#: ../src/gajim-remote.py:243 +msgid "Missing argument \"contact_jid\"" +msgstr "Mankas argumento \"kontakt-jid\"" + +#: ../src/gajim-remote.py:262 +#, python-format +msgid "" +"'%s' is not in your roster.\n" +"Please specify account for sending the message." +msgstr "" +"%s mankas en via kontaktlisto\n" +"Bonvolu specifi konton por sendi la mesaÄon." + +#: ../src/gajim-remote.py:265 +msgid "You have no active account" +msgstr "Vi ne havas aktivan konton" + +#: ../src/gajim-remote.py:308 +#, python-format +msgid "Unknown D-Bus version: %s" +msgstr "Nekonata versio de D-BUS: %s" + +#: ../src/gajim-remote.py:335 +#, python-format +msgid "" +"Usage: %s %s %s \n" +"\t %s" +msgstr "" +"Uzado: %s %s %s \n" +"\t %s" + +#: ../src/gajim-remote.py:338 +msgid "Arguments:" +msgstr "Atgumentoj:" + +#: ../src/gajim-remote.py:342 +#, python-format +msgid "%s not found" +msgstr "%s ne trovitas" + +#: ../src/gajim-remote.py:346 +#, python-format +msgid "" +"Usage: %s command [arguments]\n" +"Command is one of:\n" +msgstr "" +"Uzado: %s komando [argumentoj]\n" +"Komando estas unu el:\n" + +#: ../src/gajim-remote.py:420 +#, python-format +msgid "" +"Argument \"%s\" is not specified. \n" +"Type \"%s help %s\" for more info" +msgstr "" +"Argumento \"%s\" ne estas specifita. \n" +"Enigi \"%s help %s\" por plia infomo" + +#: ../src/gajim.py:50 +msgid "Gajim needs Xserver to run. Quiting..." +msgstr "Gajim bezonas X-servilon. Eliras..." + +#: ../src/gajim.py:54 +msgid "Gajim needs PyGTK 2.6 or above" +msgstr "Gajim bezonas PyGTK 2.6 aÅ­ pli novan" + +#: ../src/gajim.py:55 +msgid "Gajim needs PyGTK 2.6 or above to run. Quiting..." +msgstr "Gajim bezonas PyGTK 2.6 aÅ­ pli novan por funkcii. Finas..." + +#: ../src/gajim.py:57 +msgid "Gajim needs GTK 2.6 or above" +msgstr "Gajim bezonas GTK 2.6 aÅ­ pli novan" + +#: ../src/gajim.py:58 +msgid "Gajim needs GTK 2.6 or above to run. Quiting..." +msgstr "Gajim bezonas GTK 2.6 aÅ­ pli novan por funkcii. Finas..." + +#: ../src/gajim.py:63 +msgid "GTK+ runtime is missing libglade support" +msgstr "Mankas subteno de libglade en GTK+" + +#: ../src/gajim.py:65 +#, python-format +msgid "" +"Please remove your current GTK+ runtime and install the latest stable " +"version from %s" +msgstr "" +"Bonvolu forigi vian nuntempan GTK+ libraron kaj instali la plej lastan " +"stabilan version de %s" + +#: ../src/gajim.py:67 +msgid "" +"Please make sure that GTK+ and PyGTK have libglade support in your system." +msgstr "" +"Bonvolu kontroli ke GTK+ kaj PyGTK en via sistemo subtenas libraron libglade." + +#: ../src/gajim.py:72 +msgid "Gajim needs PySQLite2 to run" +msgstr "Gajim bezonas PySqlITE2 por funkcii" + +#: ../src/gajim.py:150 +msgid "Gajim is already running" +msgstr "Gajim jam estas lanĉita" + +#: ../src/gajim.py:151 +#, python-format +msgid "" +"Exit the already running Gajim, or delete pid file:\n" +" \"%s\".\n" +" Quiting..." +msgstr "" +"Finu la jam aktivan Gajim, aÅ­ forigu pid dosieron:\n" +" \"%s\".\n" +" Fino..." + +#: ../src/gajim.py:265 +#, python-format +msgid "HTTP (%s) Authorization for %s (id: %s)" +msgstr "HTTP (%s) AÅ­tentokontrolo por %s (id: %s)" + +#: ../src/gajim.py:266 +msgid "Do you accept this request?" +msgstr "Ĉu vi akceptas tiun peton?" + +#: ../src/gajim.py:603 +#, python-format +msgid "error while sending %s ( %s )" +msgstr "eraro dum sendado %s ( %s )" + +#: ../src/gajim.py:643 +msgid "Authorization accepted" +msgstr "Permespeto akceptitas" + +#: ../src/gajim.py:644 +#, python-format +msgid "The contact \"%s\" has authorized you to see his or her status." +msgstr "La kontakto \"%s\" permisas al vi vidi lian aÅ­ Åian staton." + +#: ../src/gajim.py:652 +#, python-format +msgid "Contact \"%s\" removed subscription from you" +msgstr "Kontakto \"%s\" nuligis abonon de vi" + +#: ../src/gajim.py:653 +msgid "You will always see him or her as offline." +msgstr "Vi ĉiam vidos Åin aÅ­ lin senkonekta." + +#: ../src/gajim.py:696 +#, python-format +msgid "Contact with \"%s\" cannot be established" +msgstr "Kontakto kun \"%s\" neestableblas" + +#: ../src/gajim.py:697 ../src/common/connection.py:373 +msgid "Check your connection or try again later." +msgstr "Kontrolu vian konekton aÅ­ provu denove poste." + +#: ../src/gajim.py:841 ../src/roster_window.py:1018 +#, python-format +msgid "%s is now %s (%s)" +msgstr "%s nun estas %s (%s)" + +#: ../src/gajim.py:922 +msgid "Your passphrase is incorrect" +msgstr "Via pasfrazo estas malvalida" + +#: ../src/gajim.py:923 +msgid "You are currently connected without your OpenPGP key." +msgstr "Nun vi estas konekta sen uzado de via OpenPGP-Ålosilo." + +#. FIXME: find a better image +#: ../src/gajim.py:1024 +#, python-format +msgid "New E-mail on %(gmail_mail_address)s" +msgstr "Nova retletero ĉe %(gmail_mail_address)s" + +#: ../src/gajim.py:1026 +#, python-format +msgid "You have %d new E-mail message" +msgid_plural "You have %d new E-mail messages" +msgstr[0] "Vi havas %d novan retleteron" +msgstr[1] "Vi havas %d novajn retleterojn" + +#: ../src/gajim.py:1169 +#, python-format +msgid "%s wants to send you a file." +msgstr "%s volas sendi dosieron al vi." + +#: ../src/gajim.py:1229 +#, python-format +msgid "You successfully received %(filename)s from %(name)s." +msgstr "La dosiero %(filename)s de %(name)s estas sukcese ricevita." + +#. ft stopped +#: ../src/gajim.py:1233 +#, python-format +msgid "File transfer of %(filename)s from %(name)s stopped." +msgstr "Transmeto de dosiero %(filename)s de %(name)s haltitas." + +#: ../src/gajim.py:1246 +#, python-format +msgid "You successfully sent %(filename)s to %(name)s." +msgstr "Vi sukcese sendis %(filename)s al %(name)s." + +#. ft stopped +#: ../src/gajim.py:1250 +#, python-format +msgid "File transfer of %(filename)s to %(name)s stopped." +msgstr "Transmeto de dosiero %(filename)s al %(name)s haltitas." + +#: ../src/gajim.py:1279 +msgid "vCard publication succeeded" +msgstr "Vizitkarto estas sukcese publikita" + +#: ../src/gajim.py:1279 +msgid "Your personal information has been published successfully." +msgstr "Via persona informo estas sukcese publikita." + +#: ../src/gajim.py:1288 +msgid "vCard publication failed" +msgstr "Publikado de vizitkato malsukcesis" + +#: ../src/gajim.py:1288 +msgid "" +"There was an error while publishing your personal information, try again " +"later." +msgstr "Estis eraro dum publikado de persona informo, provu denove pli poste." + +#. it is good to notify the user +#. in case he or she cannot see the output of the console +#: ../src/gajim.py:1636 +msgid "Could not save your settings and preferences" +msgstr "Ne povis konservi vian agordon" + +#: ../src/gajim.py:1856 +msgid "Session Management support not available (missing gnome.ui module)" +msgstr "Subteno de seancagordo nedisponeblas (mankas modulo gnome.ui)" + +#: ../src/gajim.py:1885 +msgid "Migrating Logs..." +msgstr "Portas protokolojn..." + +#: ../src/gajim.py:1886 +msgid "Please wait while logs are being migrated..." +msgstr "Bonvolu atendi dum protokoloj estas portata..." + +#: ../src/gajim_themes_window.py:65 +msgid "Theme" +msgstr "Etoso" + +#. don't confuse translators +#: ../src/gajim_themes_window.py:147 +msgid "theme name" +msgstr "Etosa nomo" + +#: ../src/gajim_themes_window.py:164 +msgid "You cannot delete your current theme" +msgstr "Vi ne povas forigi aktivan etoson" + +#: ../src/gajim_themes_window.py:165 +msgid "Please first choose another for your current theme." +msgstr "Bonvolu komence aktivigi alian etoson." + +#: ../src/groupchat_control.py:108 +msgid "Private Chat" +msgstr "Privata interparolo" + +#: ../src/groupchat_control.py:108 +msgid "Private Chats" +msgstr "Privataj interparoloj" + +#: ../src/groupchat_control.py:124 +msgid "Sending private message failed" +msgstr "Sendado de privata mesaÄo malsukcesis" + +#. in second %s code replaces with nickname +#: ../src/groupchat_control.py:126 +#, python-format +msgid "You are no longer in room \"%s\" or \"%s\" has left." +msgstr "Vi ne plu ĉeestas en babilejo \"%s\" aÅ­ \"%s\" foriris." + +#: ../src/groupchat_control.py:138 +msgid "Group Chat" +msgstr "Babilejo" + +#: ../src/groupchat_control.py:138 +msgid "Group Chats" +msgstr "Babilejoj" + +#: ../src/groupchat_control.py:317 +msgid "Insert Nickname" +msgstr "Enmeti kaÅnomon" + +#: ../src/groupchat_control.py:696 +msgid "This room has no subject" +msgstr "Tiu ĉi babilejo ne havas temon" + +#. do not print 'kicked by None' +#: ../src/groupchat_control.py:795 +#, python-format +msgid "%(nick)s has been kicked: %(reason)s" +msgstr "%(nick)s estas elpelita: %(reason)s" + +#: ../src/groupchat_control.py:799 +#, python-format +msgid "%(nick)s has been kicked by %(who)s: %(reason)s" +msgstr "%(nick)s estas elpelita de %(who)s: %(reason)s" + +#. do not print 'banned by None' +#: ../src/groupchat_control.py:806 +#, python-format +msgid "%(nick)s has been banned: %(reason)s" +msgstr "AliÄo de %(nick)s nun estas malpermesa: %(reason)s" + +#: ../src/groupchat_control.py:810 +#, python-format +msgid "%(nick)s has been banned by %(who)s: %(reason)s" +msgstr "AliÄo de %(nick)s estas malpermisita de %(who)s: %(reason)s" + +#: ../src/groupchat_control.py:818 +#, python-format +msgid "You are now known as %s" +msgstr "Vi nomiÄas %s" + +#: ../src/groupchat_control.py:820 +#, python-format +msgid "%s is now known as %s" +msgstr "%s nomiÄas %s" + +#: ../src/groupchat_control.py:891 +#, python-format +msgid "%s has left" +msgstr "%s foriris" + +#: ../src/groupchat_control.py:896 +#, python-format +msgid "%s has joined the room" +msgstr "%s aliÄis al la babilejo" + +#. No status message +#: ../src/groupchat_control.py:898 ../src/roster_window.py:1021 +#, python-format +msgid "%s is now %s" +msgstr "%s nun estas %s" + +#: ../src/groupchat_control.py:1011 ../src/groupchat_control.py:1028 +#: ../src/groupchat_control.py:1121 ../src/groupchat_control.py:1137 +#, python-format +msgid "Nickname not found: %s" +msgstr "KaÅnomo ne trovitas: %s" + +#: ../src/groupchat_control.py:1055 +#, python-format +msgid "Invited %(contact_jid)s to %(room_jid)s." +msgstr "%(contact_jid)s invitas al %(room_jid)s." + +#. %s is something the user wrote but it is not a jid so we inform +#: ../src/groupchat_control.py:1062 ../src/groupchat_control.py:1092 +#, python-format +msgid "%s does not appear to be a valid JID" +msgstr "Tio ne estas valida JID: %s" + +#: ../src/groupchat_control.py:1159 +#, python-format +msgid "No such command: /%s (if you want to send this, prefix it with /say)" +msgstr "Ne estas tiu komando: /%s (se vi volas sendi tio, metu /say antaÅ­en)" + +#: ../src/groupchat_control.py:1181 +#, python-format +msgid "Commands: %s" +msgstr "Komandoj: %s" + +#: ../src/groupchat_control.py:1183 +#, python-format +msgid "" +"Usage: /%s [reason], bans the JID from the room. The nickname " +"of an occupant may be substituted, but not if it contains \"@\". If the JID " +"is currently in the room, he/she/it will also be kicked. Does NOT support " +"spaces in nickname." +msgstr "" +"Uzado: /%s [kialo], malpermesas, ke la JID aliÄi al la " +"babilejo. Eblas uzi la kaÅnomon de uzulo, sed ne se Äi entenas \"@\" aÅ­ " +"spaceton. Se la JID ĉeestas en la babilejo, tiu estos ankaÅ­ elpelita." + +#: ../src/groupchat_control.py:1189 +#, python-format +msgid "" +"Usage: /%s , opens a private chat window to the specified occupant." +msgstr "" +"Uzado: /%s , - malfermas privatan interparolan fenestron por " +"specifita persono." + +#: ../src/groupchat_control.py:1193 +#, python-format +msgid "Usage: /%s, clears the text window." +msgstr "Uzado: /%s, - malplenigas la tekstan fenestron." + +#: ../src/groupchat_control.py:1195 +#, python-format +msgid "" +"Usage: /%s [reason], closes the current window or tab, displaying reason if " +"specified." +msgstr "" +"Uzado: /%s [kialo], - fermas la nuntempan fenestron aÅ­ slipon, informe pri " +"kialo se specifita." + +#: ../src/groupchat_control.py:1198 +#, python-format +msgid "Usage: /%s, hide the chat buttons." +msgstr "Uzado: /%s, - kaÅas la babiladajn butonojn." + +#: ../src/groupchat_control.py:1200 +#, python-format +msgid "" +"Usage: /%s [reason], invites JID to the current room, optionally " +"providing a reason." +msgstr "" +"Uzado: /%s [kialo], - invitas JID al la nuntempa babilejo, fakultative " +"informante pri kialo." + +#: ../src/groupchat_control.py:1204 +#, python-format +msgid "" +"Usage: /%s @[/nickname], offers to join room@server optionally " +"using specified nickname." +msgstr "" +"Uzado: /%s @[/kaÅnomo], - aliÄas al room@server " +"fakultative uze specifitan kaÅnomon." + +#: ../src/groupchat_control.py:1208 +#, python-format +msgid "" +"Usage: /%s [reason], removes the occupant specified by nickname " +"from the room and optionally displays a reason. Does NOT support spaces in " +"nickname." +msgstr "" +"Uzado: /%s [kialo], - forigas la uzulon spcifitan per kaÅnomo el " +"la babilejo kaj fakultative montras kialon. NE SUBTENAS spacetojn en kaÅnomo." + +#: ../src/groupchat_control.py:1213 +#, python-format +msgid "" +"Usage: /%s , sends action to the current room. Use third person. (e." +"g. /%s explodes.)" +msgstr "" +"Uzado: /%s , sendas agon en aktualan babilejon (ekzemple /%s eksplodas)." + +#: ../src/groupchat_control.py:1217 +#, python-format +msgid "" +"Usage: /%s [message], opens a private message windowand sends " +"message to the occupant specified by nickname." +msgstr "" +"Uzado: /%s [mesaÄo], malfermas privatan mesaÄan fenestron kaj " +"sendas mesaÄon al la uzulo specifita per kaÅnomo." + +#: ../src/groupchat_control.py:1222 +#, python-format +msgid "Usage: /%s , changes your nickname in current room." +msgstr "Uzado: /%s , ÅanÄas vian kaÅnomon en nuntempa babilejo." + +#: ../src/groupchat_control.py:1226 +#, python-format +msgid "Usage: /%s [topic], displays or updates the current room topic." +msgstr "Uzado: /%s [temo], - eligas aÅ­ novigas la nuntempan babilejan temon." + +#: ../src/groupchat_control.py:1229 +#, python-format +msgid "" +"Usage: /%s , sends a message without looking for other commands." +msgstr "" +"Uzado: /%s , - sendas mesaÄon preter rekonado de aliaj komandoj." + +#: ../src/groupchat_control.py:1232 +#, python-format +msgid "No help info for /%s" +msgstr "helpinformo mankas por /%s" + +#: ../src/groupchat_control.py:1274 +#, python-format +msgid "Are you sure you want to leave room \"%s\"?" +msgstr "ĉu vi certe volas foriri el babilejo \"%s\"?" + +#: ../src/groupchat_control.py:1275 +msgid "If you close this window, you will be disconnected from this room." +msgstr "Se vi fermos tiu fenestron, vi senkonektiÄos de tiu babilejo." + +#: ../src/groupchat_control.py:1279 +msgid "Do _not ask me again" +msgstr "_Ne plu demandi" + +#: ../src/groupchat_control.py:1313 +msgid "Changing Subject" +msgstr "Korektas temon" + +#: ../src/groupchat_control.py:1314 +msgid "Please specify the new subject:" +msgstr "Bonvolu enigi novan temon:" + +#: ../src/groupchat_control.py:1322 +msgid "Changing Nickname" +msgstr "ÅœanÄas kaÅnomon" + +#: ../src/groupchat_control.py:1323 +msgid "Please specify the new nickname you want to use:" +msgstr "Bonvolu enigi la novan kaÅnomon, kiun vi volas uzi:" + +#: ../src/groupchat_control.py:1349 +msgid "Bookmark already set" +msgstr "Legosigno jam estas metita" + +#: ../src/groupchat_control.py:1350 +#, python-format +msgid "Room \"%s\" is already in your bookmarks." +msgstr "Babilejo \"%s\" jam estas en viajn legosignojn." + +#: ../src/groupchat_control.py:1359 +msgid "Bookmark has been added successfully" +msgstr "Legosigno sukcese aligitas" + +#: ../src/groupchat_control.py:1360 +msgid "You can manage your bookmarks via Actions menu in your roster." +msgstr "" +"Vi povas aranÄi viajn legosignojn per menuero \"Agoj\" en la kontaktlisto." + +#. ask for reason +#: ../src/groupchat_control.py:1470 +#, python-format +msgid "Kicking %s" +msgstr "Elpelatas %s" + +#: ../src/groupchat_control.py:1471 ../src/groupchat_control.py:1749 +msgid "You may specify a reason below:" +msgstr "Vi devas specifi kialon sube:" + +#. ask for reason +#: ../src/groupchat_control.py:1748 +#, python-format +msgid "Banning %s" +msgstr "Malpermesas %s" + +#: ../src/gtkexcepthook.py:53 +msgid "A programming error has been detected" +msgstr "Programa eraro estas detektita" + +#: ../src/gtkexcepthook.py:54 +msgid "" +"It probably is not fatal, but should be reported to the developers " +"nonetheless." +msgstr "Tio eble ne estas fatala, sed malgraÅ­ raportinda al la programistoj." + +#: ../src/gtkexcepthook.py:60 +msgid "_Report Bug" +msgstr "_Raporti pri eraro" + +#: ../src/gtkexcepthook.py:83 +msgid "Details" +msgstr "Detalaĵoj" + +#. we talk about file +#: ../src/gtkgui_helpers.py:152 ../src/gtkgui_helpers.py:167 +#, python-format +msgid "Error: cannot open %s for reading" +msgstr "Eraro: ne povas malfermi %s por legi" + +#: ../src/gtkgui_helpers.py:296 +msgid "Error reading file:" +msgstr "Eraro dum legado de dosiero:" + +#: ../src/gtkgui_helpers.py:299 +msgid "Error parsing file:" +msgstr "Eraro dum dosieranalizo:" + +#. do not traceback (could be a permission problem) +#. we talk about a file here +#: ../src/gtkgui_helpers.py:337 +#, python-format +msgid "Could not write to %s. Session Management support will not work" +msgstr "Ne povas skribi en %s. Subteno de seancagordo ne funkcios" + +#: ../src/gtkgui_helpers.py:715 +msgid "Extension not supported" +msgstr "Kromaĵo ne subtenatas" + +#: ../src/gtkgui_helpers.py:716 +#, python-format +msgid "Image cannot be saved in %(type)s format. Save as %(new_filename)s?" +msgstr "" +"Bildo nekonserveblas en %(type)s formato. Ĉu konservi kiel %(new_filename)s?" + +#: ../src/gtkgui_helpers.py:725 +msgid "Save Image as..." +msgstr "Konservi bildon kiel..." + +#: ../src/history_manager.py:65 +msgid "Cannot find history logs database" +msgstr "Ne povas trovi datumbazon de protokoloj" + +#. holds jid +#: ../src/history_manager.py:108 +msgid "Contacts" +msgstr "Kontaktoj" + +#. holds time +#: ../src/history_manager.py:121 ../src/history_manager.py:161 +#: ../src/history_window.py:92 +msgid "Date" +msgstr "Dato" + +#. holds nickname +#: ../src/history_manager.py:127 ../src/history_manager.py:179 +msgid "Nickname" +msgstr "KaÅnomo" + +#. holds message +#: ../src/history_manager.py:135 ../src/history_manager.py:167 +#: ../src/history_window.py:100 +msgid "Message" +msgstr "MesaÄo" + +#. holds subject +#: ../src/history_manager.py:142 ../src/history_manager.py:173 +msgid "Subject" +msgstr "Temo" + +#: ../src/history_manager.py:187 +msgid "" +"Do you want to clean up the database? (STRONGLY NOT RECOMMENDED IF GAJIM IS " +"RUNNING)" +msgstr "" +"Ĉu vi volas malplenigi la datumbazon? (EGE MALREKOMENDITA SE GAJIM AKTIVAS)" + +#: ../src/history_manager.py:189 +msgid "" +"Normally allocated database size will not be freed, it will just become " +"reusable. If you really want to reduce database filesize, click YES, else " +"click NO.\n" +"\n" +"In case you click YES, please wait..." +msgstr "" +"Kutime dosierspaco de datumbazo ne liberigatas, Äi nur iÄas reuzebla. Se vi " +"vere volas malgrandigi datumbazan dosierspacon, alklaku JES, alie alklaku " +"NE.\n" +"\n" +"Se vi alklakos JES, bonbolu atendi..." + +#: ../src/history_manager.py:395 +msgid "Exporting History Logs..." +msgstr "Eksportas protokolojn..." + +#: ../src/history_manager.py:471 +#, python-format +msgid "%(who)s on %(time)s said: %(message)s\n" +msgstr "%(who)s je %(time)s diris: %(message)s\n" + +#: ../src/history_manager.py:471 +msgid "who" +msgstr "kiu" + +#: ../src/history_manager.py:509 +#, fuzzy +msgid "Do you really want to delete logs of the selected contact?" +msgid_plural "Do you really want to delete logs of the selected contacts?" +msgstr[0] "Ĉu vi vere volas forigi protokolojn de elektita kontakto?" +msgstr[1] "Ĉu vi vere volas forigi protokolojn de elektita kontakto?" + +#: ../src/history_manager.py:513 ../src/history_manager.py:549 +msgid "This is an irreversible operation." +msgstr "Tio ĉi estas neinversebla ago." + +#: ../src/history_manager.py:546 +msgid "Do you really want to delete the selected message?" +msgid_plural "Do you really want to delete the selected messages?" +msgstr[0] "Ĉu vi efektive volas forigi la elektitan mesaÄon?" +msgstr[1] "Ĉu vi efektive volas forigi la elektitajn mesaÄojn?" + +#: ../src/history_window.py:109 ../src/history_window.py:111 +#, python-format +msgid "Conversation History with %s" +msgstr "Historio de interparolo kun %s" + +#: ../src/history_window.py:265 +#, python-format +msgid "%(nick)s is now %(status)s: %(status_msg)s" +msgstr "%(nick)s nun estas %(status)s: %(status_msg)s" + +#: ../src/history_window.py:269 ../src/notify.py:109 +#, python-format +msgid "%(nick)s is now %(status)s" +msgstr "%(nick)s nun estas %(status)s" + +#: ../src/history_window.py:275 +#, python-format +msgid "Status is now: %(status)s: %(status_msg)s" +msgstr "Stato nun estas: %(status)s: %(status_msg)s" + +#: ../src/history_window.py:278 +#, python-format +msgid "Status is now: %(status)s" +msgstr "Stato nun estas: %(status)s" + +#: ../src/message_window.py:251 +msgid "Messages" +msgstr "MesaÄoj" + +#: ../src/message_window.py:252 +#, python-format +msgid "%s - Gajim" +msgstr "%s - Gajim" + +#: ../src/notify.py:107 +#, python-format +msgid "%(nick)s Changed Status" +msgstr "%(nick)s ÅanÄis staton" + +#: ../src/notify.py:117 +#, python-format +msgid "%(nickname)s Signed In" +msgstr "%(nickname)s ensalutis" + +#: ../src/notify.py:125 +#, python-format +msgid "%(nickname)s Signed Out" +msgstr "%(nickname)s elsalutis" + +#: ../src/notify.py:137 +#, python-format +msgid "New Single Message from %(nickname)s" +msgstr "Nova unuopa mesaÄo de %(nickname)s" + +#: ../src/notify.py:146 +#, python-format +msgid "New Private Message from room %s" +msgstr "Nova privata mesaÄo de babilejo %s" + +#: ../src/notify.py:147 +#, python-format +msgid "%(nickname)s: %(message)s" +msgstr "%(nickname)s: %(message)s" + +#: ../src/notify.py:153 +#, python-format +msgid "New Message from %(nickname)s" +msgstr "Nova mesaÄo de %(nickname)s" + +#: ../src/roster_window.py:138 +msgid "Merged accounts" +msgstr "Unuigaj kontoj" + +#: ../src/roster_window.py:295 ../src/common/helpers.py:41 +msgid "Observers" +msgstr "Rigardiloj" + +#: ../src/roster_window.py:548 +#, python-format +msgid "You are already in room %s" +msgstr "Vi jam estas en babilejo %s" + +#: ../src/roster_window.py:552 ../src/roster_window.py:2251 +msgid "You cannot join a room while you are invisible" +msgstr "Vi ne povas aliÄi al babilejo dum vi estas nevidebla" + +#. the 'manage gc bookmarks' item is showed +#. below to avoid duplicate code +#. add +#: ../src/roster_window.py:741 +#, python-format +msgid "to %s account" +msgstr "al konto %s" + +#. disco +#: ../src/roster_window.py:748 +#, python-format +msgid "using %s account" +msgstr "per konto %s" + +#. new chat +#. for chat_with +#. for single message +#: ../src/roster_window.py:756 ../src/systray.py:200 ../src/systray.py:205 +#, python-format +msgid "using account %s" +msgstr "per konto %s" + +#. profile, avatar +#: ../src/roster_window.py:765 +#, python-format +msgid "of account %s" +msgstr "de konto %s" + +#: ../src/roster_window.py:824 +msgid "Manage Bookmarks..." +msgstr "AranÄi legosignojn..." + +#: ../src/roster_window.py:848 +#, python-format +msgid "for account %s" +msgstr "por konto %s" + +#. History manager +#: ../src/roster_window.py:869 +msgid "History Manager" +msgstr "Historia administrilo" + +#: ../src/roster_window.py:878 +msgid "_Join New Room" +msgstr "_AliÄi al nova babilejo" + +#: ../src/roster_window.py:1152 +#, python-format +msgid "Transport \"%s\" will be removed" +msgstr "Transportilo \"%s\" estos forigita" + +#: ../src/roster_window.py:1152 +msgid "" +"You will no longer be able to send and receive messages to contacts from " +"this transport." +msgstr "" +"Vi ne plu eblos sendi kaj ricevi mesaÄojn kun kontaktoj el tiu ĉi " +"transportilo." + +#: ../src/roster_window.py:1194 +msgid "Assign OpenPGP Key" +msgstr "Atribui OpenPGP-Ålosilon" + +#: ../src/roster_window.py:1195 +msgid "Select a key to apply to the contact" +msgstr "Elektu Ålosilon por atribui al la kontakto" + +#: ../src/roster_window.py:1351 +msgid "I would like to add you to my roster" +msgstr "Mi volus aligi vin en mian kontaktliston" + +#: ../src/roster_window.py:1403 +msgid "Re_name" +msgstr "Re_nomigi" + +#: ../src/roster_window.py:1434 +msgid "_Log on" +msgstr "E_nsaluti" + +#: ../src/roster_window.py:1443 +msgid "Log _off" +msgstr "E_lsaluti" + +#: ../src/roster_window.py:1538 +msgid "_Change Status Message" +msgstr "ÅœanÄi _statmesaÄon" + +#: ../src/roster_window.py:1614 +msgid "Authorization has been sent" +msgstr "Permeso estas sendita" + +#: ../src/roster_window.py:1615 +#, python-format +msgid "Now \"%s\" will know your status." +msgstr "Ekde nun \"%s\" konos vian staton." + +#: ../src/roster_window.py:1639 +msgid "Subscription request has been sent" +msgstr "Demando pri abono estas sendita" + +#: ../src/roster_window.py:1640 +#, python-format +msgid "If \"%s\" accepts this request you will know his or her status." +msgstr "Se \"%s\" akceptas tiun peton vi povos koni lian aÅ­ Åian staton." + +#: ../src/roster_window.py:1651 +msgid "Authorization has been removed" +msgstr "Permeso estas forigita" + +#: ../src/roster_window.py:1652 +#, python-format +msgid "Now \"%s\" will always see you as offline." +msgstr "Ekde nun \"%s\" ĉiam vidos vin kiel senkonekta." + +#: ../src/roster_window.py:1803 +#, python-format +msgid "Contact \"%s\" will be removed from your roster" +msgstr "Kontakto \"%s\" estos forigita el via kontaktlisto" + +#: ../src/roster_window.py:1807 +msgid "" +"By removing this contact you also remove authorization resulting in him or " +"her always seeing you as offline." +msgstr "" +"Forigante tiun kontakton vi forigas ankaÅ­ permison, rezulte Åi aÅ­ li ĉiam " +"vidos vin kiel senkonekta." + +#: ../src/roster_window.py:1811 +msgid "" +"By removing this contact you also by default remove authorization resulting " +"in him or her always seeing you as offline." +msgstr "" +"Forigante tiu ĉi konton vi defaÅ­lte ankaÅ­ forigas permeson pro kio li aÅ­ Åi " +"ĉiamvidos vin senkonekta." + +#: ../src/roster_window.py:1812 +msgid "I want this contact to know my status after removal" +msgstr "Permesi al tiu ĉi konto koni mian staton post forigado" + +#: ../src/roster_window.py:1880 +msgid "Passphrase Required" +msgstr "Pasfrazo necesas" + +#: ../src/roster_window.py:1881 +#, python-format +msgid "Enter GPG key passphrase for account %s." +msgstr "Enigi GPG-Ålosilan pasfrazon por konto %s." + +#: ../src/roster_window.py:1886 +msgid "Save passphrase" +msgstr "Jonservi pasfrazon" + +#: ../src/roster_window.py:1894 +msgid "Wrong Passphrase" +msgstr "Malprava pasfrazo" + +#: ../src/roster_window.py:1895 +msgid "Please retype your GPG passphrase or press Cancel." +msgstr "Bonvolu ripeti vian GPG-pasvorton aÅ­ klaku Nuligi." + +#: ../src/roster_window.py:1944 ../src/roster_window.py:2001 +msgid "You are participating in one or more group chats" +msgstr "Vi partoprenas en unu aÅ­ kelkaj babilejoj" + +#: ../src/roster_window.py:1945 ../src/roster_window.py:2002 +msgid "" +"Changing your status to invisible will result in disconnection from those " +"group chats. Are you sure you want to go invisible?" +msgstr "" +"ÅœanÄo de via stato per nevidebla okazigos diskonektadon de tiuj babilejoj. " +"Ĉu vi certas ke vi volas iÄi nevidebla?" + +#: ../src/roster_window.py:1961 +msgid "No account available" +msgstr "Neniu konto disponeblas" + +#: ../src/roster_window.py:1962 +msgid "You must create an account before you can chat with other contacts." +msgstr "Vi devas krei konton antaÅ­ vi povos paroli kun aliaj kontaktoj." + +#: ../src/roster_window.py:2419 ../src/roster_window.py:2425 +msgid "You have unread messages" +msgstr "Vi havas nelegitajn mesaÄojn" + +#: ../src/roster_window.py:2420 ../src/roster_window.py:2426 +msgid "" +"Messages will only be available for reading them later if you have history " +"enabled." +msgstr "MesaÄoj disponeblos por legi Äin poste nur se vi Åaltis historion." + +#: ../src/roster_window.py:3189 +#, python-format +msgid "Drop %s in group %s" +msgstr "Forigi %s en grupo %s" + +#: ../src/roster_window.py:3198 +#, python-format +msgid "Make %s and %s metacontacts" +msgstr "Igi %s kaj %s metakontaktoj" + +#. source and dest account are not the same, disable meta +#: ../src/roster_window.py:3206 +msgid "Can't create a metacontact with contacts from two different accounts" +msgstr "Neeblas krei metakontakton kun kontaktoj el du diversaj kontoj" + +#: ../src/roster_window.py:3369 +msgid "Change Status Message..." +msgstr "ÅœanÄi statmesaÄon..." + +#: ../src/systray.py:161 +msgid "_Change Status Message..." +msgstr "ÅœanÄi _statmesaÄon..." + +#: ../src/systray.py:238 +msgid "Hide this menu" +msgstr "KaÅi tiu ĉi menuo" + +#: ../src/systraywin32.py:265 ../src/systraywin32.py:284 +#, python-format +msgid "Gajim - %d unread message" +msgid_plural "Gajim - %d unread messages" +msgstr[0] "Gajim - %d nelegita mesaÄo" +msgstr[1] "Gajim - %d nelegitaj mesaÄoj" + +#: ../src/tooltips.py:329 +#, python-format +msgid " %d unread message" +msgid_plural " %d unread messages" +msgstr[0] " %d nelegita mesaÄo" +msgstr[1] " %d nelegitaj mesaÄoj" + +#: ../src/tooltips.py:335 +#, python-format +msgid " %d unread single message" +msgid_plural " %d unread single messages" +msgstr[0] " %d nelegita unuopa mesaÄo" +msgstr[1] " %d nelegitaj unuopaj mesaÄoj" + +#: ../src/tooltips.py:341 +#, python-format +msgid " %d unread group chat message" +msgid_plural " %d unread group chat messages" +msgstr[0] " %d nelegita babileja mesaÄo" +msgstr[1] " %d nelegitaj babilejaj mesaÄoj" + +#: ../src/tooltips.py:347 +#, python-format +msgid " %d unread private message" +msgid_plural " %d unread private messages" +msgstr[0] " %d nelegita privata mesaÄo" +msgstr[1] "%d nelegitaj privataj mesaÄoj" + +#: ../src/tooltips.py:362 ../src/tooltips.py:364 +#, python-format +msgid "Gajim - %s" +msgstr "Gajim - %s" + +#: ../src/tooltips.py:397 +msgid "Role: " +msgstr "Rolo: " + +#: ../src/tooltips.py:398 +msgid "Affiliation: " +msgstr "Aro: " + +#: ../src/tooltips.py:400 ../src/tooltips.py:539 +msgid "Resource: " +msgstr "Risurco: " + +#: ../src/tooltips.py:409 ../src/tooltips.py:542 ../src/tooltips.py:567 +#: ../src/tooltips.py:678 +msgid "Status: " +msgstr "Stato: " + +#: ../src/tooltips.py:516 +msgid "Subscription: " +msgstr "Abono: " + +#: ../src/tooltips.py:525 +msgid "OpenPGP: " +msgstr "OpenPGP: " + +#: ../src/tooltips.py:572 +#, python-format +msgid "Last status on %s" +msgstr "Lasta stato de %s" + +#: ../src/tooltips.py:574 +#, python-format +msgid "Since %s" +msgstr "Ekde %s" + +#: ../src/tooltips.py:634 +msgid "Download" +msgstr "ElÅuti" + +#: ../src/tooltips.py:640 +msgid "Upload" +msgstr "AlÅuti" + +#: ../src/tooltips.py:647 +msgid "Type: " +msgstr "Tipo: " + +#: ../src/tooltips.py:653 +msgid "Transferred: " +msgstr "Transmetitas: " + +#: ../src/tooltips.py:656 ../src/tooltips.py:677 +msgid "Not started" +msgstr "Ne lanĉitas" + +#: ../src/tooltips.py:660 +msgid "Stopped" +msgstr "Haltis" + +#: ../src/tooltips.py:662 ../src/tooltips.py:665 +msgid "Completed" +msgstr "Plenumita" + +#. stalled is not paused. it is like 'frozen' it stopped alone +#: ../src/tooltips.py:673 +msgid "Stalled" +msgstr "Malrapidas" + +#: ../src/tooltips.py:675 +msgid "Transferring" +msgstr "Transdonas" + +#: ../src/tooltips.py:707 +msgid "This service has not yet responded with detailed information" +msgstr "Tiu ĉi servo ankoraÅ­ ne respondis kun detala informo" + +#: ../src/tooltips.py:710 +msgid "" +"This service could not respond with detailed information.\n" +"It is most likely legacy or broken" +msgstr "" +"Tiu ĉi servo ne povis respondi per detala informo.\n" +"Äœi verÅajne estas malnova aÅ­ rompita" + +#. keep identation +#: ../src/vcard.py:189 +msgid "Could not load image" +msgstr "Ne povas alÅuti bildon" + +#: ../src/vcard.py:283 +msgid "?Client:Unknown" +msgstr "Nekonata" + +#: ../src/vcard.py:285 +msgid "?OS:Unknown" +msgstr "Nekonata" + +#: ../src/vcard.py:302 +#, python-format +msgid "since %s" +msgstr "ekde %s" + +#: ../src/vcard.py:326 +msgid "" +"This contact is interested in your presence information, but you are not " +"interested in his/her presence" +msgstr "" +"Tiu ĉi kontakto interesiÄas pri via ĉeesta informo, sed vi ne interesiÄas " +"pri Åia/lia ĉeesto" + +#: ../src/vcard.py:328 +msgid "" +"You are interested in the contact's presence information, but he/she is not " +"interested in yours" +msgstr "" +"Vi interesiÄas pri kontakta ĉeesta informo, sed li/Åi ne interesiÄas pri via" + +#: ../src/vcard.py:330 +msgid "You and the contact are interested in each other's presence information" +msgstr "Vi kaj la kontakto ineresiÄas unu pri alia ĉeesta informo" + +#. None +#: ../src/vcard.py:332 +msgid "" +"You are not interested in the contact's presence, and neither he/she is " +"interested in yours" +msgstr "Nek vi nek kontakto ne ineresiÄas unu pri ĉeesto de alia" + +#: ../src/vcard.py:341 +msgid "You are waiting contact's answer about your subscription request" +msgstr "Vi atendas respondon de kontakto pri via abona mendo" + +#: ../src/vcard.py:353 ../src/vcard.py:376 +msgid " resource with priority " +msgstr "Risurco kun prioritato " + +#: ../src/vcard.py:452 +msgid "Without a connection you can not publish your contact information." +msgstr "Senkonekte vi ne povas publikigi vian kontaktan informon." + +#: ../src/vcard.py:484 +msgid "Without a connection, you can not get your contact information." +msgstr "Senkonekte vi ne povas ricevi vian kontaktan informon." + +#: ../src/vcard.py:488 +msgid "Personal details" +msgstr "Persona detalaĵoj" + +#: ../src/common/check_paths.py:39 +msgid "creating logs database" +msgstr "kreatas protokolan datumbazon" + +#: ../src/common/check_paths.py:86 ../src/common/check_paths.py:97 +#: ../src/common/check_paths.py:104 +#, python-format +msgid "%s is file but it should be a directory" +msgstr "%s estas dosiero sed devas esti dosierujo" + +#: ../src/common/check_paths.py:87 ../src/common/check_paths.py:98 +#: ../src/common/check_paths.py:105 ../src/common/check_paths.py:113 +msgid "Gajim will now exit" +msgstr "Gajim fermos tuj" + +#: ../src/common/check_paths.py:112 +#, python-format +msgid "%s is directory but should be file" +msgstr "%s estas dosierujo sed devas esti dosiero" + +#: ../src/common/check_paths.py:128 +#, python-format +msgid "creating %s directory" +msgstr "kreas dosierujon %s" + +#: ../src/common/exceptions.py:35 +msgid "pysqlite2 (aka python-pysqlite2) dependency is missing. Exiting..." +msgstr "pysqlite2 (ankaÅ­ konata kiel python-pysqlite2) mankas. Finas..." + +#: ../src/common/exceptions.py:43 +msgid "Service not available: Gajim is not running, or remote_control is False" +msgstr "" +"Servo nedisponeblas: Gajim ne aktivas, aÅ­ opcio remote_control estas False" + +#: ../src/common/exceptions.py:51 +msgid "D-Bus is not present on this machine or python module is missing" +msgstr "D-BUS aÅ­ konforma pitona modulo mankas ĉe tiu ĉi komputilo." + +#: ../src/common/exceptions.py:59 +msgid "" +"Session bus is not available.\n" +"Try reading http://trac.gajim.org/wiki/GajimDBus" +msgstr "" +"Seancbuso nedisponeblas.\n" +"Provu legi http://trac.gajim.org/wiki/GajimDBus" + +#: ../src/common/config.py:53 +msgid "Use DBus and Notification-Daemon to show notifications" +msgstr "Uzi DBus kaj avizadan demonon por montri avizoj" + +#: ../src/common/config.py:57 +msgid "Time in minutes, after which your status changes to away." +msgstr "Tempo en minutoj, post kiu via stato ÅanÄos al fora." + +#: ../src/common/config.py:58 +msgid "Away as a result of being idle" +msgstr "AÅ­tomate fora" + +#: ../src/common/config.py:60 +msgid "Time in minutes, after which your status changes to not available." +msgstr "Tempo en minutoj, post kiu via stato ÅanÄos al nedosponebla." + +#: ../src/common/config.py:61 +msgid "Not available as a result of being idle" +msgstr "Nedisponebla pro longa senfarado" + +#: ../src/common/config.py:79 +msgid "List (space separated) of rows (accounts and groups) that are collapsed" +msgstr "Listo (spacetseparita) do lineoj (kontoj kaj grupoj) kiuj rulitas" + +#: ../src/common/config.py:85 +msgid "" +"'always' - print time for every message.\n" +"'sometimes' - print time every print_ichat_every_foo_minutes minute.\n" +"'never' - never print time." +msgstr "" +"'always' - eligi tempon por ĉiuj mesaÄo.\n" +"'sometimes' - eligi tempon ĉiun print_ichat_every_foo_minutes minuton.\n" +"'never' - neniam eligi tempon." + +#: ../src/common/config.py:88 +msgid "Treat * / _ pairs as possible formatting characters." +msgstr "Trakti parojn * / _ kiel stiligajn signojn." + +#: ../src/common/config.py:89 +msgid "" +"If True, do not remove */_ . So *abc* will be bold but with * * not removed." +msgstr "" +"Se \"True\", ne forigos */_ . Do *abc* estos dika sed restos kun neforigitaj " +"* *." + +#: ../src/common/config.py:99 +msgid "" +"Character to add after nickname when using nick completion (tab) in group " +"chat" +msgstr "" +"Signo kiu aligatas post kaÅnomo dum uzado de plenumigoklavo (Tab) en babilejo" + +#: ../src/common/config.py:100 +msgid "" +"Character to propose to add after desired nickname when desired nickname is " +"used by someone else in group chat" +msgstr "" +"Signo por aligi post dezirata kaÅnomo kiam iu alia en babilejo jam okupigis " +"tiun kaÅnomon" + +#: ../src/common/config.py:131 +msgid "Add * and [n] in roster title?" +msgstr "Aligi * kaj [n] al kontaktlisto titolo?" + +#: ../src/common/config.py:132 +msgid "" +"How many lines to remember from previous conversation when a chat tab/window " +"is reopened." +msgstr "" +"Kiom da lineoj memori de antaÅ­a komunikado kiam interparola slipo/fenestro " +"malfermas denove." + +#: ../src/common/config.py:133 +msgid "How many minutes should last lines from previous conversation last." +msgstr "Kiom da minutoj devas resti lastaj lineoj de antaÅ­a komunikado." + +#: ../src/common/config.py:134 +msgid "" +"Send message on Ctrl+Enter and with Enter make new line (Mirabilis ICQ " +"Client default behaviour)." +msgstr "" +"Sendi mesaÄon per Ctrl+Enter kaj Enter faras novan lineon (defaÅ­lta " +"kondutmaniero de Mirabilis ICQ Kliento)." + +#: ../src/common/config.py:136 +msgid "How many lines to store for Ctrl+KeyUP." +msgstr "Kiom lineojn savi por Ctrl+KeyUP." + +#: ../src/common/config.py:139 +#, python-format +msgid "" +"Either custom url with %s in it where %s is the word/phrase or 'WIKTIONARY' " +"which means use wiktionary." +msgstr "" +"Enigi propran URL kun %s en Äi, kie %s estos la vorto/frazo, aÅ­ \"WIKTIONARY" +"\" kio signifas uzi wiktionary." + +#: ../src/common/config.py:142 +msgid "If checked, Gajim can be controlled remotely using gajim-remote." +msgstr "Se markitas, oni eblas komandi al Gajim malproksime per gajim-remote." + +#: ../src/common/config.py:145 +msgid "" +"When not printing time for every message (print_time==sometimes), print it " +"every x minutes" +msgstr "" +"Kiam ne eligas tempon por ĉiu mesaÄo (print_time==sometimes), eligi Äin " +"ĉiujn x minutojn" + +#: ../src/common/config.py:146 +msgid "Ask before closing a group chat tab/window." +msgstr "Demandi antaÅ­ fermi babilejan fenestron/slipon." + +#: ../src/common/config.py:147 +msgid "" +"Always ask before closing group chat tab/window in this space separated list " +"of room jids." +msgstr "" +"Ĉiam demandi antaÅ­ fermi slipon/fenestron de babilejo el tiu cpacetdisigita " +"listo de babilejaj JID." + +#: ../src/common/config.py:148 +msgid "" +"Never ask before closing group chat tab/window in this space separated list " +"of room jids." +msgstr "" +"Neniam demandi antaÅ­ fermi babilejan slipon/fenestron el tiu ĉi listo de " +"babilejaj JID separataj per spacetoj." + +#: ../src/common/config.py:151 +msgid "" +"Overrides the host we send for File Transfer in case of address translation/" +"port forwarding." +msgstr "" +"Redifinas la retadreson, kiun ni sendas por dosiertransmeto okaze de " +"adrestradukado." + +#: ../src/common/config.py:153 +msgid "IEC standard says KiB = 1024 bytes, KB = 1000 bytes." +msgstr "IEC normo diras: KiB = 1024 bajtoj, KB = 1000 bajtoj." + +#: ../src/common/config.py:161 +msgid "Show tab when only one conversation?" +msgstr "Montri langeton kiam estas nur unu konversacio?" + +#: ../src/common/config.py:162 +msgid "Show tabbed notebook border in chat windows?" +msgstr "Monti langetan framon en interparolajn fenestrojn?" + +#: ../src/common/config.py:163 +msgid "Show close button in tab?" +msgstr "Montri fermontan butonon en sliplangeto" + +#: ../src/common/config.py:176 +msgid "" +"A semicolon-separated list of words that will be highlighted in multi-user " +"chat." +msgstr "" +"listo de punktokome separataj vortoj, kiuj estos emfazataj en babilejo." + +#: ../src/common/config.py:177 +msgid "" +"If True, quits Gajim when X button of Window Manager is clicked. This " +"setting is taken into account only if trayicon is used." +msgstr "" +"Se \"True\", finas Gajim kiam oni alklakas fenestran sisteman butonon X. " +"Tiun ĉi parametron mi konsideras nur se pleta piktogramo uzatas." + +#: ../src/common/config.py:178 +msgid "If True, Gajim registers for xmpp:// on each startup." +msgstr "Se \"True\", Gajim registros por xmpp:// dum ĉiu lanĉo." + +#: ../src/common/config.py:179 +msgid "" +"If True, Gajim will display an icon on each tab containing unread messages. " +"Depending on the theme, this icon may be animated." +msgstr "" +"Se \"True\", Gajim montros piktogramon sur ĉiuj langeton, kies slipo enhavas " +"nelegintajn mesaÄojn. Depende de etoso tiu piktogramo povas esti animaciata." + +#: ../src/common/config.py:180 +msgid "" +"If True, Gajim will display the status message, if not empty, for every " +"contact under the contact name in roster window" +msgstr "" +"Se estas \"True\", Gajim montros statmesaÄojn, se Äi ne estas malplena, por " +"ĉiu kontakto sub la kontaktnomo en la kontaktlisto kaj en babilejo" + +#: ../src/common/config.py:182 +msgid "" +"If True, Gajim will ask for avatar each contact that did not have an avatar " +"last time or has one cached that is too old." +msgstr "" +"Se \"True\", Gajim demandos pri kaÅbildeto ĉiun kontakton, kiu ne havis Äin " +"lastatempe aÅ­ kies kaÅbildeto estis konservita tro antaÅ­longe." + +#: ../src/common/config.py:183 +msgid "" +"If False, Gajim will no longer print status line in chats when a contact " +"changes his or her status and/or his or her status message." +msgstr "" +"Se \"False\", Gajim ne plu eligos statlineon en interparolaj fenestroj kiam " +"kontakto ÅanÄas lian aÅ­ Åian staton kaj/aÅ­ satmesaÄon." + +#: ../src/common/config.py:184 +msgid "" +"can be \"none\", \"all\" or \"in_and_out\". If \"none\", Gajim will no " +"longer print status line in groupchats when a member changes his or her " +"status and/or his or her status message. If \"all\" Gajim will print all " +"status messages. If \"in_and_out\", gajim will only print FOO enters/leaves " +"room" +msgstr "" +"povas esti \"none\", \"all\" or \"in_and_out\". Se \"none\", Gajim ne plu " +"eligos statlineon en babilejoj kiam membro ÅanÄes lian aÅ­ Åian statmesaÄon. " +"Se \"all\", Gajim eligos ĉiuj statmesaÄoj. Se \"in_and_out\", Gajim eligos " +"nur pri eniroj/eliroj." + +#: ../src/common/config.py:187 +msgid "Don't show avatar for the transport itself." +msgstr "Ne montri kaÅbildeton por transportilo mem." + +#: ../src/common/config.py:189 +msgid "" +"If True and installed GTK+ and PyGTK versions are at least 2.8, make the " +"window flash (the default behaviour in most Window Managers) when holding " +"pending events." +msgstr "" +"Se \"True\" kaj instalitas GTK+ kaj PyGTK versioj almenaÅ­ 2.8, fari la " +"fenestran briladon (la defaÅ­lta konduto de plimulto da fenestragordiloj) " +"kiam estas atendantaj eventoj." + +#: ../src/common/config.py:191 +msgid "" +"Jabberd1.4 does not like sha info when one join a password protected room. " +"Turn this option to False to stop sending sha info in groupchat presences" +msgstr "" +"Jabberd1.4 ne Åatas SHA informon kiam iu konektas al pasvortprotekta " +"babilejo. Valorigu tiun opcion per \"False\" por hati sendadon de SHA " +"informon en babilejo" + +#. always, never, peracct, pertype should not be translated +#: ../src/common/config.py:194 +msgid "" +"Controls the window where new messages are placed.\n" +"'always' - All messages are sent to a single window.\n" +"'never' - All messages get their own window.\n" +"'peracct' - Messages for each account are sent to a specific window.\n" +"'pertype' - Each message type (e.g., chats vs. groupchats) are sent to a " +"specific window. Note, changing this option requires restarting Gajim before " +"the changes will take effect" +msgstr "" +"Administras fenestron kien novaj mesaÄoj metitas:\n" +"'always' - ĉiuj mesaÄoj en unuopan fenestron;\n" +"'never' - ĉiu mesaÄo en lian propran fenestron;\n" +"'peracct' - mesaÄoj de ĉiu konto en apartan fenestron;\n" +"'pertype' - ĉiu mesaÄtipo (ekzemple babileja aÅ­ dupersoninterparola) en " +"apartan fenestron. Rimarku, ÅanÄo de tiu opcio bezonas relanĉon de Gajim " +"antaÅ­ la ÅanÄo efikos" + +#: ../src/common/config.py:195 +msgid "If False, you will no longer see the avatar in the chat window" +msgstr "Se \"False\", vi ne plu vidos la kaÅbildetojn en la babileja fenestro" + +#: ../src/common/config.py:196 +msgid "If True, pressing the escape key closes a tab/window" +msgstr "Se \"True\", premo de la klvo Escape fermas slipon/fenestron" + +#: ../src/common/config.py:197 +msgid "Hides the buttons in group chat window" +msgstr "KaÅas la butonojn en babileja fenestro" + +#: ../src/common/config.py:198 +msgid "Hides the buttons in two persons chat window" +msgstr "KaÅas la butonojn en dupersona interparola fenestro" + +#: ../src/common/config.py:199 +msgid "Hides the banner in a group chat window" +msgstr "KaÅas rubandon en babileja fenestro" + +#: ../src/common/config.py:200 +msgid "Hides the banner in two persons chat window" +msgstr "KaÅas rubandon en dupersona interparola fenestro" + +#: ../src/common/config.py:201 +msgid "Hides the room occupants list in groupchat window" +msgstr "KaÅas la liston de partoprenantoj en la babileja fenestro" + +#: ../src/common/config.py:202 +msgid "Merge consecutive nickname in chat window" +msgstr "Unigi sinsekvajn kaÅnomojn en babilejo" + +#: ../src/common/config.py:203 +msgid "Indentation when using merge consecutive nickame" +msgstr "Alineo kiam uzatas unigo de sinsekvaj kaÅnomoj" + +#. yes, no, ask +#: ../src/common/config.py:236 +msgid "Jabberd2 workaround" +msgstr "Jabberd2 ĉirkaÅ­iro" + +#: ../src/common/config.py:240 +msgid "" +"If checked, Gajim will use your IP and proxies defined in " +"file_transfer_proxies option for file transfer." +msgstr "" +"Se markitas, Gajim uzos vian IP kaj prokurservilojn difinitajn en la opcio " +"file_transfer_proxies por dosiertransmeto." + +#: ../src/common/config.py:296 +msgid "Sleeping" +msgstr "Dormas" + +#: ../src/common/config.py:297 +msgid "Back soon" +msgstr "Revenos baldaÅ­" + +#: ../src/common/config.py:297 +msgid "Back in some minutes." +msgstr "Revenos post kelkaj minutoj." + +#: ../src/common/config.py:298 +msgid "Eating" +msgstr "ManÄas" + +#: ../src/common/config.py:298 +msgid "I'm eating, so leave me a message." +msgstr "Mi manÄas, do restigu mesaÄon por mi." + +#: ../src/common/config.py:299 +msgid "Movie" +msgstr "Kino" + +#: ../src/common/config.py:299 +msgid "I'm watching a movie." +msgstr "Mi spektas filmon." + +#: ../src/common/config.py:300 +msgid "Working" +msgstr "Laboras" + +#: ../src/common/config.py:300 +msgid "I'm working." +msgstr "Mi laboras." + +#: ../src/common/config.py:301 +msgid "Phone" +msgstr "Telefonado" + +#: ../src/common/config.py:301 +msgid "I'm on the phone." +msgstr "Mi telefonas." + +#: ../src/common/config.py:302 +msgid "Out" +msgstr "Eliris" + +#: ../src/common/config.py:302 +msgid "I'm out enjoying life" +msgstr "Mi eliris por amuziÄi" + +#: ../src/common/config.py:311 +msgid "" +"Sound to play when a MUC message contains one of the words in " +"muc_highlight_words, or when a MUC message contains your nickname." +msgstr "" +"Sono por ludi kiam babileja mesaÄo enhavas vorton, listitan en " +"muc_highlight_words, aÅ­ vian kaÅnomon." + +#: ../src/common/config.py:312 +msgid "" +"Sound to play when any MUC message arrives. (This setting is taken into " +"account only if notify_on_all_muc_messages is True)" +msgstr "" +"Sono por ludi kiam ĉiu mesaÄo en babilejo venas. (Tiun ĉi parametron mi " +"konsideras nur se parametro \"notify_on_all_muc_messages\" estas \"True\")" + +#: ../src/common/config.py:320 ../src/common/optparser.py:183 +msgid "green" +msgstr "verda" + +#: ../src/common/config.py:324 ../src/common/optparser.py:169 +msgid "grocery" +msgstr "manÄbutiko" + +#: ../src/common/config.py:328 +msgid "human" +msgstr "homa" + +#: ../src/common/config.py:332 +msgid "marine" +msgstr "mara" + +#: ../src/common/connection.py:175 +#, python-format +msgid "Connection with account \"%s\" has been lost" +msgstr "Konekto kun konto \"%s\" rompiÄis" + +#: ../src/common/connection.py:176 +msgid "To continue sending and receiving messages, you will need to reconnect." +msgstr "Por plu sendi kaj ricevi mesaÄojn, vi necesas rekonekti." + +#: ../src/common/connection.py:188 ../src/common/connection.py:214 +#, python-format +msgid "Transport %s answered wrongly to register request." +msgstr "Transportilo %s respondis malprave al registra peto." + +#. wrong answer +#: ../src/common/connection.py:213 +msgid "Invalid answer" +msgstr "Nekorekta respondo" + +#: ../src/common/connection.py:372 ../src/common/connection.py:408 +#: ../src/common/connection.py:795 +#, python-format +msgid "Could not connect to \"%s\"" +msgstr "Ne povas konekti al \"%s\"" + +#: ../src/common/connection.py:386 +#, python-format +msgid "Connected to server %s:%s with %s" +msgstr "Konektis al servilo %s:%s per %s" + +#: ../src/common/connection.py:409 +msgid "Check your connection or try again later" +msgstr "Kontrolu vian konekton aÅ­ provu denove poste" + +#: ../src/common/connection.py:434 +#, python-format +msgid "Authentication failed with \"%s\"" +msgstr "AÅ­tentokontrolo malsukcesis kun \"%s\"" + +#: ../src/common/connection.py:435 +msgid "Please check your login and password for correctness." +msgstr "Bonvolu kontroli korektecon de viaj salutnomo kaj pasvorto." + +#. We didn't set a passphrase +#: ../src/common/connection.py:511 +msgid "OpenPGP passphrase was not given" +msgstr "OpenPGP-pasfrazo ne estis donita" + +#. %s is the account name here +#: ../src/common/connection.py:513 +#, python-format +msgid "You will be connected to %s without OpenPGP." +msgstr "Vi estos konektita al %s sen OpenPGP." + +#. do not show I'm invisible! +#: ../src/common/connection.py:550 +msgid "invisible" +msgstr "nevidebla" + +#: ../src/common/connection.py:551 +msgid "offline" +msgstr "senkonekta" + +#: ../src/common/connection.py:552 +#, python-format +msgid "I'm %s" +msgstr "Mi estas %s" + +#. we're not english +#: ../src/common/connection.py:637 +msgid "[This message is encrypted]" +msgstr "[Tiu ĉi mesaÄo estas ĉifrita]" + +#: ../src/common/connection.py:680 +#, python-format +msgid "" +"Subject: %s\n" +"%s" +msgstr "" +"Temo: %s\n" +"%s" + +#: ../src/common/connection.py:733 ../src/common/connection_handlers.py:1502 +msgid "I would like to add you to my roster." +msgstr "Mi volus aligi vin al mia kontaktlisto." + +#: ../src/common/connection_handlers.py:51 +msgid "Unable to load idle module" +msgstr "Neeblas Åargi senfaran modulon" + +#: ../src/common/connection_handlers.py:583 +#, python-format +msgid "Registration information for transport %s has not arrived in time" +msgstr "Registrada informo por transportilo %s ne venis Äustatempe" + +#. password required to join +#. we are banned +#. room does not exist +#: ../src/common/connection_handlers.py:1441 +#: ../src/common/connection_handlers.py:1444 +#: ../src/common/connection_handlers.py:1447 +#: ../src/common/connection_handlers.py:1450 +#: ../src/common/connection_handlers.py:1453 +#: ../src/common/connection_handlers.py:1456 +#: ../src/common/connection_handlers.py:1464 +msgid "Unable to join room" +msgstr "Neeblas aliÄi al babilejo" + +#: ../src/common/connection_handlers.py:1442 +msgid "A password is required to join this room." +msgstr "Necesas pasvorto por aliÄi al tiu babilejo." + +#: ../src/common/connection_handlers.py:1445 +msgid "You are banned from this room." +msgstr "Al vi oni malpermesis esti en la babilejo." + +#: ../src/common/connection_handlers.py:1448 +msgid "Such room does not exist." +msgstr "Tiu babilejo ne ekzistas." + +#: ../src/common/connection_handlers.py:1451 +msgid "Room creation is restricted." +msgstr "Babileja kreado limigitas." + +#: ../src/common/connection_handlers.py:1454 +msgid "Your registered nickname must be used." +msgstr "Vi devas uzi vian registritan kaÅnomon" + +#: ../src/common/connection_handlers.py:1457 +msgid "You are not in the members list." +msgstr "Vi ne ĉeestas en membrolisto." + +#: ../src/common/connection_handlers.py:1465 +msgid "" +"Your desired nickname is in use or registered by another occupant.\n" +"Please specify another nickname below:" +msgstr "" +"Via dezirata kaÅnomo estas uzata aÅ­ registrita per alia uzulo.\n" +"Bonvolu specifi alian kaÅnomon jene:" + +#. BE CAREFUL: no con.updateRosterItem() in a callback +#: ../src/common/connection_handlers.py:1510 +#, python-format +msgid "we are now subscribed to %s" +msgstr "nun ni abonas %s" + +#: ../src/common/connection_handlers.py:1512 +#, python-format +msgid "unsubscribe request from %s" +msgstr "ordono pri abona fino de %s" + +#: ../src/common/connection_handlers.py:1514 +#, python-format +msgid "we are now unsubscribed from %s" +msgstr "ni nun ne abonas pri %s" + +#: ../src/common/connection_handlers.py:1671 +#, python-format +msgid "" +"JID %s is not RFC compliant. It will not be added to your roster. Use roster " +"management tools such as http://jru.jabberstudio.org/ to remove it" +msgstr "" +"JID %s ne estas norma laÅ­ la RFC. Äœi ne aligitos al via kontaktlisto. Uzu " +"konaktlistan agordan ilon kiel http://jru.jabberstudio.org/ por forigi Äin" + +#: ../src/common/helpers.py:102 +msgid "Invalid character in username." +msgstr "Malkorekta signo en salutnomo." + +#: ../src/common/helpers.py:107 +msgid "Server address required." +msgstr "Necesas adreso de servilo." + +#: ../src/common/helpers.py:112 +msgid "Invalid character in hostname." +msgstr "Malkorekta signo en servilnomo." + +#: ../src/common/helpers.py:118 +msgid "Invalid character in resource." +msgstr "Malkorekta signo en risurcnomo." + +#. GiB means gibibyte +#: ../src/common/helpers.py:158 +#, python-format +msgid "%s GiB" +msgstr "%s GiB" + +#. GB means gigabyte +#: ../src/common/helpers.py:161 +#, python-format +msgid "%s GB" +msgstr "%s GB" + +#. MiB means mibibyte +#: ../src/common/helpers.py:165 +#, python-format +msgid "%s MiB" +msgstr "%s MiB" + +#. MB means megabyte +#: ../src/common/helpers.py:168 +#, python-format +msgid "%s MB" +msgstr "%s MB" + +#. KiB means kibibyte +#: ../src/common/helpers.py:172 +#, python-format +msgid "%s KiB" +msgstr "%s KiB" + +#. KB means kilo bytes +#: ../src/common/helpers.py:175 +#, python-format +msgid "%s KB" +msgstr "%s KB" + +#. B means bytes +#: ../src/common/helpers.py:178 +#, python-format +msgid "%s B" +msgstr "%s B" + +#: ../src/common/helpers.py:207 +msgid "_Busy" +msgstr "_Okupata" + +#: ../src/common/helpers.py:209 +msgid "Busy" +msgstr "Okupata" + +#: ../src/common/helpers.py:212 +msgid "_Not Available" +msgstr "_Nedisponebla" + +#: ../src/common/helpers.py:214 +msgid "Not Available" +msgstr "Nedisponebla" + +#: ../src/common/helpers.py:217 +msgid "_Free for Chat" +msgstr "_Babilema" + +#: ../src/common/helpers.py:219 +msgid "Free for Chat" +msgstr "Babilema" + +#: ../src/common/helpers.py:222 +msgid "_Available" +msgstr "_Enrete" + +#: ../src/common/helpers.py:224 +msgid "Available" +msgstr "Enrete" + +#: ../src/common/helpers.py:226 +msgid "Connecting" +msgstr "Konektas" + +#: ../src/common/helpers.py:229 +msgid "A_way" +msgstr "_Fora" + +#: ../src/common/helpers.py:231 +msgid "Away" +msgstr "Fora" + +#: ../src/common/helpers.py:234 +msgid "_Offline" +msgstr "_Senkonekta" + +#: ../src/common/helpers.py:236 +msgid "Offline" +msgstr "Senkonekta" + +#: ../src/common/helpers.py:239 +msgid "_Invisible" +msgstr "Ne_videbla" + +#: ../src/common/helpers.py:245 +msgid "?contact has status:Unknown" +msgstr "Nekonata" + +#: ../src/common/helpers.py:247 +msgid "?contact has status:Has errors" +msgstr "Eraroj" + +#: ../src/common/helpers.py:252 +msgid "?Subscription we already have:None" +msgstr "Neniu" + +#: ../src/common/helpers.py:254 +msgid "To" +msgstr "Al" + +#: ../src/common/helpers.py:256 +msgid "From" +msgstr "De" + +#: ../src/common/helpers.py:258 +msgid "Both" +msgstr "AmbaÅ­" + +#: ../src/common/helpers.py:266 +msgid "?Ask (for Subscription):None" +msgstr "Nenion" + +#: ../src/common/helpers.py:268 +msgid "Subscribe" +msgstr "Aboni" + +#: ../src/common/helpers.py:277 +msgid "?Group Chat Contact Role:None" +msgstr "Neniu" + +#: ../src/common/helpers.py:280 +msgid "Moderators" +msgstr "Moderigantoj" + +#: ../src/common/helpers.py:282 +msgid "Moderator" +msgstr "Moderiganto" + +#: ../src/common/helpers.py:285 +msgid "Participants" +msgstr "Partoprenantoj" + +#: ../src/common/helpers.py:287 +msgid "Participant" +msgstr "Partoprenanto" + +#: ../src/common/helpers.py:290 +msgid "Visitors" +msgstr "Vizitantoj" + +#: ../src/common/helpers.py:292 +msgid "Visitor" +msgstr "Vizitanto" + +#: ../src/common/helpers.py:328 +msgid "is paying attention to the conversation" +msgstr "atentas al la komunikado" + +#: ../src/common/helpers.py:330 +msgid "is doing something else" +msgstr "faras ion alian" + +#: ../src/common/helpers.py:332 +msgid "is composing a message..." +msgstr "tajpas mesaÄon..." + +#. paused means he or she was compoing but has stopped for a while +#: ../src/common/helpers.py:335 +msgid "paused composing a message" +msgstr "paÅ­sas tajpi mesaÄon" + +#: ../src/common/helpers.py:337 +msgid "has closed the chat window or tab" +msgstr "fermis la interparolan fenestron aÅ­ slipon" + +#. we talk about a file +#: ../src/common/optparser.py:62 +#, python-format +msgid "error: cannot open %s for reading" +msgstr "eraro: %s nedisponeblas por legi" + +#: ../src/common/optparser.py:169 +msgid "gtk+" +msgstr "gtk+" + +#: ../src/common/optparser.py:178 ../src/common/optparser.py:179 +msgid "cyan" +msgstr "blua" + +#~ msgid "Automatically authorize contact" +#~ msgstr "AÅ­tomate permesi kontakton" + +#~ msgid "Send File" +#~ msgstr "Sendi dosieron" + +#~ msgid "Underline" +#~ msgstr "Substreko" diff --git a/po/es.po b/po/es.po index 69745ee40..82ec8ea51 100644 --- a/po/es.po +++ b/po/es.po @@ -4,12 +4,12 @@ # This file is distributed under the same license as the gajim package. # Automatically generated, 2004. # -#: ../src/gajim-remote.py:204 ../src/gajim-remote.py:211 +#: ../src/gajim-remote.py:218 ../src/gajim-remote.py:225 msgid "" msgstr "" "Project-Id-Version: gajim 2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2006-04-13 12:52+0200\n" +"POT-Creation-Date: 2006-09-03 01:19+0200\n" "PO-Revision-Date: 2005-05-21 20:03+0100\n" "Last-Translator: Membris Khan \n" "Language-Team: none\n" @@ -24,36 +24,2236 @@ msgstr "Un cliente de Jabber en GTK" #: ../gajim.desktop.in.h:2 msgid "Gajim Instant Messenger" -msgstr "" +msgstr "Mensajero Gajim" #: ../gajim.desktop.in.h:3 msgid "Jabber IM Client" msgstr "Cliente de IM Jabber" -#: ../src/advanced.py:71 +#: ../data/glade/account_context_menu.glade.h:1 +#, fuzzy +msgid "Send Single _Message..." +msgstr "Enviar mensaje" + +#: ../data/glade/account_context_menu.glade.h:2 +msgid "_Add Contact..." +msgstr "_Añadir contacto..." + +#: ../data/glade/account_context_menu.glade.h:3 +msgid "_Discover Services..." +msgstr "_Descubrir servicios..." + +#: ../data/glade/account_context_menu.glade.h:4 +#: ../data/glade/roster_window.glade.h:15 +#: ../data/glade/systray_context_menu.glade.h:5 +msgid "_Group Chat" +msgstr "_Grupos de charla" + +#: ../data/glade/account_context_menu.glade.h:5 +msgid "_Modify Account..." +msgstr "_Modificar cuenta..." + +#: ../data/glade/account_context_menu.glade.h:6 +msgid "_Status" +msgstr "_Estado" + +#: ../data/glade/account_creation_wizard_window.glade.h:1 +msgid "" +"Account is being created\n" +"\n" +"Please wait..." +msgstr "" +"Se está creando La cuenta\n" +"\n" +"Por favor espera..." + +#: ../data/glade/account_creation_wizard_window.glade.h:4 +msgid "Please choose one of the options below:" +msgstr "Por favor, elige una de las siguientes opciones:" + +#: ../data/glade/account_creation_wizard_window.glade.h:5 +msgid "Please fill in the data for your new account" +msgstr "Por favor, introduce los datos para tu nueva cuenta" + +#: ../data/glade/account_creation_wizard_window.glade.h:6 +msgid "Click to see features (like MSN, ICQ transports) of jabber servers" +msgstr "" +"Click para ver características (como transportes de MSN e ICQ) de los " +"servidores de Jabber" + +#: ../data/glade/account_creation_wizard_window.glade.h:7 +msgid "Connect when I press Finish" +msgstr "Conectar cuando presione Finalizar" + +#: ../data/glade/account_creation_wizard_window.glade.h:8 +msgid "Gajim: Account Creation Wizard" +msgstr "Gajim: Asistente para crear una cuenta" + +#: ../data/glade/account_creation_wizard_window.glade.h:9 +msgid "I already have an account I want to use" +msgstr "Ya tengo una cuenta y quiero usarla" + +#: ../data/glade/account_creation_wizard_window.glade.h:10 +msgid "I want to _register for a new account" +msgstr "Quiero _registrar una nueva cuenta de Jabber" + +#: ../data/glade/account_creation_wizard_window.glade.h:11 +#: ../data/glade/account_modification_window.glade.h:18 +msgid "If checked, Gajim will remember the password for this account" +msgstr "Si está marcado, Gajim recordará la contraseña para esta cuenta" + +#: ../data/glade/account_creation_wizard_window.glade.h:12 +#: ../data/glade/manage_proxies_window.glade.h:6 +msgid "Pass_word:" +msgstr "_Contraseña: " + +#: ../data/glade/account_creation_wizard_window.glade.h:13 +#: ../data/glade/account_modification_window.glade.h:37 +msgid "Save pass_word" +msgstr "_Guardar contraseña" + +#: ../data/glade/account_creation_wizard_window.glade.h:14 +msgid "Servers Features" +msgstr "Características de los servidores" + +#: ../data/glade/account_creation_wizard_window.glade.h:15 +#, fuzzy +msgid "Set my profile when I connect" +msgstr "Definir un avatar cuando me conecte" + +#: ../data/glade/account_creation_wizard_window.glade.h:16 +msgid "" +"You need to have an account in order to connect\n" +"to the Jabber network." +msgstr "Debes tener una cuenta antes de conectar a la red Jabber" + +#: ../data/glade/account_creation_wizard_window.glade.h:18 +msgid "Your JID:" +msgstr "Tu JID" + +#: ../data/glade/account_creation_wizard_window.glade.h:19 +#: ../data/glade/roster_window.glade.h:10 +msgid "_Advanced" +msgstr "_Avanzado" + +#: ../data/glade/account_creation_wizard_window.glade.h:20 +msgid "_Finish" +msgstr "_Finalizar" + +#: ../data/glade/account_creation_wizard_window.glade.h:21 +#: ../data/glade/manage_proxies_window.glade.h:9 +msgid "_Host:" +msgstr "_Servidor" + +#: ../data/glade/account_creation_wizard_window.glade.h:22 +#: ../data/glade/account_modification_window.glade.h:45 +msgid "_Password:" +msgstr "C_ontraseña:" + +#: ../data/glade/account_creation_wizard_window.glade.h:23 +#: ../data/glade/manage_proxies_window.glade.h:10 +msgid "_Port:" +msgstr "_Puerto:" + +#: ../data/glade/account_creation_wizard_window.glade.h:24 +#, fuzzy +msgid "_Retype Password:" +msgstr "Con_traseña:" + +#: ../data/glade/account_creation_wizard_window.glade.h:25 +msgid "_Server:" +msgstr "_Servidor:" + +#: ../data/glade/account_creation_wizard_window.glade.h:26 +msgid "_Use proxy" +msgstr "_Usar proxy" + +#: ../data/glade/account_creation_wizard_window.glade.h:27 +#: ../data/glade/manage_proxies_window.glade.h:11 +msgid "_Username:" +msgstr "_Nombre" + +#: ../data/glade/account_modification_window.glade.h:1 +#: ../data/glade/preferences_window.glade.h:8 +msgid "Miscellaneous" +msgstr "Miscelánea" + +#: ../data/glade/account_modification_window.glade.h:2 +msgid "OpenPGP" +msgstr "OpenPGP" + +#: ../data/glade/account_modification_window.glade.h:3 +msgid "Personal Information" +msgstr "Información personal" + +#: ../data/glade/account_modification_window.glade.h:4 +msgid "Account" +msgstr "Cuenta" + +#: ../data/glade/account_modification_window.glade.h:5 +msgid "Account Modification" +msgstr "Modificar cuenta" + +#: ../data/glade/account_modification_window.glade.h:6 +msgid "Autoreconnect when connection is lost" +msgstr "Autoreconectar si se pierde la conexión" + +#: ../data/glade/account_modification_window.glade.h:7 +msgid "C_onnect on Gajim startup" +msgstr "C_onectar al inicio de Gajim" + +#: ../data/glade/account_modification_window.glade.h:8 +msgid "Chan_ge Password" +msgstr "Cam_biar contraseña" + +#: ../data/glade/account_modification_window.glade.h:9 +msgid "" +"Check this so Gajim will connect in port 5223 where legacy servers are " +"expected to have SSL capabilities. Note that Gajim uses TLS encryption by " +"default if broadcasted by the server, and with this option enabled TLS will " +"be disabled" +msgstr "" +"Marcando esta opcón, Gajim conectará al puerto 5223 cuando un servidor viejo " +"use SSL. Observa que Gajim usa encripatdo TLS por defecto si estádisponible " +"en el servidor, y que con esta opción se desactiva el TLS" + +#: ../data/glade/account_modification_window.glade.h:10 +msgid "Choose _Key..." +msgstr "Elegir _clave..." + +#: ../data/glade/account_modification_window.glade.h:11 +msgid "Click to change account's password" +msgstr "Click para cambiar la contraseña de la cuenta" + +#: ../data/glade/account_modification_window.glade.h:12 +msgid "Connection" +msgstr "Conexión" + +#: ../data/glade/account_modification_window.glade.h:13 +msgid "Edit Personal Information..." +msgstr "_Editar información personal personales..." + +#: ../data/glade/account_modification_window.glade.h:14 +#: ../data/glade/roster_window.glade.h:5 ../src/notify.py:395 +#: ../src/notify.py:417 ../src/notify.py:429 ../src/tooltips.py:350 +msgid "Gajim" +msgstr "Gajim" + +#: ../data/glade/account_modification_window.glade.h:15 +#: ../data/glade/preferences_window.glade.h:45 +#: ../data/glade/vcard_information_window.glade.h:17 +#: ../src/roster_window.py:299 ../src/roster_window.py:1258 +#: ../src/roster_window.py:1642 +msgid "General" +msgstr "General" + +#: ../data/glade/account_modification_window.glade.h:16 +msgid "Hostname: " +msgstr "Nombre del host:" + +#: ../data/glade/account_modification_window.glade.h:17 +msgid "" +"If checked, Gajim will also broadcast some more IPs except from just your " +"IP, so file transfer has higher chances of working." +msgstr "" + +#: ../data/glade/account_modification_window.glade.h:19 +msgid "" +"If checked, Gajim will send keep-alive packets so it prevents connection " +"timeout which results in disconnection" +msgstr "" +"Si está marcado, Gajim enviará paquetes de mantenimiento de actividad para " +"prevenir que expire la conexión" + +#: ../data/glade/account_modification_window.glade.h:20 +msgid "" +"If checked, Gajim will store the password in ~/.gajim/config with 'read' " +"permission only for you" +msgstr "" +"Si está marcado, Gajim guardará la contraseña en ~/.gajim/config con acceso " +"de lectura sólamente para tí" + +#: ../data/glade/account_modification_window.glade.h:21 +msgid "" +"If checked, Gajim, when launched, will automatically connect to jabber using " +"this account" +msgstr "" +"Si está marcado, Gajim, cuando se inicie, conectará automáticamente a Jabber " +"usando esta cuenta." + +#: ../data/glade/account_modification_window.glade.h:22 +msgid "" +"If checked, any change to the global status (handled by the combobox at the " +"bottom of the roster window) will change the status of this account " +"accordingly" +msgstr "" +"Si está marcado, cualquier cambio al estado global (manejado por el menú " +"desplegable de la parte inferior de la lista de contactos) cambiará el " +"estado de esta cuenta de forma acorde" + +#: ../data/glade/account_modification_window.glade.h:23 +msgid "Information about you, as stored in the server" +msgstr "Información acerca de tí a guardar en el servidor" + +#: ../data/glade/account_modification_window.glade.h:24 +msgid "Manage..." +msgstr "Gestionar..." + +#: ../data/glade/account_modification_window.glade.h:25 ../src/config.py:1515 +msgid "No key selected" +msgstr "Ninguna clave seleccionada" + +#. None means no proxy profile selected +#: ../data/glade/account_modification_window.glade.h:27 ../src/config.py:1112 +#: ../src/config.py:1117 ../src/config.py:1289 ../src/config.py:1573 +#: ../src/config.py:1646 ../src/config.py:2356 +msgid "None" +msgstr "Ninguno" + +#: ../data/glade/account_modification_window.glade.h:28 +msgid "Personal Information" +msgstr "Información personal" + +#: ../data/glade/account_modification_window.glade.h:29 +msgid "Port: " +msgstr "Puerto: " + +#: ../data/glade/account_modification_window.glade.h:30 +msgid "Priori_ty:" +msgstr "Pr_ioridad:" + +#: ../data/glade/account_modification_window.glade.h:31 +msgid "" +"Priority is used in Jabber to determine who gets the events from the jabber " +"server when two or more clients are connected using the same account; The " +"client with the highest priority gets the events" +msgstr "" +"La prioridad es usada por Jabber para determinar quién obtiene los eventos " +"del servidor cuando dos o más clientes están conectados usando la misma " +"cuenta. El cliente con mayor prioridad recibe los eventos." + +#: ../data/glade/account_modification_window.glade.h:32 +msgid "Proxy:" +msgstr "Proxy" + +#: ../data/glade/account_modification_window.glade.h:33 +msgid "Resour_ce: " +msgstr "Re_curso: " + +#: ../data/glade/account_modification_window.glade.h:34 +msgid "" +"Resource is sent to the Jabber server in order to separate the same JID in " +"two or more parts depending on the number of the clients connected in the " +"same server with the same account. So you might be connected in the same " +"account with resource 'Home' and 'Work' at the same time. The resource which " +"has the highest priority will get the events. (see below)" +msgstr "" +"El recurso es enviado al servidor de Jabber para 'separar' el mismo " +"identificador en dos o más partes dependiendo del número de clientes " +"conectados en el mismo servidor con la misma cuenta. Así puedes estar " +"conectado usando la misma cuenta con el recurso 'Casa' o 'Trabajo' al mismo " +"tiempo. El recurso que tenga la prioridad más alta será el que reciba los " +"eventos (mira más abajo)." + +#: ../data/glade/account_modification_window.glade.h:35 +msgid "Save _passphrase (insecure)" +msgstr "Guardar contraseña (inseguro)" + +#: ../data/glade/account_modification_window.glade.h:36 +msgid "Save conversation _logs for all contacts" +msgstr "Grabar conversaciones para todos los contactos" + +#: ../data/glade/account_modification_window.glade.h:38 +msgid "Send keep-alive packets" +msgstr "Enviar paquetes de mantenimiento de actividad" + +#: ../data/glade/account_modification_window.glade.h:39 +msgid "Synch_ronize account status with global status" +msgstr "Sinc_ronizar el estado de la cuenta con el estado global" + +#: ../data/glade/account_modification_window.glade.h:40 +msgid "Use _SSL (legacy)" +msgstr "Usar _SSL (el viejo)" + +#: ../data/glade/account_modification_window.glade.h:41 +msgid "Use custom hostname/port" +msgstr "Usar nombre de host y puerto personalizados" + +#: ../data/glade/account_modification_window.glade.h:42 +#, fuzzy +msgid "Use file transfer proxies" +msgstr "lista de transferencias" + +#: ../data/glade/account_modification_window.glade.h:43 +msgid "_Jabber ID:" +msgstr "ID de _Jabber: " + +#: ../data/glade/account_modification_window.glade.h:44 +msgid "_Name: " +msgstr "_Nombre: " + +#: ../data/glade/accounts_window.glade.h:1 +msgid "Accounts" +msgstr "Cuentas" + +#: ../data/glade/accounts_window.glade.h:2 +msgid "" +"If you have 2 or more accounts and it is checked, Gajim will list all " +"contacts as if you had one account" +msgstr "" +"Si tienes dos o más cuentas y está marcado, Gajim listará todos los " +"contactos de forma mixta" + +#: ../data/glade/accounts_window.glade.h:3 +msgid "_Merge accounts" +msgstr "_Combinar las cuentas" + +#: ../data/glade/accounts_window.glade.h:4 +msgid "_Modify" +msgstr "_Modificar" + +#: ../data/glade/accounts_window.glade.h:5 +#: ../data/glade/remove_account_window.glade.h:4 +msgid "_Remove" +msgstr "_Eliminar" + +#: ../data/glade/add_new_contact_window.glade.h:1 +#, fuzzy +msgid "A_ccount:" +msgstr "Cuentas:" + +#: ../data/glade/add_new_contact_window.glade.h:2 +#, fuzzy +msgid "A_llow this contact to view my status" +msgstr "Permitirle ver mi estado" + +#: ../data/glade/add_new_contact_window.glade.h:3 +msgid "Add New Contact" +msgstr "Añadir un contacto" + +#: ../data/glade/add_new_contact_window.glade.h:4 +msgid "I would like to add you to my contact list." +msgstr "Me gustaría añadirte a mi lista de contactos." + +#: ../data/glade/add_new_contact_window.glade.h:5 +msgid "" +"You have to register to this transport\n" +"to be able to add a contact from this\n" +"protocol. Click on register button to\n" +"proceed." +msgstr "" + +#: ../data/glade/add_new_contact_window.glade.h:9 +msgid "" +"You must be connected to the transport to be able\n" +"to add a contact from this protocol." +msgstr "" + +#: ../data/glade/add_new_contact_window.glade.h:11 +#, fuzzy +msgid "_Group:" +msgstr "Grupo:" + +#: ../data/glade/add_new_contact_window.glade.h:12 +msgid "_Nickname:" +msgstr "_Alias:" + +#: ../data/glade/add_new_contact_window.glade.h:13 +#, fuzzy +msgid "_Protocol:" +msgstr "Protocolo:" + +#: ../data/glade/add_new_contact_window.glade.h:14 +#, fuzzy +msgid "_Register" +msgstr "_Suscribir" + +#: ../data/glade/add_new_contact_window.glade.h:15 +#, fuzzy +msgid "_User ID:" +msgstr "Identificador:" + +#: ../data/glade/advanced_configuration_window.glade.h:1 +msgid "Description" +msgstr "Descripción" + +#: ../data/glade/advanced_configuration_window.glade.h:2 +msgid "NOTE: You should restart gajim for some setting to take effect" +msgstr "" + +#: ../data/glade/advanced_configuration_window.glade.h:3 +msgid "Advanced Configuration Editor" +msgstr "Editor avanzado de configurción" + +#: ../data/glade/advanced_configuration_window.glade.h:4 +msgid "Filter:" +msgstr "Filtro:" + +#: ../data/glade/advanced_menuitem_menu.glade.h:1 +msgid "Delete MOTD" +msgstr "Eliminar MOTD" + +#: ../data/glade/advanced_menuitem_menu.glade.h:2 +msgid "Deletes Message of the Day" +msgstr "Elimiina mensaje del día" + +#: ../data/glade/advanced_menuitem_menu.glade.h:3 +msgid "Sends a message to currently connected users to this server" +msgstr "Envía un mensaje a los usuarios conectados en este momento al servidor" + +#: ../data/glade/advanced_menuitem_menu.glade.h:4 +msgid "Set MOTD" +msgstr "Definir MOTD" + +#: ../data/glade/advanced_menuitem_menu.glade.h:5 +msgid "Sets Message of the Day" +msgstr "Define el mensaje del día" + +#: ../data/glade/advanced_menuitem_menu.glade.h:6 +msgid "Show _XML Console" +msgstr "Mostrar consola _XML" + +#: ../data/glade/advanced_menuitem_menu.glade.h:7 +msgid "Update MOTD" +msgstr "Actualizar MOTD" + +#: ../data/glade/advanced_menuitem_menu.glade.h:8 +msgid "Updates Message of the Day" +msgstr "Actualiza el mensaje del día" + +#: ../data/glade/advanced_menuitem_menu.glade.h:9 +msgid "_Administrator" +msgstr "_Administrador" + +#: ../data/glade/advanced_menuitem_menu.glade.h:10 +msgid "_Privacy Lists" +msgstr "" + +#: ../data/glade/advanced_menuitem_menu.glade.h:11 +msgid "_Send Server Message" +msgstr "_Enviar mensaje de servidor" + +#: ../data/glade/advanced_menuitem_menu.glade.h:12 +msgid "_Send Single Message" +msgstr "_Enviar mensaje" + +#: ../data/glade/advanced_notifications_window.glade.h:1 +msgid " a window/tab opened with that contact " +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:2 +#, fuzzy +msgid "Actions" +msgstr "Programas" + +#: ../data/glade/advanced_notifications_window.glade.h:3 +#, fuzzy +msgid "Conditions" +msgstr "Sonidos" + +#: ../data/glade/advanced_notifications_window.glade.h:4 +#: ../data/glade/preferences_window.glade.h:10 +msgid "Sounds" +msgstr "Sonidos" + +#: ../data/glade/advanced_notifications_window.glade.h:5 +#, fuzzy +msgid "Advanced Actions" +msgstr "Acciones A_vanzadas" + +#: ../data/glade/advanced_notifications_window.glade.h:6 +#, fuzzy +msgid "Advanced Notifications Control" +msgstr "Editor avanzado de configurción" + +#: ../data/glade/advanced_notifications_window.glade.h:7 +#, fuzzy +msgid "All Status " +msgstr "Estado: " + +#: ../data/glade/advanced_notifications_window.glade.h:8 +#: ../src/common/helpers.py:230 +msgid "Away" +msgstr "Ausente" + +#: ../data/glade/advanced_notifications_window.glade.h:9 +#, fuzzy +msgid "Busy " +msgstr "Ocupado" + +#: ../data/glade/advanced_notifications_window.glade.h:10 +msgid "Don't have " +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:11 +msgid "Have " +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:12 +#: ../src/common/helpers.py:240 +msgid "Invisible" +msgstr "Invisible" + +#: ../data/glade/advanced_notifications_window.glade.h:13 +#, fuzzy +msgid "Launch a command" +msgstr "comando" + +#: ../data/glade/advanced_notifications_window.glade.h:14 +#: ../src/common/helpers.py:213 +msgid "Not Available" +msgstr "No disponible" + +#: ../data/glade/advanced_notifications_window.glade.h:15 +#, fuzzy +msgid "Online / Free For Chat" +msgstr "Libre para hablar" + +#: ../data/glade/advanced_notifications_window.glade.h:16 +#, fuzzy +msgid "Play a sound" +msgstr "Reproducir _sonidos" + +#: ../data/glade/advanced_notifications_window.glade.h:17 +msgid "" +"Receive a Message\n" +"Contact Connected\n" +"Contact Disconnected\n" +"Contact Change Status\n" +"Group Chat Message Highlight\n" +"Group Chat Message Received\n" +"File Transfert Resquest\n" +"File Transfert Started\n" +"File Transfert Finished" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:26 +msgid "Some special(s) status..." +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:27 +msgid "When " +msgstr "Cuando" + +#: ../data/glade/advanced_notifications_window.glade.h:28 +msgid "_Activate Windows manager UrgencyHint to make chat taskbar to flash" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:29 +#, fuzzy +msgid "_Disable auto opening chat window" +msgstr "Preguntar antes de cerrar una ventana/petaña de salón de charla." + +#: ../data/glade/advanced_notifications_window.glade.h:30 +msgid "_Disable existing popup window" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:31 +msgid "_Disable existing sound for this event" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:32 +msgid "_Disable showing event in roster" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:33 +msgid "_Disable showing event in systray" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:34 +msgid "_Inform me with a popup window" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:35 +#, fuzzy +msgid "_Open chat window with user" +msgstr "Usar una sola ventana de conversación con pestañas" + +#: ../data/glade/advanced_notifications_window.glade.h:36 +#, fuzzy +msgid "_Show event in roster" +msgstr "Sólo mostrar en la _lista de contactos" + +#: ../data/glade/advanced_notifications_window.glade.h:37 +#, fuzzy +msgid "_Show event in systray" +msgstr "Sólo mostrar en la _lista de contactos" + +#: ../data/glade/advanced_notifications_window.glade.h:38 +msgid "and I " +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:39 +msgid "" +"contact(s)\n" +"group(s)\n" +"everybody" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:42 +#, fuzzy +msgid "for " +msgstr "Puerto: " + +#: ../data/glade/advanced_notifications_window.glade.h:43 +msgid "when I'm " +msgstr "" + +#: ../data/glade/change_password_dialog.glade.h:1 +msgid "Change Password" +msgstr "Cambiar contraseña" + +#: ../data/glade/change_password_dialog.glade.h:2 +msgid "Enter it again for confirmation:" +msgstr "Introdúcela de nuevo para confirmar:" + +#: ../data/glade/change_password_dialog.glade.h:3 +msgid "Enter new password:" +msgstr "Introduce nueva contraseña:" + +#: ../data/glade/change_status_message_dialog.glade.h:1 +#, fuzzy +msgid "Type your new status message" +msgstr "Escribe tu nuevo mensaje de estado:" + +#: ../data/glade/change_status_message_dialog.glade.h:2 +#, fuzzy +msgid "Preset messages:" +msgstr "ensaje de estado" + +#: ../data/glade/change_status_message_dialog.glade.h:3 +#, fuzzy +msgid "Save as Preset..." +msgstr "Guardar archivo como..." + +#: ../data/glade/chat_context_menu.glade.h:1 +msgid "Join _Group Chat" +msgstr "Entrar a un grupo de charla" + +#: ../data/glade/chat_context_menu.glade.h:2 +#: ../data/glade/chat_control_popup_menu.glade.h:4 +#: ../data/glade/gc_occupants_menu.glade.h:2 +#: ../data/glade/roster_contact_context_menu.glade.h:9 +msgid "_Add to Roster" +msgstr "_Añadir a la lista de contactos" + +#: ../data/glade/chat_context_menu.glade.h:3 +msgid "_Copy JID/Email Address" +msgstr "_Copiar la dirección" + +#: ../data/glade/chat_context_menu.glade.h:4 +msgid "_Copy Link Location" +msgstr "_Copiar la dirección del enlace" + +#: ../data/glade/chat_context_menu.glade.h:5 +msgid "_Open Email Composer" +msgstr "_Abrir el compositor de correo" + +#: ../data/glade/chat_context_menu.glade.h:6 +msgid "_Open Link in Browser" +msgstr "_Abrir enlace en navegador" + +#: ../data/glade/chat_context_menu.glade.h:7 +#: ../data/glade/roster_window.glade.h:19 +#: ../data/glade/systray_context_menu.glade.h:6 +msgid "_Start Chat" +msgstr "Iniciar conversación" + +#: ../data/glade/chat_control_popup_menu.glade.h:1 +msgid "Click to see past conversations with this contact" +msgstr "Click para ver anteriores conversaciones con este contacto" + +#: ../data/glade/chat_control_popup_menu.glade.h:2 +#: ../data/glade/roster_contact_context_menu.glade.h:7 +msgid "Send _File" +msgstr "Enviar archivo" + +#: ../data/glade/chat_control_popup_menu.glade.h:3 +msgid "Toggle Open_PGP Encryption" +msgstr "Alternar encriptación OpenPGP" + +#: ../data/glade/chat_control_popup_menu.glade.h:5 +#: ../data/glade/gc_control_popup_menu.glade.h:6 +msgid "_Compact View Alt+C" +msgstr "Vista _compacta Alt+C" + +#: ../data/glade/chat_control_popup_menu.glade.h:6 +#: ../data/glade/gc_control_popup_menu.glade.h:7 +#: ../data/glade/gc_occupants_menu.glade.h:5 +#: ../data/glade/roster_contact_context_menu.glade.h:12 +msgid "_History" +msgstr "_Histórico" + +#: ../data/glade/data_form_window.glade.h:1 +msgid "Room Configuration" +msgstr "Configuración del salón" + +#: ../data/glade/edit_groups_dialog.glade.h:1 +msgid "Edit Groups" +msgstr "Editar grupos" + +#: ../data/glade/filetransfers.glade.h:1 +msgid "A list of active, completed and stopped file transfers" +msgstr "Una lista de transferencias activas, finalizadas y detenidas" + +#: ../data/glade/filetransfers.glade.h:2 +msgid "Cancel file transfer" +msgstr "Cancela la transferencia" + +#: ../data/glade/filetransfers.glade.h:3 +msgid "Cancels the selected file transfer" +msgstr "Cancela la transferencia de archivo seleccionada" + +#: ../data/glade/filetransfers.glade.h:4 +msgid "Cancels the selected file transfer and removes incomplete file" +msgstr "" +"Cancela la transferencia de archivo seleccionada y elimina el archivo " +"incompleto" + +#: ../data/glade/filetransfers.glade.h:5 +msgid "Clean _up" +msgstr "Limpiar" + +#: ../data/glade/filetransfers.glade.h:6 +msgid "File Transfers" +msgstr "Transferencias" + +#: ../data/glade/filetransfers.glade.h:7 +msgid "Hides the window" +msgstr "Oculta la ventana" + +#: ../data/glade/filetransfers.glade.h:8 +msgid "Remove file transfer from the list." +msgstr "Eliminar transferencias de la lista" + +#: ../data/glade/filetransfers.glade.h:9 +msgid "Removes completed, canceled and failed file transfers from the list" +msgstr "" +"Elimina de la lista las transferencias finalizadas, canceladas y fallidas" + +#: ../data/glade/filetransfers.glade.h:10 +msgid "Shows a list of file transfers between you and other" +msgstr "Muestra una lista de transferencias entre tú y otro" + +#: ../data/glade/filetransfers.glade.h:11 +msgid "" +"This action removes single file transfer from the list. If the transfer is " +"active, it is first stopped and then removed" +msgstr "" +"Esta acción elimina transferencias de la lista. Si la transferencia está " +"activa, es primero detenida y luego eliminada" + +#: ../data/glade/filetransfers.glade.h:12 +msgid "When a file transfer is complete show a popup notification" +msgstr "" +"Cuando una transferencia se completa, muestra una notificación emergente" + +#: ../data/glade/filetransfers.glade.h:13 ../src/filetransfers_window.py:753 +msgid "_Continue" +msgstr "_Continuar" + +#: ../data/glade/filetransfers.glade.h:14 +msgid "_Notify me when a file transfer is complete" +msgstr "_Notificarme cuando una transferencia finalice" + +#: ../data/glade/filetransfers.glade.h:15 ../src/filetransfers_window.py:190 +msgid "_Open Containing Folder" +msgstr "_Abrir carpeta contenedora" + +#: ../data/glade/filetransfers.glade.h:16 +msgid "_Pause" +msgstr "_Pausa" + +#: ../data/glade/filetransfers.glade.h:17 +msgid "file transfers list" +msgstr "lista de transferencias" + +#: ../data/glade/gajim_themes_window.glade.h:1 +msgid "Chatstate Tab Colors" +msgstr "" + +#: ../data/glade/gajim_themes_window.glade.h:2 +msgid "" +"Account\n" +"Group\n" +"Contact\n" +"Banner" +msgstr "" +"Cuenta\n" +"Grupo\n" +"Contacto\n" +"Banner" + +#: ../data/glade/gajim_themes_window.glade.h:6 ../src/config.py:327 +msgid "Active" +msgstr "Activo" + +#: ../data/glade/gajim_themes_window.glade.h:7 +msgid "Bold" +msgstr "Negrita" + +#: ../data/glade/gajim_themes_window.glade.h:8 +msgid "Composing" +msgstr "" + +#: ../data/glade/gajim_themes_window.glade.h:9 +msgid "Font style:" +msgstr "Estilo:" + +#: ../data/glade/gajim_themes_window.glade.h:10 +msgid "Gajim Themes Customization" +msgstr "Personalización de temas de Gajim" + +#: ../data/glade/gajim_themes_window.glade.h:11 +#, fuzzy +msgid "Gone" +msgstr "Ninguno" + +#: ../data/glade/gajim_themes_window.glade.h:12 +#, fuzzy +msgid "Inactive" +msgstr "Activo" + +#: ../data/glade/gajim_themes_window.glade.h:13 +msgid "Italic" +msgstr "Cursiva" + +#: ../data/glade/gajim_themes_window.glade.h:14 +#, fuzzy +msgid "" +"MUC\n" +"Messages" +msgstr "Mensaje" + +#: ../data/glade/gajim_themes_window.glade.h:16 +msgid "" +"MUC Directed\n" +"Messages" +msgstr "" + +#: ../data/glade/gajim_themes_window.glade.h:18 ../src/tooltips.py:667 +msgid "Paused" +msgstr "Pausado" + +#: ../data/glade/gajim_themes_window.glade.h:19 +msgid "Text _color:" +msgstr "_Color del texto:" + +#: ../data/glade/gajim_themes_window.glade.h:20 +msgid "Text _font:" +msgstr "_Fuente del texto:" + +#: ../data/glade/gajim_themes_window.glade.h:21 +msgid "_Background:" +msgstr "_Fondo" + +#: ../data/glade/gc_control_popup_menu.glade.h:1 +msgid "Change _Nickname" +msgstr "Cambiar _Alias" + +#: ../data/glade/gc_control_popup_menu.glade.h:2 +msgid "Change _Subject" +msgstr "Cambiar el _tema" + +#: ../data/glade/gc_control_popup_menu.glade.h:3 +msgid "Click to see past conversation in this room" +msgstr "Click para ver anteriores conversaciones en este salón" + +#: ../data/glade/gc_control_popup_menu.glade.h:4 +msgid "Configure _Room" +msgstr "Configurar el salón" + +#: ../data/glade/gc_control_popup_menu.glade.h:5 +msgid "_Bookmark This Room" +msgstr "Añadir este salón a marcadores" + +#: ../data/glade/gc_occupants_menu.glade.h:1 +msgid "Mo_derator" +msgstr "Mo_derador" + +#: ../data/glade/gc_occupants_menu.glade.h:3 +msgid "_Admin" +msgstr "_Administrar" + +#: ../data/glade/gc_occupants_menu.glade.h:4 +msgid "_Ban" +msgstr "_Banear" + +#: ../data/glade/gc_occupants_menu.glade.h:6 +msgid "_Kick" +msgstr "_Expulsar" + +#: ../data/glade/gc_occupants_menu.glade.h:7 +msgid "_Member" +msgstr "_Miembro" + +#: ../data/glade/gc_occupants_menu.glade.h:8 +msgid "_Occupant Actions" +msgstr "_Acciones" + +#: ../data/glade/gc_occupants_menu.glade.h:9 +msgid "_Owner" +msgstr "_Propietario" + +#: ../data/glade/gc_occupants_menu.glade.h:10 +msgid "_Send Private Message" +msgstr "_Enviar mensaje privado" + +#: ../data/glade/gc_occupants_menu.glade.h:11 +msgid "_Voice" +msgstr "_Voz" + +#: ../data/glade/history_manager.glade.h:1 +msgid "" +"Welcome to Gajim History Logs Manager\n" +"\n" +"You can select logs from the left and/or search database from below.\n" +"\n" +"WARNING:\n" +"If you plan to do massive deletions, please make sure Gajim is not running. " +"Generally avoid deletions with contacts you currently chat with." +msgstr "" + +#: ../data/glade/history_manager.glade.h:7 +#, fuzzy +msgid "Delete" +msgstr "Eliminar MOTD" + +#: ../data/glade/history_manager.glade.h:8 +msgid "Export" +msgstr "" + +#: ../data/glade/history_manager.glade.h:9 +msgid "Gajim History Logs Manager" +msgstr "" + +#: ../data/glade/history_manager.glade.h:10 +#, fuzzy +msgid "_Search Database" +msgstr "_Buscar" + +#: ../data/glade/history_window.glade.h:1 +msgid "Build custom query" +msgstr "Construir consulta personalizada" + +#: ../data/glade/history_window.glade.h:2 +msgid "Conversation History" +msgstr "Histórico de conversaciones" + +#: ../data/glade/history_window.glade.h:3 +msgid "Query Builder..." +msgstr "Constructor de consultas..." + +#: ../data/glade/history_window.glade.h:4 +#, fuzzy +msgid "Search" +msgstr "_Buscar" + +#: ../data/glade/history_window.glade.h:5 +msgid "_Search" +msgstr "_Buscar" + +#: ../data/glade/invitation_received_dialog.glade.h:1 +msgid "Accept" +msgstr "Aceptar" + +#: ../data/glade/invitation_received_dialog.glade.h:2 +#: ../data/glade/privacy_list_edit_window.glade.h:8 +msgid "Deny" +msgstr "Denegar" + +#: ../data/glade/invitation_received_dialog.glade.h:3 +msgid "Invitation Received" +msgstr "Invitación recibida" + +#: ../data/glade/join_groupchat_window.glade.h:1 ../src/dialogs.py:1067 +msgid "Join Group Chat" +msgstr "Entrar a un salón de chat" + +#: ../data/glade/join_groupchat_window.glade.h:2 +#: ../data/glade/manage_bookmarks_window.glade.h:4 +#: ../data/glade/vcard_information_window.glade.h:28 +msgid "Nickname:" +msgstr "Alias:" + +#: ../data/glade/join_groupchat_window.glade.h:3 +#: ../data/glade/manage_bookmarks_window.glade.h:5 +msgid "Password:" +msgstr "Contraseña: " + +#: ../data/glade/join_groupchat_window.glade.h:4 +msgid "Recently:" +msgstr "Recientemente:" + +#: ../data/glade/join_groupchat_window.glade.h:5 +#: ../data/glade/manage_bookmarks_window.glade.h:7 +msgid "Room:" +msgstr "Salón:" + +#: ../data/glade/join_groupchat_window.glade.h:6 +#: ../data/glade/manage_bookmarks_window.glade.h:8 +msgid "Server:" +msgstr "Servidor:" + +#: ../data/glade/join_groupchat_window.glade.h:7 ../src/disco.py:1145 +#: ../src/disco.py:1510 +msgid "_Join" +msgstr "_Entrar" + +#: ../data/glade/manage_accounts_window.glade.h:1 +msgid "Manage Accounts" +msgstr "Gestionar cuentas" + +#: ../data/glade/manage_bookmarks_window.glade.h:1 +msgid "Auto join" +msgstr "Auto conectar" + +#: ../data/glade/manage_bookmarks_window.glade.h:2 +msgid "If checked, Gajim will join this group chat on startup" +msgstr "Si está marcado, Gajim entrará a este salón al inicio" + +#: ../data/glade/manage_bookmarks_window.glade.h:3 +msgid "Manage Bookmarks" +msgstr "Gestionar marcadores" + +#: ../data/glade/manage_bookmarks_window.glade.h:6 +#, fuzzy +msgid "Print status:" +msgstr "Insertar la hora:" + +#: ../data/glade/manage_bookmarks_window.glade.h:9 +msgid "Title:" +msgstr "Título:" + +#: ../data/glade/manage_proxies_window.glade.h:1 +msgid "Properties" +msgstr "Propiedades" + +#: ../data/glade/manage_proxies_window.glade.h:2 +msgid "Settings" +msgstr "Configuración" + +#: ../data/glade/manage_proxies_window.glade.h:3 +msgid "HTTP Connect" +msgstr "Conectar con HTTP" + +#: ../data/glade/manage_proxies_window.glade.h:4 +msgid "Manage Proxy Profiles" +msgstr "Gestionar perfiles del Proxy" + +#: ../data/glade/manage_proxies_window.glade.h:5 +#: ../data/glade/vcard_information_window.glade.h:27 +msgid "Name:" +msgstr "Nombre:" + +#: ../data/glade/manage_proxies_window.glade.h:7 +msgid "Type:" +msgstr "Tipo:" + +#: ../data/glade/manage_proxies_window.glade.h:8 +msgid "Use authentication" +msgstr "Usar autentificación" + +#: ../data/glade/message_window.glade.h:1 +#, fuzzy +msgid "Click to insert an emoticon (Alt+M)" +msgstr "Haz click para insertar un emoticono (Alt+E)" + +#: ../data/glade/message_window.glade.h:2 ../src/chat_control.py:1026 +msgid "OpenPGP Encryption" +msgstr "Encriptación OpenPGP" + +#. Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector) +#: ../data/glade/message_window.glade.h:4 +#: ../data/glade/roster_window.glade.h:9 +msgid "_Actions" +msgstr "_Acciones" + +#. Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector) +#: ../data/glade/message_window.glade.h:6 +#: ../data/glade/xml_console_window.glade.h:11 +#: ../src/filetransfers_window.py:249 +msgid "_Send" +msgstr "_Enviar" + +#: ../data/glade/passphrase_dialog.glade.h:1 +msgid "Passphrase" +msgstr "Contraseña" + +#: ../data/glade/preferences_window.glade.h:1 +msgid "Advanced Configuration Editor" +msgstr "Editor de configuración avanzada" + +#: ../data/glade/preferences_window.glade.h:2 +msgid "Applications" +msgstr "Programas" + +#. a header for custom browser/client/file manager. so translate sth like: Custom Settings +#: ../data/glade/preferences_window.glade.h:4 +msgid "Custom" +msgstr "Personalizado" + +#: ../data/glade/preferences_window.glade.h:5 +msgid "Format of a line" +msgstr "Formato del renglón" + +#: ../data/glade/preferences_window.glade.h:6 +#, fuzzy +msgid "GMail Options" +msgstr "Programas" + +#: ../data/glade/preferences_window.glade.h:7 +msgid "Interface Customization" +msgstr "Personalización de la interfaz" + +#: ../data/glade/preferences_window.glade.h:9 +msgid "Preset Status Messages" +msgstr "Mensajes de estado predefinidos" + +#: ../data/glade/preferences_window.glade.h:11 +msgid "Visual Notifications" +msgstr "Notificationes Visuales" + +#: ../data/glade/preferences_window.glade.h:12 +#, fuzzy +msgid "A_fter nickname:" +msgstr "Después del nombre:" + +#: ../data/glade/preferences_window.glade.h:13 +msgid "Advanced" +msgstr "Avanzado" + +#: ../data/glade/preferences_window.glade.h:14 +msgid "" +"All chat states\n" +"Composing only\n" +"Disabled" +msgstr "" +"Todos los estados de chat\n" +"Sólo componiendo\n" +"Desactivado" + +#: ../data/glade/preferences_window.glade.h:17 +msgid "Allow _OS information to be sent" +msgstr "Permitir envío de información sobre el sistema operativo" + +#: ../data/glade/preferences_window.glade.h:18 +msgid "Allow popup/notifications when I'm _away/na/busy/invisible" +msgstr "" +"Permitir notificaciones emergentes cuando estoy _ausente, no disponible, " +"ocupado o invisible." + +#: ../data/glade/preferences_window.glade.h:19 +msgid "Also known as iChat style" +msgstr "También conocido como estilo iChat" + +#: ../data/glade/preferences_window.glade.h:20 +msgid "Ask status message when I:" +msgstr "Preguntar mensaje de estado cuando esté: " + +#: ../data/glade/preferences_window.glade.h:21 +msgid "Auto _away after:" +msgstr "Poner _ausente después de:" + +#: ../data/glade/preferences_window.glade.h:22 +msgid "Auto _not available after:" +msgstr "Poner _no disponible después de:" + +#: ../data/glade/preferences_window.glade.h:23 +msgid "" +"Autodetect on every Gajim startup\n" +"Always use GNOME default applications\n" +"Always use KDE default applications\n" +"Custom" +msgstr "" +"Autodetectar en cada inicio de Gajim\n" +"Siempre usar las aplicaciones por defecto de GNOME\n" +"Siempre usar las apliacciones por defecto de KDE\n" +"Personalizado" + +#: ../data/glade/preferences_window.glade.h:27 +#, fuzzy +msgid "B_efore nickname:" +msgstr "Antes del nombre:" + +#: ../data/glade/preferences_window.glade.h:28 ../src/chat_control.py:773 +msgid "Chat" +msgstr "Charla" + +#: ../data/glade/preferences_window.glade.h:29 +msgid "Chat state noti_fications:" +msgstr "Noti_ficaciones del estado del chat" + +#: ../data/glade/preferences_window.glade.h:30 +msgid "" +"Check this option, only if someone you don't have in the roster spams/annoys " +"you. Use with caution, cause it blocks all messages from any contact that is " +"not in the roster" +msgstr "" +"Marca esta opción sólo si alguien que no tienes en el roster te molesta. " +"Úsalo con precaución ya que bloqueará todos los mensajes de cualquier " +"contacto que no esté en tu lista de contactos." + +#: ../data/glade/preferences_window.glade.h:31 +#, fuzzy +msgid "Default Status Messages" +msgstr "Mensaje de estado" + +#: ../data/glade/preferences_window.glade.h:32 +#, fuzzy +msgid "Default status _iconset:" +msgstr "_Iconos de estado por defecto:" + +#: ../data/glade/preferences_window.glade.h:33 +msgid "Display _extra email details" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:34 +#, fuzzy +msgid "Display a_vatars of contacts in roster" +msgstr "Mostrar en el roster los avatares de los contactos" + +#: ../data/glade/preferences_window.glade.h:35 +#, fuzzy +msgid "Display status _messages of contacts in roster" +msgstr "Mostrar en el roster los mensajes de estado de los contactos" + +#: ../data/glade/preferences_window.glade.h:36 +#, fuzzy +msgid "E_very 5 minutes" +msgstr "Cada 5 _minutos" + +#: ../data/glade/preferences_window.glade.h:37 +#, fuzzy +msgid "Emoticons:" +msgstr "Gestionar emoticonos" + +#: ../data/glade/preferences_window.glade.h:38 +msgid "Events" +msgstr "Eventos" + +#: ../data/glade/preferences_window.glade.h:39 +#, fuzzy +msgid "" +"Gajim can send and receive meta-information related to a conversation you " +"may have with a contact. Here you can specify which chatstates you want to " +"send to the other party." +msgstr "" +"Gajim puede enviar y recibir meta-información relacionada con una " +"conversación que puedas tener con un contacto" + +#: ../data/glade/preferences_window.glade.h:40 +#, fuzzy +msgid "" +"Gajim will automatically show new events by poping up the relative window" +msgstr "" +"Gajim mostrará automáticamente los nuevos mensajes recibidos en una ventana " +"de charla o pestaña en una ventana de chat existente" + +#: ../data/glade/preferences_window.glade.h:41 +#, fuzzy +msgid "" +"Gajim will notify you for new events via a popup in the bottom right of the " +"screen" +msgstr "" +"Gajim te notificará de nuevos mensajes a través de un mensaje emergente en " +"la esquina inferior derecha de la pantalla" + +#: ../data/glade/preferences_window.glade.h:42 +msgid "" +"Gajim will notify you via a popup window in the bottom right of the screen " +"about contacts that just signed in" +msgstr "" +"Gajim notificará con un mensaje emergente en la parte inferior derecha de la " +"pantalla cuando un contacto se conecte" + +#: ../data/glade/preferences_window.glade.h:43 +msgid "" +"Gajim will notify you via a popup window in the bottom right of the screen " +"about contacts that just signed out" +msgstr "" +"Gajim notificará con un mensaje emergente en la parte inferior derecha de la " +"pantalla cuando un contacto se desconecte" + +#: ../data/glade/preferences_window.glade.h:44 +#, fuzzy +msgid "" +"Gajim will only change the icon of the contact that triggered the new event" +msgstr "Gajim sólo cambiará el icono del contacto que envía el nuevo mensaje" + +#: ../data/glade/preferences_window.glade.h:46 +#, fuzzy +msgid "" +"If checked, Gajim will display avatars of contacts in roster window and in " +"group chats" +msgstr "" +"Si está marcado, Gajim mostrará los avatares de los usuarios en el roster" + +#: ../data/glade/preferences_window.glade.h:47 +#, fuzzy +msgid "" +"If checked, Gajim will display status messages of contacts under the contact " +"name in roster window and in group chats" +msgstr "" +"Si está marcado, Gajim mostrará los mensajes de estado de los contactos " +"debajo de cada nombre en el roster" + +#: ../data/glade/preferences_window.glade.h:48 +msgid "" +"If checked, Gajim will remember the roster and chat window positions in the " +"screen and the sizes of them next time you run it" +msgstr "" +"Si está marcado, Gajim recordará la posición y tamaño de la ventana de " +"contactos para futuras ejecuciones" + +#: ../data/glade/preferences_window.glade.h:49 +msgid "" +"If checked, Gajim will use protocol-specific status icons. (eg. A contact " +"from MSN will have the equivalent msn icon for status online, away, busy, " +"etc...)" +msgstr "" +"Si está marcado, Gajim usará iconos específicos para el protocolo- (p. ej. " +"un contacto de MSN tendrá el icono de msn equivalente para su estado en " +"línea, ausente, ocupado, etc...)" + +#: ../data/glade/preferences_window.glade.h:50 +#, fuzzy +msgid "" +"If not disabled, Gajim will replace ascii smilies like ':)' with equivalent " +"animated or static graphical emoticons" +msgstr "" +"Si está marcado, Gajim reemplazará emoticonos de texto como ':)' por su " +"equivalente en iconos" + +#: ../data/glade/preferences_window.glade.h:51 +#, fuzzy +msgid "Ma_nage..." +msgstr "Gestionar..." + +#: ../data/glade/preferences_window.glade.h:52 +msgid "" +"Never\n" +"Always\n" +"Per account\n" +"Per type" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:56 +msgid "Notify me about contacts that: " +msgstr "Notificar cuand un contacto: " + +#: ../data/glade/preferences_window.glade.h:57 +msgid "Notify on new _GMail email" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:58 +msgid "On every _message" +msgstr "En cada _mensaje" + +#: ../data/glade/preferences_window.glade.h:59 +#, fuzzy +msgid "One message _window:" +msgstr "Enviar mensaje y cerrar ventana" + +#: ../data/glade/preferences_window.glade.h:60 +msgid "Play _sounds" +msgstr "Reproducir _sonidos" + +#: ../data/glade/preferences_window.glade.h:61 +msgid "Preferences" +msgstr "Preferencias" + +#: ../data/glade/preferences_window.glade.h:62 +msgid "Print time:" +msgstr "Insertar la hora:" + +#: ../data/glade/preferences_window.glade.h:63 +msgid "Save _position and size for roster and chat windows" +msgstr "" +"Guarda _posición y tamaño para las ventanas de conversaciones y lista de " +"contactos" + +#: ../data/glade/preferences_window.glade.h:64 +msgid "Show only in _roster" +msgstr "Sólo mostrar en la _lista de contactos" + +#: ../data/glade/preferences_window.glade.h:65 +msgid "Sign _in" +msgstr "Conectar" + +#: ../data/glade/preferences_window.glade.h:66 +msgid "Sign _out" +msgstr "_Desconectar" + +#: ../data/glade/preferences_window.glade.h:67 +msgid "Status" +msgstr "Estado" + +#: ../data/glade/preferences_window.glade.h:68 +#, fuzzy +msgid "T_heme:" +msgstr "Tema:" + +#: ../data/glade/preferences_window.glade.h:69 +msgid "The auto away status message" +msgstr "El mensaje de estado de auto-ausencia" + +#: ../data/glade/preferences_window.glade.h:70 +msgid "The auto not available status message" +msgstr "El mensaje de estado de no auto-no disponible" + +#: ../data/glade/preferences_window.glade.h:71 +msgid "Use _transports iconsets" +msgstr "_Usar los iconos del transporte" + +#: ../data/glade/preferences_window.glade.h:72 +msgid "Use system _default" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:73 +#, fuzzy +msgid "Use t_rayicon (aka. notification area icon)" +msgstr "_Icono en el área de notificación" + +#: ../data/glade/preferences_window.glade.h:74 +#, fuzzy +msgid "" +"When a new event (message, file transfer request etc..) is received, the " +"following methods may be used to inform you about it. Please note that " +"events about new messages only occur if it is a new message from a contact " +"you are not already chatting with" +msgstr "" +"Cuando se recibe un nuevo evento (mensaje, envío de archivos, etc...), " +"pueden ser usados los siguientes métodos para informar. NOTA: Los eventos de " +"nuevo mensaje sólo aparecen cuando proceden de un contacto con el que no se " +"está hablando ya" + +#: ../data/glade/preferences_window.glade.h:75 +msgid "When new event is received" +msgstr "Cuando se reciba un nuevo evento" + +#: ../data/glade/preferences_window.glade.h:76 +#, fuzzy +msgid "_Advanced Notifications Control..." +msgstr "Editor avanzado de configurción" + +#: ../data/glade/preferences_window.glade.h:77 +#, fuzzy +msgid "_After time:" +msgstr "Después de la hora:" + +#: ../data/glade/preferences_window.glade.h:78 +#, fuzzy +msgid "_Before time:" +msgstr "Antes de la hora:" + +#: ../data/glade/preferences_window.glade.h:79 +msgid "_Browser:" +msgstr "_Navegador:" + +#: ../data/glade/preferences_window.glade.h:80 +#, fuzzy +msgid "_File manager:" +msgstr "Administrador de archivos:" + +#: ../data/glade/preferences_window.glade.h:81 +#, fuzzy +msgid "_Font:" +msgstr "Fuente:" + +#: ../data/glade/preferences_window.glade.h:82 +msgid "_Highlight misspelled words" +msgstr "_Resaltar errores ortográficos" + +#: ../data/glade/preferences_window.glade.h:83 +msgid "_Ignore events from contacts not in the roster" +msgstr "_Ignorar mensajes de contactos que no están en la lista de contactos" + +#: ../data/glade/preferences_window.glade.h:84 +#, fuzzy +msgid "_Incoming message:" +msgstr "Mensaje entrante:" + +#: ../data/glade/preferences_window.glade.h:85 +msgid "_Log status changes of contacts" +msgstr "_Registrar cambios de estado de los contactos" + +#: ../data/glade/preferences_window.glade.h:86 +msgid "_Mail client:" +msgstr "_Cliente de correo:" + +#: ../data/glade/preferences_window.glade.h:87 +msgid "_Never" +msgstr "_Nunca" + +#: ../data/glade/preferences_window.glade.h:88 +msgid "_Notify me about it" +msgstr "_Notificarme" + +#: ../data/glade/preferences_window.glade.h:89 +#, fuzzy +msgid "_Open..." +msgstr "Abrir..." + +#: ../data/glade/preferences_window.glade.h:90 +#, fuzzy +msgid "_Outgoing message:" +msgstr "Mensaje saliente:" + +#: ../data/glade/preferences_window.glade.h:91 +msgid "_Player:" +msgstr "_Reproductor:" + +#: ../data/glade/preferences_window.glade.h:92 +msgid "_Pop it up" +msgstr "_Emerger" + +#: ../data/glade/preferences_window.glade.h:93 +#, fuzzy +msgid "_Reset to Default Colors" +msgstr "Restablecer colores por defecto" + +#: ../data/glade/preferences_window.glade.h:94 +#, fuzzy +msgid "_Sort contacts by status" +msgstr "Ordenar contactos por estado" + +#: ../data/glade/preferences_window.glade.h:95 +#, fuzzy +msgid "_Status message:" +msgstr "Mensaje de estado:" + +#: ../data/glade/preferences_window.glade.h:96 +msgid "_URL:" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:97 +msgid "minutes" +msgstr "minutos" + +#: ../data/glade/privacy_list_edit_window.glade.h:1 +msgid "Add / Edit a rule" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:2 +#, fuzzy +msgid "List of rules" +msgstr "Formato del renglón" + +#: ../data/glade/privacy_list_edit_window.glade.h:3 +msgid "Privacy List" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:4 +msgid "Active for this session" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:5 +#, fuzzy +msgid "Active on each startup" +msgstr "C_onectar al inicio de Gajim" + +#: ../data/glade/privacy_list_edit_window.glade.h:6 ../src/config.py:2355 +msgid "All" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:7 +msgid "Allow" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:9 +#, fuzzy +msgid "JabberID" +msgstr "ID de Jabber:" + +#: ../data/glade/privacy_list_edit_window.glade.h:10 +#, fuzzy +msgid "Order:" +msgstr "Servidor:" + +#: ../data/glade/privacy_list_edit_window.glade.h:11 ../src/dialogs.py:1761 +msgid "Privacy List" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:12 +#, fuzzy +msgid "all by subscription" +msgstr "_Subscripción" + +#: ../data/glade/privacy_list_edit_window.glade.h:13 +#, fuzzy +msgid "all in the group" +msgstr "En el grupo" + +#: ../data/glade/privacy_list_edit_window.glade.h:14 +msgid "" +"none\n" +"both\n" +"from\n" +"to" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:18 +#, fuzzy +msgid "to send me messages" +msgstr "Enviar mensaje" + +#: ../data/glade/privacy_list_edit_window.glade.h:19 +msgid "to send me queries" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:20 +#, fuzzy +msgid "to send me status" +msgstr "Pregunta para ver su estado" + +#: ../data/glade/privacy_list_edit_window.glade.h:21 +#, fuzzy +msgid "to view my status" +msgstr "Permitirle ver mi estado" + +#: ../data/glade/privacy_lists_first_window.glade.h:1 +msgid "Create your own Privacy Lists" +msgstr "" + +#: ../data/glade/privacy_lists_first_window.glade.h:2 +msgid "Server-based Privacy Lists" +msgstr "" + +#: ../data/glade/remove_account_window.glade.h:1 +msgid "What do you want to do?" +msgstr "¿Qué quieres hacer?" + +#: ../data/glade/remove_account_window.glade.h:2 +msgid "Remove account _only from Gajim" +msgstr "Eliminar la _cuenta únicamente de Gajim" + +#: ../data/glade/remove_account_window.glade.h:3 +msgid "Remove account from Gajim and from _server" +msgstr "Eliminar la cuenta de Gajim y del _servidor" + +#: ../data/glade/roster_contact_context_menu.glade.h:1 +#, fuzzy +msgid "A_sk to see his/her status" +msgstr "Pregunta para ver su estado" + +#: ../data/glade/roster_contact_context_menu.glade.h:2 +#, fuzzy +msgid "Add Special _Notification" +msgstr "Notificationes Visuales" + +#: ../data/glade/roster_contact_context_menu.glade.h:3 +msgid "Assign Open_PGP Key" +msgstr "Asignar clave OpenPGP" + +#: ../data/glade/roster_contact_context_menu.glade.h:4 +#: ../src/roster_window.py:1621 +msgid "Edit _Groups" +msgstr "Editar grupos" + +#: ../data/glade/roster_contact_context_menu.glade.h:5 +#: ../src/roster_window.py:1579 +msgid "In_vite to" +msgstr "" + +#: ../data/glade/roster_contact_context_menu.glade.h:6 +#: ../data/glade/systray_context_menu.glade.h:1 +msgid "Send Single _Message" +msgstr "Enviar mensaje" + +#: ../data/glade/roster_contact_context_menu.glade.h:8 +msgid "Start _Chat" +msgstr "Iniciar conversación" + +#: ../data/glade/roster_contact_context_menu.glade.h:10 +#, fuzzy +msgid "_Allow him/her to see my status" +msgstr "Permitirle ver mi estado" + +#: ../data/glade/roster_contact_context_menu.glade.h:11 +#, fuzzy +msgid "_Forbid him/her to see my status" +msgstr "Prohibirle ver mi estado" + +#: ../data/glade/roster_contact_context_menu.glade.h:13 +#: ../src/roster_window.py:1573 ../src/roster_window.py:1719 +msgid "_Remove from Roster" +msgstr "_Eliminar del Roster" + +#: ../data/glade/roster_contact_context_menu.glade.h:14 +#: ../src/roster_window.py:1707 +msgid "_Rename" +msgstr "Renombrar" + +#: ../data/glade/roster_contact_context_menu.glade.h:15 +msgid "_Subscription" +msgstr "_Subscripción" + +#: ../data/glade/roster_window.glade.h:1 +msgid "A_ccounts" +msgstr "_Cuentas" + +#: ../data/glade/roster_window.glade.h:2 +msgid "Add _Contact" +msgstr "Añadir un _Contacto" + +#: ../data/glade/roster_window.glade.h:3 +msgid "File _Transfers" +msgstr "_Transferencias" + +#: ../data/glade/roster_window.glade.h:4 +msgid "Frequently Asked Questions (online)" +msgstr "Preguntas frecuentes (en línea)" + +#: ../data/glade/roster_window.glade.h:6 +msgid "Help online" +msgstr "Ayuda online" + +#: ../data/glade/roster_window.glade.h:7 +msgid "Profile, Avatar" +msgstr "Perfil, Avatar" + +#: ../data/glade/roster_window.glade.h:8 +msgid "Show _Offline Contacts" +msgstr "Mostrar contactos desconectados" + +#: ../data/glade/roster_window.glade.h:11 +msgid "_Contents" +msgstr "_Contenidos" + +#: ../data/glade/roster_window.glade.h:12 +msgid "_Discover Services" +msgstr "_Descubrir servicios" + +#: ../data/glade/roster_window.glade.h:13 ../src/disco.py:1255 +#: ../src/roster_window.py:1699 +msgid "_Edit" +msgstr "_Editar" + +#: ../data/glade/roster_window.glade.h:14 +msgid "_FAQ" +msgstr "" + +#: ../data/glade/roster_window.glade.h:16 +msgid "_Help" +msgstr "_Ayuda" + +#: ../data/glade/roster_window.glade.h:17 +msgid "_Preferences" +msgstr "_Preferencias" + +#: ../data/glade/roster_window.glade.h:18 +msgid "_Quit" +msgstr "_Salir" + +#: ../data/glade/service_discovery_window.glade.h:1 +msgid "G_o" +msgstr "I_r" + +#: ../data/glade/service_discovery_window.glade.h:2 +msgid "_Address:" +msgstr "_Dirección:" + +#: ../data/glade/service_discovery_window.glade.h:3 +msgid "_Filter:" +msgstr "_Filtro:" + +#: ../data/glade/service_registration_window.glade.h:1 +msgid "Register to" +msgstr "Registrar en" + +#: ../data/glade/service_registration_window.glade.h:2 +msgid "_Cancel" +msgstr "_Cancelar" + +#: ../data/glade/service_registration_window.glade.h:3 +msgid "_OK" +msgstr "_OK" + +#: ../data/glade/single_message_window.glade.h:1 +msgid "0" +msgstr "" + +#: ../data/glade/single_message_window.glade.h:2 +msgid "From:" +msgstr "De:" + +#: ../data/glade/single_message_window.glade.h:3 +msgid "Reply to this message" +msgstr "Responder a este mensaje:" + +#: ../data/glade/single_message_window.glade.h:4 +msgid "Sen_d" +msgstr "Enviar" + +#: ../data/glade/single_message_window.glade.h:5 +msgid "Send message" +msgstr "Enviar mensaje" + +#: ../data/glade/single_message_window.glade.h:6 +msgid "Send message and close window" +msgstr "Enviar mensaje y cerrar ventana" + +#: ../data/glade/single_message_window.glade.h:7 +msgid "Subject:" +msgstr "Tema:" + +#: ../data/glade/single_message_window.glade.h:8 +msgid "To:" +msgstr "A:" + +#: ../data/glade/single_message_window.glade.h:9 +msgid "_Reply" +msgstr "_Responder" + +#: ../data/glade/single_message_window.glade.h:10 +msgid "_Send & Close" +msgstr "_Enviar y Cerrar" + +#: ../data/glade/subscription_request_window.glade.h:1 +msgid "Authorize contact so he can know when you're connected" +msgstr "Autorizar contacto para que pueda saber cuándo estás conectado" + +#: ../data/glade/subscription_request_window.glade.h:2 +msgid "Contact _Info" +msgstr "_Información" + +#: ../data/glade/subscription_request_window.glade.h:3 +msgid "Deny authorization from contact so he cannot know when you're connected" +msgstr "" +"Denegar autorización de contacto para que no pueda saber cuándo estás " +"conectado" + +#: ../data/glade/subscription_request_window.glade.h:4 +msgid "Subscription Request" +msgstr "Petición de adición" + +#: ../data/glade/subscription_request_window.glade.h:5 +msgid "_Authorize" +msgstr "_Autorizar" + +#: ../data/glade/subscription_request_window.glade.h:6 +msgid "_Deny" +msgstr "_Denegar" + +#: ../data/glade/systray_context_menu.glade.h:2 +msgid "Show All Pending _Events" +msgstr "Mostrar todos los _eventos pendientes" + +#: ../data/glade/systray_context_menu.glade.h:3 +msgid "Show _Roster" +msgstr "Mostrar _roster" + +#: ../data/glade/systray_context_menu.glade.h:4 +msgid "Sta_tus" +msgstr "Es_tado" + +#. "About" is the text of a tab of vcard window +#: ../data/glade/vcard_information_window.glade.h:2 +msgid "About" +msgstr "Acerca de" + +#: ../data/glade/vcard_information_window.glade.h:3 +msgid "Address" +msgstr "Dirección" + +#: ../data/glade/vcard_information_window.glade.h:4 +msgid "Ask:" +msgstr "Pregunta:" + +#: ../data/glade/vcard_information_window.glade.h:5 +msgid "Birthday:" +msgstr "Cumpleaños:" + +#: ../data/glade/vcard_information_window.glade.h:6 +msgid "City:" +msgstr "Ciudad:" + +#: ../data/glade/vcard_information_window.glade.h:7 +msgid "Client:" +msgstr "Cliente:" + +#: ../data/glade/vcard_information_window.glade.h:8 +msgid "Company:" +msgstr "Compañía:" + +#: ../data/glade/vcard_information_window.glade.h:9 +msgid "Contact Information" +msgstr "Información" + +#: ../data/glade/vcard_information_window.glade.h:10 +msgid "Country:" +msgstr "País:" + +#: ../data/glade/vcard_information_window.glade.h:11 +msgid "Department:" +msgstr "Departamento:" + +#: ../data/glade/vcard_information_window.glade.h:12 +msgid "E-Mail:" +msgstr "Correo-e:" + +#: ../data/glade/vcard_information_window.glade.h:13 +msgid "Extra Address:" +msgstr "Segunda dirección:" + +#. Family Name +#: ../data/glade/vcard_information_window.glade.h:15 +msgid "Family:" +msgstr "Familia:" + +#: ../data/glade/vcard_information_window.glade.h:16 +msgid "Format: YYYY-MM-DD" +msgstr "Formato: AAAA-MM-DD" + +#. Given Name +#: ../data/glade/vcard_information_window.glade.h:19 +msgid "Given:" +msgstr "Nombre de pila:" + +#: ../data/glade/vcard_information_window.glade.h:20 +msgid "Homepage:" +msgstr "Página web:" + +#: ../data/glade/vcard_information_window.glade.h:21 +msgid "Jabber" +msgstr "" + +#: ../data/glade/vcard_information_window.glade.h:22 +msgid "Jabber ID:" +msgstr "ID de Jabber:" + +#: ../data/glade/vcard_information_window.glade.h:23 +msgid "Location" +msgstr "Dirección" + +#. Middle Name +#: ../data/glade/vcard_information_window.glade.h:25 +msgid "Middle:" +msgstr "Medio:" + +#: ../data/glade/vcard_information_window.glade.h:26 +msgid "More" +msgstr "Más" + +#: ../data/glade/vcard_information_window.glade.h:29 +msgid "OS:" +msgstr "SO:" + +#: ../data/glade/vcard_information_window.glade.h:30 +msgid "Phone No.:" +msgstr "Teléfono:" + +#: ../data/glade/vcard_information_window.glade.h:31 +msgid "Position:" +msgstr "Posición:" + +#: ../data/glade/vcard_information_window.glade.h:32 +msgid "Postal Code:" +msgstr "Código postal:" + +#. Prefix in Name +#: ../data/glade/vcard_information_window.glade.h:34 +msgid "Prefix:" +msgstr "Prefijo" + +#: ../data/glade/vcard_information_window.glade.h:35 +msgid "Resource:" +msgstr "Recurso:" + +#: ../data/glade/vcard_information_window.glade.h:36 +msgid "Role:" +msgstr "Puesto:" + +#: ../data/glade/vcard_information_window.glade.h:37 +msgid "Set _Avatar" +msgstr "Definir Avatar" + +#: ../data/glade/vcard_information_window.glade.h:38 +msgid "State:" +msgstr "Estado:" + +#: ../data/glade/vcard_information_window.glade.h:39 +msgid "Status:" +msgstr "Estado:" + +#: ../data/glade/vcard_information_window.glade.h:40 +msgid "Street:" +msgstr "Calle:" + +#: ../data/glade/vcard_information_window.glade.h:41 +msgid "Subscription:" +msgstr "Subscripción:" + +#. Suffix in Name +#: ../data/glade/vcard_information_window.glade.h:43 +msgid "Suffix:" +msgstr "Sufijo:" + +#: ../data/glade/vcard_information_window.glade.h:44 +msgid "Work" +msgstr "Trabajo" + +#: ../data/glade/vcard_information_window.glade.h:45 +msgid "_Log conversation history" +msgstr "Histórico de conversaciones" + +#: ../data/glade/vcard_information_window.glade.h:46 +msgid "_Publish" +msgstr "_Publicar" + +#: ../data/glade/vcard_information_window.glade.h:47 +msgid "_Retrieve" +msgstr "_Recuperar" + +#: ../data/glade/xml_console_window.glade.h:1 +msgid "Jabber Traffic" +msgstr "Tráfico de Jabber" + +#: ../data/glade/xml_console_window.glade.h:2 +msgid "XML Input" +msgstr "Entrada de XML" + +#. XML Console enable checkbutton +#: ../data/glade/xml_console_window.glade.h:4 +msgid "Enable" +msgstr "Activar" + +#. Info/Query make the "IQ" initials. So translate like this 'YourLang/YourLang (Info/Query)'. Thanks (it's a tooltip so width is not a problem) +#: ../data/glade/xml_console_window.glade.h:6 +msgid "Info/Query" +msgstr "Info/Consulta" + +#. Info/Query: all(?) jabber xml start with Whom do you want to ban?\n" "\n" msgstr "¿Qué quieres hacer?" -#: ../src/config.py:2023 +#: ../src/config.py:2133 msgid "Adding Member..." msgstr "" -#: ../src/config.py:2024 +#: ../src/config.py:2134 #, fuzzy msgid "" "Whom do you want to make a member?\n" "\n" msgstr "¿Qué quieres hacer?" -#: ../src/config.py:2026 +#: ../src/config.py:2136 msgid "Adding Owner..." msgstr "" -#: ../src/config.py:2027 +#: ../src/config.py:2137 #, fuzzy msgid "" "Whom do you want to make a owner?\n" "\n" msgstr "¿Qué quieres hacer?" -#: ../src/config.py:2029 +#: ../src/config.py:2139 #, fuzzy msgid "Adding Administrator..." msgstr "_Administrador" -#: ../src/config.py:2030 +#: ../src/config.py:2140 #, fuzzy msgid "" "Whom do you want to make an administrator?\n" "\n" msgstr "¿Qué quieres hacer?" -#: ../src/config.py:2031 +#: ../src/config.py:2141 msgid "" "Can be one of the following:\n" "1. user@domain/resource (only that resource matches).\n" @@ -419,87 +2621,91 @@ msgid "" "domain/resource, or address containing a subdomain." msgstr "" -#: ../src/config.py:2127 +#: ../src/config.py:2238 #, python-format msgid "Removing %s account" msgstr "Eliminando la cuenta %s" -#: ../src/config.py:2144 ../src/roster_window.py:1859 +#: ../src/config.py:2255 ../src/roster_window.py:2147 msgid "Password Required" msgstr "Contraseña requerida" -#: ../src/config.py:2145 ../src/roster_window.py:1860 +#: ../src/config.py:2256 ../src/roster_window.py:2148 #, python-format msgid "Enter your password for account %s" msgstr "Introduce contraseña para la cuenta %s" -#: ../src/config.py:2146 ../src/roster_window.py:1861 +#: ../src/config.py:2257 ../src/roster_window.py:2149 msgid "Save password" msgstr "Guardar contraseña" -#: ../src/config.py:2159 +#: ../src/config.py:2270 #, python-format msgid "Account \"%s\" is connected to the server" msgstr "La cuenta \"%s\" está conectada al servidor" -#: ../src/config.py:2160 +#: ../src/config.py:2271 msgid "If you remove it, the connection will be lost." msgstr "Si la eliminas, se perderá la conexión con el servidor" -#: ../src/config.py:2295 +#: ../src/config.py:2356 +msgid "Enter and leave only" +msgstr "" + +#: ../src/config.py:2426 msgid "New Room" msgstr "Nuevo salón" -#: ../src/config.py:2326 +#: ../src/config.py:2457 msgid "This bookmark has invalid data" msgstr "Este marcador tiene información no válida" -#: ../src/config.py:2327 +#: ../src/config.py:2458 msgid "" "Please be sure to fill out server and room fields or remove this bookmark." msgstr "" "Por favor, asegúrate de rellenar los campos de servidor y salón o elimina " "este marcador." -#: ../src/config.py:2564 +#: ../src/config.py:2712 msgid "Invalid username" msgstr "Nombre de usuario no válido" -#: ../src/config.py:2565 +#: ../src/config.py:2713 msgid "You must provide a username to configure this account." msgstr "Debes proporcionar un nombre para configurar esta cuenta." -#: ../src/config.py:2574 ../src/dialogs.py:1036 +#: ../src/config.py:2722 ../src/dialogs.py:1248 msgid "Invalid password" msgstr "Contraseña no válida" -#: ../src/config.py:2575 +#: ../src/config.py:2723 msgid "You must enter a password for the new account." msgstr "Debes introducir una contraseña para la nueva cuenta" -#: ../src/config.py:2579 ../src/dialogs.py:1041 +#: ../src/config.py:2727 ../src/dialogs.py:1253 msgid "Passwords do not match" msgstr "Las contraseñas no coinciden" -#: ../src/config.py:2580 ../src/dialogs.py:1042 +#: ../src/config.py:2728 ../src/dialogs.py:1254 msgid "The passwords typed in both fields must be identical." msgstr "Las contraseñas escritas en ambos campos deben ser idénticas." -#: ../src/config.py:2599 +#: ../src/config.py:2747 #, fuzzy msgid "Duplicate Jabber ID" msgstr "ID de Jabber no válida" -#: ../src/config.py:2600 +#: ../src/config.py:2748 #, fuzzy msgid "This account is already configured in Gajim." msgstr "Este contacto ya está listado en tu roster." -#: ../src/config.py:2617 +#: ../src/config.py:2765 msgid "Account has been added successfully" msgstr "La cuenta ha sido añadida con éxito" -#: ../src/config.py:2618 ../src/config.py:2651 +#: ../src/config.py:2766 ../src/config.py:2799 msgid "" "You can set advanced account options by pressing Advanced button, or later " "by clicking in Accounts menuitem under Edit menu from the main window." @@ -508,23 +2714,23 @@ msgstr "" "Avanzado, o más tarde mediante el submenú Cuentas del menú Editar de la " "ventana principal." -#: ../src/config.py:2650 +#: ../src/config.py:2798 msgid "Your new account has been created successfully" msgstr "Tu nueva cuenta ha sido creada con éxito" -#: ../src/config.py:2666 +#: ../src/config.py:2814 msgid "An error occured during account creation" msgstr "Ha ocurrido un error durante la creación de la cuenta" -#: ../src/config.py:2723 +#: ../src/config.py:2871 msgid "Account name is in use" msgstr "El nombre de la cuenta está en uso" -#: ../src/config.py:2724 +#: ../src/config.py:2872 msgid "You already have an account using this name." msgstr "Ya tienes una cuenta usando este nombre" -#: ../src/conversation_textview.py:182 +#: ../src/conversation_textview.py:272 msgid "" "Text below this line is what has been said since the last time you paid " "attention to this group chat" @@ -532,397 +2738,518 @@ msgstr "" "El texto bajo esta línea es lo que ha sido dicho desde la última vez que " "prestaste atención a este salón de charla" -#: ../src/conversation_textview.py:239 +#: ../src/conversation_textview.py:331 #, python-format msgid "Actions for \"%s\"" msgstr "Acciones para \"%s\"" -#: ../src/conversation_textview.py:251 +#: ../src/conversation_textview.py:343 msgid "Read _Wikipedia Article" msgstr "Leer artículo de _Wikipedia" -#: ../src/conversation_textview.py:255 +#: ../src/conversation_textview.py:348 msgid "Look it up in _Dictionary" msgstr "Buscarlo en el _Diccionario" #. we must have %s in the url if not WIKTIONARY -#: ../src/conversation_textview.py:270 +#: ../src/conversation_textview.py:364 #, python-format msgid "Dictionary URL is missing an \"%s\" and it is not WIKTIONARY" msgstr "Falta un \"%s\" en la URL del Diccionario y no está en WIKTIONARY" #. we must have %s in the url -#: ../src/conversation_textview.py:281 +#: ../src/conversation_textview.py:376 #, python-format msgid "Web Search URL is missing an \"%s\"" msgstr "Falta un \"%s\" en la URL de la búsqueda web" -#: ../src/conversation_textview.py:284 +#: ../src/conversation_textview.py:379 msgid "Web _Search for it" msgstr "_Buscarlo en la web" -#: ../src/conversation_textview.py:574 +#: ../src/conversation_textview.py:675 msgid "Yesterday" msgstr "Ayer" #. the number is >= 2 #. %i is day in year (1-365), %d (1-31) we want %i -#: ../src/conversation_textview.py:578 +#: ../src/conversation_textview.py:679 #, python-format msgid "%i days ago" msgstr "hace %i días" #. if we have subject, show it too! -#: ../src/conversation_textview.py:634 +#: ../src/conversation_textview.py:755 #, python-format msgid "Subject: %s\n" msgstr "Tema: %s\n" #. only say that to non Windows users -#: ../src/dbus_support.py:34 +#: ../src/dbus_support.py:32 msgid "D-Bus python bindings are missing in this computer" msgstr "Los enlaces D-Bus de python no se encuentran en este ordenador" -#: ../src/dbus_support.py:35 +#: ../src/dbus_support.py:33 msgid "D-Bus capabilities of Gajim cannot be used" msgstr "Las capacidades D-Bus de Gajim no pueden ser usadas" -#: ../src/dialogs.py:64 -#, python-format -msgid "Contact's name: %s" +#: ../src/dialogs.py:57 +#, fuzzy, python-format +msgid "Contact name: %s" msgstr "Nombre del contacto : %s" -#: ../src/dialogs.py:66 +#: ../src/dialogs.py:59 #, python-format msgid "JID: %s" msgstr "JID : %s" -#: ../src/dialogs.py:169 +#: ../src/dialogs.py:204 msgid "Group" msgstr "Grupo" -#: ../src/dialogs.py:176 +#: ../src/dialogs.py:211 msgid "In the group" msgstr "En el grupo" -#: ../src/dialogs.py:226 +#: ../src/dialogs.py:261 msgid "KeyID" msgstr "KeyID" -#: ../src/dialogs.py:229 +#: ../src/dialogs.py:264 msgid "Contact name" msgstr "Nombre de contacto" -#: ../src/dialogs.py:263 +#: ../src/dialogs.py:298 #, python-format msgid "%s Status Message" msgstr "Mensaje de estado %s" -#: ../src/dialogs.py:265 +#: ../src/dialogs.py:300 msgid "Status Message" msgstr "Mensaje de estado" -#: ../src/dialogs.py:340 +#: ../src/dialogs.py:375 #, fuzzy msgid "Save as Preset Status Message" msgstr "Mensajes de estado predefinidos" -#: ../src/dialogs.py:341 +#: ../src/dialogs.py:376 #, fuzzy msgid "Please type a name for this status message" msgstr "Escribe tu nuevo mensaje de estado:" -#: ../src/dialogs.py:369 +#: ../src/dialogs.py:396 +#, fuzzy +msgid "Jabber ID" +msgstr "ID de Jabber:" + +#: ../src/dialogs.py:397 +#, fuzzy +msgid "AIM Address" +msgstr "Dirección" + +#: ../src/dialogs.py:398 +msgid "GG Number" +msgstr "" + +#: ../src/dialogs.py:399 +msgid "ICQ Number" +msgstr "" + +#: ../src/dialogs.py:400 +#, fuzzy +msgid "MSN Address" +msgstr "Dirección" + +#: ../src/dialogs.py:401 +#, fuzzy +msgid "Yahoo! Address" +msgstr "Dirección" + +#: ../src/dialogs.py:436 #, python-format msgid "Please fill in the data of the contact you want to add in account %s" msgstr "" "Por favor, introduce la inforamción del contacto que quieres añadir a la " "cuenta %s" -#: ../src/dialogs.py:371 +#: ../src/dialogs.py:438 msgid "Please fill in the data of the contact you want to add" msgstr "Por favor, rellena la información del contacto que quieres añadir" -#. the user can be in mutiple groups, see in all of them -#: ../src/dialogs.py:380 ../src/disco.py:118 ../src/disco.py:119 -#: ../src/disco.py:1258 ../src/roster_window.py:214 -#: ../src/roster_window.py:275 ../src/roster_window.py:310 -#: ../src/roster_window.py:330 ../src/roster_window.py:354 -#: ../src/roster_window.py:2940 ../src/roster_window.py:2942 -#: ../src/systray.py:291 ../src/common/helpers.py:42 +#: ../src/dialogs.py:446 ../src/disco.py:109 ../src/disco.py:110 +#: ../src/disco.py:1252 ../src/roster_window.py:216 +#: ../src/roster_window.py:282 ../src/roster_window.py:318 +#: ../src/roster_window.py:370 ../src/roster_window.py:397 +#: ../src/roster_window.py:3273 ../src/roster_window.py:3275 +#: ../src/common/helpers.py:40 msgid "Transports" msgstr "Transportes" -#: ../src/dialogs.py:452 ../src/dialogs.py:458 +#: ../src/dialogs.py:584 ../src/dialogs.py:590 msgid "Invalid User ID" msgstr "ID de Usuario no válida" -#: ../src/dialogs.py:459 +#: ../src/dialogs.py:591 #, fuzzy msgid "The user ID must not contain a resource." msgstr "Este servicio no contiene elementos para navegar." -#: ../src/dialogs.py:466 +#: ../src/dialogs.py:605 msgid "Contact already in roster" msgstr "Contacto ya presente en el roster" -#: ../src/dialogs.py:467 +#: ../src/dialogs.py:606 msgid "This contact is already listed in your roster." msgstr "Este contacto ya está listado en tu roster." -#: ../src/dialogs.py:528 +#: ../src/dialogs.py:638 +#, fuzzy +msgid "User ID" +msgstr "Identificador:" + +#: ../src/dialogs.py:692 msgid "A GTK+ jabber client" msgstr "Un cliente de Jabber en GTK" -#: ../src/dialogs.py:539 +#: ../src/dialogs.py:693 +msgid "GTK+ Version:" +msgstr "" + +#: ../src/dialogs.py:694 +msgid "PyGTK Version:" +msgstr "" + +#: ../src/dialogs.py:702 +msgid "Current Developers:" +msgstr "" + +#: ../src/dialogs.py:704 msgid "Past Developers:" msgstr "" -#: ../src/dialogs.py:543 +#: ../src/dialogs.py:708 msgid "THANKS:" msgstr "" -#. remove one english setence +#. remove one english sentence #. and add it manually as translatable -#: ../src/dialogs.py:550 +#: ../src/dialogs.py:714 msgid "Last but not least, we would like to thank all the package maintainers." msgstr "" #. here you write your name in the form Name FamilyName -#: ../src/dialogs.py:564 +#: ../src/dialogs.py:728 msgid "translator-credits" -msgstr "créditos de traducción" +msgstr "Membris Khan " -#: ../src/dialogs.py:826 +#: ../src/dialogs.py:854 +#, fuzzy, python-format +msgid "Unable to bind to port %s." +msgstr "No se pudo entrar al salón" + +#: ../src/dialogs.py:855 +msgid "" +"Maybe you have another running instance of Gajim. File Transfer will be " +"canceled." +msgstr "" + +#: ../src/dialogs.py:997 #, python-format msgid "Subscription request for account %s from %s" msgstr "Petición de adición para la cuenta %s de %s" -#: ../src/dialogs.py:829 +#: ../src/dialogs.py:1000 #, python-format msgid "Subscription request from %s" msgstr "Petición de adición de %s" -#: ../src/dialogs.py:872 +#: ../src/dialogs.py:1044 ../src/roster_window.py:590 +#, python-format +msgid "You are already in room %s" +msgstr "Ya estás en el salón %s" + +#: ../src/dialogs.py:1052 msgid "You can not join a group chat unless you are connected." msgstr "No puedes entrar a un salón de chat hasta que no estés conectado." -#: ../src/dialogs.py:885 +#: ../src/dialogs.py:1065 #, python-format msgid "Join Group Chat with account %s" msgstr "Entrar a un salón de chat con la cuenta %s" -#: ../src/dialogs.py:887 ../src/gtkgui.glade.h:177 -msgid "Join Group Chat" -msgstr "Entrar a un salón de chat" - -#: ../src/dialogs.py:976 +#: ../src/dialogs.py:1158 #, fuzzy msgid "Invalid room or server name" msgstr "Nombre de usuario no válido" -#: ../src/dialogs.py:977 +#: ../src/dialogs.py:1159 msgid "The room name or server name has not allowed characters." msgstr "" -#: ../src/dialogs.py:996 +#: ../src/dialogs.py:1180 #, python-format msgid "Start Chat with account %s" msgstr "Iniciar conversación con la cuenta %s" -#: ../src/dialogs.py:998 +#: ../src/dialogs.py:1182 msgid "Start Chat" msgstr "Iniciar conversación" -#: ../src/dialogs.py:999 +#: ../src/dialogs.py:1183 +#, fuzzy msgid "" -"Fill in the contact ID of the contact you would like\n" +"Fill in the jid, or nick of the contact you would like\n" "to send a chat message to:" msgstr "" "Introduce la ID del contacto al que quieres enviar\n" "un mensaje de charla:" #. if offline or connecting -#: ../src/dialogs.py:1007 ../src/dialogs.py:1330 ../src/dialogs.py:1450 +#: ../src/dialogs.py:1208 ../src/dialogs.py:1562 ../src/dialogs.py:1686 msgid "Connection not available" msgstr "Conexión no disponible" -#: ../src/dialogs.py:1008 ../src/dialogs.py:1331 ../src/dialogs.py:1451 +#: ../src/dialogs.py:1209 ../src/dialogs.py:1563 ../src/dialogs.py:1687 #, python-format msgid "Please make sure you are connected with \"%s\"." msgstr "Por favor, asegúrate de estar conectado con \"%s\"." -#: ../src/dialogs.py:1018 +#: ../src/dialogs.py:1218 ../src/dialogs.py:1221 +#, fuzzy +msgid "Invalid JID" +msgstr "ID de Jabber no válida" + +#: ../src/dialogs.py:1221 +#, fuzzy, python-format +msgid "Unable to parse \"%s\"." +msgstr "No se puede escribir el archivo en %s" + +#: ../src/dialogs.py:1230 msgid "Without a connection, you can not change your password." msgstr "Sin una conexión, no puedes cambiar tu contraseña." -#: ../src/dialogs.py:1037 +#: ../src/dialogs.py:1249 msgid "You must enter a password." msgstr "Debes introducir una contraseña." #. img to display #. default value -#: ../src/dialogs.py:1083 ../src/gajim.py:443 ../src/notify.py:129 +#: ../src/dialogs.py:1295 ../src/notify.py:194 ../src/notify.py:355 msgid "Contact Signed In" msgstr "Contacto conectado" -#: ../src/dialogs.py:1085 ../src/gajim.py:474 ../src/notify.py:131 +#: ../src/dialogs.py:1297 ../src/notify.py:202 ../src/notify.py:357 msgid "Contact Signed Out" msgstr "Contacto desconectado" #. chat message -#: ../src/dialogs.py:1087 ../src/gajim.py:609 ../src/notify.py:133 +#: ../src/dialogs.py:1299 ../src/notify.py:221 ../src/notify.py:359 msgid "New Message" msgstr "Nuevo mensaje" #. single message -#: ../src/dialogs.py:1087 ../src/gajim.py:603 ../src/notify.py:133 +#: ../src/dialogs.py:1299 ../src/notify.py:206 ../src/notify.py:359 msgid "New Single Message" msgstr "Nuevo mensaje" -#: ../src/dialogs.py:1088 ../src/gajim.py:586 ../src/notify.py:134 +#. private message +#: ../src/dialogs.py:1300 ../src/notify.py:213 ../src/notify.py:360 msgid "New Private Message" msgstr "Nuevo mensaje privado" -#: ../src/dialogs.py:1088 ../src/gajim.py:1049 ../src/notify.py:142 +#: ../src/dialogs.py:1300 ../src/gajim.py:1072 ../src/notify.py:368 #, fuzzy msgid "New E-mail" msgstr "Correo-e" -#: ../src/dialogs.py:1090 ../src/gajim.py:1187 ../src/notify.py:136 +#: ../src/dialogs.py:1302 ../src/gajim.py:1215 ../src/notify.py:362 msgid "File Transfer Request" msgstr "Petición de transferencia de archivo" -#: ../src/dialogs.py:1092 ../src/gajim.py:1035 ../src/gajim.py:1164 -#: ../src/notify.py:138 +#: ../src/dialogs.py:1304 ../src/gajim.py:1050 ../src/gajim.py:1192 +#: ../src/notify.py:364 msgid "File Transfer Error" msgstr "Error en la transferencia del archivo" -#: ../src/dialogs.py:1094 ../src/gajim.py:1222 ../src/gajim.py:1244 -#: ../src/gajim.py:1261 ../src/notify.py:140 +#: ../src/dialogs.py:1306 ../src/gajim.py:1250 ../src/gajim.py:1272 +#: ../src/gajim.py:1289 ../src/notify.py:366 msgid "File Transfer Completed" msgstr "Transferencia del archivo finalizada" -#: ../src/dialogs.py:1095 ../src/gajim.py:1225 ../src/notify.py:140 +#: ../src/dialogs.py:1307 ../src/gajim.py:1253 ../src/notify.py:366 msgid "File Transfer Stopped" msgstr "Transferencia del archivo detenida" -#: ../src/dialogs.py:1097 ../src/gajim.py:953 ../src/notify.py:144 +#: ../src/dialogs.py:1309 ../src/gajim.py:948 ../src/notify.py:370 #, fuzzy msgid "Groupchat Invitation" msgstr "Ninguno" -#. FIXME: for Received with should become 'in' -#: ../src/dialogs.py:1262 -#, python-format -msgid "Single Message with account %s" +#: ../src/dialogs.py:1311 ../src/notify.py:186 ../src/notify.py:372 +#, fuzzy +msgid "Contact Changed Status" +msgstr "Contacto desconectado" + +#: ../src/dialogs.py:1492 +#, fuzzy, python-format +msgid "Single Message using account %s" msgstr "Nuevo mensaje con la cuenta %s" -#: ../src/dialogs.py:1264 +#: ../src/dialogs.py:1494 +#, fuzzy, python-format +msgid "Single Message in account %s" +msgstr "Nuevo mensaje con la cuenta %s" + +#: ../src/dialogs.py:1496 msgid "Single Message" msgstr "Mensaje:" #. prepare UI for Sending -#: ../src/dialogs.py:1267 +#: ../src/dialogs.py:1499 #, python-format msgid "Send %s" msgstr "Enviar %s" #. prepare UI for Receiving -#: ../src/dialogs.py:1290 +#: ../src/dialogs.py:1522 #, python-format msgid "Received %s" msgstr "Recibido %s" #. we create a new blank window to send and we preset RE: and to jid -#: ../src/dialogs.py:1355 +#: ../src/dialogs.py:1589 #, python-format msgid "RE: %s" msgstr "RE: %s" -#: ../src/dialogs.py:1356 +#: ../src/dialogs.py:1590 #, python-format msgid "%s wrote:\n" msgstr "%s escribió:\n" -#: ../src/dialogs.py:1400 +#: ../src/dialogs.py:1634 #, python-format msgid "XML Console for %s" msgstr "Consola XML para %s" -#: ../src/dialogs.py:1402 +#: ../src/dialogs.py:1636 msgid "XML Console" msgstr "Consola XML" +#: ../src/dialogs.py:1755 +#, python-format +msgid "Privacy List %s" +msgstr "" + +#: ../src/dialogs.py:1759 +#, python-format +msgid "Privacy List for %s" +msgstr "" + +#: ../src/dialogs.py:1851 +#, fuzzy +msgid "Edit a rule" +msgstr "Formato del renglón" + +#: ../src/dialogs.py:1936 +#, fuzzy +msgid "Add a rule" +msgstr "Formato del renglón" + +#: ../src/dialogs.py:2033 +#, python-format +msgid "Privacy Lists for %s" +msgstr "" + +#: ../src/dialogs.py:2035 +#, fuzzy +msgid "Privacy Lists" +msgstr "Iniciar conversación" + #. FIXME: use nickname instead of contact_jid -#: ../src/dialogs.py:1488 +#: ../src/dialogs.py:2124 #, fuzzy, python-format msgid "%(contact_jid)s has invited you to %(room_jid)s room" msgstr "%(contact_jid)s invitado a %(room_jid)s." #. only if not None and not '' -#: ../src/dialogs.py:1494 +#: ../src/dialogs.py:2130 #, python-format msgid "Comment: %s" msgstr "Comentario: %s" -#: ../src/dialogs.py:1554 +#: ../src/dialogs.py:2193 msgid "Choose Sound" msgstr "Elegir sonido" -#: ../src/dialogs.py:1564 ../src/dialogs.py:1607 +#: ../src/dialogs.py:2203 ../src/dialogs.py:2248 msgid "All files" msgstr "Todos los archivos" -#: ../src/dialogs.py:1569 +#: ../src/dialogs.py:2208 msgid "Wav Sounds" msgstr "Sonidos Wav" -#: ../src/dialogs.py:1597 +#: ../src/dialogs.py:2238 msgid "Choose Image" msgstr "Elegir Imagen" -#: ../src/dialogs.py:1612 +#: ../src/dialogs.py:2253 msgid "Images" msgstr "Imágenes" -#: ../src/dialogs.py:1658 +#: ../src/dialogs.py:2298 #, python-format msgid "When %s becomes:" msgstr "" -#: ../src/dialogs.py:1660 +#: ../src/dialogs.py:2300 #, python-format msgid "Adding Special Notification for %s" msgstr "" -#: ../src/disco.py:117 +#. # means number +#: ../src/dialogs.py:2371 +msgid "#" +msgstr "" + +#: ../src/dialogs.py:2377 +#, fuzzy +msgid "Condition" +msgstr "Conexión" + +#: ../src/dialogs.py:2498 +msgid "when I am " +msgstr "" + +#: ../src/disco.py:108 msgid "Others" msgstr "Others" #. conference is a category for listing mostly groupchats in service discovery -#: ../src/disco.py:121 +#: ../src/disco.py:112 msgid "Conference" msgstr "Conferencia" -#: ../src/disco.py:420 +#: ../src/disco.py:412 msgid "Without a connection, you can not browse available services" msgstr "Sin una conexión no puedes navegar los servicios disponibles" -#: ../src/disco.py:499 +#: ../src/disco.py:490 #, fuzzy, python-format msgid "Service Discovery using account %s" msgstr "Gestión de servicios usando la cuenta %s" -#: ../src/disco.py:500 +#: ../src/disco.py:491 msgid "Service Discovery" msgstr "Gestión de servicios" -#: ../src/disco.py:637 +#: ../src/disco.py:628 msgid "The service could not be found" msgstr "El servicio no fue encontrado" -#: ../src/disco.py:638 +#: ../src/disco.py:629 msgid "" "There is no service at the address you entered, or it is not responding. " "Check the address and try again." @@ -930,172 +3257,180 @@ msgstr "" "No hay servicio en la dirección introducida, o no está respondiendo. " "Comprueba la dirección e inténtalo de nuevo." -#: ../src/disco.py:642 ../src/disco.py:924 +#: ../src/disco.py:633 ../src/disco.py:915 msgid "The service is not browsable" msgstr "El servicio no es navegable" -#: ../src/disco.py:643 +#: ../src/disco.py:634 msgid "This type of service does not contain any items to browse." msgstr "Este tipo de servicio no contiene ningún elemento a navegar." -#: ../src/disco.py:723 +#: ../src/disco.py:714 #, fuzzy, python-format msgid "Browsing %s using account %s" msgstr "usando la cuenta %s" -#: ../src/disco.py:762 +#: ../src/disco.py:753 msgid "_Browse" msgstr "_Navegar" -#: ../src/disco.py:925 +#: ../src/disco.py:916 msgid "This service does not contain any items to browse." msgstr "Este servicio no contiene elementos para navegar." -#: ../src/disco.py:1146 ../src/disco.py:1263 +#: ../src/disco.py:1137 ../src/disco.py:1257 msgid "Re_gister" msgstr "_Suscribir" -#: ../src/disco.py:1154 ../src/disco.py:1516 ../src/gtkgui.glade.h:350 -msgid "_Join" -msgstr "_Entrar" - -#: ../src/disco.py:1261 ../src/gtkgui.glade.h:334 ../src/roster_window.py:1462 -msgid "_Edit" -msgstr "_Editar" - -#: ../src/disco.py:1300 +#: ../src/disco.py:1294 #, python-format msgid "Scanning %d / %d.." msgstr "Escaneando %d / %d.." #. Users column -#: ../src/disco.py:1482 +#: ../src/disco.py:1476 msgid "Users" msgstr "Usuarios" #. Description column -#: ../src/disco.py:1489 +#: ../src/disco.py:1483 msgid "Description" msgstr "Descripción" -#: ../src/filetransfers_window.py:81 +#: ../src/filetransfers_window.py:72 msgid "File" msgstr "Archivo" -#: ../src/filetransfers_window.py:96 +#: ../src/filetransfers_window.py:87 msgid "Time" msgstr "Hora" -#: ../src/filetransfers_window.py:108 +#: ../src/filetransfers_window.py:99 msgid "Progress" msgstr "Progreso" -#: ../src/filetransfers_window.py:176 ../src/filetransfers_window.py:238 +#: ../src/filetransfers_window.py:163 ../src/filetransfers_window.py:223 #, python-format msgid "Filename: %s" msgstr "Nombre de archivo: %s" -#: ../src/filetransfers_window.py:178 ../src/filetransfers_window.py:308 +#: ../src/filetransfers_window.py:164 ../src/filetransfers_window.py:291 #, python-format msgid "Size: %s" msgstr "Tamaño: %s" #. You is a reply of who sent a file #. You is a reply of who received a file -#: ../src/filetransfers_window.py:187 ../src/filetransfers_window.py:197 -#: ../src/history_manager.py:452 +#: ../src/filetransfers_window.py:173 ../src/filetransfers_window.py:183 +#: ../src/history_manager.py:454 msgid "You" msgstr "Tú" -#: ../src/filetransfers_window.py:188 ../src/filetransfers_window.py:240 +#: ../src/filetransfers_window.py:174 #, python-format msgid "Sender: %s" msgstr "Sender: %s" -#: ../src/filetransfers_window.py:189 ../src/filetransfers_window.py:555 -#: ../src/tooltips.py:617 +#: ../src/filetransfers_window.py:175 ../src/filetransfers_window.py:556 +#: ../src/tooltips.py:639 msgid "Recipient: " msgstr "Recipiente: " -#: ../src/filetransfers_window.py:200 +#: ../src/filetransfers_window.py:186 #, python-format msgid "Saved in: %s" msgstr "Guardado en: %s" -#: ../src/filetransfers_window.py:203 +#: ../src/filetransfers_window.py:188 msgid "File transfer completed" msgstr "Transferencia de archivo finalizada" -#: ../src/filetransfers_window.py:205 ../src/gtkgui.glade.h:366 -msgid "_Open Containing Folder" -msgstr "_Abrir carpeta contenedora" - -#: ../src/filetransfers_window.py:219 ../src/filetransfers_window.py:227 +#: ../src/filetransfers_window.py:204 ../src/filetransfers_window.py:212 msgid "File transfer canceled" msgstr "Transferencia de archivo cancelada" -#: ../src/filetransfers_window.py:219 ../src/filetransfers_window.py:228 +#: ../src/filetransfers_window.py:204 ../src/filetransfers_window.py:213 msgid "Connection with peer cannot be established." msgstr "La conexión con el cliente no se pudo establecer." -#: ../src/filetransfers_window.py:242 +#: ../src/filetransfers_window.py:224 +#, fuzzy, python-format +msgid "Recipient: %s" +msgstr "Recipiente: " + +#: ../src/filetransfers_window.py:225 msgid "File transfer stopped by the contact of the other side" msgstr "Transferencia de archivo detenida por el contacto de la otra parte" -#: ../src/filetransfers_window.py:259 +#: ../src/filetransfers_window.py:242 msgid "Choose File to Send..." msgstr "Elige archivo a enviar..." -#. Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector) -#: ../src/filetransfers_window.py:266 ../src/gtkgui.glade.h:390 -msgid "_Send" -msgstr "_Enviar" - -#: ../src/filetransfers_window.py:273 +#: ../src/filetransfers_window.py:256 msgid "Gajim cannot access this file" msgstr "Gajim no puede acceder a este archivo" -#: ../src/filetransfers_window.py:274 +#: ../src/filetransfers_window.py:257 msgid "This file is being used by another process." msgstr "Este archivo está siendo usado por otro proceso." -#: ../src/filetransfers_window.py:306 +#: ../src/filetransfers_window.py:289 #, python-format msgid "File: %s" msgstr "Archivo: %s" -#: ../src/filetransfers_window.py:311 +#: ../src/filetransfers_window.py:294 #, python-format msgid "Type: %s" msgstr "Tipo: %s" -#: ../src/filetransfers_window.py:313 +#: ../src/filetransfers_window.py:296 #, python-format msgid "Description: %s" msgstr "Descripción: %s" -#: ../src/filetransfers_window.py:314 +#: ../src/filetransfers_window.py:297 #, python-format msgid "%s wants to send you a file:" msgstr "%s quiere enviarte un archivo:" -#: ../src/filetransfers_window.py:329 +#: ../src/filetransfers_window.py:311 +#, python-format +msgid "Cannot overwrite existing file \"%s\"" +msgstr "" + +#: ../src/filetransfers_window.py:312 +msgid "" +"A file with this name already exists and you do not have permission to " +"overwrite it." +msgstr "" + +#: ../src/filetransfers_window.py:319 ../src/gtkgui_helpers.py:685 msgid "This file already exists" msgstr "Este archivo ya existe" -#: ../src/filetransfers_window.py:329 +#: ../src/filetransfers_window.py:319 ../src/gtkgui_helpers.py:685 #, fuzzy msgid "What do you want to do?" msgstr "¿Qué quieres hacer?" -#: ../src/filetransfers_window.py:344 +#: ../src/filetransfers_window.py:331 +#, python-format +msgid "Directory \"%s\" is not writable" +msgstr "" + +#: ../src/filetransfers_window.py:331 +msgid "You do not have permission to create files in this directory." +msgstr "" + +#: ../src/filetransfers_window.py:341 msgid "Save File as..." msgstr "Guardar archivo como..." #. Print remaining time in format 00:00:00 #. You can change the places of (hours), (minutes), (seconds) - #. they are not translatable. -#: ../src/filetransfers_window.py:419 +#: ../src/filetransfers_window.py:420 #, python-format msgid "%(hours)02.d:%(minutes)02.d:%(seconds)02.d" msgstr "" @@ -1103,29 +3438,29 @@ msgstr "" #. This should make the string Kb/s, #. where 'Kb' part is taken from %s. #. Only the 's' after / (which means second) should be translated. -#: ../src/filetransfers_window.py:491 +#: ../src/filetransfers_window.py:492 #, python-format msgid "(%(filesize_unit)s/s)" msgstr "" -#: ../src/filetransfers_window.py:527 ../src/filetransfers_window.py:530 +#: ../src/filetransfers_window.py:528 ../src/filetransfers_window.py:531 msgid "Invalid File" msgstr "Archivo no válido" -#: ../src/filetransfers_window.py:527 +#: ../src/filetransfers_window.py:528 msgid "File: " msgstr "Archivo: " -#: ../src/filetransfers_window.py:531 +#: ../src/filetransfers_window.py:532 msgid "It is not possible to send empty files" msgstr "No es posible enviar archivos vacíos" -#: ../src/filetransfers_window.py:551 ../src/tooltips.py:498 -#: ../src/tooltips.py:607 +#: ../src/filetransfers_window.py:552 ../src/tooltips.py:511 +#: ../src/tooltips.py:629 msgid "Name: " msgstr "Nombre: " -#: ../src/filetransfers_window.py:553 ../src/tooltips.py:611 +#: ../src/filetransfers_window.py:554 ../src/tooltips.py:633 msgid "Sender: " msgstr "Remitente: " @@ -1133,32 +3468,28 @@ msgstr "Remitente: " msgid "Pause" msgstr "Pausa" -#: ../src/filetransfers_window.py:753 ../src/gtkgui.glade.h:328 -msgid "_Continue" -msgstr "_Continuar" - -#: ../src/gajim-remote.py:84 +#: ../src/gajim-remote.py:82 msgid "shows a help on specific command" msgstr "muestra ayuda sobre un comando específico" #. User gets help for the command, specified by this parameter -#: ../src/gajim-remote.py:87 +#: ../src/gajim-remote.py:85 msgid "command" msgstr "comando" -#: ../src/gajim-remote.py:88 +#: ../src/gajim-remote.py:86 msgid "show help on command" msgstr "mostrar ayuda sobre un comando" -#: ../src/gajim-remote.py:92 +#: ../src/gajim-remote.py:90 msgid "Shows or hides the roster window" msgstr "Muestra u oculta la ventana de la lista de contactos" -#: ../src/gajim-remote.py:96 +#: ../src/gajim-remote.py:94 msgid "Popups a window with the next unread message" msgstr "Levanta una venana con el siguiente mensaje sin leer" -#: ../src/gajim-remote.py:100 +#: ../src/gajim-remote.py:98 msgid "" "Prints a list of all contacts in the roster. Each contact appear on a " "separate line" @@ -1166,45 +3497,48 @@ msgstr "" "Muestra una lista de todos los contactos en el roster. Cada contacto aparece " "en una línea distinta" -#: ../src/gajim-remote.py:102 ../src/gajim-remote.py:115 -#: ../src/gajim-remote.py:125 ../src/gajim-remote.py:138 -#: ../src/gajim-remote.py:159 ../src/gajim-remote.py:189 -#: ../src/gajim-remote.py:197 ../src/gajim-remote.py:204 -#: ../src/gajim-remote.py:211 +#: ../src/gajim-remote.py:100 ../src/gajim-remote.py:114 +#: ../src/gajim-remote.py:124 ../src/gajim-remote.py:137 +#: ../src/gajim-remote.py:151 ../src/gajim-remote.py:172 +#: ../src/gajim-remote.py:202 ../src/gajim-remote.py:211 +#: ../src/gajim-remote.py:218 ../src/gajim-remote.py:225 +#: ../src/gajim-remote.py:236 msgid "account" msgstr "cuenta" -#: ../src/gajim-remote.py:102 +#: ../src/gajim-remote.py:100 msgid "show only contacts of the given account" msgstr "mostrar sólo contactos de la cuenta especificada" -#: ../src/gajim-remote.py:107 +#: ../src/gajim-remote.py:105 msgid "Prints a list of registered accounts" msgstr "Muestra una lista de cuentas registradas" -#: ../src/gajim-remote.py:111 +#: ../src/gajim-remote.py:109 msgid "Changes the status of account or accounts" msgstr "Cambia el estado de una o varias cuentas" -#: ../src/gajim-remote.py:113 +#. offline, online, chat, away, xa, dnd, invisible should not be translated +#: ../src/gajim-remote.py:112 msgid "status" msgstr "estado" -#: ../src/gajim-remote.py:113 +#: ../src/gajim-remote.py:112 msgid "one of: offline, online, chat, away, xa, dnd, invisible " msgstr "" "uno de: desconectado, en línea, libre para hablar, ausente, no disponible, " "ocupado, invisible" -#: ../src/gajim-remote.py:114 ../src/gajim-remote.py:135 +#: ../src/gajim-remote.py:113 ../src/gajim-remote.py:134 +#: ../src/gajim-remote.py:148 msgid "message" msgstr "mensaje" -#: ../src/gajim-remote.py:114 +#: ../src/gajim-remote.py:113 msgid "status message" msgstr "ensaje de estado" -#: ../src/gajim-remote.py:115 +#: ../src/gajim-remote.py:114 msgid "" "change status of account \"account\". If not specified, try to change status " "of all accounts that have \"sync with global status\" option set" @@ -1213,150 +3547,186 @@ msgstr "" "cambiar el estado de todas las cuentas que tienen la opción \"sync with " "global status\" activada" -#: ../src/gajim-remote.py:121 +#: ../src/gajim-remote.py:120 msgid "Shows the chat dialog so that you can send messages to a contact" msgstr "Muestra el diálogo de conversación para enviar mensajes a un contacto" -#: ../src/gajim-remote.py:123 +#: ../src/gajim-remote.py:122 msgid "JID of the contact that you want to chat with" msgstr "JID del contacto con el que quieres conversar" -#: ../src/gajim-remote.py:125 ../src/gajim-remote.py:189 +#: ../src/gajim-remote.py:124 ../src/gajim-remote.py:202 msgid "if specified, contact is taken from the contact list of this account" msgstr "si es especificado, el contacto es obtenido de la lista de esta cuenta" -#: ../src/gajim-remote.py:130 +#: ../src/gajim-remote.py:129 +#, fuzzy msgid "" -"Sends new message to a contact in the roster. Both OpenPGP key and account " -"are optional. If you want to set only 'account', without 'OpenPGP key', just " -"set 'OpenPGP key' to ''." +"Sends new chat message to a contact in the roster. Both OpenPGP key and " +"account are optional. If you want to set only 'account', without 'OpenPGP " +"key', just set 'OpenPGP key' to ''." msgstr "" "Envía un nuevo mensaje a un contacto en la lista de contactos. Tanto la " "clave OpenPGP como la cuenta son opcionales. Si quieres definir sólo " "'cuenta' sin 'clave pgp', sólo define 'clave pgp' a ''." -#: ../src/gajim-remote.py:134 +#: ../src/gajim-remote.py:133 ../src/gajim-remote.py:146 msgid "JID of the contact that will receive the message" msgstr "la JID del contacto que recibirá el mensaje" -#: ../src/gajim-remote.py:135 +#: ../src/gajim-remote.py:134 ../src/gajim-remote.py:148 msgid "message contents" msgstr "contenido del mensaje" -#: ../src/gajim-remote.py:136 +#: ../src/gajim-remote.py:135 ../src/gajim-remote.py:149 msgid "pgp key" msgstr "clave pgp" -#: ../src/gajim-remote.py:136 +#: ../src/gajim-remote.py:135 ../src/gajim-remote.py:149 msgid "if specified, the message will be encrypted using this public key" msgstr "si es especificado, el mensaje será encriptado usando su clave pública" -#: ../src/gajim-remote.py:138 +#: ../src/gajim-remote.py:137 ../src/gajim-remote.py:151 msgid "if specified, the message will be sent using this account" msgstr "si es especificado el mensaje será enviado a través de esta cuenta" -#: ../src/gajim-remote.py:143 +#: ../src/gajim-remote.py:142 +#, fuzzy +msgid "" +"Sends new single message to a contact in the roster. Both OpenPGP key and " +"account are optional. If you want to set only 'account', without 'OpenPGP " +"key', just set 'OpenPGP key' to ''." +msgstr "" +"Envía un nuevo mensaje a un contacto en la lista de contactos. Tanto la " +"clave OpenPGP como la cuenta son opcionales. Si quieres definir sólo " +"'cuenta' sin 'clave pgp', sólo define 'clave pgp' a ''." + +#: ../src/gajim-remote.py:147 +#, fuzzy +msgid "subject" +msgstr "Tema:" + +#: ../src/gajim-remote.py:147 +#, fuzzy +msgid "message subject" +msgstr "Mensaje" + +#: ../src/gajim-remote.py:156 msgid "Gets detailed info on a contact" msgstr "Obtener información detallada de un contacto" -#: ../src/gajim-remote.py:145 ../src/gajim-remote.py:158 -#: ../src/gajim-remote.py:188 +#: ../src/gajim-remote.py:158 ../src/gajim-remote.py:171 +#: ../src/gajim-remote.py:201 ../src/gajim-remote.py:210 msgid "JID of the contact" msgstr "JID del contacto" -#: ../src/gajim-remote.py:149 +#: ../src/gajim-remote.py:162 #, fuzzy msgid "Gets detailed info on a account" msgstr "Obtener información detallada de un contacto" -#: ../src/gajim-remote.py:151 +#: ../src/gajim-remote.py:164 #, fuzzy msgid "Name of the account" msgstr "No tienes cuentas activas" -#: ../src/gajim-remote.py:155 +#: ../src/gajim-remote.py:168 msgid "Sends file to a contact" msgstr "Enviar archivo a un contacto" -#: ../src/gajim-remote.py:157 +#: ../src/gajim-remote.py:170 msgid "file" msgstr "archivo" -#: ../src/gajim-remote.py:157 +#: ../src/gajim-remote.py:170 msgid "File path" msgstr "Ruta del archivo" -#: ../src/gajim-remote.py:159 +#: ../src/gajim-remote.py:172 msgid "if specified, file will be sent using this account" msgstr "si es especificado el archivo será enviado usando esta cuenta" -#: ../src/gajim-remote.py:164 +#: ../src/gajim-remote.py:177 msgid "Lists all preferences and their values" msgstr "Lista todas las preferencias y sus valores" -#: ../src/gajim-remote.py:168 +#: ../src/gajim-remote.py:181 msgid "Sets value of 'key' to 'value'." msgstr "Define el valor de 'entrada' a 'valor'." -#: ../src/gajim-remote.py:170 +#: ../src/gajim-remote.py:183 msgid "key=value" msgstr "entrada=valor" -#: ../src/gajim-remote.py:170 +#: ../src/gajim-remote.py:183 msgid "'key' is the name of the preference, 'value' is the value to set it to" msgstr "" "'entrada' es el nombre de la preferencia, 'valor' es el valor a definir" -#: ../src/gajim-remote.py:175 +#: ../src/gajim-remote.py:188 msgid "Deletes a preference item" msgstr "Elimina un elemento de preferencia" -#: ../src/gajim-remote.py:177 +#: ../src/gajim-remote.py:190 msgid "key" msgstr "entrada" -#: ../src/gajim-remote.py:177 +#: ../src/gajim-remote.py:190 msgid "name of the preference to be deleted" msgstr "nombre de la preferencia a eliminar" -#: ../src/gajim-remote.py:181 +#: ../src/gajim-remote.py:194 msgid "Writes the current state of Gajim preferences to the .config file" msgstr "" "Escribe el estado actual de la preferencias de Gajim al archivo de " "configuración" -#: ../src/gajim-remote.py:186 +#: ../src/gajim-remote.py:199 msgid "Removes contact from roster" msgstr "Elimina contacto del roster" -#: ../src/gajim-remote.py:195 +#: ../src/gajim-remote.py:208 msgid "Adds contact to roster" msgstr "Añade contacto al roster" -#: ../src/gajim-remote.py:197 -msgid "Adds new contact to this account." +#: ../src/gajim-remote.py:210 +msgid "jid" +msgstr "" + +#: ../src/gajim-remote.py:211 +#, fuzzy +msgid "Adds new contact to this account" msgstr "Añade nuevo contacto a esta cuenta." -#: ../src/gajim-remote.py:202 +#: ../src/gajim-remote.py:216 msgid "Returns current status (the global one unless account is specified)" msgstr "Devuelve el estado actual (el global si no se especifica una cuenta)" -#: ../src/gajim-remote.py:209 +#: ../src/gajim-remote.py:223 #, fuzzy msgid "" "Returns current status message(the global one unless account is specified)" msgstr "Devuelve el estado actual (el global si no se especifica una cuenta)" -#: ../src/gajim-remote.py:216 +#: ../src/gajim-remote.py:230 #, fuzzy msgid "Returns number of unreaded messages" msgstr "Tienes mensajes sin leer" +#: ../src/gajim-remote.py:234 +msgid "Open 'Start Chat' dialog" +msgstr "" + #: ../src/gajim-remote.py:236 +#, fuzzy +msgid "Starts chat, using this account" +msgstr "Iniciar conversación con la cuenta %s" + +#: ../src/gajim-remote.py:256 msgid "Missing argument \"contact_jid\"" msgstr "No se encuentra el argumento \"contact_jid\"" -#: ../src/gajim-remote.py:255 +#: ../src/gajim-remote.py:275 #, python-format msgid "" "'%s' is not in your roster.\n" @@ -1365,16 +3735,16 @@ msgstr "" "'%s' no está en tu lista de contactos.\n" "Por favor, especifica una cuenta para enviar el mensaje." -#: ../src/gajim-remote.py:258 +#: ../src/gajim-remote.py:278 msgid "You have no active account" msgstr "No tienes cuentas activas" -#: ../src/gajim-remote.py:301 +#: ../src/gajim-remote.py:321 #, python-format msgid "Unknown D-Bus version: %s" msgstr "Versión de D-Bus desconocida: %s" -#: ../src/gajim-remote.py:328 +#: ../src/gajim-remote.py:348 #, fuzzy, python-format msgid "" "Usage: %s %s %s \n" @@ -1383,16 +3753,16 @@ msgstr "" "Modo de uso: %s %s %s \n" "\t" -#: ../src/gajim-remote.py:331 +#: ../src/gajim-remote.py:351 msgid "Arguments:" msgstr "Argumentos" -#: ../src/gajim-remote.py:335 +#: ../src/gajim-remote.py:355 #, python-format msgid "%s not found" msgstr "%s no encontrado" -#: ../src/gajim-remote.py:339 +#: ../src/gajim-remote.py:359 #, python-format msgid "" "Usage: %s command [arguments]\n" @@ -1401,7 +3771,7 @@ msgstr "" "Modo de uso: %s comando [argumentos]\n" "Comando es uno de:\n" -#: ../src/gajim-remote.py:413 +#: ../src/gajim-remote.py:433 #, python-format msgid "" "Argument \"%s\" is not specified. \n" @@ -1410,31 +3780,31 @@ msgstr "" "El argumento \"%s\" no se ha especificado. \n" "Escribe \"%s help %s\" para más información" -#: ../src/gajim.py:48 +#: ../src/gajim.py:56 msgid "Gajim needs Xserver to run. Quiting..." msgstr "Gajim necesita Xserver para funcionar. Abortando..." -#: ../src/gajim.py:52 +#: ../src/gajim.py:60 msgid "Gajim needs PyGTK 2.6 or above" msgstr "Gajim necesita PyGTK 2.6 o superior" -#: ../src/gajim.py:53 +#: ../src/gajim.py:61 msgid "Gajim needs PyGTK 2.6 or above to run. Quiting..." msgstr "Gajim necesita PyGTK 2.6 o superior para funcionar. Abortando..." -#: ../src/gajim.py:55 +#: ../src/gajim.py:63 msgid "Gajim needs GTK 2.6 or above" msgstr "Gajim necesita GTK 2.6 o superior" -#: ../src/gajim.py:56 +#: ../src/gajim.py:64 msgid "Gajim needs GTK 2.6 or above to run. Quiting..." msgstr "Gajim necesita GTK 2.6 o superior para funcionar. Abortando..." -#: ../src/gajim.py:61 +#: ../src/gajim.py:69 msgid "GTK+ runtime is missing libglade support" msgstr "La biblioteca GTK+ necesita soporte de libglade" -#: ../src/gajim.py:63 +#: ../src/gajim.py:71 #, python-format msgid "" "Please remove your current GTK+ runtime and install the latest stable " @@ -1443,7 +3813,7 @@ msgstr "" "Por favor elimina tu actual biblioteca GTK+ e instala la última versión " "estable desde %s" -#: ../src/gajim.py:65 +#: ../src/gajim.py:73 #, fuzzy msgid "" "Please make sure that GTK+ and PyGTK have libglade support in your system." @@ -1451,147 +3821,141 @@ msgstr "" "Por favor, asegúrate de que gtk y pygtk tienen soporte de libglade en este " "sistema." -#: ../src/gajim.py:70 +#: ../src/gajim.py:78 msgid "Gajim needs PySQLite2 to run" msgstr "Gajim necesita PySQLite2 para funcionar" -#: ../src/gajim.py:235 +#. set the icon to all newly opened wind +#: ../src/gajim.py:159 +msgid "Gajim is already running" +msgstr "" + +#: ../src/gajim.py:160 +msgid "" +"Another instance of Gajim seems to be running\n" +"Run anyway?" +msgstr "" + +#: ../src/gajim.py:261 #, python-format msgid "HTTP (%s) Authorization for %s (id: %s)" msgstr "Autorización HTTP (%s) para %s (id: %s)" -#: ../src/gajim.py:236 +#: ../src/gajim.py:262 msgid "Do you accept this request?" msgstr "¿Aceptas esta petición?" -#: ../src/gajim.py:438 +#: ../src/gajim.py:590 #, fuzzy, python-format -msgid "%(nickname)s Signed In" -msgstr "Contacto conectado" +msgid "Subject: %s" +msgstr "Tema: %s\n" -#: ../src/gajim.py:469 -#, fuzzy, python-format -msgid "%(nickname)s Signed Out" -msgstr "Contacto desconectado" - -#: ../src/gajim.py:583 -#, fuzzy, python-format -msgid "New Private Message from room %s" -msgstr "Nuevo mensaje privado" - -#: ../src/gajim.py:584 -#, python-format -msgid "%(nickname)s: %(message)s" -msgstr "" - -#: ../src/gajim.py:606 -#, fuzzy, python-format -msgid "New Single Message from %(nickname)s" -msgstr "Nuevo mensaje" - -#: ../src/gajim.py:612 -#, fuzzy, python-format -msgid "New Message from %(nickname)s" -msgstr "Nuevo mensaje como %s " - -#: ../src/gajim.py:660 +#: ../src/gajim.py:633 #, fuzzy, python-format msgid "error while sending %s ( %s )" msgstr "error durante el envío" -#: ../src/gajim.py:700 +#: ../src/gajim.py:673 msgid "Authorization accepted" msgstr "Autorización aceptada" -#: ../src/gajim.py:701 +#: ../src/gajim.py:674 #, python-format msgid "The contact \"%s\" has authorized you to see his or her status." msgstr "El contacto \"%s\" te ha autorizado a ver su estado." -#: ../src/gajim.py:709 +#: ../src/gajim.py:682 #, python-format msgid "Contact \"%s\" removed subscription from you" msgstr "El contacto \"%s\" eliminó su subscripción de tí" -#: ../src/gajim.py:710 +#: ../src/gajim.py:683 msgid "You will always see him or her as offline." msgstr "Siempre le verás desconectado." -#: ../src/gajim.py:736 +#: ../src/gajim.py:726 #, python-format msgid "Contact with \"%s\" cannot be established" msgstr "No se ha podido establecer contacto con \"%s\"" -#: ../src/gajim.py:737 ../src/common/connection.py:349 +#: ../src/gajim.py:727 ../src/common/connection.py:402 msgid "Check your connection or try again later." msgstr "Comprueba tu conexión o reinténtalo más tarde." -#: ../src/gajim.py:874 ../src/roster_window.py:1012 +#: ../src/gajim.py:871 ../src/roster_window.py:1084 #, python-format msgid "%s is now %s (%s)" msgstr "%s está ahora %s (%s)" -#: ../src/gajim.py:963 +#: ../src/gajim.py:958 msgid "Your passphrase is incorrect" msgstr "Contraseña incorrecta" -#: ../src/gajim.py:964 +#: ../src/gajim.py:959 msgid "You are currently connected without your OpenPGP key." msgstr "Estás actualmente conectado sin tu clave GPG" #. FIXME: find a better image -#: ../src/gajim.py:1045 +#: ../src/gajim.py:1061 #, python-format msgid "New E-mail on %(gmail_mail_address)s" msgstr "" -#: ../src/gajim.py:1047 +#: ../src/gajim.py:1063 #, fuzzy, python-format msgid "You have %d new E-mail message" msgid_plural "You have %d new E-mail messages" msgstr[0] "Tienes mensajes sin leer" msgstr[1] "Tienes mensajes sin leer" -#: ../src/gajim.py:1185 +#. each message has a 'From', 'Subject' and 'Snippet' field +#: ../src/gajim.py:1068 +#, python-format +msgid "" +"\n" +"From: %(from_address)s" +msgstr "" + +#: ../src/gajim.py:1213 #, python-format msgid "%s wants to send you a file." msgstr "%s quiere enviarte un archivo." -#: ../src/gajim.py:1245 +#: ../src/gajim.py:1273 #, python-format msgid "You successfully received %(filename)s from %(name)s." msgstr "Has recibido con éxito el archivo %(filename)s de %(name)s." #. ft stopped -#: ../src/gajim.py:1249 +#: ../src/gajim.py:1277 #, python-format msgid "File transfer of %(filename)s from %(name)s stopped." msgstr "Transferencia del archivo %(filename)s de %(name)s detenida." -#: ../src/gajim.py:1262 +#: ../src/gajim.py:1290 #, python-format msgid "You successfully sent %(filename)s to %(name)s." msgstr "Has enviado con éxito el archivo %(filename)s a %(name)s." #. ft stopped -#: ../src/gajim.py:1266 +#: ../src/gajim.py:1294 #, python-format msgid "File transfer of %(filename)s to %(name)s stopped." msgstr "Transferencia de %(filename)s a %(name)s detenida." -#: ../src/gajim.py:1295 +#: ../src/gajim.py:1323 msgid "vCard publication succeeded" msgstr "vCard publicada con éxito" -#: ../src/gajim.py:1295 +#: ../src/gajim.py:1323 msgid "Your personal information has been published successfully." msgstr "Tu información personal ha sido publicada con éxito" -#: ../src/gajim.py:1304 +#: ../src/gajim.py:1332 msgid "vCard publication failed" msgstr "falló la publicación de la vCard" -#: ../src/gajim.py:1304 +#: ../src/gajim.py:1332 msgid "" "There was an error while publishing your personal information, try again " "later." @@ -1601,143 +3965,145 @@ msgstr "" #. it is good to notify the user #. in case he or she cannot see the output of the console -#: ../src/gajim.py:1634 +#: ../src/gajim.py:1711 msgid "Could not save your settings and preferences" msgstr "No se pueden guardar las preferencias" -#: ../src/gajim.py:1848 +#: ../src/gajim.py:1935 msgid "Session Management support not available (missing gnome.ui module)" msgstr "Soporte de manejo de sesión no disponible (falta el módulo gnome.ui)" -#: ../src/gajim.py:1878 -msgid "Migrating Logs..." -msgstr "Migrando el registro..." - -#: ../src/gajim.py:1879 -msgid "Please wait while logs are being migrated..." -msgstr "Por favor, espera mientras el registro está siendo migrado..." - -#: ../src/gajim_themes_window.py:67 +#: ../src/gajim_themes_window.py:60 msgid "Theme" msgstr "Tema" #. don't confuse translators -#: ../src/gajim_themes_window.py:149 +#: ../src/gajim_themes_window.py:142 msgid "theme name" msgstr "nombre del tema" -#: ../src/gajim_themes_window.py:166 +#: ../src/gajim_themes_window.py:159 msgid "You cannot delete your current theme" msgstr "No puedes eliminar el tema actual" -#: ../src/gajim_themes_window.py:167 +#: ../src/gajim_themes_window.py:160 msgid "Please first choose another for your current theme." msgstr "Por favor, primero elige otro distinto como tema actual." -#: ../src/groupchat_control.py:68 +#: ../src/groupchat_control.py:99 #, fuzzy msgid "Private Chat" msgstr "Iniciar conversación" -#: ../src/groupchat_control.py:68 +#: ../src/groupchat_control.py:99 #, fuzzy msgid "Private Chats" msgstr "Iniciar conversación" -#: ../src/groupchat_control.py:84 +#: ../src/groupchat_control.py:115 msgid "Sending private message failed" msgstr "Falló el envío del mensaje privado" #. in second %s code replaces with nickname -#: ../src/groupchat_control.py:86 +#: ../src/groupchat_control.py:117 #, python-format msgid "You are no longer in room \"%s\" or \"%s\" has left." msgstr "Ya no estás en el salón \"%s\" o \"%s\" ya no existe." -#: ../src/groupchat_control.py:98 +#: ../src/groupchat_control.py:136 msgid "Group Chat" msgstr "Grupos de charla" -#: ../src/groupchat_control.py:98 +#: ../src/groupchat_control.py:136 #, fuzzy msgid "Group Chats" msgstr "Grupos de charla" -#: ../src/groupchat_control.py:595 +#: ../src/groupchat_control.py:307 +#, fuzzy +msgid "Insert Nickname" +msgstr "Cambiar _Alias" + +#: ../src/groupchat_control.py:649 msgid "This room has no subject" msgstr "Este salón no tiene tema" #. do not print 'kicked by None' -#: ../src/groupchat_control.py:693 +#: ../src/groupchat_control.py:748 #, python-format msgid "%(nick)s has been kicked: %(reason)s" msgstr "%(nick)s ha sido expulsado por %(reason)s" -#: ../src/groupchat_control.py:697 +#: ../src/groupchat_control.py:752 #, python-format msgid "%(nick)s has been kicked by %(who)s: %(reason)s" msgstr "%(nick)s ha sido expulsado por %(who)s: %(reason)s" #. do not print 'banned by None' -#: ../src/groupchat_control.py:704 +#: ../src/groupchat_control.py:759 #, python-format msgid "%(nick)s has been banned: %(reason)s" msgstr "%(nick)s ha sido expulsado: %(reason)s" -#: ../src/groupchat_control.py:708 +#: ../src/groupchat_control.py:763 #, python-format msgid "%(nick)s has been banned by %(who)s: %(reason)s" msgstr "%(nick)s ha sido expulsado por %(who)s: %(reason)s" -#: ../src/groupchat_control.py:716 +#: ../src/groupchat_control.py:771 #, python-format msgid "You are now known as %s" msgstr "Eres ahora conocido como %s" -#: ../src/groupchat_control.py:718 +#: ../src/groupchat_control.py:773 #, python-format msgid "%s is now known as %s" msgstr "%s es ahora conocido como %s" -#: ../src/groupchat_control.py:757 +#: ../src/groupchat_control.py:850 #, python-format msgid "%s has left" msgstr "%s ha salido" +#: ../src/groupchat_control.py:855 +#, python-format +msgid "%s has joined the room" +msgstr "" + #. No status message -#: ../src/groupchat_control.py:759 ../src/roster_window.py:1015 +#: ../src/groupchat_control.py:857 ../src/roster_window.py:1087 #, python-format msgid "%s is now %s" msgstr "%s está ahora %s" -#: ../src/groupchat_control.py:871 ../src/groupchat_control.py:888 -#: ../src/groupchat_control.py:981 ../src/groupchat_control.py:997 +#: ../src/groupchat_control.py:975 ../src/groupchat_control.py:993 +#: ../src/groupchat_control.py:1086 ../src/groupchat_control.py:1102 #, python-format msgid "Nickname not found: %s" msgstr "Alias no encontrado: %s" -#: ../src/groupchat_control.py:915 +#: ../src/groupchat_control.py:1020 #, python-format msgid "Invited %(contact_jid)s to %(room_jid)s." msgstr "%(contact_jid)s invitado a %(room_jid)s." #. %s is something the user wrote but it is not a jid so we inform -#: ../src/groupchat_control.py:922 ../src/groupchat_control.py:952 +#: ../src/groupchat_control.py:1027 ../src/groupchat_control.py:1057 #, python-format msgid "%s does not appear to be a valid JID" msgstr "%s no parece ser un JID válido" -#: ../src/groupchat_control.py:1019 +#: ../src/groupchat_control.py:1139 #, fuzzy, python-format msgid "No such command: /%s (if you want to send this, prefix it with /say)" msgstr "No existe el comando: /%s (si quieres enviar este prefijo con /say)" -#: ../src/groupchat_control.py:1041 +#: ../src/groupchat_control.py:1161 #, python-format msgid "Commands: %s" msgstr "Comandos: %s" -#: ../src/groupchat_control.py:1043 +#: ../src/groupchat_control.py:1163 #, python-format msgid "" "Usage: /%s [reason], bans the JID from the room. The nickname " @@ -1750,7 +4116,7 @@ msgstr "" "actualmente en el salón, el/ella puede ser también expulsado. NO soporta " "espacio en el alias." -#: ../src/groupchat_control.py:1049 +#: ../src/groupchat_control.py:1169 #, python-format msgid "" "Usage: /%s , opens a private chat window to the specified occupant." @@ -1758,12 +4124,12 @@ msgstr "" "Uso: /%s , abre una ventana de conversación con el ocupante " "especificado." -#: ../src/groupchat_control.py:1053 +#: ../src/groupchat_control.py:1173 #, python-format msgid "Usage: /%s, clears the text window." msgstr "Uso: /%s, limpia de texto la ventana." -#: ../src/groupchat_control.py:1055 +#: ../src/groupchat_control.py:1175 #, python-format msgid "" "Usage: /%s [reason], closes the current window or tab, displaying reason if " @@ -1772,12 +4138,12 @@ msgstr "" "Uso: /%s [motivo], cierra la ventana o pestaña actual, mostrando el motivo " "si se especifica." -#: ../src/groupchat_control.py:1058 +#: ../src/groupchat_control.py:1178 #, fuzzy, python-format msgid "Usage: /%s, hide the chat buttons." msgstr "Uso: /%s, limpia de texto la ventana." -#: ../src/groupchat_control.py:1060 +#: ../src/groupchat_control.py:1180 #, python-format msgid "" "Usage: /%s [reason], invites JID to the current room, optionally " @@ -1786,7 +4152,7 @@ msgstr "" "Uso: /%s [reason], invita al JID al salón actual, opcionalmente " "proveyendo un motivo." -#: ../src/groupchat_control.py:1064 +#: ../src/groupchat_control.py:1184 #, python-format msgid "" "Usage: /%s @[/nickname], offers to join room@server optionally " @@ -1795,7 +4161,7 @@ msgstr "" "Uso: /%s @[/alias], ofrece la entrada a salón@servidor " "opcionalmente usando el alias especificado" -#: ../src/groupchat_control.py:1068 +#: ../src/groupchat_control.py:1188 #, python-format msgid "" "Usage: /%s [reason], removes the occupant specified by nickname " @@ -1805,7 +4171,7 @@ msgstr "" "Uso: /%s [motivo], elimina del salón al ocupante especificado por el " "alias y opcionalmente muestra un motivo. NO soporta espacios en el alias." -#: ../src/groupchat_control.py:1073 +#: ../src/groupchat_control.py:1193 #, python-format msgid "" "Usage: /%s , sends action to the current room. Use third person. (e." @@ -1814,7 +4180,7 @@ msgstr "" "Uso: /%s , envía una acción al salón actual. Usa la tercera persona. " "(p.ej. /%s grita.)" -#: ../src/groupchat_control.py:1077 +#: ../src/groupchat_control.py:1197 #, fuzzy, python-format msgid "" "Usage: /%s [message], opens a private message windowand sends " @@ -1823,95 +4189,100 @@ msgstr "" "Uso: /%s [message], abre una ventana de conversación privada y envía " "un mensaje al ocupante especificado por el alias." -#: ../src/groupchat_control.py:1082 +#: ../src/groupchat_control.py:1202 #, python-format msgid "Usage: /%s , changes your nickname in current room." msgstr "Uso: /%s , cambia tu alias en el salón actual." -#: ../src/groupchat_control.py:1086 +#: ../src/groupchat_control.py:1206 +#, fuzzy, python-format +msgid "Usage: /%s , display the names of room occupants." +msgstr "Uso: /%s [tema], muestra o actualiza el tema actual del salón." + +#: ../src/groupchat_control.py:1210 #, python-format msgid "Usage: /%s [topic], displays or updates the current room topic." msgstr "Uso: /%s [tema], muestra o actualiza el tema actual del salón." -#: ../src/groupchat_control.py:1089 +#: ../src/groupchat_control.py:1213 #, python-format msgid "" "Usage: /%s , sends a message without looking for other commands." msgstr "Uso: /%s , envía un mensaje sin buscar otros comandos." -#: ../src/groupchat_control.py:1092 +#: ../src/groupchat_control.py:1216 #, python-format msgid "No help info for /%s" msgstr "No hay información de ayuda para /%s" -#: ../src/groupchat_control.py:1128 +#: ../src/groupchat_control.py:1258 #, python-format msgid "Are you sure you want to leave room \"%s\"?" msgstr "¿Estás seguro de querer abandonar el salón \"%s\"?" -#: ../src/groupchat_control.py:1129 +#: ../src/groupchat_control.py:1259 msgid "If you close this window, you will be disconnected from this room." msgstr "Si cierras esta ventana, serás desconectado de este salón." -#: ../src/groupchat_control.py:1133 +#: ../src/groupchat_control.py:1263 #, fuzzy msgid "Do _not ask me again" msgstr "_No preguntarme otra vez" -#: ../src/groupchat_control.py:1167 +#: ../src/groupchat_control.py:1297 msgid "Changing Subject" msgstr "Cambiando el tema" -#: ../src/groupchat_control.py:1168 +#: ../src/groupchat_control.py:1298 msgid "Please specify the new subject:" msgstr "Especifica el nuevo tema:" -#: ../src/groupchat_control.py:1176 +#: ../src/groupchat_control.py:1306 msgid "Changing Nickname" msgstr "Cambiando alias" -#: ../src/groupchat_control.py:1177 +#: ../src/groupchat_control.py:1307 msgid "Please specify the new nickname you want to use:" msgstr "Especifica el nuevo alias que quieres usar:" -#: ../src/groupchat_control.py:1202 +#: ../src/groupchat_control.py:1333 msgid "Bookmark already set" msgstr "Marcador ya definido" -#: ../src/groupchat_control.py:1203 +#: ../src/groupchat_control.py:1334 #, python-format msgid "Room \"%s\" is already in your bookmarks." msgstr "El salón \"%s\" ya se encuentra en tus marcadores." -#: ../src/groupchat_control.py:1212 +#: ../src/groupchat_control.py:1343 msgid "Bookmark has been added successfully" msgstr "Marcador añadido con éxito" -#: ../src/groupchat_control.py:1213 +#: ../src/groupchat_control.py:1344 msgid "You can manage your bookmarks via Actions menu in your roster." msgstr "Puedes gestionar tus marcadores mediante el menú Acciones de tu roster" #. ask for reason -#: ../src/groupchat_control.py:1322 +#: ../src/groupchat_control.py:1454 #, python-format msgid "Kicking %s" msgstr "Expulsando a %s" -#: ../src/groupchat_control.py:1323 ../src/groupchat_control.py:1568 +#: ../src/groupchat_control.py:1455 ../src/groupchat_control.py:1733 msgid "You may specify a reason below:" msgstr "Debes especificar un motivo debajo:" #. ask for reason -#: ../src/groupchat_control.py:1567 +#: ../src/groupchat_control.py:1732 #, python-format msgid "Banning %s" msgstr "Expulsando a %s" -#: ../src/gtkexcepthook.py:52 +#: ../src/gtkexcepthook.py:51 msgid "A programming error has been detected" msgstr "Ha sido detectado un error de programación" -#: ../src/gtkexcepthook.py:53 +#: ../src/gtkexcepthook.py:52 msgid "" "It probably is not fatal, but should be reported to the developers " "nonetheless." @@ -1919,1796 +4290,92 @@ msgstr "" "Probablemente no es crítico, pero no obstante debe ser informado a los " "desarrolladores." -#: ../src/gtkexcepthook.py:59 +#: ../src/gtkexcepthook.py:58 msgid "_Report Bug" msgstr "_Informar de fallo" -#: ../src/gtkexcepthook.py:82 +#: ../src/gtkexcepthook.py:81 msgid "Details" msgstr "Detalles" -#. this always tracebacks -#: ../src/gtkgui.glade.h:1 -msgid "0" -msgstr "" - -#: ../src/gtkgui.glade.h:2 -msgid "" -"Account is being created\n" -"\n" -"Please wait..." -msgstr "" -"La cuenta está siendo creada\n" -"\n" -"Por favor espera..." - -#: ../src/gtkgui.glade.h:5 -msgid "Advanced Configuration Editor" -msgstr "Editor de configuración avanzada" - -#: ../src/gtkgui.glade.h:6 -msgid "Applications" -msgstr "Programas" - -#: ../src/gtkgui.glade.h:7 -msgid "Chatstate Tab Colors" -msgstr "" - -#. a header for custom browser/client/file manager. so translate sth like: Custom Settings -#: ../src/gtkgui.glade.h:9 -msgid "Custom" -msgstr "Personalizado" - -#: ../src/gtkgui.glade.h:10 -msgid "Description" -msgstr "Descripción" - -#: ../src/gtkgui.glade.h:11 -msgid "Format of a line" -msgstr "Formato del renglón" - -#: ../src/gtkgui.glade.h:12 -msgid "Interface Customization" -msgstr "Personalización de la interfaz" - -#: ../src/gtkgui.glade.h:13 -msgid "Jabber Traffic" -msgstr "Tráfico de Jabber" - -#: ../src/gtkgui.glade.h:14 -msgid "Miscellaneous" -msgstr "Miscelánea" - -#: ../src/gtkgui.glade.h:15 -msgid "NOTE: You should restart gajim for some setting to take effect" -msgstr "" - -#: ../src/gtkgui.glade.h:16 -msgid "OpenPGP" -msgstr "OpenPGP" - -#: ../src/gtkgui.glade.h:17 -msgid "Personal Information" -msgstr "Información personal" - -#: ../src/gtkgui.glade.h:18 -msgid "Please choose one of the options below:" -msgstr "Por favor, elige una de las siguientes opciones:" - -#: ../src/gtkgui.glade.h:19 -msgid "Please fill in the data for your new account" -msgstr "Por favor, introduce los datos para tu nueva cuenta" - -#: ../src/gtkgui.glade.h:20 -msgid "Preset Status Messages" -msgstr "Mensajes de estado predefinidos" - -#: ../src/gtkgui.glade.h:21 -msgid "Properties" -msgstr "Propiedades" - -#: ../src/gtkgui.glade.h:22 -msgid "Settings" -msgstr "Configuración" - -#: ../src/gtkgui.glade.h:23 -msgid "Sounds" -msgstr "Sonidos" - -#: ../src/gtkgui.glade.h:24 -#, fuzzy -msgid "Type your new status message" -msgstr "Escribe tu nuevo mensaje de estado:" - -#: ../src/gtkgui.glade.h:25 -msgid "Visual Notifications" -msgstr "Notificationes Visuales" - -#: ../src/gtkgui.glade.h:26 -msgid "What do you want to do?" -msgstr "¿Qué quieres hacer?" - -#: ../src/gtkgui.glade.h:27 -msgid "XML Input" -msgstr "Entrada de XML" - -#: ../src/gtkgui.glade.h:28 -msgid "A list of active, completed and stopped file transfers" -msgstr "Una lista de transferencias activas, finalizadas y detenidas" - -#: ../src/gtkgui.glade.h:29 -msgid "A_ccounts" -msgstr "_Cuentas" - -#: ../src/gtkgui.glade.h:30 -#, fuzzy -msgid "A_fter nickname:" -msgstr "Después del nombre:" - -#. "About" is the text of a tab of vcard window -#: ../src/gtkgui.glade.h:32 -msgid "About" -msgstr "Acerca de" - -#: ../src/gtkgui.glade.h:33 -msgid "Accept" -msgstr "Aceptar" - -#: ../src/gtkgui.glade.h:34 -msgid "Account" -msgstr "Cuenta" - -#: ../src/gtkgui.glade.h:35 -msgid "" -"Account\n" -"Group\n" -"Contact\n" -"Banner" -msgstr "" -"Cuenta\n" -"Grupo\n" -"Contacto\n" -"Banner" - -#: ../src/gtkgui.glade.h:39 -msgid "Account Modification" -msgstr "Modificar cuenta" - -#: ../src/gtkgui.glade.h:40 -msgid "Accounts" -msgstr "Cuentas" - -#: ../src/gtkgui.glade.h:42 -msgid "Add New Contact" -msgstr "Añadir un contacto" - -#: ../src/gtkgui.glade.h:43 -#, fuzzy -msgid "Add Special _Notification" -msgstr "Notificationes Visuales" - -#: ../src/gtkgui.glade.h:44 -msgid "Add _Contact" -msgstr "Añadir un _Contacto" - -#: ../src/gtkgui.glade.h:45 -msgid "Address" -msgstr "Dirección" - -#: ../src/gtkgui.glade.h:46 -msgid "Advanced" -msgstr "Avanzado" - -#: ../src/gtkgui.glade.h:47 -msgid "Advanced Configuration Editor" -msgstr "Editor avanzado de configurción" - -#: ../src/gtkgui.glade.h:48 -msgid "" -"All chat states\n" -"Composing only\n" -"Disabled" -msgstr "" -"Todos los estados de chat\n" -"Sólo componiendo\n" -"Desactivado" - -#: ../src/gtkgui.glade.h:51 -msgid "Allow _OS information to be sent" -msgstr "Permitir envío de información sobre el sistema operativo" - -#: ../src/gtkgui.glade.h:52 -msgid "Allow him/her to see my status" -msgstr "Permitirle ver mi estado" - -#: ../src/gtkgui.glade.h:53 -msgid "Allow popup/notifications when I'm _away/na/busy/invisible" -msgstr "" -"Permitir notificaciones emergentes cuando estoy _ausente, no disponible, " -"ocupado o invisible." - -#: ../src/gtkgui.glade.h:54 -msgid "Also known as iChat style" -msgstr "También conocido como estilo iChat" - -#: ../src/gtkgui.glade.h:55 -msgid "Ask status message when I:" -msgstr "Preguntar mensaje de estado cuando esté: " - -#: ../src/gtkgui.glade.h:56 -msgid "Ask to see his/her status" -msgstr "Pregunta para ver su estado" - -#: ../src/gtkgui.glade.h:57 -msgid "Ask:" -msgstr "Pregunta:" - -#: ../src/gtkgui.glade.h:58 -msgid "Assign Open_PGP Key" -msgstr "Asignar clave OpenPGP" - -#: ../src/gtkgui.glade.h:59 -msgid "Authorize contact so he can know when you're connected" -msgstr "Autorizar contacto para que pueda saber cuándo estás conectado" - -#: ../src/gtkgui.glade.h:60 -msgid "Auto _away after:" -msgstr "Poner _ausente después de:" - -#: ../src/gtkgui.glade.h:61 -msgid "Auto _not available after:" -msgstr "Poner _no disponible después de:" - -#: ../src/gtkgui.glade.h:62 -msgid "Auto join" -msgstr "Auto conectar" - -#: ../src/gtkgui.glade.h:63 -msgid "" -"Autodetect on every Gajim startup\n" -"Always use GNOME default applications\n" -"Always use KDE default applications\n" -"Custom" -msgstr "" -"Autodetectar en cada inicio de Gajim\n" -"Siempre usar las aplicaciones por defecto de GNOME\n" -"Siempre usar las apliacciones por defecto de KDE\n" -"Personalizado" - -#: ../src/gtkgui.glade.h:67 -msgid "Automatically authorize contact" -msgstr "Autorizar contactos automáticamente" - -#: ../src/gtkgui.glade.h:68 -msgid "Autoreconnect when connection is lost" -msgstr "Autoreconectar si se pierde la conexión" - -#: ../src/gtkgui.glade.h:69 -#, fuzzy -msgid "B_efore nickname:" -msgstr "Antes del nombre:" - -#: ../src/gtkgui.glade.h:70 -msgid "Birthday:" -msgstr "Cumpleaños:" - -#: ../src/gtkgui.glade.h:71 -msgid "Bold" -msgstr "Negrita" - -#: ../src/gtkgui.glade.h:72 -msgid "Build custom query" -msgstr "Construir consulta personalizada" - -#: ../src/gtkgui.glade.h:73 -msgid "C_onnect on Gajim startup" -msgstr "C_onectar al inicio de Gajim" - -#: ../src/gtkgui.glade.h:74 -msgid "Cancel file transfer" -msgstr "Cancela la transferencia" - -#: ../src/gtkgui.glade.h:75 -msgid "Cancels the selected file transfer" -msgstr "Cancela la transferencia de archivo seleccionada" - -#: ../src/gtkgui.glade.h:76 -msgid "Cancels the selected file transfer and removes incomplete file" -msgstr "" -"Cancela la transferencia de archivo seleccionada y elimina el archivo " -"incompleto" - -#: ../src/gtkgui.glade.h:77 -msgid "Chan_ge Password" -msgstr "Cam_biar contraseña" - -#: ../src/gtkgui.glade.h:78 -msgid "Change Password" -msgstr "Cambiar contraseña" - -#: ../src/gtkgui.glade.h:79 -msgid "Change _Nickname" -msgstr "Cambiar _Alias" - -#: ../src/gtkgui.glade.h:80 -msgid "Change _Subject" -msgstr "Cambiar el _tema" - -#: ../src/gtkgui.glade.h:82 -msgid "Chat state noti_fications:" -msgstr "Noti_ficaciones del estado del chat" - -#: ../src/gtkgui.glade.h:83 -msgid "" -"Check this option, only if someone you don't have in the roster spams/annoys " -"you. Use with caution, cause it blocks all messages from any contact that is " -"not in the roster" -msgstr "" -"Marca esta opción sólo si alguien que no tienes en el roster te molesta. " -"Úsalo con precaución ya que bloqueará todos los mensajes de cualquier " -"contacto que no esté en tu lista de contactos." - -#: ../src/gtkgui.glade.h:84 -msgid "" -"Check this so Gajim will connect in port 5223 where legacy servers are " -"expected to have SSL capabilities. Note that Gajim uses TLS encryption by " -"default if broadcasted by the server, and with this option enabled TLS will " -"be disabled" -msgstr "" -"Marcando esta opcón, Gajim conectará al puerto 5223 cuando un servidor viejo " -"use SSL. Observa que Gajim usa encripatdo TLS por defecto si estádisponible " -"en el servidor, y que con esta opción se desactiva el TLS" - -#: ../src/gtkgui.glade.h:85 -msgid "Choose _Key..." -msgstr "Elegir _clave..." - -#: ../src/gtkgui.glade.h:86 -msgid "City:" -msgstr "Ciudad:" - -#: ../src/gtkgui.glade.h:87 -msgid "Clean _up" -msgstr "Limpiar" - -#: ../src/gtkgui.glade.h:88 -msgid "Click to change account's password" -msgstr "Click para cambiar la contraseña de la cuenta" - -#: ../src/gtkgui.glade.h:89 -#, fuzzy -msgid "Click to insert an emoticon (Alt+M)" -msgstr "Haz click para insertar un emoticono (Alt+E)" - -#: ../src/gtkgui.glade.h:90 -msgid "Click to see features (like MSN, ICQ transports) of jabber servers" -msgstr "" -"Click para ver características (como transportes de MSN e ICQ) de los " -"servidores de Jabber" - -#: ../src/gtkgui.glade.h:91 -msgid "Click to see past conversation in this room" -msgstr "Click para ver anteriores conversaciones en este salón" - -#: ../src/gtkgui.glade.h:92 -msgid "Click to see past conversations with this contact" -msgstr "Click para ver anteriores conversaciones con este contacto" - -#: ../src/gtkgui.glade.h:93 -msgid "Client:" -msgstr "Cliente:" - -#: ../src/gtkgui.glade.h:94 -msgid "Company:" -msgstr "Compañía:" - -#: ../src/gtkgui.glade.h:95 -msgid "Composing" -msgstr "" - -#: ../src/gtkgui.glade.h:96 -msgid "Configure _Room" -msgstr "Configurar el salón" - -#: ../src/gtkgui.glade.h:97 -msgid "Connect when I press Finish" -msgstr "Conectar cuando presione Finalizar" - -#: ../src/gtkgui.glade.h:98 -msgid "Connection" -msgstr "Conexión" - -#: ../src/gtkgui.glade.h:99 -msgid "Contact Information" -msgstr "Información" - -#: ../src/gtkgui.glade.h:100 -msgid "Contact _Info" -msgstr "_Información" - -#: ../src/gtkgui.glade.h:101 -msgid "Conversation History" -msgstr "Histórico de conversaciones" - -#: ../src/gtkgui.glade.h:102 -msgid "Country:" -msgstr "País:" - -#: ../src/gtkgui.glade.h:103 -#, fuzzy -msgid "Default status _iconset:" -msgstr "_Iconos de estado por defecto:" - -#: ../src/gtkgui.glade.h:104 -msgid "Delete MOTD" -msgstr "Eliminar MOTD" - -#: ../src/gtkgui.glade.h:105 -msgid "Deletes Message of the Day" -msgstr "Elimiina mensaje del día" - -#: ../src/gtkgui.glade.h:106 -msgid "Deny" -msgstr "Denegar" - -#: ../src/gtkgui.glade.h:107 -msgid "Deny authorization from contact so he cannot know when you're connected" -msgstr "" -"Denegar autorización de contacto para que no pueda saber cuándo estás " -"conectado" - -#: ../src/gtkgui.glade.h:108 -msgid "Department:" -msgstr "Departamento:" - -#: ../src/gtkgui.glade.h:109 -#, fuzzy -msgid "Display a_vatars of contacts in roster" -msgstr "Mostrar en el roster los avatares de los contactos" - -#: ../src/gtkgui.glade.h:110 -#, fuzzy -msgid "Display status _messages of contacts in roster" -msgstr "Mostrar en el roster los mensajes de estado de los contactos" - -#: ../src/gtkgui.glade.h:111 -msgid "E-Mail:" -msgstr "Correo-e:" - -#: ../src/gtkgui.glade.h:112 -#, fuzzy -msgid "E_very 5 minutes" -msgstr "Cada 5 _minutos" - -#: ../src/gtkgui.glade.h:113 -msgid "Edit Groups" -msgstr "Editar grupos" - -#: ../src/gtkgui.glade.h:114 -msgid "Edit Personal Information..." -msgstr "_Editar información personal personales..." - -#: ../src/gtkgui.glade.h:115 -msgid "Edit _Groups" -msgstr "Editar grupos" - -#: ../src/gtkgui.glade.h:116 -#, fuzzy -msgid "Emoticons:" -msgstr "Gestionar emoticonos" - -#. XML Console enable checkbutton -#: ../src/gtkgui.glade.h:118 -msgid "Enable" -msgstr "Activar" - -#: ../src/gtkgui.glade.h:119 -msgid "Enter it again for confirmation:" -msgstr "Introdúcela de nuevo para confirmar:" - -#: ../src/gtkgui.glade.h:120 -msgid "Enter new password:" -msgstr "Introduce nueva contraseña:" - -#: ../src/gtkgui.glade.h:121 -msgid "Events" -msgstr "Eventos" - -#: ../src/gtkgui.glade.h:122 -msgid "Extra Address:" -msgstr "Segunda dirección:" - -#. Family Name -#: ../src/gtkgui.glade.h:124 -msgid "Family:" -msgstr "Familia:" - -#: ../src/gtkgui.glade.h:125 -msgid "File Transfers" -msgstr "Transferencias" - -#: ../src/gtkgui.glade.h:126 -msgid "File _Transfers" -msgstr "_Transferencias" - -#: ../src/gtkgui.glade.h:127 -msgid "Filter:" -msgstr "Filtro:" - -#: ../src/gtkgui.glade.h:128 -msgid "Font style:" -msgstr "Estilo:" - -#: ../src/gtkgui.glade.h:129 -msgid "Forbid him/her to see my status" -msgstr "Prohibirle ver mi estado" - -#: ../src/gtkgui.glade.h:130 -msgid "Format: YYYY-MM-DD" -msgstr "Formato: AAAA-MM-DD" - -#: ../src/gtkgui.glade.h:131 -msgid "Frequently Asked Questions (online)" -msgstr "Preguntas frecuentes (en línea)" - -#: ../src/gtkgui.glade.h:132 -msgid "From:" -msgstr "De:" - -#: ../src/gtkgui.glade.h:133 -msgid "G_o" -msgstr "I_r" - -#: ../src/gtkgui.glade.h:134 ../src/notify.py:167 ../src/notify.py:189 -#: ../src/notify.py:201 ../src/tooltips.py:339 -msgid "Gajim" -msgstr "Gajim" - -#: ../src/gtkgui.glade.h:135 -msgid "Gajim Themes Customization" -msgstr "Personalización de temas de Gajim" - -#: ../src/gtkgui.glade.h:136 -#, fuzzy -msgid "" -"Gajim can send and receive meta-information related to a conversation you " -"may have with a contact. Here you can specify which chatstates you want to " -"send to the other party." -msgstr "" -"Gajim puede enviar y recibir meta-información relacionada con una " -"conversación que puedas tener con un contacto" - -#: ../src/gtkgui.glade.h:137 -#, fuzzy -msgid "" -"Gajim will automatically show new events by poping up the relative window" -msgstr "" -"Gajim mostrará automáticamente los nuevos mensajes recibidos en una ventana " -"de charla o pestaña en una ventana de chat existente" - -#: ../src/gtkgui.glade.h:138 -#, fuzzy -msgid "" -"Gajim will notify you for new events via a popup in the bottom right of the " -"screen" -msgstr "" -"Gajim te notificará de nuevos mensajes a través de un mensaje emergente en " -"la esquina inferior derecha de la pantalla" - -#: ../src/gtkgui.glade.h:139 -msgid "" -"Gajim will notify you via a popup window in the bottom right of the screen " -"about contacts that just signed in" -msgstr "" -"Gajim notificará con un mensaje emergente en la parte inferior derecha de la " -"pantalla cuando un contacto se conecte" - -#: ../src/gtkgui.glade.h:140 -msgid "" -"Gajim will notify you via a popup window in the bottom right of the screen " -"about contacts that just signed out" -msgstr "" -"Gajim notificará con un mensaje emergente en la parte inferior derecha de la " -"pantalla cuando un contacto se desconecte" - -#: ../src/gtkgui.glade.h:141 -#, fuzzy -msgid "" -"Gajim will only change the icon of the contact that triggered the new event" -msgstr "Gajim sólo cambiará el icono del contacto que envía el nuevo mensaje" - -#: ../src/gtkgui.glade.h:142 -msgid "Gajim: Account Creation Wizard" -msgstr "Gajim: Asistente para crear una cuenta" - -#. user has no group, print him in General -#: ../src/gtkgui.glade.h:143 ../src/roster_window.py:291 -#: ../src/roster_window.py:1183 ../src/roster_window.py:1405 -#: ../src/systray.py:286 -msgid "General" -msgstr "General" - -#. Given Name -#: ../src/gtkgui.glade.h:145 -msgid "Given:" -msgstr "Nombre de pila:" - -#: ../src/gtkgui.glade.h:146 -#, fuzzy -msgid "Gone" -msgstr "Ninguno" - -#: ../src/gtkgui.glade.h:147 -msgid "Group:" -msgstr "Grupo:" - -#: ../src/gtkgui.glade.h:148 -msgid "HTTP Connect" -msgstr "Conectar con HTTP" - -#: ../src/gtkgui.glade.h:149 -msgid "Help online" -msgstr "Ayuda online" - -#: ../src/gtkgui.glade.h:150 -msgid "Hides the window" -msgstr "Oculta la ventana" - -#: ../src/gtkgui.glade.h:151 -msgid "Homepage:" -msgstr "Página web:" - -#: ../src/gtkgui.glade.h:152 -msgid "Hostname: " -msgstr "Nombre del host:" - -#: ../src/gtkgui.glade.h:153 -msgid "I already have an account I want to use" -msgstr "Ya tengo una cuenta y quiero usarla" - -#: ../src/gtkgui.glade.h:154 -msgid "I want to _register for a new account" -msgstr "Quiero _registrar una nueva cuenta de Jabber" - -#: ../src/gtkgui.glade.h:155 -msgid "I would like to add you to my contact list." -msgstr "Me gustaría añadirte a mi lista de contactos." - -#: ../src/gtkgui.glade.h:156 -msgid "" -"If checked, Gajim will also broadcast some more IPs except from just your " -"IP, so file transfer has higher chances of working right." -msgstr "" - -#: ../src/gtkgui.glade.h:157 -#, fuzzy -msgid "" -"If checked, Gajim will display avatars of contacts in roster window and in " -"group chats" -msgstr "" -"Si está marcado, Gajim mostrará los avatares de los usuarios en el roster" - -#: ../src/gtkgui.glade.h:158 -#, fuzzy -msgid "" -"If checked, Gajim will display status messages of contacts under the contact " -"name in roster window and in group chats" -msgstr "" -"Si está marcado, Gajim mostrará los mensajes de estado de los contactos " -"debajo de cada nombre en el roster" - -#: ../src/gtkgui.glade.h:159 -msgid "If checked, Gajim will join this group chat on startup" -msgstr "Si está marcado, Gajim entrará a este salón al inicio" - -#: ../src/gtkgui.glade.h:160 -msgid "If checked, Gajim will remember the password for this account" -msgstr "Si está marcado, Gajim recordará la contraseña para esta cuenta" - -#: ../src/gtkgui.glade.h:161 -msgid "" -"If checked, Gajim will remember the roster and chat window positions in the " -"screen and the sizes of them next time you run it" -msgstr "" -"Si está marcado, Gajim recordará la posición y tamaño de la ventana de " -"contactos para futuras ejecuciones" - -#: ../src/gtkgui.glade.h:162 -msgid "" -"If checked, Gajim will send keep-alive packets so it prevents connection " -"timeout which results in disconnection" -msgstr "" -"Si está marcado, Gajim enviará paquetes de mantenimiento de actividad para " -"prevenir que expire la conexión" - -#: ../src/gtkgui.glade.h:163 -msgid "" -"If checked, Gajim will store the password in ~/.gajim/config with 'read' " -"permission only for you" -msgstr "" -"Si está marcado, Gajim guardará la contraseña en ~/.gajim/config con acceso " -"de lectura sólamente para tí" - -#: ../src/gtkgui.glade.h:164 -msgid "" -"If checked, Gajim will use protocol-specific status icons. (eg. A contact " -"from MSN will have the equivalent msn icon for status online, away, busy, " -"etc...)" -msgstr "" -"Si está marcado, Gajim usará iconos específicos para el protocolo- (p. ej. " -"un contacto de MSN tendrá el icono de msn equivalente para su estado en " -"línea, ausente, ocupado, etc...)" - -#: ../src/gtkgui.glade.h:165 -msgid "" -"If checked, Gajim, when launched, will automatically connect to jabber using " -"this account" -msgstr "" -"Si está marcado, Gajim, cuando se inicie, conectará automáticamente a Jabber " -"usando esta cuenta." - -#: ../src/gtkgui.glade.h:166 -msgid "" -"If checked, any change to the global status (handled by the combobox at the " -"bottom of the roster window) will change the status of this account " -"accordingly" -msgstr "" -"Si está marcado, cualquier cambio al estado global (manejado por el menú " -"desplegable de la parte inferior de la lista de contactos) cambiará el " -"estado de esta cuenta de forma acorde" - -#: ../src/gtkgui.glade.h:167 -#, fuzzy -msgid "" -"If not disabled, Gajim will replace ascii smilies like ':)' with equivalent " -"animated or static graphical emoticons" -msgstr "" -"Si está marcado, Gajim reemplazará emoticonos de texto como ':)' por su " -"equivalente en iconos" - -#: ../src/gtkgui.glade.h:168 -msgid "" -"If you have 2 or more accounts and it is checked, Gajim will list all " -"contacts as if you had one account" -msgstr "" -"Si tienes dos o más cuentas y está marcado, Gajim listará todos los " -"contactos de forma mixta" - -#: ../src/gtkgui.glade.h:169 -#, fuzzy -msgid "Inactive" -msgstr "Activo" - -#. Info/Query make the "IQ" initials. So translate like this 'YourLang/YourLang (Info/Query)'. Thanks (it's a tooltip so width is not a problem) -#: ../src/gtkgui.glade.h:171 -msgid "Info/Query" -msgstr "Info/Consulta" - -#: ../src/gtkgui.glade.h:172 -msgid "Information about you, as stored in the server" -msgstr "Información acerca de tí a guardar en el servidor" - -#: ../src/gtkgui.glade.h:173 -msgid "Invitation Received" -msgstr "Invitación recibida" - -#: ../src/gtkgui.glade.h:174 -msgid "Italic" -msgstr "Cursiva" - -#: ../src/gtkgui.glade.h:175 -msgid "Jabber" -msgstr "" - -#: ../src/gtkgui.glade.h:176 -msgid "Jabber ID:" -msgstr "ID de Jabber:" - -#: ../src/gtkgui.glade.h:178 -msgid "Join _Group Chat" -msgstr "Entrar a un grupo de charla" - -#: ../src/gtkgui.glade.h:179 -msgid "Location" -msgstr "Dirección" - -#: ../src/gtkgui.glade.h:180 -#, fuzzy -msgid "" -"MUC\n" -"Messages" -msgstr "Mensaje" - -#: ../src/gtkgui.glade.h:182 -msgid "" -"MUC Directed\n" -"Messages" -msgstr "" - -#: ../src/gtkgui.glade.h:184 -#, fuzzy -msgid "Ma_nage..." -msgstr "Gestionar..." - -#: ../src/gtkgui.glade.h:185 -msgid "Manage Accounts" -msgstr "Gestionar cuentas" - -#: ../src/gtkgui.glade.h:186 -msgid "Manage Bookmarks" -msgstr "Gestionar marcadores" - -#: ../src/gtkgui.glade.h:187 -msgid "Manage Proxy Profiles" -msgstr "Gestionar perfiles del Proxy" - -#: ../src/gtkgui.glade.h:188 -msgid "Manage..." -msgstr "Gestionar..." - -#. Middle Name -#: ../src/gtkgui.glade.h:190 -msgid "Middle:" -msgstr "Medio:" - -#: ../src/gtkgui.glade.h:191 -msgid "Mo_derator" -msgstr "Mo_derador" - -#: ../src/gtkgui.glade.h:192 -msgid "More" -msgstr "Más" - -#: ../src/gtkgui.glade.h:193 -msgid "Name:" -msgstr "Nombre:" - -#: ../src/gtkgui.glade.h:194 -msgid "" -"Never\n" -"Always\n" -"Per account\n" -"Per type" -msgstr "" - -#: ../src/gtkgui.glade.h:198 -msgid "Nickname:" -msgstr "Alias:" - -#. None means no proxy profile selected -#: ../src/gtkgui.glade.h:201 -msgid "None" -msgstr "Ninguno" - -#: ../src/gtkgui.glade.h:202 -msgid "Notify me about contacts that: " -msgstr "Notificar cuand un contacto: " - -#: ../src/gtkgui.glade.h:203 -msgid "Notify on new _Gmail e-mail" -msgstr "" - -#: ../src/gtkgui.glade.h:204 -msgid "OS:" -msgstr "SO:" - -#: ../src/gtkgui.glade.h:205 -msgid "On every _message" -msgstr "En cada _mensaje" - -#: ../src/gtkgui.glade.h:206 -#, fuzzy -msgid "One message _window:" -msgstr "Enviar mensaje y cerrar ventana" - -#: ../src/gtkgui.glade.h:208 -msgid "Pass_word:" -msgstr "_Contraseña: " - -#: ../src/gtkgui.glade.h:209 -msgid "Passphrase" -msgstr "Contraseña" - -#: ../src/gtkgui.glade.h:210 -msgid "Password:" -msgstr "Contraseña: " - -#: ../src/gtkgui.glade.h:211 ../src/tooltips.py:645 -msgid "Paused" -msgstr "Pausado" - -#: ../src/gtkgui.glade.h:212 -msgid "Personal Information" -msgstr "Información personal" - -#: ../src/gtkgui.glade.h:213 -msgid "Phone No.:" -msgstr "Teléfono:" - -#: ../src/gtkgui.glade.h:214 -msgid "Play _sounds" -msgstr "Reproducir _sonidos" - -#: ../src/gtkgui.glade.h:215 -msgid "Port: " -msgstr "Puerto: " - -#: ../src/gtkgui.glade.h:216 -msgid "Position:" -msgstr "Posición:" - -#: ../src/gtkgui.glade.h:217 -msgid "Postal Code:" -msgstr "Código postal:" - -#: ../src/gtkgui.glade.h:218 -msgid "Preferences" -msgstr "Preferencias" - -#. Prefix in Name -#: ../src/gtkgui.glade.h:220 -msgid "Prefix:" -msgstr "Prefijo" - -#: ../src/gtkgui.glade.h:221 -#, fuzzy -msgid "Preset messages:" -msgstr "ensaje de estado" - -#: ../src/gtkgui.glade.h:222 -msgid "Print time:" -msgstr "Insertar la hora:" - -#: ../src/gtkgui.glade.h:223 -msgid "Priori_ty:" -msgstr "Pr_ioridad:" - -#: ../src/gtkgui.glade.h:224 -msgid "" -"Priority is used in Jabber to determine who gets the events from the jabber " -"server when two or more clients are connected using the same account; The " -"client with the highest priority gets the events" -msgstr "" -"La prioridad es usada por Jabber para determinar quién obtiene los eventos " -"del servidor cuando dos o más clientes están conectados usando la misma " -"cuenta. El cliente con mayor prioridad recibe los eventos." - -#: ../src/gtkgui.glade.h:225 -msgid "Profile, Avatar" -msgstr "Perfil, Avatar" - -#: ../src/gtkgui.glade.h:226 -msgid "Protocol:" -msgstr "Protocolo:" - -#: ../src/gtkgui.glade.h:227 -msgid "Proxy:" -msgstr "Proxy" - -#: ../src/gtkgui.glade.h:228 -msgid "Query Builder..." -msgstr "Constructor de consultas..." - -#: ../src/gtkgui.glade.h:229 -msgid "Recently:" -msgstr "Recientemente:" - -#: ../src/gtkgui.glade.h:230 -msgid "Register to" -msgstr "Registrar en" - -#: ../src/gtkgui.glade.h:231 -msgid "Remove account _only from Gajim" -msgstr "Eliminar la _cuenta únicamente de Gajim" - -#: ../src/gtkgui.glade.h:232 -msgid "Remove account from Gajim and from _server" -msgstr "Eliminar la cuenta de Gajim y del _servidor" - -#: ../src/gtkgui.glade.h:233 -msgid "Remove file transfer from the list." -msgstr "Eliminar transferencias de la lista" - -#: ../src/gtkgui.glade.h:234 -msgid "Removes completed, canceled and failed file transfers from the list" -msgstr "" -"Elimina de la lista las transferencias finalizadas, canceladas y fallidas" - -#: ../src/gtkgui.glade.h:235 -msgid "Reply to this message" -msgstr "Responder a este mensaje:" - -#: ../src/gtkgui.glade.h:236 -msgid "Resour_ce: " -msgstr "Re_curso: " - -#: ../src/gtkgui.glade.h:237 -msgid "" -"Resource is sent to the Jabber server in order to separate the same JID in " -"two or more parts depending on the number of the clients connected in the " -"same server with the same account. So you might be connected in the same " -"account with resource 'Home' and 'Work' at the same time. The resource which " -"has the highest priority will get the events. (see below)" -msgstr "" -"El recurso es enviado al servidor de Jabber para 'separar' el mismo " -"identificador en dos o más partes dependiendo del número de clientes " -"conectados en el mismo servidor con la misma cuenta. Así puedes estar " -"conectado usando la misma cuenta con el recurso 'Casa' o 'Trabajo' al mismo " -"tiempo. El recurso que tenga la prioridad más alta será el que reciba los " -"eventos (mira más abajo)." - -#: ../src/gtkgui.glade.h:238 -msgid "Resource:" -msgstr "Recurso:" - -#: ../src/gtkgui.glade.h:239 -msgid "Role:" -msgstr "Puesto:" - -#: ../src/gtkgui.glade.h:240 -msgid "Room Configuration" -msgstr "Configuración del salón" - -#: ../src/gtkgui.glade.h:241 -msgid "Room:" -msgstr "Salón:" - -#: ../src/gtkgui.glade.h:242 -msgid "Save _passphrase (insecure)" -msgstr "Guardar contraseña (inseguro)" - -#: ../src/gtkgui.glade.h:243 -msgid "Save _position and size for roster and chat windows" -msgstr "" -"Guarda _posición y tamaño para las ventanas de conversaciones y lista de " -"contactos" - -#: ../src/gtkgui.glade.h:244 -#, fuzzy -msgid "Save as Preset..." -msgstr "Guardar archivo como..." - -#: ../src/gtkgui.glade.h:245 -msgid "Save conversation _logs for all contacts" -msgstr "Grabar conversaciones para todos los contactos" - -#: ../src/gtkgui.glade.h:246 -msgid "Save pass_word" -msgstr "_Guardar contraseña" - -#: ../src/gtkgui.glade.h:247 -#, fuzzy -msgid "Search" -msgstr "_Buscar" - -#: ../src/gtkgui.glade.h:248 -msgid "Sen_d" -msgstr "Enviar" - -#: ../src/gtkgui.glade.h:249 -msgid "Send File" -msgstr "Enviar archivo" - -#: ../src/gtkgui.glade.h:250 -msgid "Send Single _Message" -msgstr "Enviar mensaje" - -#: ../src/gtkgui.glade.h:251 -#, fuzzy -msgid "Send Single _Message..." -msgstr "Enviar mensaje" - -#: ../src/gtkgui.glade.h:252 -msgid "Send _File" -msgstr "Enviar archivo" - -#: ../src/gtkgui.glade.h:253 -msgid "Send keep-alive packets" -msgstr "Enviar paquetes de mantenimiento de actividad" - -#: ../src/gtkgui.glade.h:254 -msgid "Send message" -msgstr "Enviar mensaje" - -#: ../src/gtkgui.glade.h:255 -msgid "Send message and close window" -msgstr "Enviar mensaje y cerrar ventana" - -#: ../src/gtkgui.glade.h:256 -msgid "Sends a message to currently connected users to this server" -msgstr "Envía un mensaje a los usuarios conectados en este momento al servidor" - -#: ../src/gtkgui.glade.h:257 -msgid "Server:" -msgstr "Servidor:" - -#: ../src/gtkgui.glade.h:258 -msgid "Servers Features" -msgstr "Características de los servidores" - -#: ../src/gtkgui.glade.h:259 -msgid "Set MOTD" -msgstr "Definir MOTD" - -#: ../src/gtkgui.glade.h:260 -msgid "Set _Avatar" -msgstr "Definir Avatar" - -#: ../src/gtkgui.glade.h:261 -#, fuzzy -msgid "Set my profile when I connect" -msgstr "Definir un avatar cuando me conecte" - -#: ../src/gtkgui.glade.h:262 -msgid "Sets Message of the Day" -msgstr "Define el mensaje del día" - -#: ../src/gtkgui.glade.h:263 -msgid "Show All Pending _Events" -msgstr "Mostrar todos los _eventos pendientes" - -#: ../src/gtkgui.glade.h:264 -msgid "Show _Offline Contacts" -msgstr "Mostrar contactos desconectados" - -#: ../src/gtkgui.glade.h:265 -msgid "Show _Roster" -msgstr "Mostrar _roster" - -#: ../src/gtkgui.glade.h:266 -msgid "Show _XML Console" -msgstr "Mostrar consola _XML" - -#: ../src/gtkgui.glade.h:267 -msgid "Show only in _roster" -msgstr "Sólo mostrar en la _lista de contactos" - -#: ../src/gtkgui.glade.h:268 -msgid "Shows a list of file transfers between you and other" -msgstr "Muestra una lista de transferencias entre tú y otro" - -#: ../src/gtkgui.glade.h:269 -msgid "Sign _in" -msgstr "Conectar" - -#: ../src/gtkgui.glade.h:270 -msgid "Sign _out" -msgstr "_Desconectar" - -#: ../src/gtkgui.glade.h:271 -msgid "Sta_tus" -msgstr "Es_tado" - -#: ../src/gtkgui.glade.h:272 -msgid "Start _Chat" -msgstr "Iniciar conversación" - -#: ../src/gtkgui.glade.h:273 -msgid "State:" -msgstr "Estado:" - -#: ../src/gtkgui.glade.h:274 -msgid "Status" -msgstr "Estado" - -#: ../src/gtkgui.glade.h:275 -msgid "Status:" -msgstr "Estado:" - -#: ../src/gtkgui.glade.h:276 -msgid "Street:" -msgstr "Calle:" - -#: ../src/gtkgui.glade.h:277 -msgid "Subject:" -msgstr "Tema:" - -#: ../src/gtkgui.glade.h:278 -msgid "Subscription Request" -msgstr "Petición de adición" - -#: ../src/gtkgui.glade.h:279 -msgid "Subscription:" -msgstr "Subscripción:" - -#. Suffix in Name -#: ../src/gtkgui.glade.h:281 -msgid "Suffix:" -msgstr "Sufijo:" - -#: ../src/gtkgui.glade.h:282 -msgid "Synch_ronize account status with global status" -msgstr "Sinc_ronizar el estado de la cuenta con el estado global" - -#: ../src/gtkgui.glade.h:283 -#, fuzzy -msgid "T_heme:" -msgstr "Tema:" - -#: ../src/gtkgui.glade.h:284 -msgid "Text _color:" -msgstr "_Color del texto:" - -#: ../src/gtkgui.glade.h:285 -msgid "Text _font:" -msgstr "_Fuente del texto:" - -#: ../src/gtkgui.glade.h:286 -msgid "The auto away status message" -msgstr "El mensaje de estado de auto-ausencia" - -#: ../src/gtkgui.glade.h:287 -msgid "The auto not available status message" -msgstr "El mensaje de estado de no auto-no disponible" - -#: ../src/gtkgui.glade.h:288 -msgid "" -"This action removes single file transfer from the list. If the transfer is " -"active, it is first stopped and then removed" -msgstr "" -"Esta acción elimina transferencias de la lista. Si la transferencia está " -"activa, es primero detenida y luego eliminada" - -#: ../src/gtkgui.glade.h:289 -msgid "Title:" -msgstr "Título:" - -#: ../src/gtkgui.glade.h:290 -msgid "To:" -msgstr "A:" - -#: ../src/gtkgui.glade.h:291 -msgid "Toggle Open_PGP Encryption" -msgstr "Alternar encriptación OpenPGP" - -#: ../src/gtkgui.glade.h:292 -msgid "Type:" -msgstr "Tipo:" - -#: ../src/gtkgui.glade.h:293 -msgid "Underline" -msgstr "Subrayado" - -#: ../src/gtkgui.glade.h:294 -msgid "Update MOTD" -msgstr "Actualizar MOTD" - -#: ../src/gtkgui.glade.h:295 -msgid "Updates Message of the Day" -msgstr "Actualiza el mensaje del día" - -#: ../src/gtkgui.glade.h:296 -msgid "Use _SSL (legacy)" -msgstr "Usar _SSL (el viejo)" - -#: ../src/gtkgui.glade.h:297 -msgid "Use _transports iconsets" -msgstr "_Usar los iconos del transporte" - -#: ../src/gtkgui.glade.h:298 -msgid "Use authentication" -msgstr "Usar autentificación" - -#: ../src/gtkgui.glade.h:299 -msgid "Use custom hostname/port" -msgstr "Usar nombre de host y puerto personalizados" - -#: ../src/gtkgui.glade.h:300 -#, fuzzy -msgid "Use file transfer proxies" -msgstr "lista de transferencias" - -#: ../src/gtkgui.glade.h:301 -#, fuzzy -msgid "Use t_rayicon (aka. notification area icon)" -msgstr "_Icono en el área de notificación" - -#: ../src/gtkgui.glade.h:302 -msgid "User ID:" -msgstr "Identificador:" - -#: ../src/gtkgui.glade.h:303 -msgid "When a file transfer is complete show a popup notification" -msgstr "" -"Cuando una transferencia se completa, muestra una notificación emergente" - -#: ../src/gtkgui.glade.h:304 -#, fuzzy -msgid "" -"When a new event (message, file transfer request etc..) is received, the " -"following methods may be used to inform you about it. Please note that " -"events about new messages only occur if it is a new message from a contact " -"you are not already chatting with" -msgstr "" -"Cuando se recibe un nuevo evento (mensaje, envío de archivos, etc...), " -"pueden ser usados los siguientes métodos para informar. NOTA: Los eventos de " -"nuevo mensaje sólo aparecen cuando proceden de un contacto con el que no se " -"está hablando ya" - -#: ../src/gtkgui.glade.h:305 -msgid "When new event is received" -msgstr "Cuando se reciba un nuevo evento" - -#: ../src/gtkgui.glade.h:306 -msgid "Work" -msgstr "Trabajo" - -#: ../src/gtkgui.glade.h:307 -msgid "" -"You need to have an account in order to connect\n" -"to the Jabber network." -msgstr "Debes tener una cuenta antes de conectar a la red Jabber" - -#: ../src/gtkgui.glade.h:309 -msgid "Your JID:" -msgstr "Tu JID" - -#. Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector) -#: ../src/gtkgui.glade.h:311 -msgid "_Actions" -msgstr "_Acciones" - -#: ../src/gtkgui.glade.h:312 -msgid "_Add Contact..." -msgstr "_Añadir contacto..." - -#: ../src/gtkgui.glade.h:313 -msgid "_Add to Roster" -msgstr "_Añadir a la lista de contactos" - -#: ../src/gtkgui.glade.h:314 -msgid "_Address:" -msgstr "_Dirección:" - -#: ../src/gtkgui.glade.h:315 -msgid "_Admin" -msgstr "_Administrar" - -#: ../src/gtkgui.glade.h:316 -msgid "_Administrator" -msgstr "_Administrador" - -#: ../src/gtkgui.glade.h:317 -msgid "_Advanced" -msgstr "_Avanzado" - -#: ../src/gtkgui.glade.h:318 -#, fuzzy -msgid "_After time:" -msgstr "Después de la hora:" - -#: ../src/gtkgui.glade.h:319 -msgid "_Authorize" -msgstr "_Autorizar" - -#: ../src/gtkgui.glade.h:320 -msgid "_Background:" -msgstr "_Fondo" - -#: ../src/gtkgui.glade.h:321 -msgid "_Ban" -msgstr "_Banear" - -#: ../src/gtkgui.glade.h:322 -#, fuzzy -msgid "_Before time:" -msgstr "Antes de la hora:" - -#: ../src/gtkgui.glade.h:323 -msgid "_Bookmark This Room" -msgstr "Añadir este salón a marcadores" - -#: ../src/gtkgui.glade.h:324 -msgid "_Browser:" -msgstr "_Navegador:" - -#: ../src/gtkgui.glade.h:325 -msgid "_Cancel" -msgstr "_Cancelar" - -#: ../src/gtkgui.glade.h:326 -msgid "_Compact View Alt+C" -msgstr "Vista _compacta Alt+C" - -#: ../src/gtkgui.glade.h:327 -msgid "_Contents" -msgstr "_Contenidos" - -#: ../src/gtkgui.glade.h:329 -msgid "_Copy JID/Email Address" -msgstr "_Copiar la dirección" - -#: ../src/gtkgui.glade.h:330 -msgid "_Copy Link Location" -msgstr "_Copiar la dirección del enlace" - -#: ../src/gtkgui.glade.h:331 -msgid "_Deny" -msgstr "_Denegar" - -#: ../src/gtkgui.glade.h:332 -msgid "_Discover Services" -msgstr "_Descubrir servicios" - -#: ../src/gtkgui.glade.h:333 -msgid "_Discover Services..." -msgstr "_Descubrir servicios..." - -#: ../src/gtkgui.glade.h:335 -msgid "_FAQ" -msgstr "" - -#: ../src/gtkgui.glade.h:336 -#, fuzzy -msgid "_File manager:" -msgstr "Administrador de archivos:" - -#: ../src/gtkgui.glade.h:337 -msgid "_Filter:" -msgstr "_Filtro:" - -#: ../src/gtkgui.glade.h:338 -msgid "_Finish" -msgstr "_Finalizar" - -#: ../src/gtkgui.glade.h:339 -#, fuzzy -msgid "_Font:" -msgstr "Fuente:" - -#: ../src/gtkgui.glade.h:340 -msgid "_Group Chat" -msgstr "_Grupos de charla" - -#: ../src/gtkgui.glade.h:341 -msgid "_Help" -msgstr "_Ayuda" - -#: ../src/gtkgui.glade.h:342 -msgid "_Highlight misspelled words" -msgstr "_Resaltar errores ortográficos" - -#: ../src/gtkgui.glade.h:343 -msgid "_History" -msgstr "_Histórico" - -#: ../src/gtkgui.glade.h:344 -msgid "_Host:" -msgstr "" - -#. Info/Query: all(?) jabber xml start with Welcome to Gajim History Logs Manager\n" -"\n" -"You can select logs from the left and/or search database from below.\n" -"\n" -"WARNING:\n" -"If you plan to do massive deletions, please make sure Gajim is not running. " -"Generally avoid deletions with contacts you currently chat with." +#: ../src/gtkgui_helpers.py:717 +msgid "Extension not supported" msgstr "" -#: ../src/history_manager.glade.h:7 +#: ../src/gtkgui_helpers.py:718 +#, python-format +msgid "Image cannot be saved in %(type)s format. Save as %(new_filename)s?" +msgstr "" + +#: ../src/gtkgui_helpers.py:727 #, fuzzy -msgid "Delete" -msgstr "Eliminar MOTD" +msgid "Save Image as..." +msgstr "Guardar archivo como..." -#: ../src/history_manager.glade.h:8 -msgid "Export" -msgstr "" - -#: ../src/history_manager.glade.h:9 -msgid "Gajim History Logs Manager" -msgstr "" - -#: ../src/history_manager.glade.h:10 -#, fuzzy -msgid "_Search Database" -msgstr "_Buscar" - -#: ../src/history_manager.py:58 +#: ../src/history_manager.py:61 #, fuzzy msgid "Cannot find history logs database" msgstr "creando base de datos de registros" #. holds jid -#: ../src/history_manager.py:102 +#: ../src/history_manager.py:104 #, fuzzy msgid "Contacts" msgstr "Contacto:" #. holds time -#: ../src/history_manager.py:115 ../src/history_manager.py:155 -#: ../src/history_window.py:94 +#: ../src/history_manager.py:117 ../src/history_manager.py:157 +#: ../src/history_window.py:85 msgid "Date" msgstr "Fecha" #. holds nickname -#: ../src/history_manager.py:121 ../src/history_manager.py:173 +#: ../src/history_manager.py:123 ../src/history_manager.py:175 #, fuzzy msgid "Nickname" msgstr "Alias:" #. holds message -#: ../src/history_manager.py:129 ../src/history_manager.py:161 -#: ../src/history_window.py:102 +#: ../src/history_manager.py:131 ../src/history_manager.py:163 +#: ../src/history_window.py:93 msgid "Message" msgstr "Mensaje" #. holds subject -#: ../src/history_manager.py:136 ../src/history_manager.py:167 +#: ../src/history_manager.py:138 ../src/history_manager.py:169 #, fuzzy msgid "Subject" msgstr "Tema:" -#: ../src/history_manager.py:181 +#: ../src/history_manager.py:183 msgid "" "Do you want to clean up the database? (STRONGLY NOT RECOMMENDED IF GAJIM IS " "RUNNING)" msgstr "" -#: ../src/history_manager.py:183 +#: ../src/history_manager.py:185 msgid "" "Normally allocated database size will not be freed, it will just become " "reusable. If you really want to reduce database filesize, click YES, else " @@ -3717,209 +4384,253 @@ msgid "" "In case you click YES, please wait..." msgstr "" -#: ../src/history_manager.py:389 +#: ../src/history_manager.py:391 #, fuzzy msgid "Exporting History Logs..." msgstr "Migrando el registro..." -#: ../src/history_manager.py:465 +#: ../src/history_manager.py:467 #, python-format msgid "%(who)s on %(time)s said: %(message)s\n" msgstr "" -#: ../src/history_manager.py:465 -msgid "who" -msgstr "" - -#: ../src/history_manager.py:503 +#: ../src/history_manager.py:505 msgid "Do you really want to delete logs of the selected contact?" msgid_plural "Do you really want to delete logs of the selected contacts?" msgstr[0] "" msgstr[1] "" -#: ../src/history_manager.py:507 ../src/history_manager.py:543 +#: ../src/history_manager.py:509 ../src/history_manager.py:545 msgid "This is an irreversible operation." msgstr "" -#: ../src/history_manager.py:540 +#: ../src/history_manager.py:542 msgid "Do you really want to delete the selected message?" msgid_plural "Do you really want to delete the selected messages?" msgstr[0] "" msgstr[1] "" -#: ../src/history_window.py:111 ../src/history_window.py:113 +#: ../src/history_window.py:102 ../src/history_window.py:104 #, python-format msgid "Conversation History with %s" msgstr "Histórico de conversaciones con %s" -#: ../src/history_window.py:265 +#: ../src/history_window.py:258 #, python-format msgid "%(nick)s is now %(status)s: %(status_msg)s" msgstr "%(nick)s está ahora %(status)s: %(status_msg)s" -#: ../src/history_window.py:269 +#: ../src/history_window.py:262 ../src/notify.py:181 #, python-format msgid "%(nick)s is now %(status)s" msgstr "%(nick)s está ahora %(status)s" -#: ../src/history_window.py:275 +#: ../src/history_window.py:268 #, python-format msgid "Status is now: %(status)s: %(status_msg)s" msgstr "El estado es ahora: %(status)s: %(status_msg)s " -#: ../src/history_window.py:278 +#: ../src/history_window.py:271 #, python-format msgid "Status is now: %(status)s" msgstr "El estado es ahora: %(status)s" -#: ../src/message_window.py:233 +#: ../src/message_window.py:254 #, fuzzy msgid "Messages" msgstr "Mensaje" -#: ../src/message_window.py:234 +#: ../src/message_window.py:255 #, fuzzy, python-format msgid "%s - Gajim" msgstr "Gajim" -#: ../src/roster_window.py:140 +#: ../src/notify.py:179 +#, fuzzy, python-format +msgid "%(nick)s Changed Status" +msgstr "%(nick)s está ahora %(status)s" + +#: ../src/notify.py:189 +#, fuzzy, python-format +msgid "%(nickname)s Signed In" +msgstr "Contacto conectado" + +#: ../src/notify.py:197 +#, fuzzy, python-format +msgid "%(nickname)s Signed Out" +msgstr "Contacto desconectado" + +#: ../src/notify.py:209 +#, fuzzy, python-format +msgid "New Single Message from %(nickname)s" +msgstr "Nuevo mensaje" + +#: ../src/notify.py:217 +#, fuzzy, python-format +msgid "New Private Message from room %s" +msgstr "Nuevo mensaje privado" + +#: ../src/notify.py:218 +#, python-format +msgid "%(nickname)s: %(message)s" +msgstr "" + +#: ../src/notify.py:224 +#, fuzzy, python-format +msgid "New Message from %(nickname)s" +msgstr "Nuevo mensaje como %s " + +#: ../src/roster_window.py:137 msgid "Merged accounts" msgstr "Cuentas combinadas" -#: ../src/roster_window.py:289 ../src/common/helpers.py:42 +#: ../src/roster_window.py:297 ../src/common/helpers.py:40 #, fuzzy msgid "Observers" msgstr "Servidor" -#: ../src/roster_window.py:542 -#, python-format -msgid "You are already in room %s" -msgstr "Ya estás en el salón %s" - -#: ../src/roster_window.py:546 ../src/roster_window.py:2262 +#: ../src/roster_window.py:594 ../src/roster_window.py:2574 msgid "You cannot join a room while you are invisible" msgstr "No puedes entrar a un salón de chat estando invisible" #. the 'manage gc bookmarks' item is showed #. below to avoid duplicate code #. add -#: ../src/roster_window.py:735 +#: ../src/roster_window.py:793 #, python-format msgid "to %s account" msgstr "a la cuenta %s" #. disco -#: ../src/roster_window.py:742 +#: ../src/roster_window.py:798 #, python-format msgid "using %s account" msgstr "usando la cuenta %s" -#. new message +#. new chat #. for chat_with #. for single message -#: ../src/roster_window.py:750 ../src/systray.py:194 ../src/systray.py:201 +#: ../src/roster_window.py:804 ../src/systray.py:199 ../src/systray.py:204 #, python-format msgid "using account %s" msgstr "usando la cuenta %s" #. profile, avatar -#: ../src/roster_window.py:759 +#: ../src/roster_window.py:870 #, fuzzy, python-format msgid "of account %s" msgstr "para la cuenta %s" -#: ../src/roster_window.py:818 +#: ../src/roster_window.py:890 msgid "Manage Bookmarks..." msgstr "Gestionar marcadores..." -#: ../src/roster_window.py:842 +#: ../src/roster_window.py:914 #, python-format msgid "for account %s" msgstr "para la cuenta %s" #. History manager -#: ../src/roster_window.py:863 +#: ../src/roster_window.py:935 #, fuzzy msgid "History Manager" msgstr "_Histórico" -#: ../src/roster_window.py:872 +#: ../src/roster_window.py:944 msgid "_Join New Room" msgstr "_Entrar en un nuevo salón" -#: ../src/roster_window.py:1158 +#: ../src/roster_window.py:1223 #, python-format msgid "Transport \"%s\" will be removed" msgstr "El transporte \"%s\" será eliminado" -#: ../src/roster_window.py:1158 +#: ../src/roster_window.py:1224 msgid "" "You will no longer be able to send and receive messages to contacts from " "this transport." msgstr "" "Ya no podrás enviar y recibir mensajes a contactos desde este transporte" -#: ../src/roster_window.py:1200 +#: ../src/roster_window.py:1226 +#, fuzzy +msgid "Transports will be removed" +msgstr "El transporte \"%s\" será eliminado" + +#: ../src/roster_window.py:1231 +#, fuzzy, python-format +msgid "" +"You will no longer be able to send and receive messages to contacts from " +"these transports:%s" +msgstr "" +"Ya no podrás enviar y recibir mensajes a contactos desde este transporte" + +#: ../src/roster_window.py:1275 msgid "Assign OpenPGP Key" msgstr "Asignar clave OpenPGP" -#: ../src/roster_window.py:1201 +#: ../src/roster_window.py:1276 msgid "Select a key to apply to the contact" msgstr "Selecciona una clave para ser aplicada al contacto" -#: ../src/roster_window.py:1358 +#: ../src/roster_window.py:1413 ../src/roster_window.py:1588 +#, fuzzy +msgid "_New room" +msgstr "Nuevo salón" + +#: ../src/roster_window.py:1471 msgid "I would like to add you to my roster" msgstr "Me gustaría añadirte a mi lista de contactos" -#: ../src/roster_window.py:1410 +#: ../src/roster_window.py:1647 msgid "Re_name" msgstr "Re_nombrar" -#: ../src/roster_window.py:1441 +#: ../src/roster_window.py:1678 msgid "_Log on" msgstr "_Conectar" -#: ../src/roster_window.py:1450 +#: ../src/roster_window.py:1687 msgid "Log _off" msgstr "_Desconectar" -#: ../src/roster_window.py:1545 +#: ../src/roster_window.py:1782 msgid "_Change Status Message" msgstr "_Cambiar mensaje de estado" -#: ../src/roster_window.py:1617 +#: ../src/roster_window.py:1858 msgid "Authorization has been sent" msgstr "La autorización ha sido enviada" -#: ../src/roster_window.py:1618 +#: ../src/roster_window.py:1859 #, python-format msgid "Now \"%s\" will know your status." msgstr "Ahora \"%s\" podrá saber tu estado." -#: ../src/roster_window.py:1642 +#: ../src/roster_window.py:1883 msgid "Subscription request has been sent" msgstr "La petición de subscripción ha sido enviada" -#: ../src/roster_window.py:1643 +#: ../src/roster_window.py:1884 #, python-format msgid "If \"%s\" accepts this request you will know his or her status." msgstr "Si \"%s\" acepta esta petición podrás saber su estado." -#: ../src/roster_window.py:1654 +#: ../src/roster_window.py:1895 msgid "Authorization has been removed" msgstr "La autorización ha sido eliminada" -#: ../src/roster_window.py:1655 +#: ../src/roster_window.py:1896 #, python-format msgid "Now \"%s\" will always see you as offline." msgstr "Ahora \"%s\" siempre te verá desconectado." -#: ../src/roster_window.py:1824 +#: ../src/roster_window.py:2102 #, python-format msgid "Contact \"%s\" will be removed from your roster" msgstr "El contacto \"%s\" será eliminado de tu roster" -#: ../src/roster_window.py:1828 +#: ../src/roster_window.py:2106 #, fuzzy msgid "" "By removing this contact you also remove authorization resulting in him or " @@ -3928,7 +4639,7 @@ msgstr "" "Eliminando este contacto también se está eliminando la autorización. Este " "contacto siempre te verá desconectado." -#: ../src/roster_window.py:1832 +#: ../src/roster_window.py:2110 msgid "" "By removing this contact you also by default remove authorization resulting " "in him or her always seeing you as offline." @@ -3936,37 +4647,52 @@ msgstr "" "Eliminando este contacto también se está eliminando la autorización. Este " "contacto siempre te verá desconectado." -#: ../src/roster_window.py:1833 +#: ../src/roster_window.py:2111 msgid "I want this contact to know my status after removal" msgstr "Quiero que este contacto conozca mi estado después de la eliminación" -#: ../src/roster_window.py:1901 +#. several contact to remove at the same time +#: ../src/roster_window.py:2115 +#, fuzzy +msgid "Contacts will be removed from your roster" +msgstr "El contacto \"%s\" será eliminado de tu roster" + +#: ../src/roster_window.py:2119 +#, fuzzy, python-format +msgid "" +"By removing these contacts:%s\n" +"you also remove authorization resulting in them always seeing you as offline." +msgstr "" +"Eliminando este contacto también se está eliminando la autorización. Este " +"contacto siempre te verá desconectado." + +#: ../src/roster_window.py:2189 msgid "Passphrase Required" msgstr "Contraseña requerida" -#: ../src/roster_window.py:1902 +#: ../src/roster_window.py:2190 #, fuzzy, python-format msgid "Enter GPG key passphrase for account %s." msgstr "Introduce contraseña GPG para la cuenta %s" -#: ../src/roster_window.py:1907 +#: ../src/roster_window.py:2195 msgid "Save passphrase" msgstr "Guardar contraseña" -#: ../src/roster_window.py:1915 +#: ../src/roster_window.py:2203 #, fuzzy msgid "Wrong Passphrase" msgstr "Contraseña" -#: ../src/roster_window.py:1916 +#: ../src/roster_window.py:2204 msgid "Please retype your GPG passphrase or press Cancel." msgstr "" -#: ../src/roster_window.py:1964 ../src/roster_window.py:2021 +#: ../src/roster_window.py:2256 ../src/roster_window.py:2313 msgid "You are participating in one or more group chats" msgstr "Estás participando en uno o más grupos de charla" -#: ../src/roster_window.py:1965 ../src/roster_window.py:2022 +#: ../src/roster_window.py:2257 ../src/roster_window.py:2314 msgid "" "Changing your status to invisible will result in disconnection from those " "group chats. Are you sure you want to go invisible?" @@ -3974,19 +4700,19 @@ msgstr "" "Cambiando tu estado a invisible provocará tu desconexión de los grupos de " "charla. ¿Estás seguro de querer ser invisible?" -#: ../src/roster_window.py:1981 +#: ../src/roster_window.py:2273 msgid "No account available" msgstr "Cuenta no disponible" -#: ../src/roster_window.py:1982 +#: ../src/roster_window.py:2274 msgid "You must create an account before you can chat with other contacts." msgstr "Debes crear una cuenta antes de poder conversar con otros contactos." -#: ../src/roster_window.py:2427 ../src/roster_window.py:2433 +#: ../src/roster_window.py:2746 ../src/roster_window.py:2752 msgid "You have unread messages" msgstr "Tienes mensajes sin leer" -#: ../src/roster_window.py:2428 ../src/roster_window.py:2434 +#: ../src/roster_window.py:2747 ../src/roster_window.py:2753 msgid "" "Messages will only be available for reading them later if you have history " "enabled." @@ -3994,139 +4720,145 @@ msgstr "" "Los mensajes sólo estarán disponibles para lectura posterior si tienes el " "histórico activado" -#: ../src/roster_window.py:3184 +#: ../src/roster_window.py:3542 #, fuzzy, python-format msgid "Drop %s in group %s" msgstr "De %s en el salón %s" -#: ../src/roster_window.py:3191 +#: ../src/roster_window.py:3549 #, fuzzy, python-format msgid "Make %s and %s metacontacts" msgstr "Enviar archivo a un contacto" -#: ../src/roster_window.py:3358 +#: ../src/roster_window.py:3726 msgid "Change Status Message..." msgstr "Cambiar mensaje de estado..." -#: ../src/systray.py:155 +#: ../src/systray.py:160 msgid "_Change Status Message..." msgstr "_Cambiar mensaje de estado..." -#: ../src/systray.py:236 +#: ../src/systray.py:237 msgid "Hide this menu" msgstr "Oculta este menú" -#: ../src/systraywin32.py:266 ../src/systraywin32.py:285 -#: ../src/tooltips.py:315 +#: ../src/systraywin32.py:261 ../src/systraywin32.py:280 #, python-format msgid "Gajim - %d unread message" msgid_plural "Gajim - %d unread messages" msgstr[0] "Gajim - %d mensaje sin leer" msgstr[1] "Gajim - %d mensajes sin leer" -#: ../src/tooltips.py:321 -#, python-format -msgid "Gajim - %d unread single message" -msgid_plural "Gajim - %d unread single messages" +#: ../src/tooltips.py:326 +#, fuzzy, python-format +msgid " %d unread message" +msgid_plural " %d unread messages" +msgstr[0] "Gajim - %d mensaje sin leer" +msgstr[1] "Gajim - %d mensajes sin leer" + +#: ../src/tooltips.py:332 +#, fuzzy, python-format +msgid " %d unread single message" +msgid_plural " %d unread single messages" msgstr[0] "Gajim - %d mensaje único sin leer" msgstr[1] "Gajim - %d mensajes únicos sin leer" -#: ../src/tooltips.py:327 -#, python-format -msgid "Gajim - %d unread group chat message" -msgid_plural "Gajim - %d unread group chat messages" +#: ../src/tooltips.py:338 +#, fuzzy, python-format +msgid " %d unread group chat message" +msgid_plural " %d unread group chat messages" msgstr[0] "Gajim - %d mensajes sin leer" msgstr[1] "Gajim - %d mensajes sin leer" -#: ../src/tooltips.py:333 -#, python-format -msgid "Gajim - %d unread private message" -msgid_plural "Gajim - %d unread private messages" +#: ../src/tooltips.py:344 +#, fuzzy, python-format +msgid " %d unread private message" +msgid_plural " %d unread private messages" msgstr[0] "Gajim - %d mensaje privado sin leer" msgstr[1] "Gajim - %d mensajes privados sin leer" -#: ../src/tooltips.py:348 ../src/tooltips.py:350 +#: ../src/tooltips.py:359 ../src/tooltips.py:361 #, python-format msgid "Gajim - %s" msgstr "Gajim - %s" -#: ../src/tooltips.py:383 +#: ../src/tooltips.py:395 msgid "Role: " msgstr "Rol: " -#: ../src/tooltips.py:384 +#: ../src/tooltips.py:396 msgid "Affiliation: " msgstr "Afiliación: " -#: ../src/tooltips.py:386 ../src/tooltips.py:518 +#: ../src/tooltips.py:398 ../src/tooltips.py:537 msgid "Resource: " msgstr "Recurso: " -#: ../src/tooltips.py:394 ../src/tooltips.py:521 ../src/tooltips.py:543 -#: ../src/tooltips.py:654 +#: ../src/tooltips.py:407 ../src/tooltips.py:540 ../src/tooltips.py:565 +#: ../src/tooltips.py:676 msgid "Status: " msgstr "Estado: " -#: ../src/tooltips.py:501 +#: ../src/tooltips.py:514 msgid "Subscription: " msgstr "Subscripción: " -#: ../src/tooltips.py:510 +#: ../src/tooltips.py:523 msgid "OpenPGP: " msgstr "OpenPGP: " -#: ../src/tooltips.py:548 +#: ../src/tooltips.py:570 #, fuzzy, python-format msgid "Last status on %s" msgstr "_Iconos de estado por defecto:" -#: ../src/tooltips.py:550 +#: ../src/tooltips.py:572 #, fuzzy, python-format msgid "Since %s" msgstr "Tamaño: %s" -#: ../src/tooltips.py:610 +#: ../src/tooltips.py:632 msgid "Download" msgstr "Descarga" -#: ../src/tooltips.py:616 +#: ../src/tooltips.py:638 msgid "Upload" msgstr "Subida" -#: ../src/tooltips.py:623 +#: ../src/tooltips.py:645 msgid "Type: " msgstr "Tipo: " -#: ../src/tooltips.py:629 +#: ../src/tooltips.py:651 msgid "Transferred: " msgstr "Transferido: " -#: ../src/tooltips.py:632 ../src/tooltips.py:653 +#: ../src/tooltips.py:654 ../src/tooltips.py:675 msgid "Not started" msgstr "No iniciado" -#: ../src/tooltips.py:636 +#: ../src/tooltips.py:658 msgid "Stopped" msgstr "Detenido" -#: ../src/tooltips.py:638 ../src/tooltips.py:641 +#: ../src/tooltips.py:660 ../src/tooltips.py:663 msgid "Completed" msgstr "Completado" #. stalled is not paused. it is like 'frozen' it stopped alone -#: ../src/tooltips.py:649 +#: ../src/tooltips.py:671 msgid "Stalled" msgstr "Atascado" -#: ../src/tooltips.py:651 +#: ../src/tooltips.py:673 msgid "Transferring" msgstr "Transfiriendo" -#: ../src/tooltips.py:683 +#: ../src/tooltips.py:705 msgid "This service has not yet responded with detailed information" msgstr "Este servicio no ha respondido todavía con información detallada" -#: ../src/tooltips.py:686 +#: ../src/tooltips.py:708 msgid "" "This service could not respond with detailed information.\n" "It is most likely legacy or broken" @@ -4135,24 +4867,24 @@ msgstr "" "Posiblemente es antiguo o está roto" #. keep identation -#: ../src/vcard.py:186 +#: ../src/vcard.py:188 msgid "Could not load image" msgstr "" -#: ../src/vcard.py:262 +#: ../src/vcard.py:291 msgid "?Client:Unknown" msgstr "Desconocido" -#: ../src/vcard.py:264 +#: ../src/vcard.py:293 msgid "?OS:Unknown" msgstr "Desconocido" -#: ../src/vcard.py:281 +#: ../src/vcard.py:312 #, fuzzy, python-format msgid "since %s" msgstr "Navegando %s" -#: ../src/vcard.py:305 +#: ../src/vcard.py:336 msgid "" "This contact is interested in your presence information, but you are not " "interested in his/her presence" @@ -4160,7 +4892,7 @@ msgstr "" "Este contacto está interesado en la información de tu presencia, pero tú no " "lo estás en la suya" -#: ../src/vcard.py:307 +#: ../src/vcard.py:338 msgid "" "You are interested in the contact's presence information, but he/she is not " "interested in yours" @@ -4168,14 +4900,14 @@ msgstr "" "Estás interesado en la información de la presencia del contacto, pero él/" "ella no lo está en la tuya" -#: ../src/vcard.py:309 +#: ../src/vcard.py:340 msgid "You and the contact are interested in each other's presence information" msgstr "" "Tanto tú como el contacto estáis interesados en la información de la " "presencia del otro" #. None -#: ../src/vcard.py:311 +#: ../src/vcard.py:342 msgid "" "You are not interested in the contact's presence, and neither he/she is " "interested in yours" @@ -4183,109 +4915,146 @@ msgstr "" "No estás interesado en la presencia del contacto y el/ella tampoco lo está " "en el tuyuo" -#: ../src/vcard.py:320 +#: ../src/vcard.py:351 msgid "You are waiting contact's answer about your subscription request" msgstr "" "Estás esperando la respuesta del contacto acerca de tu petición de adición" -#: ../src/vcard.py:332 ../src/vcard.py:355 +#: ../src/vcard.py:363 ../src/vcard.py:386 msgid " resource with priority " msgstr " recurso con prioridad " -#: ../src/vcard.py:434 +#: ../src/vcard.py:463 msgid "Without a connection you can not publish your contact information." msgstr "Sin una conexión no puedes publicar tu información de contacto." -#: ../src/vcard.py:463 +#: ../src/vcard.py:496 msgid "Without a connection, you can not get your contact information." msgstr "Sin una conexión, no puedes obtener tu información de contacto." -#: ../src/vcard.py:467 +#: ../src/vcard.py:500 #, fuzzy msgid "Personal details" msgstr "Información personal" -#: ../src/common/check_paths.py:39 +#: ../src/common/check_paths.py:35 msgid "creating logs database" msgstr "creando base de datos de registros" -#: ../src/common/check_paths.py:84 ../src/common/check_paths.py:95 -#: ../src/common/check_paths.py:102 +#: ../src/common/check_paths.py:87 ../src/common/check_paths.py:98 +#: ../src/common/check_paths.py:105 #, python-format msgid "%s is file but it should be a directory" msgstr "%s es un archivo pero podría ser un directorio" -#: ../src/common/check_paths.py:85 ../src/common/check_paths.py:96 -#: ../src/common/check_paths.py:103 ../src/common/check_paths.py:110 +#: ../src/common/check_paths.py:88 ../src/common/check_paths.py:99 +#: ../src/common/check_paths.py:106 ../src/common/check_paths.py:114 msgid "Gajim will now exit" msgstr "Gajim se cerrará ahora" -#: ../src/common/check_paths.py:109 +#: ../src/common/check_paths.py:113 #, python-format msgid "%s is directory but should be file" msgstr "%s es un directorio pero podría ser un archivo" -#: ../src/common/check_paths.py:125 +#: ../src/common/check_paths.py:129 #, python-format msgid "creating %s directory" msgstr "creando directorio %s" -#: ../src/common/exceptions.py:35 +#: ../src/common/exceptions.py:32 msgid "pysqlite2 (aka python-pysqlite2) dependency is missing. Exiting..." msgstr "" -#: ../src/common/exceptions.py:43 +#: ../src/common/exceptions.py:40 msgid "Service not available: Gajim is not running, or remote_control is False" msgstr "" "Servicio no disponible: Gajim no está ejecutándose, o remote_control está en " "False" -#: ../src/common/exceptions.py:51 +#: ../src/common/exceptions.py:48 msgid "D-Bus is not present on this machine or python module is missing" msgstr "D-Bus no está presente en esta máquina o falta el módulo python" -#: ../src/common/exceptions.py:59 +#: ../src/common/exceptions.py:56 msgid "" "Session bus is not available.\n" "Try reading http://trac.gajim.org/wiki/GajimDBus" msgstr "" -#: ../src/common/config.py:53 +#: ../src/common/config.py:51 msgid "Use DBus and Notification-Daemon to show notifications" msgstr "Usar DBus o el demonio notificador para mostrar notificaciones" -#: ../src/common/config.py:57 +#: ../src/common/config.py:55 msgid "Time in minutes, after which your status changes to away." msgstr "Tiempo en minutos, después de haber cambiado a ausente" -#: ../src/common/config.py:58 +#: ../src/common/config.py:56 msgid "Away as a result of being idle" msgstr "Ausente por inactividad" -#: ../src/common/config.py:60 +#: ../src/common/config.py:58 msgid "Time in minutes, after which your status changes to not available." msgstr "Tiempo en minutos, después de haber cambiado a no disponible" -#: ../src/common/config.py:61 +#: ../src/common/config.py:59 msgid "Not available as a result of being idle" msgstr "No disponible por inactividad" +#: ../src/common/config.py:77 +msgid "List (space separated) of rows (accounts and groups) that are collapsed" +msgstr "" + +#: ../src/common/config.py:83 +msgid "Language used by speller" +msgstr "" + #: ../src/common/config.py:88 -msgid "Treat * / _ pairs as possible formatting characters." +msgid "Languages available in speller" msgstr "" #: ../src/common/config.py:89 msgid "" +"'always' - print time for every message.\n" +"'sometimes' - print time every print_ichat_every_foo_minutes minute.\n" +"'never' - never print time." +msgstr "" + +#: ../src/common/config.py:90 +msgid "" +"Value of fuzziness from 1 to 4 or 0 to disable fuzzyclock. 1 is the most " +"precise clock, 4 the less precise one." +msgstr "" + +#: ../src/common/config.py:93 +msgid "Treat * / _ pairs as possible formatting characters." +msgstr "" + +#: ../src/common/config.py:94 +msgid "" "If True, do not remove */_ . So *abc* will be bold but with * * not removed." msgstr "" "Si es True, no elimiina */_ . Entonces *abc* será negrita, pero sin eliminar " "* *" -#: ../src/common/config.py:131 +#: ../src/common/config.py:104 +msgid "" +"Character to add after nickname when using nick completion (tab) in group " +"chat" +msgstr "" + +#: ../src/common/config.py:105 +msgid "" +"Character to propose to add after desired nickname when desired nickname is " +"used by someone else in group chat" +msgstr "" + +#: ../src/common/config.py:137 msgid "Add * and [n] in roster title?" msgstr "¿Añadir * y [n] en el título del roster?" -#: ../src/common/config.py:132 +#: ../src/common/config.py:138 msgid "" "How many lines to remember from previous conversation when a chat tab/window " "is reopened." @@ -4293,12 +5062,12 @@ msgstr "" "Cuántas líneas recordar de la última conversación cuando se vuelve a abrir " "una pestaña/ventana de conversación" -#: ../src/common/config.py:133 +#: ../src/common/config.py:139 msgid "How many minutes should last lines from previous conversation last." msgstr "" "Cuántos minutos debe durar la última línea de la conversación anterior." -#: ../src/common/config.py:134 +#: ../src/common/config.py:140 msgid "" "Send message on Ctrl+Enter and with Enter make new line (Mirabilis ICQ " "Client default behaviour)." @@ -4306,11 +5075,11 @@ msgstr "" "Envía un mensaje con Ctrl+Intro y con Intro hace un nuevo renglón (Al estilo " "del cliente Mirabilis ICQ)" -#: ../src/common/config.py:136 +#: ../src/common/config.py:142 msgid "How many lines to store for Ctrl+KeyUP." msgstr "Cuántas líneas almacenar para Ctrl+Arriba." -#: ../src/common/config.py:139 +#: ../src/common/config.py:145 #, python-format msgid "" "Either custom url with %s in it where %s is the word/phrase or 'WIKTIONARY' " @@ -4319,30 +5088,36 @@ msgstr "" "URL personalizada con %s donde %s es la palabra/frase o 'WIKTIONARY' que " "significa usar wiktionary" -#: ../src/common/config.py:142 +#: ../src/common/config.py:148 msgid "If checked, Gajim can be controlled remotely using gajim-remote." msgstr "" "Si está marcado, Gajim puede ser controlado remotamente usando gajim-remote." -#: ../src/common/config.py:146 +#: ../src/common/config.py:151 +msgid "" +"When not printing time for every message (print_time==sometimes), print it " +"every x minutes" +msgstr "" + +#: ../src/common/config.py:152 msgid "Ask before closing a group chat tab/window." msgstr "Preguntar antes de cerrar una ventana/petaña de salón de charla." -#: ../src/common/config.py:147 +#: ../src/common/config.py:153 #, fuzzy msgid "" "Always ask before closing group chat tab/window in this space separated list " "of room jids." msgstr "Preguntar antes de cerrar una ventana/petaña de salón de charla." -#: ../src/common/config.py:148 +#: ../src/common/config.py:154 #, fuzzy msgid "" "Never ask before closing group chat tab/window in this space separated list " "of room jids." msgstr "Preguntar antes de cerrar una ventana/petaña de salón de charla." -#: ../src/common/config.py:151 +#: ../src/common/config.py:157 msgid "" "Overrides the host we send for File Transfer in case of address translation/" "port forwarding." @@ -4350,23 +5125,24 @@ msgstr "" "Se elimina el host que enviamos para la transferencia de un archivo en caso " "de traducción de la dirección o redirección de puertos." -#: ../src/common/config.py:153 +#: ../src/common/config.py:159 msgid "IEC standard says KiB = 1024 bytes, KB = 1000 bytes." msgstr "Según el estándar IEC, KiB = 1024 bytes, KB = 1000 bytes." -#: ../src/common/config.py:161 +#: ../src/common/config.py:167 msgid "Show tab when only one conversation?" msgstr "¿Mostrar pestaña cuando sólo hay una conversación?" -#: ../src/common/config.py:162 -msgid "Show tab border if one conversation?" +#: ../src/common/config.py:168 +#, fuzzy +msgid "Show tabbed notebook border in chat windows?" msgstr "¿Mostrar borde de la pestaña cuando sólo hay una conversación?" -#: ../src/common/config.py:163 +#: ../src/common/config.py:169 msgid "Show close button in tab?" msgstr "¿Mostrar botón de cerrar en la pestaña?" -#: ../src/common/config.py:176 +#: ../src/common/config.py:182 msgid "" "A semicolon-separated list of words that will be highlighted in multi-user " "chat." @@ -4374,7 +5150,7 @@ msgstr "" "Una lista de palabras separadas por ';' que serán resaltadas en las " "conversaciones de varios usuarios." -#: ../src/common/config.py:177 +#: ../src/common/config.py:183 msgid "" "If True, quits Gajim when X button of Window Manager is clicked. This " "setting is taken into account only if trayicon is used." @@ -4383,11 +5159,11 @@ msgstr "" "pulsado. Esta preferencia sólo se activa si se usa el icono del área de " "notificación. " -#: ../src/common/config.py:178 +#: ../src/common/config.py:184 msgid "If True, Gajim registers for xmpp:// on each startup." msgstr "Si es True, Gajim registra xmpp:// en cada inicio." -#: ../src/common/config.py:179 +#: ../src/common/config.py:185 msgid "" "If True, Gajim will display an icon on each tab containing unread messages. " "Depending on the theme, this icon may be animated." @@ -4395,7 +5171,7 @@ msgstr "" "Si es True, Gajim mostrará un icono en cada pestaña que contenga mensajes " "sin leer. Dependiendo del tema, este icono puede ser animado." -#: ../src/common/config.py:180 +#: ../src/common/config.py:186 msgid "" "If True, Gajim will display the status message, if not empty, for every " "contact under the contact name in roster window" @@ -4403,7 +5179,7 @@ msgstr "" "Si es True, Gajim mostrará el mensaje de estado, si no está vacío, para cada " "contacto bajo su nombre en la lista de contactos." -#: ../src/common/config.py:182 +#: ../src/common/config.py:188 msgid "" "If True, Gajim will ask for avatar each contact that did not have an avatar " "last time or has one cached that is too old." @@ -4411,29 +5187,48 @@ msgstr "" "Si es True, Gajim pedirá un avatar a cada contacto que no tuvo un avatar la " "última vez o se tiene guardado uno demasiado antiguo." -#. FIXME: remove you and make it Gajim will not; and/or his or *her* status messages -#: ../src/common/config.py:184 +#: ../src/common/config.py:189 +#, fuzzy msgid "" -"If False, you will no longer see status line in chats when a contact changes " -"his or her status and/or his status message." +"If False, Gajim will no longer print status line in chats when a contact " +"changes his or her status and/or his or her status message." msgstr "" "Si es False, no verás más la línea de estado en las conversaciones cuando un " "contacto cambia su estado y/o su mensaje de estado." -#: ../src/common/config.py:189 +#: ../src/common/config.py:190 +msgid "" +"can be \"none\", \"all\" or \"in_and_out\". If \"none\", Gajim will no " +"longer print status line in groupchats when a member changes his or her " +"status and/or his or her status message. If \"all\" Gajim will print all " +"status messages. If \"in_and_out\", gajim will only print FOO enters/leaves " +"room" +msgstr "" + +#: ../src/common/config.py:193 +msgid "" +"If True, restored messages will use a smaller font than the default one." +msgstr "" + +#: ../src/common/config.py:194 +msgid "Don't show avatar for the transport itself." +msgstr "" + +#: ../src/common/config.py:196 msgid "" "If True and installed GTK+ and PyGTK versions are at least 2.8, make the " "window flash (the default behaviour in most Window Managers) when holding " "pending events." msgstr "" -#: ../src/common/config.py:191 +#: ../src/common/config.py:198 msgid "" "Jabberd1.4 does not like sha info when one join a password protected room. " "Turn this option to False to stop sending sha info in groupchat presences" msgstr "" -#: ../src/common/config.py:193 +#. always, never, peracct, pertype should not be translated +#: ../src/common/config.py:201 msgid "" "Controls the window where new messages are placed.\n" "'always' - All messages are sent to a single window.\n" @@ -4444,100 +5239,158 @@ msgid "" "the changes will take effect" msgstr "" -#: ../src/common/config.py:194 +#: ../src/common/config.py:202 msgid "If False, you will no longer see the avatar in the chat window" msgstr "" -#: ../src/common/config.py:195 +#: ../src/common/config.py:203 msgid "If True, pressing the escape key closes a tab/window" msgstr "" -#: ../src/common/config.py:196 +#: ../src/common/config.py:204 #, fuzzy msgid "Hides the buttons in group chat window" msgstr "Preguntar antes de cerrar una ventana/petaña de salón de charla." -#: ../src/common/config.py:197 +#: ../src/common/config.py:205 msgid "Hides the buttons in two persons chat window" msgstr "" -#: ../src/common/config.py:198 +#: ../src/common/config.py:206 #, fuzzy msgid "Hides the banner in a group chat window" msgstr "Preguntar antes de cerrar una ventana/petaña de salón de charla." -#: ../src/common/config.py:199 +#: ../src/common/config.py:207 msgid "Hides the banner in two persons chat window" msgstr "" -#: ../src/common/config.py:200 +#: ../src/common/config.py:208 msgid "Hides the room occupants list in groupchat window" msgstr "" +#: ../src/common/config.py:209 +msgid "Merge consecutive nickname in chat window" +msgstr "" + +#: ../src/common/config.py:210 +msgid "Indentation when using merge consecutive nickame" +msgstr "" + +#: ../src/common/config.py:211 +msgid "List of colors that will be used to color nicknames in groupchats" +msgstr "" + +#: ../src/common/config.py:212 +msgid "Ctrl-Tab go to next composing tab when none is unread" +msgstr "" + #. yes, no, ask -#: ../src/common/config.py:233 +#: ../src/common/config.py:245 msgid "Jabberd2 workaround" msgstr "" -#: ../src/common/config.py:237 +#: ../src/common/config.py:249 msgid "" "If checked, Gajim will use your IP and proxies defined in " "file_transfer_proxies option for file transfer." msgstr "" -#: ../src/common/config.py:290 +#: ../src/common/config.py:310 +msgid "all or space separated status" +msgstr "" + +#: ../src/common/config.py:311 +msgid "'yes', 'no', or 'both'" +msgstr "" + +#: ../src/common/config.py:312 ../src/common/config.py:314 +#: ../src/common/config.py:315 ../src/common/config.py:318 +#: ../src/common/config.py:319 +msgid "'yes', 'no' or ''" +msgstr "" + +#: ../src/common/config.py:325 msgid "Sleeping" msgstr "Durmiendo" -#: ../src/common/config.py:291 +#: ../src/common/config.py:326 msgid "Back soon" msgstr "Vuelvo pronto" -#: ../src/common/config.py:291 +#: ../src/common/config.py:326 msgid "Back in some minutes." msgstr "Vuelvo en unos minutos." -#: ../src/common/config.py:292 +#: ../src/common/config.py:327 msgid "Eating" msgstr "Comiendo" -#: ../src/common/config.py:292 +#: ../src/common/config.py:327 msgid "I'm eating, so leave me a message." msgstr "Estoy comiendo, déjame un mensaje." -#: ../src/common/config.py:293 +#: ../src/common/config.py:328 msgid "Movie" msgstr "Película" -#: ../src/common/config.py:293 +#: ../src/common/config.py:328 msgid "I'm watching a movie." msgstr "Estoy viendo una película." -#: ../src/common/config.py:294 +#: ../src/common/config.py:329 msgid "Working" msgstr "Trabajando" -#: ../src/common/config.py:294 +#: ../src/common/config.py:329 msgid "I'm working." msgstr "Estoy trabajando." -#: ../src/common/config.py:295 +#: ../src/common/config.py:330 msgid "Phone" msgstr "Teléfono" -#: ../src/common/config.py:295 +#: ../src/common/config.py:330 msgid "I'm on the phone." msgstr "Estoy al teléfono." -#: ../src/common/config.py:296 +#: ../src/common/config.py:331 msgid "Out" msgstr "Fuera" -#: ../src/common/config.py:296 +#: ../src/common/config.py:331 msgid "I'm out enjoying life" msgstr "Estoy disfrutando la vida" -#: ../src/common/config.py:305 +#: ../src/common/config.py:335 +#, fuzzy +msgid "I'm avavilable" +msgstr "En línea" + +#: ../src/common/config.py:336 +#, fuzzy +msgid "I'm free for chat" +msgstr "Libre para hablar" + +#: ../src/common/config.py:337 +msgid "Be right back" +msgstr "" + +#: ../src/common/config.py:338 +#, fuzzy +msgid "I'm not available" +msgstr "Servicio no disponible" + +#: ../src/common/config.py:339 +msgid "Do not disturb" +msgstr "" + +#: ../src/common/config.py:340 ../src/common/config.py:341 +#, fuzzy +msgid "Bye !" +msgstr "Ocupado" + +#: ../src/common/config.py:350 msgid "" "Sound to play when a MUC message contains one of the words in " "muc_highlight_words, or when a MUC message contains your nickname." @@ -4545,7 +5398,7 @@ msgstr "" "Sonido a reproducir cuando un mensaje MUC contiene una de las palabras " "listadas en muc_highlight_words, o cuando un mensaje MUC contiene tu alias." -#: ../src/common/config.py:306 +#: ../src/common/config.py:351 msgid "" "Sound to play when any MUC message arrives. (This setting is taken into " "account only if notify_on_all_muc_messages is True)" @@ -4553,99 +5406,99 @@ msgstr "" "Sonido a reproducir cuando se recibe cualquier mensaje MUC. (Esta " "preferencia sólo se activa si notify_on_all_muc_messages es False)" -#: ../src/common/config.py:314 ../src/common/optparser.py:181 +#: ../src/common/config.py:359 ../src/common/optparser.py:188 msgid "green" msgstr "" -#: ../src/common/config.py:318 ../src/common/optparser.py:167 +#: ../src/common/config.py:363 ../src/common/optparser.py:174 msgid "grocery" msgstr "" -#: ../src/common/config.py:322 +#: ../src/common/config.py:367 msgid "human" msgstr "" -#: ../src/common/config.py:326 +#: ../src/common/config.py:371 msgid "marine" msgstr "" -#: ../src/common/connection.py:152 +#: ../src/common/connection.py:176 #, python-format msgid "Connection with account \"%s\" has been lost" msgstr "Se ha perdido la conexión de la cuenta \"%s\"" -#: ../src/common/connection.py:153 +#: ../src/common/connection.py:177 msgid "To continue sending and receiving messages, you will need to reconnect." msgstr "" "Para continuar enviando y reciviendo mensajes, necesitarás volver a conectar." -#: ../src/common/connection.py:169 ../src/common/connection.py:195 +#: ../src/common/connection.py:189 ../src/common/connection.py:215 #, python-format msgid "Transport %s answered wrongly to register request." msgstr "" #. wrong answer -#: ../src/common/connection.py:194 +#: ../src/common/connection.py:214 #, fuzzy msgid "Invalid answer" msgstr "Contraseña no válida" -#: ../src/common/connection.py:348 ../src/common/connection.py:384 -#: ../src/common/connection.py:754 +#: ../src/common/connection.py:401 ../src/common/connection.py:437 +#: ../src/common/connection.py:860 #, python-format msgid "Could not connect to \"%s\"" msgstr "No se puede conectar a \"%s\"" -#: ../src/common/connection.py:362 +#: ../src/common/connection.py:415 #, python-format msgid "Connected to server %s:%s with %s" msgstr "Conectado al servidor %s:%s con %s" -#: ../src/common/connection.py:385 +#: ../src/common/connection.py:438 msgid "Check your connection or try again later" msgstr "Comprueba tu conexión o inténtalo más tarde" -#: ../src/common/connection.py:410 +#: ../src/common/connection.py:463 #, python-format msgid "Authentication failed with \"%s\"" msgstr "Falló la autentificación con \"%s\"" -#: ../src/common/connection.py:411 +#: ../src/common/connection.py:464 msgid "Please check your login and password for correctness." msgstr "" "Por favor, comprueba que tu nombre de usuario y contraseña sean correctos." #. We didn't set a passphrase -#: ../src/common/connection.py:487 +#: ../src/common/connection.py:577 msgid "OpenPGP passphrase was not given" msgstr "No se ha facilitado la clave OpenPGP" #. %s is the account name here -#: ../src/common/connection.py:489 +#: ../src/common/connection.py:579 #, python-format msgid "You will be connected to %s without OpenPGP." msgstr "Te conectarás a %s sin OpenPGP" #. do not show I'm invisible! -#: ../src/common/connection.py:526 +#: ../src/common/connection.py:616 msgid "invisible" msgstr "invisible" -#: ../src/common/connection.py:527 +#: ../src/common/connection.py:617 msgid "offline" msgstr "desconectado" -#: ../src/common/connection.py:528 +#: ../src/common/connection.py:618 #, python-format msgid "I'm %s" msgstr "Estoy %s" #. we're not english -#: ../src/common/connection.py:611 +#: ../src/common/connection.py:703 msgid "[This message is encrypted]" msgstr "[Este mensaje está encriptado]" -#: ../src/common/connection.py:649 +#: ../src/common/connection.py:746 #, python-format msgid "" "Subject: %s\n" @@ -4654,223 +5507,357 @@ msgstr "" "Tema: %s\n" "%s" -#: ../src/common/connection.py:699 +#: ../src/common/connection.py:884 +msgid "Not fetched because of invisible status" +msgstr "" + +#: ../src/common/connection_handlers.py:51 +#, fuzzy +msgid "Unable to load idle module" +msgstr "No se pudo entrar al salón" + +#: ../src/common/connection_handlers.py:176 +#, fuzzy +msgid "Wrong host" +msgstr "Contraseña" + +#: ../src/common/connection_handlers.py:176 +msgid "" +"The host you configured as the ft_override_host_to_send advanced option is " +"not valid, so ignored." +msgstr "" + +#: ../src/common/connection_handlers.py:588 +#, python-format +msgid "Registration information for transport %s has not arrived in time" +msgstr "La información de registro para el transporte %s no llegó a tiempo" + +#: ../src/common/connection_handlers.py:1438 +#, fuzzy, python-format +msgid "Nickname not allowed: %s" +msgstr "Alias no encontrado: %s" + +#. password required to join +#. we are banned +#. room does not exist +#: ../src/common/connection_handlers.py:1507 +#: ../src/common/connection_handlers.py:1510 +#: ../src/common/connection_handlers.py:1513 +#: ../src/common/connection_handlers.py:1516 +#: ../src/common/connection_handlers.py:1519 +#: ../src/common/connection_handlers.py:1522 +#: ../src/common/connection_handlers.py:1530 +msgid "Unable to join room" +msgstr "No se pudo entrar al salón" + +#: ../src/common/connection_handlers.py:1508 +msgid "A password is required to join this room." +msgstr "Se requiere una contraseña para entrar a este salón" + +#: ../src/common/connection_handlers.py:1511 +msgid "You are banned from this room." +msgstr "Estás expulsado de este salón" + +#: ../src/common/connection_handlers.py:1514 +msgid "Such room does not exist." +msgstr "No existe el salón." + +#: ../src/common/connection_handlers.py:1517 +msgid "Room creation is restricted." +msgstr "La creación de salones está restringida." + +#: ../src/common/connection_handlers.py:1520 +msgid "Your registered nickname must be used." +msgstr "Es necesario usar el alias registrado." + +#: ../src/common/connection_handlers.py:1523 +msgid "You are not in the members list." +msgstr "No estás en la lista de miembros" + +#: ../src/common/connection_handlers.py:1531 +msgid "" +"Your desired nickname is in use or registered by another occupant.\n" +"Please specify another nickname below:" +msgstr "" +"Tu alias deseado está en uso o registrado por otro ocupante. \n" +"Por favor, especifica otro alias abajo:" + +#: ../src/common/connection_handlers.py:1577 msgid "I would like to add you to my roster." msgstr "Me gustaría añadirte a mi lista de contactos" -#: ../src/common/helpers.py:103 +#. BE CAREFUL: no con.updateRosterItem() in a callback +#: ../src/common/connection_handlers.py:1598 +#, python-format +msgid "we are now subscribed to %s" +msgstr "estamos ahora suscritos a %s" + +#: ../src/common/connection_handlers.py:1600 +#, python-format +msgid "unsubscribe request from %s" +msgstr "petición de eliminación de suscripción de %s" + +#: ../src/common/connection_handlers.py:1602 +#, python-format +msgid "we are now unsubscribed from %s" +msgstr "ya no estamos suscritos a %s" + +#: ../src/common/connection_handlers.py:1772 +#, fuzzy, python-format +msgid "" +"JID %s is not RFC compliant. It will not be added to your roster. Use roster " +"management tools such as http://jru.jabberstudio.org/ to remove it" +msgstr "" +"El Jid %s no cumple la norma RFC. No será añadido a tu roster. Usa " +"herramientas de gestión del roster como http://jru.jabberstudio.org/ para " +"eliminarlo" + +#: ../src/common/helpers.py:101 msgid "Invalid character in username." msgstr "Caracter no válido en el nombre de usuario." -#: ../src/common/helpers.py:108 +#: ../src/common/helpers.py:106 msgid "Server address required." msgstr "Se requiere la dirección del servidor." -#: ../src/common/helpers.py:113 +#: ../src/common/helpers.py:111 msgid "Invalid character in hostname." msgstr "Carácter no válido en el nombre del host." -#: ../src/common/helpers.py:119 +#: ../src/common/helpers.py:117 msgid "Invalid character in resource." msgstr "Carácter no válido en el recurso." #. GiB means gibibyte -#: ../src/common/helpers.py:159 +#: ../src/common/helpers.py:157 #, python-format msgid "%s GiB" msgstr "" #. GB means gigabyte -#: ../src/common/helpers.py:162 +#: ../src/common/helpers.py:160 #, python-format msgid "%s GB" msgstr "" #. MiB means mibibyte -#: ../src/common/helpers.py:166 +#: ../src/common/helpers.py:164 #, python-format msgid "%s MiB" msgstr "" #. MB means megabyte -#: ../src/common/helpers.py:169 +#: ../src/common/helpers.py:167 #, python-format msgid "%s MB" msgstr "" #. KiB means kibibyte -#: ../src/common/helpers.py:173 +#: ../src/common/helpers.py:171 #, python-format msgid "%s KiB" msgstr "" #. KB means kilo bytes -#: ../src/common/helpers.py:176 +#: ../src/common/helpers.py:174 #, python-format msgid "%s KB" msgstr "" #. B means bytes -#: ../src/common/helpers.py:179 +#: ../src/common/helpers.py:177 #, python-format msgid "%s B" msgstr "" -#: ../src/common/helpers.py:189 +#: ../src/common/helpers.py:206 msgid "_Busy" msgstr "_Ocupado" -#: ../src/common/helpers.py:191 +#: ../src/common/helpers.py:208 msgid "Busy" msgstr "Ocupado" -#: ../src/common/helpers.py:194 +#: ../src/common/helpers.py:211 msgid "_Not Available" msgstr "_No Disponible" -#: ../src/common/helpers.py:196 -msgid "Not Available" -msgstr "No disponible" - -#: ../src/common/helpers.py:199 +#: ../src/common/helpers.py:216 msgid "_Free for Chat" msgstr "_Libre para hablar" -#: ../src/common/helpers.py:201 +#: ../src/common/helpers.py:218 msgid "Free for Chat" msgstr "Libre para hablar" -#: ../src/common/helpers.py:204 +#: ../src/common/helpers.py:221 msgid "_Available" msgstr "En líne_a" -#: ../src/common/helpers.py:206 +#: ../src/common/helpers.py:223 msgid "Available" msgstr "En línea" -#: ../src/common/helpers.py:208 +#: ../src/common/helpers.py:225 msgid "Connecting" msgstr "Conectando" -#: ../src/common/helpers.py:211 +#: ../src/common/helpers.py:228 msgid "A_way" msgstr "A_usente" -#: ../src/common/helpers.py:213 -msgid "Away" -msgstr "Ausente" - -#: ../src/common/helpers.py:216 +#: ../src/common/helpers.py:233 msgid "_Offline" msgstr "D_esconectado" -#: ../src/common/helpers.py:218 +#: ../src/common/helpers.py:235 msgid "Offline" msgstr "Desconectado" -#: ../src/common/helpers.py:221 +#: ../src/common/helpers.py:238 msgid "_Invisible" msgstr "_Invisible" -#: ../src/common/helpers.py:223 -msgid "Invisible" -msgstr "Invisible" - -#: ../src/common/helpers.py:227 +#: ../src/common/helpers.py:244 msgid "?contact has status:Unknown" msgstr "Desconocido" -#: ../src/common/helpers.py:229 +#: ../src/common/helpers.py:246 msgid "?contact has status:Has errors" msgstr "Tiene errores" -#: ../src/common/helpers.py:234 +#: ../src/common/helpers.py:251 msgid "?Subscription we already have:None" msgstr "Ninguna" -#: ../src/common/helpers.py:236 +#: ../src/common/helpers.py:253 msgid "To" msgstr "A" -#: ../src/common/helpers.py:238 +#: ../src/common/helpers.py:255 msgid "From" msgstr "Salón:" -#: ../src/common/helpers.py:240 +#: ../src/common/helpers.py:257 msgid "Both" msgstr "Ambos" -#: ../src/common/helpers.py:248 +#: ../src/common/helpers.py:265 msgid "?Ask (for Subscription):None" msgstr "Ninguna" -#: ../src/common/helpers.py:250 +#: ../src/common/helpers.py:267 msgid "Subscribe" msgstr "_Añadir" -#: ../src/common/helpers.py:259 +#: ../src/common/helpers.py:276 msgid "?Group Chat Contact Role:None" msgstr "Ninguno" -#: ../src/common/helpers.py:262 +#: ../src/common/helpers.py:279 msgid "Moderators" msgstr "Moderadores" -#: ../src/common/helpers.py:264 +#: ../src/common/helpers.py:281 msgid "Moderator" msgstr "Moderador" -#: ../src/common/helpers.py:267 +#: ../src/common/helpers.py:284 msgid "Participants" msgstr "Participantes" -#: ../src/common/helpers.py:269 +#: ../src/common/helpers.py:286 msgid "Participant" msgstr "Participante" -#: ../src/common/helpers.py:272 +#: ../src/common/helpers.py:289 msgid "Visitors" msgstr "Visitantes" -#: ../src/common/helpers.py:274 +#: ../src/common/helpers.py:291 msgid "Visitor" msgstr "Visitante" -#: ../src/common/helpers.py:310 +#: ../src/common/helpers.py:327 msgid "is paying attention to the conversation" msgstr "está prestando atención a la conversación" -#: ../src/common/helpers.py:312 +#: ../src/common/helpers.py:329 msgid "is doing something else" msgstr "está haciendo algo más" -#: ../src/common/helpers.py:314 +#: ../src/common/helpers.py:331 msgid "is composing a message..." msgstr "está escribiendo..." #. paused means he or she was compoing but has stopped for a while -#: ../src/common/helpers.py:317 +#: ../src/common/helpers.py:334 msgid "paused composing a message" msgstr "ha parado de escribir" -#: ../src/common/helpers.py:319 +#: ../src/common/helpers.py:336 msgid "has closed the chat window or tab" msgstr "ha cerrado la ventana de chat" #. we talk about a file -#: ../src/common/optparser.py:62 +#: ../src/common/optparser.py:60 #, python-format msgid "error: cannot open %s for reading" msgstr "error: no se puede abrir %s para lectura" -#: ../src/common/optparser.py:167 +#: ../src/common/optparser.py:174 msgid "gtk+" msgstr "" -#: ../src/common/optparser.py:176 ../src/common/optparser.py:177 +#: ../src/common/optparser.py:183 ../src/common/optparser.py:184 msgid "cyan" msgstr "" +#~ msgid "_Subscribe" +#~ msgstr "_Añadir" + +#, fuzzy +#~ msgid "Add" +#~ msgstr "Dirección" + +#, fuzzy +#~ msgid "Away " +#~ msgstr "Ausente" + +#, fuzzy +#~ msgid "Down" +#~ msgstr "Descarga" + +#, fuzzy +#~ msgid "List of special notifications settings" +#~ msgstr "Notificationes Visuales" + +#, fuzzy +#~ msgid "Not Available " +#~ msgstr "No disponible" + +#~ msgid "Up" +#~ msgstr "Arriba" + +#, fuzzy +#~ msgid "Default" +#~ msgstr "Eliminar MOTD" + +#~ msgid "Migrating Logs..." +#~ msgstr "Migrando el registro..." + +#~ msgid "Please wait while logs are being migrated..." +#~ msgstr "Por favor, espera mientras el registro está siendo migrado..." + +#~ msgid "Automatically authorize contact" +#~ msgstr "Autorizar contactos automáticamente" + +#~ msgid "Send File" +#~ msgstr "Enviar archivo" + +#~ msgid "Underline" +#~ msgstr "Subrayado" + #~ msgid "Would you like to overwrite it?" #~ msgstr "¿Quieres sobreescribirlo?" @@ -4884,9 +5871,6 @@ msgstr "" #~ msgid "Please modify your special notification below" #~ msgstr "Por favor, elige una de las siguientes opciones:" -#~ msgid "Ad_vanced Actions" -#~ msgstr "Acciones A_vanzadas" - #~ msgid "Delete Message of the Day" #~ msgstr "Eliminar mensaje del día" @@ -4958,59 +5942,6 @@ msgstr "" #~ msgid "Session bus is not available" #~ msgstr "El bus de la sesión no está disponible" -#, fuzzy -#~ msgid "Unable to load idle module" -#~ msgstr "No se pudo entrar al salón" - -#~ msgid "Unable to join room" -#~ msgstr "No se pudo entrar al salón" - -#~ msgid "A password is required to join this room." -#~ msgstr "Se requiere una contraseña para entrar a este salón" - -#~ msgid "You are banned from this room." -#~ msgstr "Estás expulsado de este salón" - -#~ msgid "Such room does not exist." -#~ msgstr "No existe el salón." - -#~ msgid "Room creation is restricted." -#~ msgstr "La creación de salones está restringida." - -#~ msgid "Your registered nickname must be used." -#~ msgstr "Es necesario usar el alias registrado." - -#~ msgid "You are not in the members list." -#~ msgstr "No estás en la lista de miembros" - -#~ msgid "" -#~ "Your desired nickname is in use or registered by another occupant.\n" -#~ "Please specify another nickname below:" -#~ msgstr "" -#~ "Tu alias deseado está en uso o registrado por otro ocupante. \n" -#~ "Por favor, especifica otro alias abajo:" - -#~ msgid "we are now subscribed to %s" -#~ msgstr "estamos ahora suscritos a %s" - -#~ msgid "unsubscribe request from %s" -#~ msgstr "petición de eliminación de suscripción de %s" - -#~ msgid "we are now unsubscribed from %s" -#~ msgstr "ya no estamos suscritos a %s" - -#, fuzzy -#~ msgid "" -#~ "JID %s is not RFC compliant. It will not be added to your roster. Use " -#~ "roster management tools such as http://jru.jabberstudio.org/ to remove it" -#~ msgstr "" -#~ "El Jid %s no cumple la norma RFC. No será añadido a tu roster. Usa " -#~ "herramientas de gestión del roster como http://jru.jabberstudio.org/ para " -#~ "eliminarlo" - -#~ msgid "Registration information for transport %s has not arrived in time" -#~ msgstr "La información de registro para el transporte %s no llegó a tiempo" - #~ msgid "Sound" #~ msgstr "Sonido" @@ -5077,9 +6008,6 @@ msgstr "" #~ msgid "Stoping selected file transfer" #~ msgstr "Deteniendo la transferencia seleccionada" -#~ msgid "Use a single chat window with _tabs" -#~ msgstr "Usar una sola ventana de conversación con pestañas" - #~ msgid "" #~ "If you close this tab and you have history disabled, the message will be " #~ "lost." @@ -5128,9 +6056,6 @@ msgstr "" #~ msgid "Open Download Page" #~ msgstr "Abrir página de descarga" -#~ msgid "Service not available" -#~ msgstr "Servicio no disponible" - #~ msgid "Session bus is not available." #~ msgstr "El bus de la sesión no está disponible." @@ -5170,9 +6095,6 @@ msgstr "" #~ msgid "Log presences in an _external file" #~ msgstr "Registrar los estados en un archivo externo" -#~ msgid "Unable to write file in %s" -#~ msgstr "No se puede escribir el archivo en %s" - #~ msgid "" #~ "You can set advanced account options by pressing Advanced button,or later " #~ "by clicking in Accounts menuitem under Edit menu from the main window." @@ -5231,9 +6153,6 @@ msgstr "" #~ msgid "Service" #~ msgstr "Servicio" -#~ msgid "Node" -#~ msgstr "Nodo" - #~ msgid "" #~ "Your new account has been created and added to your gajim configuration.\n" #~ "You can set advanced account options using \"Edit->Accounts\" in the main " @@ -5266,9 +6185,6 @@ msgstr "" #~ msgid "theme_name" #~ msgstr "nombre_del_tema" -#~ msgid "Edit" -#~ msgstr "Editar" - #~ msgid "Please fill in the data for your existing account" #~ msgstr "Por favor, introduce los datos de tu cuenta actual" @@ -5284,9 +6200,6 @@ msgstr "" #~ msgid "_Compact View" #~ msgstr "Vista _compacta" -#~ msgid "_Nickname:" -#~ msgstr "_Alias:" - #~ msgid "_Refresh" #~ msgstr "_Refrescar" @@ -5309,9 +6222,6 @@ msgstr "" #~ msgid "New _Room" #~ msgstr "Nuevo _Salón" -#~ msgid "Account:" -#~ msgstr "Cuentas:" - #~ msgid "Always use compact _view" #~ msgstr "Siempre usar _vista compacta" diff --git a/po/eu.po b/po/eu.po index 2a28590c3..25b7e5d96 100644 --- a/po/eu.po +++ b/po/eu.po @@ -3,13 +3,12 @@ # This file is distributed under the same license as the gajim package. # FIRST AUTHOR , 2005. # -#: ../src/gajim-remote.py:204 ../src/gajim-remote.py:211 msgid "" msgstr "" "Project-Id-Version: gajim\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2006-04-13 12:52+0200\n" -"PO-Revision-Date: 2006-04-11 22:30+0100\n" +"PO-Revision-Date: 2006-07-19 22:02+0100\n" "Last-Translator: Urtzi Alfaro \n" "Language-Team: Basque \n" "MIME-Version: 1.0\n" @@ -30,337 +29,2274 @@ msgstr "Gajim Behealako Mezularitza" msgid "Jabber IM Client" msgstr "IM Jabber Bezeroa" -#: ../src/advanced.py:71 +#: ../data/glade/account_context_menu.glade.h:1 +msgid "Send Single _Message..." +msgstr "Bidali Mezu _Bakarra..." + +#: ../data/glade/account_context_menu.glade.h:2 +msgid "_Add Contact..." +msgstr "_Kontaktua Gehitu..." + +#: ../data/glade/account_context_menu.glade.h:3 +msgid "_Discover Services..." +msgstr "_Zerbitzuak Aurkitu..." + +#: ../data/glade/account_context_menu.glade.h:4 +#: ../data/glade/roster_window.glade.h:15 +#: ../data/glade/systray_context_menu.glade.h:5 +msgid "_Group Chat" +msgstr "Txat _Taldea" + +#: ../data/glade/account_context_menu.glade.h:5 +msgid "_Modify Account..." +msgstr "Kontua E_ditatu" + +#: ../data/glade/account_context_menu.glade.h:6 +msgid "_Status" +msgstr "_Egoera" + +#: ../data/glade/account_creation_wizard_window.glade.h:1 +msgid "" +"Account is being created\n" +"\n" +"Please wait..." +msgstr "" +"Kontua sortua izan da\n" +"\n" +"Mesedez itxoin..." + +#: ../data/glade/account_creation_wizard_window.glade.h:4 +msgid "Please choose one of the options below:" +msgstr "Mesedez aukeratu hemen beheko aukeretako bat:" + +#: ../data/glade/account_creation_wizard_window.glade.h:5 +msgid "Please fill in the data for your new account" +msgstr "Mesedez bete zure kontu berrirako informazioa" + +#: ../data/glade/account_creation_wizard_window.glade.h:6 +msgid "Click to see features (like MSN, ICQ transports) of jabber servers" +msgstr "Sakatu Jabber zerbitzariaren zenbait aukera(Msn ,ICQ, transport) ikusteko" + +#: ../data/glade/account_creation_wizard_window.glade.h:7 +msgid "Connect when I press Finish" +msgstr "Konektatu bukatu sakatzen dudanean." + +#: ../data/glade/account_creation_wizard_window.glade.h:8 +msgid "Gajim: Account Creation Wizard" +msgstr "Gajim: Kontu Sortzailearen Wizard-a" + +#: ../data/glade/account_creation_wizard_window.glade.h:9 +msgid "I already have an account I want to use" +msgstr "Dagoeneko badut kontu bat erabiltzeko" + +#: ../data/glade/account_creation_wizard_window.glade.h:10 +msgid "I want to _register for a new account" +msgstr "Kontu berri bat _erregistratu nahi dut" + +#: ../data/glade/account_creation_wizard_window.glade.h:11 +#: ../data/glade/account_modification_window.glade.h:18 +msgid "If checked, Gajim will remember the password for this account" +msgstr "Hautatua badago, Gajim-ek kontu honen pasahitza gogoraraziko du" + +#: ../data/glade/account_creation_wizard_window.glade.h:12 +#: ../data/glade/manage_proxies_window.glade.h:6 +msgid "Pass_word:" +msgstr "Pasa_hitza:" + +#: ../data/glade/account_creation_wizard_window.glade.h:13 +#: ../data/glade/account_modification_window.glade.h:37 +msgid "Save pass_word" +msgstr "Gorde pasa_hitza" + +#: ../data/glade/account_creation_wizard_window.glade.h:14 +msgid "Servers Features" +msgstr "Zerbitzariaren Ezaugarriak:" + +#: ../data/glade/account_creation_wizard_window.glade.h:15 +msgid "Set my profile when I connect" +msgstr "Ezarri nire profila konektatzen naizenean" + +#: ../data/glade/account_creation_wizard_window.glade.h:16 +msgid "" +"You need to have an account in order to connect\n" +"to the Jabber network." +msgstr "" +"Kontu bat behar duzu\n" +"Jabber sarera konektatzeko" + +#: ../data/glade/account_creation_wizard_window.glade.h:18 +msgid "Your JID:" +msgstr "Zure JID-a:" + +#: ../data/glade/account_creation_wizard_window.glade.h:19 +#: ../data/glade/roster_window.glade.h:10 +msgid "_Advanced" +msgstr "A_urreratua" + +#: ../data/glade/account_creation_wizard_window.glade.h:20 +msgid "_Finish" +msgstr "_Bukatu" + +#: ../data/glade/account_creation_wizard_window.glade.h:21 +#: ../data/glade/manage_proxies_window.glade.h:9 +msgid "_Host:" +msgstr "_Host-a" + +#: ../data/glade/account_creation_wizard_window.glade.h:22 +#: ../data/glade/account_modification_window.glade.h:45 +msgid "_Password:" +msgstr "_Pasahitza:" + +#: ../data/glade/account_creation_wizard_window.glade.h:23 +#: ../data/glade/manage_proxies_window.glade.h:10 +msgid "_Port:" +msgstr "_Portua:" + +#: ../data/glade/account_creation_wizard_window.glade.h:24 +msgid "_Retype Password:" +msgstr "_Berridatzi Pasahitza" + +#: ../data/glade/account_creation_wizard_window.glade.h:25 +msgid "_Server:" +msgstr "_Zerbitzaria" + +#: ../data/glade/account_creation_wizard_window.glade.h:26 +msgid "_Use proxy" +msgstr "_Proxy erabili" + +#: ../data/glade/account_creation_wizard_window.glade.h:27 +#: ../data/glade/manage_proxies_window.glade.h:11 +msgid "_Username:" +msgstr "_Izena" + +#: ../data/glade/account_modification_window.glade.h:1 +#: ../data/glade/preferences_window.glade.h:8 +msgid "Miscellaneous" +msgstr "Denetatik" + +#: ../data/glade/account_modification_window.glade.h:2 +msgid "OpenPGP" +msgstr "OpenPGP" + +#: ../data/glade/account_modification_window.glade.h:3 +msgid "Personal Information" +msgstr "Informazio Pertsonala" + +#: ../data/glade/account_modification_window.glade.h:4 +msgid "Account" +msgstr "Kontua" + +#: ../data/glade/account_modification_window.glade.h:5 +msgid "Account Modification" +msgstr "Kontu Eraldaketa" + +#: ../data/glade/account_modification_window.glade.h:6 +msgid "Autoreconnect when connection is lost" +msgstr "Konektatu berriro konexioa galtzean" + +#: ../data/glade/account_modification_window.glade.h:7 +msgid "C_onnect on Gajim startup" +msgstr "K_onektatu Gajim irikitzean" + +#: ../data/glade/account_modification_window.glade.h:8 +msgid "Chan_ge Password" +msgstr "Al_datu Pasahitza" + +#: ../data/glade/account_modification_window.glade.h:9 +msgid "Check this so Gajim will connect in port 5223 where legacy servers are expected to have SSL capabilities. Note that Gajim uses TLS encryption by default if broadcasted by the server, and with this option enabled TLS will be disabled" +msgstr "Check this so Gajim will connect in port 5223 where legacy servers are expected to have SSL capabilities. Note that Gajim uses TLS encryption by default if broadcasted by the server, and with this option enabled TLS will be disabled" + +#: ../data/glade/account_modification_window.glade.h:10 +msgid "Choose _Key..." +msgstr "Aukeratu _Kodea...." + +#: ../data/glade/account_modification_window.glade.h:11 +msgid "Click to change account's password" +msgstr "Sakatu kontuaren pasahitza aldatzeko" + +#: ../data/glade/account_modification_window.glade.h:12 +msgid "Connection" +msgstr "Konektatu" + +#: ../data/glade/account_modification_window.glade.h:13 +msgid "Edit Personal Information..." +msgstr "Informazio Pertsonala Editatu..." + +#: ../data/glade/account_modification_window.glade.h:14 +#: ../data/glade/roster_window.glade.h:5 +#: ../src/notify.py:308 +#: ../src/notify.py:330 +#: ../src/notify.py:342 +#: ../src/tooltips.py:350 +msgid "Gajim" +msgstr "Gajim" + +#: ../data/glade/account_modification_window.glade.h:15 +#: ../data/glade/preferences_window.glade.h:44 +#: ../data/glade/vcard_information_window.glade.h:17 +#: ../src/roster_window.py:290 +#: ../src/roster_window.py:1184 +#: ../src/roster_window.py:1405 +msgid "General" +msgstr "Orokorra" + +#: ../data/glade/account_modification_window.glade.h:16 +msgid "Hostname: " +msgstr "Hostname: " + +#: ../data/glade/account_modification_window.glade.h:17 +msgid "If checked, Gajim will also broadcast some more IPs except from just your IP, so file transfer has higher chances of working." +msgstr "If checked, Gajim will also broadcast some more IPs except from just your IP, so file transfer has higher chances of working." + +#: ../data/glade/account_modification_window.glade.h:19 +msgid "If checked, Gajim will send keep-alive packets so it prevents connection timeout which results in disconnection" +msgstr "Hautatua badago, Gajim-ek keep-alive paketeak bidaliko ditu deskonexioa gerta ez dadin" + +#: ../data/glade/account_modification_window.glade.h:20 +msgid "If checked, Gajim will store the password in ~/.gajim/config with 'read' permission only for you" +msgstr "Hautatua badago, Gajim-ek pasahitzak ~/.gajim/config gordeko ditu irakurtzeko baimena zuk bakarrik izanik" + +#: ../data/glade/account_modification_window.glade.h:21 +msgid "If checked, Gajim, when launched, will automatically connect to jabber using this account" +msgstr "Hautatua badago, abiaraztean, automatikoki jabber-era konektatuko da kontu hau erabiliz" + +#: ../data/glade/account_modification_window.glade.h:22 +msgid "If checked, any change to the global status (handled by the combobox at the bottom of the roster window) will change the status of this account accordingly" +msgstr "If checked, any change to the global status (handled by the combobox at the bottom of the roster window) will change the status of this account accordingly" + +#: ../data/glade/account_modification_window.glade.h:23 +msgid "Information about you, as stored in the server" +msgstr "Zuri buzuzko informazioa zerbitzarian gordea izango da" + +#: ../data/glade/account_modification_window.glade.h:24 +msgid "Manage..." +msgstr "Moldatu..." + +#: ../data/glade/account_modification_window.glade.h:25 +#: ../src/config.py:1448 +msgid "No key selected" +msgstr "Ez da koderik aukeratu" + +#. None means no proxy profile selected +#: ../data/glade/account_modification_window.glade.h:27 +#: ../src/config.py:1053 +#: ../src/config.py:1058 +#: ../src/config.py:1230 +#: ../src/config.py:1505 +#: ../src/config.py:1578 +#: ../src/config.py:2282 +msgid "None" +msgstr "Ezer ez" + +#: ../data/glade/account_modification_window.glade.h:28 +msgid "Personal Information" +msgstr "Informazio Pertsonala " + +#: ../data/glade/account_modification_window.glade.h:29 +msgid "Port: " +msgstr "Portua: " + +#: ../data/glade/account_modification_window.glade.h:30 +msgid "Priori_ty:" +msgstr "Lehentas_una:" + +#: ../data/glade/account_modification_window.glade.h:31 +msgid "Priority is used in Jabber to determine who gets the events from the jabber server when two or more clients are connected using the same account; The client with the highest priority gets the events" +msgstr "Jabber-en lehentasuna, bi bezero edo gehiago konektatuta daudenean kontu berdinarekin, zeinek jaso behar duen informazioa determinatzen du; Lehentasun handiena duen bezeroak jasotzen ditu mezuak" + +#: ../data/glade/account_modification_window.glade.h:32 +msgid "Proxy:" +msgstr "Proxy:" + +#: ../data/glade/account_modification_window.glade.h:33 +msgid "Resour_ce: " +msgstr "Baliabid_ea: " + +#: ../data/glade/account_modification_window.glade.h:34 +msgid "Resource is sent to the Jabber server in order to separate the same JID in two or more parts depending on the number of the clients connected in the same server with the same account. So you might be connected in the same account with resource 'Home' and 'Work' at the same time. The resource which has the highest priority will get the events. (see below)" +msgstr "Baliabidea Jabber-eko zerbitzarira bidaltzen da JID berdineko eta zerbitzari berdinera konektatutako kontua bi zati desberdinetan edo gehiagotan banatzeko asmoarekin. Hau horrela dabil: kontu bat `Lana` baliabidearekin jarrita eta kontu berdera `etxea` baliabidearekin jarria baduzu, mezua lehentasun handiena duenera bidaliko da. (Behean ikusi) " + +#: ../data/glade/account_modification_window.glade.h:35 +msgid "Save _passphrase (insecure)" +msgstr "Gorde _pasa-esaldia(ez trinkoa)" + +#: ../data/glade/account_modification_window.glade.h:36 +msgid "Save conversation _logs for all contacts" +msgstr "_Gorde kontu guztien elkarrizketak" + +#: ../data/glade/account_modification_window.glade.h:38 +msgid "Send keep-alive packets" +msgstr "Bidali keep-alive paketeak" + +#: ../data/glade/account_modification_window.glade.h:39 +msgid "Synch_ronize account status with global status" +msgstr "Egoera globalarekin kontaktuen egoera sinkro_nizatu " + +#: ../data/glade/account_modification_window.glade.h:40 +msgid "Use _SSL (legacy)" +msgstr "Erabili _SSL(Legacy)" + +#: ../data/glade/account_modification_window.glade.h:41 +msgid "Use custom hostname/port" +msgstr "Erabili bezeroaren hostname/portua" + +#: ../data/glade/account_modification_window.glade.h:42 +msgid "Use file transfer proxies" +msgstr "Erabili proxy fitxero transferentzia" + +#: ../data/glade/account_modification_window.glade.h:43 +#: ../data/glade/add_new_contact_window.glade.h:6 +msgid "_Jabber ID:" +msgstr "_Jabber ID:" + +#: ../data/glade/account_modification_window.glade.h:44 +msgid "_Name: " +msgstr "_Izena " + +#: ../data/glade/accounts_window.glade.h:1 +msgid "Accounts" +msgstr "Kontuak" + +#: ../data/glade/accounts_window.glade.h:2 +msgid "If you have 2 or more accounts and it is checked, Gajim will list all contacts as if you had one account" +msgstr "Bi kontu edo gehiago badituzu eta aukera hau hautatua badago, Gajim-ek kontaktu guztiak kontu bat izango bazenu bezala jarriko lituzke zerrendan" + +#: ../data/glade/accounts_window.glade.h:3 +msgid "_Merge accounts" +msgstr "_Batu kontuak" + +#: ../data/glade/accounts_window.glade.h:4 +msgid "_Modify" +msgstr "_Eraldatu" + +#: ../data/glade/accounts_window.glade.h:5 +#: ../data/glade/remove_account_window.glade.h:4 +msgid "_Remove" +msgstr "_Ezabatu" + +#: ../data/glade/add_new_contact_window.glade.h:1 +msgid "A_llow this contact to view my status" +msgstr "Baimendu kontaktu honi nire egoera ikustea" + +#: ../data/glade/add_new_contact_window.glade.h:2 +msgid "Add New Contact" +msgstr "Kontaktu Berri bat Sartu" + +#: ../data/glade/add_new_contact_window.glade.h:3 +msgid "I would like to add you to my contact list." +msgstr "Nire kontaktu zerrendara nahi zaitut sartu." + +#: ../data/glade/add_new_contact_window.glade.h:4 +msgid "_Account:" +msgstr "Kontu_a:" + +#: ../data/glade/add_new_contact_window.glade.h:5 +msgid "_Group:" +msgstr "Ta_ldea:" + +#: ../data/glade/add_new_contact_window.glade.h:7 +msgid "_Nickname:" +msgstr "_Izengoitia:" + +#: ../data/glade/add_new_contact_window.glade.h:8 +msgid "_Protocol:" +msgstr "_Protokoloa:" + +#: ../data/glade/add_new_contact_window.glade.h:9 +msgid "_Subscribe" +msgstr "_Harpidetu" + +#: ../data/glade/add_new_contact_window.glade.h:10 +msgid "_User ID:" +msgstr "E_rabiltzailearen ID:" + +#: ../data/glade/advanced_configuration_window.glade.h:1 +msgid "Description" +msgstr "Deskribapena" + +#: ../data/glade/advanced_configuration_window.glade.h:2 +msgid "NOTE: You should restart gajim for some setting to take effect" +msgstr "OHARRA: Gajim berriro abiarazi beharko duzu aldagai batzuek efektua sor dezaten" + +#: ../data/glade/advanced_configuration_window.glade.h:3 +msgid "Advanced Configuration Editor" +msgstr "Konfigurazio Aurreratuaren Editorea" + +#: ../data/glade/advanced_configuration_window.glade.h:4 +msgid "Filter:" +msgstr "Filtroa:" + +#: ../data/glade/advanced_menuitem_menu.glade.h:1 +msgid "Delete MOTD" +msgstr "Ezabatu MOTD" + +#: ../data/glade/advanced_menuitem_menu.glade.h:2 +msgid "Deletes Message of the Day" +msgstr "Eguneko Mezuak Ezabatu" + +#: ../data/glade/advanced_menuitem_menu.glade.h:3 +msgid "Sends a message to currently connected users to this server" +msgstr "Bidali mezu bat zerbitzari honetara orain konektatuta dauden kontaktuei" + +#: ../data/glade/advanced_menuitem_menu.glade.h:4 +msgid "Set MOTD" +msgstr "Ezarri MOTD" + +#: ../data/glade/advanced_menuitem_menu.glade.h:5 +msgid "Sets Message of the Day" +msgstr "Ezarri Eguneko Mezua" + +#: ../data/glade/advanced_menuitem_menu.glade.h:6 +msgid "Show _XML Console" +msgstr "_XML Konsola Ikusarazi" + +#: ../data/glade/advanced_menuitem_menu.glade.h:7 +msgid "Update MOTD" +msgstr "MOTD Gaurkotu" + +#: ../data/glade/advanced_menuitem_menu.glade.h:8 +msgid "Updates Message of the Day" +msgstr "Eguneko Mezua Gaurkotu" + +#: ../data/glade/advanced_menuitem_menu.glade.h:9 +msgid "_Administrator" +msgstr "_Administratzailea" + +#: ../data/glade/advanced_menuitem_menu.glade.h:10 +msgid "_Privacy Lists" +msgstr "_Debekatze Zerrenda" + +#: ../data/glade/advanced_menuitem_menu.glade.h:11 +msgid "_Send Server Message" +msgstr "_Bidali Zerbitzarira Mezua" + +#: ../data/glade/advanced_menuitem_menu.glade.h:12 +msgid "_Send Single Message" +msgstr "_Bidali Mezu Bakarra" + +#: ../data/glade/advanced_notifications_window.glade.h:1 +msgid " a window/tab opened with that contact " +msgstr "leiho/tab bat kontaktu batekin irekia" + +#: ../data/glade/advanced_notifications_window.glade.h:2 +msgid "Actions" +msgstr "Ekintzak" + +#: ../data/glade/advanced_notifications_window.glade.h:3 +msgid "Conditions" +msgstr "Baldintzak" + +#: ../data/glade/advanced_notifications_window.glade.h:4 +#: ../data/glade/preferences_window.glade.h:10 +msgid "Sounds" +msgstr "Soinuak" + +#: ../data/glade/advanced_notifications_window.glade.h:5 +msgid "Add" +msgstr "Gehitu" + +#: ../data/glade/advanced_notifications_window.glade.h:6 +msgid "Advanced Actions" +msgstr "Ekintza Aurreratuak" + +#: ../data/glade/advanced_notifications_window.glade.h:7 +msgid "Advanced Notifications Control" +msgstr "Notifikazio Aurreratuaren Kontrola" + +#: ../data/glade/advanced_notifications_window.glade.h:8 +msgid "All Status " +msgstr "Egoera Guztiak" + +#: ../data/glade/advanced_notifications_window.glade.h:9 +msgid "And I " +msgstr "eta nik" + +#: ../data/glade/advanced_notifications_window.glade.h:10 +msgid "Away " +msgstr "Kanpoan" + +#: ../data/glade/advanced_notifications_window.glade.h:11 +msgid "Busy " +msgstr "Lanpetuta" + +#: ../data/glade/advanced_notifications_window.glade.h:12 +msgid "Don't have " +msgstr "Ez daukadanean" + +#: ../data/glade/advanced_notifications_window.glade.h:13 +msgid "Down" +msgstr "Bera" + +#: ../data/glade/advanced_notifications_window.glade.h:14 +msgid "Have " +msgstr "daukadanean" + +#: ../data/glade/advanced_notifications_window.glade.h:15 +#: ../src/common/helpers.py:239 +msgid "Invisible" +msgstr "Ikusezin" + +#: ../data/glade/advanced_notifications_window.glade.h:16 +msgid "Launch a command" +msgstr "Abiarazi agindua" + +#: ../data/glade/advanced_notifications_window.glade.h:17 +msgid "List of special notifications settings" +msgstr "Notifikazio berezien aldaketen zerrenda" + +#: ../data/glade/advanced_notifications_window.glade.h:18 +msgid "Not Available " +msgstr "Ez Erabilgarri" + +#: ../data/glade/advanced_notifications_window.glade.h:19 +msgid "Online / Free For Chat" +msgstr "Libre / Libre Hitz Egiteko" + +#: ../data/glade/advanced_notifications_window.glade.h:20 +msgid "Play a sound" +msgstr "Soinua ezarri" + +#: ../data/glade/advanced_notifications_window.glade.h:21 +msgid "" +"Receive a Message\n" +"Contact Connected\n" +"Contact Disconnected\n" +"Contact Change Status\n" +"Group Chat Message Highlight\n" +"Group Chat Message Received\n" +"File Transfert Resquest\n" +"File Transfert Started\n" +"File Transfert Finished" +msgstr "" +"Mezu bat Jasotzean\n" +"Kontaktua Konektatzean\n" +"Kontaktua Deskonektatzean\n" +"Kontaktuak Egoeraz Aldatzean\n" +"Txat Taldeko Mezu bat Bistaratzean\n" +"Txat Taldeko Mezu bat Jasotzean\n" +"Fitxero Transferentzia Eskatzean\n" +"Fitxero Transferentzia Hastean\n" +"Fitxero Transferentzia Bukatzean" + +#: ../data/glade/advanced_notifications_window.glade.h:30 +msgid "Some special(s) status..." +msgstr "Egorera berezi bat(zuk)..." + +#: ../data/glade/advanced_notifications_window.glade.h:31 +msgid "Up" +msgstr "Gora" + +#: ../data/glade/advanced_notifications_window.glade.h:32 +msgid "When " +msgstr "Denean" + +#: ../data/glade/advanced_notifications_window.glade.h:33 +msgid "_Activate Windows manager UrgencyHint to make chat taskbar to flash" +msgstr "_Activate Windows manager UrgencyHint to make chat taskbar to flash" + +#: ../data/glade/advanced_notifications_window.glade.h:34 +msgid "_Disable auto opening chat window" +msgstr "_Ezindu automatikoki elkarrizketa leihoa irikitzea" + +#: ../data/glade/advanced_notifications_window.glade.h:35 +msgid "_Disable existing popup window" +msgstr "_Kendu esistitzen den popup leihoa " + +#: ../data/glade/advanced_notifications_window.glade.h:36 +msgid "_Disable existing sound for this event" +msgstr "_Ezindu esistitzen den soinua gertaera hontarako " + +#: ../data/glade/advanced_notifications_window.glade.h:37 +msgid "_Disable showing event in roster" +msgstr "_Ezindu gertaeran zerrendan ikustea" + +#: ../data/glade/advanced_notifications_window.glade.h:38 +msgid "_Disable showing event in systray" +msgstr "_Ezindu gertaerak systray-en ikustea" + +#: ../data/glade/advanced_notifications_window.glade.h:39 +msgid "_Inform me with a popup window" +msgstr "_Jakinarazi popup leiho batekin" + +#: ../data/glade/advanced_notifications_window.glade.h:40 +msgid "_Open chat window with user" +msgstr "_Ireki elkarrizketa leihoa erabiltzailearekin" + +#: ../data/glade/advanced_notifications_window.glade.h:41 +msgid "_Show event in roster" +msgstr "_Ikusarazi gertaera zerrendan" + +#: ../data/glade/advanced_notifications_window.glade.h:42 +msgid "_Show event in systray" +msgstr "Iku_si gertaerak systray-ean" + +#: ../data/glade/advanced_notifications_window.glade.h:43 +msgid "" +"contact(s)\n" +"group(s)\n" +"everybody" +msgstr "" +"kontaktua(k)\n" +"taldea(k)\n" +"denak" + +#: ../data/glade/advanced_notifications_window.glade.h:46 +msgid "for " +msgstr "norentzat" + +#: ../data/glade/advanced_notifications_window.glade.h:47 +msgid "when I'm " +msgstr "Nagoenean" + +#: ../data/glade/change_password_dialog.glade.h:1 +msgid "Change Password" +msgstr "Aldatu Pasahitza" + +#: ../data/glade/change_password_dialog.glade.h:2 +msgid "Enter it again for confirmation:" +msgstr "Sartu berriro baieztatzeko:" + +#: ../data/glade/change_password_dialog.glade.h:3 +msgid "Enter new password:" +msgstr "Sartu pasahitz berria:" + +#: ../data/glade/change_status_message_dialog.glade.h:1 +msgid "Type your new status message" +msgstr "Egoera mezu berria ezarri" + +#: ../data/glade/change_status_message_dialog.glade.h:2 +msgid "Preset messages:" +msgstr "Ezarritako egoerak:" + +#: ../data/glade/change_status_message_dialog.glade.h:3 +msgid "Save as Preset..." +msgstr "Gorde Ezarritako Bezala...." + +#: ../data/glade/chat_context_menu.glade.h:1 +msgid "Join _Group Chat" +msgstr "Txat Taldean _Sartu" + +#: ../data/glade/chat_context_menu.glade.h:2 +#: ../data/glade/chat_control_popup_menu.glade.h:4 +#: ../data/glade/gc_occupants_menu.glade.h:2 +#: ../data/glade/roster_contact_context_menu.glade.h:8 +msgid "_Add to Roster" +msgstr "_Zerrendara Sartu" + +#: ../data/glade/chat_context_menu.glade.h:3 +msgid "_Copy JID/Email Address" +msgstr "_Kopiatu JID/Email-a" + +#: ../data/glade/chat_context_menu.glade.h:4 +msgid "_Copy Link Location" +msgstr "_Lotura kokapena kopiatu" + +#: ../data/glade/chat_context_menu.glade.h:5 +msgid "_Open Email Composer" +msgstr "_Ireki E-posta Konposatzailea" + +#: ../data/glade/chat_context_menu.glade.h:6 +msgid "_Open Link in Browser" +msgstr "Web-ean _Ireki Lotura" + +#: ../data/glade/chat_context_menu.glade.h:7 +#: ../data/glade/roster_window.glade.h:19 +#: ../data/glade/systray_context_menu.glade.h:6 +msgid "_Start Chat" +msgstr "Elkarrizketa _Hasi" + +#: ../data/glade/chat_control_popup_menu.glade.h:1 +msgid "Click to see past conversations with this contact" +msgstr "Sakatu kontaktu honen elkarrizketa zaharrak ikusteko" + +#: ../data/glade/chat_control_popup_menu.glade.h:2 +#: ../data/glade/roster_contact_context_menu.glade.h:6 +msgid "Send _File" +msgstr "Bidali _Fitxeroa" + +#: ../data/glade/chat_control_popup_menu.glade.h:3 +msgid "Toggle Open_PGP Encryption" +msgstr "Toggle Open_PGP Encryption" + +#: ../data/glade/chat_control_popup_menu.glade.h:5 +#: ../data/glade/gc_control_popup_menu.glade.h:6 +msgid "_Compact View Alt+C" +msgstr "_Bista trikoa Alt+C" + +#: ../data/glade/chat_control_popup_menu.glade.h:6 +#: ../data/glade/gc_control_popup_menu.glade.h:7 +#: ../data/glade/gc_occupants_menu.glade.h:5 +#: ../data/glade/roster_contact_context_menu.glade.h:11 +msgid "_History" +msgstr "_Historiala" + +#: ../data/glade/data_form_window.glade.h:1 +msgid "Room Configuration" +msgstr "Gelaren Konfigurazioa" + +#: ../data/glade/edit_groups_dialog.glade.h:1 +msgid "Edit Groups" +msgstr "Taldeak Editatu" + +#: ../data/glade/filetransfers.glade.h:1 +msgid "A list of active, completed and stopped file transfers" +msgstr "Fitxategi tranferentzia aktiboen, bukatutakoen eta gelditutakoen lista" + +#: ../data/glade/filetransfers.glade.h:2 +msgid "Cancel file transfer" +msgstr "Fitxategi transferentzia kantzelatu" + +#: ../data/glade/filetransfers.glade.h:3 +msgid "Cancels the selected file transfer" +msgstr "Kantzelatu aukeratutako fitxategi transferentzia" + +#: ../data/glade/filetransfers.glade.h:4 +msgid "Cancels the selected file transfer and removes incomplete file" +msgstr "Kantzelatu aukeratutako fitxategi transferentzia eta ezabatu bukatu gabeko fitxeroa " + +#: ../data/glade/filetransfers.glade.h:5 +msgid "Clean _up" +msgstr "_Garbitu" + +#: ../data/glade/filetransfers.glade.h:6 +msgid "File Transfers" +msgstr "Fitxero Transferentzia" + +#: ../data/glade/filetransfers.glade.h:7 +msgid "Hides the window" +msgstr "Leihoa ezkutatu" + +#: ../data/glade/filetransfers.glade.h:8 +msgid "Remove file transfer from the list." +msgstr "Listatik fitxero tranferentzia ezabatu." + +#: ../data/glade/filetransfers.glade.h:9 +msgid "Removes completed, canceled and failed file transfers from the list" +msgstr "Ezabatu kantzelatuak, osorik eta huts egin dutenak fitxero transferentzia zerrendatik" + +#: ../data/glade/filetransfers.glade.h:10 +msgid "Shows a list of file transfers between you and other" +msgstr "Erakutsi zu eta beste baten arteko fitxero transferentzia" + +#: ../data/glade/filetransfers.glade.h:11 +msgid "This action removes single file transfer from the list. If the transfer is active, it is first stopped and then removed" +msgstr "Aukera honek fitxero transferentzia bakar bat kantzelatzen du. Transferentzia martxan badago, lehenik gelditu egingo da eta ondoren ezabatu." + +#: ../data/glade/filetransfers.glade.h:12 +msgid "When a file transfer is complete show a popup notification" +msgstr "Fitxero transferentzia bukatzean erakutsi popup jakinarazte bat" + +#: ../data/glade/filetransfers.glade.h:13 +#: ../src/filetransfers_window.py:753 +msgid "_Continue" +msgstr "_Jarraitu" + +#: ../data/glade/filetransfers.glade.h:14 +msgid "_Notify me when a file transfer is complete" +msgstr "_Jakinarazi fitxeroa transferitu denean" + +#: ../data/glade/filetransfers.glade.h:15 +#: ../src/filetransfers_window.py:190 +msgid "_Open Containing Folder" +msgstr "_Ireki Fitxeroaren Edukia" + +#: ../data/glade/filetransfers.glade.h:16 +msgid "_Pause" +msgstr "_Eten" + +#: ../data/glade/filetransfers.glade.h:17 +msgid "file transfers list" +msgstr "fitxeroen transferentziaren lista" + +#: ../data/glade/gajim_themes_window.glade.h:1 +msgid "Chatstate Tab Colors" +msgstr "Elkarrizketako Egoeren Koloreak" + +#: ../data/glade/gajim_themes_window.glade.h:2 +msgid "" +"Account\n" +"Group\n" +"Contact\n" +"Banner" +msgstr "" +"Kontua\n" +"Taldea\n" +"Kontaktua\n" +"Banner" + +#: ../data/glade/gajim_themes_window.glade.h:6 +#: ../data/glade/privacy_list_edit_window.glade.h:4 +#: ../src/config.py:326 +msgid "Active" +msgstr "Aktibatuta" + +#: ../data/glade/gajim_themes_window.glade.h:7 +msgid "Bold" +msgstr "Negrita" + +#: ../data/glade/gajim_themes_window.glade.h:8 +msgid "Composing" +msgstr "Sortzen" + +#: ../data/glade/gajim_themes_window.glade.h:9 +msgid "Font style:" +msgstr "Iturburuaren estiloa:" + +#: ../data/glade/gajim_themes_window.glade.h:10 +msgid "Gajim Themes Customization" +msgstr "Gajim-en Gaien Kustomizatazailea" + +#: ../data/glade/gajim_themes_window.glade.h:11 +msgid "Gone" +msgstr "Joanda" + +#: ../data/glade/gajim_themes_window.glade.h:12 +msgid "Inactive" +msgstr "Inaktiboa" + +#: ../data/glade/gajim_themes_window.glade.h:13 +msgid "Italic" +msgstr "Etzana" + +#: ../data/glade/gajim_themes_window.glade.h:14 +msgid "" +"MUC\n" +"Messages" +msgstr "" +"MUC\n" +"Mezuak" + +#: ../data/glade/gajim_themes_window.glade.h:16 +msgid "" +"MUC Directed\n" +"Messages" +msgstr "" +"MUC Zuzendua\n" +"Mezuak" + +#: ../data/glade/gajim_themes_window.glade.h:18 +#: ../src/tooltips.py:667 +msgid "Paused" +msgstr "Etena" + +#: ../data/glade/gajim_themes_window.glade.h:19 +msgid "Text _color:" +msgstr "Testuaren _kolorea:" + +#: ../data/glade/gajim_themes_window.glade.h:20 +msgid "Text _font:" +msgstr "Testu _mota:" + +#: ../data/glade/gajim_themes_window.glade.h:21 +msgid "_Background:" +msgstr "A_tzealdeko kolorea:" + +#: ../data/glade/gc_control_popup_menu.glade.h:1 +msgid "Change _Nickname" +msgstr "Aldatu _Izengoitia" + +#: ../data/glade/gc_control_popup_menu.glade.h:2 +msgid "Change _Subject" +msgstr "Aldatu _Gaia" + +#: ../data/glade/gc_control_popup_menu.glade.h:3 +msgid "Click to see past conversation in this room" +msgstr "Sakatu gela honetako elkarrizketa zaharrak ikusteko" + +#: ../data/glade/gc_control_popup_menu.glade.h:4 +msgid "Configure _Room" +msgstr "Gela Konfigu_ratu" + +#: ../data/glade/gc_control_popup_menu.glade.h:5 +msgid "_Bookmark This Room" +msgstr "_Talde Agendan Sartu Gela hau" + +#: ../data/glade/gc_occupants_menu.glade.h:1 +msgid "Mo_derator" +msgstr "Mo_deratzailea" + +#: ../data/glade/gc_occupants_menu.glade.h:3 +msgid "_Admin" +msgstr "_Admin" + +#: ../data/glade/gc_occupants_menu.glade.h:4 +msgid "_Ban" +msgstr "_Debekatu" + +#: ../data/glade/gc_occupants_menu.glade.h:6 +msgid "_Kick" +msgstr "_Bota" + +#: ../data/glade/gc_occupants_menu.glade.h:7 +msgid "_Member" +msgstr "_Partaidea" + +#: ../data/glade/gc_occupants_menu.glade.h:8 +msgid "_Occupant Actions" +msgstr "_Bete Beharreko Aukerak" + +#: ../data/glade/gc_occupants_menu.glade.h:9 +msgid "_Owner" +msgstr "_Jabea" + +#: ../data/glade/gc_occupants_menu.glade.h:10 +msgid "_Send Private Message" +msgstr "_Bidali Mezu Pribatu bat" + +#: ../data/glade/gc_occupants_menu.glade.h:11 +msgid "_Voice" +msgstr "_Ahotsa" + +#: ../data/glade/history_manager.glade.h:1 +msgid "" +"Welcome to Gajim History Logs Manager\n" +"\n" +"You can select logs from the left and/or search database from below.\n" +"\n" +"WARNING:\n" +"If you plan to do massive deletions, please make sure Gajim is not running. Generally avoid deletions with contacts you currently chat with." +msgstr "" +"Ongi Etorri Gajim Log Historial Administratzailera\n" +"\n" +"Eskubian log-ak hautatu ditzakezu edo/eta behean datu basean bilatu.\n" +"\n" +"OHARRA:\n" +"Ezabatze handia egin behar baduzu, Gajim abiarazita ez dagoela begira ezazu. Normalean hitz egiten ari zaren kontaktuaen ezabaketak arbuilatzen ditu." + +#: ../data/glade/history_manager.glade.h:7 +msgid "Delete" +msgstr "Ezabatu" + +#: ../data/glade/history_manager.glade.h:8 +msgid "Export" +msgstr "Esportatu" + +#: ../data/glade/history_manager.glade.h:9 +msgid "Gajim History Logs Manager" +msgstr "Gajim Historialeko Log Administratzailea" + +#: ../data/glade/history_manager.glade.h:10 +msgid "_Search Database" +msgstr "_Bilatu Datu Basean" + +#: ../data/glade/history_window.glade.h:1 +msgid "Build custom query" +msgstr "Build custom query" + +#: ../data/glade/history_window.glade.h:2 +msgid "Conversation History" +msgstr "Elkarrizketaren Historiala" + +#: ../data/glade/history_window.glade.h:3 +msgid "Query Builder..." +msgstr "Query Builder..." + +#: ../data/glade/history_window.glade.h:4 +msgid "Search" +msgstr "Bilatu" + +#: ../data/glade/history_window.glade.h:5 +msgid "_Search" +msgstr "_Bilatu" + +#: ../data/glade/invitation_received_dialog.glade.h:1 +msgid "Accept" +msgstr "Onartu" + +#: ../data/glade/invitation_received_dialog.glade.h:2 +#: ../data/glade/privacy_list_edit_window.glade.h:8 +msgid "Deny" +msgstr "Ukatu" + +#: ../data/glade/invitation_received_dialog.glade.h:3 +msgid "Invitation Received" +msgstr "Gonbidapena Jasoa" + +#: ../data/glade/join_groupchat_window.glade.h:1 +#: ../src/dialogs.py:941 +msgid "Join Group Chat" +msgstr "Txat Taldean Sartu" + +#: ../data/glade/join_groupchat_window.glade.h:2 +#: ../data/glade/manage_bookmarks_window.glade.h:4 +#: ../data/glade/vcard_information_window.glade.h:28 +msgid "Nickname:" +msgstr "Izengoitia:" + +#: ../data/glade/join_groupchat_window.glade.h:3 +#: ../data/glade/manage_bookmarks_window.glade.h:5 +msgid "Password:" +msgstr "Pasahitza:" + +#: ../data/glade/join_groupchat_window.glade.h:4 +msgid "Recently:" +msgstr "Berriki:" + +#: ../data/glade/join_groupchat_window.glade.h:5 +#: ../data/glade/manage_bookmarks_window.glade.h:7 +msgid "Room:" +msgstr "Gela:" + +#: ../data/glade/join_groupchat_window.glade.h:6 +#: ../data/glade/manage_bookmarks_window.glade.h:8 +msgid "Server:" +msgstr "Zerbitzaria:" + +#: ../data/glade/join_groupchat_window.glade.h:7 +#: ../src/disco.py:1145 +#: ../src/disco.py:1507 +msgid "_Join" +msgstr "_Sartu" + +#: ../data/glade/manage_accounts_window.glade.h:1 +msgid "Manage Accounts" +msgstr "Kontuak moldatu" + +#: ../data/glade/manage_bookmarks_window.glade.h:1 +msgid "Auto join" +msgstr "Automatikoki sartu" + +#: ../data/glade/manage_bookmarks_window.glade.h:2 +msgid "If checked, Gajim will join this group chat on startup" +msgstr "Hautatua badago, Gajim-ek txat talde honetan sartuko da abiaraztean" + +#: ../data/glade/manage_bookmarks_window.glade.h:3 +msgid "Manage Bookmarks" +msgstr "Talde Agenda Moldatu" + +#: ../data/glade/manage_bookmarks_window.glade.h:6 +msgid "Print status:" +msgstr "Inprimatu egoera:" + +#: ../data/glade/manage_bookmarks_window.glade.h:9 +msgid "Title:" +msgstr "Izenburua:" + +#: ../data/glade/manage_proxies_window.glade.h:1 +msgid "Properties" +msgstr "Ezaugarriak" + +#: ../data/glade/manage_proxies_window.glade.h:2 +msgid "Settings" +msgstr "Aldaketak" + +#: ../data/glade/manage_proxies_window.glade.h:3 +msgid "HTTP Connect" +msgstr "HTTP konektatuta" + +#: ../data/glade/manage_proxies_window.glade.h:4 +msgid "Manage Proxy Profiles" +msgstr "Proxy Profila Moldatu" + +#: ../data/glade/manage_proxies_window.glade.h:5 +#: ../data/glade/vcard_information_window.glade.h:27 +msgid "Name:" +msgstr "Izena:" + +#: ../data/glade/manage_proxies_window.glade.h:7 +msgid "Type:" +msgstr "Mota:" + +#: ../data/glade/manage_proxies_window.glade.h:8 +msgid "Use authentication" +msgstr "Erabili autentifikazioa" + +#: ../data/glade/message_window.glade.h:1 +msgid "Click to insert an emoticon (Alt+M)" +msgstr "Sakatu emoticon bat ezartzeko (Alt+M)" + +#: ../data/glade/message_window.glade.h:2 +#: ../src/chat_control.py:966 +msgid "OpenPGP Encryption" +msgstr "Ireki OpenPGP Enkriptazioa" + +#. Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector) +#: ../data/glade/message_window.glade.h:4 +#: ../data/glade/roster_window.glade.h:9 +msgid "_Actions" +msgstr "_Aukerak" + +#. Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector) +#: ../data/glade/message_window.glade.h:6 +#: ../data/glade/xml_console_window.glade.h:11 +#: ../src/filetransfers_window.py:249 +msgid "_Send" +msgstr "_Bidali" + +#: ../data/glade/passphrase_dialog.glade.h:1 +msgid "Passphrase" +msgstr "Pasa-esaldia" + +#: ../data/glade/preferences_window.glade.h:1 +msgid "Advanced Configuration Editor" +msgstr "Konfigurazio Aurreratuaren Editorea" + +#: ../data/glade/preferences_window.glade.h:2 +msgid "Applications" +msgstr "Aplikazioak" + +#. a header for custom browser/client/file manager. so translate sth like: Custom Settings +#: ../data/glade/preferences_window.glade.h:4 +msgid "Custom" +msgstr "Bezeroak" + +#: ../data/glade/preferences_window.glade.h:5 +msgid "Format of a line" +msgstr "Lerroaren Formatua" + +#: ../data/glade/preferences_window.glade.h:6 +msgid "GMail Options" +msgstr "GMail Aukerak" + +#: ../data/glade/preferences_window.glade.h:7 +msgid "Interface Customization" +msgstr "Grafikoen Kontrola" + +#: ../data/glade/preferences_window.glade.h:9 +msgid "Preset Status Messages" +msgstr "Egoera Mezu Ezarriak" + +#: ../data/glade/preferences_window.glade.h:11 +msgid "Visual Notifications" +msgstr "Ikusizko Jakinarazketa" + +#: ../data/glade/preferences_window.glade.h:12 +msgid "A_fter nickname:" +msgstr "Izengoitiaren on_doren:" + +#: ../data/glade/preferences_window.glade.h:13 +msgid "Advanced" +msgstr "Aurreratua" + +#: ../data/glade/preferences_window.glade.h:14 +msgid "" +"All chat states\n" +"Composing only\n" +"Disabled" +msgstr "" +"Elkarrizketa guztien egoera\n" +"Konposatzen bakarrik\n" +"Desaktibatuta" + +#: ../data/glade/preferences_window.glade.h:17 +msgid "Allow _OS information to be sent" +msgstr "Baimena _OS informazioa bidaltzeko" + +#: ../data/glade/preferences_window.glade.h:18 +msgid "Allow popup/notifications when I'm _away/na/busy/invisible" +msgstr "Baimendu Popup/Jakinarazteak nagoenean: Kanpoan/Ez Erabilgarri/Lanpetuta/Ikusezin" + +#: ../data/glade/preferences_window.glade.h:19 +msgid "Also known as iChat style" +msgstr "iChat estiloa bezala ere ezagutua" + +#: ../data/glade/preferences_window.glade.h:20 +msgid "Ask status message when I:" +msgstr "Eskatu egoera mezua, nagoenean:" + +#: ../data/glade/preferences_window.glade.h:21 +msgid "Auto _away after:" +msgstr "Automatikoki _Kanpoan ondoren:" + +#: ../data/glade/preferences_window.glade.h:22 +msgid "Auto _not available after:" +msgstr "Automatikoki _Ez Erabilgarri ondoren:" + +#: ../data/glade/preferences_window.glade.h:23 +msgid "" +"Autodetect on every Gajim startup\n" +"Always use GNOME default applications\n" +"Always use KDE default applications\n" +"Custom" +msgstr "" +"Autodetektatu Gajim abiarazten den bakoitzean\n" +"Beti GNOME-ren berezko aplikazioak erabili\n" +"Beti KDE-ren berezko aplikazioak erabili\n" +"Bezeroa" + +#: ../data/glade/preferences_window.glade.h:27 +msgid "B_efore nickname:" +msgstr "Izengoitia baino l_ehen:" + +#: ../data/glade/preferences_window.glade.h:28 +#: ../src/chat_control.py:718 +msgid "Chat" +msgstr "Txat" + +#: ../data/glade/preferences_window.glade.h:29 +msgid "Chat state noti_fications:" +msgstr "Txateko egoeraren ja_kinaraztea:" + +#: ../data/glade/preferences_window.glade.h:30 +msgid "Check this option, only if someone you don't have in the roster spams/annoys you. Use with caution, cause it blocks all messages from any contact that is not in the roster" +msgstr "Bakarrik hautatu aukera hau zerrendan ez duzun norbaitek zirikatzen bazaitu. Kontu handiz erabili, zerrendan ez dagoen edonoren mezuak blokeatzen ditu" + +#: ../data/glade/preferences_window.glade.h:31 +msgid "Default status _iconset:" +msgstr "Berezko egoera _ikurra:" + +#: ../data/glade/preferences_window.glade.h:32 +msgid "Display _extra email details" +msgstr "Erakutsarazi epostaren g_ehigarrizko xehetasunak" + +#: ../data/glade/preferences_window.glade.h:33 +msgid "Display a_vatars of contacts in roster" +msgstr "Kontaktuen a_batereak erakutsi zerrendan" + +#: ../data/glade/preferences_window.glade.h:34 +msgid "Display status _messages of contacts in roster" +msgstr "Erakuts arazi kontaktuen egoera _mezua zerrendan" + +#: ../data/glade/preferences_window.glade.h:35 +msgid "E_very 5 minutes" +msgstr "5 _minuturo" + +#: ../data/glade/preferences_window.glade.h:36 +msgid "Emoticons:" +msgstr "Emoticonoak:" + +#: ../data/glade/preferences_window.glade.h:37 +msgid "Events" +msgstr "Gertaerak" + +#: ../data/glade/preferences_window.glade.h:38 +msgid "Gajim can send and receive meta-information related to a conversation you may have with a contact. Here you can specify which chatstates you want to send to the other party." +msgstr "Gajim can send and receive meta-information related to a conversation you may have with a contact. Here you can specify which chatstates you want to send to the other party." + +#: ../data/glade/preferences_window.glade.h:39 +msgid "Gajim will automatically show new events by poping up the relative window" +msgstr "Gajim-ek automatikoki gertaera berriak agertaraziko ditu hautatutako leihoan " + +#: ../data/glade/preferences_window.glade.h:40 +msgid "Gajim will notify you for new events via a popup in the bottom right of the screen" +msgstr "Gajim-ek gertaera berriez jakinaraziko dizu popup bidez pantailaren beheko eskubiko aldean" + +#: ../data/glade/preferences_window.glade.h:41 +msgid "Gajim will notify you via a popup window in the bottom right of the screen about contacts that just signed in" +msgstr "Sartu berri diren kontaktuez jakinaraziko dizu Gajim-ek popup bidez" + +#: ../data/glade/preferences_window.glade.h:42 +msgid "Gajim will notify you via a popup window in the bottom right of the screen about contacts that just signed out" +msgstr "Deskonektatu diren kontaktuez Gajim-ek jakinaraziko dizu popup bidez pantailako beheko eskubiko aldean" + +#: ../data/glade/preferences_window.glade.h:43 +msgid "Gajim will only change the icon of the contact that triggered the new event" +msgstr "Gajim-ek bakarrik kontaktuaren ikonoa aldatuko du gertaera berri bat duenean" + +#: ../data/glade/preferences_window.glade.h:45 +msgid "If checked, Gajim will display avatars of contacts in roster window and in group chats" +msgstr "Hautatua badago, Gajim-ek zerrendan eta txat taldeetan kontaktuen abatereak azalaraziko ditu" + +#: ../data/glade/preferences_window.glade.h:46 +msgid "If checked, Gajim will display status messages of contacts under the contact name in roster window and in group chats" +msgstr "Hautatua badago, Gajim-ek egoera mezua zerrendan erakutsaraziko du izenen azpian eta txat taldeetan" + +#: ../data/glade/preferences_window.glade.h:47 +msgid "If checked, Gajim will remember the roster and chat window positions in the screen and the sizes of them next time you run it" +msgstr "Hautatua badago, Gajim-ek berriz abiarazten duzunean zerrendako eta baita txat leihoaren pantailako lekua eta tamaina gogoraraziko dizu" + +#: ../data/glade/preferences_window.glade.h:48 +msgid "If checked, Gajim will use protocol-specific status icons. (eg. A contact from MSN will have the equivalent msn icon for status online, away, busy, etc...)" +msgstr "Hautatua badago, Gajim-ek protokolo bakoitzaren egoera ikurrak irabiliko ditu (Adibidez: MSN bada, protokolo honek erabiltzen dituen berezko ikurrak jarriko dira)" + +#: ../data/glade/preferences_window.glade.h:49 +msgid "If not disabled, Gajim will replace ascii smilies like ':)' with equivalent animated or static graphical emoticons" +msgstr "Ez badago ezeztatuta, Gajim-ek ´:)´ ascii hauek bere irudi grafiko estatiko edo animatura eraldatuko ditu" + +#: ../data/glade/preferences_window.glade.h:50 +msgid "Ma_nage..." +msgstr "Mo_ldatu..." + +#: ../data/glade/preferences_window.glade.h:51 +msgid "" +"Never\n" +"Always\n" +"Per account\n" +"Per type" +msgstr "" +"Inoiz\n" +"Beti\n" +"Kontuko\n" +"Gaiaz" + +#: ../data/glade/preferences_window.glade.h:55 +msgid "Notify me about contacts that: " +msgstr "Jakinarazi kontaktuek hau egitean: " + +#: ../data/glade/preferences_window.glade.h:56 +msgid "Notify on new _GMail email" +msgstr "_Gmail-eko E-posta berri batez jakinarazi" + +#: ../data/glade/preferences_window.glade.h:57 +msgid "On every _message" +msgstr "Mezu _guztietan" + +#: ../data/glade/preferences_window.glade.h:58 +msgid "One message _window:" +msgstr "M_ezu leiho bat" + +#: ../data/glade/preferences_window.glade.h:59 +msgid "Play _sounds" +msgstr "Soinuak _entzun" + +#: ../data/glade/preferences_window.glade.h:60 +msgid "Preferences" +msgstr "Hobespenak" + +#: ../data/glade/preferences_window.glade.h:61 +msgid "Print time:" +msgstr "Imprimatu ordua:" + +#: ../data/glade/preferences_window.glade.h:62 +msgid "Save _position and size for roster and chat windows" +msgstr "Gorde zerrendaren eta txat leihoaren _lekua eta tamaina" + +#: ../data/glade/preferences_window.glade.h:63 +msgid "Show only in _roster" +msgstr "Ikusi _zerrendan bakarrik" + +#: ../data/glade/preferences_window.glade.h:64 +msgid "Sign _in" +msgstr "_Konektatuta" + +#: ../data/glade/preferences_window.glade.h:65 +msgid "Sign _out" +msgstr "_Deskonektatuta" + +#: ../data/glade/preferences_window.glade.h:66 +msgid "Status" +msgstr "Egoera" + +#: ../data/glade/preferences_window.glade.h:67 +msgid "T_heme:" +msgstr "G_aia:" + +#: ../data/glade/preferences_window.glade.h:68 +msgid "The auto away status message" +msgstr "Automatikoki kanpoko egoera mezua" + +#: ../data/glade/preferences_window.glade.h:69 +msgid "The auto not available status message" +msgstr "Automatikoki ez erabilgarriko egoera mezua" + +#: ../data/glade/preferences_window.glade.h:70 +msgid "Use _transports iconsets" +msgstr "Erabili _transporteen ikurrak" + +#: ../data/glade/preferences_window.glade.h:71 +msgid "Use system _default" +msgstr "_Sistemaren berezkoa erabili" + +#: ../data/glade/preferences_window.glade.h:72 +msgid "Use t_rayicon (aka. notification area icon)" +msgstr "E_rabili ikonifikazioa (aka. notification area)" + +#: ../data/glade/preferences_window.glade.h:73 +msgid "When a new event (message, file transfer request etc..) is received, the following methods may be used to inform you about it. Please note that events about new messages only occur if it is a new message from a contact you are not already chatting with" +msgstr "Metodo honekin, gertaera berri bat (mezu bat, fitxero trasferentzia eskaera...) jasotzean, horiei buruz jakinaraziko zaizu. Mezu berri baten jakinaraztea, bakarrik, dagoeneko hitz egiten ari zaren pertsona batekin izan ezik izango da" + +#: ../data/glade/preferences_window.glade.h:74 +msgid "When new event is received" +msgstr "Ekintza berri bat jasotzean." + +#: ../data/glade/preferences_window.glade.h:75 +msgid "_Advanced Notifications Control..." +msgstr "Notifikazio _Aurreratuaren Kontrola..." + +#: ../data/glade/preferences_window.glade.h:76 +msgid "_After time:" +msgstr "Ordu_aren ondoren:" + +#: ../data/glade/preferences_window.glade.h:77 +msgid "_Before time:" +msgstr "Ordua _baino lehen:" + +#: ../data/glade/preferences_window.glade.h:78 +msgid "_Browser:" +msgstr "_Bilatu:" + +#: ../data/glade/preferences_window.glade.h:79 +msgid "_File manager:" +msgstr "_Fitxero administratzaile:" + +#: ../data/glade/preferences_window.glade.h:80 +msgid "_Font:" +msgstr "_Mota:" + +#: ../data/glade/preferences_window.glade.h:81 +msgid "_Highlight misspelled words" +msgstr "_Highlight misspelled words" + +#: ../data/glade/preferences_window.glade.h:82 +msgid "_Ignore events from contacts not in the roster" +msgstr "_Zerrendan ez dauden kontaktuen gertaerak baztertu" + +#: ../data/glade/preferences_window.glade.h:83 +msgid "_Incoming message:" +msgstr "_Sarrerako mezua:" + +#: ../data/glade/preferences_window.glade.h:84 +msgid "_Log status changes of contacts" +msgstr "Kontaktuen egoera aldaketak gorde" + +#: ../data/glade/preferences_window.glade.h:85 +msgid "_Mail client:" +msgstr "_Email bezeroa" + +#: ../data/glade/preferences_window.glade.h:86 +msgid "_Never" +msgstr "_Inoiz" + +#: ../data/glade/preferences_window.glade.h:87 +msgid "_Notify me about it" +msgstr "_Jakinarazi horri buruz" + +#: ../data/glade/preferences_window.glade.h:88 +msgid "_Open..." +msgstr "_Ireki..." + +#: ../data/glade/preferences_window.glade.h:89 +msgid "_Outgoing message:" +msgstr "Kanp_oan nagoeneko mezua:" + +#: ../data/glade/preferences_window.glade.h:90 +msgid "_Player:" +msgstr "_Entzun" + +#: ../data/glade/preferences_window.glade.h:91 +msgid "_Pop it up" +msgstr "_Agertarazi" + +#: ../data/glade/preferences_window.glade.h:92 +msgid "_Reset to Default Colors" +msgstr "Be_rezko Koloreak Ezarri" + +#: ../data/glade/preferences_window.glade.h:93 +msgid "_Sort contacts by status" +msgstr "_Sailkatu kontaktuak egoeraren bidez" + +#: ../data/glade/preferences_window.glade.h:94 +msgid "_Status message:" +msgstr "Egoera mezua:" + +#: ../data/glade/preferences_window.glade.h:95 +msgid "_URL:" +msgstr "_URL:" + +#: ../data/glade/preferences_window.glade.h:96 +msgid "minutes" +msgstr "minutu" + +#: ../data/glade/privacy_list_edit_window.glade.h:1 +msgid "Add / Edit a rule" +msgstr "Ezarri / Editatu arau bat" + +#: ../data/glade/privacy_list_edit_window.glade.h:2 +msgid "List of rules" +msgstr "Arauen zerrenda" + +#: ../data/glade/privacy_list_edit_window.glade.h:3 +msgid "Privacy List" +msgstr "Debekatze Zerrenda" + +#: ../data/glade/privacy_list_edit_window.glade.h:5 +#: ../src/config.py:2281 +msgid "All" +msgstr "Dena" + +#: ../data/glade/privacy_list_edit_window.glade.h:6 +msgid "Allow" +msgstr "Baimendu" + +#: ../data/glade/privacy_list_edit_window.glade.h:7 +msgid "Default" +msgstr "Berezkoa" + +#: ../data/glade/privacy_list_edit_window.glade.h:9 +msgid "JabberID" +msgstr "JabberID" + +#: ../data/glade/privacy_list_edit_window.glade.h:10 +msgid "Order:" +msgstr "Ordena:" + +#: ../data/glade/privacy_list_edit_window.glade.h:11 +#: ../src/dialogs.py:1626 +msgid "Privacy List" +msgstr "Debekatze Zerrenda" + +#: ../data/glade/privacy_list_edit_window.glade.h:12 +msgid "all by subscription" +msgstr "harpidetza honekin" + +#: ../data/glade/privacy_list_edit_window.glade.h:13 +msgid "all in the group" +msgstr "talde hontakoak" + +#: ../data/glade/privacy_list_edit_window.glade.h:14 +msgid "" +"none\n" +"both\n" +"from\n" +"to" +msgstr "" +"ezer\n" +"biak\n" +"nondik\n" +"norentzat" + +#: ../data/glade/privacy_list_edit_window.glade.h:18 +msgid "to send me messages" +msgstr "niri mezuak bidaltzea" + +#: ../data/glade/privacy_list_edit_window.glade.h:19 +msgid "to send me queries" +msgstr "niri galderak bidaltzeko" + +#: ../data/glade/privacy_list_edit_window.glade.h:20 +msgid "to send me status" +msgstr "niri egoera bidaltzeko" + +#: ../data/glade/privacy_list_edit_window.glade.h:21 +msgid "to view my status" +msgstr "nire egoera ikustea" + +#: ../data/glade/privacy_lists_first_window.glade.h:1 +msgid "Create your own Privacy Lists" +msgstr "Sortu zure debekatze zerrenda" + +#: ../data/glade/privacy_lists_first_window.glade.h:2 +msgid "Server-based Privacy Lists" +msgstr "Zerbitzarian oinarritutako Debekatze Zerrenda" + +#: ../data/glade/remove_account_window.glade.h:1 +msgid "What do you want to do?" +msgstr "Zer nahi duzu egin?" + +#: ../data/glade/remove_account_window.glade.h:2 +msgid "Remove account _only from Gajim" +msgstr "Ezabatu k_ontua Gajim-etik bakarrik" + +#: ../data/glade/remove_account_window.glade.h:3 +msgid "Remove account from Gajim and from _server" +msgstr "Ezabatu kontua Gajim-etik eta baita _zerbitzaritik" + +#: ../data/glade/roster_contact_context_menu.glade.h:1 +msgid "A_sk to see his/her status" +msgstr "Bere egoera ikusteko esan" + +#: ../data/glade/roster_contact_context_menu.glade.h:2 +msgid "Add Special _Notification" +msgstr "Gehitu _Noifikazio Berezia" + +#: ../data/glade/roster_contact_context_menu.glade.h:3 +msgid "Assign Open_PGP Key" +msgstr "Open_PGP kodea zehaztu" + +#: ../data/glade/roster_contact_context_menu.glade.h:4 +msgid "Edit _Groups" +msgstr "Editatu _Taldeak" + +#: ../data/glade/roster_contact_context_menu.glade.h:5 +#: ../data/glade/systray_context_menu.glade.h:1 +msgid "Send Single _Message" +msgstr "Bidali Mezu _Bakarra" + +#: ../data/glade/roster_contact_context_menu.glade.h:7 +msgid "Start _Chat" +msgstr "Elkarrizketa _Hasi" + +#: ../data/glade/roster_contact_context_menu.glade.h:9 +msgid "_Allow him/her to see my status" +msgstr "Baimendu nire egoera ikustea" + +#: ../data/glade/roster_contact_context_menu.glade.h:10 +msgid "_Forbid him/her to see my status" +msgstr "Debekatu nire egoera ikustea" + +#: ../data/glade/roster_contact_context_menu.glade.h:12 +#: ../src/roster_window.py:1482 +msgid "_Remove from Roster" +msgstr "_Zerrendatik Ezabatua" + +#: ../data/glade/roster_contact_context_menu.glade.h:13 +#: ../src/roster_window.py:1470 +msgid "_Rename" +msgstr "_Berrrizenpetu" + +#: ../data/glade/roster_contact_context_menu.glade.h:14 +msgid "_Subscription" +msgstr "_Harpidetza" + +#: ../data/glade/roster_window.glade.h:1 +msgid "A_ccounts" +msgstr "K_ontua" + +#: ../data/glade/roster_window.glade.h:2 +msgid "Add _Contact" +msgstr "Kontaktua _Sartu" + +#: ../data/glade/roster_window.glade.h:3 +msgid "File _Transfers" +msgstr "Fitxero _Transferentzia" + +#: ../data/glade/roster_window.glade.h:4 +msgid "Frequently Asked Questions (online)" +msgstr "Frequently Asked Questions (online)" + +#: ../data/glade/roster_window.glade.h:6 +msgid "Help online" +msgstr "Online laguntza" + +#: ../data/glade/roster_window.glade.h:7 +msgid "Profile, Avatar" +msgstr "Profila, Abatareak" + +#: ../data/glade/roster_window.glade.h:8 +msgid "Show _Offline Contacts" +msgstr "Ikusi _Deskonektatutako Kontaktuak" + +#: ../data/glade/roster_window.glade.h:11 +msgid "_Contents" +msgstr "_Edukiak" + +#: ../data/glade/roster_window.glade.h:12 +msgid "_Discover Services" +msgstr "_Zerbitzuak Aurkitu" + +#: ../data/glade/roster_window.glade.h:13 +#: ../src/disco.py:1252 +#: ../src/roster_window.py:1462 +msgid "_Edit" +msgstr "_Editatu" + +#: ../data/glade/roster_window.glade.h:14 +msgid "_FAQ" +msgstr "_FAQ" + +#: ../data/glade/roster_window.glade.h:16 +msgid "_Help" +msgstr "_Laguntza" + +#: ../data/glade/roster_window.glade.h:17 +msgid "_Preferences" +msgstr "_Hobespenak" + +#: ../data/glade/roster_window.glade.h:18 +msgid "_Quit" +msgstr "At_era" + +#: ../data/glade/service_discovery_window.glade.h:1 +msgid "G_o" +msgstr "J_oan" + +#: ../data/glade/service_discovery_window.glade.h:2 +msgid "_Address:" +msgstr "_Helbidea:" + +#: ../data/glade/service_discovery_window.glade.h:3 +msgid "_Filter:" +msgstr "_Filtroa:" + +#: ../data/glade/service_registration_window.glade.h:1 +msgid "Register to" +msgstr "Erregistratu honetara" + +#: ../data/glade/service_registration_window.glade.h:2 +msgid "_Cancel" +msgstr "_kantzelatu" + +#: ../data/glade/service_registration_window.glade.h:3 +msgid "_OK" +msgstr "_OK" + +#: ../data/glade/single_message_window.glade.h:1 +msgid "0" +msgstr "0" + +#: ../data/glade/single_message_window.glade.h:2 +msgid "From:" +msgstr "Norena:" + +#: ../data/glade/single_message_window.glade.h:3 +msgid "Reply to this message" +msgstr "Erantzun mezu honi" + +#: ../data/glade/single_message_window.glade.h:4 +msgid "Sen_d" +msgstr "_Bidali" + +#: ../data/glade/single_message_window.glade.h:5 +msgid "Send message" +msgstr "Bidali mezua" + +#: ../data/glade/single_message_window.glade.h:6 +msgid "Send message and close window" +msgstr "Bidali mezua eta itxi leihoa" + +#: ../data/glade/single_message_window.glade.h:7 +msgid "Subject:" +msgstr "Gaia:" + +#: ../data/glade/single_message_window.glade.h:8 +msgid "To:" +msgstr "Norentzat:" + +#: ../data/glade/single_message_window.glade.h:9 +msgid "_Reply" +msgstr "_Erantzun" + +#: ../data/glade/single_message_window.glade.h:10 +msgid "_Send & Close" +msgstr "_Bidali eta Itxi" + +#: ../data/glade/subscription_request_window.glade.h:1 +msgid "Authorize contact so he can know when you're connected" +msgstr "Kontaktu autorizatua beraz, zure egoera ikus dezake" + +#: ../data/glade/subscription_request_window.glade.h:2 +msgid "Contact _Info" +msgstr "Kontaktuaren _ Informazioa" + +#: ../data/glade/subscription_request_window.glade.h:3 +msgid "Deny authorization from contact so he cannot know when you're connected" +msgstr "Autorizazioa ezeztatu, honela kontaktuak ezin du zure egoera ikusi" + +#: ../data/glade/subscription_request_window.glade.h:4 +msgid "Subscription Request" +msgstr "Harpidetza Eskaria" + +#: ../data/glade/subscription_request_window.glade.h:5 +msgid "_Authorize" +msgstr "_Autorizatu" + +#: ../data/glade/subscription_request_window.glade.h:6 +msgid "_Deny" +msgstr "_Ukatu" + +#: ../data/glade/systray_context_menu.glade.h:2 +msgid "Show All Pending _Events" +msgstr "Ikusi Gabeko _Gertaerak" + +#: ../data/glade/systray_context_menu.glade.h:3 +msgid "Show _Roster" +msgstr "Ikusi _Zerrenda" + +#: ../data/glade/systray_context_menu.glade.h:4 +msgid "Sta_tus" +msgstr "E_goera" + +#. "About" is the text of a tab of vcard window +#: ../data/glade/vcard_information_window.glade.h:2 +msgid "About" +msgstr "About" + +#: ../data/glade/vcard_information_window.glade.h:3 +msgid "Address" +msgstr "Helbidea" + +#: ../data/glade/vcard_information_window.glade.h:4 +msgid "Ask:" +msgstr "Eskatua:" + +#: ../data/glade/vcard_information_window.glade.h:5 +msgid "Birthday:" +msgstr "Urtebetetzea:" + +#: ../data/glade/vcard_information_window.glade.h:6 +msgid "City:" +msgstr "Hiria:" + +#: ../data/glade/vcard_information_window.glade.h:7 +msgid "Client:" +msgstr "Bezeroa:" + +#: ../data/glade/vcard_information_window.glade.h:8 +msgid "Company:" +msgstr "Konpainia:" + +#: ../data/glade/vcard_information_window.glade.h:9 +msgid "Contact Information" +msgstr "Kontaktuaren Informazioa" + +#: ../data/glade/vcard_information_window.glade.h:10 +msgid "Country:" +msgstr "Estatua:" + +#: ../data/glade/vcard_information_window.glade.h:11 +msgid "Department:" +msgstr "Departamentua:" + +#: ../data/glade/vcard_information_window.glade.h:12 +msgid "E-Mail:" +msgstr "E-Posta:" + +#: ../data/glade/vcard_information_window.glade.h:13 +msgid "Extra Address:" +msgstr "Helbide Gehigarria:" + +#. Family Name +#: ../data/glade/vcard_information_window.glade.h:15 +msgid "Family:" +msgstr "Familia:" + +#: ../data/glade/vcard_information_window.glade.h:16 +msgid "Format: YYYY-MM-DD" +msgstr "Formatua: YYYY-MM-DD" + +#. Given Name +#: ../data/glade/vcard_information_window.glade.h:19 +msgid "Given:" +msgstr "Emandako izena:" + +#: ../data/glade/vcard_information_window.glade.h:20 +msgid "Homepage:" +msgstr "Web Pertsonala:" + +#: ../data/glade/vcard_information_window.glade.h:21 +msgid "Jabber" +msgstr "Jabber" + +#: ../data/glade/vcard_information_window.glade.h:22 +msgid "Jabber ID:" +msgstr "Jabber ID:" + +#: ../data/glade/vcard_information_window.glade.h:23 +msgid "Location" +msgstr "Kokapena" + +#. Middle Name +#: ../data/glade/vcard_information_window.glade.h:25 +msgid "Middle:" +msgstr "Erdi izena:" + +#: ../data/glade/vcard_information_window.glade.h:26 +msgid "More" +msgstr "Gehiago" + +#: ../data/glade/vcard_information_window.glade.h:29 +msgid "OS:" +msgstr "OS:" + +#: ../data/glade/vcard_information_window.glade.h:30 +msgid "Phone No.:" +msgstr "Telefono Zenbakia:" + +#: ../data/glade/vcard_information_window.glade.h:31 +msgid "Position:" +msgstr "Tokia:" + +#: ../data/glade/vcard_information_window.glade.h:32 +msgid "Postal Code:" +msgstr "Posta Kodea:" + +#. Prefix in Name +#: ../data/glade/vcard_information_window.glade.h:34 +msgid "Prefix:" +msgstr "Aurreizkia izenean:" + +#: ../data/glade/vcard_information_window.glade.h:35 +msgid "Resource:" +msgstr "Baliabidea:" + +#: ../data/glade/vcard_information_window.glade.h:36 +msgid "Role:" +msgstr "Eginkizuna:" + +#: ../data/glade/vcard_information_window.glade.h:37 +msgid "Set _Avatar" +msgstr "Ezarri _Abatereak" + +#: ../data/glade/vcard_information_window.glade.h:38 +msgid "State:" +msgstr "Egoera:" + +#: ../data/glade/vcard_information_window.glade.h:39 +msgid "Status:" +msgstr "Egoera:" + +#: ../data/glade/vcard_information_window.glade.h:40 +msgid "Street:" +msgstr "Kalea:" + +#: ../data/glade/vcard_information_window.glade.h:41 +msgid "Subscription:" +msgstr "Harpidetza:" + +#. Suffix in Name +#: ../data/glade/vcard_information_window.glade.h:43 +msgid "Suffix:" +msgstr "Atzizkia izenean:" + +#: ../data/glade/vcard_information_window.glade.h:44 +msgid "Work" +msgstr "Lana" + +#: ../data/glade/vcard_information_window.glade.h:45 +msgid "_Log conversation history" +msgstr "Elkarrizketaren _historiala" + +#: ../data/glade/vcard_information_window.glade.h:46 +msgid "_Publish" +msgstr "_Argitaratu" + +#: ../data/glade/vcard_information_window.glade.h:47 +msgid "_Retrieve" +msgstr "_Berridatzi" + +#: ../data/glade/xml_console_window.glade.h:1 +msgid "Jabber Traffic" +msgstr "Jabber Trafikoa" + +#: ../data/glade/xml_console_window.glade.h:2 +msgid "XML Input" +msgstr "XML Sarrera" + +#. XML Console enable checkbutton +#: ../data/glade/xml_console_window.glade.h:4 +msgid "Enable" +msgstr "Aktibatu" + +#. Info/Query make the "IQ" initials. So translate like this 'YourLang/YourLang (Info/Query)'. Thanks (it's a tooltip so width is not a problem) +#: ../data/glade/xml_console_window.glade.h:6 +msgid "Info/Query" +msgstr "Informatu/Galdetu" + +#. Info/Query: all(?) jabber xml start with Whom do you want to ban?\n" "\n" @@ -368,11 +2304,11 @@ msgstr "" "Zein nahi duzu debekatu?\n" "\n" -#: ../src/config.py:2023 +#: ../src/config.py:2062 msgid "Adding Member..." msgstr "Kidea ezartzen..." -#: ../src/config.py:2024 +#: ../src/config.py:2063 msgid "" "Whom do you want to make a member?\n" "\n" @@ -380,11 +2316,11 @@ msgstr "" "Zein nahi duzu kide egitea?\n" "\n" -#: ../src/config.py:2026 +#: ../src/config.py:2065 msgid "Adding Owner..." msgstr "Jabea ezartzen..." -#: ../src/config.py:2027 +#: ../src/config.py:2066 msgid "" "Whom do you want to make a owner?\n" "\n" @@ -392,11 +2328,11 @@ msgstr "" "Zein nahi duzu jabe egitea?\n" "\n" -#: ../src/config.py:2029 +#: ../src/config.py:2068 msgid "Adding Administrator..." msgstr "Administratzailea ezartzen..." -#: ../src/config.py:2030 +#: ../src/config.py:2069 msgid "" "Whom do you want to make an administrator?\n" "\n" @@ -404,7 +2340,7 @@ msgstr "" "Zein nahi duzu administratzaile egitea?\n" "\n" -#: ../src/config.py:2031 +#: ../src/config.py:2070 msgid "" "Can be one of the following:\n" "1. user@domain/resource (only that resource matches).\n" @@ -420,670 +2356,782 @@ msgstr "" "4. zerbitzaria (the domain itself matches, as does any user@domain,\n" "domain/resource, or address containing a subdomain." -#: ../src/config.py:2127 +#: ../src/config.py:2166 #, python-format msgid "Removing %s account" msgstr "%s kontua ezabatzen" -#: ../src/config.py:2144 ../src/roster_window.py:1859 +#: ../src/config.py:2183 +#: ../src/roster_window.py:1857 msgid "Password Required" msgstr "Pasahitza behar da" -#: ../src/config.py:2145 ../src/roster_window.py:1860 +#: ../src/config.py:2184 +#: ../src/roster_window.py:1858 #, python-format msgid "Enter your password for account %s" msgstr "%s kontuaren pasahitza sartu" -#: ../src/config.py:2146 ../src/roster_window.py:1861 +#: ../src/config.py:2185 +#: ../src/roster_window.py:1859 msgid "Save password" msgstr "Gorde pasahitza" -#: ../src/config.py:2159 +#: ../src/config.py:2198 #, python-format msgid "Account \"%s\" is connected to the server" msgstr "\"%s\" kontua zerbitzarira konektatu da" -#: ../src/config.py:2160 +#: ../src/config.py:2199 msgid "If you remove it, the connection will be lost." msgstr "Hau ezabatzen baduzu, konexioa galdu egingo da." -#: ../src/config.py:2295 +#: ../src/config.py:2282 +msgid "Enter and leave only" +msgstr "Sarrerak eta irteerak bakarrik" + +#: ../src/config.py:2352 msgid "New Room" msgstr "Gela Berria" -#: ../src/config.py:2326 +#: ../src/config.py:2383 msgid "This bookmark has invalid data" msgstr "Talde agenda honek datu-banku baliogabea du" -#: ../src/config.py:2327 -msgid "" -"Please be sure to fill out server and room fields or remove this bookmark." -msgstr "" -"Mesedez ziurtatu ezazu zerbitzariaren eta gelaren informazioa betetzeaz edo " -"talde agenda hau ezabatzeaz" +#: ../src/config.py:2384 +msgid "Please be sure to fill out server and room fields or remove this bookmark." +msgstr "Mesedez ziurtatu ezazu zerbitzariaren eta gelaren informazioa betetzeaz edo talde agenda hau ezabatzeaz" -#: ../src/config.py:2564 +#: ../src/config.py:2638 msgid "Invalid username" msgstr "Baliogabeko izena" -#: ../src/config.py:2565 +#: ../src/config.py:2639 msgid "You must provide a username to configure this account." msgstr "Izen bat sartu behar duzu kontu bat sortzeko." -#: ../src/config.py:2574 ../src/dialogs.py:1036 +#: ../src/config.py:2648 +#: ../src/dialogs.py:1118 msgid "Invalid password" msgstr "Pasahitz baliogabea" -#: ../src/config.py:2575 +#: ../src/config.py:2649 msgid "You must enter a password for the new account." msgstr "Kontu berrirako pasahitz bat sartu behar duzu." -#: ../src/config.py:2579 ../src/dialogs.py:1041 +#: ../src/config.py:2653 +#: ../src/dialogs.py:1123 msgid "Passwords do not match" msgstr "Pasahitzak desberdinak dira" -#: ../src/config.py:2580 ../src/dialogs.py:1042 +#: ../src/config.py:2654 +#: ../src/dialogs.py:1124 msgid "The passwords typed in both fields must be identical." msgstr "Bi lekuetan pasahitza berdina izan behar du." -#: ../src/config.py:2599 +#: ../src/config.py:2673 msgid "Duplicate Jabber ID" msgstr "Bikoiztutako Jabber ID " -#: ../src/config.py:2600 +#: ../src/config.py:2674 msgid "This account is already configured in Gajim." msgstr "Kontaktu hau dagoeneko Gajim-en konfiguratua dago." -#: ../src/config.py:2617 +#: ../src/config.py:2691 msgid "Account has been added successfully" msgstr "Kontua egoki sartua izan da" -#: ../src/config.py:2618 ../src/config.py:2651 -msgid "" -"You can set advanced account options by pressing Advanced button, or later " -"by clicking in Accounts menuitem under Edit menu from the main window." +#: ../src/config.py:2692 +#: ../src/config.py:2725 +msgid "You can set advanced account options by pressing Advanced button, or later by clicking in Accounts menuitem under Edit menu from the main window." msgstr "Kontuko aukera aurreratuak ezarri ditzakezu Aurreratu botoila sakatuz." -#: ../src/config.py:2650 +#: ../src/config.py:2724 msgid "Your new account has been created successfully" msgstr "Zure kontu berria egoki sortua izan da." -#: ../src/config.py:2666 +#: ../src/config.py:2740 msgid "An error occured during account creation" msgstr "Errore bat gertatu da kontua sortzen zen bitartean" -#: ../src/config.py:2723 +#: ../src/config.py:2797 msgid "Account name is in use" msgstr "Kontu izena erabiltzen ari da" -#: ../src/config.py:2724 +#: ../src/config.py:2798 msgid "You already have an account using this name." msgstr "Jadanik baduzu kontu izen hau erabilgarri." -#: ../src/conversation_textview.py:182 -msgid "" -"Text below this line is what has been said since the last time you paid " -"attention to this group chat" +#: ../src/conversation_textview.py:205 +msgid "Text below this line is what has been said since the last time you paid attention to this group chat" msgstr "Beheko testua adi zeuden azken uneko txat taldeko mezuak dira" -#: ../src/conversation_textview.py:239 +#: ../src/conversation_textview.py:263 #, python-format msgid "Actions for \"%s\"" msgstr "\"%s\" -rako aukerak" -#: ../src/conversation_textview.py:251 +#: ../src/conversation_textview.py:275 msgid "Read _Wikipedia Article" msgstr "Irakurri _Wikipedia Artikuloa" -#: ../src/conversation_textview.py:255 +#: ../src/conversation_textview.py:280 msgid "Look it up in _Dictionary" msgstr "Bila Ezazu _Hiztegian" #. we must have %s in the url if not WIKTIONARY -#: ../src/conversation_textview.py:270 +#: ../src/conversation_textview.py:296 #, python-format msgid "Dictionary URL is missing an \"%s\" and it is not WIKTIONARY" msgstr "URL hiztegia galdu egin da \"%s\" -an eta ez dago WIKTIONARY-an" #. we must have %s in the url -#: ../src/conversation_textview.py:281 +#: ../src/conversation_textview.py:308 #, python-format msgid "Web Search URL is missing an \"%s\"" msgstr "URL bilatzailea ez da aurkizten \"%s\" -an" -#: ../src/conversation_textview.py:284 +#: ../src/conversation_textview.py:311 msgid "Web _Search for it" msgstr "Web _Bilaketa " -#: ../src/conversation_textview.py:574 +#: ../src/conversation_textview.py:607 msgid "Yesterday" msgstr "Atzo" #. the number is >= 2 #. %i is day in year (1-365), %d (1-31) we want %i -#: ../src/conversation_textview.py:578 +#: ../src/conversation_textview.py:611 #, python-format msgid "%i days ago" msgstr "%i egun lehenago" #. if we have subject, show it too! -#: ../src/conversation_textview.py:634 +#: ../src/conversation_textview.py:686 #, python-format msgid "Subject: %s\n" msgstr "Gaia: %s\n" #. only say that to non Windows users -#: ../src/dbus_support.py:34 +#: ../src/dbus_support.py:32 msgid "D-Bus python bindings are missing in this computer" msgstr "D-Bus python bindings are missing in this computer" -#: ../src/dbus_support.py:35 +#: ../src/dbus_support.py:33 msgid "D-Bus capabilities of Gajim cannot be used" msgstr "Gajim-en D-Bus gaitasun funtzioa ezin da erabili" -#: ../src/dialogs.py:64 +#: ../src/dialogs.py:55 #, python-format msgid "Contact's name: %s" msgstr "Kontaktuaren izena: %s" -#: ../src/dialogs.py:66 +#: ../src/dialogs.py:57 #, python-format msgid "JID: %s" msgstr "JID: %s" -#: ../src/dialogs.py:169 +#. Group name +#. In group boolean +#: ../src/dialogs.py:173 msgid "Group" msgstr "Taldea" -#: ../src/dialogs.py:176 +#: ../src/dialogs.py:180 msgid "In the group" msgstr "Taldean" -#: ../src/dialogs.py:226 +#: ../src/dialogs.py:230 msgid "KeyID" msgstr "ID kodea" -#: ../src/dialogs.py:229 +#: ../src/dialogs.py:233 msgid "Contact name" msgstr "Kontaturen izena" -#: ../src/dialogs.py:263 +#: ../src/dialogs.py:266 #, python-format msgid "%s Status Message" msgstr "%s Egoera Mezua" -#: ../src/dialogs.py:265 +#: ../src/dialogs.py:268 msgid "Status Message" msgstr "Egoera Mezua" -#: ../src/dialogs.py:340 +#: ../src/dialogs.py:343 msgid "Save as Preset Status Message" msgstr "Aurrez Ezarritako Mezua Jarri" -#: ../src/dialogs.py:341 +#: ../src/dialogs.py:344 msgid "Please type a name for this status message" msgstr "Mesedez ezarri izen bat egoera mezu honetarako" -#: ../src/dialogs.py:369 +#: ../src/dialogs.py:391 #, python-format msgid "Please fill in the data of the contact you want to add in account %s" -msgstr "" -"Mesedez bete sartu nahi duzun kontaktuaren informazioa %s kontuan sartzeko" +msgstr "Mesedez ezarri sartu nahi duzun kontaktuaren informazioa %s kontuarako" -#: ../src/dialogs.py:371 +#: ../src/dialogs.py:393 msgid "Please fill in the data of the contact you want to add" msgstr "Mesedez bete sartu nahi duzun kontaktuaren informazioa" -#. the user can be in mutiple groups, see in all of them -#: ../src/dialogs.py:380 ../src/disco.py:118 ../src/disco.py:119 -#: ../src/disco.py:1258 ../src/roster_window.py:214 -#: ../src/roster_window.py:275 ../src/roster_window.py:310 -#: ../src/roster_window.py:330 ../src/roster_window.py:354 -#: ../src/roster_window.py:2940 ../src/roster_window.py:2942 -#: ../src/systray.py:291 ../src/common/helpers.py:42 +#: ../src/dialogs.py:403 +#: ../src/disco.py:109 +#: ../src/disco.py:110 +#: ../src/disco.py:1249 +#: ../src/roster_window.py:207 +#: ../src/roster_window.py:273 +#: ../src/roster_window.py:309 +#: ../src/roster_window.py:329 +#: ../src/roster_window.py:353 +#: ../src/roster_window.py:2973 +#: ../src/roster_window.py:2975 +#: ../src/common/helpers.py:39 msgid "Transports" msgstr "Transportea" -#: ../src/dialogs.py:452 ../src/dialogs.py:458 +#: ../src/dialogs.py:493 +#: ../src/dialogs.py:499 msgid "Invalid User ID" msgstr "Bezero ID Baliogabea" -#: ../src/dialogs.py:459 +#: ../src/dialogs.py:500 msgid "The user ID must not contain a resource." msgstr "ID erabiltzaileak ez du baliabiderik eraman behar." -#: ../src/dialogs.py:466 +#: ../src/dialogs.py:513 msgid "Contact already in roster" msgstr "Kontaktua jadanik badago zerrendan" -#: ../src/dialogs.py:467 +#: ../src/dialogs.py:514 msgid "This contact is already listed in your roster." msgstr "Kontaktu hau zure zerrendan dago ezarria jadanik." -#: ../src/dialogs.py:528 +#: ../src/dialogs.py:576 msgid "A GTK+ jabber client" msgstr "GTK+ jabber bezeroa" -#: ../src/dialogs.py:539 +#: ../src/dialogs.py:577 +msgid "GTK+ Version:" +msgstr "GTK+ Bertsioa:" + +#: ../src/dialogs.py:578 +msgid "PyGTK Version:" +msgstr "PyGTK Bertsioa:" + +#: ../src/dialogs.py:586 +msgid "Current Developers:" +msgstr "Egungo diseinatzaileak: " + +#: ../src/dialogs.py:588 msgid "Past Developers:" msgstr "Aurre diseinatzaileak: " -#: ../src/dialogs.py:543 +#: ../src/dialogs.py:592 msgid "THANKS:" msgstr "ESKERRAK:" -#. remove one english setence +#. remove one english sentence #. and add it manually as translatable -#: ../src/dialogs.py:550 +#: ../src/dialogs.py:598 msgid "Last but not least, we would like to thank all the package maintainers." msgstr "" "Azkenak baina ez gutxien merezitakoak,\n" -"eskerrak eman nahi diegu paketeak mantentzen dituztenei." +"eskerrak eman nahi dzkiegu paketeak mantentzen dituztenei." #. here you write your name in the form Name FamilyName -#: ../src/dialogs.py:564 +#: ../src/dialogs.py:612 msgid "translator-credits" msgstr "Urtzi Alfaro " -#: ../src/dialogs.py:826 +#: ../src/dialogs.py:738 +#, python-format +msgid "Unable to bind to port %s." +msgstr "Unable to bind to port %s." + +#: ../src/dialogs.py:739 +msgid "Maybe you have another running instance of Gajim. File Transfer will be canceled." +msgstr "Beharbada beste Gajim prozesu bat abiarazita duzu. Fitxero transferentzia bertan behera utziko da." + +#: ../src/dialogs.py:881 #, python-format msgid "Subscription request for account %s from %s" msgstr "Harpidetza baimena %s kontutik %s kontura" -#: ../src/dialogs.py:829 +#: ../src/dialogs.py:884 #, python-format msgid "Subscription request from %s" msgstr "Harpidetza baimena %s kontutik" -#: ../src/dialogs.py:872 +#: ../src/dialogs.py:926 msgid "You can not join a group chat unless you are connected." msgstr "Ezin duzu txat talde batera sartu konektatuta ez zauden bitartean." -#: ../src/dialogs.py:885 +#: ../src/dialogs.py:939 #, python-format msgid "Join Group Chat with account %s" msgstr "Txat Taldera Sartu %s kontuarekin" -#: ../src/dialogs.py:887 ../src/gtkgui.glade.h:177 -msgid "Join Group Chat" -msgstr "Txat Taldean Sartu" - -#: ../src/dialogs.py:976 +#: ../src/dialogs.py:1030 msgid "Invalid room or server name" msgstr "Baliogabeko gela edo zerbitzari izena" -#: ../src/dialogs.py:977 +#: ../src/dialogs.py:1031 msgid "The room name or server name has not allowed characters." msgstr "Gela izenak edo zerbitzariak ez du onartzen karaktererik." -#: ../src/dialogs.py:996 +#: ../src/dialogs.py:1050 #, python-format msgid "Start Chat with account %s" msgstr "Elkarrizketa Hasi %s kontuarekin" -#: ../src/dialogs.py:998 +#: ../src/dialogs.py:1052 msgid "Start Chat" msgstr "Elkarrizketa Hasi" -#: ../src/dialogs.py:999 +#: ../src/dialogs.py:1053 msgid "" -"Fill in the contact ID of the contact you would like\n" +"Fill in the jid, or nick of the contact you would like\n" "to send a chat message to:" msgstr "" -"Txat mezu bat bidali nahi diozun kontaktuaren\n" -"kontaktu ID-a ezarri:" +"Idatzi mezua bidali nahi diozun\n" +"kontaktuaren jid-a edota izengoitia:" #. if offline or connecting -#: ../src/dialogs.py:1007 ../src/dialogs.py:1330 ../src/dialogs.py:1450 +#: ../src/dialogs.py:1078 +#: ../src/dialogs.py:1427 +#: ../src/dialogs.py:1551 msgid "Connection not available" msgstr "Konexioa ez erablgarri" -#: ../src/dialogs.py:1008 ../src/dialogs.py:1331 ../src/dialogs.py:1451 +#: ../src/dialogs.py:1079 +#: ../src/dialogs.py:1428 +#: ../src/dialogs.py:1552 #, python-format msgid "Please make sure you are connected with \"%s\"." -msgstr "Mesedez begiratu \"%s\" -rekin konektatua zauden." +msgstr "Mesedez begiratu \"%s\" -rekin konektatuta zauden." -#: ../src/dialogs.py:1018 +#: ../src/dialogs.py:1088 +#: ../src/dialogs.py:1091 +msgid "Invalid JID" +msgstr "JID Baliogabea" + +#: ../src/dialogs.py:1091 +#, python-format +msgid "Unable to parse \"%s\"." +msgstr "Unable to parse \"%s\"." + +#: ../src/dialogs.py:1100 msgid "Without a connection, you can not change your password." msgstr "Konexiorik gabe, ezin duzu zure pasahitza aldatu." -#: ../src/dialogs.py:1037 +#: ../src/dialogs.py:1119 msgid "You must enter a password." msgstr "Pasahitza sartu behar duzu." #. img to display #. default value -#: ../src/dialogs.py:1083 ../src/gajim.py:443 ../src/notify.py:129 +#: ../src/dialogs.py:1165 +#: ../src/notify.py:126 +#: ../src/notify.py:268 msgid "Contact Signed In" msgstr "Kontaktua konektatuta" -#: ../src/dialogs.py:1085 ../src/gajim.py:474 ../src/notify.py:131 +#: ../src/dialogs.py:1167 +#: ../src/notify.py:134 +#: ../src/notify.py:270 msgid "Contact Signed Out" msgstr "Kontaktua deskonektatuta" #. chat message -#: ../src/dialogs.py:1087 ../src/gajim.py:609 ../src/notify.py:133 +#: ../src/dialogs.py:1169 +#: ../src/notify.py:154 +#: ../src/notify.py:272 msgid "New Message" msgstr "Mezu Berria Bat" #. single message -#: ../src/dialogs.py:1087 ../src/gajim.py:603 ../src/notify.py:133 +#: ../src/dialogs.py:1169 +#: ../src/notify.py:138 +#: ../src/notify.py:272 msgid "New Single Message" msgstr "Mezu Berri Bat" -#: ../src/dialogs.py:1088 ../src/gajim.py:586 ../src/notify.py:134 +#. private message +#: ../src/dialogs.py:1170 +#: ../src/notify.py:145 +#: ../src/notify.py:273 msgid "New Private Message" msgstr "Mezu Pribatu Berri Bat" -#: ../src/dialogs.py:1088 ../src/gajim.py:1049 ../src/notify.py:142 +#: ../src/dialogs.py:1170 +#: ../src/gajim.py:1044 +#: ../src/notify.py:281 msgid "New E-mail" -msgstr "E-Mai Berria" +msgstr "E-Posta Berria" -#: ../src/dialogs.py:1090 ../src/gajim.py:1187 ../src/notify.py:136 +#: ../src/dialogs.py:1172 +#: ../src/gajim.py:1187 +#: ../src/notify.py:275 msgid "File Transfer Request" msgstr "Fitxeroa Transferitzeko Baimena" -#: ../src/dialogs.py:1092 ../src/gajim.py:1035 ../src/gajim.py:1164 -#: ../src/notify.py:138 +#: ../src/dialogs.py:1174 +#: ../src/gajim.py:1022 +#: ../src/gajim.py:1164 +#: ../src/notify.py:277 msgid "File Transfer Error" msgstr "Fitxero Transferitze Errorea" -#: ../src/dialogs.py:1094 ../src/gajim.py:1222 ../src/gajim.py:1244 -#: ../src/gajim.py:1261 ../src/notify.py:140 +#: ../src/dialogs.py:1176 +#: ../src/gajim.py:1222 +#: ../src/gajim.py:1244 +#: ../src/gajim.py:1261 +#: ../src/notify.py:279 msgid "File Transfer Completed" msgstr "Fitxero Transferitzea Egina" -#: ../src/dialogs.py:1095 ../src/gajim.py:1225 ../src/notify.py:140 +#: ../src/dialogs.py:1177 +#: ../src/gajim.py:1225 +#: ../src/notify.py:279 msgid "File Transfer Stopped" msgstr "Fitxero Transferentzia Gelditua" -#: ../src/dialogs.py:1097 ../src/gajim.py:953 ../src/notify.py:144 +#: ../src/dialogs.py:1179 +#: ../src/gajim.py:920 +#: ../src/notify.py:283 msgid "Groupchat Invitation" msgstr "Txat Taldeko Gonbidapena" +#: ../src/dialogs.py:1181 +#: ../src/notify.py:118 +#: ../src/notify.py:285 +msgid "Contact Changed Status" +msgstr "Kontaktu Egoera Aldaketa" + #. FIXME: for Received with should become 'in' -#: ../src/dialogs.py:1262 +#: ../src/dialogs.py:1359 #, python-format msgid "Single Message with account %s" msgstr "Mezu Bakarra %s Kontuarekin" -#: ../src/dialogs.py:1264 +#: ../src/dialogs.py:1361 msgid "Single Message" msgstr "Mezu Bakarra" #. prepare UI for Sending -#: ../src/dialogs.py:1267 +#: ../src/dialogs.py:1364 #, python-format msgid "Send %s" msgstr "Bidali %s" #. prepare UI for Receiving -#: ../src/dialogs.py:1290 +#: ../src/dialogs.py:1387 #, python-format msgid "Received %s" msgstr "Jasoa %s" #. we create a new blank window to send and we preset RE: and to jid -#: ../src/dialogs.py:1355 +#: ../src/dialogs.py:1454 #, python-format msgid "RE: %s" msgstr "RE: %s" -#: ../src/dialogs.py:1356 +#: ../src/dialogs.py:1455 #, python-format msgid "%s wrote:\n" msgstr "%s idatzia:\n" -#: ../src/dialogs.py:1400 +#: ../src/dialogs.py:1499 #, python-format msgid "XML Console for %s" msgstr "XML Konsola %s-rena" -#: ../src/dialogs.py:1402 +#: ../src/dialogs.py:1501 msgid "XML Console" msgstr " XML Konsola" +#: ../src/dialogs.py:1620 +#, python-format +msgid "Privacy List %s" +msgstr "Debekatze Zerrenda %s" + +#: ../src/dialogs.py:1624 +#, python-format +msgid "Privacy List for %s" +msgstr "Debekatze Zerrenda %s-entzat" + +#: ../src/dialogs.py:1716 +msgid "Edit a rule" +msgstr "Arau bat editatu" + +#: ../src/dialogs.py:1801 +msgid "Add a rule" +msgstr "Ezarri Araua" + +#: ../src/dialogs.py:1897 +#, python-format +msgid "Privacy Lists for %s" +msgstr "Debekatze Zerrenda %s-entzat" + +#: ../src/dialogs.py:1899 +msgid "Privacy Lists" +msgstr "Debekatze Zerrenda" + #. FIXME: use nickname instead of contact_jid -#: ../src/dialogs.py:1488 +#: ../src/dialogs.py:1988 #, python-format msgid "%(contact_jid)s has invited you to %(room_jid)s room" msgstr "%(contact_jid)s -ek %(room_jid)s gelara gonbidatu zaitu" #. only if not None and not '' -#: ../src/dialogs.py:1494 +#: ../src/dialogs.py:1994 #, python-format msgid "Comment: %s" msgstr "Azalpenak: %s" -#: ../src/dialogs.py:1554 +#: ../src/dialogs.py:2054 msgid "Choose Sound" msgstr "Aukeratu Soinua" -#: ../src/dialogs.py:1564 ../src/dialogs.py:1607 +#: ../src/dialogs.py:2064 +#: ../src/dialogs.py:2107 msgid "All files" msgstr "Fitxategi guztiak" -#: ../src/dialogs.py:1569 +#: ../src/dialogs.py:2069 msgid "Wav Sounds" msgstr "Wav Soinuak" -#: ../src/dialogs.py:1597 +#: ../src/dialogs.py:2097 msgid "Choose Image" msgstr "Aukeratu Irudia" -#: ../src/dialogs.py:1612 +#: ../src/dialogs.py:2112 msgid "Images" msgstr "Irudiak" -#: ../src/dialogs.py:1658 +#: ../src/dialogs.py:2157 #, python-format msgid "When %s becomes:" msgstr "%s bihurtzen denean:" -#: ../src/dialogs.py:1660 +#: ../src/dialogs.py:2159 #, python-format msgid "Adding Special Notification for %s" msgstr "Jakinarazketa Berezia Gehitzen %s-entzat" -#: ../src/disco.py:117 +#: ../src/dialogs.py:2232 +msgid "Condition" +msgstr "Condition" + +#: ../src/disco.py:108 msgid "Others" msgstr "Besteak" #. conference is a category for listing mostly groupchats in service discovery -#: ../src/disco.py:121 +#: ../src/disco.py:112 msgid "Conference" msgstr "Solasaldiak" -#: ../src/disco.py:420 +#: ../src/disco.py:411 msgid "Without a connection, you can not browse available services" msgstr "Konektatu gabe ezin duzu zerbitzari erabilgarriak bilatu" -#: ../src/disco.py:499 +#: ../src/disco.py:490 #, python-format msgid "Service Discovery using account %s" msgstr "Zerbitzaria Aurkitua %s kontua erabiliz" -#: ../src/disco.py:500 +#: ../src/disco.py:491 msgid "Service Discovery" msgstr "Zerbitzua Aurkitua" -#: ../src/disco.py:637 +#: ../src/disco.py:628 msgid "The service could not be found" msgstr "Zerbitzua ezin izan da aurkitu" -#: ../src/disco.py:638 -msgid "" -"There is no service at the address you entered, or it is not responding. " -"Check the address and try again." -msgstr "" -"Ez dago zerbitzurik zuk sartu duzun helbidean edo ez du erantzuten. Begiratu " -"helbidea eta saiatu berriro." +#: ../src/disco.py:629 +msgid "There is no service at the address you entered, or it is not responding. Check the address and try again." +msgstr "Ez dago zerbitzurik zuk sartu duzun helbidean edo ez du erantzuten. Begiratu helbidea eta saiatu berriro." -#: ../src/disco.py:642 ../src/disco.py:924 +#: ../src/disco.py:633 +#: ../src/disco.py:915 msgid "The service is not browsable" msgstr "Zerbitzua erabilezina" -#: ../src/disco.py:643 +#: ../src/disco.py:634 msgid "This type of service does not contain any items to browse." msgstr "Zerbitzari honek ez du menurik begiratzeko." -#: ../src/disco.py:723 +#: ../src/disco.py:714 #, python-format msgid "Browsing %s using account %s" msgstr "Begiratzen %s %s kontua erabiliz" -#: ../src/disco.py:762 +#: ../src/disco.py:753 msgid "_Browse" msgstr "_Bilatu" -#: ../src/disco.py:925 +#: ../src/disco.py:916 msgid "This service does not contain any items to browse." msgstr "Zerbitzari honek ez du begiratzeko menurik." -#: ../src/disco.py:1146 ../src/disco.py:1263 +#: ../src/disco.py:1137 +#: ../src/disco.py:1254 msgid "Re_gister" msgstr "Erre_gistratu" -#: ../src/disco.py:1154 ../src/disco.py:1516 ../src/gtkgui.glade.h:350 -msgid "_Join" -msgstr "_Sartu" - -#: ../src/disco.py:1261 ../src/gtkgui.glade.h:334 ../src/roster_window.py:1462 -msgid "_Edit" -msgstr "_Editatu" - -#: ../src/disco.py:1300 +#: ../src/disco.py:1291 #, python-format msgid "Scanning %d / %d.." msgstr "Eskaneatzen %d / %d.." #. Users column -#: ../src/disco.py:1482 +#: ../src/disco.py:1473 msgid "Users" msgstr "Erabiltzaileak" #. Description column -#: ../src/disco.py:1489 +#: ../src/disco.py:1480 msgid "Description" msgstr "Deskribapena" -#: ../src/filetransfers_window.py:81 +#: ../src/filetransfers_window.py:72 msgid "File" msgstr "Fitxeroa" -#: ../src/filetransfers_window.py:96 +#: ../src/filetransfers_window.py:87 msgid "Time" msgstr "Denbora" -#: ../src/filetransfers_window.py:108 +#: ../src/filetransfers_window.py:99 msgid "Progress" msgstr "Prozesua" -#: ../src/filetransfers_window.py:176 ../src/filetransfers_window.py:238 +#: ../src/filetransfers_window.py:163 +#: ../src/filetransfers_window.py:223 #, python-format msgid "Filename: %s" msgstr "Fitxeroaren izena: %s" -#: ../src/filetransfers_window.py:178 ../src/filetransfers_window.py:308 +#: ../src/filetransfers_window.py:164 +#: ../src/filetransfers_window.py:291 #, python-format msgid "Size: %s" msgstr "Tamaina: %s" #. You is a reply of who sent a file #. You is a reply of who received a file -#: ../src/filetransfers_window.py:187 ../src/filetransfers_window.py:197 -#: ../src/history_manager.py:452 +#: ../src/filetransfers_window.py:173 +#: ../src/filetransfers_window.py:183 +#: ../src/history_manager.py:454 msgid "You" msgstr "Zu" -#: ../src/filetransfers_window.py:188 ../src/filetransfers_window.py:240 +#: ../src/filetransfers_window.py:174 +#: ../src/filetransfers_window.py:224 #, python-format msgid "Sender: %s" msgstr "Bidaltzaile: %s" -#: ../src/filetransfers_window.py:189 ../src/filetransfers_window.py:555 -#: ../src/tooltips.py:617 +#: ../src/filetransfers_window.py:175 +#: ../src/filetransfers_window.py:556 +#: ../src/tooltips.py:639 msgid "Recipient: " msgstr "Hartzailea: " -#: ../src/filetransfers_window.py:200 +#: ../src/filetransfers_window.py:186 #, python-format msgid "Saved in: %s" msgstr "%s gordea" -#: ../src/filetransfers_window.py:203 +#: ../src/filetransfers_window.py:188 msgid "File transfer completed" msgstr "Fitxero transferentzia osatua" -#: ../src/filetransfers_window.py:205 ../src/gtkgui.glade.h:366 -msgid "_Open Containing Folder" -msgstr "_Ireki Fitxeroaren Edukia" - -#: ../src/filetransfers_window.py:219 ../src/filetransfers_window.py:227 +#: ../src/filetransfers_window.py:204 +#: ../src/filetransfers_window.py:212 msgid "File transfer canceled" msgstr "Fitxero transferentzia ezeztatua" -#: ../src/filetransfers_window.py:219 ../src/filetransfers_window.py:228 +#: ../src/filetransfers_window.py:204 +#: ../src/filetransfers_window.py:213 msgid "Connection with peer cannot be established." msgstr "Connection with peer cannot be established." -#: ../src/filetransfers_window.py:242 +#: ../src/filetransfers_window.py:225 msgid "File transfer stopped by the contact of the other side" msgstr "Fitxero transferentzia gelditua beste kontaktuarengatik" -#: ../src/filetransfers_window.py:259 +#: ../src/filetransfers_window.py:242 msgid "Choose File to Send..." msgstr "Aukeratu Bidaltzeko Fitxeroa..." -#. Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector) -#: ../src/filetransfers_window.py:266 ../src/gtkgui.glade.h:390 -msgid "_Send" -msgstr "_Bidali" - -#: ../src/filetransfers_window.py:273 +#: ../src/filetransfers_window.py:256 msgid "Gajim cannot access this file" msgstr "Gajim-ek ezin du fitxero honetan sartu." -#: ../src/filetransfers_window.py:274 +#: ../src/filetransfers_window.py:257 msgid "This file is being used by another process." msgstr "Beste prozesu batek erabiltzen du orain fitxero hau." -#: ../src/filetransfers_window.py:306 +#: ../src/filetransfers_window.py:289 #, python-format msgid "File: %s" msgstr "Fitxeroa: %s" -#: ../src/filetransfers_window.py:311 +#: ../src/filetransfers_window.py:294 #, python-format msgid "Type: %s" msgstr "Mota: %s" -#: ../src/filetransfers_window.py:313 +#: ../src/filetransfers_window.py:296 #, python-format msgid "Description: %s" msgstr "Deskribapena: %s" -#: ../src/filetransfers_window.py:314 +#: ../src/filetransfers_window.py:297 #, python-format msgid "%s wants to send you a file:" msgstr "%s fitxero bat bidali nahi dizu:" -#: ../src/filetransfers_window.py:329 +#: ../src/filetransfers_window.py:311 +#, python-format +msgid "Cannot overwrite existing file \"%s\"" +msgstr "Ezin izan da gainarazi \"%s\" fitxeroa" + +#: ../src/filetransfers_window.py:312 +msgid "A file with this name already exists and you do not have permission to overwrite it." +msgstr "Izen honekin dagoeneko badago fitxerorik eta ez duzu baimenik gainarazteko." + +#: ../src/filetransfers_window.py:319 +#: ../src/gtkgui_helpers.py:685 msgid "This file already exists" msgstr "Fitxero hau jadanik badago" -#: ../src/filetransfers_window.py:329 +#: ../src/filetransfers_window.py:319 +#: ../src/gtkgui_helpers.py:685 msgid "What do you want to do?" msgstr "Zer nahi duzu egitea?" -#: ../src/filetransfers_window.py:344 +#: ../src/filetransfers_window.py:331 +#, python-format +msgid "Directory \"%s\" is not writable" +msgstr "\"%s\" kokapena ez da idazgarria" + +#: ../src/filetransfers_window.py:331 +msgid "You do not have permission to create files in this directory." +msgstr "Ez duzu baimenik kokapen honetan fitxerorik sortzeko." + +#: ../src/filetransfers_window.py:341 msgid "Save File as..." msgstr "Gorde Bezala..." #. Print remaining time in format 00:00:00 #. You can change the places of (hours), (minutes), (seconds) - #. they are not translatable. -#: ../src/filetransfers_window.py:419 +#: ../src/filetransfers_window.py:420 #, python-format msgid "%(hours)02.d:%(minutes)02.d:%(seconds)02.d" msgstr "%(hours)02.d:%(minutes)02.d:%(seconds)02.d" @@ -1091,29 +3139,32 @@ msgstr "%(hours)02.d:%(minutes)02.d:%(seconds)02.d" #. This should make the string Kb/s, #. where 'Kb' part is taken from %s. #. Only the 's' after / (which means second) should be translated. -#: ../src/filetransfers_window.py:491 +#: ../src/filetransfers_window.py:492 #, python-format msgid "(%(filesize_unit)s/s)" msgstr "(%(filesize_unit)s/s)" -#: ../src/filetransfers_window.py:527 ../src/filetransfers_window.py:530 +#: ../src/filetransfers_window.py:528 +#: ../src/filetransfers_window.py:531 msgid "Invalid File" msgstr "Fitxero Baliogabea" -#: ../src/filetransfers_window.py:527 +#: ../src/filetransfers_window.py:528 msgid "File: " msgstr "Fitxeroa:" -#: ../src/filetransfers_window.py:531 +#: ../src/filetransfers_window.py:532 msgid "It is not possible to send empty files" msgstr "Ez da posible hutsik dauden artxiboak bidaltzea" -#: ../src/filetransfers_window.py:551 ../src/tooltips.py:498 -#: ../src/tooltips.py:607 +#: ../src/filetransfers_window.py:552 +#: ../src/tooltips.py:511 +#: ../src/tooltips.py:629 msgid "Name: " msgstr "Izena: " -#: ../src/filetransfers_window.py:553 ../src/tooltips.py:611 +#: ../src/filetransfers_window.py:554 +#: ../src/tooltips.py:633 msgid "Sender: " msgstr "Bidaltzailea: " @@ -1121,222 +3172,242 @@ msgstr "Bidaltzailea: " msgid "Pause" msgstr "Etena" -#: ../src/filetransfers_window.py:753 ../src/gtkgui.glade.h:328 -msgid "_Continue" -msgstr "_Jarraitu" - -#: ../src/gajim-remote.py:84 +#: ../src/gajim-remote.py:82 msgid "shows a help on specific command" msgstr "shows a help on specific command" #. User gets help for the command, specified by this parameter -#: ../src/gajim-remote.py:87 +#: ../src/gajim-remote.py:85 msgid "command" msgstr "command" -#: ../src/gajim-remote.py:88 +#: ../src/gajim-remote.py:86 msgid "show help on command" msgstr "show help on command" -#: ../src/gajim-remote.py:92 +#: ../src/gajim-remote.py:90 msgid "Shows or hides the roster window" msgstr "Erakutsi edo ezkutatu zerrenda leihoa" -#: ../src/gajim-remote.py:96 +#: ../src/gajim-remote.py:94 msgid "Popups a window with the next unread message" -msgstr "Popup leihoa hurrengo mezu irakurri gabearekin" +msgstr "Agertarazi leiho bat irakurri gabeko hurrengo mezuarekin" + +#: ../src/gajim-remote.py:98 +msgid "Prints a list of all contacts in the roster. Each contact appear on a separate line" +msgstr "Zerrendan inprimatu kontaktu guztien lista. Kontaktu horiek hainbat lerrotan agertuko dira." #: ../src/gajim-remote.py:100 -msgid "" -"Prints a list of all contacts in the roster. Each contact appear on a " -"separate line" -msgstr "" -"Zerrendan inprimatu kontaktu guztien lista. Kontaktu horiek hainbat lerrotan " -"agertuko dira." - -#: ../src/gajim-remote.py:102 ../src/gajim-remote.py:115 -#: ../src/gajim-remote.py:125 ../src/gajim-remote.py:138 -#: ../src/gajim-remote.py:159 ../src/gajim-remote.py:189 -#: ../src/gajim-remote.py:197 ../src/gajim-remote.py:204 +#: ../src/gajim-remote.py:114 +#: ../src/gajim-remote.py:124 +#: ../src/gajim-remote.py:137 +#: ../src/gajim-remote.py:151 +#: ../src/gajim-remote.py:172 +#: ../src/gajim-remote.py:202 #: ../src/gajim-remote.py:211 +#: ../src/gajim-remote.py:218 +#: ../src/gajim-remote.py:225 +#: ../src/gajim-remote.py:236 msgid "account" msgstr "kontua" -#: ../src/gajim-remote.py:102 +#: ../src/gajim-remote.py:100 msgid "show only contacts of the given account" msgstr "Ikusi emandako kontaktuak bakarrik" -#: ../src/gajim-remote.py:107 +#: ../src/gajim-remote.py:105 msgid "Prints a list of registered accounts" msgstr "Inprimatu erregistratutako kontuen lista" -#: ../src/gajim-remote.py:111 +#: ../src/gajim-remote.py:109 msgid "Changes the status of account or accounts" msgstr "Aldatu kontaktuaren edo kontaktuen egoera" -#: ../src/gajim-remote.py:113 +#. offline, online, chat, away, xa, dnd, invisible should not be translated +#: ../src/gajim-remote.py:112 msgid "status" msgstr "egoera" -#: ../src/gajim-remote.py:113 +#: ../src/gajim-remote.py:112 msgid "one of: offline, online, chat, away, xa, dnd, invisible " msgstr "hauetako bat: offline, online, chat, away, xa, dnd, invisible " -#: ../src/gajim-remote.py:114 ../src/gajim-remote.py:135 +#: ../src/gajim-remote.py:113 +#: ../src/gajim-remote.py:134 +#: ../src/gajim-remote.py:148 msgid "message" msgstr "mezua" -#: ../src/gajim-remote.py:114 +#: ../src/gajim-remote.py:113 msgid "status message" msgstr "egoera mezua" -#: ../src/gajim-remote.py:115 -msgid "" -"change status of account \"account\". If not specified, try to change status " -"of all accounts that have \"sync with global status\" option set" -msgstr "" -"\"kontua\" kontuaren egoera aldatu. Ez badago zehaztua, saiatu " -"\"Sinkronizatu egoera globalarekin\" aukera hautatua duten kontu guztien " -"egoera aldatzen" +#: ../src/gajim-remote.py:114 +msgid "change status of account \"account\". If not specified, try to change status of all accounts that have \"sync with global status\" option set" +msgstr "\"kontua\" kontuaren egoera aldatu. Ez badago zehaztua, saiatu \"Sinkronizatu egoera globalarekin\" aukera hautatua duten kontu guztien egoera aldatzen" -#: ../src/gajim-remote.py:121 +#: ../src/gajim-remote.py:120 msgid "Shows the chat dialog so that you can send messages to a contact" msgstr "Txat leihoa erakutsi, honela, kontaktuari mezua bidali diezaiokezu" -#: ../src/gajim-remote.py:123 +#: ../src/gajim-remote.py:122 msgid "JID of the contact that you want to chat with" msgstr "Txateatu nahi duzun pertsonaren JID-a" -#: ../src/gajim-remote.py:125 ../src/gajim-remote.py:189 +#: ../src/gajim-remote.py:124 +#: ../src/gajim-remote.py:202 msgid "if specified, contact is taken from the contact list of this account" msgstr "hautatua badago, kontaktua kontu honen kontaktu listatik lortuko da." -#: ../src/gajim-remote.py:130 -msgid "" -"Sends new message to a contact in the roster. Both OpenPGP key and account " -"are optional. If you want to set only 'account', without 'OpenPGP key', just " -"set 'OpenPGP key' to ''." -msgstr "" -"Zerrendako kontaktu bati mezu berri bat bidali. Bai OpenPGP kodea eta baita " -"kontua dira aukerazkoak.´Kontua´ bakarrik zehaztu nahi baduzu, ´OpenPGP " -"koderik´ gabe, bakarrik ´OpenPGP kodea´ -entzat zehaztu." +#: ../src/gajim-remote.py:129 +msgid "Sends new chat message to a contact in the roster. Both OpenPGP key and account are optional. If you want to set only 'account', without 'OpenPGP key', just set 'OpenPGP key' to ''." +msgstr "Zerrendako kontaktu bati mezu berri bat bidali. Bai OpenPGP kodea eta baita kontua dira aukerazkoak. `Kontua` bakarrik zehaztu nahi baduzu, `OpenPGP koderik` gabe, bakarrik `OpenPGP kodea` -entzat zehaztu." -#: ../src/gajim-remote.py:134 +#: ../src/gajim-remote.py:133 +#: ../src/gajim-remote.py:146 msgid "JID of the contact that will receive the message" msgstr "Mezua jaso dugun kontuaren JID-a" -#: ../src/gajim-remote.py:135 +#: ../src/gajim-remote.py:134 +#: ../src/gajim-remote.py:148 msgid "message contents" msgstr "mezuaren edukia" -#: ../src/gajim-remote.py:136 +#: ../src/gajim-remote.py:135 +#: ../src/gajim-remote.py:149 msgid "pgp key" msgstr "pgp giltza" -#: ../src/gajim-remote.py:136 +#: ../src/gajim-remote.py:135 +#: ../src/gajim-remote.py:149 msgid "if specified, the message will be encrypted using this public key" msgstr "hautatua badago, kode publikoa erabiliz enkriptatuko da mezua" -#: ../src/gajim-remote.py:138 +#: ../src/gajim-remote.py:137 +#: ../src/gajim-remote.py:151 msgid "if specified, the message will be sent using this account" msgstr "hautatua badago, mezua kontu hau erabiliz bidaliko da" -#: ../src/gajim-remote.py:143 +#: ../src/gajim-remote.py:142 +msgid "Sends new single message to a contact in the roster. Both OpenPGP key and account are optional. If you want to set only 'account', without 'OpenPGP key', just set 'OpenPGP key' to ''." +msgstr "Zerrendako kontaktu bati mezu berri bat bidali. Bai OpenPGP kodea eta baita kontua dira aukerazkoak. `Kontua` bakarrik zehaztu nahi baduzu, `OpenPGP koderik` gabe, bakarrik `OpenPGP kodea` -entzat zehaztu." + +#: ../src/gajim-remote.py:147 +msgid "subject" +msgstr "gaia" + +#: ../src/gajim-remote.py:147 +msgid "message subject" +msgstr "mezuaren gaia" + +#: ../src/gajim-remote.py:156 msgid "Gets detailed info on a contact" msgstr "Kontaktu baten informazioa lortu" -#: ../src/gajim-remote.py:145 ../src/gajim-remote.py:158 -#: ../src/gajim-remote.py:188 +#: ../src/gajim-remote.py:158 +#: ../src/gajim-remote.py:171 +#: ../src/gajim-remote.py:201 +#: ../src/gajim-remote.py:210 msgid "JID of the contact" msgstr "Kontaktuaren JID-a" -#: ../src/gajim-remote.py:149 +#: ../src/gajim-remote.py:162 msgid "Gets detailed info on a account" msgstr "Kontaktu baten informazioa lortu" -#: ../src/gajim-remote.py:151 +#: ../src/gajim-remote.py:164 msgid "Name of the account" msgstr "Kontuaren izena" -#: ../src/gajim-remote.py:155 +#: ../src/gajim-remote.py:168 msgid "Sends file to a contact" msgstr "Fitxero bat bidali kontaktu bati" -#: ../src/gajim-remote.py:157 +#: ../src/gajim-remote.py:170 msgid "file" msgstr "fitxeroa" -#: ../src/gajim-remote.py:157 +#: ../src/gajim-remote.py:170 msgid "File path" msgstr "Fitxeroaren tokia" -#: ../src/gajim-remote.py:159 +#: ../src/gajim-remote.py:172 msgid "if specified, file will be sent using this account" msgstr "Hautatua badago, fitxero hau kontu hau erabiliz bidaliko da" -#: ../src/gajim-remote.py:164 +#: ../src/gajim-remote.py:177 msgid "Lists all preferences and their values" msgstr "Erakutsi preferentzia eta balio guztiak" -#: ../src/gajim-remote.py:168 +#: ../src/gajim-remote.py:181 msgid "Sets value of 'key' to 'value'." msgstr "Sets value of 'key' to 'value'." -#: ../src/gajim-remote.py:170 +#: ../src/gajim-remote.py:183 msgid "key=value" msgstr "key=value" -#: ../src/gajim-remote.py:170 +#: ../src/gajim-remote.py:183 msgid "'key' is the name of the preference, 'value' is the value to set it to" msgstr "'key' is the name of the preference, 'value' is the value to set it to" -#: ../src/gajim-remote.py:175 +#: ../src/gajim-remote.py:188 msgid "Deletes a preference item" msgstr "Preferentziako aukera ezabatu" -#: ../src/gajim-remote.py:177 +#: ../src/gajim-remote.py:190 msgid "key" msgstr "giltza" -#: ../src/gajim-remote.py:177 +#: ../src/gajim-remote.py:190 msgid "name of the preference to be deleted" msgstr "preferentziaren izena borratzeko" -#: ../src/gajim-remote.py:181 +#: ../src/gajim-remote.py:194 msgid "Writes the current state of Gajim preferences to the .config file" msgstr "Gajim-en berezko preferentzien egoera .config fitxategian idatzi" -#: ../src/gajim-remote.py:186 +#: ../src/gajim-remote.py:199 msgid "Removes contact from roster" msgstr "Zerrendatik kontaktua ezabatu" -#: ../src/gajim-remote.py:195 +#: ../src/gajim-remote.py:208 msgid "Adds contact to roster" msgstr "Zerrendara kontaktua sartu" -#: ../src/gajim-remote.py:197 -msgid "Adds new contact to this account." -msgstr "Kontu honetara kontaktu berri bat sartu." +#: ../src/gajim-remote.py:210 +msgid "jid" +msgstr "jid" -#: ../src/gajim-remote.py:202 +#: ../src/gajim-remote.py:211 +msgid "Adds new contact to this account" +msgstr "Sartu kontaktu berria kontu honetara" + +#: ../src/gajim-remote.py:216 msgid "Returns current status (the global one unless account is specified)" msgstr "Oraingo egoera itzuli (Globala, ez badago kontu bat aukeratuta)" -#: ../src/gajim-remote.py:209 -msgid "" -"Returns current status message(the global one unless account is specified)" -msgstr "" -"Oraingo egoera mezua itzuli(Globala aukeratu ez badago kontu bat aukeratuta)" +#: ../src/gajim-remote.py:223 +msgid "Returns current status message(the global one unless account is specified)" +msgstr "Oraingo egoera mezua itzuli(Globala aukeratu ez badago kontu bat aukeratuta)" -#: ../src/gajim-remote.py:216 +#: ../src/gajim-remote.py:230 msgid "Returns number of unreaded messages" msgstr "Irakurri gabeko mezuen kontaketa itzuli" +#: ../src/gajim-remote.py:234 +msgid "Open 'Start Chat' dialog" +msgstr "Ireki 'Txat-a Hasi' leiho" + #: ../src/gajim-remote.py:236 +msgid "Starts chat, using this account" +msgstr "Elkarrizketa hasi, kontu hau rabiliz" + +#: ../src/gajim-remote.py:256 msgid "Missing argument \"contact_jid\"" msgstr "Galdutako argumentua \"contact_jid\"" -#: ../src/gajim-remote.py:255 +#: ../src/gajim-remote.py:275 #, python-format msgid "" "'%s' is not in your roster.\n" @@ -1345,16 +3416,16 @@ msgstr "" "'%s' ez dago zure zerrendan.\n" "Kontua zehaztu mezua bidaltzeko." -#: ../src/gajim-remote.py:258 +#: ../src/gajim-remote.py:278 msgid "You have no active account" msgstr "Ez duzu aktibatutako konturik" -#: ../src/gajim-remote.py:301 +#: ../src/gajim-remote.py:321 #, python-format msgid "Unknown D-Bus version: %s" msgstr "D-Bus bertsioa aurkitugabea: %s" -#: ../src/gajim-remote.py:328 +#: ../src/gajim-remote.py:348 #, python-format msgid "" "Usage: %s %s %s \n" @@ -1363,16 +3434,16 @@ msgstr "" "Usage: %s %s %s \n" "\t %s" -#: ../src/gajim-remote.py:331 +#: ../src/gajim-remote.py:351 msgid "Arguments:" msgstr "Argumentuak:" -#: ../src/gajim-remote.py:335 +#: ../src/gajim-remote.py:355 #, python-format msgid "%s not found" msgstr "%s ez da aurkitu" -#: ../src/gajim-remote.py:339 +#: ../src/gajim-remote.py:359 #, python-format msgid "" "Usage: %s command [arguments]\n" @@ -1381,7 +3452,7 @@ msgstr "" "Usage: %s command [arguments]\n" "Command is one of:\n" -#: ../src/gajim-remote.py:413 +#: ../src/gajim-remote.py:433 #, python-format msgid "" "Argument \"%s\" is not specified. \n" @@ -1416,118 +3487,109 @@ msgstr "GTK+ rutinak ez du libglade sostengatzen" #: ../src/gajim.py:63 #, python-format -msgid "" -"Please remove your current GTK+ runtime and install the latest stable " -"version from %s" -msgstr "" -"GTK+ rutina ezabatu eta instalatu ezazu azken bertsio establea %s hemendik" +msgid "Please remove your current GTK+ runtime and install the latest stable version from %s" +msgstr "GTK+ rutina ezabatu eta instalatu ezazu azken bertsio establea %s hemendik" #: ../src/gajim.py:65 -msgid "" -"Please make sure that GTK+ and PyGTK have libglade support in your system." +msgid "Please make sure that GTK+ and PyGTK have libglade support in your system." msgstr "Konproba ezazu GTK+ eta PyGTK libglade onartzen dutea zure sistemak." #: ../src/gajim.py:70 msgid "Gajim needs PySQLite2 to run" msgstr "Gajim-ek PySQLite2 behar du abiarazteko" -#: ../src/gajim.py:235 +#. set the icon to all newly opened wind +#: ../src/gajim.py:151 +msgid "Gajim is already running" +msgstr "Gajim dagoeneko abiarazi da" + +#: ../src/gajim.py:152 +msgid "" +"Another instance of Gajim seems to be running\n" +"Run anyway?" +msgstr "" +"Beste Gajim prozesu bat abiarazita dagoela dirudi\n" +"Abiarazi dena den?" + +#: ../src/gajim.py:267 #, python-format msgid "HTTP (%s) Authorization for %s (id: %s)" msgstr "HTTP (%s) Autorizazioa %s(id: %s)-entzat" -#: ../src/gajim.py:236 +#: ../src/gajim.py:268 msgid "Do you accept this request?" msgstr "Baimen hau onartzen al duzu?" -#: ../src/gajim.py:438 -#, python-format -msgid "%(nickname)s Signed In" -msgstr "%(nickname)s Konektatua" - -#: ../src/gajim.py:469 -#, python-format -msgid "%(nickname)s Signed Out" -msgstr "%(nickname)s Deskonektatua" - -#: ../src/gajim.py:583 -#, python-format -msgid "New Private Message from room %s" -msgstr "Mezu Pribatu Berri Bat %s gelatik" - -#: ../src/gajim.py:584 -#, python-format -msgid "%(nickname)s: %(message)s" -msgstr "%(nickname)s: %(message)s" - -#: ../src/gajim.py:606 -#, python-format -msgid "New Single Message from %(nickname)s" -msgstr "Mezu Berria %(nickname)s -etik" - -#: ../src/gajim.py:612 -#, python-format -msgid "New Message from %(nickname)s" -msgstr "Mezu Berria %(nickname)s -etik" - -#: ../src/gajim.py:660 +#: ../src/gajim.py:611 #, python-format msgid "error while sending %s ( %s )" msgstr "errorea bidaltzen zen bitartean %s ( %s )" -#: ../src/gajim.py:700 +#: ../src/gajim.py:651 msgid "Authorization accepted" msgstr "Autorizazioa baimendua" -#: ../src/gajim.py:701 +#: ../src/gajim.py:652 #, python-format msgid "The contact \"%s\" has authorized you to see his or her status." msgstr "\"%s\" kontaktuak baimendu dizu bere egoera ikusteko." -#: ../src/gajim.py:709 +#: ../src/gajim.py:660 #, python-format msgid "Contact \"%s\" removed subscription from you" msgstr "\"%s\" kontaktuak harpidetza ezabatu dizu" -#: ../src/gajim.py:710 +#: ../src/gajim.py:661 msgid "You will always see him or her as offline." -msgstr "Beti deskonektatua ikusiko duzu." +msgstr "Beti deskonektatuta ikusiko duzu." -#: ../src/gajim.py:736 +#: ../src/gajim.py:704 #, python-format msgid "Contact with \"%s\" cannot be established" msgstr "\"%s\" ezin izan da kontaktuan jarri" -#: ../src/gajim.py:737 ../src/common/connection.py:349 +#: ../src/gajim.py:705 +#: ../src/common/connection.py:398 msgid "Check your connection or try again later." msgstr "Begiratu zure konexioa edo saiatu berriro beranduago." -#: ../src/gajim.py:874 ../src/roster_window.py:1012 +#: ../src/gajim.py:849 +#: ../src/roster_window.py:1025 #, python-format msgid "%s is now %s (%s)" -msgstr "%s orain %s da:(%s)" +msgstr "%s orain %s dago: (%s)" -#: ../src/gajim.py:963 +#: ../src/gajim.py:930 msgid "Your passphrase is incorrect" msgstr "Zure pasa-esaldia ez da egokia" -#: ../src/gajim.py:964 +#: ../src/gajim.py:931 msgid "You are currently connected without your OpenPGP key." msgstr "Zure OpenPGP koderik gabe konektatu zara." #. FIXME: find a better image -#: ../src/gajim.py:1045 +#: ../src/gajim.py:1033 #, python-format msgid "New E-mail on %(gmail_mail_address)s" -msgstr "E-mail Berria %(gmail_mail_address)s -en" +msgstr "E-posta Berria %(gmail_mail_address)s -en" -#: ../src/gajim.py:1047 +#: ../src/gajim.py:1035 #, python-format msgid "You have %d new E-mail message" msgid_plural "You have %d new E-mail messages" -msgstr[0] "E-mail berri %d duzu" +msgstr[0] "E-posta berri %d duzu" msgstr[1] "%d E-mail berri dituzu" +#. each message has a 'From', 'Subject' and 'Snippet' field +#: ../src/gajim.py:1040 +#, python-format +msgid "" +"\n" +"From: %(from_address)s" +msgstr "" +"\n" +"Norengandik: %(from_address)s" + #: ../src/gajim.py:1185 #, python-format msgid "%s wants to send you a file." @@ -1542,8 +3604,7 @@ msgstr "Ondo jasoa izan da %(name)s-ren %(filename)s fitxeroa." #: ../src/gajim.py:1249 #, python-format msgid "File transfer of %(filename)s from %(name)s stopped." -msgstr "" -"%(name)s -eko %(filename)s -ren fitxero trasferentzia gelditua izan da." +msgstr "%(name)s -eko %(filename)s -ren fitxero trasferentzia gelditua izan da." #: ../src/gajim.py:1262 #, python-format @@ -1569,2245 +3630,577 @@ msgid "vCard publication failed" msgstr "vCard argitarapenak hust egin du" #: ../src/gajim.py:1304 -msgid "" -"There was an error while publishing your personal information, try again " -"later." -msgstr "" -"Errore bat agertu da zure informazio pertsonala argitaratzen zen bitartean, " -"saiatu berriro beranduago." +msgid "There was an error while publishing your personal information, try again later." +msgstr "Errore bat agertu da zure informazio pertsonala argitaratzen zen bitartean, saiatu berriro beranduago." #. it is good to notify the user #. in case he or she cannot see the output of the console -#: ../src/gajim.py:1634 +#: ../src/gajim.py:1683 msgid "Could not save your settings and preferences" msgstr "Ezin izan dira zure aldaketak eta hobespenak gorde" -#: ../src/gajim.py:1848 +#: ../src/gajim.py:1903 msgid "Session Management support not available (missing gnome.ui module)" msgstr "Session Management support not available (missing gnome.ui module)" -#: ../src/gajim.py:1878 +#: ../src/gajim.py:1932 msgid "Migrating Logs..." msgstr "Log-ak Eraldatzen..." -#: ../src/gajim.py:1879 +#: ../src/gajim.py:1933 msgid "Please wait while logs are being migrated..." msgstr "Mesedez itxoin log-a eraldatzen den bitartean...." -#: ../src/gajim_themes_window.py:67 +#: ../src/gajim_themes_window.py:59 msgid "Theme" msgstr "Gaia" #. don't confuse translators -#: ../src/gajim_themes_window.py:149 +#: ../src/gajim_themes_window.py:141 msgid "theme name" msgstr "gaiaren izena" -#: ../src/gajim_themes_window.py:166 +#: ../src/gajim_themes_window.py:158 msgid "You cannot delete your current theme" msgstr "Ezin duzu zure berezko gaia ezabatu" -#: ../src/gajim_themes_window.py:167 +#: ../src/gajim_themes_window.py:159 msgid "Please first choose another for your current theme." msgstr "Please first choose another for your current theme." -#: ../src/groupchat_control.py:68 +#: ../src/groupchat_control.py:99 msgid "Private Chat" msgstr "Txat Pribatua" -#: ../src/groupchat_control.py:68 +#: ../src/groupchat_control.py:99 msgid "Private Chats" msgstr "Txat Pribatuak" -#: ../src/groupchat_control.py:84 +#: ../src/groupchat_control.py:115 msgid "Sending private message failed" msgstr "Mezu pribatua bidaltzeak huts egin du" #. in second %s code replaces with nickname -#: ../src/groupchat_control.py:86 +#: ../src/groupchat_control.py:117 #, python-format msgid "You are no longer in room \"%s\" or \"%s\" has left." msgstr "Ez zaude gela honetan \"%s\" edo \"%s\" joan da." -#: ../src/groupchat_control.py:98 +#: ../src/groupchat_control.py:129 msgid "Group Chat" msgstr "Txat Taldea" -#: ../src/groupchat_control.py:98 +#: ../src/groupchat_control.py:129 msgid "Group Chats" msgstr "Txat Taldeak" -#: ../src/groupchat_control.py:595 +#: ../src/groupchat_control.py:308 +msgid "Insert Nickname" +msgstr "Sartu Izengoitia" + +#: ../src/groupchat_control.py:702 msgid "This room has no subject" msgstr "Gela honek ez du gairik" #. do not print 'kicked by None' -#: ../src/groupchat_control.py:693 +#: ../src/groupchat_control.py:801 #, python-format msgid "%(nick)s has been kicked: %(reason)s" msgstr "%(nick)s botata izan da%(reason)s -engatik: " -#: ../src/groupchat_control.py:697 +#: ../src/groupchat_control.py:805 #, python-format msgid "%(nick)s has been kicked by %(who)s: %(reason)s" msgstr "%(nick)s botata izan da %(who)s -engatik: %(reason)s" #. do not print 'banned by None' -#: ../src/groupchat_control.py:704 +#: ../src/groupchat_control.py:812 #, python-format msgid "%(nick)s has been banned: %(reason)s" msgstr "%(nick)s debekatu da %(reason)s -engatik:" -#: ../src/groupchat_control.py:708 +#: ../src/groupchat_control.py:816 #, python-format msgid "%(nick)s has been banned by %(who)s: %(reason)s" msgstr "%(nick)s debekatu da %(who)s: %(reason)s" -#: ../src/groupchat_control.py:716 +#: ../src/groupchat_control.py:824 #, python-format msgid "You are now known as %s" msgstr "Orain %s bezala ezaguna zara" -#: ../src/groupchat_control.py:718 +#: ../src/groupchat_control.py:826 #, python-format msgid "%s is now known as %s" msgstr "%s orain %s bezala ezaguna da" -#: ../src/groupchat_control.py:757 +#: ../src/groupchat_control.py:897 #, python-format msgid "%s has left" msgstr "%s deskonektatu da" +#: ../src/groupchat_control.py:902 +#, python-format +msgid "%s has joined the room" +msgstr "%s gelan sartu da" + #. No status message -#: ../src/groupchat_control.py:759 ../src/roster_window.py:1015 +#: ../src/groupchat_control.py:904 +#: ../src/roster_window.py:1028 #, python-format msgid "%s is now %s" msgstr "%s orain %s da" -#: ../src/groupchat_control.py:871 ../src/groupchat_control.py:888 -#: ../src/groupchat_control.py:981 ../src/groupchat_control.py:997 +#: ../src/groupchat_control.py:1022 +#: ../src/groupchat_control.py:1039 +#: ../src/groupchat_control.py:1132 +#: ../src/groupchat_control.py:1148 #, python-format msgid "Nickname not found: %s" -msgstr "Nick-a aurkitugabea: %s" +msgstr "Izengoitia aurkitugabea: %s" -#: ../src/groupchat_control.py:915 +#: ../src/groupchat_control.py:1066 #, python-format msgid "Invited %(contact_jid)s to %(room_jid)s." msgstr "Gonbidatu %(contact_jid)s %(room_jid)s. gelara." #. %s is something the user wrote but it is not a jid so we inform -#: ../src/groupchat_control.py:922 ../src/groupchat_control.py:952 +#: ../src/groupchat_control.py:1073 +#: ../src/groupchat_control.py:1103 #, python-format msgid "%s does not appear to be a valid JID" msgstr "%s ez du ematen baliozko JID bat denik" -#: ../src/groupchat_control.py:1019 +#: ../src/groupchat_control.py:1185 #, python-format msgid "No such command: /%s (if you want to send this, prefix it with /say)" msgstr "No such command: /%s (if you want to send this, prefix it with /say)" -#: ../src/groupchat_control.py:1041 +#: ../src/groupchat_control.py:1207 #, python-format msgid "Commands: %s" msgstr "Azalpenak: %s" -#: ../src/groupchat_control.py:1043 +#: ../src/groupchat_control.py:1209 #, python-format -msgid "" -"Usage: /%s [reason], bans the JID from the room. The nickname " -"of an occupant may be substituted, but not if it contains \"@\". If the JID " -"is currently in the room, he/she/it will also be kicked. Does NOT support " -"spaces in nickname." -msgstr "" -"Erabilera: /%s [reason], debekatua JID-a gelatik. Erabiltzen " -"ari den baten nick-a aldatu egin beharko da, baina ez da aldatu beharko \"@" -"\" -rik badu. JID-a jadanik gelan bada, bera botatata izango da. Nick-ak EZ " -"du onartzen tarterik. " +msgid "Usage: /%s [reason], bans the JID from the room. The nickname of an occupant may be substituted, but not if it contains \"@\". If the JID is currently in the room, he/she/it will also be kicked. Does NOT support spaces in nickname." +msgstr "Erabilera: /%s [reason], debekatua JID-a gelatik. Erabiltzen ari den baten izengoitia aldatu egin beharko da, baina ez da aldatu beharko \"@\" -rik badu. JID-a jadanik gelan bada, bera botatata izango da. Izengoitiak EZ du onartzen tarterik. " -#: ../src/groupchat_control.py:1049 +#: ../src/groupchat_control.py:1215 #, python-format -msgid "" -"Usage: /%s , opens a private chat window to the specified occupant." -msgstr "" -"Erabilera: /%s ,, ireki txat pribatu bat espezifikatutako " -"erabiltzaileari." +msgid "Usage: /%s , opens a private chat window to the specified occupant." +msgstr "Erabilera: /%s , ireki txat pribatu bat espezifikatutako erabiltzaileari." -#: ../src/groupchat_control.py:1053 +#: ../src/groupchat_control.py:1219 #, python-format msgid "Usage: /%s, clears the text window." msgstr "Erabilera: %s, testu leihoa itxi." -#: ../src/groupchat_control.py:1055 +#: ../src/groupchat_control.py:1221 #, python-format -msgid "" -"Usage: /%s [reason], closes the current window or tab, displaying reason if " -"specified." +msgid "Usage: /%s [reason], closes the current window or tab, displaying reason if specified." msgstr "Erabilera: /%s [reason], itxi leihoa, zergatia erakutsiz behar bada." -#: ../src/groupchat_control.py:1058 +#: ../src/groupchat_control.py:1224 #, python-format msgid "Usage: /%s, hide the chat buttons." msgstr "Erabilera:/%s, ezkutatu txat-eko botoilak." -#: ../src/groupchat_control.py:1060 +#: ../src/groupchat_control.py:1226 #, python-format -msgid "" -"Usage: /%s [reason], invites JID to the current room, optionally " -"providing a reason." -msgstr "" -"Erabilera: /%s [reason], gonbidatu JID-a oraingo gelara, aukerazko " -"arrazoi bat emanez. " +msgid "Usage: /%s [reason], invites JID to the current room, optionally providing a reason." +msgstr "Erabilera: /%s [reason], gonbidatu JID-a oraingo gelara, aukerazko arrazoi bat emanez. " -#: ../src/groupchat_control.py:1064 +#: ../src/groupchat_control.py:1230 #, python-format -msgid "" -"Usage: /%s @[/nickname], offers to join room@server optionally " -"using specified nickname." -msgstr "" -"Erabilera: /%s @[/nickname], eskaini room@server-era sartzen " -"aukeraz nick bat ezarriz." +msgid "Usage: /%s @[/nickname], offers to join room@server optionally using specified nickname." +msgstr "Erabilera: /%s @[/nickname], eskaini room@server-era sartzen aukeraz izengoiti bat ezarriz." -#: ../src/groupchat_control.py:1068 +#: ../src/groupchat_control.py:1234 #, python-format -msgid "" -"Usage: /%s [reason], removes the occupant specified by nickname " -"from the room and optionally displays a reason. Does NOT support spaces in " -"nickname." -msgstr "" -"Erabilera: /%s [reason], ezabatu nick-aren bidez aukeratutako " -"erabiltzailea gelatik eta nahi bada arrazoi bat adierazi. EZ da onartzen " -"espazioak nick-an." +msgid "Usage: /%s [reason], removes the occupant specified by nickname from the room and optionally displays a reason. Does NOT support spaces in nickname." +msgstr "Erabilera: /%s [reason], ezabatu izengoitiaren bidez aukeratutako erabiltzailea gelatik eta nahi bada arrazoi bat adierazi. EZ da onartzen espazioak nick-an." -#: ../src/groupchat_control.py:1073 +#: ../src/groupchat_control.py:1239 #, python-format -msgid "" -"Usage: /%s , sends action to the current room. Use third person. (e." -"g. /%s explodes.)" -msgstr "" -"Erabilera: /%s , bidali aukeratutako ekintza daukazun oraingo " -"gelara. Erabili 3. pertsona. (e.g. /%s explodes.)" +msgid "Usage: /%s , sends action to the current room. Use third person. (e.g. /%s explodes.)" +msgstr "Erabilera: /%s , bidali aukeratutako ekintza daukazun oraingo gelara. Erabili 3. pertsona. (e.g. /%s explodes.)" -#: ../src/groupchat_control.py:1077 +#: ../src/groupchat_control.py:1243 #, python-format -msgid "" -"Usage: /%s [message], opens a private message windowand sends " -"message to the occupant specified by nickname." -msgstr "" -"Erabilera: /%s [message], ireki mezu pribatuko leiho bat eta " -"bidali zehaztutako nick-aren erabiltzailera." +msgid "Usage: /%s [message], opens a private message windowand sends message to the occupant specified by nickname." +msgstr "Erabilera: /%s [message], ireki mezu pribatuko leiho bat eta bidali zehaztutako izengoitiaren erabiltzailera." -#: ../src/groupchat_control.py:1082 +#: ../src/groupchat_control.py:1248 #, python-format msgid "Usage: /%s , changes your nickname in current room." -msgstr "Erabilera: /%s , aldatu zure nick-a oraingo gelan." +msgstr "Erabilera: /%s , aldatu zure izengoitia gela hontan." -#: ../src/groupchat_control.py:1086 +#: ../src/groupchat_control.py:1252 +#, python-format +msgid "Usage: /%s , display the names of room occupants." +msgstr "Erabilera:/%s , erakutsarazi gelako pertsonen izenak." + +#: ../src/groupchat_control.py:1256 #, python-format msgid "Usage: /%s [topic], displays or updates the current room topic." -msgstr "" -"Erabilera: /%s [topic], erakuts arazi edo aktualizatu oraingo gelako gaia." +msgstr "Erabilera: /%s [topic], erakuts arazi edo aktualizatu oraingo gelako gaia." -#: ../src/groupchat_control.py:1089 +#: ../src/groupchat_control.py:1259 #, python-format -msgid "" -"Usage: /%s , sends a message without looking for other commands." -msgstr "" -"Erabilera: /%s , mezu bat bidali beste komandoak bilatu gabe." +msgid "Usage: /%s , sends a message without looking for other commands." +msgstr "Erabilera: /%s , mezu bat bidali beste komandoak bilatu gabe." -#: ../src/groupchat_control.py:1092 +#: ../src/groupchat_control.py:1262 #, python-format msgid "No help info for /%s" msgstr "Ez dago laguntza informazioa /%s -rentzat" -#: ../src/groupchat_control.py:1128 +#: ../src/groupchat_control.py:1304 #, python-format msgid "Are you sure you want to leave room \"%s\"?" msgstr "Ziur al zaude \"%s\" gelatik atera nahi duzula?" -#: ../src/groupchat_control.py:1129 +#: ../src/groupchat_control.py:1305 msgid "If you close this window, you will be disconnected from this room." msgstr "Leiho hau isten baduzu, gela honetatik deskonektatuko zara." -#: ../src/groupchat_control.py:1133 +#: ../src/groupchat_control.py:1309 msgid "Do _not ask me again" msgstr "E_z galdetu berriro " -#: ../src/groupchat_control.py:1167 +#: ../src/groupchat_control.py:1343 msgid "Changing Subject" msgstr "Gaia Aldatu" -#: ../src/groupchat_control.py:1168 +#: ../src/groupchat_control.py:1344 msgid "Please specify the new subject:" msgstr "Gai berria zehaztu:" -#: ../src/groupchat_control.py:1176 +#: ../src/groupchat_control.py:1352 msgid "Changing Nickname" -msgstr "Nick-a Aldatu" +msgstr "Izengoitia Aldatu" -#: ../src/groupchat_control.py:1177 +#: ../src/groupchat_control.py:1353 msgid "Please specify the new nickname you want to use:" -msgstr "Mesedez zehaztu ezazu erabili nahi duzun nick berria:" +msgstr "Mesedez zehaztu ezazu erabili nahi duzun izengoiti berria:" -#: ../src/groupchat_control.py:1202 +#: ../src/groupchat_control.py:1379 msgid "Bookmark already set" msgstr "Talde agenda ezarria" -#: ../src/groupchat_control.py:1203 +#: ../src/groupchat_control.py:1380 #, python-format msgid "Room \"%s\" is already in your bookmarks." msgstr "\"%s\" gela zure talde agendan dago." -#: ../src/groupchat_control.py:1212 +#: ../src/groupchat_control.py:1389 msgid "Bookmark has been added successfully" msgstr "Talde agenda egoki sortu da" -#: ../src/groupchat_control.py:1213 +#: ../src/groupchat_control.py:1390 msgid "You can manage your bookmarks via Actions menu in your roster." -msgstr "" -"Zure talde agenda moldatu dezakezu zure zerrendako aukera menuaren bidez." +msgstr "Zure talde agenda moldatu dezakezu zure zerrendako aukera menuaren bidez." #. ask for reason -#: ../src/groupchat_control.py:1322 +#: ../src/groupchat_control.py:1500 #, python-format msgid "Kicking %s" msgstr "Botatzen %s" -#: ../src/groupchat_control.py:1323 ../src/groupchat_control.py:1568 +#: ../src/groupchat_control.py:1501 +#: ../src/groupchat_control.py:1779 msgid "You may specify a reason below:" msgstr "Arrazoia zehaztu behar duzu behean:" #. ask for reason -#: ../src/groupchat_control.py:1567 +#: ../src/groupchat_control.py:1778 #, python-format msgid "Banning %s" msgstr "Debekatzen %s" -#: ../src/gtkexcepthook.py:52 +#: ../src/gtkexcepthook.py:51 msgid "A programming error has been detected" msgstr "Programazio errore bat detektatu da" -#: ../src/gtkexcepthook.py:53 -msgid "" -"It probably is not fatal, but should be reported to the developers " -"nonetheless." -msgstr "" -"Seguraski ez da garrantzitsua, baina diseinatzailei abisatu beharko " -"litzateke." +#: ../src/gtkexcepthook.py:52 +msgid "It probably is not fatal, but should be reported to the developers nonetheless." +msgstr "Seguraski ez da garrantzitsua, baina diseinatzailei abisatu beharko litzateke." -#: ../src/gtkexcepthook.py:59 +#: ../src/gtkexcepthook.py:58 msgid "_Report Bug" msgstr "_Report Bug" -#: ../src/gtkexcepthook.py:82 +#: ../src/gtkexcepthook.py:81 msgid "Details" msgstr "Zehaztapenak" -#. this always tracebacks -#: ../src/gtkgui.glade.h:1 -msgid "0" -msgstr "0" - -#: ../src/gtkgui.glade.h:2 -msgid "" -"Account is being created\n" -"\n" -"Please wait..." -msgstr "" -"Kontua sortua izan da\n" -"\n" -"Mesedez itxoin..." - -#: ../src/gtkgui.glade.h:5 -msgid "Advanced Configuration Editor" -msgstr "Konfigurazio Aurreratuaren Editorea" - -#: ../src/gtkgui.glade.h:6 -msgid "Applications" -msgstr "Aplikazioak" - -#: ../src/gtkgui.glade.h:7 -msgid "Chatstate Tab Colors" -msgstr "Elkarrizketako Egoeren Koloreak" - -#. a header for custom browser/client/file manager. so translate sth like: Custom Settings -#: ../src/gtkgui.glade.h:9 -msgid "Custom" -msgstr "Bezeroak" - -#: ../src/gtkgui.glade.h:10 -msgid "Description" -msgstr "Deskribapena" - -#: ../src/gtkgui.glade.h:11 -msgid "Format of a line" -msgstr "Lerroaren Formatua" - -#: ../src/gtkgui.glade.h:12 -msgid "Interface Customization" -msgstr "Grafikoen Kontrola" - -#: ../src/gtkgui.glade.h:13 -msgid "Jabber Traffic" -msgstr "Jabber Trafikoa" - -#: ../src/gtkgui.glade.h:14 -msgid "Miscellaneous" -msgstr "Denetatik" - -#: ../src/gtkgui.glade.h:15 -msgid "NOTE: You should restart gajim for some setting to take effect" -msgstr "" -"OHARRA: Gajim berriro abiarazi beharko duzu aldagai batzuek efektua " -"sor dezaten" - -#: ../src/gtkgui.glade.h:16 -msgid "OpenPGP" -msgstr "OpenPGP" - -#: ../src/gtkgui.glade.h:17 -msgid "Personal Information" -msgstr "Informazio Pertsonala" - -#: ../src/gtkgui.glade.h:18 -msgid "Please choose one of the options below:" -msgstr "Mesedez aukeratu hemen beheko aukeretako bat:" - -#: ../src/gtkgui.glade.h:19 -msgid "Please fill in the data for your new account" -msgstr "Mesedez bete zure kontu berrirako informazioa" - -#: ../src/gtkgui.glade.h:20 -msgid "Preset Status Messages" -msgstr "Egoera Mezu Ezarriak" - -#: ../src/gtkgui.glade.h:21 -msgid "Properties" -msgstr "Ezaugarriak" - -#: ../src/gtkgui.glade.h:22 -msgid "Settings" -msgstr "Aldaketak" - -#: ../src/gtkgui.glade.h:23 -msgid "Sounds" -msgstr "Soinuak" - -#: ../src/gtkgui.glade.h:24 -msgid "Type your new status message" -msgstr "Egoera mezu berria ezarri" - -#: ../src/gtkgui.glade.h:25 -msgid "Visual Notifications" -msgstr "Ikusizko Jakinarazketa" - -#: ../src/gtkgui.glade.h:26 -msgid "What do you want to do?" -msgstr "Zer nahi duzu egin?" - -#: ../src/gtkgui.glade.h:27 -msgid "XML Input" -msgstr "XML Sarrera" - -#: ../src/gtkgui.glade.h:28 -msgid "A list of active, completed and stopped file transfers" -msgstr "Fitxategi tranferentzia aktiboen, bukatutakoen eta gelditutakoen lista" - -#: ../src/gtkgui.glade.h:29 -msgid "A_ccounts" -msgstr "K_ontua" - -#: ../src/gtkgui.glade.h:30 -msgid "A_fter nickname:" -msgstr "Nick-aren on_doren:" - -#. "About" is the text of a tab of vcard window -#: ../src/gtkgui.glade.h:32 -msgid "About" -msgstr "About" - -#: ../src/gtkgui.glade.h:33 -msgid "Accept" -msgstr "Onartu" - -#: ../src/gtkgui.glade.h:34 -msgid "Account" -msgstr "Kontua" - -#: ../src/gtkgui.glade.h:35 -msgid "" -"Account\n" -"Group\n" -"Contact\n" -"Banner" -msgstr "Kontua/nTaldea/nKontaktua/nBanner" - -#: ../src/gtkgui.glade.h:39 -msgid "Account Modification" -msgstr "Kontu Eraldaketa" - -#: ../src/gtkgui.glade.h:40 -msgid "Accounts" -msgstr "Kontuak" - -#: ../src/gtkgui.glade.h:42 -msgid "Add New Contact" -msgstr "Kontaktu Berri bat Sartu" - -#: ../src/gtkgui.glade.h:43 -msgid "Add Special _Notification" -msgstr "Gehitu _Noifikazio Berezia" - -#: ../src/gtkgui.glade.h:44 -msgid "Add _Contact" -msgstr "Kontaktua _Sartu" - -#: ../src/gtkgui.glade.h:45 -msgid "Address" -msgstr "Helbidea" - -#: ../src/gtkgui.glade.h:46 -msgid "Advanced" -msgstr "Aurreratua" - -#: ../src/gtkgui.glade.h:47 -msgid "Advanced Configuration Editor" -msgstr "Konfigurazio Aurreratuaren Editorea" - -#: ../src/gtkgui.glade.h:48 -msgid "" -"All chat states\n" -"Composing only\n" -"Disabled" -msgstr "" -"Elkarrizketa guztien egoera\n" -"Konposatzen bakarrik\n" -"Desaktibatuta" - -#: ../src/gtkgui.glade.h:51 -msgid "Allow _OS information to be sent" -msgstr "Baimena _OS informazioa bidaltzeko" - -#: ../src/gtkgui.glade.h:52 -msgid "Allow him/her to see my status" -msgstr "Baimendu nire egoera ikustea" - -#: ../src/gtkgui.glade.h:53 -msgid "Allow popup/notifications when I'm _away/na/busy/invisible" -msgstr "" -"Baimendu Popup/Jakinarazteak nagoenean: Kanpoan/Ez Erabilgarri/Lanpetua/" -"Ikusezin" - -#: ../src/gtkgui.glade.h:54 -msgid "Also known as iChat style" -msgstr "iChat estiloa bezala ere ezagutua" - -#: ../src/gtkgui.glade.h:55 -msgid "Ask status message when I:" -msgstr "Eskatu egoera mezua, nagoenean:" - -#: ../src/gtkgui.glade.h:56 -msgid "Ask to see his/her status" -msgstr "Bere egoera ikusteko esan" - -#: ../src/gtkgui.glade.h:57 -msgid "Ask:" -msgstr "Eskatua:" - -#: ../src/gtkgui.glade.h:58 -msgid "Assign Open_PGP Key" -msgstr "Open_PGP kodea zehaztu" - -#: ../src/gtkgui.glade.h:59 -msgid "Authorize contact so he can know when you're connected" -msgstr "Kontaktu autorizatua beraz, zure egoera ikus dezake" - -#: ../src/gtkgui.glade.h:60 -msgid "Auto _away after:" -msgstr "Automatikoki _Kanpoan ondoren:" - -#: ../src/gtkgui.glade.h:61 -msgid "Auto _not available after:" -msgstr "Automatikoki _Ez Erabilgarri ondoren:" - -#: ../src/gtkgui.glade.h:62 -msgid "Auto join" -msgstr "Automatikoki sartu" - -#: ../src/gtkgui.glade.h:63 -msgid "" -"Autodetect on every Gajim startup\n" -"Always use GNOME default applications\n" -"Always use KDE default applications\n" -"Custom" -msgstr "" -"Autodetektatu Gajim abiarazten den bakoitzean\n" -"Beti GNOME-ren berezko aplikazioak erabili\n" -"Beti KDE-ren berezko aplikazioak erabili\n" -"Bezeroa" - -#: ../src/gtkgui.glade.h:67 -msgid "Automatically authorize contact" -msgstr "Automatikoki baimendutako kontaktua" - -#: ../src/gtkgui.glade.h:68 -msgid "Autoreconnect when connection is lost" -msgstr "Konektatu berriro konexioa galtzean" - -#: ../src/gtkgui.glade.h:69 -msgid "B_efore nickname:" -msgstr "Nick-a baino l_ehen:" - -#: ../src/gtkgui.glade.h:70 -msgid "Birthday:" -msgstr "Urtebetetzea:" - -#: ../src/gtkgui.glade.h:71 -msgid "Bold" -msgstr "Bold" - -#: ../src/gtkgui.glade.h:72 -msgid "Build custom query" -msgstr "Build custom query" - -#: ../src/gtkgui.glade.h:73 -msgid "C_onnect on Gajim startup" -msgstr "K_onektatu Gajim irikitzean" - -#: ../src/gtkgui.glade.h:74 -msgid "Cancel file transfer" -msgstr "Fitxategi transferentzia kantzelatu" - -#: ../src/gtkgui.glade.h:75 -msgid "Cancels the selected file transfer" -msgstr "Kantzelatu aukeratutako fitxategi transferentzia" - -#: ../src/gtkgui.glade.h:76 -msgid "Cancels the selected file transfer and removes incomplete file" -msgstr "" -"Kantzelatu aukeratutako fitxategi transferentzia eta ezabatu bukatu gabeko " -"fitxeroa " - -#: ../src/gtkgui.glade.h:77 -msgid "Chan_ge Password" -msgstr "Al_datu Pasahitza" - -#: ../src/gtkgui.glade.h:78 -msgid "Change Password" -msgstr "Aldatu Pasahitza" - -#: ../src/gtkgui.glade.h:79 -msgid "Change _Nickname" -msgstr "Aldatu _Nick-a" - -#: ../src/gtkgui.glade.h:80 -msgid "Change _Subject" -msgstr "Aldatu _Gaia" - -#: ../src/gtkgui.glade.h:82 -msgid "Chat state noti_fications:" -msgstr "Txateko egoeraren ja_kinaraztea:" - -#: ../src/gtkgui.glade.h:83 -msgid "" -"Check this option, only if someone you don't have in the roster spams/annoys " -"you. Use with caution, cause it blocks all messages from any contact that is " -"not in the roster" -msgstr "" -"Bakarrik hautatu aukera hau zerrendan ez duzun norbaitek zirikatzen bazaitu. " -"Kontu handiz erabili, zerrendan ez dagoen edonoren mezuak blokeatzen ditu" - -#: ../src/gtkgui.glade.h:84 -msgid "" -"Check this so Gajim will connect in port 5223 where legacy servers are " -"expected to have SSL capabilities. Note that Gajim uses TLS encryption by " -"default if broadcasted by the server, and with this option enabled TLS will " -"be disabled" -msgstr "" -"Check this so Gajim will connect in port 5223 where legacy servers are " -"expected to have SSL capabilities. Note that Gajim uses TLS encryption by " -"default if broadcasted by the server, and with this option enabled TLS will " -"be disabled" - -#: ../src/gtkgui.glade.h:85 -msgid "Choose _Key..." -msgstr "Aukeratu _Kodea...." - -#: ../src/gtkgui.glade.h:86 -msgid "City:" -msgstr "Hiria:" - -#: ../src/gtkgui.glade.h:87 -msgid "Clean _up" -msgstr "_Garbitu" - -#: ../src/gtkgui.glade.h:88 -msgid "Click to change account's password" -msgstr "Sakatu kontuaren pasahitza aldatzeko" - -#: ../src/gtkgui.glade.h:89 -msgid "Click to insert an emoticon (Alt+M)" -msgstr "Sakatu emoticon bat ezartzeko (Alt+M)" - -#: ../src/gtkgui.glade.h:90 -msgid "Click to see features (like MSN, ICQ transports) of jabber servers" -msgstr "" -"Sakatu Jabber zerbitzariaren zenbait aukera(Msn ,ICQ, transport) ikusteko" - -#: ../src/gtkgui.glade.h:91 -msgid "Click to see past conversation in this room" -msgstr "Sakatu gela honetako elkarrizketa zaharrak ikusteko" - -#: ../src/gtkgui.glade.h:92 -msgid "Click to see past conversations with this contact" -msgstr "Sakatu kontaktu honen elkarrizketa zaharrak ikusteko" - -#: ../src/gtkgui.glade.h:93 -msgid "Client:" -msgstr "Bezeroa:" - -#: ../src/gtkgui.glade.h:94 -msgid "Company:" -msgstr "Konpainia:" - -#: ../src/gtkgui.glade.h:95 -msgid "Composing" -msgstr "Sortzen" - -#: ../src/gtkgui.glade.h:96 -msgid "Configure _Room" -msgstr "Gela Konfigu_ratu" - -#: ../src/gtkgui.glade.h:97 -msgid "Connect when I press Finish" -msgstr "Konektatu bukatu sakatzen dudanean." - -#: ../src/gtkgui.glade.h:98 -msgid "Connection" -msgstr "Konektatu" - -#: ../src/gtkgui.glade.h:99 -msgid "Contact Information" -msgstr "Kontaktuaren Informazioa" - -#: ../src/gtkgui.glade.h:100 -msgid "Contact _Info" -msgstr "Kontaktuaren _ Informazioa" - -#: ../src/gtkgui.glade.h:101 -msgid "Conversation History" -msgstr "Elkarrizketaren Historiala" - -#: ../src/gtkgui.glade.h:102 -msgid "Country:" -msgstr "Estatua:" - -#: ../src/gtkgui.glade.h:103 -msgid "Default status _iconset:" -msgstr "Berezko egoera _ikurra:" - -#: ../src/gtkgui.glade.h:104 -msgid "Delete MOTD" -msgstr "Ezabatu MOTD" - -#: ../src/gtkgui.glade.h:105 -msgid "Deletes Message of the Day" -msgstr "Eguneko Mezuak Ezabatu" - -#: ../src/gtkgui.glade.h:106 -msgid "Deny" -msgstr "Ukatu" - -#: ../src/gtkgui.glade.h:107 -msgid "Deny authorization from contact so he cannot know when you're connected" -msgstr "Autorizazioa ezeztatu, honela kontaktuak ezin du zure egoera ikusi" - -#: ../src/gtkgui.glade.h:108 -msgid "Department:" -msgstr "Departamentua:" - -#: ../src/gtkgui.glade.h:109 -msgid "Display a_vatars of contacts in roster" -msgstr "Kontaktuen a_batereak erakuts arazizerrendan" - -#: ../src/gtkgui.glade.h:110 -msgid "Display status _messages of contacts in roster" -msgstr "Erakuts arazi kontaktuen egoera _mezua zerrendan" - -#: ../src/gtkgui.glade.h:111 -msgid "E-Mail:" -msgstr "E-Mail:" - -#: ../src/gtkgui.glade.h:112 -msgid "E_very 5 minutes" -msgstr "5 _minuturo" - -#: ../src/gtkgui.glade.h:113 -msgid "Edit Groups" -msgstr "Taldeak Editatu" - -#: ../src/gtkgui.glade.h:114 -msgid "Edit Personal Information..." -msgstr "Informazio Pertsonala Editatu..." - -#: ../src/gtkgui.glade.h:115 -msgid "Edit _Groups" -msgstr "Editatu _Taldeak" - -#: ../src/gtkgui.glade.h:116 -msgid "Emoticons:" -msgstr "Emoticonoak:" - -#. XML Console enable checkbutton -#: ../src/gtkgui.glade.h:118 -msgid "Enable" -msgstr "Aktibatu" - -#: ../src/gtkgui.glade.h:119 -msgid "Enter it again for confirmation:" -msgstr "Sartu berriro baieztatzeko:" - -#: ../src/gtkgui.glade.h:120 -msgid "Enter new password:" -msgstr "Sartu pasahitz berria:" - -#: ../src/gtkgui.glade.h:121 -msgid "Events" -msgstr "Gertaerak" - -#: ../src/gtkgui.glade.h:122 -msgid "Extra Address:" -msgstr "Helbide Gehigarria:" - -#. Family Name -#: ../src/gtkgui.glade.h:124 -msgid "Family:" -msgstr "Familia:" - -#: ../src/gtkgui.glade.h:125 -msgid "File Transfers" -msgstr "Fitxero Transferentzia" - -#: ../src/gtkgui.glade.h:126 -msgid "File _Transfers" -msgstr "Fitxero _Transferentzia" - -#: ../src/gtkgui.glade.h:127 -msgid "Filter:" -msgstr "Filtroa:" - -#: ../src/gtkgui.glade.h:128 -msgid "Font style:" -msgstr "Iturburuaren estiloa:" - -#: ../src/gtkgui.glade.h:129 -msgid "Forbid him/her to see my status" -msgstr "Debekatu nire egoera ikustea" - -#: ../src/gtkgui.glade.h:130 -msgid "Format: YYYY-MM-DD" -msgstr "Formatua: YYYY-MM-DD" - -#: ../src/gtkgui.glade.h:131 -msgid "Frequently Asked Questions (online)" -msgstr "Frequently Asked Questions (online)" - -#: ../src/gtkgui.glade.h:132 -msgid "From:" -msgstr "Norena:" - -#: ../src/gtkgui.glade.h:133 -msgid "G_o" -msgstr "J_oan" - -#: ../src/gtkgui.glade.h:134 ../src/notify.py:167 ../src/notify.py:189 -#: ../src/notify.py:201 ../src/tooltips.py:339 -msgid "Gajim" -msgstr "Gajim" - -#: ../src/gtkgui.glade.h:135 -msgid "Gajim Themes Customization" -msgstr "Gajim-en Gaien Kustomizatazailea" - -#: ../src/gtkgui.glade.h:136 -msgid "" -"Gajim can send and receive meta-information related to a conversation you " -"may have with a contact. Here you can specify which chatstates you want to " -"send to the other party." -msgstr "" -"Gajim can send and receive meta-information related to a conversation you " -"may have with a contact. Here you can specify which chatstates you want to " -"send to the other party." - -#: ../src/gtkgui.glade.h:137 -msgid "" -"Gajim will automatically show new events by poping up the relative window" -msgstr "" -"Gajim-ek automatikoki gertaera berriak ikusi araziko ditu hautatutako " -"leihoan " - -#: ../src/gtkgui.glade.h:138 -msgid "" -"Gajim will notify you for new events via a popup in the bottom right of the " -"screen" -msgstr "" -"Gajim-ek gertaera berriez jakinaraziko dizu popup bidez pantailaren beheko " -"eskubiko aldean" - -#: ../src/gtkgui.glade.h:139 -msgid "" -"Gajim will notify you via a popup window in the bottom right of the screen " -"about contacts that just signed in" -msgstr "Sartu berri diren kontaktuez jakinaraziko dizu Gajim-ek popup bidez" - -#: ../src/gtkgui.glade.h:140 -msgid "" -"Gajim will notify you via a popup window in the bottom right of the screen " -"about contacts that just signed out" -msgstr "" -"Deskonektatu diren kontaktuez Gajim-ek jakinaraziko dizu popup bidez " -"pantailako beheko eskubiko aldean" - -#: ../src/gtkgui.glade.h:141 -msgid "" -"Gajim will only change the icon of the contact that triggered the new event" -msgstr "" -"Gajim-ek bakarrik kontaktuaren ikonoa aldatuko du gertaera berri bat duenean" - -#: ../src/gtkgui.glade.h:142 -msgid "Gajim: Account Creation Wizard" -msgstr "Gajim: Kontu Sortzailearen Wizard-a" - -#. user has no group, print him in General -#: ../src/gtkgui.glade.h:143 ../src/roster_window.py:291 -#: ../src/roster_window.py:1183 ../src/roster_window.py:1405 -#: ../src/systray.py:286 -msgid "General" -msgstr "Orokorra" - -#. Given Name -#: ../src/gtkgui.glade.h:145 -msgid "Given:" -msgstr "Eman izena:" - -#: ../src/gtkgui.glade.h:146 -msgid "Gone" -msgstr "Joanda" - -#: ../src/gtkgui.glade.h:147 -msgid "Group:" -msgstr "Taldea:" - -#: ../src/gtkgui.glade.h:148 -msgid "HTTP Connect" -msgstr "HTTP konektatua" - -#: ../src/gtkgui.glade.h:149 -msgid "Help online" -msgstr "Online laguntza" - -#: ../src/gtkgui.glade.h:150 -msgid "Hides the window" -msgstr "Leihoa ezkutatu" - -#: ../src/gtkgui.glade.h:151 -msgid "Homepage:" -msgstr "Web Pertsonala:" - -#: ../src/gtkgui.glade.h:152 -msgid "Hostname: " -msgstr "Hostname: " - -#: ../src/gtkgui.glade.h:153 -msgid "I already have an account I want to use" -msgstr "Dagoeneko badut kontu bat erabiltzeko" - -#: ../src/gtkgui.glade.h:154 -msgid "I want to _register for a new account" -msgstr "Kontu berri bat _erregistratu nahi dut" - -#: ../src/gtkgui.glade.h:155 -msgid "I would like to add you to my contact list." -msgstr "Nire kontaktu zerrendara nahi zaitut sartu." - -#: ../src/gtkgui.glade.h:156 -msgid "" -"If checked, Gajim will also broadcast some more IPs except from just your " -"IP, so file transfer has higher chances of working right." -msgstr "" -"If checked, Gajim will also broadcast some more IPs except from just your " -"IP, so file transfer has higher chances of working right." - -#: ../src/gtkgui.glade.h:157 -msgid "" -"If checked, Gajim will display avatars of contacts in roster window and in " -"group chats" -msgstr "" -"Hautatua badago, Gajim-ek zerrendan eta txat taldeetan kontaktuen abatereak " -"azalaraziko ditu" - -#: ../src/gtkgui.glade.h:158 -msgid "" -"If checked, Gajim will display status messages of contacts under the contact " -"name in roster window and in group chats" -msgstr "" -"Hautatua badago, Gajim-ek egoera mezua zerrendan erakutsaraziko du izenen " -"azpian eta txat taldeetan" - -#: ../src/gtkgui.glade.h:159 -msgid "If checked, Gajim will join this group chat on startup" -msgstr "Hautatua badago, Gajim-ek txat talde honetan sartuko da abiaraztean" - -#: ../src/gtkgui.glade.h:160 -msgid "If checked, Gajim will remember the password for this account" -msgstr "Hautatua badago, Gajim-ek kontu honen pasahitza gogoraraziko du" - -#: ../src/gtkgui.glade.h:161 -msgid "" -"If checked, Gajim will remember the roster and chat window positions in the " -"screen and the sizes of them next time you run it" -msgstr "" -"Hautatua badago, Gajim-ek abiarazten duzun hurrengoan zerrenda gogoraraziko " -"du eta txateko leihoaren pantailako lekua eta tamaina ere" - -#: ../src/gtkgui.glade.h:162 -msgid "" -"If checked, Gajim will send keep-alive packets so it prevents connection " -"timeout which results in disconnection" -msgstr "" -"Hautatua badago, Gajim-ek keep-alive paketeak bidaliko ditu deskonexioa " -"gerta ez dadin" - -#: ../src/gtkgui.glade.h:163 -msgid "" -"If checked, Gajim will store the password in ~/.gajim/config with 'read' " -"permission only for you" -msgstr "" -"Hautatua badago, Gajim-ek pasahitzak ~/.gajim/config gordeko ditu " -"irakurtzeko baimena zuk bakarrik izanik" - -#: ../src/gtkgui.glade.h:164 -msgid "" -"If checked, Gajim will use protocol-specific status icons. (eg. A contact " -"from MSN will have the equivalent msn icon for status online, away, busy, " -"etc...)" -msgstr "" -"Hautatua badago, Gajim-ek protokolo bakoitzaren egoera ikurrak irabiliko " -"ditu (Adibidez: MSN bada, protokolo honek erabiltzen dituen berezko ikurrak " -"jarriko dira)" - -#: ../src/gtkgui.glade.h:165 -msgid "" -"If checked, Gajim, when launched, will automatically connect to jabber using " -"this account" -msgstr "" -"Hautatua badago, abiaraztean, automatikoki jabber-era konektatuko da kontu " -"hau erabiliz" - -#: ../src/gtkgui.glade.h:166 -msgid "" -"If checked, any change to the global status (handled by the combobox at the " -"bottom of the roster window) will change the status of this account " -"accordingly" -msgstr "" -"If checked, any change to the global status (handled by the combobox at the " -"bottom of the roster window) will change the status of this account " -"accordingly" - -#: ../src/gtkgui.glade.h:167 -msgid "" -"If not disabled, Gajim will replace ascii smilies like ':)' with equivalent " -"animated or static graphical emoticons" -msgstr "" -"Ez badago ezeztatuta, Gajim-ek ´:)´ ascii hauek bere irudi grafiko estatiko " -"edo animatura eraldatuko ditu" - -#: ../src/gtkgui.glade.h:168 -msgid "" -"If you have 2 or more accounts and it is checked, Gajim will list all " -"contacts as if you had one account" -msgstr "" -"Bi kontu edo gehiago badituzu eta aukera hau hautatua badago, Gajim-ek " -"kontaktu guztiak kontu bat izango bazenu bezala jarriko lituzke zerrendan" - -#: ../src/gtkgui.glade.h:169 -msgid "Inactive" -msgstr "Inaktiboa" - -#. Info/Query make the "IQ" initials. So translate like this 'YourLang/YourLang (Info/Query)'. Thanks (it's a tooltip so width is not a problem) -#: ../src/gtkgui.glade.h:171 -msgid "Info/Query" -msgstr "Informatu/Galdetu" - -#: ../src/gtkgui.glade.h:172 -msgid "Information about you, as stored in the server" -msgstr "Zuri buzuzko informazioa zerbitzarian gordea izango da" - -#: ../src/gtkgui.glade.h:173 -msgid "Invitation Received" -msgstr "Gonbidapena Jasoa" - -#: ../src/gtkgui.glade.h:174 -msgid "Italic" -msgstr "Italic" - -#: ../src/gtkgui.glade.h:175 -msgid "Jabber" -msgstr "Jabber" - -#: ../src/gtkgui.glade.h:176 -msgid "Jabber ID:" -msgstr "Jabber ID:" - -#: ../src/gtkgui.glade.h:178 -msgid "Join _Group Chat" -msgstr "Txat Taldean _Sartu" - -#: ../src/gtkgui.glade.h:179 -msgid "Location" -msgstr "Kokapena" - -#: ../src/gtkgui.glade.h:180 -msgid "" -"MUC\n" -"Messages" -msgstr "" -"MUC\n" -"Mezuak" - -#: ../src/gtkgui.glade.h:182 -msgid "" -"MUC Directed\n" -"Messages" -msgstr "" -"MUC Zuzendua\n" -"Mezuak" - -#: ../src/gtkgui.glade.h:184 -msgid "Ma_nage..." -msgstr "Mo_ldatu..." - -#: ../src/gtkgui.glade.h:185 -msgid "Manage Accounts" -msgstr "Kontuak moldatu" - -#: ../src/gtkgui.glade.h:186 -msgid "Manage Bookmarks" -msgstr "Talde Agenda Moldatu" - -#: ../src/gtkgui.glade.h:187 -msgid "Manage Proxy Profiles" -msgstr "Proxy Profila Moldatu" - -#: ../src/gtkgui.glade.h:188 -msgid "Manage..." -msgstr "Moldatu..." - -#. Middle Name -#: ../src/gtkgui.glade.h:190 -msgid "Middle:" -msgstr "Izen erdia:" - -#: ../src/gtkgui.glade.h:191 -msgid "Mo_derator" -msgstr "Mo_deratzailea" - -#: ../src/gtkgui.glade.h:192 -msgid "More" -msgstr "Gehiago" - -#: ../src/gtkgui.glade.h:193 -msgid "Name:" -msgstr "Izena:" - -#: ../src/gtkgui.glade.h:194 -msgid "" -"Never\n" -"Always\n" -"Per account\n" -"Per type" -msgstr "" -"Inoiz\n" -"Beti\n" -"Kontuko\n" -"Gaiaz" - -#: ../src/gtkgui.glade.h:198 -msgid "Nickname:" -msgstr "Nick-a:" - -#. None means no proxy profile selected -#: ../src/gtkgui.glade.h:201 -msgid "None" -msgstr "Ezer ez" - -#: ../src/gtkgui.glade.h:202 -msgid "Notify me about contacts that: " -msgstr "Jakinarazi kontaktuek hau egitean: " - -#: ../src/gtkgui.glade.h:203 -msgid "Notify on new _Gmail e-mail" -msgstr "Gmail-eko E-mail berri batez jakinarazi" - -#: ../src/gtkgui.glade.h:204 -msgid "OS:" -msgstr "OS:" - -#: ../src/gtkgui.glade.h:205 -msgid "On every _message" -msgstr "Mezu _guztietan" - -#: ../src/gtkgui.glade.h:206 -msgid "One message _window:" -msgstr "M_ezu leiho bat" - -#: ../src/gtkgui.glade.h:208 -msgid "Pass_word:" -msgstr "Pasa_hitza:" - -#: ../src/gtkgui.glade.h:209 -msgid "Passphrase" -msgstr "Pasa-esaldia" - -#: ../src/gtkgui.glade.h:210 -msgid "Password:" -msgstr "Pasahitza:" - -#: ../src/gtkgui.glade.h:211 ../src/tooltips.py:645 -msgid "Paused" -msgstr "Etena" - -#: ../src/gtkgui.glade.h:212 -msgid "Personal Information" -msgstr "Informazio Pertsonala " - -#: ../src/gtkgui.glade.h:213 -msgid "Phone No.:" -msgstr "Telefono Zenbakia:" - -#: ../src/gtkgui.glade.h:214 -msgid "Play _sounds" -msgstr "Soinuak _entzun" - -#: ../src/gtkgui.glade.h:215 -msgid "Port: " -msgstr "Portua: " - -#: ../src/gtkgui.glade.h:216 -msgid "Position:" -msgstr "Tokia:" - -#: ../src/gtkgui.glade.h:217 -msgid "Postal Code:" -msgstr "Posta Kodea:" - -#: ../src/gtkgui.glade.h:218 -msgid "Preferences" -msgstr "Hobespenak" - -#. Prefix in Name -#: ../src/gtkgui.glade.h:220 -msgid "Prefix:" -msgstr "Izeneko aurreizkia:" - -#: ../src/gtkgui.glade.h:221 -msgid "Preset messages:" -msgstr "Ezarritako egoerak:" - -#: ../src/gtkgui.glade.h:222 -msgid "Print time:" -msgstr "Imprimatu ordua:" - -#: ../src/gtkgui.glade.h:223 -msgid "Priori_ty:" -msgstr "Lehentas_una:" - -#: ../src/gtkgui.glade.h:224 -msgid "" -"Priority is used in Jabber to determine who gets the events from the jabber " -"server when two or more clients are connected using the same account; The " -"client with the highest priority gets the events" -msgstr "" -"Jabber-en lehentasuna, bi bezero edo gehiago konektatuta daudenean kontu " -"berdinarekin, zeinek jaso behar duen informazioa determinatzen du; " -"Lehentasun handiena duen bezeroak jasotzen ditu mezuak" - -#: ../src/gtkgui.glade.h:225 -msgid "Profile, Avatar" -msgstr "Profila, Abatareak" - -#: ../src/gtkgui.glade.h:226 -msgid "Protocol:" -msgstr "Protokoloa:" - -#: ../src/gtkgui.glade.h:227 -msgid "Proxy:" -msgstr "Proxy:" - -#: ../src/gtkgui.glade.h:228 -msgid "Query Builder..." -msgstr "Query Builder..." - -#: ../src/gtkgui.glade.h:229 -msgid "Recently:" -msgstr "Berriki:" - -#: ../src/gtkgui.glade.h:230 -msgid "Register to" -msgstr "Erregistratu honetara" - -#: ../src/gtkgui.glade.h:231 -msgid "Remove account _only from Gajim" -msgstr "Ezabatu k_ontua Gajim-etik bakarrik" - -#: ../src/gtkgui.glade.h:232 -msgid "Remove account from Gajim and from _server" -msgstr "Ezabatu kontua Gajim-etik eta baita _zerbitzaritik" - -#: ../src/gtkgui.glade.h:233 -msgid "Remove file transfer from the list." -msgstr "Listatik fitxero tranferentzia ezabatu." - -#: ../src/gtkgui.glade.h:234 -msgid "Removes completed, canceled and failed file transfers from the list" -msgstr "" -"Ezabatu kantzelatuak, osorik eta huts egin dutenak fitxero transferentzia " -"zerrendatik" - -#: ../src/gtkgui.glade.h:235 -msgid "Reply to this message" -msgstr "Erantzun mezu honi" - -#: ../src/gtkgui.glade.h:236 -msgid "Resour_ce: " -msgstr "Baliabid_ea: " - -#: ../src/gtkgui.glade.h:237 -msgid "" -"Resource is sent to the Jabber server in order to separate the same JID in " -"two or more parts depending on the number of the clients connected in the " -"same server with the same account. So you might be connected in the same " -"account with resource 'Home' and 'Work' at the same time. The resource which " -"has the highest priority will get the events. (see below)" -msgstr "" -"Baliabidea Jabber-eko zerbitzarira bidaltzen da JID berdineko eta zerbitzari " -"berdinera konektatutako kontua bi zati desberdinetan edo gehiagotan " -"banatzeko asmoarekin. Hau horrela dabil: kontu bat `Lana` baliabidearekin " -"jarrita eta kontu berdera `etxea` baliabidearekin jarria baduzu, mezua " -"lehentasun handiena duenera bidaliko da. (Behean ikusi) " - -#: ../src/gtkgui.glade.h:238 -msgid "Resource:" -msgstr "Baliabidea:" - -#: ../src/gtkgui.glade.h:239 -msgid "Role:" -msgstr "Eginkizuna:" - -#: ../src/gtkgui.glade.h:240 -msgid "Room Configuration" -msgstr "Gelaren Konfigurazioa" - -#: ../src/gtkgui.glade.h:241 -msgid "Room:" -msgstr "Gela:" - -#: ../src/gtkgui.glade.h:242 -msgid "Save _passphrase (insecure)" -msgstr "Gorde _pasa-esaldia(ez trinkoa)" - -#: ../src/gtkgui.glade.h:243 -msgid "Save _position and size for roster and chat windows" -msgstr "Gorde zerrendaren eta txat leihoaren _lekua eta tamaina" - -#: ../src/gtkgui.glade.h:244 -msgid "Save as Preset..." -msgstr "Gorde Ezarritako Bezala...." - -#: ../src/gtkgui.glade.h:245 -msgid "Save conversation _logs for all contacts" -msgstr "_Gorde kontu guztien elkarrizketak" - -#: ../src/gtkgui.glade.h:246 -msgid "Save pass_word" -msgstr "Gorde pasa_hitza" - -#: ../src/gtkgui.glade.h:247 -msgid "Search" -msgstr "Bilatu" - -#: ../src/gtkgui.glade.h:248 -msgid "Sen_d" -msgstr "_Bidali" - -#: ../src/gtkgui.glade.h:249 -msgid "Send File" -msgstr "Bidali Fitxeroa" - -#: ../src/gtkgui.glade.h:250 -msgid "Send Single _Message" -msgstr "Bidali Mezu _Bakarra" - -#: ../src/gtkgui.glade.h:251 -msgid "Send Single _Message..." -msgstr "Bidali Mezu _Bakarra..." - -#: ../src/gtkgui.glade.h:252 -msgid "Send _File" -msgstr "Bidali _Fitxeroa" - -#: ../src/gtkgui.glade.h:253 -msgid "Send keep-alive packets" -msgstr "Bidali keep-alive paketeak" - -#: ../src/gtkgui.glade.h:254 -msgid "Send message" -msgstr "Bidali mezua" - -#: ../src/gtkgui.glade.h:255 -msgid "Send message and close window" -msgstr "Bidali mezua eta itxi leihoa" - -#: ../src/gtkgui.glade.h:256 -msgid "Sends a message to currently connected users to this server" -msgstr "" -"Bidali mezu bat zerbitzari honetara orain konektatuta dauden kontaktuei" - -#: ../src/gtkgui.glade.h:257 -msgid "Server:" -msgstr "Zerbitzaria:" - -#: ../src/gtkgui.glade.h:258 -msgid "Servers Features" -msgstr "Zerbitzariaren Ezaugarriak:" - -#: ../src/gtkgui.glade.h:259 -msgid "Set MOTD" -msgstr "Ezarri MOTD" - -#: ../src/gtkgui.glade.h:260 -msgid "Set _Avatar" -msgstr "Ezarri _Abatereak" - -#: ../src/gtkgui.glade.h:261 -msgid "Set my profile when I connect" -msgstr "Ezarri nire profila konektatzen naizenean" - -#: ../src/gtkgui.glade.h:262 -msgid "Sets Message of the Day" -msgstr "Ezarri Eguneko Mezua" - -#: ../src/gtkgui.glade.h:263 -msgid "Show All Pending _Events" -msgstr "Ikusi Gabeko _Gertaerak" - -#: ../src/gtkgui.glade.h:264 -msgid "Show _Offline Contacts" -msgstr "Ikusi _Deskonektatutako Kontaktuak" - -#: ../src/gtkgui.glade.h:265 -msgid "Show _Roster" -msgstr "Ikusi _Zerrenda" - -#: ../src/gtkgui.glade.h:266 -msgid "Show _XML Console" -msgstr "_XML Konsola Ikusarazi" - -#: ../src/gtkgui.glade.h:267 -msgid "Show only in _roster" -msgstr "Ikusi _zerrendan bakarrik" - -#: ../src/gtkgui.glade.h:268 -msgid "Shows a list of file transfers between you and other" -msgstr "Erakutsi zu eta beste baten arteko fitxero transferentzia" - -#: ../src/gtkgui.glade.h:269 -msgid "Sign _in" -msgstr "_Konektatua" - -#: ../src/gtkgui.glade.h:270 -msgid "Sign _out" -msgstr "_Deskonektatua" - -#: ../src/gtkgui.glade.h:271 -msgid "Sta_tus" -msgstr "E_goera" - -#: ../src/gtkgui.glade.h:272 -msgid "Start _Chat" -msgstr "Elkarrizketa _Hasi" - -#: ../src/gtkgui.glade.h:273 -msgid "State:" -msgstr "Egoera:" - -#: ../src/gtkgui.glade.h:274 -msgid "Status" -msgstr "Egoera" - -#: ../src/gtkgui.glade.h:275 -msgid "Status:" -msgstr "Egoera:" - -#: ../src/gtkgui.glade.h:276 -msgid "Street:" -msgstr "Kalea:" - -#: ../src/gtkgui.glade.h:277 -msgid "Subject:" -msgstr "Gaia:" - -#: ../src/gtkgui.glade.h:278 -msgid "Subscription Request" -msgstr "Harpidetza Eskaria" - -#: ../src/gtkgui.glade.h:279 -msgid "Subscription:" -msgstr "Harpidetza:" - -#. Suffix in Name -#: ../src/gtkgui.glade.h:281 -msgid "Suffix:" -msgstr "Atzizkia izenean:" - -#: ../src/gtkgui.glade.h:282 -msgid "Synch_ronize account status with global status" -msgstr "Egoera globalarekin kontaktuen egoera sinkro_nizatu " - -#: ../src/gtkgui.glade.h:283 -msgid "T_heme:" -msgstr "G_aia:" - -#: ../src/gtkgui.glade.h:284 -msgid "Text _color:" -msgstr "Testuaren _kolorea:" - -#: ../src/gtkgui.glade.h:285 -msgid "Text _font:" -msgstr "Testu _mota:" - -#: ../src/gtkgui.glade.h:286 -msgid "The auto away status message" -msgstr "Automatikoki kanpoko egoera mezua" - -#: ../src/gtkgui.glade.h:287 -msgid "The auto not available status message" -msgstr "Automatikoki ez erabilgarriko egoera mezua" - -#: ../src/gtkgui.glade.h:288 -msgid "" -"This action removes single file transfer from the list. If the transfer is " -"active, it is first stopped and then removed" -msgstr "" -"Aukera honek fitxero transferentzia bakar bat kantzelatzen du. " -"Transferentzia martxan badago, lehenik gelditu egingo da eta ondoren ezabatu." - -#: ../src/gtkgui.glade.h:289 -msgid "Title:" -msgstr "Izenburua:" - -#: ../src/gtkgui.glade.h:290 -msgid "To:" -msgstr "Norentzat:" - -#: ../src/gtkgui.glade.h:291 -msgid "Toggle Open_PGP Encryption" -msgstr "Toggle Open_PGP Encryption" - -#: ../src/gtkgui.glade.h:292 -msgid "Type:" -msgstr "Mota:" - -#: ../src/gtkgui.glade.h:293 -msgid "Underline" -msgstr "Azpimarratu" - -#: ../src/gtkgui.glade.h:294 -msgid "Update MOTD" -msgstr "MOTD Gaurkotu" - -#: ../src/gtkgui.glade.h:295 -msgid "Updates Message of the Day" -msgstr "Eguneko Mezua Gaurkotu" - -#: ../src/gtkgui.glade.h:296 -msgid "Use _SSL (legacy)" -msgstr "Erabili _SSL(Legacy)" - -#: ../src/gtkgui.glade.h:297 -msgid "Use _transports iconsets" -msgstr "Erabili _transporteen ikurrak" - -#: ../src/gtkgui.glade.h:298 -msgid "Use authentication" -msgstr "Erabili autentifikazioa" - -#: ../src/gtkgui.glade.h:299 -msgid "Use custom hostname/port" -msgstr "Erabili bezeroaren hostname/portua" - -#: ../src/gtkgui.glade.h:300 -msgid "Use file transfer proxies" -msgstr "Erabili proxy fitxero transferentzia" - -#: ../src/gtkgui.glade.h:301 -msgid "Use t_rayicon (aka. notification area icon)" -msgstr "E_rabili ikonifikazioa (aka. notification area)" - -#: ../src/gtkgui.glade.h:302 -msgid "User ID:" -msgstr "Erabiltzailearen ID:" - -#: ../src/gtkgui.glade.h:303 -msgid "When a file transfer is complete show a popup notification" -msgstr "Fitxero transferentzia bukatzean erakutsi popup jakinarazte bat" - -#: ../src/gtkgui.glade.h:304 -msgid "" -"When a new event (message, file transfer request etc..) is received, the " -"following methods may be used to inform you about it. Please note that " -"events about new messages only occur if it is a new message from a contact " -"you are not already chatting with" -msgstr "" -"Gertaera berri bat (mezu bat, fitxero trasferentzia eskaera...) jasotzean, " -"metodo honekin horiei buruz jakinarazteko balio dizu. Mezu berri baten " -"jakinaraztea, bakarrik, dagoeneko hitz egiten ari zaren pertsona batekin " -"izan ezik izango da" - -#: ../src/gtkgui.glade.h:305 -msgid "When new event is received" -msgstr "Ekintza berri bat jasotzean." - -#: ../src/gtkgui.glade.h:306 -msgid "Work" -msgstr "Lana" - -#: ../src/gtkgui.glade.h:307 -msgid "" -"You need to have an account in order to connect\n" -"to the Jabber network." -msgstr "" -"Kontu bat behar duzu\n" -"Jabber sarera konektatzeko" - -#: ../src/gtkgui.glade.h:309 -msgid "Your JID:" -msgstr "Zure JID-a:" - -#. Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector) -#: ../src/gtkgui.glade.h:311 -msgid "_Actions" -msgstr "_Aukerak" - -#: ../src/gtkgui.glade.h:312 -msgid "_Add Contact..." -msgstr "_Kontaktua Gehitu..." - -#: ../src/gtkgui.glade.h:313 -msgid "_Add to Roster" -msgstr "_Zerrendara Sartu" - -#: ../src/gtkgui.glade.h:314 -msgid "_Address:" -msgstr "_Helbidea:" - -#: ../src/gtkgui.glade.h:315 -msgid "_Admin" -msgstr "_Admin" - -#: ../src/gtkgui.glade.h:316 -msgid "_Administrator" -msgstr "_Administratzailea" - -#: ../src/gtkgui.glade.h:317 -msgid "_Advanced" -msgstr "A_urreratua" - -#: ../src/gtkgui.glade.h:318 -msgid "_After time:" -msgstr "Ordu_aren ondoren:" - -#: ../src/gtkgui.glade.h:319 -msgid "_Authorize" -msgstr "_Autorizatu" - -#: ../src/gtkgui.glade.h:320 -msgid "_Background:" -msgstr "A_tzealdeko kolorea:" - -#: ../src/gtkgui.glade.h:321 -msgid "_Ban" -msgstr "_Debekatu" - -#: ../src/gtkgui.glade.h:322 -msgid "_Before time:" -msgstr "Ordua _baino lehen:" - -#: ../src/gtkgui.glade.h:323 -msgid "_Bookmark This Room" -msgstr "_Talde Agendan Sartu Gela hau" - -#: ../src/gtkgui.glade.h:324 -msgid "_Browser:" -msgstr "_Bilatu:" - -#: ../src/gtkgui.glade.h:325 -msgid "_Cancel" -msgstr "_kantzelatu" - -#: ../src/gtkgui.glade.h:326 -msgid "_Compact View Alt+C" -msgstr "_Bista trikoa Alt+C" - -#: ../src/gtkgui.glade.h:327 -msgid "_Contents" -msgstr "_Edukiak" - -#: ../src/gtkgui.glade.h:329 -msgid "_Copy JID/Email Address" -msgstr "_Kopiatu JID/Email-a" - -#: ../src/gtkgui.glade.h:330 -msgid "_Copy Link Location" -msgstr "_Lotura kokapena kopiatu" - -#: ../src/gtkgui.glade.h:331 -msgid "_Deny" -msgstr "_Ukatu" - -#: ../src/gtkgui.glade.h:332 -msgid "_Discover Services" -msgstr "_Zerbitzuak Aurkitu" - -#: ../src/gtkgui.glade.h:333 -msgid "_Discover Services..." -msgstr "_Zerbitzuak Aurkitu..." - -#: ../src/gtkgui.glade.h:335 -msgid "_FAQ" -msgstr "_FAQ" - -#: ../src/gtkgui.glade.h:336 -msgid "_File manager:" -msgstr "_Fitxero administratzaile:" - -#: ../src/gtkgui.glade.h:337 -msgid "_Filter:" -msgstr "_Filtroa:" - -#: ../src/gtkgui.glade.h:338 -msgid "_Finish" -msgstr "_Bukatu" - -#: ../src/gtkgui.glade.h:339 -msgid "_Font:" -msgstr "_Mota:" - -#: ../src/gtkgui.glade.h:340 -msgid "_Group Chat" -msgstr "Txat _Taldea" - -#: ../src/gtkgui.glade.h:341 -msgid "_Help" -msgstr "_Laguntza" - -#: ../src/gtkgui.glade.h:342 -msgid "_Highlight misspelled words" -msgstr "_Highlight misspelled words" - -#: ../src/gtkgui.glade.h:343 -msgid "_History" -msgstr "_Historiala" - -#: ../src/gtkgui.glade.h:344 -msgid "_Host:" -msgstr "_Host-a" - -#. Info/Query: all(?) jabber xml start with Welcome to Gajim History Logs Manager\n" -"\n" -"You can select logs from the left and/or search database from below.\n" -"\n" -"WARNING:\n" -"If you plan to do massive deletions, please make sure Gajim is not running. " -"Generally avoid deletions with contacts you currently chat with." -msgstr "" -"Ongi Etorri Gajim Log Historial Administratzailera\n" -"\n" -"Eskubian log-ak hautatu ditzakezu edo/eta behean datu basean bilatu.\n" -"\n" -"OHARRA:\n" -"Ezabatze handia egin behar baduzu, Gajim abiarazita ez dagoela begira ezazu. " -"Normalean hitz egiten ari zaren kontaktuaen ezabaketak arbuilatzen ditu." +#: ../src/gtkgui_helpers.py:717 +msgid "Extension not supported" +msgstr "Gehigarriak ez eskuragarri" -#: ../src/history_manager.glade.h:7 -msgid "Delete" -msgstr "Ezabatu" +#: ../src/gtkgui_helpers.py:718 +#, python-format +msgid "Image cannot be saved in %(type)s format. Save as %(new_filename)s?" +msgstr "Irudia ezin izan da %(type)s formatuan gorde. Gorde %(new_filename)s bezala?" -#: ../src/history_manager.glade.h:8 -msgid "Export" -msgstr "Esportatu" +#: ../src/gtkgui_helpers.py:727 +msgid "Save Image as..." +msgstr "Gorde Irudia Bezala..." -#: ../src/history_manager.glade.h:9 -msgid "Gajim History Logs Manager" -msgstr "Gajim Historialeko Log Administratzailea" - -#: ../src/history_manager.glade.h:10 -msgid "_Search Database" -msgstr "_Bilatu Datu Basean" - -#: ../src/history_manager.py:58 +#: ../src/history_manager.py:61 msgid "Cannot find history logs database" msgstr "Ezin izan da aurkitu log-en datu basea" #. holds jid -#: ../src/history_manager.py:102 +#: ../src/history_manager.py:104 msgid "Contacts" msgstr "Kontaktua" #. holds time -#: ../src/history_manager.py:115 ../src/history_manager.py:155 -#: ../src/history_window.py:94 +#: ../src/history_manager.py:117 +#: ../src/history_manager.py:157 +#: ../src/history_window.py:85 msgid "Date" msgstr "Data" #. holds nickname -#: ../src/history_manager.py:121 ../src/history_manager.py:173 +#: ../src/history_manager.py:123 +#: ../src/history_manager.py:175 msgid "Nickname" -msgstr "Nickname" +msgstr "Izengoitia" #. holds message -#: ../src/history_manager.py:129 ../src/history_manager.py:161 -#: ../src/history_window.py:102 +#: ../src/history_manager.py:131 +#: ../src/history_manager.py:163 +#: ../src/history_window.py:93 msgid "Message" msgstr "Mezua" #. holds subject -#: ../src/history_manager.py:136 ../src/history_manager.py:167 +#: ../src/history_manager.py:138 +#: ../src/history_manager.py:169 msgid "Subject" msgstr "Gaia" -#: ../src/history_manager.py:181 -msgid "" -"Do you want to clean up the database? (STRONGLY NOT RECOMMENDED IF GAJIM IS " -"RUNNING)" -msgstr "" -"Garbitu nahi al duzu datu basea?(EZ DA GOMENDATZEN GAJIM ABIARAZIA BADAGO)" - #: ../src/history_manager.py:183 +msgid "Do you want to clean up the database? (STRONGLY NOT RECOMMENDED IF GAJIM IS RUNNING)" +msgstr "Garbitu nahi al duzu datu basea?(EZ DA GOMENDATZEN GAJIM ABIARAZIA BADAGO)" + +#: ../src/history_manager.py:185 msgid "" -"Normally allocated database size will not be freed, it will just become " -"reusable. If you really want to reduce database filesize, click YES, else " -"click NO.\n" +"Normally allocated database size will not be freed, it will just become reusable. If you really want to reduce database filesize, click YES, else click NO.\n" "\n" "In case you click YES, please wait..." msgstr "" -"Normalean hautaturiko datu basearen tamaina ez da libratuko, ezta ere " -"berrerabilgarri bihurtuko. Datu basearen tamaina gutxitu nahi baduzu, BAI " -"sakatu, bestela EZ.\n" +"Normalean hautaturiko datu basearen tamaina ez da libratuko, ezta ere berrerabilgarri bihurtuko. Datu basearen tamaina gutxitu nahi baduzu, BAI sakatu, bestela EZ.\n" "\n" "BAI sakatu baduzu, mesedez itxoin..." -#: ../src/history_manager.py:389 +#: ../src/history_manager.py:391 msgid "Exporting History Logs..." msgstr "Historialeko Log-ak Esportatzen...." -#: ../src/history_manager.py:465 +#: ../src/history_manager.py:467 #, python-format msgid "%(who)s on %(time)s said: %(message)s\n" msgstr "%(who)s %(time)s-ean esan du: %(message)s\n" -#: ../src/history_manager.py:465 +#: ../src/history_manager.py:467 msgid "who" msgstr "zein" -#: ../src/history_manager.py:503 +#: ../src/history_manager.py:505 msgid "Do you really want to delete logs of the selected contact?" msgid_plural "Do you really want to delete logs of the selected contacts?" msgstr[0] "Ziur al zaude hautaturiko kontaktuaren log-a ezabatu nahi duzula?" -msgstr[1] "" -"Ziur al zaude hautaturiko kontaktuaren log-ak ezabatu nahi dituzula?" +msgstr[1] "Ziur al zaude hautaturiko kontaktuaren log-ak ezabatu nahi dituzula?" -#: ../src/history_manager.py:507 ../src/history_manager.py:543 +#: ../src/history_manager.py:509 +#: ../src/history_manager.py:545 msgid "This is an irreversible operation." msgstr "Itzulgaitza den operazio bat da hau." -#: ../src/history_manager.py:540 +#: ../src/history_manager.py:542 msgid "Do you really want to delete the selected message?" msgid_plural "Do you really want to delete the selected messages?" msgstr[0] "Ziur al zaude hautaturiko mezua ezabatu nahi duzula?" msgstr[1] "Ziur al zaude hautaturiko mezuak ezabatu nahi dituzula?" -#: ../src/history_window.py:111 ../src/history_window.py:113 +#: ../src/history_window.py:102 +#: ../src/history_window.py:104 #, python-format msgid "Conversation History with %s" msgstr "Elkarrizketa Historiala %s-rekin" -#: ../src/history_window.py:265 +#: ../src/history_window.py:258 #, python-format msgid "%(nick)s is now %(status)s: %(status_msg)s" msgstr "%(nick)s orain %(status)s dago: %(status_msg)s" -#: ../src/history_window.py:269 +#: ../src/history_window.py:262 +#: ../src/notify.py:113 #, python-format msgid "%(nick)s is now %(status)s" msgstr "%(nick)s orain dago %(status)s" -#: ../src/history_window.py:275 +#: ../src/history_window.py:268 #, python-format msgid "Status is now: %(status)s: %(status_msg)s" msgstr "Egoera orain da: %(status)s: %(status_msg)s" -#: ../src/history_window.py:278 +#: ../src/history_window.py:271 #, python-format msgid "Status is now: %(status)s" msgstr "Egoera orain da: %(status)s" -#: ../src/message_window.py:233 +#: ../src/message_window.py:244 msgid "Messages" msgstr "Mezuak" -#: ../src/message_window.py:234 +#: ../src/message_window.py:245 #, python-format msgid "%s - Gajim" msgstr "%s - Gajim" -#: ../src/roster_window.py:140 +#: ../src/notify.py:111 +#, python-format +msgid "%(nick)s Changed Status" +msgstr "%(nick)s Egoera Aldatu du" + +#: ../src/notify.py:121 +#, python-format +msgid "%(nickname)s Signed In" +msgstr "%(nickname)s Konektatuta" + +#: ../src/notify.py:129 +#, python-format +msgid "%(nickname)s Signed Out" +msgstr "%(nickname)s Deskonektatuta" + +#: ../src/notify.py:141 +#, python-format +msgid "New Single Message from %(nickname)s" +msgstr "Mezu Berria %(nickname)s -etik" + +#: ../src/notify.py:150 +#, python-format +msgid "New Private Message from room %s" +msgstr "Mezu Pribatu Berri Bat %s gelatik" + +#: ../src/notify.py:151 +#, python-format +msgid "%(nickname)s: %(message)s" +msgstr "%(nickname)s: %(message)s" + +#: ../src/notify.py:157 +#, python-format +msgid "New Message from %(nickname)s" +msgstr "Mezu Berria %(nickname)s -etik" + +#: ../src/roster_window.py:131 msgid "Merged accounts" msgstr "Batu kontuak" -#: ../src/roster_window.py:289 ../src/common/helpers.py:42 +#: ../src/roster_window.py:288 +#: ../src/common/helpers.py:39 msgid "Observers" msgstr "Begiratzaileak" -#: ../src/roster_window.py:542 +#: ../src/roster_window.py:544 #, python-format msgid "You are already in room %s" msgstr "%s gelan zaude dagoeneko" -#: ../src/roster_window.py:546 ../src/roster_window.py:2262 +#: ../src/roster_window.py:548 +#: ../src/roster_window.py:2280 msgid "You cannot join a room while you are invisible" msgstr "Ezin duzu txat talde batera sartu ikusezin zauden bitartean" #. the 'manage gc bookmarks' item is showed #. below to avoid duplicate code #. add -#: ../src/roster_window.py:735 +#: ../src/roster_window.py:748 #, python-format msgid "to %s account" msgstr "%s kontura" #. disco -#: ../src/roster_window.py:742 +#: ../src/roster_window.py:755 #, python-format msgid "using %s account" msgstr "%s kontua erabiliz" -#. new message +#. new chat #. for chat_with #. for single message -#: ../src/roster_window.py:750 ../src/systray.py:194 ../src/systray.py:201 +#: ../src/roster_window.py:763 +#: ../src/systray.py:193 +#: ../src/systray.py:198 #, python-format msgid "using account %s" msgstr "%s kontua erabiliz " #. profile, avatar -#: ../src/roster_window.py:759 +#: ../src/roster_window.py:772 #, python-format msgid "of account %s" msgstr "%s kontukoa" -#: ../src/roster_window.py:818 +#: ../src/roster_window.py:831 msgid "Manage Bookmarks..." msgstr "Talde Agenda Moldatu..." -#: ../src/roster_window.py:842 +#: ../src/roster_window.py:855 #, python-format msgid "for account %s" msgstr "%s konturako" #. History manager -#: ../src/roster_window.py:863 +#: ../src/roster_window.py:876 msgid "History Manager" msgstr "Historial Administratzailea" -#: ../src/roster_window.py:872 +#: ../src/roster_window.py:885 msgid "_Join New Room" msgstr "Gela Berrian _Sartu" -#: ../src/roster_window.py:1158 +#: ../src/roster_window.py:1159 #, python-format msgid "Transport \"%s\" will be removed" msgstr "\"%s\" transportea ezabatu da" -#: ../src/roster_window.py:1158 -msgid "" -"You will no longer be able to send and receive messages to contacts from " -"this transport." -msgstr "" -"You will no longer be able to send and receive messages to contacts from " -"this transport." +#: ../src/roster_window.py:1159 +msgid "You will no longer be able to send and receive messages to contacts from this transport." +msgstr "You will no longer be able to send and receive messages to contacts from this transport." -#: ../src/roster_window.py:1200 +#: ../src/roster_window.py:1201 msgid "Assign OpenPGP Key" msgstr "OpenPGP Kodea Izendatu" -#: ../src/roster_window.py:1201 +#: ../src/roster_window.py:1202 msgid "Select a key to apply to the contact" msgstr "Kode bat aukeratu kontuari ezartzeko" @@ -3831,243 +4224,245 @@ msgstr "Log _desaktibatua" msgid "_Change Status Message" msgstr "_Egoera Mezua aldatu" -#: ../src/roster_window.py:1617 +#: ../src/roster_window.py:1621 msgid "Authorization has been sent" msgstr "Autorizazioa bidalia izan da" -#: ../src/roster_window.py:1618 +#: ../src/roster_window.py:1622 #, python-format msgid "Now \"%s\" will know your status." msgstr "Orain \"%s\"-ak jakingo du zure egoera." -#: ../src/roster_window.py:1642 +#: ../src/roster_window.py:1646 msgid "Subscription request has been sent" msgstr "Harpidetza eskaria bidalia izan da" -#: ../src/roster_window.py:1643 +#: ../src/roster_window.py:1647 #, python-format msgid "If \"%s\" accepts this request you will know his or her status." msgstr "\"%s\" harpidetza onartzen baduzu bere egoera ikus ahal izango duzu." -#: ../src/roster_window.py:1654 +#: ../src/roster_window.py:1658 msgid "Authorization has been removed" msgstr "Autorizazioa ezabatua izan da." -#: ../src/roster_window.py:1655 +#: ../src/roster_window.py:1659 #, python-format msgid "Now \"%s\" will always see you as offline." msgstr "Orain \"%s\" deskonektatuta ikusiko zaitu beti." -#: ../src/roster_window.py:1824 +#: ../src/roster_window.py:1822 #, python-format msgid "Contact \"%s\" will be removed from your roster" msgstr "\"%s\" kontaktua ezabatua izango da zure zerrendatik" -#: ../src/roster_window.py:1828 -msgid "" -"By removing this contact you also remove authorization resulting in him or " -"her always seeing you as offline." -msgstr "" -"Kontaktua ezabatuz bere autorizazioa ere ezabatzen duzu. Beraz, kontaktuak " -"deskonektatua ikusiko zaitu beti." +#: ../src/roster_window.py:1826 +msgid "By removing this contact you also remove authorization resulting in him or her always seeing you as offline." +msgstr "Kontaktua ezabatuz bere autorizazioa ere ezabatzen duzu. Beraz, kontaktuak deskonektatuta ikusiko zaitu beti." -#: ../src/roster_window.py:1832 -msgid "" -"By removing this contact you also by default remove authorization resulting " -"in him or her always seeing you as offline." -msgstr "" -"Kontaktua ezabatuz bere autorizazioa ere borratzen duzu. Beraz, kontaktuak " -"deskonektatua ikusiko zaitu beti." +#: ../src/roster_window.py:1830 +msgid "By removing this contact you also by default remove authorization resulting in him or her always seeing you as offline." +msgstr "Kontaktua ezabatuz bere autorizazioa ere borratzen duzu. Beraz, kontaktuak deskonektatuta ikusiko zaitu beti." -#: ../src/roster_window.py:1833 +#: ../src/roster_window.py:1831 msgid "I want this contact to know my status after removal" msgstr "Kontaktu hau ezabatu ondoren nire egoera jakitea nahi dut" -#: ../src/roster_window.py:1901 +#: ../src/roster_window.py:1899 msgid "Passphrase Required" msgstr "Pasa-esaldia Behar da" -#: ../src/roster_window.py:1902 +#: ../src/roster_window.py:1900 #, python-format msgid "Enter GPG key passphrase for account %s." msgstr "Sartu GPG kodearen pasa-esaldia %s konturako." -#: ../src/roster_window.py:1907 +#: ../src/roster_window.py:1905 msgid "Save passphrase" msgstr "Gorde pasa-esaldia" -#: ../src/roster_window.py:1915 +#: ../src/roster_window.py:1913 msgid "Wrong Passphrase" msgstr "Pasa-esaldi okerra" -#: ../src/roster_window.py:1916 +#: ../src/roster_window.py:1914 msgid "Please retype your GPG passphrase or press Cancel." msgstr "Mesedez berridatzi zure GPG pasa-esaldia edo kantzelatu." -#: ../src/roster_window.py:1964 ../src/roster_window.py:2021 +#: ../src/roster_window.py:1963 +#: ../src/roster_window.py:2020 msgid "You are participating in one or more group chats" msgstr "Txat talde bat baino gehiegotan parte hartzen ari zara." -#: ../src/roster_window.py:1965 ../src/roster_window.py:2022 -msgid "" -"Changing your status to invisible will result in disconnection from those " -"group chats. Are you sure you want to go invisible?" -msgstr "" -"Zure egoera ikusezinera pasatzen baduzu deskonektatu egingo zara txat talde " -"honetatik. Ziur al zaude ikusezin jarri nahi duzula?" +#: ../src/roster_window.py:1964 +#: ../src/roster_window.py:2021 +msgid "Changing your status to invisible will result in disconnection from those group chats. Are you sure you want to go invisible?" +msgstr "Zure egoera ikusezinera pasatzen baduzu deskonektatu egingo zara txat talde honetatik. Ziur al zaude ikusezin jarri nahi duzula?" -#: ../src/roster_window.py:1981 +#: ../src/roster_window.py:1980 msgid "No account available" msgstr "Ez dago konturik erabilgarri" -#: ../src/roster_window.py:1982 +#: ../src/roster_window.py:1981 msgid "You must create an account before you can chat with other contacts." -msgstr "" -"Kontu bat sortu behar duzu norbaitekin txateatzeko aukera izan baino lehen." +msgstr "Kontu bat sortu behar duzu norbaitekin txateatzeko aukera izan baino lehen." -#: ../src/roster_window.py:2427 ../src/roster_window.py:2433 +#: ../src/roster_window.py:2452 +#: ../src/roster_window.py:2458 msgid "You have unread messages" msgstr "Irakurri gabeko mezu bat duzu" -#: ../src/roster_window.py:2428 ../src/roster_window.py:2434 -msgid "" -"Messages will only be available for reading them later if you have history " -"enabled." +#: ../src/roster_window.py:2453 +#: ../src/roster_window.py:2459 +msgid "Messages will only be available for reading them later if you have history enabled." msgstr "Mezuak gero irakurri ahalko dira historiala aktibatua baduzu." -#: ../src/roster_window.py:3184 +#: ../src/roster_window.py:3231 #, python-format msgid "Drop %s in group %s" msgstr "Bidali %s taldea %s-era" -#: ../src/roster_window.py:3191 +#: ../src/roster_window.py:3238 #, python-format msgid "Make %s and %s metacontacts" msgstr "Egin %s eta %s metacontacts" -#: ../src/roster_window.py:3358 +#: ../src/roster_window.py:3408 msgid "Change Status Message..." msgstr "Egoera Mezua Aldatu..." -#: ../src/systray.py:155 +#: ../src/systray.py:154 msgid "_Change Status Message..." msgstr "_Egoera Mezua Aldatu..." -#: ../src/systray.py:236 +#: ../src/systray.py:231 msgid "Hide this menu" msgstr "Ezkutatu Menua" -#: ../src/systraywin32.py:266 ../src/systraywin32.py:285 -#: ../src/tooltips.py:315 +#: ../src/systraywin32.py:261 +#: ../src/systraywin32.py:280 #, python-format msgid "Gajim - %d unread message" msgid_plural "Gajim - %d unread messages" msgstr[0] "Gajim - %d mezu irakurri gabe" msgstr[1] "Gajim - %d irakurri gabeko mezuak" -#: ../src/tooltips.py:321 +#: ../src/tooltips.py:326 #, python-format -msgid "Gajim - %d unread single message" -msgid_plural "Gajim - %d unread single messages" -msgstr[0] "Gajim - %d mezu irakurri gabe" -msgstr[1] "Gajim - %d irakurri gabeko mezuak" +msgid " %d unread message" +msgid_plural " %d unread messages" +msgstr[0] "%d mezu irakurri gabe" +msgstr[1] "%d mezu irakurri gabe" -#: ../src/tooltips.py:327 +#: ../src/tooltips.py:332 #, python-format -msgid "Gajim - %d unread group chat message" -msgid_plural "Gajim - %d unread group chat messages" -msgstr[0] "Gajim - %d txat taldeko mezua irakurri gabe" -msgstr[1] "Gajim - %d txat taldeko mezuak irakurri gabe" +msgid " %d unread single message" +msgid_plural " %d unread single messages" +msgstr[0] "%d mezu irakurri gabe" +msgstr[1] "%d irakurri gabeko mezuak" -#: ../src/tooltips.py:333 +#: ../src/tooltips.py:338 #, python-format -msgid "Gajim - %d unread private message" -msgid_plural "Gajim - %d unread private messages" -msgstr[0] "Gajim - %d mezu pribatu irakurri gabe" -msgstr[1] "Gajim - %d mezu pribatu irakurri gabe" +msgid " %d unread group chat message" +msgid_plural " %d unread group chat messages" +msgstr[0] "%d txat taldeko mezua irakurri gabe" +msgstr[1] "%d txat taldeko mezuak irakurri gabe" -#: ../src/tooltips.py:348 ../src/tooltips.py:350 +#: ../src/tooltips.py:344 +#, python-format +msgid " %d unread private message" +msgid_plural " %d unread private messages" +msgstr[0] "%d mezu pribatu irakurri gabe" +msgstr[1] "%d mezu pribatu irakurri gabe" + +#: ../src/tooltips.py:359 +#: ../src/tooltips.py:361 #, python-format msgid "Gajim - %s" msgstr "Gajim - %s" -#: ../src/tooltips.py:383 +#: ../src/tooltips.py:395 msgid "Role: " msgstr "Eginkizun:" -#: ../src/tooltips.py:384 +#: ../src/tooltips.py:396 msgid "Affiliation: " msgstr "Afizioak: " -#: ../src/tooltips.py:386 ../src/tooltips.py:518 +#: ../src/tooltips.py:398 +#: ../src/tooltips.py:537 msgid "Resource: " msgstr "Baliabideak: " -#: ../src/tooltips.py:394 ../src/tooltips.py:521 ../src/tooltips.py:543 -#: ../src/tooltips.py:654 +#: ../src/tooltips.py:407 +#: ../src/tooltips.py:540 +#: ../src/tooltips.py:565 +#: ../src/tooltips.py:676 msgid "Status: " msgstr "Egoera: " -#: ../src/tooltips.py:501 +#: ../src/tooltips.py:514 msgid "Subscription: " msgstr "Harpidetza: " -#: ../src/tooltips.py:510 +#: ../src/tooltips.py:523 msgid "OpenPGP: " msgstr "OpenPGP: " -#: ../src/tooltips.py:548 +#: ../src/tooltips.py:570 #, python-format msgid "Last status on %s" msgstr "Azken egoera %s-ean" -#: ../src/tooltips.py:550 +#: ../src/tooltips.py:572 #, python-format msgid "Since %s" msgstr "Noiztik %s" -#: ../src/tooltips.py:610 +#: ../src/tooltips.py:632 msgid "Download" msgstr "Deskargatu" -#: ../src/tooltips.py:616 +#: ../src/tooltips.py:638 msgid "Upload" msgstr "Kargatu" -#: ../src/tooltips.py:623 +#: ../src/tooltips.py:645 msgid "Type: " msgstr "Mota: " -#: ../src/tooltips.py:629 +#: ../src/tooltips.py:651 msgid "Transferred: " msgstr "Transferitua:" -#: ../src/tooltips.py:632 ../src/tooltips.py:653 +#: ../src/tooltips.py:654 +#: ../src/tooltips.py:675 msgid "Not started" msgstr "Hasigabea" -#: ../src/tooltips.py:636 +#: ../src/tooltips.py:658 msgid "Stopped" msgstr "Gelditua" -#: ../src/tooltips.py:638 ../src/tooltips.py:641 +#: ../src/tooltips.py:660 +#: ../src/tooltips.py:663 msgid "Completed" msgstr "Osatua" #. stalled is not paused. it is like 'frozen' it stopped alone -#: ../src/tooltips.py:649 +#: ../src/tooltips.py:671 msgid "Stalled" msgstr "Stalled" -#: ../src/tooltips.py:651 +#: ../src/tooltips.py:673 msgid "Transferring" msgstr "Tranferitzen" -#: ../src/tooltips.py:683 +#: ../src/tooltips.py:705 msgid "This service has not yet responded with detailed information" msgstr "Zerbitzu honek ez du oraindik erantzun informazio zehaztuz." -#: ../src/tooltips.py:686 +#: ../src/tooltips.py:708 msgid "" "This service could not respond with detailed information.\n" "It is most likely legacy or broken" @@ -4076,113 +4471,102 @@ msgstr "" "Seguraski ez du erantzun espero bezala edo ez dabil." #. keep identation -#: ../src/vcard.py:186 +#: ../src/vcard.py:188 msgid "Could not load image" msgstr "Ezin izan da irudia kargatu" -#: ../src/vcard.py:262 +#: ../src/vcard.py:289 msgid "?Client:Unknown" msgstr "Aurkitu gabea" -#: ../src/vcard.py:264 +#: ../src/vcard.py:291 msgid "?OS:Unknown" msgstr "Aurkitu gabea" -#: ../src/vcard.py:281 +#: ../src/vcard.py:308 #, python-format msgid "since %s" msgstr "noiztik %s" -#: ../src/vcard.py:305 -msgid "" -"This contact is interested in your presence information, but you are not " -"interested in his/her presence" -msgstr "" -"Kontu hau zure egoera informazioan interesatuta dago , baina zu ez zaude " -"haren egoera informazioan interesatuta" +#: ../src/vcard.py:332 +msgid "This contact is interested in your presence information, but you are not interested in his/her presence" +msgstr "Kontu hau zure egoera informazioan interesatuta dago , baina zu ez zaude haren egoera informazioan interesatuta" -#: ../src/vcard.py:307 -msgid "" -"You are interested in the contact's presence information, but he/she is not " -"interested in yours" -msgstr "" -"Kontaktuaren egoera informazioan interesatuta zaude, baina berak ez du zugan " -"interesik" +#: ../src/vcard.py:334 +msgid "You are interested in the contact's presence information, but he/she is not interested in yours" +msgstr "Kontaktuaren egoera informazioan interesatuta zaude, baina berak ez du zugan interesik" -#: ../src/vcard.py:309 +#: ../src/vcard.py:336 msgid "You and the contact are interested in each other's presence information" msgstr "Zu eta kontaktua, bien egoera informazioetan interesatuta zaudete" #. None -#: ../src/vcard.py:311 -msgid "" -"You are not interested in the contact's presence, and neither he/she is " -"interested in yours" -msgstr "" -"Zu ez zaude haren egoera informazioan interesatuta, bera zugan interesa du" +#: ../src/vcard.py:338 +msgid "You are not interested in the contact's presence, and neither he/she is interested in yours" +msgstr "Zu ez zaude haren egoera informazioan interesatuta, bera zugan interesa du" -#: ../src/vcard.py:320 +#: ../src/vcard.py:347 msgid "You are waiting contact's answer about your subscription request" -msgstr "" -"Zure harpidetza eskariaren erantzunaren zain zaude kontaktuaren aldetik" +msgstr "Zure harpidetza eskariaren erantzunaren zain zaude kontaktuaren aldetik" -#: ../src/vcard.py:332 ../src/vcard.py:355 +#: ../src/vcard.py:359 +#: ../src/vcard.py:382 msgid " resource with priority " msgstr "baliabidea lehentasunarekin: " -#: ../src/vcard.py:434 +#: ../src/vcard.py:458 msgid "Without a connection you can not publish your contact information." msgstr "Konexiorik gabe ezin duzu zure kontaktuaren informazioa ezarri." -#: ../src/vcard.py:463 +#: ../src/vcard.py:491 msgid "Without a connection, you can not get your contact information." msgstr "Konexiorik gabe ezin duzu zure kontaktu informazioa lortu." -#: ../src/vcard.py:467 +#: ../src/vcard.py:495 msgid "Personal details" msgstr "Informazio pertsonala" -#: ../src/common/check_paths.py:39 +#: ../src/common/check_paths.py:35 msgid "creating logs database" msgstr "logs-en datu basea sortzen" -#: ../src/common/check_paths.py:84 ../src/common/check_paths.py:95 -#: ../src/common/check_paths.py:102 +#: ../src/common/check_paths.py:82 +#: ../src/common/check_paths.py:93 +#: ../src/common/check_paths.py:100 #, python-format msgid "%s is file but it should be a directory" msgstr "%s fitxero bat da baina direktorio bat izan daiteke" -#: ../src/common/check_paths.py:85 ../src/common/check_paths.py:96 -#: ../src/common/check_paths.py:103 ../src/common/check_paths.py:110 +#: ../src/common/check_paths.py:83 +#: ../src/common/check_paths.py:94 +#: ../src/common/check_paths.py:101 +#: ../src/common/check_paths.py:109 msgid "Gajim will now exit" msgstr "Gajim orain badago" -#: ../src/common/check_paths.py:109 +#: ../src/common/check_paths.py:108 #, python-format msgid "%s is directory but should be file" msgstr "%s direktorio bat da baina fitxero bat izan daiteke" -#: ../src/common/check_paths.py:125 +#: ../src/common/check_paths.py:124 #, python-format msgid "creating %s directory" msgstr "%s direktorioa sortzen" -#: ../src/common/exceptions.py:35 +#: ../src/common/exceptions.py:32 msgid "pysqlite2 (aka python-pysqlite2) dependency is missing. Exiting..." msgstr "pysqlite2 (aka python-pysqlite2) dependency is missing. Exiting..." -#: ../src/common/exceptions.py:43 +#: ../src/common/exceptions.py:40 msgid "Service not available: Gajim is not running, or remote_control is False" -msgstr "" -"Zerbitzua ez erabilgarri: Gajim ez dago abiarazita edota remote_control " -"False egoeran dago" +msgstr "Zerbitzua ez erabilgarri: Gajim ez dago abiarazita edota remote_control False egoeran dago" -#: ../src/common/exceptions.py:51 +#: ../src/common/exceptions.py:48 msgid "D-Bus is not present on this machine or python module is missing" -msgstr "" -"D-bus ez dago ordenagailu honetan edo python moduloak ez daude erabilgarri" +msgstr "D-bus ez dago ordenagailu honetan edo python moduloak ez daude erabilgarri" -#: ../src/common/exceptions.py:59 +#: ../src/common/exceptions.py:56 msgid "" "Session bus is not available.\n" "Try reading http://trac.gajim.org/wiki/GajimDBus" @@ -4190,59 +4574,75 @@ msgstr "" "Bus saioa ez dago erabilgarri.\n" "Saiatu irakurtzen http://trac.gajim.org/wiki/GajimDBus" -#: ../src/common/config.py:53 +#: ../src/common/config.py:51 msgid "Use DBus and Notification-Daemon to show notifications" msgstr "Erabili DBus eta Notification-Daemon jakinarazketak erakusteko." -#: ../src/common/config.py:57 +#: ../src/common/config.py:55 msgid "Time in minutes, after which your status changes to away." msgstr "Ordua minutuetan, zure egoera kanpoan aldatu ondoren." -#: ../src/common/config.py:58 +#: ../src/common/config.py:56 msgid "Away as a result of being idle" msgstr "Kanpoan beste zerbaitetan egoteagatik" -#: ../src/common/config.py:60 +#: ../src/common/config.py:58 msgid "Time in minutes, after which your status changes to not available." msgstr "Ordua minutuetan, zure egoera ez erabilgarri aldatu ondoren." -#: ../src/common/config.py:61 +#: ../src/common/config.py:59 msgid "Not available as a result of being idle" msgstr "Ez erabilgarri beste zerbaitetan egoteagatik" -#: ../src/common/config.py:88 +#: ../src/common/config.py:77 +msgid "List (space separated) of rows (accounts and groups) that are collapsed" +msgstr "List (space separated) of rows (accounts and groups) that are collapsed" + +#: ../src/common/config.py:83 +msgid "" +"'always' - print time for every message.\n" +"'sometimes' - print time every print_ichat_every_foo_minutes minute.\n" +"'never' - never print time." +msgstr "" +"'always' - inprimatu ordua mezuko.\n" +"'sometimes' - inprimatu ordua print_ichat_every_foo_minutes minutuko.\n" +"'never' - inoiz ez inprimatu ordua." + +#: ../src/common/config.py:84 +msgid "Value of fuzziness from 1 to 4 or 0 to disable fuzzyclock. 1 is the most precise clock, 4 the less precise one." +msgstr "1-tik 4-rako baloreak eman fuzziness-ri eta 0 fuzzyclock ezintzeko. 1 ordu zehatzena da, 4 berriz, zehaztasun gutxienekoa." + +#: ../src/common/config.py:87 msgid "Treat * / _ pairs as possible formatting characters." msgstr "Treat * / _ pairs as possible formatting characters." -#: ../src/common/config.py:89 -msgid "" -"If True, do not remove */_ . So *abc* will be bold but with * * not removed." -msgstr "" -"If True, do not remove */_ . So *abc* will be bold but with * * not removed." +#: ../src/common/config.py:88 +msgid "If True, do not remove */_ . So *abc* will be bold but with * * not removed." +msgstr "If True, do not remove */_ . So *abc* will be bold but with * * not removed." + +#: ../src/common/config.py:98 +msgid "Character to add after nickname when using nick completion (tab) in group chat" +msgstr "Izengoitiaren ondoren ezartzeko karakterea txat talde batean tab-a erabiltzen bada" + +#: ../src/common/config.py:99 +msgid "Character to propose to add after desired nickname when desired nickname is used by someone else in group chat" +msgstr "Izengoitiaren ondoren jartzeko proposatzen den karakterea, txat taldean beste pertsona batek izengoiti berbera badu" #: ../src/common/config.py:131 msgid "Add * and [n] in roster title?" msgstr "Sartu * eta [n] zerrendako izenburuan?" #: ../src/common/config.py:132 -msgid "" -"How many lines to remember from previous conversation when a chat tab/window " -"is reopened." +msgid "How many lines to remember from previous conversation when a chat tab/window is reopened." msgstr "Zenbat lerro gogoarazteko lehengo elkarrizketatik leihoa irikitzean." #: ../src/common/config.py:133 msgid "How many minutes should last lines from previous conversation last." -msgstr "" -"Zenbat minutu izan behar ditu azken lerroak lehengo elkarrizketaren " -"azkenetik." +msgstr "Zenbat minutu izan behar ditu azken lerroak lehengo elkarrizketaren azkenetik." #: ../src/common/config.py:134 -msgid "" -"Send message on Ctrl+Enter and with Enter make new line (Mirabilis ICQ " -"Client default behaviour)." -msgstr "" -"Bidali mezua Ctrl+Enter -rekin eta Enter-ekin lerro berria egin. (Mirabilis " -"ICQ Client default behaviour)." +msgid "Send message on Ctrl+Enter and with Enter make new line (Mirabilis ICQ Client default behaviour)." +msgstr "Bidali mezua Ctrl+Enter -rekin eta Enter-ekin lerro berria egin. (Mirabilis ICQ Client default behaviour)." #: ../src/common/config.py:136 msgid "How many lines to store for Ctrl+KeyUP." @@ -4250,44 +4650,32 @@ msgstr "How many lines to store for Ctrl+KeyUP." #: ../src/common/config.py:139 #, python-format -msgid "" -"Either custom url with %s in it where %s is the word/phrase or 'WIKTIONARY' " -"which means use wiktionary." -msgstr "" -"Either custom url with %s in it where %s is the word/phrase or 'WIKTIONARY' " -"which means use wiktionary." +msgid "Either custom url with %s in it where %s is the word/phrase or 'WIKTIONARY' which means use wiktionary." +msgstr "Either custom url with %s in it where %s is the word/phrase or 'WIKTIONARY' which means use wiktionary." #: ../src/common/config.py:142 msgid "If checked, Gajim can be controlled remotely using gajim-remote." msgstr "Hautatua badago, Gajim gajim-remote erabiliz kontrolatu daiteke." +#: ../src/common/config.py:145 +msgid "When not printing time for every message (print_time==sometimes), print it every x minutes" +msgstr "Ez denean ordua mezu bakoitzeko inprimatzen (print_time==sometimes), imprimatu x minuturo" + #: ../src/common/config.py:146 msgid "Ask before closing a group chat tab/window." msgstr "Galdetu leiho bat itxi baino lehen." #: ../src/common/config.py:147 -msgid "" -"Always ask before closing group chat tab/window in this space separated list " -"of room jids." -msgstr "" -"Always ask before closing group chat tab/window in this space separated list " -"of room jids." +msgid "Always ask before closing group chat tab/window in this space separated list of room jids." +msgstr "Always ask before closing group chat tab/window in this space separated list of room jids." #: ../src/common/config.py:148 -msgid "" -"Never ask before closing group chat tab/window in this space separated list " -"of room jids." -msgstr "" -"Never ask before closing group chat tab/window in this space separated list " -"of room jids." +msgid "Never ask before closing group chat tab/window in this space separated list of room jids." +msgstr "Never ask before closing group chat tab/window in this space separated list of room jids." #: ../src/common/config.py:151 -msgid "" -"Overrides the host we send for File Transfer in case of address translation/" -"port forwarding." -msgstr "" -"Overrides the host we send for File Transfer in case of address translation/" -"port forwarding." +msgid "Overrides the host we send for File Transfer in case of address translation/port forwarding." +msgstr "Overrides the host we send for File Transfer in case of address translation/port forwarding." #: ../src/common/config.py:153 msgid "IEC standard says KiB = 1024 bytes, KB = 1000 bytes." @@ -4298,301 +4686,275 @@ msgid "Show tab when only one conversation?" msgstr "Erakutsi tab-a bakarrik elkarrizketa bat dagoenean?" #: ../src/common/config.py:162 -msgid "Show tab border if one conversation?" -msgstr "Show tab border if one conversation?" +msgid "Show tabbed notebook border in chat windows?" +msgstr "Show tabbed notebook border in chat windows?" #: ../src/common/config.py:163 msgid "Show close button in tab?" msgstr "Isteko botoila erakutsi tab-ean?" #: ../src/common/config.py:176 -msgid "" -"A semicolon-separated list of words that will be highlighted in multi-user " -"chat." -msgstr "" -"A semicolon-separated list of words that will be highlighted in multi-user " -"chat." +msgid "A semicolon-separated list of words that will be highlighted in multi-user chat." +msgstr "A semicolon-separated list of words that will be highlighted in multi-user chat." #: ../src/common/config.py:177 -msgid "" -"If True, quits Gajim when X button of Window Manager is clicked. This " -"setting is taken into account only if trayicon is used." -msgstr "" -"If True, quits Gajim when X button of Window Manager is clicked. This " -"setting is taken into account only if trayicon is used." +msgid "If True, quits Gajim when X button of Window Manager is clicked. This setting is taken into account only if trayicon is used." +msgstr "If True, quits Gajim when X button of Window Manager is clicked. This setting is taken into account only if trayicon is used." #: ../src/common/config.py:178 msgid "If True, Gajim registers for xmpp:// on each startup." msgstr "Egia bada, Gajim-ek erregistratuko du xmpp:/ abiaraztean." #: ../src/common/config.py:179 -msgid "" -"If True, Gajim will display an icon on each tab containing unread messages. " -"Depending on the theme, this icon may be animated." -msgstr "" -"Egia bada, Gajim-ek ikono bat azalaraziko du leiho horretan irakurri gabeko " -"mezuak adieraziz. Gaiaren arabera ikonoa animatua izan daiteke." +msgid "If True, Gajim will display an icon on each tab containing unread messages. Depending on the theme, this icon may be animated." +msgstr "Egia bada, Gajim-ek ikono bat azalaraziko du leiho horretan irakurri gabeko mezuak adieraziz. Gaiaren arabera ikonoa animatua izan daiteke." #: ../src/common/config.py:180 -msgid "" -"If True, Gajim will display the status message, if not empty, for every " -"contact under the contact name in roster window" -msgstr "" -"Egia bada, Gajim-ek egoera mezua azalaraziko du, hutsik ez badago, zerrendan " -"kontaktuaren izenaren azpian azalduko dira." +msgid "If True, Gajim will display the status message, if not empty, for every contact under the contact name in roster window" +msgstr "Egia bada, Gajim-ek egoera mezua azalaraziko du, hutsik ez badago, zerrendan kontaktuaren izenaren azpian azalduko dira." #: ../src/common/config.py:182 -msgid "" -"If True, Gajim will ask for avatar each contact that did not have an avatar " -"last time or has one cached that is too old." -msgstr "" -"If True, Gajim will ask for avatar each contact that did not have an avatar " -"last time or has one cached that is too old." +msgid "If True, Gajim will ask for avatar each contact that did not have an avatar last time or has one cached that is too old." +msgstr "If True, Gajim will ask for avatar each contact that did not have an avatar last time or has one cached that is too old." + +#: ../src/common/config.py:183 +msgid "If False, Gajim will no longer print status line in chats when a contact changes his or her status and/or his or her status message." +msgstr "Gezurra bada, ez da egoera lerroa inprimatuko kontaktu batek bere egoera aldaketa egiten duenean edo/eta bere egoera mezua." -#. FIXME: remove you and make it Gajim will not; and/or his or *her* status messages #: ../src/common/config.py:184 -msgid "" -"If False, you will no longer see status line in chats when a contact changes " -"his or her status and/or his status message." -msgstr "" -"Gezurra bada, ez duzu egoera lerroa ikusiko kontaktu batek bere egoera " -"aldaketa egiten duenean edota bere egoera mezua." +msgid "can be \"none\", \"all\" or \"in_and_out\". If \"none\", Gajim will no longer print status line in groupchats when a member changes his or her status and/or his or her status message. If \"all\" Gajim will print all status messages. If \"in_and_out\", gajim will only print FOO enters/leaves room" +msgstr "izan daiteke \"none\", \"all\" edo \"in_and_out\". If \"none\", Gajim-ek ez du inprimatuko egoera lerroa txat talde batean partaide batek bere egoera edo egoera mezua aldatzean. \"all\" bada Gajim-ek egoera guztiak inprimatuko ditu. \"in_and_out\" bada, Gajim-ek sarrera/irteerak inprimatuko ditu bakarrik" + +#: ../src/common/config.py:187 +msgid "Don't show avatar for the transport itself." +msgstr "Ez erakutsarazi transporteen ikurrak." #: ../src/common/config.py:189 -msgid "" -"If True and installed GTK+ and PyGTK versions are at least 2.8, make the " -"window flash (the default behaviour in most Window Managers) when holding " -"pending events." -msgstr "" -"Hautatu badago eta GTK+ eta PyGTK bertsioak gutxienez 2.8 bertsiokoak " -"badira, make the window flash (the default behaviour in most Window " -"Managers) when holding pending events." +msgid "If True and installed GTK+ and PyGTK versions are at least 2.8, make the window flash (the default behaviour in most Window Managers) when holding pending events." +msgstr "Hautatu badago eta GTK+ eta PyGTK bertsioak gutxienez 2.8 bertsiokoak badira, make the window flash (the default behaviour in most Window Managers) when holding pending events." #: ../src/common/config.py:191 -msgid "" -"Jabberd1.4 does not like sha info when one join a password protected room. " -"Turn this option to False to stop sending sha info in groupchat presences" -msgstr "" -"Jabberd1.4 does not like sha info when one join a password protected room. " -"Turn this option to False to stop sending sha info in groupchat presences" +msgid "Jabberd1.4 does not like sha info when one join a password protected room. Turn this option to False to stop sending sha info in groupchat presences" +msgstr "Jabberd1.4 does not like sha info when one join a password protected room. Turn this option to False to stop sending sha info in groupchat presences" -#: ../src/common/config.py:193 +#. always, never, peracct, pertype should not be translated +#: ../src/common/config.py:194 msgid "" "Controls the window where new messages are placed.\n" "'always' - All messages are sent to a single window.\n" "'never' - All messages get their own window.\n" "'peracct' - Messages for each account are sent to a specific window.\n" -"'pertype' - Each message type (e.g., chats vs. groupchats) are sent to a " -"specific window. Note, changing this option requires restarting Gajim before " -"the changes will take effect" +"'pertype' - Each message type (e.g., chats vs. groupchats) are sent to a specific window. Note, changing this option requires restarting Gajim before the changes will take effect" msgstr "" "Kontrolatu leihoa mezu berri bat dagoenean.\n" -"`beti´- Leiho bakarrean jarriko dira mezu guztiak.\n" -"`Inoiz´- Mezu bakoitzak bere leihoa izango du.\n" -"`Kontuko´- Kontaktu baten mezuak leiho berera bidaliko dira.\n" -"`gaiaz´- Mezuko gaiak(txat edo txat taldekoena adibidez) leiho konkretu " -"batera bidaliko dira. Kontuz, funtziona dezan Gajim berriarazi behar da" - -#: ../src/common/config.py:194 -msgid "If False, you will no longer see the avatar in the chat window" -msgstr "Ez badago hautatuta, txat leihoan ez duzu abatererik ikusiko " +"'always' - Leiho bakarrean jarriko dira mezu guztiak.\n" +"'never' - Mezu bakoitzak bere leihoa izango du.\n" +"'peracct' - Kontaktu baten mezuak leiho berera bidaliko dira.\n" +"'pertype' - Mezuko gaiak(txat edo txat taldekoena adibidez) leiho konkretu batera bidaliko dira. Kontuz, funtziona dezan Gajim berriarazi behar da" #: ../src/common/config.py:195 +msgid "If False, you will no longer see the avatar in the chat window" +msgstr "Gezurra bada, txat leihoan ez duzu abatererik ikusiko " + +#: ../src/common/config.py:196 msgid "If True, pressing the escape key closes a tab/window" msgstr "Egia bada, ateratzeko botoila sakatzean tab/leihoa itxiko da" -#: ../src/common/config.py:196 +#: ../src/common/config.py:197 msgid "Hides the buttons in group chat window" msgstr "Ezkutatu botoiak txat taldeko leihoan" -#: ../src/common/config.py:197 +#: ../src/common/config.py:198 msgid "Hides the buttons in two persons chat window" msgstr "Ezkutatu botoilak bi pertsonen txat leihoan " -#: ../src/common/config.py:198 +#: ../src/common/config.py:199 msgid "Hides the banner in a group chat window" msgstr "Ezkutatu banner-a txat talde leihoan" -#: ../src/common/config.py:199 +#: ../src/common/config.py:200 msgid "Hides the banner in two persons chat window" msgstr "Ezkutatu banner-a bi pertsonen txat leihoan " -#: ../src/common/config.py:200 +#: ../src/common/config.py:201 msgid "Hides the room occupants list in groupchat window" msgstr "Ezkutatu gelako jendearen zerrenda txat taldeko leihoan" +#: ../src/common/config.py:202 +msgid "Merge consecutive nickname in chat window" +msgstr "Elkartu hurren hurreneko izengoitia elkarrizketa leihoan" + +#: ../src/common/config.py:203 +msgid "Indentation when using merge consecutive nickame" +msgstr "Indentation when using merge consecutive nickame" + +#: ../src/common/config.py:204 +msgid "List of colors that will be used to color nicknames in groupchats" +msgstr "Txat taldeko izengoitietan erabiliko diren koloreen zerrenda" + #. yes, no, ask -#: ../src/common/config.py:233 +#: ../src/common/config.py:237 msgid "Jabberd2 workaround" msgstr "Jabberd2 workaround" -#: ../src/common/config.py:237 -msgid "" -"If checked, Gajim will use your IP and proxies defined in " -"file_transfer_proxies option for file transfer." -msgstr "" -"Hautatuta badago, Gajim-ek zure IP eta definituriko proxy-ak erabiliko ditu " -"file_transfer_proxies-en fitxero transferentziarako." +#: ../src/common/config.py:241 +msgid "If checked, Gajim will use your IP and proxies defined in file_transfer_proxies option for file transfer." +msgstr "Hautatuta badago, Gajim-ek zure IP eta definituriko proxy-ak erabiliko ditu file_transfer_proxies-en fitxero transferentziarako." -#: ../src/common/config.py:290 +#: ../src/common/config.py:297 msgid "Sleeping" msgstr "Lotan" -#: ../src/common/config.py:291 +#: ../src/common/config.py:298 msgid "Back soon" msgstr "Laster etorriko naiz" -#: ../src/common/config.py:291 +#: ../src/common/config.py:298 msgid "Back in some minutes." msgstr "Minutu batzuk barru berriro hemen." -#: ../src/common/config.py:292 +#: ../src/common/config.py:299 msgid "Eating" msgstr "Jaten" -#: ../src/common/config.py:292 +#: ../src/common/config.py:299 msgid "I'm eating, so leave me a message." msgstr "Jaten ari naiz, utzi mezu bat beraz." -#: ../src/common/config.py:293 +#: ../src/common/config.py:300 msgid "Movie" msgstr "Filmea" -#: ../src/common/config.py:293 +#: ../src/common/config.py:300 msgid "I'm watching a movie." msgstr "Filma bat ikustean ari naiz." -#: ../src/common/config.py:294 +#: ../src/common/config.py:301 msgid "Working" msgstr "Lanean" -#: ../src/common/config.py:294 +#: ../src/common/config.py:301 msgid "I'm working." msgstr "Lanean ari naiz." -#: ../src/common/config.py:295 +#: ../src/common/config.py:302 msgid "Phone" msgstr "Telefonoa" -#: ../src/common/config.py:295 +#: ../src/common/config.py:302 msgid "I'm on the phone." msgstr "Telefonoan nago." -#: ../src/common/config.py:296 +#: ../src/common/config.py:303 msgid "Out" msgstr "kanpoan" -#: ../src/common/config.py:296 +#: ../src/common/config.py:303 msgid "I'm out enjoying life" msgstr "Kanpoan naiz bizitza disfrutatzen" -#: ../src/common/config.py:305 -msgid "" -"Sound to play when a MUC message contains one of the words in " -"muc_highlight_words, or when a MUC message contains your nickname." -msgstr "" -"Soinua bat entzun MUC-ak muc_highlight_words-eko hitz bat agertzean edota " -"MUC-aren mezu batek zure nick-a duenean." +#: ../src/common/config.py:312 +msgid "Sound to play when a MUC message contains one of the words in muc_highlight_words, or when a MUC message contains your nickname." +msgstr "Soinua bat entzun MUC-ak muc_highlight_words-eko hitz bat agertzean edota MUC-aren mezu batek zure izengoitia duenean." -#: ../src/common/config.py:306 -msgid "" -"Sound to play when any MUC message arrives. (This setting is taken into " -"account only if notify_on_all_muc_messages is True)" -msgstr "" -"Soinu bat entzun MUC mezu bat jasotzean. (Aukera hau bakarrik kontuan " -"hartzen da kontuaren notify_on_all_muc_messages True bada)" +#: ../src/common/config.py:313 +msgid "Sound to play when any MUC message arrives. (This setting is taken into account only if notify_on_all_muc_messages is True)" +msgstr "Soinu bat entzun MUC mezu bat jasotzean. (Aukera hau bakarrik kontuan hartzen da kontuaren notify_on_all_muc_messages True bada)" -#: ../src/common/config.py:314 ../src/common/optparser.py:181 +#: ../src/common/config.py:321 +#: ../src/common/optparser.py:185 msgid "green" msgstr "berdea" -#: ../src/common/config.py:318 ../src/common/optparser.py:167 +#: ../src/common/config.py:325 +#: ../src/common/optparser.py:171 msgid "grocery" msgstr "grocery" -#: ../src/common/config.py:322 +#: ../src/common/config.py:329 msgid "human" msgstr "gizakia" -#: ../src/common/config.py:326 +#: ../src/common/config.py:333 msgid "marine" msgstr "arrantzale" -#: ../src/common/connection.py:152 +#: ../src/common/connection.py:172 #, python-format msgid "Connection with account \"%s\" has been lost" msgstr "\"%s\" kontuarekin konexioa galdu da" -#: ../src/common/connection.py:153 +#: ../src/common/connection.py:173 msgid "To continue sending and receiving messages, you will need to reconnect." -msgstr "" -"Mezuak jasotzen eta bidaltzen jarraitzeko berriro konektatu beharko zara." +msgstr "Mezuak jasotzen eta bidaltzen jarraitzeko berriro konektatu beharko zara." -#: ../src/common/connection.py:169 ../src/common/connection.py:195 +#: ../src/common/connection.py:185 +#: ../src/common/connection.py:211 #, python-format msgid "Transport %s answered wrongly to register request." msgstr "%s transporteak harpidetza baimenari errore batez erantzun dio." #. wrong answer -#: ../src/common/connection.py:194 +#: ../src/common/connection.py:210 msgid "Invalid answer" msgstr "Erantzun baliogabea" -#: ../src/common/connection.py:348 ../src/common/connection.py:384 -#: ../src/common/connection.py:754 +#: ../src/common/connection.py:397 +#: ../src/common/connection.py:433 +#: ../src/common/connection.py:857 #, python-format msgid "Could not connect to \"%s\"" msgstr "Ezin izan da konektatu \"%s\" -rekin" -#: ../src/common/connection.py:362 +#: ../src/common/connection.py:411 #, python-format msgid "Connected to server %s:%s with %s" msgstr "%s zerbitzarira konektatu: %s %s -ekin" -#: ../src/common/connection.py:385 +#: ../src/common/connection.py:434 msgid "Check your connection or try again later" msgstr "Begira ezazu zure konexioa edo saiatu berriro" -#: ../src/common/connection.py:410 +#: ../src/common/connection.py:459 #, python-format msgid "Authentication failed with \"%s\"" msgstr "\"%s\" -rekin autentifikazioak huts egin du" -#: ../src/common/connection.py:411 +#: ../src/common/connection.py:460 msgid "Please check your login and password for correctness." msgstr "Mesedez begira ezazu zure izena eta pasahitza xehetasun handiz." #. We didn't set a passphrase -#: ../src/common/connection.py:487 +#: ../src/common/connection.py:573 msgid "OpenPGP passphrase was not given" msgstr "OpenPGP pasa-esaldia ez da eman" #. %s is the account name here -#: ../src/common/connection.py:489 +#: ../src/common/connection.py:575 #, python-format msgid "You will be connected to %s without OpenPGP." msgstr "%s konektatu behar zara OpenPGP-rik gabe." #. do not show I'm invisible! -#: ../src/common/connection.py:526 +#: ../src/common/connection.py:612 msgid "invisible" msgstr "ikusezin" -#: ../src/common/connection.py:527 +#: ../src/common/connection.py:613 msgid "offline" -msgstr "deskonektatua" +msgstr "deskonektatuta" -#: ../src/common/connection.py:528 +#: ../src/common/connection.py:614 #, python-format msgid "I'm %s" msgstr "%s naiz" #. we're not english -#: ../src/common/connection.py:611 +#: ../src/common/connection.py:699 msgid "[This message is encrypted]" msgstr "[Mezu hau enkriptatua dago]" -#: ../src/common/connection.py:649 +#: ../src/common/connection.py:742 #, python-format msgid "" "Subject: %s\n" @@ -4601,752 +4963,293 @@ msgstr "" "Gaia: %s\n" "%s" -#: ../src/common/connection.py:699 +#: ../src/common/connection.py:795 +#: ../src/common/connection_handlers.py:1511 msgid "I would like to add you to my roster." msgstr "Nire zerrendara gehitu nahi zaitut." -#: ../src/common/helpers.py:103 +#: ../src/common/connection_handlers.py:49 +msgid "Unable to load idle module" +msgstr "Ez izan da idle modulua kargatu" + +#: ../src/common/connection_handlers.py:581 +#, python-format +msgid "Registration information for transport %s has not arrived in time" +msgstr "Erregistroaren informazioa transporteetarako %s ez da denboran iritsi" + +#. password required to join +#. we are banned +#. room does not exist +#: ../src/common/connection_handlers.py:1450 +#: ../src/common/connection_handlers.py:1453 +#: ../src/common/connection_handlers.py:1456 +#: ../src/common/connection_handlers.py:1459 +#: ../src/common/connection_handlers.py:1462 +#: ../src/common/connection_handlers.py:1465 +#: ../src/common/connection_handlers.py:1473 +msgid "Unable to join room" +msgstr "Ezin da gela honetara sartu" + +#: ../src/common/connection_handlers.py:1451 +msgid "A password is required to join this room." +msgstr "Pasahitza behar da gela onetan sartzeko." + +#: ../src/common/connection_handlers.py:1454 +msgid "You are banned from this room." +msgstr "Gela honetan ukatua izan zara." + +#: ../src/common/connection_handlers.py:1457 +msgid "Such room does not exist." +msgstr "Honako gela honek ez du existitzen." + +#: ../src/common/connection_handlers.py:1460 +msgid "Room creation is restricted." +msgstr "Gela sortzea mugatua dago." + +#: ../src/common/connection_handlers.py:1463 +msgid "Your registered nickname must be used." +msgstr "Erregistratutako izengoitia erabilia izan behar da." + +#: ../src/common/connection_handlers.py:1466 +msgid "You are not in the members list." +msgstr "Ez zaude kideen zerrendan." + +#: ../src/common/connection_handlers.py:1474 +msgid "" +"Your desired nickname is in use or registered by another occupant.\n" +"Please specify another nickname below:" +msgstr "" +"Zuk aukeratutako izengoitia erregistratuta dago jadanik.\n" +"Mesedez ezarri beste izengoiti bat:" + +#. BE CAREFUL: no con.updateRosterItem() in a callback +#: ../src/common/connection_handlers.py:1519 +#, python-format +msgid "we are now subscribed to %s" +msgstr "%s -ra harpidetuak gaude orain" + +#: ../src/common/connection_handlers.py:1521 +#, python-format +msgid "unsubscribe request from %s" +msgstr "Harpidetza kentzekoa eskaera %s -tik" + +#: ../src/common/connection_handlers.py:1523 +#, python-format +msgid "we are now unsubscribed from %s" +msgstr "%s -ren harpidetzatik kenduta gaude" + +#: ../src/common/connection_handlers.py:1680 +#, python-format +msgid "JID %s is not RFC compliant. It will not be added to your roster. Use roster management tools such as http://jru.jabberstudio.org/ to remove it" +msgstr "JID %s is not RFC compliant. It will not be added to your roster. Use roster management tools such as http://jru.jabberstudio.org/ to remove it" + +#: ../src/common/helpers.py:100 msgid "Invalid character in username." msgstr "Baliogabeko karakterea izenean." -#: ../src/common/helpers.py:108 +#: ../src/common/helpers.py:105 msgid "Server address required." msgstr "Zerbitzariaren helbidea behar da." -#: ../src/common/helpers.py:113 +#: ../src/common/helpers.py:110 msgid "Invalid character in hostname." msgstr "Baliogabeko karakterea hostname -ean." -#: ../src/common/helpers.py:119 +#: ../src/common/helpers.py:116 msgid "Invalid character in resource." msgstr "Invalid character in resource." #. GiB means gibibyte -#: ../src/common/helpers.py:159 +#: ../src/common/helpers.py:156 #, python-format msgid "%s GiB" msgstr "%s Gib" #. GB means gigabyte -#: ../src/common/helpers.py:162 +#: ../src/common/helpers.py:159 #, python-format msgid "%s GB" msgstr "%s GB" #. MiB means mibibyte -#: ../src/common/helpers.py:166 +#: ../src/common/helpers.py:163 #, python-format msgid "%s MiB" msgstr "%s MiB" #. MB means megabyte -#: ../src/common/helpers.py:169 +#: ../src/common/helpers.py:166 #, python-format msgid "%s MB" msgstr "%s MB" #. KiB means kibibyte -#: ../src/common/helpers.py:173 +#: ../src/common/helpers.py:170 #, python-format msgid "%s KiB" msgstr "%s KiB" #. KB means kilo bytes -#: ../src/common/helpers.py:176 +#: ../src/common/helpers.py:173 #, python-format msgid "%s KB" msgstr "%s KB" #. B means bytes -#: ../src/common/helpers.py:179 +#: ../src/common/helpers.py:176 #, python-format msgid "%s B" msgstr "%s B" -#: ../src/common/helpers.py:189 +#: ../src/common/helpers.py:205 msgid "_Busy" -msgstr "Lan_petua" +msgstr "Lan_petuta" -#: ../src/common/helpers.py:191 +#: ../src/common/helpers.py:207 msgid "Busy" -msgstr "Lanpetua" +msgstr "Lanpetuta" -#: ../src/common/helpers.py:194 +#: ../src/common/helpers.py:210 msgid "_Not Available" msgstr "Ez E_rabilgarri" -#: ../src/common/helpers.py:196 +#: ../src/common/helpers.py:212 msgid "Not Available" msgstr "Ez Erabilgarri" -#: ../src/common/helpers.py:199 +#: ../src/common/helpers.py:215 msgid "_Free for Chat" msgstr "Libre _Hitz Egiteko" -#: ../src/common/helpers.py:201 +#: ../src/common/helpers.py:217 msgid "Free for Chat" msgstr "Libre Hitz Egiteko" -#: ../src/common/helpers.py:204 +#: ../src/common/helpers.py:220 msgid "_Available" msgstr "_Libre" -#: ../src/common/helpers.py:206 +#: ../src/common/helpers.py:222 msgid "Available" msgstr "Libre" -#: ../src/common/helpers.py:208 +#: ../src/common/helpers.py:224 msgid "Connecting" msgstr "Konektatzen" -#: ../src/common/helpers.py:211 +#: ../src/common/helpers.py:227 msgid "A_way" msgstr "_Kanpoan" -#: ../src/common/helpers.py:213 +#: ../src/common/helpers.py:229 msgid "Away" msgstr "Kanpoan" -#: ../src/common/helpers.py:216 +#: ../src/common/helpers.py:232 msgid "_Offline" msgstr "_Deskonektatuta" -#: ../src/common/helpers.py:218 +#: ../src/common/helpers.py:234 msgid "Offline" msgstr "Deskonektatuta" -#: ../src/common/helpers.py:221 +#: ../src/common/helpers.py:237 msgid "_Invisible" msgstr "Ikuse_zin" -#: ../src/common/helpers.py:223 -msgid "Invisible" -msgstr "Ikusezin" - -#: ../src/common/helpers.py:227 +#: ../src/common/helpers.py:243 msgid "?contact has status:Unknown" msgstr "Ezin da jakin" -#: ../src/common/helpers.py:229 +#: ../src/common/helpers.py:245 msgid "?contact has status:Has errors" msgstr "Errorea du" -#: ../src/common/helpers.py:234 +#: ../src/common/helpers.py:250 msgid "?Subscription we already have:None" msgstr "Inork ez" -#: ../src/common/helpers.py:236 +#: ../src/common/helpers.py:252 msgid "To" msgstr "Norentzat" -#: ../src/common/helpers.py:238 +#: ../src/common/helpers.py:254 msgid "From" msgstr "-etik" -#: ../src/common/helpers.py:240 +#: ../src/common/helpers.py:256 msgid "Both" msgstr "Biak" -#: ../src/common/helpers.py:248 +#: ../src/common/helpers.py:264 msgid "?Ask (for Subscription):None" msgstr "Inork ez" -#: ../src/common/helpers.py:250 +#: ../src/common/helpers.py:266 msgid "Subscribe" msgstr "Harpidetu" -#: ../src/common/helpers.py:259 +#: ../src/common/helpers.py:275 msgid "?Group Chat Contact Role:None" msgstr "Inor ez" -#: ../src/common/helpers.py:262 +#: ../src/common/helpers.py:278 msgid "Moderators" msgstr "Moderatzaileak" -#: ../src/common/helpers.py:264 +#: ../src/common/helpers.py:280 msgid "Moderator" msgstr "Moderatzailea" -#: ../src/common/helpers.py:267 +#: ../src/common/helpers.py:283 msgid "Participants" msgstr "Partaideak" -#: ../src/common/helpers.py:269 +#: ../src/common/helpers.py:285 msgid "Participant" msgstr "Partaidea" -#: ../src/common/helpers.py:272 +#: ../src/common/helpers.py:288 msgid "Visitors" msgstr "Bisitariak" -#: ../src/common/helpers.py:274 +#: ../src/common/helpers.py:290 msgid "Visitor" msgstr "Bisitaria" -#: ../src/common/helpers.py:310 +#: ../src/common/helpers.py:326 msgid "is paying attention to the conversation" msgstr "arreta jartzen ari da elkarrizketara" -#: ../src/common/helpers.py:312 +#: ../src/common/helpers.py:328 msgid "is doing something else" msgstr "beste zerbait egiten ari da" -#: ../src/common/helpers.py:314 +#: ../src/common/helpers.py:330 msgid "is composing a message..." msgstr "mezu bat sortzen ari da..." #. paused means he or she was compoing but has stopped for a while -#: ../src/common/helpers.py:317 +#: ../src/common/helpers.py:333 msgid "paused composing a message" msgstr "mezuaren sorrera gelditua" -#: ../src/common/helpers.py:319 +#: ../src/common/helpers.py:335 msgid "has closed the chat window or tab" msgstr "tab edo lehioa itxi egin du" #. we talk about a file -#: ../src/common/optparser.py:62 +#: ../src/common/optparser.py:60 #, python-format msgid "error: cannot open %s for reading" msgstr "errorea: ezin da %s ireki irakurtzeko" -#: ../src/common/optparser.py:167 +#: ../src/common/optparser.py:171 msgid "gtk+" msgstr "gtk+" -#: ../src/common/optparser.py:176 ../src/common/optparser.py:177 +#: ../src/common/optparser.py:180 +#: ../src/common/optparser.py:181 msgid "cyan" msgstr "cyan" -#~ msgid "Would you like to overwrite it?" -#~ msgstr "Nahi al duzu berridatzi?" - -#~ msgid "_Join New Room..." -#~ msgstr "Gela Berrian _Sartu..." - -#~ msgid "Usage: /%s, sets the groupchat window to compact mode." -#~ msgstr "Erabilera: /%s, talde txat-eko leihoa compact moduan jarri." - -#~ msgid "Please modify your special notification below" -#~ msgstr "Mesedez eraldatu jakinarazketa bereziaren aukerak hemen:" - -#~ msgid "Ad_vanced Actions" -#~ msgstr "Aukera Aurre_ratuak" - -#~ msgid "Delete Message of the Day" -#~ msgstr "Eguneko Mezua Ezabatu" - -#~ msgid "I want a notification popup:" -#~ msgstr "Jakinarazketa popup nahi dut:" - -#~ msgid "I want to listen to:" -#~ msgstr "Honi entzun nahi diot:" - -#~ msgid "Send _New Message..." -#~ msgstr "Mezu _Berri bat Bidali ..." - -#~ msgid "Set Message of the Day" -#~ msgstr "Ezarri Eguneko Mezua" - -#~ msgid "Update Message of the Day" -#~ msgstr "Eguneko Mezua Gaurkotu" - -#~ msgid "_XML Console..." -#~ msgstr "_XML Konsola..." - -#~ msgid "Choose Avatar" -#~ msgstr "Aukeratu Abatereak" - -#~ msgid "Use compact view when you open a chat window" -#~ msgstr "Erabili modu konpaktua txat leiho bat irikitzean" - -#~ msgid "Use compact view when you open a group chat window" -#~ msgstr "Erabili bista konpaktua txat talde leiho bat irikitzean." - -#~ msgid "plain" -#~ msgstr "plain" - -#~ msgid "Send" -#~ msgstr "Bidali" - -#~ msgid "%(nickname)s in room %(room_name)s has sent you a new message." -#~ msgstr "%(room_name)s-eko %(nickname)s -ek mezu berri bat bidali dizu." - -#~ msgid "%s has sent you a new message." -#~ msgstr "%s mezu berri bat bidali dizu." - -#~ msgid "GUI Migration failed" -#~ msgstr "GUI Migrazioak Huts egin du" - -#~ msgid "" -#~ "Logs migration through graphical interface failed. The migration process " -#~ "will start in the background. Please wait a few minutes for Gajim to " -#~ "start." -#~ msgstr "" -#~ "Log eraldaketak huts egin du du interfaz grafikoaren bidez. Eraldaketa " -#~ "prozesua beste prozesuen azpian hasiko da. Mesedez itxoin minutu batzuk " -#~ "Gajim abiarazteko." - -#~ msgid "Logs have been successfully migrated to the database." -#~ msgstr "Log-ak egoki eraldatu dira datu basera." - -#~ msgid "If checked, Gajim will also have a trayicon" -#~ msgstr "If checked, Gajim will also have a trayicon" - -#~ msgid "_Online Users" -#~ msgstr "_Konektatutako Jendea" - -#~ msgid "Start Chat with Contact" -#~ msgstr "Elkarrizketa Hasi Kontaktuarekin" - -#~ msgid "All contacts in this group are offline or have errors" -#~ msgstr "Talde honetako guztiak deskonektatuta daude edo erroreak dituzte" - -#~ msgid "Size: " -#~ msgstr "Tamaina: " - -#~ msgid "Session bus is not available" -#~ msgstr "Bus sesioa ez da eskuragarri" - -#~ msgid "Unable to load idle module" -#~ msgstr "Ez izan da idle modulua kargatu" - -#~ msgid "Unable to join room" -#~ msgstr "Ezin da gela honetara sartu" - -#~ msgid "A password is required to join this room." -#~ msgstr "Pasahitza behar da gela onetan sartzeko." - -#~ msgid "You are banned from this room." -#~ msgstr "Gela honetan ukatua izan zara." - -#~ msgid "Such room does not exist." -#~ msgstr "Honako gela honek ez du existitzen." - -#~ msgid "Room creation is restricted." -#~ msgstr "Gela sortzea mugatua dago." - -#~ msgid "Your registered nickname must be used." -#~ msgstr "Erregistratutako nick-a erabilia izan behar da." - -#~ msgid "You are not in the members list." -#~ msgstr "Ez zaude kideen zerrendan." - -#~ msgid "" -#~ "Your desired nickname is in use or registered by another occupant.\n" -#~ "Please specify another nickname below:" -#~ msgstr "" -#~ "Zuk aukeratutako nick-a erregistratuta dago jadanik.\n" -#~ "Mesedez ezarri beste nick bat:" - -#~ msgid "we are now subscribed to %s" -#~ msgstr "%s -ra harpidetuak gaude orain" - -#~ msgid "unsubscribe request from %s" -#~ msgstr "Harpidetza kentzekoa eskaera %s -tik" - -#~ msgid "we are now unsubscribed from %s" -#~ msgstr "%s -ren harpidetzatik kenduta gaude" - -#~ msgid "" -#~ "JID %s is not RFC compliant. It will not be added to your roster. Use " -#~ "roster management tools such as http://jru.jabberstudio.org/ to remove it" -#~ msgstr "" -#~ "JID %s is not RFC compliant. It will not be added to your roster. Use " -#~ "roster management tools such as http://jru.jabberstudio.org/ to remove it" - -#~ msgid "Registration information for transport %s has not arrived in time" -#~ msgstr "" -#~ "Erregistroaren informazioa transporteetarako %s ez da denboran iritsi" - -#~ msgid "Sound" -#~ msgstr "Soinua" - -#~ msgid "Text" -#~ msgstr "Testua" - -#~ msgid "Image" -#~ msgstr "Irudia" - -#~ msgid "Read AUTHORS file for full list including past developers" -#~ msgstr "" -#~ "Irakurri AUTHORS fitxategia zerrenda osoarako,\n" -#~ "aurrez egondako diseinatzaileak sartuta ere" - -#~ msgid "From %s" -#~ msgstr "%s -etik" - -#~ msgid "To %s" -#~ msgstr "%s -entzat" - -#~ msgid "You have been invited to the %(room_jid)s room by %(contact_jid)s" -#~ msgstr "%(room_jid)s gelara gonbidatua izan zara %(contact_jid)s -rengatik" - -#~ msgid "Browsing %s" -#~ msgstr "Begiratzen %s" - -#~ msgid "" -#~ "Animated\n" -#~ "Static" -#~ msgstr "" -#~ "Animatua\n" -#~ "Estatikoa" - -#~ msgid "Manage Emoticons" -#~ msgstr "Emoticonoak Moldatu" - -#~ msgid "Or choose a preset message:" -#~ msgstr "Edo ezarritako egoera mezu bat aukeratu:" - -#~ msgid "Use _emoticons" -#~ msgstr "Emoticon-ak erabili" - -#~ msgid "_Set Image..." -#~ msgstr "_Ezarri Irudia" - -#~ msgid "Switch to %s" -#~ msgstr "Aldatu %s -ra" - -#~ msgid "using account " -#~ msgstr "kontua erabiliz" - -#~ msgid "The filesize of image \"%s\" is too large" -#~ msgstr "\"%s\" irudiaren tamaina handiegia da" - -#~ msgid "The file must not be more than 32 kilobytes." -#~ msgstr "Fitxategiak ez du 32 kilobytes baino gehiago izan behar." - -#~ msgid "A list of rooms that do not require confirmation before closing" -#~ msgstr "Itxi baino lehen baieztapenik behar ez duten txat gelen zerrenda" - -#~ msgid "Timeout" -#~ msgstr "Denbora bukatua" - -#~ msgid "A protocol error has occured:" -#~ msgstr "Protokolo errore bat gertatu da:" - -#~ msgid "account: " -#~ msgstr "kontua: " - -#~ msgid "Are you sure you want to leave rooms \"%s\"?" -#~ msgstr "Ziur al zaude \"%s\" geletatik atera nahi duzula?" - -#~ msgid "If you close this window, you will be disconnected from these rooms." -#~ msgstr "Leiho hau isten baduzu, gela honetatik deskonektatuko zara." - -#~ msgid "Activate/Disable notification for when a file transfer is complete" -#~ msgstr "Aktibatu/Desaktibatu fitxategi bat tranferitzen deneko jakinaraztea" - -#~ msgid "Removing selected file transfer" -#~ msgstr "Ezabatu fitxero transferentzia hautatua" - -#~ msgid "Stoping selected file transfer" -#~ msgstr "Gelditu hautatutako fitxero transferentzia" - -#~ msgid "Use a single chat window with _tabs" -#~ msgstr "Erabili txat leiho bakarra _tab-arekin" - -#~ msgid "" -#~ "If you close this tab and you have history disabled, the message will be " -#~ "lost." -#~ msgstr "" -#~ "Leiho hau isten baduzu eta historiala ez baduzu aktibatua, mezua galdu " -#~ "egingo da." - -#~ msgid "Cannot remove last group" -#~ msgstr "Ezin izan da ezabatu azken taldea" - -#~ msgid "At least one contact group must be present." -#~ msgstr "Gutxienez kontaktu talde bat egon behar da." - -#~ msgid "" -#~ "pysqlite2 (aka python-pysqlite2) dependency is missing. After you install " -#~ "pysqlite3, if you want to migrate your logs to the new database, please " -#~ "read: http://trac.gajim.org/wiki/MigrateLogToDot9DB Exiting..." -#~ msgstr "" -#~ "pysqlite2 (aka python-pysqlite2) dependency is missing. After you install " -#~ "pysqlite3, if you want to migrate your logs to the new database, please " -#~ "read: http://trac.gajim.org/wiki/MigrateLogToDot9DB Exiting..." - -#~ msgid "Image is too big" -#~ msgstr "Irudia handiegia da" - -#~ msgid "" -#~ "Image for emoticon has to be less than or equal to 24 pixels in width and " -#~ "24 in height." -#~ msgstr "" -#~ "24x24 tamainako berdina edo gutxiagoko emoticon-ak jarri daitezke " -#~ "bakarrik." - -#~ msgid "Changes in latest version" -#~ msgstr "Aldaketak azken bertsioan" - -#~ msgid "Check for new _version on Gajim startup" -#~ msgstr "Begiratu bertsio b_erria Gajim abiaraztean" - -#~ msgid "Log history" -#~ msgstr "Historialaren log-a" - -#~ msgid "New version of Gajim available" -#~ msgstr "Gajim-en bertsio berri bat eskuragarri" - -#~ msgid "Open Download Page" -#~ msgstr "Deskarga Orria Ireki" - -#~ msgid "(%s/s)" -#~ msgstr "(%s/s)" - -#~ msgid "" -#~ "It is the first time you run Gajim since the way logs are stored has " -#~ "changed. Gajim can migrate your logs at this state. Migrate?" -#~ msgstr "" -#~ "Hau da Gajim abiarazten duzun lehen aldia log-en artxibatzeko tokia " -#~ "aldatu zenetik. Gajim-ek zure log-ak eralda ditzake. Eraldatu?" - -#~ msgid "Dbus is not supported." -#~ msgstr "Dbus ez da onartzen." - -#~ msgid "Service not available" -#~ msgstr "Zerbitzua erabilezina" - -#~ msgid "Session bus is not available." -#~ msgstr "Bus sesioa ez dago erabilgarri." - -#~ msgid "with account %s" -#~ msgstr "%s kontuarekin" - -#~ msgid "with account " -#~ msgstr "kontuarekin" - -#~ msgid "Chat with" -#~ msgstr "Txateatu honekin" - -#~ msgid "Send New Message" -#~ msgstr "Mezu Berri bat Bidali" - -#~ msgid "as %s" -#~ msgstr "%s kontua bezala" - -#~ msgid "as " -#~ msgstr "bezala " - -#~ msgid "Send _New Message" -#~ msgstr "Mezu _Berri bat Bidali" - -#~ msgid "Re_quest Authorization from" -#~ msgstr "Autor_izazio baimena kontu honetatik" - -#~ msgid "Send Authorization to" -#~ msgstr "Bidali Autorizazioa honi" - -#~ msgid "No such command: /%s" -#~ msgstr "No such command: /%s" - -#~ msgid "Log" -#~ msgstr "Log-a" - -#~ msgid "Log presences in _contact's log file" -#~ msgstr "Presentzien historiala _kontaktuen log-an" - -#~ msgid "Log presences in an _external file" -#~ msgstr "Presentzien log-a _kanpo fitxero batean" - -#~ msgid "Unable to write file in %s" -#~ msgstr "Ezin da %s -ean idatzi" - -#~ msgid "" -#~ "You can set advanced account options by pressing Advanced button,or later " -#~ "by clicking in Accounts menuitem under Edit menu from the main window." -#~ msgstr "" -#~ "Kontuko aukera aurreratuak ezarri ditzakezu Aurreratu botoila sakatuz." - -#~ msgid "" -#~ "Set value of 'key' to 'value'. If there is no such key, new item in the " -#~ "preferences is inserted." -#~ msgstr "" -#~ "Set value of 'key' to 'value'. If there is no such key, new item in the " -#~ "preferences is inserted." - -#~ msgid "" -#~ "When a new message is received which is not from a contact already in a " -#~ "chat window, the three following actions may happen in order for you to " -#~ "be informed about it" -#~ msgstr "" -#~ "Mezu bat jasotzean eta ez dagoenean jadanik txat leihoan, jasotako azken " -#~ "hiru esaldiak azalduko zaizkizu informatu zaitezen." - -#~ msgid "_Earliest" -#~ msgstr "_Lehena" - -#~ msgid "_Latest" -#~ msgstr "_Azkena" - -#~ msgid "_Previous" -#~ msgstr "_Aurrekoa" - -#~ msgid "Filter query too short" -#~ msgstr "Filter query too short" - -#~ msgid "Query must be at least 3 characters long." -#~ msgstr "Galdera gutxienez 3 karakterekoa izan behar du." - -#~ msgid "%s is now %s: %s" -#~ msgstr "%s orain %s da: %s" - -#~ msgid "Allow controlling Gajim via D-Bus service." -#~ msgstr "Baimendua Gajim erabiltzea D-Bus zerbitzuaren bidez." - -#~ msgid "" -#~ "\n" -#~ "\n" -#~ "\n" -#~ "== Original Message ==\n" -#~ "%s" -#~ msgstr "" -#~ "\n" -#~ "\n" -#~ "\n" -#~ "==Mezua originala==\n" -#~ "%s" - -#~ msgid "" -#~ "Your new account has been created successfully.\n" -#~ "You can set advanced account options by pressing Advanced button,\n" -#~ "or later by clicking in Accounts menuitem under Edit menu from the main " -#~ "window." -#~ msgstr "" -#~ "Kontua ondo erregistratu da.\n" -#~ "Aukera zehatzagoak eraldatu ditzakezu \"Editatu->kontua\" leihoan." - -#~ msgid "Error:" -#~ msgstr "Errorea:" - -#~ msgid "error appeared while processing xmpp:" -#~ msgstr "errorea atera da xmpp prozesatzen ari zen bitartean" - -#~ msgid "Service" -#~ msgstr "Zerbitzua" - -#~ msgid "Node" -#~ msgstr "Nodoa" - -#~ msgid "" -#~ "Your new account has been created and added to your gajim configuration.\n" -#~ "You can set advanced account options using \"Edit->Accounts\" in the main " -#~ "window menu." -#~ msgstr "" -#~ "Zure kontu berria sortu da eta gajim-eko konfigurazioan sartu da.\n" -#~ "Aukera zehatzagoak \"Editatu->kontua\" leihoan." - -#~ msgid "You need to enter a valid server address to add an account." -#~ msgstr "Zerbitzari baliagarri bat sartu behar duzu kontua sortzeko." - -#~ msgid "Contact names must be of the form \"user@servername\"." -#~ msgstr "Kontaktuaren izena horrela izan behar da \"izena@zerbitzaria\"." - -#~ msgid "Gajim - a GTK+ Jabber client" -#~ msgstr "Gajim - a GTK+ Jabber bezeroa" - -#~ msgid "Invalid contact ID" -#~ msgstr "ID kontaktu okerra" - -#~ msgid "Contact ID must be of the form \"username@servername\"." -#~ msgstr "Kontaktuaren ID-a horrela jarri behar da \"izena@zerbitzria\"." - -#~ msgid "Account registration successful" -#~ msgstr "Kontuaren erregistroa eginda" - -#~ msgid "The account \"%s\" has been registered with the Jabber server." -#~ msgstr "\"%s\" kontua jabber zerbitzariarekin sortu da" - -#~ msgid "theme_name" -#~ msgstr "gaiaren _izena" - -#~ msgid "You just received a new message in room \"%s\"" -#~ msgstr "Mezu berri bat jaso duzu \"%s\" gelan" - -#~ msgid "" -#~ "If you close this window and you have history disabled, this message will " -#~ "be lost." -#~ msgstr "" -#~ "Leiho hau isten baduzu eta historiala ez baduzu aktibatuta, mezu hau " -#~ "galdu egingo da." - -#~ msgid "New _Room" -#~ msgstr "Gela B_erria" - -#~ msgid "Edit" -#~ msgstr "Editatu" - -#~ msgid "Account:" -#~ msgstr "Kontua:" - -#~ msgid "Always use compact _view" -#~ msgstr "Bista _trinkoa erabili beti" - -#~ msgid "Banner:" -#~ msgstr "Banner:" - -#~ msgid "" -#~ "Cancels the selected file transfer. If there is an incomplete file, kept " -#~ "in the file system it will be removed. This operation is not reversable" -#~ msgstr "" -#~ "Hautatutako fitxero transferentzia kantzelatu. Osorik ez dagoen fitxero " -#~ "bat badago, Fitxeroa sistematik ezabatuko da. Aukera hau ez da " -#~ "itzulgarria." - -#~ msgid "Chan_ge" -#~ msgstr "Al_datu" - -#~ msgid "Check if you want to register for a new jabber account" -#~ msgstr "Hautatu hau jabber kontu berri bat erregistratzeko" - -#~ msgid "Click to get contact's extended information" -#~ msgstr "Sakatu kontaktuaren informazio zabalagoa lortzeko" - -#~ msgid "Enter your message:" -#~ msgstr "Sartu zure mezua:" - -#~ msgid "" -#~ "If checked, all chat and group chat windows will have the information " -#~ "area in the top and the buttons area in the bottom hidden. You can quick " -#~ "toggle compact view with Alt+C. NOTE: The last state you leave a window/" -#~ "tab is not a permanent one" -#~ msgstr "" -#~ "If checked, all chat and group chat windows will have the information " -#~ "area in the top and the buttons area in the bottom hidden. You can quick " -#~ "toggle compact view with Alt+C. NOTE: The last state you leave a window/" -#~ "tab is not a permanent one" - -#~ msgid "Join _Group Chat..." -#~ msgstr "Txat taldean _Sartu..." - -#~ msgid "Please fill in the data for your existing account" -#~ msgstr "Mesedez bete dagoeneko daukazun kontuaren informazioa" - -#~ msgid "Show roster window on Gajim startup" -#~ msgstr "Ikusi zerrenda leihoa Gajim abiaraztean" - -#~ msgid "_Compact View" -#~ msgstr "_Bista Trinkoa" - -#~ msgid "_Join Group Chat" -#~ msgstr "_Sartu Txat Talde Batean" - -#~ msgid "_Nickname:" -#~ msgstr "_Nick-a:" - -#~ msgid "_Refresh" -#~ msgstr "_Garbitu" - -#~ msgid "_Register new account" -#~ msgstr "_Erregistratu kontu berri bat" - -#~ msgid "_Service Discovery" -#~ msgstr "_Zerbitzaria Aurkitua" - -#~ msgid "_Service Discovery..." -#~ msgstr "_Zerbiztaria Aurkitua..." - -#~ msgid "Unknown type %s " -#~ msgstr "Mota aurkitugabea %s " diff --git a/po/fr.po b/po/fr.po index a20c3ea4e..ca10f56a2 100644 --- a/po/fr.po +++ b/po/fr.po @@ -1,17 +1,15 @@ -# translation of gajim.po to # French translations for gajim package -# Traduction anglaise du package gajim. -# Copyright (C) 2004 THE gajim'S COPYRIGHT HOLDER +# Copyright (C) 2004-2006 THE gajim'S COPYRIGHT HOLDER # This file is distributed under the same license as the gajim package. -# Automatically generated, 2004. -# , 2005. # +# See: http://live.gnome.org/GnomeFr/Traduire for translation guidelines # +#: ../src/gajim-remote.py:218 ../src/gajim-remote.py:225 msgid "" msgstr "" "Project-Id-Version: gajim 0.10\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2006-04-13 12:52+0200\n" +"POT-Creation-Date: 2006-07-04 00:03+0200\n" "PO-Revision-Date: 2006-04-20 17:23+0100\n" "Last-Translator: Yann Le Boulanger \n" "Language-Team: \n" @@ -32,348 +30,2391 @@ msgstr "Messagerie instantanée Gajim" #: ../gajim.desktop.in.h:3 msgid "Jabber IM Client" -msgstr "Client de la MI Jabber" +msgstr "Client de MI Jabber" -#: ../src/advanced.py:71 +#: ../data/glade/account_context_menu.glade.h:1 +msgid "Send Single _Message..." +msgstr "Envoyer un _message simple..." + +#: ../data/glade/account_context_menu.glade.h:2 +msgid "_Add Contact..." +msgstr "Ajouter un _contact..." + +#: ../data/glade/account_context_menu.glade.h:3 +msgid "_Discover Services..." +msgstr "_Découvrir les services..." + +#: ../data/glade/account_context_menu.glade.h:4 +#: ../data/glade/roster_window.glade.h:15 +#: ../data/glade/systray_context_menu.glade.h:5 +msgid "_Group Chat" +msgstr "_Salons de discussion" + +#: ../data/glade/account_context_menu.glade.h:5 +msgid "_Modify Account..." +msgstr "_Modifier le compte..." + +#: ../data/glade/account_context_menu.glade.h:6 +msgid "_Status" +msgstr "É_tat" + +#: ../data/glade/account_creation_wizard_window.glade.h:1 +msgid "" +"Account is being created\n" +"\n" +"Please wait..." +msgstr "" +"Création du compte en cours\n" +"\n" +"Veuillez patienter..." + +#: ../data/glade/account_creation_wizard_window.glade.h:4 +msgid "Please choose one of the options below:" +msgstr "Choisissez une des options suivantes :" + +#: ../data/glade/account_creation_wizard_window.glade.h:5 +msgid "Please fill in the data for your new account" +msgstr "Remplissez les informations pour votre nouveau compte" + +#: ../data/glade/account_creation_wizard_window.glade.h:6 +msgid "Click to see features (like MSN, ICQ transports) of jabber servers" +msgstr "" +"Cliquez pour voir les fonctionnalités du serveur jabber (comme les " +"passerelles MSN, ICQ)" + +#: ../data/glade/account_creation_wizard_window.glade.h:7 +msgid "Connect when I press Finish" +msgstr "Se connecter quand je clique sur Finir" + +#: ../data/glade/account_creation_wizard_window.glade.h:8 +msgid "Gajim: Account Creation Wizard" +msgstr "Gajim : Assistant de création de compte" + +#: ../data/glade/account_creation_wizard_window.glade.h:9 +msgid "I already have an account I want to use" +msgstr "J'ai déjà un compte que je veux utiliser" + +#: ../data/glade/account_creation_wizard_window.glade.h:10 +msgid "I want to _register for a new account" +msgstr "Je veux _créer un nouveau compte" + +#: ../data/glade/account_creation_wizard_window.glade.h:11 +#: ../data/glade/account_modification_window.glade.h:18 +msgid "If checked, Gajim will remember the password for this account" +msgstr "" +"Si cette case est cochée, Gajim va retenir le mot de passe pour ce compte" + +#: ../data/glade/account_creation_wizard_window.glade.h:12 +#: ../data/glade/manage_proxies_window.glade.h:6 +msgid "Pass_word:" +msgstr "_Mot de passe : " + +#: ../data/glade/account_creation_wizard_window.glade.h:13 +#: ../data/glade/account_modification_window.glade.h:37 +msgid "Save pass_word" +msgstr "Enregistrer le mot de _passe" + +#: ../data/glade/account_creation_wizard_window.glade.h:14 +msgid "Servers Features" +msgstr "Fonctionalités des Serveurs" + +#: ../data/glade/account_creation_wizard_window.glade.h:15 +msgid "Set my profile when I connect" +msgstr "Définir mon profil quand je me connecte" + +#: ../data/glade/account_creation_wizard_window.glade.h:16 +msgid "" +"You need to have an account in order to connect\n" +"to the Jabber network." +msgstr "" +"Vous devez avoir un compte pour vous connecter\n" +"au réseau Jabber." + +#: ../data/glade/account_creation_wizard_window.glade.h:18 +msgid "Your JID:" +msgstr "Votre identifiant Jabber :" + +#: ../data/glade/account_creation_wizard_window.glade.h:19 +#: ../data/glade/roster_window.glade.h:10 +msgid "_Advanced" +msgstr "_Avancées" + +#: ../data/glade/account_creation_wizard_window.glade.h:20 +msgid "_Finish" +msgstr "_Finir" + +#: ../data/glade/account_creation_wizard_window.glade.h:21 +#: ../data/glade/manage_proxies_window.glade.h:9 +msgid "_Host:" +msgstr "_Serveur :" + +#: ../data/glade/account_creation_wizard_window.glade.h:22 +#: ../data/glade/account_modification_window.glade.h:45 +msgid "_Password:" +msgstr "Mot de _passe : " + +#: ../data/glade/account_creation_wizard_window.glade.h:23 +#: ../data/glade/manage_proxies_window.glade.h:10 +msgid "_Port:" +msgstr "_Port :" + +#: ../data/glade/account_creation_wizard_window.glade.h:24 +msgid "_Retype Password:" +msgstr "_Ressaisissez le mot de passe :" + +#: ../data/glade/account_creation_wizard_window.glade.h:25 +msgid "_Server:" +msgstr "_Serveur :" + +#: ../data/glade/account_creation_wizard_window.glade.h:26 +msgid "_Use proxy" +msgstr "_Utiliser un proxy" + +#: ../data/glade/account_creation_wizard_window.glade.h:27 +#: ../data/glade/manage_proxies_window.glade.h:11 +msgid "_Username:" +msgstr "_Nom :" + +#: ../data/glade/account_modification_window.glade.h:1 +#: ../data/glade/preferences_window.glade.h:8 +msgid "Miscellaneous" +msgstr "Divers" + +#: ../data/glade/account_modification_window.glade.h:2 +msgid "OpenPGP" +msgstr "OpenPGP" + +#: ../data/glade/account_modification_window.glade.h:3 +msgid "Personal Information" +msgstr "Informations personnelles" + +#: ../data/glade/account_modification_window.glade.h:4 +msgid "Account" +msgstr "Compte" + +#: ../data/glade/account_modification_window.glade.h:5 +msgid "Account Modification" +msgstr "Modification du compte" + +#: ../data/glade/account_modification_window.glade.h:6 +msgid "Autoreconnect when connection is lost" +msgstr "Reconnexion automatique quand la connexion est perdue" + +#: ../data/glade/account_modification_window.glade.h:7 +msgid "C_onnect on Gajim startup" +msgstr "C_onnexion au démarrage" + +#: ../data/glade/account_modification_window.glade.h:8 +msgid "Chan_ge Password" +msgstr "Chan_ger le mot de passe" + +#: ../data/glade/account_modification_window.glade.h:9 +msgid "" +"Check this so Gajim will connect in port 5223 where legacy servers are " +"expected to have SSL capabilities. Note that Gajim uses TLS encryption by " +"default if broadcasted by the server, and with this option enabled TLS will " +"be disabled" +msgstr "" +"Si vous cochez cette case, Gajim se connectera sur le port 5223, sur lequel " +"les serveurs sont supposés gérer le SSL. Notez que Gajim utilise le chiffrement " +"TLS par défaut si le serveur annonce qu'il le supporte, et avec cette option " +"vous désactivez le TLS" + +#: ../data/glade/account_modification_window.glade.h:10 +msgid "Choose _Key..." +msgstr "Choisissez une _clé..." + +#: ../data/glade/account_modification_window.glade.h:11 +msgid "Click to change account's password" +msgstr "Cliquez pour changer le mot de passe du compte" + +#: ../data/glade/account_modification_window.glade.h:12 +msgid "Connection" +msgstr "Connexion" + +#: ../data/glade/account_modification_window.glade.h:13 +msgid "Edit Personal Information..." +msgstr "_Éditer les informations personnelles..." + +#: ../data/glade/account_modification_window.glade.h:14 +#: ../data/glade/roster_window.glade.h:5 ../src/notify.py:308 +#: ../src/notify.py:330 ../src/notify.py:342 ../src/tooltips.py:350 +msgid "Gajim" +msgstr "Gajim" + +#: ../data/glade/account_modification_window.glade.h:15 +#: ../data/glade/preferences_window.glade.h:44 +#: ../data/glade/vcard_information_window.glade.h:17 +#: ../src/roster_window.py:290 ../src/roster_window.py:1184 +#: ../src/roster_window.py:1405 +msgid "General" +msgstr "Général" + +#: ../data/glade/account_modification_window.glade.h:16 +msgid "Hostname: " +msgstr "Serveur :" + +#: ../data/glade/account_modification_window.glade.h:17 +msgid "" +"If checked, Gajim will also broadcast some more IPs except from just your " +"IP, so file transfer has higher chances of working." +msgstr "" +"Si cette case est cochée, Gajim va diffuser des adresses IP en plus de la " +"votre, les transferts de fichiers ont ainsi plus de chance de fonctionner." + +#: ../data/glade/account_modification_window.glade.h:19 +msgid "" +"If checked, Gajim will send keep-alive packets so it prevents connection " +"timeout which results in disconnection" +msgstr "" +"Si cette case est cochée, Gajim enverra des paquets de maintien de connexion " +"pour prévenir des temps de latence pouvant entraîner des déconnexions" + +#: ../data/glade/account_modification_window.glade.h:20 +msgid "" +"If checked, Gajim will store the password in ~/.gajim/config with 'read' " +"permission only for you" +msgstr "" +"Si cette case est cochée, Gajim va stocker le mot de passe dans ~/.gajim/" +"config avec accès en lecture pour vous uniquement" + +#: ../data/glade/account_modification_window.glade.h:21 +msgid "" +"If checked, Gajim, when launched, will automatically connect to jabber using " +"this account" +msgstr "" +"Si cette case est cochée, au démarrage, Gajim se connectera automatiquement " +"à jabber en utilisant ce compte" + +#: ../data/glade/account_modification_window.glade.h:22 +msgid "" +"If checked, any change to the global status (handled by the combobox at the " +"bottom of the roster window) will change the status of this account " +"accordingly" +msgstr "" +"Si cette case est cochée, toute modification de l'état global (accessible à " +"l'aide du bouton en bas de la fenêtre principale) sera répercutée sur l'état " +"de ce compte" + +#: ../data/glade/account_modification_window.glade.h:23 +msgid "Information about you, as stored in the server" +msgstr "Les informations vous concernant, stockées sur le serveur" + +#: ../data/glade/account_modification_window.glade.h:24 +msgid "Manage..." +msgstr "Gérer..." + +#: ../data/glade/account_modification_window.glade.h:25 ../src/config.py:1448 +msgid "No key selected" +msgstr "Pas de clé sélectionnée" + +#. None means no proxy profile selected +#: ../data/glade/account_modification_window.glade.h:27 ../src/config.py:1053 +#: ../src/config.py:1058 ../src/config.py:1230 ../src/config.py:1505 +#: ../src/config.py:1578 ../src/config.py:2282 +msgid "None" +msgstr "Aucun" + +#: ../data/glade/account_modification_window.glade.h:28 +msgid "Personal Information" +msgstr "Informations personnelles" + +#: ../data/glade/account_modification_window.glade.h:29 +msgid "Port: " +msgstr "Port : " + +#: ../data/glade/account_modification_window.glade.h:30 +msgid "Priori_ty:" +msgstr "Priori_té :" + +#: ../data/glade/account_modification_window.glade.h:31 +msgid "" +"Priority is used in Jabber to determine who gets the events from the jabber " +"server when two or more clients are connected using the same account; The " +"client with the highest priority gets the events" +msgstr "" +"La priorité est utilisé par Jabber pour déterminer qui reçoit les évenements " +"du serveur quand plusieurs clients sont connectés avec le même compte. Le " +"client ayant la plus haute priorité recevra les messages" + +#: ../data/glade/account_modification_window.glade.h:32 +msgid "Proxy:" +msgstr "Proxy :" + +#: ../data/glade/account_modification_window.glade.h:33 +msgid "Resour_ce: " +msgstr "Ressour_ce: " + +#: ../data/glade/account_modification_window.glade.h:34 +msgid "" +"Resource is sent to the Jabber server in order to separate the same JID in " +"two or more parts depending on the number of the clients connected in the " +"same server with the same account. So you might be connected in the same " +"account with resource 'Home' and 'Work' at the same time. The resource which " +"has the highest priority will get the events. (see below)" +msgstr "" +"La ressource est envoyée au serveur jabber pour différencier les clients " +"connectés au même serveur avec le même compte. Vous pouvez donc être " +"connecté avec le même compte avec les ressources « Maison » et « Travail » " +"en même temps. La ressource avec la plus haute priorité recevra les messages " +"(voir plus bas)." + +#: ../data/glade/account_modification_window.glade.h:35 +msgid "Save _passphrase (insecure)" +msgstr "Enregistrer votre mot de _passe (non sécurisé)" + +#: ../data/glade/account_modification_window.glade.h:36 +msgid "Save conversation _logs for all contacts" +msgstr "Garder l'_historique des conversations pour tous les contacts" + +#: ../data/glade/account_modification_window.glade.h:38 +msgid "Send keep-alive packets" +msgstr "Envoi des paquets de maintien de connexion" + +#: ../data/glade/account_modification_window.glade.h:39 +msgid "Synch_ronize account status with global status" +msgstr "Synch_roniser l'état du compte avec l'état global" + +#: ../data/glade/account_modification_window.glade.h:40 +msgid "Use _SSL (legacy)" +msgstr "Utiliser _SSL" + +#: ../data/glade/account_modification_window.glade.h:41 +msgid "Use custom hostname/port" +msgstr "Utiliser un nom d'hôte/port personnalisé" + +#: ../data/glade/account_modification_window.glade.h:42 +msgid "Use file transfer proxies" +msgstr "Utiliser les proxies pour les transferts de fichiers" + +#: ../data/glade/account_modification_window.glade.h:43 +#: ../data/glade/add_new_contact_window.glade.h:6 +msgid "_Jabber ID:" +msgstr "Identifiant _Jabber : " + +#: ../data/glade/account_modification_window.glade.h:44 +msgid "_Name: " +msgstr "_Nom : " + +#: ../data/glade/accounts_window.glade.h:1 +msgid "Accounts" +msgstr "Comptes" + +#: ../data/glade/accounts_window.glade.h:2 +msgid "" +"If you have 2 or more accounts and it is checked, Gajim will list all " +"contacts as if you had one account" +msgstr "" +"Si vous avez 2 comptes ou plus et que cette case est cochée, Gajim va lister " +"tous les contacts comme si vous n'aviez qu'un seul compte" + +#: ../data/glade/accounts_window.glade.h:3 +msgid "_Merge accounts" +msgstr "_Regrouper les comptes" + +#: ../data/glade/accounts_window.glade.h:4 +msgid "_Modify" +msgstr "_Modifier" + +#: ../data/glade/accounts_window.glade.h:5 +#: ../data/glade/remove_account_window.glade.h:4 +msgid "_Remove" +msgstr "_Supprimer" + +#: ../data/glade/add_new_contact_window.glade.h:1 +msgid "A_llow this contact to view my status" +msgstr "_Autoriser ce contact à voir mon état" + +#: ../data/glade/add_new_contact_window.glade.h:2 +msgid "Add New Contact" +msgstr "Ajouter un nouveau contact" + +#: ../data/glade/add_new_contact_window.glade.h:3 +msgid "I would like to add you to my contact list." +msgstr "Je souhaiterais vous ajouter à ma liste de contacts." + +#: ../data/glade/add_new_contact_window.glade.h:4 +msgid "_Account:" +msgstr "_Compte :" + +#: ../data/glade/add_new_contact_window.glade.h:5 +msgid "_Group:" +msgstr "_Groupe :" + +#: ../data/glade/add_new_contact_window.glade.h:7 +msgid "_Nickname:" +msgstr "_Surnom :" + +#: ../data/glade/add_new_contact_window.glade.h:8 +msgid "_Protocol:" +msgstr "_Protocole :" + +#: ../data/glade/add_new_contact_window.glade.h:9 +msgid "_Subscribe" +msgstr "_Ajouter" + +#: ../data/glade/add_new_contact_window.glade.h:10 +msgid "_User ID:" +msgstr "_Identifiant :" + +#: ../data/glade/advanced_configuration_window.glade.h:1 +msgid "Description" +msgstr "Description" + +#: ../data/glade/advanced_configuration_window.glade.h:2 +msgid "NOTE: You should restart gajim for some setting to take effect" +msgstr "" +"NOTE : Vous devez redémarrer Gajim pour prendre en compte certaines " +"de vos modifications" + +#: ../data/glade/advanced_configuration_window.glade.h:3 +msgid "Advanced Configuration Editor" +msgstr "Éditeur de configuration avancée" + +#: ../data/glade/advanced_configuration_window.glade.h:4 +msgid "Filter:" +msgstr "Filtre :" + +#: ../data/glade/advanced_menuitem_menu.glade.h:1 +msgid "Delete MOTD" +msgstr "Supprimer MOTD" + +#: ../data/glade/advanced_menuitem_menu.glade.h:2 +msgid "Deletes Message of the Day" +msgstr "Supprime le message du jour" + +#: ../data/glade/advanced_menuitem_menu.glade.h:3 +msgid "Sends a message to currently connected users to this server" +msgstr "Envoie un message aux utilisateurs actuellement connectés a ce serveur" + +#: ../data/glade/advanced_menuitem_menu.glade.h:4 +msgid "Set MOTD" +msgstr "Définir MOTD" + +#: ../data/glade/advanced_menuitem_menu.glade.h:5 +msgid "Sets Message of the Day" +msgstr "Mets un message du jour" + +#: ../data/glade/advanced_menuitem_menu.glade.h:6 +msgid "Show _XML Console" +msgstr "Montrer la console _XML" + +#: ../data/glade/advanced_menuitem_menu.glade.h:7 +msgid "Update MOTD" +msgstr "Mettre à jour MOTD" + +#: ../data/glade/advanced_menuitem_menu.glade.h:8 +msgid "Updates Message of the Day" +msgstr "Mets à jour le message du jour" + +#: ../data/glade/advanced_menuitem_menu.glade.h:9 +msgid "_Administrator" +msgstr "_Administrateur" + +#: ../data/glade/advanced_menuitem_menu.glade.h:10 +msgid "_Privacy Lists" +msgstr "" + +#: ../data/glade/advanced_menuitem_menu.glade.h:11 +msgid "_Send Server Message" +msgstr "_Envoyer un message au serveur" + +#: ../data/glade/advanced_menuitem_menu.glade.h:12 +msgid "_Send Single Message" +msgstr "_Envoyer un message simple" + +#: ../data/glade/advanced_notifications_window.glade.h:1 +msgid " a window/tab opened with that contact " +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:2 +msgid "Actions" +msgstr "Actions" + +#: ../data/glade/advanced_notifications_window.glade.h:3 +msgid "Conditions" +msgstr "Conditions" + +#: ../data/glade/advanced_notifications_window.glade.h:4 +#: ../data/glade/preferences_window.glade.h:10 +msgid "Sounds" +msgstr "Sons" + +#: ../data/glade/advanced_notifications_window.glade.h:5 +msgid "Add" +msgstr "Ajouter" + +#: ../data/glade/advanced_notifications_window.glade.h:6 +msgid "Advanced Actions" +msgstr "Actions avancées" + +#: ../data/glade/advanced_notifications_window.glade.h:7 +msgid "Advanced Notifications Control" +msgstr "Éditeur de configuration avancée" + +#: ../data/glade/advanced_notifications_window.glade.h:8 +msgid "All Status " +msgstr "Tous les états " + +#: ../data/glade/advanced_notifications_window.glade.h:9 +msgid "And I " +msgstr "Et je " + +#: ../data/glade/advanced_notifications_window.glade.h:10 +msgid "Away " +msgstr "Absent " + +#: ../data/glade/advanced_notifications_window.glade.h:11 +msgid "Busy " +msgstr "Occupé " + +#: ../data/glade/advanced_notifications_window.glade.h:12 +msgid "Don't have " +msgstr "N'ai pas" + +#: ../data/glade/advanced_notifications_window.glade.h:13 +#, fuzzy +msgid "Down" +msgstr "Télécharger" + +#: ../data/glade/advanced_notifications_window.glade.h:14 +msgid "Have " +msgstr "Ai" + +#: ../data/glade/advanced_notifications_window.glade.h:15 +#: ../src/common/helpers.py:239 +msgid "Invisible" +msgstr "Invisible" + +#: ../data/glade/advanced_notifications_window.glade.h:16 +#, fuzzy +msgid "Launch a command" +msgstr "commande" + +#: ../data/glade/advanced_notifications_window.glade.h:17 +#, fuzzy +msgid "List of special notifications settings" +msgstr "Ajout de notifications spéciales pour %s" + +#: ../data/glade/advanced_notifications_window.glade.h:18 +msgid "Not Available " +msgstr "Non disponible " + +#: ../data/glade/advanced_notifications_window.glade.h:19 +msgid "Online / Free For Chat" +msgstr "En ligne / Disponible pour discuter" + +#: ../data/glade/advanced_notifications_window.glade.h:20 +msgid "Play a sound" +msgstr "Jouer un son" + +#: ../data/glade/advanced_notifications_window.glade.h:21 +msgid "" +"Receive a Message\n" +"Contact Connected\n" +"Contact Disconnected\n" +"Contact Change Status\n" +"Group Chat Message Highlight\n" +"Group Chat Message Received\n" +"File Transfert Resquest\n" +"File Transfert Started\n" +"File Transfert Finished" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:30 +msgid "Some special(s) status..." +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:31 +msgid "Up" +msgstr "Haut" + +#: ../data/glade/advanced_notifications_window.glade.h:32 +msgid "When " +msgstr "Quand" + +#: ../data/glade/advanced_notifications_window.glade.h:33 +msgid "_Activate Windows manager UrgencyHint to make chat taskbar to flash" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:34 +#, fuzzy +msgid "_Disable auto opening chat window" +msgstr "Cacher les boutons dans la fenêtre des salons" + +#: ../data/glade/advanced_notifications_window.glade.h:35 +msgid "_Disable existing popup window" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:36 +msgid "_Disable existing sound for this event" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:37 +msgid "_Disable showing event in roster" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:38 +msgid "_Disable showing event in systray" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:39 +msgid "_Inform me with a popup window" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:40 +#, fuzzy +msgid "_Open chat window with user" +msgstr "Utiliser une seule fenê_tre de discussion avec des onglets" + +#: ../data/glade/advanced_notifications_window.glade.h:41 +#, fuzzy +msgid "_Show event in roster" +msgstr "Ne le montrer que dans la _liste" + +#: ../data/glade/advanced_notifications_window.glade.h:42 +#, fuzzy +msgid "_Show event in systray" +msgstr "Ne le montrer que dans la _liste" + +#: ../data/glade/advanced_notifications_window.glade.h:43 +msgid "" +"contact(s)\n" +"group(s)\n" +"everybody" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:46 +#, fuzzy +msgid "for " +msgstr "Port : " + +#: ../data/glade/advanced_notifications_window.glade.h:47 +msgid "when I'm " +msgstr "" + +#: ../data/glade/change_password_dialog.glade.h:1 +msgid "Change Password" +msgstr "Changer le mot de passe" + +#: ../data/glade/change_password_dialog.glade.h:2 +msgid "Enter it again for confirmation:" +msgstr "Entrez le de nouveau pour confirmer :" + +#: ../data/glade/change_password_dialog.glade.h:3 +msgid "Enter new password:" +msgstr "Entrez un nouveau mot de passe :" + +#: ../data/glade/change_status_message_dialog.glade.h:1 +msgid "Type your new status message" +msgstr "Taper votre nouveau message d'état" + +#: ../data/glade/change_status_message_dialog.glade.h:2 +msgid "Preset messages:" +msgstr "Messages prédéfinis :" + +#: ../data/glade/change_status_message_dialog.glade.h:3 +msgid "Save as Preset..." +msgstr "Enregistrer comme messages d'état prédéfini..." + +#: ../data/glade/chat_context_menu.glade.h:1 +msgid "Join _Group Chat" +msgstr "Rejoindre un _salon de discussion" + +#: ../data/glade/chat_context_menu.glade.h:2 +#: ../data/glade/chat_control_popup_menu.glade.h:4 +#: ../data/glade/gc_occupants_menu.glade.h:2 +#: ../data/glade/roster_contact_context_menu.glade.h:8 +msgid "_Add to Roster" +msgstr "_Ajouter à la liste de contacts" + +#: ../data/glade/chat_context_menu.glade.h:3 +msgid "_Copy JID/Email Address" +msgstr "_Copier le JID/l'Adresse électronique" + +#: ../data/glade/chat_context_menu.glade.h:4 +msgid "_Copy Link Location" +msgstr "_Copier l'Adresse du Lien" + +#: ../data/glade/chat_context_menu.glade.h:5 +msgid "_Open Email Composer" +msgstr "_Ouvrir le logiciel de Courriel" + +#: ../data/glade/chat_context_menu.glade.h:6 +msgid "_Open Link in Browser" +msgstr "_Ouvrir le Lien dans votre navigateur" + +#: ../data/glade/chat_context_menu.glade.h:7 +#: ../data/glade/roster_window.glade.h:19 +#: ../data/glade/systray_context_menu.glade.h:6 +msgid "_Start Chat" +msgstr "Commencer une _discussion" + +#: ../data/glade/chat_control_popup_menu.glade.h:1 +msgid "Click to see past conversations with this contact" +msgstr "Cliquez ici pour voir les précédentes conversations avec ce contact" + +#: ../data/glade/chat_control_popup_menu.glade.h:2 +#: ../data/glade/roster_contact_context_menu.glade.h:6 +msgid "Send _File" +msgstr "Envoyer un _fichier" + +#: ../data/glade/chat_control_popup_menu.glade.h:3 +msgid "Toggle Open_PGP Encryption" +msgstr "Bascule le chiffrement _GPG" + +#: ../data/glade/chat_control_popup_menu.glade.h:5 +#: ../data/glade/gc_control_popup_menu.glade.h:6 +msgid "_Compact View Alt+C" +msgstr "Vue _Compacte Alt+C" + +#: ../data/glade/chat_control_popup_menu.glade.h:6 +#: ../data/glade/gc_control_popup_menu.glade.h:7 +#: ../data/glade/gc_occupants_menu.glade.h:5 +#: ../data/glade/roster_contact_context_menu.glade.h:11 +msgid "_History" +msgstr "_Historique" + +#: ../data/glade/data_form_window.glade.h:1 +msgid "Room Configuration" +msgstr "Configuration du salon de discussion" + +#: ../data/glade/edit_groups_dialog.glade.h:1 +msgid "Edit Groups" +msgstr "Éditer les groupes" + +#: ../data/glade/filetransfers.glade.h:1 +msgid "A list of active, completed and stopped file transfers" +msgstr "Une liste des transferts de fichier actifs, terminés et arrêtés" + +#: ../data/glade/filetransfers.glade.h:2 +msgid "Cancel file transfer" +msgstr "Annule le transfert de fichier" + +#: ../data/glade/filetransfers.glade.h:3 +msgid "Cancels the selected file transfer" +msgstr "Annule le transfert du fichier sélectionné" + +#: ../data/glade/filetransfers.glade.h:4 +msgid "Cancels the selected file transfer and removes incomplete file" +msgstr "" +"Annule le transfert du fichier sélectionné et supprime le fichier incomplet" + +#: ../data/glade/filetransfers.glade.h:5 +msgid "Clean _up" +msgstr "_Nettoyer" + +#: ../data/glade/filetransfers.glade.h:6 +msgid "File Transfers" +msgstr "Transfert de fichiers" + +#: ../data/glade/filetransfers.glade.h:7 +msgid "Hides the window" +msgstr "Cache la fenêtre" + +#: ../data/glade/filetransfers.glade.h:8 +msgid "Remove file transfer from the list." +msgstr "Supprimer le transfert de fichier de la liste." + +#: ../data/glade/filetransfers.glade.h:9 +msgid "Removes completed, canceled and failed file transfers from the list" +msgstr "" +"Supprimer les transferts de fichier terminés, annulés et échoués de la liste" + +#: ../data/glade/filetransfers.glade.h:10 +msgid "Shows a list of file transfers between you and other" +msgstr "Affiche une liste des transferts de fichiers entre vous et les autres" + +#: ../data/glade/filetransfers.glade.h:11 +msgid "" +"This action removes single file transfer from the list. If the transfer is " +"active, it is first stopped and then removed" +msgstr "" +"Cette action supprime les transferts de fichier de la liste. Si le transfert " +"est actif, il est d'abord arrêté puis supprimé" + +#: ../data/glade/filetransfers.glade.h:12 +msgid "When a file transfer is complete show a popup notification" +msgstr "" +"Quand le transfert de fichier est terminé, montrer une fenêtre de " +"notification" + +#: ../data/glade/filetransfers.glade.h:13 ../src/filetransfers_window.py:753 +msgid "_Continue" +msgstr "_Continuer" + +#: ../data/glade/filetransfers.glade.h:14 +msgid "_Notify me when a file transfer is complete" +msgstr "Me _signaler quand un transfert de fichier est terminé" + +#: ../data/glade/filetransfers.glade.h:15 ../src/filetransfers_window.py:190 +msgid "_Open Containing Folder" +msgstr "_Ouvrir le répertoire de destination" + +#: ../data/glade/filetransfers.glade.h:16 +msgid "_Pause" +msgstr "_Pause" + +#: ../data/glade/filetransfers.glade.h:17 +msgid "file transfers list" +msgstr "liste des transferts de fichier" + +#: ../data/glade/gajim_themes_window.glade.h:1 +msgid "Chatstate Tab Colors" +msgstr "Couleurs des Onglets" + +#: ../data/glade/gajim_themes_window.glade.h:2 +msgid "" +"Account\n" +"Group\n" +"Contact\n" +"Banner" +msgstr "" +"Compte\n" +"Groupe\n" +"Contact\n" +"Bannière" + +#: ../data/glade/gajim_themes_window.glade.h:6 +#: ../data/glade/privacy_list_edit_window.glade.h:4 ../src/config.py:326 +msgid "Active" +msgstr "Actif" + +#: ../data/glade/gajim_themes_window.glade.h:7 +msgid "Bold" +msgstr "Gras" + +#: ../data/glade/gajim_themes_window.glade.h:8 +msgid "Composing" +msgstr "En train d'écrire" + +#: ../data/glade/gajim_themes_window.glade.h:9 +msgid "Font style:" +msgstr "Style de la police :" + +#: ../data/glade/gajim_themes_window.glade.h:10 +msgid "Gajim Themes Customization" +msgstr "Personalisation des thèmes de Gajim" + +#: ../data/glade/gajim_themes_window.glade.h:11 +msgid "Gone" +msgstr "Parti" + +#: ../data/glade/gajim_themes_window.glade.h:12 +msgid "Inactive" +msgstr "Inactif" + +#: ../data/glade/gajim_themes_window.glade.h:13 +msgid "Italic" +msgstr "Italique" + +#: ../data/glade/gajim_themes_window.glade.h:14 +msgid "" +"MUC\n" +"Messages" +msgstr "" +"Messages\n" +"de salon" + +#: ../data/glade/gajim_themes_window.glade.h:16 +msgid "" +"MUC Directed\n" +"Messages" +msgstr "" +"Messages \n" +"Dirigés dans\n" +"les salons" + +#: ../data/glade/gajim_themes_window.glade.h:18 ../src/tooltips.py:667 +msgid "Paused" +msgstr "Pause" + +#: ../data/glade/gajim_themes_window.glade.h:19 +msgid "Text _color:" +msgstr "_Couleur du texte :" + +#: ../data/glade/gajim_themes_window.glade.h:20 +msgid "Text _font:" +msgstr "_Police du texte :" + +#: ../data/glade/gajim_themes_window.glade.h:21 +msgid "_Background:" +msgstr "_Arrière-plan :" + +#: ../data/glade/gc_control_popup_menu.glade.h:1 +msgid "Change _Nickname" +msgstr "Changer de sur_nom" + +#: ../data/glade/gc_control_popup_menu.glade.h:2 +msgid "Change _Subject" +msgstr "Changer le _sujet" + +#: ../data/glade/gc_control_popup_menu.glade.h:3 +msgid "Click to see past conversation in this room" +msgstr "Cliquez ici pour voir les précédentes conversations de ce salon" + +#: ../data/glade/gc_control_popup_menu.glade.h:4 +msgid "Configure _Room" +msgstr "Confi_gurer le Salon" + +#: ../data/glade/gc_control_popup_menu.glade.h:5 +msgid "_Bookmark This Room" +msgstr "Ajouter ce salon aux _Marque-pages" + +#: ../data/glade/gc_occupants_menu.glade.h:1 +msgid "Mo_derator" +msgstr "Mo_dérer" + +#: ../data/glade/gc_occupants_menu.glade.h:3 +msgid "_Admin" +msgstr "_Administrateur" + +#: ../data/glade/gc_occupants_menu.glade.h:4 +msgid "_Ban" +msgstr "_Bannir" + +#: ../data/glade/gc_occupants_menu.glade.h:6 +msgid "_Kick" +msgstr "_Éjecter" + +#: ../data/glade/gc_occupants_menu.glade.h:7 +msgid "_Member" +msgstr "_Membre" + +#: ../data/glade/gc_occupants_menu.glade.h:8 +msgid "_Occupant Actions" +msgstr "_Pouvoirs du contact" + +#: ../data/glade/gc_occupants_menu.glade.h:9 +msgid "_Owner" +msgstr "Pr_opriétaire" + +#: ../data/glade/gc_occupants_menu.glade.h:10 +msgid "_Send Private Message" +msgstr "_Envoyer un message privé" + +#: ../data/glade/gc_occupants_menu.glade.h:11 +msgid "_Voice" +msgstr "_S'exprimer" + +#: ../data/glade/history_manager.glade.h:1 +msgid "" +"Welcome to Gajim History Logs Manager\n" +"\n" +"You can select logs from the left and/or search database from below.\n" +"\n" +"WARNING:\n" +"If you plan to do massive deletions, please make sure Gajim is not running. " +"Generally avoid deletions with contacts you currently chat with." +msgstr "" +"Bienvenue dans le Gestionnaire d'Historique de Gajim\n" +"\n" +"Vous pouvez sélectionner les contacts sur la gauche et/ou rechercher dans la " +"base de données en bas.\n" +"\n" +"ATTENTION :\n" +"Si vous faites beaucoup de suppressions, vérifiez que Gajim n'est pas lancé. " +"Ne faites pas de suppressions avec un contact avec qui vous êtes en train de " +"parler." + +#: ../data/glade/history_manager.glade.h:7 +msgid "Delete" +msgstr "Supprimer" + +#: ../data/glade/history_manager.glade.h:8 +msgid "Export" +msgstr "Exporter" + +#: ../data/glade/history_manager.glade.h:9 +msgid "Gajim History Logs Manager" +msgstr "Gestionnaire d'Historique de Gajim" + +#: ../data/glade/history_manager.glade.h:10 +msgid "_Search Database" +msgstr "Rechercher dans la base de données" + +#: ../data/glade/history_window.glade.h:1 +msgid "Build custom query" +msgstr "Créer une requête personnalisée" + +#: ../data/glade/history_window.glade.h:2 +msgid "Conversation History" +msgstr "Historique de Conversation" + +#: ../data/glade/history_window.glade.h:3 +msgid "Query Builder..." +msgstr "Construire une Requête..." + +#: ../data/glade/history_window.glade.h:4 +msgid "Search" +msgstr "Chercher" + +#: ../data/glade/history_window.glade.h:5 +msgid "_Search" +msgstr "_Rechercher" + +#: ../data/glade/invitation_received_dialog.glade.h:1 +msgid "Accept" +msgstr "Accepter" + +#: ../data/glade/invitation_received_dialog.glade.h:2 +#: ../data/glade/privacy_list_edit_window.glade.h:8 +msgid "Deny" +msgstr "Refuser" + +#: ../data/glade/invitation_received_dialog.glade.h:3 +msgid "Invitation Received" +msgstr "Invitation reçue" + +#: ../data/glade/join_groupchat_window.glade.h:1 ../src/dialogs.py:941 +msgid "Join Group Chat" +msgstr "Rejoindre un salon de discussion" + +#: ../data/glade/join_groupchat_window.glade.h:2 +#: ../data/glade/manage_bookmarks_window.glade.h:4 +#: ../data/glade/vcard_information_window.glade.h:28 +msgid "Nickname:" +msgstr "Surnom :" + +#: ../data/glade/join_groupchat_window.glade.h:3 +#: ../data/glade/manage_bookmarks_window.glade.h:5 +msgid "Password:" +msgstr "Mot de passe :" + +#: ../data/glade/join_groupchat_window.glade.h:4 +msgid "Recently:" +msgstr "Récemment :" + +#: ../data/glade/join_groupchat_window.glade.h:5 +#: ../data/glade/manage_bookmarks_window.glade.h:7 +msgid "Room:" +msgstr "Salon :" + +#: ../data/glade/join_groupchat_window.glade.h:6 +#: ../data/glade/manage_bookmarks_window.glade.h:8 +msgid "Server:" +msgstr "Serveur :" + +#: ../data/glade/join_groupchat_window.glade.h:7 ../src/disco.py:1145 +#: ../src/disco.py:1507 +msgid "_Join" +msgstr "Re_joindre" + +#: ../data/glade/manage_accounts_window.glade.h:1 +msgid "Manage Accounts" +msgstr "Gérer les comptes" + +#: ../data/glade/manage_bookmarks_window.glade.h:1 +msgid "Auto join" +msgstr "Rejoindre automatiquement" + +#: ../data/glade/manage_bookmarks_window.glade.h:2 +msgid "If checked, Gajim will join this group chat on startup" +msgstr "Si cette case est cochée, Gajim se connectera à ce salon au démarrage" + +#: ../data/glade/manage_bookmarks_window.glade.h:3 +msgid "Manage Bookmarks" +msgstr "Gérer les Marque-pages" + +#: ../data/glade/manage_bookmarks_window.glade.h:6 +#, fuzzy +msgid "Print status:" +msgstr "Afficher l'heure :" + +#: ../data/glade/manage_bookmarks_window.glade.h:9 +msgid "Title:" +msgstr "Titre :" + +#: ../data/glade/manage_proxies_window.glade.h:1 +msgid "Properties" +msgstr "Propriétés" + +#: ../data/glade/manage_proxies_window.glade.h:2 +msgid "Settings" +msgstr "Réglages" + +#: ../data/glade/manage_proxies_window.glade.h:3 +msgid "HTTP Connect" +msgstr "Connexion HTTP" + +#: ../data/glade/manage_proxies_window.glade.h:4 +msgid "Manage Proxy Profiles" +msgstr "Gérer les profils de proxies" + +#: ../data/glade/manage_proxies_window.glade.h:5 +#: ../data/glade/vcard_information_window.glade.h:27 +msgid "Name:" +msgstr "Nom :" + +#: ../data/glade/manage_proxies_window.glade.h:7 +msgid "Type:" +msgstr "Type :" + +#: ../data/glade/manage_proxies_window.glade.h:8 +msgid "Use authentication" +msgstr "Utiliser l'authentification" + +#: ../data/glade/message_window.glade.h:1 +msgid "Click to insert an emoticon (Alt+M)" +msgstr "Cliquer pour insérer un émoticône (Alt+M)" + +#: ../data/glade/message_window.glade.h:2 ../src/chat_control.py:966 +msgid "OpenPGP Encryption" +msgstr "Chiffrement OpenPGP" + +#. Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector) +#: ../data/glade/message_window.glade.h:4 +#: ../data/glade/roster_window.glade.h:9 +msgid "_Actions" +msgstr "Ac_tions" + +#. Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector) +#: ../data/glade/message_window.glade.h:6 +#: ../data/glade/xml_console_window.glade.h:11 +#: ../src/filetransfers_window.py:249 +msgid "_Send" +msgstr "En_voyer" + +#: ../data/glade/passphrase_dialog.glade.h:1 +msgid "Passphrase" +msgstr "Mot de passe" + +#: ../data/glade/preferences_window.glade.h:1 +msgid "Advanced Configuration Editor" +msgstr "Éditeur de Configuration avancée" + +#: ../data/glade/preferences_window.glade.h:2 +msgid "Applications" +msgstr "Applications" + +#. a header for custom browser/client/file manager. so translate sth like: Custom Settings +#: ../data/glade/preferences_window.glade.h:4 +msgid "Custom" +msgstr "Personnalisé" + +#: ../data/glade/preferences_window.glade.h:5 +msgid "Format of a line" +msgstr "Format d'une ligne de discussion" + +#: ../data/glade/preferences_window.glade.h:6 +#, fuzzy +msgid "GMail Options" +msgstr "Applications" + +#: ../data/glade/preferences_window.glade.h:7 +msgid "Interface Customization" +msgstr "Personnalisation de l'interface" + +#: ../data/glade/preferences_window.glade.h:9 +msgid "Preset Status Messages" +msgstr "Messages d'état prédéfinis" + +#: ../data/glade/preferences_window.glade.h:11 +msgid "Visual Notifications" +msgstr "Notifications visuelles" + +#: ../data/glade/preferences_window.glade.h:12 +msgid "A_fter nickname:" +msgstr "Après le surnom :" + +#: ../data/glade/preferences_window.glade.h:13 +msgid "Advanced" +msgstr "Avancées" + +#: ../data/glade/preferences_window.glade.h:14 +msgid "" +"All chat states\n" +"Composing only\n" +"Disabled" +msgstr "" +"Tous les états\n" +"En train de composer seulement\n" +"Aucun" + +#: ../data/glade/preferences_window.glade.h:17 +msgid "Allow _OS information to be sent" +msgstr "" +"Autoriser l'envoi des informations concernant votre _système d'exploitation" + +#: ../data/glade/preferences_window.glade.h:18 +msgid "Allow popup/notifications when I'm _away/na/busy/invisible" +msgstr "" +"Autoriser les _notifications lorsque je suis absent/indisponible/occupé/" +"invisible" + +#: ../data/glade/preferences_window.glade.h:19 +msgid "Also known as iChat style" +msgstr "Aussi appellé style iChat" + +#: ../data/glade/preferences_window.glade.h:20 +msgid "Ask status message when I:" +msgstr "Demander le message d'état lorsque je me : " + +#: ../data/glade/preferences_window.glade.h:21 +msgid "Auto _away after:" +msgstr "Passer _absent après :" + +#: ../data/glade/preferences_window.glade.h:22 +msgid "Auto _not available after:" +msgstr "Passer _indisponible après :" + +#: ../data/glade/preferences_window.glade.h:23 +msgid "" +"Autodetect on every Gajim startup\n" +"Always use GNOME default applications\n" +"Always use KDE default applications\n" +"Custom" +msgstr "" +"Détection automatique à chaque démarrage\n" +"Toujours utiliser les applications par défaut de GNOME\n" +"Toujours utiliser les applications par défaut de KDE\n" +"Personnalisé" + +#: ../data/glade/preferences_window.glade.h:27 +msgid "B_efore nickname:" +msgstr "Avant le surnom :" + +#: ../data/glade/preferences_window.glade.h:28 ../src/chat_control.py:718 +msgid "Chat" +msgstr "Discussion" + +#: ../data/glade/preferences_window.glade.h:29 +msgid "Chat state noti_fications:" +msgstr "Noti_fications d'état de discussion" + +#: ../data/glade/preferences_window.glade.h:30 +msgid "" +"Check this option, only if someone you don't have in the roster spams/annoys " +"you. Use with caution, cause it blocks all messages from any contact that is " +"not in the roster" +msgstr "" +"Cochez cette option seulement si quelqu'un n'appartenant pas à votre liste " +"vous spamme/ennuie. Utilisez la avec précaution, car elle bloque tous les " +"messages des contacts qui ne sont pas dans votre liste" + +#: ../data/glade/preferences_window.glade.h:31 +msgid "Default status _iconset:" +msgstr "_Icônes d'état par défaut :" + +#: ../data/glade/preferences_window.glade.h:32 +msgid "Display _extra email details" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:33 +msgid "Display a_vatars of contacts in roster" +msgstr "Afficher l'a_vatar des contacts dans la liste des contacts" + +#: ../data/glade/preferences_window.glade.h:34 +msgid "Display status _messages of contacts in roster" +msgstr "Afficher les _messages d'état des contacts dans la liste des contacts" + +#: ../data/glade/preferences_window.glade.h:35 +msgid "E_very 5 minutes" +msgstr "Toutes les 5 minutes" + +#: ../data/glade/preferences_window.glade.h:36 +msgid "Emoticons:" +msgstr "Émoticônes :" + +#: ../data/glade/preferences_window.glade.h:37 +msgid "Events" +msgstr "Événements" + +#: ../data/glade/preferences_window.glade.h:38 +msgid "" +"Gajim can send and receive meta-information related to a conversation you " +"may have with a contact. Here you can specify which chatstates you want to " +"send to the other party." +msgstr "" +"Gajim peut envoyer et recevoir des meta-informations concernant les " +"conversations que vous pouvez avoir avec un contact. Vous pouvez ici " +"spécifier quel état de conversation vous voulez envoyer à vos contacts." + +#: ../data/glade/preferences_window.glade.h:39 +msgid "" +"Gajim will automatically show new events by poping up the relative window" +msgstr "" +"Gajim montrera automatiquement les nouveaux évènements reçus en montrant la " +"fenêtre correspondante" + +#: ../data/glade/preferences_window.glade.h:40 +msgid "" +"Gajim will notify you for new events via a popup in the bottom right of the " +"screen" +msgstr "" +"Gajim vous signalera les nouveaux évènements dans une fenêtre en bas à " +"droite de l'écran" + +#: ../data/glade/preferences_window.glade.h:41 +msgid "" +"Gajim will notify you via a popup window in the bottom right of the screen " +"about contacts that just signed in" +msgstr "" +"Gajim vous signalera par une fenêtre de notification en bas à droite de " +"l'écran qu'un contact s'est connecté" + +#: ../data/glade/preferences_window.glade.h:42 +msgid "" +"Gajim will notify you via a popup window in the bottom right of the screen " +"about contacts that just signed out" +msgstr "" +"Gajim vous signalera par une fenêtre de notification en bas à droite de " +"l'écran qu'un contact s'est déconnecté" + +#: ../data/glade/preferences_window.glade.h:43 +msgid "" +"Gajim will only change the icon of the contact that triggered the new event" +msgstr "" +"Gajim ne fera que changer l'icône du contact qui a envoyé le nouvel évènement" + +#: ../data/glade/preferences_window.glade.h:45 +msgid "" +"If checked, Gajim will display avatars of contacts in roster window and in " +"group chats" +msgstr "" +"Si cette case est cochée, Gajim affichera l'avatar de chaque contact dans la " +"fenêtre principale et les salons" + +#: ../data/glade/preferences_window.glade.h:46 +msgid "" +"If checked, Gajim will display status messages of contacts under the contact " +"name in roster window and in group chats" +msgstr "" +"Si cette case est cochée, Gajim affichera le message d'état, sous le nom de " +"chaque contact dans la fenêtre principale et les salons" + +#: ../data/glade/preferences_window.glade.h:47 +msgid "" +"If checked, Gajim will remember the roster and chat window positions in the " +"screen and the sizes of them next time you run it" +msgstr "" +"Si cette case est cochée, Gajim va retenir la position de votre liste " +"decontacts et des fenêtres de discussion pour vos prochaines utilisations" + +#: ../data/glade/preferences_window.glade.h:48 +msgid "" +"If checked, Gajim will use protocol-specific status icons. (eg. A contact " +"from MSN will have the equivalent msn icon for status online, away, busy, " +"etc...)" +msgstr "" +"Si cette case est cochée, Gajim utilisera des icônes d'état spécifiques aux " +"protocoles. (Par ex. un contact MSN aura les icônes de MSN pour les états " +"disponible, absent, occupé, etc)" + +#: ../data/glade/preferences_window.glade.h:49 +msgid "" +"If not disabled, Gajim will replace ascii smilies like ':)' with equivalent " +"animated or static graphical emoticons" +msgstr "" +"Si cette case n'est pas décochée, Gajim va remplacer les émoticône ASCII " +"comme « :) » par un équivalent graphique statique ou dynamique" + +#: ../data/glade/preferences_window.glade.h:50 +msgid "Ma_nage..." +msgstr "_Gérer..." + +#: ../data/glade/preferences_window.glade.h:51 +msgid "" +"Never\n" +"Always\n" +"Per account\n" +"Per type" +msgstr "" +"Jamais\n" +"Toujours\n" +"Par compte\n" +"Par type" + +#: ../data/glade/preferences_window.glade.h:55 +msgid "Notify me about contacts that: " +msgstr "Me Signaler quand un contact se : " + +#: ../data/glade/preferences_window.glade.h:56 +#, fuzzy +msgid "Notify on new _GMail email" +msgstr "Me prévenir lorsqu'un nouveau courrier électronique _Gmail arrive" + +#: ../data/glade/preferences_window.glade.h:57 +msgid "On every _message" +msgstr "À _chaque message" + +#: ../data/glade/preferences_window.glade.h:58 +msgid "One message _window:" +msgstr "Une seule fenêtre de discussion :" + +#: ../data/glade/preferences_window.glade.h:59 +msgid "Play _sounds" +msgstr "_Jouer les sons" + +#: ../data/glade/preferences_window.glade.h:60 +msgid "Preferences" +msgstr "Préférences" + +#: ../data/glade/preferences_window.glade.h:61 +msgid "Print time:" +msgstr "Afficher l'heure :" + +#: ../data/glade/preferences_window.glade.h:62 +msgid "Save _position and size for roster and chat windows" +msgstr "" +"Garder la _position et la taille pour la liste de contact et les fenêtres de " +"discussion" + +#: ../data/glade/preferences_window.glade.h:63 +msgid "Show only in _roster" +msgstr "Ne le montrer que dans la _liste" + +#: ../data/glade/preferences_window.glade.h:64 +msgid "Sign _in" +msgstr "_connecte" + +#: ../data/glade/preferences_window.glade.h:65 +msgid "Sign _out" +msgstr "_déconnecte" + +#: ../data/glade/preferences_window.glade.h:66 +msgid "Status" +msgstr "État" + +#: ../data/glade/preferences_window.glade.h:67 +msgid "T_heme:" +msgstr "T_hème :" + +#: ../data/glade/preferences_window.glade.h:68 +msgid "The auto away status message" +msgstr "Le message automatique pour l'état \"absent\"" + +#: ../data/glade/preferences_window.glade.h:69 +msgid "The auto not available status message" +msgstr "Le message automatique pour l'état \"non disponible\"" + +#: ../data/glade/preferences_window.glade.h:70 +msgid "Use _transports iconsets" +msgstr "Utiliser les icônes des passere_lles" + +#: ../data/glade/preferences_window.glade.h:71 +msgid "Use system _default" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:72 +msgid "Use t_rayicon (aka. notification area icon)" +msgstr "_Icône dans la zone de notification (trayicon)" + +#: ../data/glade/preferences_window.glade.h:73 +msgid "" +"When a new event (message, file transfer request etc..) is received, the " +"following methods may be used to inform you about it. Please note that " +"events about new messages only occur if it is a new message from a contact " +"you are not already chatting with" +msgstr "" +"Lorsqu'un nouvel événement (message, requête de transfert de fichier, etc.) " +"est reçu, les méthodes suivantes peuvent être utilisées pour vous en " +"informer. NB : Les événements de nouveau message ne surviennent que s'ils " +"proviennent d'un contact avec qui vous n'êtes pas déjà en train de parler" + +#: ../data/glade/preferences_window.glade.h:74 +msgid "When new event is received" +msgstr "Quand un nouvel événement est reçu" + +#: ../data/glade/preferences_window.glade.h:75 +#, fuzzy +msgid "_Advanced Notifications Control..." +msgstr "Éditeur de configuration avancée" + +#: ../data/glade/preferences_window.glade.h:76 +msgid "_After time:" +msgstr "_Après l'heure :" + +#: ../data/glade/preferences_window.glade.h:77 +msgid "_Before time:" +msgstr "A_vant l'heure :" + +#: ../data/glade/preferences_window.glade.h:78 +msgid "_Browser:" +msgstr "_Navigateur :" + +#: ../data/glade/preferences_window.glade.h:79 +msgid "_File manager:" +msgstr "Gestionnaire de _fichiers :" + +#: ../data/glade/preferences_window.glade.h:80 +msgid "_Font:" +msgstr "_Police :" + +#: ../data/glade/preferences_window.glade.h:81 +msgid "_Highlight misspelled words" +msgstr "_Souligner les fautes d'orthographe" + +#: ../data/glade/preferences_window.glade.h:82 +msgid "_Ignore events from contacts not in the roster" +msgstr "_Ignorer les messages des contacts qui ne sont pas dans votre liste" + +#: ../data/glade/preferences_window.glade.h:83 +msgid "_Incoming message:" +msgstr "Message _entrant :" + +#: ../data/glade/preferences_window.glade.h:84 +msgid "_Log status changes of contacts" +msgstr "_Inscrire dans l'historique les changements d'état des contacts" + +#: ../data/glade/preferences_window.glade.h:85 +msgid "_Mail client:" +msgstr "Logiciel de courriel :" + +#: ../data/glade/preferences_window.glade.h:86 +msgid "_Never" +msgstr "_Jamais" + +#: ../data/glade/preferences_window.glade.h:87 +msgid "_Notify me about it" +msgstr "Me le _signaler" + +#: ../data/glade/preferences_window.glade.h:88 +msgid "_Open..." +msgstr "_Ouvrir..." + +#: ../data/glade/preferences_window.glade.h:89 +msgid "_Outgoing message:" +msgstr "Message s_ortant :" + +#: ../data/glade/preferences_window.glade.h:90 +msgid "_Player:" +msgstr "_Programme pour lire les sons :" + +#: ../data/glade/preferences_window.glade.h:91 +msgid "_Pop it up" +msgstr "L'_afficher" + +#: ../data/glade/preferences_window.glade.h:92 +msgid "_Reset to Default Colors" +msgstr "Utilise_r les Couleurs par Défaut" + +#: ../data/glade/preferences_window.glade.h:93 +msgid "_Sort contacts by status" +msgstr "Trier les contacts par _statut" + +#: ../data/glade/preferences_window.glade.h:94 +msgid "_Status message:" +msgstr "Message d'état :" + +#: ../data/glade/preferences_window.glade.h:95 +msgid "_URL:" +msgstr "_URL :" + +#: ../data/glade/preferences_window.glade.h:96 +msgid "minutes" +msgstr "minutes" + +#: ../data/glade/privacy_list_edit_window.glade.h:1 +msgid "Add / Edit a rule" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:2 +#, fuzzy +msgid "List of rules" +msgstr "Format d'une ligne de discussion" + +#: ../data/glade/privacy_list_edit_window.glade.h:3 +msgid "Privacy List" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:5 ../src/config.py:2281 +msgid "All" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:6 +msgid "Allow" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:7 +#, fuzzy +msgid "Default" +msgstr "Supprimer" + +#: ../data/glade/privacy_list_edit_window.glade.h:9 +#, fuzzy +msgid "JabberID" +msgstr "Identifiant Jabber :" + +#: ../data/glade/privacy_list_edit_window.glade.h:10 +#, fuzzy +msgid "Order:" +msgstr "Serveur :" + +#: ../data/glade/privacy_list_edit_window.glade.h:11 ../src/dialogs.py:1626 +#, fuzzy +msgid "Privacy List" +msgstr "Liste des Bannis" + +#: ../data/glade/privacy_list_edit_window.glade.h:12 +#, fuzzy +msgid "all by subscription" +msgstr "_Autorisation" + +#: ../data/glade/privacy_list_edit_window.glade.h:13 +#, fuzzy +msgid "all in the group" +msgstr "Dans le groupe" + +#: ../data/glade/privacy_list_edit_window.glade.h:14 +msgid "" +"none\n" +"both\n" +"from\n" +"to" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:18 +#, fuzzy +msgid "to send me messages" +msgstr "Envoyer un message" + +#: ../data/glade/privacy_list_edit_window.glade.h:19 +msgid "to send me queries" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:20 +#, fuzzy +msgid "to send me status" +msgstr "Lui demander à voir son état" + +#: ../data/glade/privacy_list_edit_window.glade.h:21 +#, fuzzy +msgid "to view my status" +msgstr "L'autoriser à voir mon état" + +#: ../data/glade/privacy_lists_first_window.glade.h:1 +msgid "Create your own Privacy Lists" +msgstr "" + +#: ../data/glade/privacy_lists_first_window.glade.h:2 +msgid "Server-based Privacy Lists" +msgstr "" + +#: ../data/glade/remove_account_window.glade.h:1 +msgid "What do you want to do?" +msgstr "Que voulez vous faire ?" + +#: ../data/glade/remove_account_window.glade.h:2 +msgid "Remove account _only from Gajim" +msgstr "Supprimer le compte de Gajim _uniquement" + +#: ../data/glade/remove_account_window.glade.h:3 +msgid "Remove account from Gajim and from _server" +msgstr "Supprimer le compte de Gajim et du _serveur" + +#: ../data/glade/roster_contact_context_menu.glade.h:1 +#, fuzzy +msgid "A_sk to see his/her status" +msgstr "Lui demander à voir son état" + +#: ../data/glade/roster_contact_context_menu.glade.h:2 +msgid "Add Special _Notification" +msgstr "Ajouter une notification spéciale" + +#: ../data/glade/roster_contact_context_menu.glade.h:3 +msgid "Assign Open_PGP Key" +msgstr "Assigner une clé Open_PGP" + +#: ../data/glade/roster_contact_context_menu.glade.h:4 +msgid "Edit _Groups" +msgstr "Éditer les _groupes" + +#: ../data/glade/roster_contact_context_menu.glade.h:5 +#: ../data/glade/systray_context_menu.glade.h:1 +msgid "Send Single _Message" +msgstr "Envoyer un _message simple" + +#: ../data/glade/roster_contact_context_menu.glade.h:7 +msgid "Start _Chat" +msgstr "Commencer une _discussion" + +#: ../data/glade/roster_contact_context_menu.glade.h:9 +#, fuzzy +msgid "_Allow him/her to see my status" +msgstr "L'autoriser à voir mon état" + +#: ../data/glade/roster_contact_context_menu.glade.h:10 +#, fuzzy +msgid "_Forbid him/her to see my status" +msgstr "Lui interdire de voir mon état" + +#: ../data/glade/roster_contact_context_menu.glade.h:12 +#: ../src/roster_window.py:1482 +msgid "_Remove from Roster" +msgstr "_Enlever de la liste de contacts" + +#: ../data/glade/roster_contact_context_menu.glade.h:13 +#: ../src/roster_window.py:1470 +msgid "_Rename" +msgstr "_Renommer" + +#: ../data/glade/roster_contact_context_menu.glade.h:14 +msgid "_Subscription" +msgstr "_Autorisation" + +#: ../data/glade/roster_window.glade.h:1 +msgid "A_ccounts" +msgstr "_Comptes" + +#: ../data/glade/roster_window.glade.h:2 +msgid "Add _Contact" +msgstr "Ajouter un _contact" + +#: ../data/glade/roster_window.glade.h:3 +msgid "File _Transfers" +msgstr "_Transfert de fichiers" + +#: ../data/glade/roster_window.glade.h:4 +msgid "Frequently Asked Questions (online)" +msgstr "Foire Aux Questions (en ligne)" + +#: ../data/glade/roster_window.glade.h:6 +msgid "Help online" +msgstr "Aide en ligne" + +#: ../data/glade/roster_window.glade.h:7 +msgid "Profile, Avatar" +msgstr "Profil, _Avatar" + +#: ../data/glade/roster_window.glade.h:8 +msgid "Show _Offline Contacts" +msgstr "Montrer les contacts déc_onnectés" + +#: ../data/glade/roster_window.glade.h:11 +msgid "_Contents" +msgstr "_Sommaire" + +#: ../data/glade/roster_window.glade.h:12 +msgid "_Discover Services" +msgstr "_Découvrir les services" + +#: ../data/glade/roster_window.glade.h:13 ../src/disco.py:1252 +#: ../src/roster_window.py:1462 +msgid "_Edit" +msgstr "É_dition" + +#: ../data/glade/roster_window.glade.h:14 +msgid "_FAQ" +msgstr "_FAQ" + +#: ../data/glade/roster_window.glade.h:16 +msgid "_Help" +msgstr "Aid_e" + +#: ../data/glade/roster_window.glade.h:17 +msgid "_Preferences" +msgstr "_Préférences" + +#: ../data/glade/roster_window.glade.h:18 +msgid "_Quit" +msgstr "_Quitter" + +#: ../data/glade/service_discovery_window.glade.h:1 +msgid "G_o" +msgstr "Parc_ourir" + +#: ../data/glade/service_discovery_window.glade.h:2 +msgid "_Address:" +msgstr "_Adresse :" + +#: ../data/glade/service_discovery_window.glade.h:3 +msgid "_Filter:" +msgstr "_Filtre :" + +#: ../data/glade/service_registration_window.glade.h:1 +msgid "Register to" +msgstr "S'enregistrer à" + +#: ../data/glade/service_registration_window.glade.h:2 +msgid "_Cancel" +msgstr "_Annuler" + +#: ../data/glade/service_registration_window.glade.h:3 +msgid "_OK" +msgstr "_OK" + +#: ../data/glade/single_message_window.glade.h:1 +msgid "0" +msgstr "0" + +#: ../data/glade/single_message_window.glade.h:2 +msgid "From:" +msgstr "De :" + +#: ../data/glade/single_message_window.glade.h:3 +msgid "Reply to this message" +msgstr "Repondre à ce message" + +#: ../data/glade/single_message_window.glade.h:4 +msgid "Sen_d" +msgstr "_Envoyer" + +#: ../data/glade/single_message_window.glade.h:5 +msgid "Send message" +msgstr "Envoyer un message" + +#: ../data/glade/single_message_window.glade.h:6 +msgid "Send message and close window" +msgstr "Envoyer le message et fermer la fenêtre" + +#: ../data/glade/single_message_window.glade.h:7 +msgid "Subject:" +msgstr "Sujet :" + +#: ../data/glade/single_message_window.glade.h:8 +msgid "To:" +msgstr "À :" + +#: ../data/glade/single_message_window.glade.h:9 +msgid "_Reply" +msgstr "_Répondre" + +#: ../data/glade/single_message_window.glade.h:10 +msgid "_Send & Close" +msgstr "_Envoyer et Fermer" + +#: ../data/glade/subscription_request_window.glade.h:1 +msgid "Authorize contact so he can know when you're connected" +msgstr "Autoriser le contact à savoir quand vous êtes connecté" + +#: ../data/glade/subscription_request_window.glade.h:2 +msgid "Contact _Info" +msgstr "_Informations" + +#: ../data/glade/subscription_request_window.glade.h:3 +msgid "Deny authorization from contact so he cannot know when you're connected" +msgstr "" +"Refuser l'autorisation au contact pour qu'il ne puisse pas savoir quand vous " +"êtes connecté" + +#: ../data/glade/subscription_request_window.glade.h:4 +msgid "Subscription Request" +msgstr "Requête d'Inscription" + +#: ../data/glade/subscription_request_window.glade.h:5 +msgid "_Authorize" +msgstr "_Autoriser" + +#: ../data/glade/subscription_request_window.glade.h:6 +msgid "_Deny" +msgstr "_Refuser" + +#: ../data/glade/systray_context_menu.glade.h:2 +msgid "Show All Pending _Events" +msgstr "Montrer tous les _événements en attente" + +#: ../data/glade/systray_context_menu.glade.h:3 +msgid "Show _Roster" +msgstr "Montrer la _liste de contacts" + +#: ../data/glade/systray_context_menu.glade.h:4 +msgid "Sta_tus" +msgstr "É_tat" + +#. "About" is the text of a tab of vcard window +#: ../data/glade/vcard_information_window.glade.h:2 +msgid "About" +msgstr "À propos" + +#: ../data/glade/vcard_information_window.glade.h:3 +msgid "Address" +msgstr "Adresse" + +#: ../data/glade/vcard_information_window.glade.h:4 +msgid "Ask:" +msgstr "Demande :" + +#: ../data/glade/vcard_information_window.glade.h:5 +msgid "Birthday:" +msgstr "Anniversaire :" + +#: ../data/glade/vcard_information_window.glade.h:6 +msgid "City:" +msgstr "Ville :" + +#: ../data/glade/vcard_information_window.glade.h:7 +msgid "Client:" +msgstr "Client :" + +#: ../data/glade/vcard_information_window.glade.h:8 +msgid "Company:" +msgstr "Entreprise :" + +#: ../data/glade/vcard_information_window.glade.h:9 +msgid "Contact Information" +msgstr "Informations" + +#: ../data/glade/vcard_information_window.glade.h:10 +msgid "Country:" +msgstr "Pays :" + +#: ../data/glade/vcard_information_window.glade.h:11 +msgid "Department:" +msgstr "Département :" + +#: ../data/glade/vcard_information_window.glade.h:12 +msgid "E-Mail:" +msgstr "Courriel :" + +#: ../data/glade/vcard_information_window.glade.h:13 +msgid "Extra Address:" +msgstr "Adresse 2 :" + +#. Family Name +#: ../data/glade/vcard_information_window.glade.h:15 +msgid "Family:" +msgstr "Famille :" + +#: ../data/glade/vcard_information_window.glade.h:16 +msgid "Format: YYYY-MM-DD" +msgstr "Format : AAAA-MM-JJ" + +#. Given Name +#: ../data/glade/vcard_information_window.glade.h:19 +msgid "Given:" +msgstr "Prénom :" + +#: ../data/glade/vcard_information_window.glade.h:20 +msgid "Homepage:" +msgstr "Site perso :" + +#: ../data/glade/vcard_information_window.glade.h:21 +msgid "Jabber" +msgstr "Jabber" + +#: ../data/glade/vcard_information_window.glade.h:22 +msgid "Jabber ID:" +msgstr "Identifiant Jabber :" + +#: ../data/glade/vcard_information_window.glade.h:23 +msgid "Location" +msgstr "Adresse" + +#. Middle Name +#: ../data/glade/vcard_information_window.glade.h:25 +msgid "Middle:" +msgstr "Second prénom :" + +#: ../data/glade/vcard_information_window.glade.h:26 +msgid "More" +msgstr "Complément" + +#: ../data/glade/vcard_information_window.glade.h:29 +msgid "OS:" +msgstr "Syst. d'exploit. :" + +#: ../data/glade/vcard_information_window.glade.h:30 +msgid "Phone No.:" +msgstr "Téléphone :" + +#: ../data/glade/vcard_information_window.glade.h:31 +msgid "Position:" +msgstr "Poste :" + +#: ../data/glade/vcard_information_window.glade.h:32 +msgid "Postal Code:" +msgstr "Code postal :" + +#. Prefix in Name +#: ../data/glade/vcard_information_window.glade.h:34 +msgid "Prefix:" +msgstr "Titre :" + +#: ../data/glade/vcard_information_window.glade.h:35 +msgid "Resource:" +msgstr "Ressource :" + +#: ../data/glade/vcard_information_window.glade.h:36 +msgid "Role:" +msgstr "Fonction :" + +#: ../data/glade/vcard_information_window.glade.h:37 +msgid "Set _Avatar" +msgstr "Choisir un _avatar" + +#: ../data/glade/vcard_information_window.glade.h:38 +msgid "State:" +msgstr "État :" + +#: ../data/glade/vcard_information_window.glade.h:39 +msgid "Status:" +msgstr "État :" + +#: ../data/glade/vcard_information_window.glade.h:40 +msgid "Street:" +msgstr "Rue :" + +#: ../data/glade/vcard_information_window.glade.h:41 +msgid "Subscription:" +msgstr "Inscription :" + +#. Suffix in Name +#: ../data/glade/vcard_information_window.glade.h:43 +msgid "Suffix:" +msgstr "Suffixe :" + +#: ../data/glade/vcard_information_window.glade.h:44 +msgid "Work" +msgstr "Emploi" + +#: ../data/glade/vcard_information_window.glade.h:45 +msgid "_Log conversation history" +msgstr "_Historique de Conversation" + +#: ../data/glade/vcard_information_window.glade.h:46 +msgid "_Publish" +msgstr "_Publier" + +#: ../data/glade/vcard_information_window.glade.h:47 +msgid "_Retrieve" +msgstr "_Récupérer" + +#: ../data/glade/xml_console_window.glade.h:1 +msgid "Jabber Traffic" +msgstr "Trafic Jabber" + +#: ../data/glade/xml_console_window.glade.h:2 +msgid "XML Input" +msgstr "Entrée XML" + +#. XML Console enable checkbutton +#: ../data/glade/xml_console_window.glade.h:4 +msgid "Enable" +msgstr "Activer" + +#. Info/Query make the "IQ" initials. So translate like this 'YourLang/YourLang (Info/Query)'. Thanks (it's a tooltip so width is not a problem) +#: ../data/glade/xml_console_window.glade.h:6 +msgid "Info/Query" +msgstr "Information/Demande" + +#. Info/Query: all(?) jabber xml start with Whom do you want to ban?\n" "\n" @@ -381,11 +2422,11 @@ msgstr "" "Qui voulez-vous bannir ?\n" "\n" -#: ../src/config.py:2023 +#: ../src/config.py:2062 msgid "Adding Member..." msgstr "Ajout d'un Membre ..." -#: ../src/config.py:2024 +#: ../src/config.py:2063 msgid "" "Whom do you want to make a member?\n" "\n" @@ -393,11 +2434,11 @@ msgstr "" "De qui voulez-vous faire un membre ?\n" "\n" -#: ../src/config.py:2026 +#: ../src/config.py:2065 msgid "Adding Owner..." msgstr "Ajout d'un Propriétaire ..." -#: ../src/config.py:2027 +#: ../src/config.py:2066 msgid "" "Whom do you want to make a owner?\n" "\n" @@ -405,11 +2446,11 @@ msgstr "" "De qui voulez-vous faire un propriétaire ?\n" "\n" -#: ../src/config.py:2029 +#: ../src/config.py:2068 msgid "Adding Administrator..." msgstr "Ajout d'un Administrateur ..." -#: ../src/config.py:2030 +#: ../src/config.py:2069 msgid "" "Whom do you want to make an administrator?\n" "\n" @@ -417,7 +2458,7 @@ msgstr "" "De qui voulez-vous faire un administrateur ?\n" "\n" -#: ../src/config.py:2031 +#: ../src/config.py:2070 msgid "" "Can be one of the following:\n" "1. user@domain/resource (only that resource matches).\n" @@ -430,721 +2471,761 @@ msgstr "" "1. pseudo@domaine/ressource (seulement cette ressource correspond).\n" "2. pseudo@domaine (toutes les ressources correspondent).\n" "3. domaine/ressources (seulement cette ressource correspond).\n" -"4. domaine (le domaine complet correspond, incluant tous les pseudo@domaine,\n" +"4. domaine (le domaine complet correspond, incluant tous les " +"pseudo@domaine,\n" "domaine/ressource, ou les adresses comprenant un sous-domaine)." -#: ../src/config.py:2127 +#: ../src/config.py:2166 #, python-format msgid "Removing %s account" msgstr "Supprimer le compte %s" -#: ../src/config.py:2144 -#: ../src/roster_window.py:1859 +#: ../src/config.py:2183 ../src/roster_window.py:1857 msgid "Password Required" msgstr "Mot de passe requis" -#: ../src/config.py:2145 -#: ../src/roster_window.py:1860 +#: ../src/config.py:2184 ../src/roster_window.py:1858 #, python-format msgid "Enter your password for account %s" msgstr "Entrez votre mot de passe pour le compte %s" -#: ../src/config.py:2146 -#: ../src/roster_window.py:1861 +#: ../src/config.py:2185 ../src/roster_window.py:1859 msgid "Save password" msgstr "Enregistrer le mot de passe" -#: ../src/config.py:2159 +#: ../src/config.py:2198 #, python-format msgid "Account \"%s\" is connected to the server" msgstr "Le compte \"%s\" est connecté au serveur" -#: ../src/config.py:2160 +#: ../src/config.py:2199 msgid "If you remove it, the connection will be lost." msgstr "Si vous l'enlevez, la connection sera perdue." -#: ../src/config.py:2295 +#: ../src/config.py:2282 +msgid "Enter and leave only" +msgstr "" + +#: ../src/config.py:2352 msgid "New Room" msgstr "Nouveau Salon" -#: ../src/config.py:2326 +#: ../src/config.py:2383 msgid "This bookmark has invalid data" msgstr "Ce marque-page contient des données invalides" -#: ../src/config.py:2327 -msgid "Please be sure to fill out server and room fields or remove this bookmark." -msgstr "Assurez-vous de remplir les champs serveur et salon ou enlevez ce marque-page" +#: ../src/config.py:2384 +msgid "" +"Please be sure to fill out server and room fields or remove this bookmark." +msgstr "" +"Assurez-vous de remplir les champs serveur et salon ou enlevez ce marque-page" -#: ../src/config.py:2564 +#: ../src/config.py:2638 msgid "Invalid username" msgstr "Nom d'utilisateur non valide" -#: ../src/config.py:2565 +#: ../src/config.py:2639 msgid "You must provide a username to configure this account." msgstr "Vous devez entrer un nom d'utilisateur pour configurer ce compte." -#: ../src/config.py:2574 -#: ../src/dialogs.py:1036 +#: ../src/config.py:2648 ../src/dialogs.py:1118 msgid "Invalid password" msgstr "Mot de passe invalide" -#: ../src/config.py:2575 +#: ../src/config.py:2649 msgid "You must enter a password for the new account." msgstr "Vous devez entrer un mot de passe pour enregistrer un nouveau compte." -#: ../src/config.py:2579 -#: ../src/dialogs.py:1041 +#: ../src/config.py:2653 ../src/dialogs.py:1123 msgid "Passwords do not match" msgstr "Les mots de passe ne correspondent pas" -#: ../src/config.py:2580 -#: ../src/dialogs.py:1042 +#: ../src/config.py:2654 ../src/dialogs.py:1124 msgid "The passwords typed in both fields must be identical." msgstr "Les mots de passe tapés dans chaque champs doivent être identiques." -#: ../src/config.py:2599 +#: ../src/config.py:2673 msgid "Duplicate Jabber ID" msgstr "Identifiant Jabber dupliqué" -#: ../src/config.py:2600 +#: ../src/config.py:2674 msgid "This account is already configured in Gajim." msgstr "Ce compte est déjà configuré dans Gajim." -#: ../src/config.py:2617 +#: ../src/config.py:2691 msgid "Account has been added successfully" msgstr "Compte ajouté avec succès" -#: ../src/config.py:2618 -#: ../src/config.py:2651 -msgid "You can set advanced account options by pressing Advanced button, or later by clicking in Accounts menuitem under Edit menu from the main window." -msgstr "Vous pouvez configurer les options avancées en cliquant sur le bouton Avancé, ou plus tard en cliquant sur Comptes dans le menu Éditer de la fenêtre principale." +#: ../src/config.py:2692 ../src/config.py:2725 +msgid "" +"You can set advanced account options by pressing Advanced button, or later " +"by clicking in Accounts menuitem under Edit menu from the main window." +msgstr "" +"Vous pouvez configurer les options avancées en cliquant sur le bouton " +"Avancé, ou plus tard en cliquant sur Comptes dans le menu Éditer de la " +"fenêtre principale." -#: ../src/config.py:2650 +#: ../src/config.py:2724 msgid "Your new account has been created successfully" msgstr "Votre nouveau compte a été créé avec succès" -#: ../src/config.py:2666 +#: ../src/config.py:2740 msgid "An error occured during account creation" msgstr "Une erreur est survenue lors de la création du compte" -#: ../src/config.py:2723 +#: ../src/config.py:2797 msgid "Account name is in use" msgstr "Le nom du compte est utilisé" -#: ../src/config.py:2724 +#: ../src/config.py:2798 msgid "You already have an account using this name." msgstr "Vous avez déjà un compte avec ce nom." -#: ../src/conversation_textview.py:182 -msgid "Text below this line is what has been said since the last time you paid attention to this group chat" -msgstr "Le texte sous cette règle correspond à ce qui a été dit depuis la dernière fois que vous avez consulté ce salon de discussion" +#: ../src/conversation_textview.py:205 +msgid "" +"Text below this line is what has been said since the last time you paid " +"attention to this group chat" +msgstr "" +"Le texte sous cette règle correspond à ce qui a été dit depuis la dernière " +"fois que vous avez consulté ce salon de discussion" -#: ../src/conversation_textview.py:239 +#: ../src/conversation_textview.py:263 #, python-format msgid "Actions for \"%s\"" msgstr "Actions pour \"%s\"" -#: ../src/conversation_textview.py:251 +#: ../src/conversation_textview.py:275 msgid "Read _Wikipedia Article" msgstr "Lire l'Article _Wikipédia" -#: ../src/conversation_textview.py:255 +#: ../src/conversation_textview.py:280 msgid "Look it up in _Dictionary" msgstr "Chercher dans le _Dictionnaire" #. we must have %s in the url if not WIKTIONARY -#: ../src/conversation_textview.py:270 +#: ../src/conversation_textview.py:296 #, python-format msgid "Dictionary URL is missing an \"%s\" and it is not WIKTIONARY" -msgstr "Il manque un \"%s\" dans l'URL du dictionnaire et ce n'est pas WIKTIONARY" +msgstr "" +"Il manque un \"%s\" dans l'URL du dictionnaire et ce n'est pas WIKTIONARY" #. we must have %s in the url -#: ../src/conversation_textview.py:281 +#: ../src/conversation_textview.py:308 #, python-format msgid "Web Search URL is missing an \"%s\"" msgstr "Il manque un \"%s\" dans l'URL de recherche sur Internet" -#: ../src/conversation_textview.py:284 +#: ../src/conversation_textview.py:311 msgid "Web _Search for it" msgstr "_Rechercher sur Internet" -#: ../src/conversation_textview.py:574 +#: ../src/conversation_textview.py:607 msgid "Yesterday" msgstr "Hier" #. the number is >= 2 #. %i is day in year (1-365), %d (1-31) we want %i -#: ../src/conversation_textview.py:578 +#: ../src/conversation_textview.py:611 #, python-format msgid "%i days ago" msgstr "Il y a %i jours" #. if we have subject, show it too! -#: ../src/conversation_textview.py:634 +#: ../src/conversation_textview.py:686 #, python-format msgid "Subject: %s\n" msgstr "Sujet : %s\n" # Traduction moins mauvaise mais pas terrible: binding=lier, attacher #. only say that to non Windows users -#: ../src/dbus_support.py:34 +#: ../src/dbus_support.py:32 msgid "D-Bus python bindings are missing in this computer" msgstr "La passerelle python - D-Bus n'est pas installée sur cet ordinateur" -#: ../src/dbus_support.py:35 +#: ../src/dbus_support.py:33 msgid "D-Bus capabilities of Gajim cannot be used" msgstr "Les possibilités D-Bus de Gajim ne peuvent pas être utilisées" -#: ../src/dialogs.py:64 +#: ../src/dialogs.py:55 #, python-format msgid "Contact's name: %s" msgstr "Nom du contact : %s" -#: ../src/dialogs.py:66 +#: ../src/dialogs.py:57 #, python-format msgid "JID: %s" msgstr "JID : %s" -#: ../src/dialogs.py:169 +#. Group name +#. In group boolean +#: ../src/dialogs.py:173 msgid "Group" msgstr "Groupe" -#: ../src/dialogs.py:176 +#: ../src/dialogs.py:180 msgid "In the group" msgstr "Dans le groupe" -#: ../src/dialogs.py:226 +#: ../src/dialogs.py:230 msgid "KeyID" msgstr "KeyID" -#: ../src/dialogs.py:229 +#: ../src/dialogs.py:233 msgid "Contact name" msgstr "Nom du contact" -#: ../src/dialogs.py:263 +#: ../src/dialogs.py:266 #, python-format msgid "%s Status Message" msgstr "Message d'état %s" -#: ../src/dialogs.py:265 +#: ../src/dialogs.py:268 msgid "Status Message" msgstr "Message d'état" -#: ../src/dialogs.py:340 +#: ../src/dialogs.py:343 msgid "Save as Preset Status Message" msgstr "Enregistrer comme messages d'état prédéfini" -#: ../src/dialogs.py:341 +#: ../src/dialogs.py:344 msgid "Please type a name for this status message" msgstr "Tapez un nom pour ce message d'état" -#: ../src/dialogs.py:369 +#: ../src/dialogs.py:391 #, python-format msgid "Please fill in the data of the contact you want to add in account %s" msgstr "Remplissez les informations sur le contact à ajouter au compte %s" -#: ../src/dialogs.py:371 +#: ../src/dialogs.py:393 msgid "Please fill in the data of the contact you want to add" msgstr "Remplissez les informations sur le contact à ajouter" -#. the user can be in mutiple groups, see in all of them -#: ../src/dialogs.py:380 -#: ../src/disco.py:118 -#: ../src/disco.py:119 -#: ../src/disco.py:1258 -#: ../src/roster_window.py:214 -#: ../src/roster_window.py:275 -#: ../src/roster_window.py:310 -#: ../src/roster_window.py:330 -#: ../src/roster_window.py:354 -#: ../src/roster_window.py:2940 -#: ../src/roster_window.py:2942 -#: ../src/systray.py:291 -#: ../src/common/helpers.py:42 +#: ../src/dialogs.py:403 ../src/disco.py:109 ../src/disco.py:110 +#: ../src/disco.py:1249 ../src/roster_window.py:207 +#: ../src/roster_window.py:273 ../src/roster_window.py:309 +#: ../src/roster_window.py:329 ../src/roster_window.py:353 +#: ../src/roster_window.py:2973 ../src/roster_window.py:2975 +#: ../src/common/helpers.py:39 msgid "Transports" msgstr "Passerelles" -#: ../src/dialogs.py:452 -#: ../src/dialogs.py:458 +#: ../src/dialogs.py:493 ../src/dialogs.py:499 msgid "Invalid User ID" msgstr "Identifiant utilisateur non valide" -#: ../src/dialogs.py:459 +#: ../src/dialogs.py:500 msgid "The user ID must not contain a resource." msgstr "L'identifiant utilisateur ne doit pas contenir de ressource." -#: ../src/dialogs.py:466 +#: ../src/dialogs.py:513 msgid "Contact already in roster" msgstr "Contact déjà dans la liste" -#: ../src/dialogs.py:467 +#: ../src/dialogs.py:514 msgid "This contact is already listed in your roster." msgstr "Le contact est déjà dans votre liste." -#: ../src/dialogs.py:528 +#: ../src/dialogs.py:576 msgid "A GTK+ jabber client" msgstr "Un client Jabber en GTK+" -#: ../src/dialogs.py:539 +#: ../src/dialogs.py:577 +msgid "GTK+ Version:" +msgstr "" + +#: ../src/dialogs.py:578 +msgid "PyGTK Version:" +msgstr "" + +#: ../src/dialogs.py:586 +#, fuzzy +msgid "Current Developers:" +msgstr "Anciens développeurs :" + +#: ../src/dialogs.py:588 msgid "Past Developers:" msgstr "Anciens développeurs :" -#: ../src/dialogs.py:543 +#: ../src/dialogs.py:592 msgid "THANKS:" msgstr "MERCI :" -#. remove one english setence +#. remove one english sentence #. and add it manually as translatable -#: ../src/dialogs.py:550 +#: ../src/dialogs.py:598 msgid "Last but not least, we would like to thank all the package maintainers." msgstr "Pour finir, nous voulons remercier tous les mainteneurs de paquet." #. here you write your name in the form Name FamilyName -#: ../src/dialogs.py:564 +#: ../src/dialogs.py:612 msgid "translator-credits" msgstr "" -"Traduction française proposée par\n" -"Yann Le Boulanger " +"Yann Le Boulanger \n" +"Jonathan Ernst " -#: ../src/dialogs.py:826 +#: ../src/dialogs.py:738 +#, fuzzy, python-format +msgid "Unable to bind to port %s." +msgstr "Impossible de rejoindre le salon" + +#: ../src/dialogs.py:739 +msgid "" +"Maybe you have another running instance of Gajim. File Transfer will be " +"canceled." +msgstr "" + +#: ../src/dialogs.py:881 #, python-format msgid "Subscription request for account %s from %s" msgstr "Requête d'inscription pour le compte %s de la part de %s" -#: ../src/dialogs.py:829 +#: ../src/dialogs.py:884 #, python-format msgid "Subscription request from %s" msgstr "Requête d'inscription de la part de %s" -#: ../src/dialogs.py:872 +#: ../src/dialogs.py:926 msgid "You can not join a group chat unless you are connected." -msgstr "Vous ne pouvez joindre un salon de discussion tant que vous n'êtes pas connecté." +msgstr "" +"Vous ne pouvez joindre un salon de discussion tant que vous n'êtes pas " +"connecté." -#: ../src/dialogs.py:885 +#: ../src/dialogs.py:939 #, python-format msgid "Join Group Chat with account %s" msgstr "Rejoindre un salon de discussion en tant que %s" -#: ../src/dialogs.py:887 -#: ../src/gtkgui.glade.h:177 -msgid "Join Group Chat" -msgstr "Rejoindre un salon de discussion" - -#: ../src/dialogs.py:976 +#: ../src/dialogs.py:1030 msgid "Invalid room or server name" msgstr "nom de salon ou de serveur non-valide" -#: ../src/dialogs.py:977 +#: ../src/dialogs.py:1031 msgid "The room name or server name has not allowed characters." msgstr "Le nom du salon ou du serveur contient des caractères interdits." -#: ../src/dialogs.py:996 +#: ../src/dialogs.py:1050 #, python-format msgid "Start Chat with account %s" msgstr "Commencer une discussion avec le compte %s" -#: ../src/dialogs.py:998 +#: ../src/dialogs.py:1052 msgid "Start Chat" msgstr "Commencer une discussion" -#: ../src/dialogs.py:999 +#: ../src/dialogs.py:1053 +#, fuzzy msgid "" -"Fill in the contact ID of the contact you would like\n" +"Fill in the jid, or nick of the contact you would like\n" "to send a chat message to:" msgstr "" "Entrez l'identifiant du contact à qui vous souhaitez\n" "envoyer un message" #. if offline or connecting -#: ../src/dialogs.py:1007 -#: ../src/dialogs.py:1330 -#: ../src/dialogs.py:1450 +#: ../src/dialogs.py:1078 ../src/dialogs.py:1427 ../src/dialogs.py:1551 msgid "Connection not available" msgstr "Connexion non disponible" -#: ../src/dialogs.py:1008 -#: ../src/dialogs.py:1331 -#: ../src/dialogs.py:1451 +#: ../src/dialogs.py:1079 ../src/dialogs.py:1428 ../src/dialogs.py:1552 #, python-format msgid "Please make sure you are connected with \"%s\"." msgstr "Vérifiez que vous êtes connecté avec \"%s\"." -#: ../src/dialogs.py:1018 +#: ../src/dialogs.py:1088 ../src/dialogs.py:1091 +#, fuzzy +msgid "Invalid JID" +msgstr "Identifiant Jabber invalide" + +#: ../src/dialogs.py:1091 +#, python-format +msgid "Unable to parse \"%s\"." +msgstr "" + +#: ../src/dialogs.py:1100 msgid "Without a connection, you can not change your password." msgstr "Vous devez être connecté pour changer votre mot de passe." -#: ../src/dialogs.py:1037 +#: ../src/dialogs.py:1119 msgid "You must enter a password." msgstr "Vous devez entrer un mot de passe." #. img to display #. default value -#: ../src/dialogs.py:1083 -#: ../src/gajim.py:443 -#: ../src/notify.py:129 +#: ../src/dialogs.py:1165 ../src/notify.py:126 ../src/notify.py:268 msgid "Contact Signed In" msgstr "Contact connecté" -#: ../src/dialogs.py:1085 -#: ../src/gajim.py:474 -#: ../src/notify.py:131 +#: ../src/dialogs.py:1167 ../src/notify.py:134 ../src/notify.py:270 msgid "Contact Signed Out" msgstr "Contact déconnecté" #. chat message -#: ../src/dialogs.py:1087 -#: ../src/gajim.py:609 -#: ../src/notify.py:133 +#: ../src/dialogs.py:1169 ../src/notify.py:154 ../src/notify.py:272 msgid "New Message" msgstr "Nouveau message" #. single message -#: ../src/dialogs.py:1087 -#: ../src/gajim.py:603 -#: ../src/notify.py:133 +#: ../src/dialogs.py:1169 ../src/notify.py:138 ../src/notify.py:272 msgid "New Single Message" msgstr "Nouveau message simple" -#: ../src/dialogs.py:1088 -#: ../src/gajim.py:586 -#: ../src/notify.py:134 +#. private message +#: ../src/dialogs.py:1170 ../src/notify.py:145 ../src/notify.py:273 msgid "New Private Message" msgstr "Nouveau message privé" -#: ../src/dialogs.py:1088 -#: ../src/gajim.py:1049 -#: ../src/notify.py:142 +#: ../src/dialogs.py:1170 ../src/gajim.py:1044 ../src/notify.py:281 msgid "New E-mail" msgstr "nouveau courrier électronique" -#: ../src/dialogs.py:1090 -#: ../src/gajim.py:1187 -#: ../src/notify.py:136 +#: ../src/dialogs.py:1172 ../src/gajim.py:1187 ../src/notify.py:275 msgid "File Transfer Request" msgstr "Requête de transfert de fichier" -#: ../src/dialogs.py:1092 -#: ../src/gajim.py:1035 -#: ../src/gajim.py:1164 -#: ../src/notify.py:138 +#: ../src/dialogs.py:1174 ../src/gajim.py:1022 ../src/gajim.py:1164 +#: ../src/notify.py:277 msgid "File Transfer Error" msgstr "Erreur de Transfert de Fichier" -#: ../src/dialogs.py:1094 -#: ../src/gajim.py:1222 -#: ../src/gajim.py:1244 -#: ../src/gajim.py:1261 -#: ../src/notify.py:140 +#: ../src/dialogs.py:1176 ../src/gajim.py:1222 ../src/gajim.py:1244 +#: ../src/gajim.py:1261 ../src/notify.py:279 msgid "File Transfer Completed" msgstr "Transfert de Fichier Terminé" -#: ../src/dialogs.py:1095 -#: ../src/gajim.py:1225 -#: ../src/notify.py:140 +#: ../src/dialogs.py:1177 ../src/gajim.py:1225 ../src/notify.py:279 msgid "File Transfer Stopped" msgstr "Transfert de Fichier Arrêté" -#: ../src/dialogs.py:1097 -#: ../src/gajim.py:953 -#: ../src/notify.py:144 +#: ../src/dialogs.py:1179 ../src/gajim.py:920 ../src/notify.py:283 msgid "Groupchat Invitation" msgstr "Invitation à un salon" +#: ../src/dialogs.py:1181 ../src/notify.py:118 ../src/notify.py:285 +#, fuzzy +msgid "Contact Changed Status" +msgstr "Contact déconnecté" + #. FIXME: for Received with should become 'in' -#: ../src/dialogs.py:1262 +#: ../src/dialogs.py:1359 #, python-format msgid "Single Message with account %s" msgstr "Message simple en tant que %s" -#: ../src/dialogs.py:1264 +#: ../src/dialogs.py:1361 msgid "Single Message" msgstr "Message simple" #. prepare UI for Sending -#: ../src/dialogs.py:1267 +#: ../src/dialogs.py:1364 #, python-format msgid "Send %s" msgstr "Envoyer %s" #. prepare UI for Receiving -#: ../src/dialogs.py:1290 +#: ../src/dialogs.py:1387 #, python-format msgid "Received %s" msgstr "%s Reçu" #. we create a new blank window to send and we preset RE: and to jid -#: ../src/dialogs.py:1355 +#: ../src/dialogs.py:1454 #, python-format msgid "RE: %s" msgstr "RE: %s" -#: ../src/dialogs.py:1356 +#: ../src/dialogs.py:1455 #, python-format msgid "%s wrote:\n" msgstr "%s a écrit :\n" -#: ../src/dialogs.py:1400 +#: ../src/dialogs.py:1499 #, python-format msgid "XML Console for %s" msgstr "Console XML pour %s" -#: ../src/dialogs.py:1402 +#: ../src/dialogs.py:1501 msgid "XML Console" msgstr "Console XML" +#: ../src/dialogs.py:1620 +#, python-format +msgid "Privacy List %s" +msgstr "" + +#: ../src/dialogs.py:1624 +#, python-format +msgid "Privacy List for %s" +msgstr "" + +#: ../src/dialogs.py:1716 +#, fuzzy +msgid "Edit a rule" +msgstr "Format d'une ligne de discussion" + +#: ../src/dialogs.py:1801 +#, fuzzy +msgid "Add a rule" +msgstr "Format d'une ligne de discussion" + +#: ../src/dialogs.py:1897 +#, python-format +msgid "Privacy Lists for %s" +msgstr "" + +#: ../src/dialogs.py:1899 +#, fuzzy +msgid "Privacy Lists" +msgstr "Conversations privées" + #. FIXME: use nickname instead of contact_jid -#: ../src/dialogs.py:1488 +#: ../src/dialogs.py:1988 #, python-format msgid "%(contact_jid)s has invited you to %(room_jid)s room" msgstr "%(contact_jid)s vous a invité dans le salon %(room_jid)s" #. only if not None and not '' -#: ../src/dialogs.py:1494 +#: ../src/dialogs.py:1994 #, python-format msgid "Comment: %s" -msgstr "Commentaire : %s" +msgstr "Commentaire : %s" -#: ../src/dialogs.py:1554 +#: ../src/dialogs.py:2054 msgid "Choose Sound" msgstr "Choisissez un son" -#: ../src/dialogs.py:1564 -#: ../src/dialogs.py:1607 +#: ../src/dialogs.py:2064 ../src/dialogs.py:2107 msgid "All files" msgstr "Tous les fichiers" -#: ../src/dialogs.py:1569 +#: ../src/dialogs.py:2069 msgid "Wav Sounds" msgstr "Sons wav" -#: ../src/dialogs.py:1597 +#: ../src/dialogs.py:2097 msgid "Choose Image" msgstr "Choisissez une Image" -#: ../src/dialogs.py:1612 +#: ../src/dialogs.py:2112 msgid "Images" msgstr "Images" -#: ../src/dialogs.py:1658 +#: ../src/dialogs.py:2157 #, python-format msgid "When %s becomes:" -msgstr "Quand %s devient :" +msgstr "Quand %s devient :" -#: ../src/dialogs.py:1660 +#: ../src/dialogs.py:2159 #, python-format msgid "Adding Special Notification for %s" msgstr "Ajout de notifications spéciales pour %s" -#: ../src/disco.py:117 +#: ../src/dialogs.py:2232 +#, fuzzy +msgid "Condition" +msgstr "Connexion" + +#: ../src/disco.py:108 msgid "Others" msgstr "Autres" #. conference is a category for listing mostly groupchats in service discovery -#: ../src/disco.py:121 +#: ../src/disco.py:112 msgid "Conference" msgstr "Conférences" -#: ../src/disco.py:420 +#: ../src/disco.py:411 msgid "Without a connection, you can not browse available services" msgstr "Vous devez être connecté pour parcourir les services disponibles" -#: ../src/disco.py:499 +#: ../src/disco.py:490 #, python-format msgid "Service Discovery using account %s" msgstr "Gestion des Services du compte %s" -#: ../src/disco.py:500 +#: ../src/disco.py:491 msgid "Service Discovery" msgstr "Gestion des Services" -#: ../src/disco.py:637 +#: ../src/disco.py:628 msgid "The service could not be found" msgstr "Le service n'a pu être trouvé" -#: ../src/disco.py:638 -msgid "There is no service at the address you entered, or it is not responding. Check the address and try again." -msgstr "Il n'y a aucun service à l'adresse indiquée, ou bien il ne répond pas. Veuillez vérifier l'adresse et réessayer." +#: ../src/disco.py:629 +msgid "" +"There is no service at the address you entered, or it is not responding. " +"Check the address and try again." +msgstr "" +"Il n'y a aucun service à l'adresse indiquée, ou bien il ne répond pas. " +"Veuillez vérifier l'adresse et réessayer." -#: ../src/disco.py:642 -#: ../src/disco.py:924 +#: ../src/disco.py:633 ../src/disco.py:915 msgid "The service is not browsable" msgstr "Le service ne peut pas être parcouru" -#: ../src/disco.py:643 +#: ../src/disco.py:634 msgid "This type of service does not contain any items to browse." msgstr "Ce type de service ne contient pas d'élément à parcourir." -#: ../src/disco.py:723 +#: ../src/disco.py:714 #, python-format msgid "Browsing %s using account %s" msgstr "Parcourt %s en utilisant le compte %s" -#: ../src/disco.py:762 +#: ../src/disco.py:753 msgid "_Browse" msgstr "_Parcourir" -#: ../src/disco.py:925 +#: ../src/disco.py:916 msgid "This service does not contain any items to browse." msgstr "Ce service ne contient aucun élément à parcourir." -#: ../src/disco.py:1146 -#: ../src/disco.py:1263 +#: ../src/disco.py:1137 ../src/disco.py:1254 msgid "Re_gister" msgstr "_Souscrire" -#: ../src/disco.py:1154 -#: ../src/disco.py:1516 -#: ../src/gtkgui.glade.h:350 -msgid "_Join" -msgstr "Re_joindre" - -#: ../src/disco.py:1261 -#: ../src/gtkgui.glade.h:334 -#: ../src/roster_window.py:1462 -msgid "_Edit" -msgstr "_Éditer" - -#: ../src/disco.py:1300 +#: ../src/disco.py:1291 #, python-format msgid "Scanning %d / %d.." msgstr "Scanne %d / %d.." #. Users column -#: ../src/disco.py:1482 +#: ../src/disco.py:1473 msgid "Users" msgstr "Utilisateurs" #. Description column -#: ../src/disco.py:1489 +#: ../src/disco.py:1480 msgid "Description" msgstr "Description" -#: ../src/filetransfers_window.py:81 +#: ../src/filetransfers_window.py:72 msgid "File" msgstr "Fichier" -#: ../src/filetransfers_window.py:96 +#: ../src/filetransfers_window.py:87 msgid "Time" msgstr "Moment" -#: ../src/filetransfers_window.py:108 +#: ../src/filetransfers_window.py:99 msgid "Progress" msgstr "Progression" -#: ../src/filetransfers_window.py:176 -#: ../src/filetransfers_window.py:238 +#: ../src/filetransfers_window.py:163 ../src/filetransfers_window.py:223 #, python-format msgid "Filename: %s" -msgstr "Nom du Fichier : %s" +msgstr "Nom du Fichier : %s" -#: ../src/filetransfers_window.py:178 -#: ../src/filetransfers_window.py:308 +#: ../src/filetransfers_window.py:164 ../src/filetransfers_window.py:291 #, python-format msgid "Size: %s" -msgstr "Taille : %s" +msgstr "Taille : %s" #. You is a reply of who sent a file #. You is a reply of who received a file -#: ../src/filetransfers_window.py:187 -#: ../src/filetransfers_window.py:197 -#: ../src/history_manager.py:452 +#: ../src/filetransfers_window.py:173 ../src/filetransfers_window.py:183 +#: ../src/history_manager.py:454 msgid "You" msgstr "Vous" -#: ../src/filetransfers_window.py:188 -#: ../src/filetransfers_window.py:240 +#: ../src/filetransfers_window.py:174 ../src/filetransfers_window.py:224 #, python-format msgid "Sender: %s" -msgstr "Expéditeur : %s" +msgstr "Expéditeur : %s" -#: ../src/filetransfers_window.py:189 -#: ../src/filetransfers_window.py:555 -#: ../src/tooltips.py:617 +#: ../src/filetransfers_window.py:175 ../src/filetransfers_window.py:556 +#: ../src/tooltips.py:639 msgid "Recipient: " -msgstr "Destinataire : " +msgstr "Destinataire : " -#: ../src/filetransfers_window.py:200 +#: ../src/filetransfers_window.py:186 #, python-format msgid "Saved in: %s" -msgstr "sauvé dans : %s" +msgstr "Enregistré dans : %s" -#: ../src/filetransfers_window.py:203 +#: ../src/filetransfers_window.py:188 msgid "File transfer completed" msgstr "Transfert de fichier terminé" -#: ../src/filetransfers_window.py:205 -#: ../src/gtkgui.glade.h:366 -msgid "_Open Containing Folder" -msgstr "_Ouvrir le répertoire de destination" - -#: ../src/filetransfers_window.py:219 -#: ../src/filetransfers_window.py:227 +#: ../src/filetransfers_window.py:204 ../src/filetransfers_window.py:212 msgid "File transfer canceled" msgstr "Transfert de fichier annulé" -#: ../src/filetransfers_window.py:219 -#: ../src/filetransfers_window.py:228 +#: ../src/filetransfers_window.py:204 ../src/filetransfers_window.py:213 msgid "Connection with peer cannot be established." msgstr "La connexion avec le contact ne peut être établie." -#: ../src/filetransfers_window.py:242 +#: ../src/filetransfers_window.py:225 msgid "File transfer stopped by the contact of the other side" msgstr "Transfert de fichier arrêté par votre contact" -#: ../src/filetransfers_window.py:259 +#: ../src/filetransfers_window.py:242 msgid "Choose File to Send..." msgstr "Choisissez un fichier à envoyer..." -#. Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector) -#: ../src/filetransfers_window.py:266 -#: ../src/gtkgui.glade.h:390 -msgid "_Send" -msgstr "En_voyer" - -#: ../src/filetransfers_window.py:273 +#: ../src/filetransfers_window.py:256 msgid "Gajim cannot access this file" msgstr "Gajim ne peut accéder à ce fichier" -#: ../src/filetransfers_window.py:274 +#: ../src/filetransfers_window.py:257 msgid "This file is being used by another process." msgstr "Ce fichier est utilisé par un autre processus." -#: ../src/filetransfers_window.py:306 +#: ../src/filetransfers_window.py:289 #, python-format msgid "File: %s" -msgstr "Fichier : %s" +msgstr "Fichier : %s" + +#: ../src/filetransfers_window.py:294 +#, python-format +msgid "Type: %s" +msgstr "Type : %s" + +#: ../src/filetransfers_window.py:296 +#, python-format +msgid "Description: %s" +msgstr "Description : %s" + +#: ../src/filetransfers_window.py:297 +#, python-format +msgid "%s wants to send you a file:" +msgstr "%s souhaite vous envoyer un fichier :" #: ../src/filetransfers_window.py:311 #, python-format -msgid "Type: %s" -msgstr "Type : %s" +msgid "Cannot overwrite existing file \"%s\"" +msgstr "" -#: ../src/filetransfers_window.py:313 -#, python-format -msgid "Description: %s" -msgstr "Description : %s" +#: ../src/filetransfers_window.py:312 +msgid "" +"A file with this name already exists and you do not have permission to " +"overwrite it." +msgstr "" -#: ../src/filetransfers_window.py:314 -#, python-format -msgid "%s wants to send you a file:" -msgstr "%s souhaite vous envoyer un fichier :" - -#: ../src/filetransfers_window.py:329 +#: ../src/filetransfers_window.py:319 ../src/gtkgui_helpers.py:685 msgid "This file already exists" msgstr "Ce fichier existe déjà" -#: ../src/filetransfers_window.py:329 +#: ../src/filetransfers_window.py:319 ../src/gtkgui_helpers.py:685 msgid "What do you want to do?" msgstr "Que voulez vous faire ?" -#: ../src/filetransfers_window.py:344 +#: ../src/filetransfers_window.py:331 +#, python-format +msgid "Directory \"%s\" is not writable" +msgstr "" + +#: ../src/filetransfers_window.py:331 +msgid "You do not have permission to create files in this directory." +msgstr "" + +#: ../src/filetransfers_window.py:341 msgid "Save File as..." msgstr "Enregistrer le Fichier sous..." #. Print remaining time in format 00:00:00 #. You can change the places of (hours), (minutes), (seconds) - #. they are not translatable. -#: ../src/filetransfers_window.py:419 +#: ../src/filetransfers_window.py:420 #, python-format msgid "%(hours)02.d:%(minutes)02.d:%(seconds)02.d" msgstr "%(hours)02.d:%(minutes)02.d:%(seconds)02.d" @@ -1152,246 +3233,290 @@ msgstr "%(hours)02.d:%(minutes)02.d:%(seconds)02.d" #. This should make the string Kb/s, #. where 'Kb' part is taken from %s. #. Only the 's' after / (which means second) should be translated. -#: ../src/filetransfers_window.py:491 +#: ../src/filetransfers_window.py:492 #, python-format msgid "(%(filesize_unit)s/s)" msgstr "(%(filesize_unit)s/s)" -#: ../src/filetransfers_window.py:527 -#: ../src/filetransfers_window.py:530 +#: ../src/filetransfers_window.py:528 ../src/filetransfers_window.py:531 msgid "Invalid File" msgstr "Fichier non valide" -#: ../src/filetransfers_window.py:527 +#: ../src/filetransfers_window.py:528 msgid "File: " -msgstr "Fichier : " +msgstr "Fichier : " -#: ../src/filetransfers_window.py:531 +#: ../src/filetransfers_window.py:532 msgid "It is not possible to send empty files" msgstr "Il n'est pas possible d'envoyer un fichier vide" -#: ../src/filetransfers_window.py:551 -#: ../src/tooltips.py:498 -#: ../src/tooltips.py:607 +#: ../src/filetransfers_window.py:552 ../src/tooltips.py:511 +#: ../src/tooltips.py:629 msgid "Name: " -msgstr "Nom : " +msgstr "Nom : " -#: ../src/filetransfers_window.py:553 -#: ../src/tooltips.py:611 +#: ../src/filetransfers_window.py:554 ../src/tooltips.py:633 msgid "Sender: " -msgstr "Expéditeur : " +msgstr "Expéditeur : " #: ../src/filetransfers_window.py:742 msgid "Pause" msgstr "Pause" -#: ../src/filetransfers_window.py:753 -#: ../src/gtkgui.glade.h:328 -msgid "_Continue" -msgstr "_Continuer" - -#: ../src/gajim-remote.py:84 +#: ../src/gajim-remote.py:82 msgid "shows a help on specific command" msgstr "montrer l'aide d'une commande" #. User gets help for the command, specified by this parameter -#: ../src/gajim-remote.py:87 +#: ../src/gajim-remote.py:85 msgid "command" msgstr "commande" -#: ../src/gajim-remote.py:88 +#: ../src/gajim-remote.py:86 msgid "show help on command" msgstr "montrer l'aide sur la commande" -#: ../src/gajim-remote.py:92 +#: ../src/gajim-remote.py:90 msgid "Shows or hides the roster window" msgstr "Montre ou cache la fenêtre principale" -#: ../src/gajim-remote.py:96 +#: ../src/gajim-remote.py:94 msgid "Popups a window with the next unread message" msgstr "Afficher une fenêtre avec le prochain message non lu" -#: ../src/gajim-remote.py:100 -msgid "Prints a list of all contacts in the roster. Each contact appear on a separate line" -msgstr "Affiche une liste de tous les contacts de la liste. Chaque contact apparaît sur une ligne séparée" +#: ../src/gajim-remote.py:98 +msgid "" +"Prints a list of all contacts in the roster. Each contact appear on a " +"separate line" +msgstr "" +"Affiche une liste de tous les contacts de la liste. Chaque contact apparaît " +"sur une ligne séparée" -#: ../src/gajim-remote.py:102 -#: ../src/gajim-remote.py:115 -#: ../src/gajim-remote.py:125 -#: ../src/gajim-remote.py:138 -#: ../src/gajim-remote.py:159 -#: ../src/gajim-remote.py:189 -#: ../src/gajim-remote.py:197 -#: ../src/gajim-remote.py:204 -#: ../src/gajim-remote.py:211 +#: ../src/gajim-remote.py:100 ../src/gajim-remote.py:114 +#: ../src/gajim-remote.py:124 ../src/gajim-remote.py:137 +#: ../src/gajim-remote.py:151 ../src/gajim-remote.py:172 +#: ../src/gajim-remote.py:202 ../src/gajim-remote.py:211 +#: ../src/gajim-remote.py:218 ../src/gajim-remote.py:225 +#: ../src/gajim-remote.py:236 msgid "account" msgstr "compte" -#: ../src/gajim-remote.py:102 +#: ../src/gajim-remote.py:100 msgid "show only contacts of the given account" msgstr "montrer seulement les contacts du compte spécifié" -#: ../src/gajim-remote.py:107 +#: ../src/gajim-remote.py:105 msgid "Prints a list of registered accounts" msgstr "Affiche la liste des comptes enregistrés" -#: ../src/gajim-remote.py:111 +#: ../src/gajim-remote.py:109 msgid "Changes the status of account or accounts" msgstr "Change l'état du ou des compte(s)" -#: ../src/gajim-remote.py:113 +#. offline, online, chat, away, xa, dnd, invisible should not be translated +#: ../src/gajim-remote.py:112 msgid "status" msgstr "état" -#: ../src/gajim-remote.py:113 +#: ../src/gajim-remote.py:112 msgid "one of: offline, online, chat, away, xa, dnd, invisible " -msgstr "un parmi : offline, online, chat, away, xa, dnd, invisible " +msgstr "un parmi : offline, online, chat, away, xa, dnd, invisible " -#: ../src/gajim-remote.py:114 -#: ../src/gajim-remote.py:135 +#: ../src/gajim-remote.py:113 ../src/gajim-remote.py:134 +#: ../src/gajim-remote.py:148 msgid "message" msgstr "message" -#: ../src/gajim-remote.py:114 +#: ../src/gajim-remote.py:113 msgid "status message" msgstr "Message d'état" -#: ../src/gajim-remote.py:115 -msgid "change status of account \"account\". If not specified, try to change status of all accounts that have \"sync with global status\" option set" -msgstr "Change l'état du compte \"compte\". Si aucun n'est spécifié, essaye de changer l'état de tous les compte qui ont l'option \"synchroniser avec l'état global\" activée" +#: ../src/gajim-remote.py:114 +msgid "" +"change status of account \"account\". If not specified, try to change status " +"of all accounts that have \"sync with global status\" option set" +msgstr "" +"Change l'état du compte \"compte\". Si aucun n'est spécifié, essaye de " +"changer l'état de tous les compte qui ont l'option \"synchroniser avec " +"l'état global\" activée" -#: ../src/gajim-remote.py:121 +#: ../src/gajim-remote.py:120 msgid "Shows the chat dialog so that you can send messages to a contact" -msgstr "Montre la fenêtre de discussion pour que vous puissiez envoyer un message à un contact" +msgstr "" +"Montre la fenêtre de discussion pour que vous puissiez envoyer un message à " +"un contact" -#: ../src/gajim-remote.py:123 +#: ../src/gajim-remote.py:122 msgid "JID of the contact that you want to chat with" msgstr "JID du contact avec lequel vous voulez discuter" -#: ../src/gajim-remote.py:125 -#: ../src/gajim-remote.py:189 +#: ../src/gajim-remote.py:124 ../src/gajim-remote.py:202 msgid "if specified, contact is taken from the contact list of this account" msgstr "Si spécifié, le contact est pris dans la liste de contact de ce compte" -#: ../src/gajim-remote.py:130 -msgid "Sends new message to a contact in the roster. Both OpenPGP key and account are optional. If you want to set only 'account', without 'OpenPGP key', just set 'OpenPGP key' to ''." -msgstr "Envoyer un nouveau message à un contact dans la liste. La clé OpenPGP et le compte sont facultatifs. Si vous voulez renseigner seulement le paramètre 'compte' sans 'clé pgp', mettez simple la valeur '' pour 'clé pgp'." +#: ../src/gajim-remote.py:129 +#, fuzzy +msgid "" +"Sends new chat message to a contact in the roster. Both OpenPGP key and " +"account are optional. If you want to set only 'account', without 'OpenPGP " +"key', just set 'OpenPGP key' to ''." +msgstr "" +"Envoyer un nouveau message à un contact dans la liste. La clé OpenPGP et le " +"compte sont facultatifs. Si vous voulez renseigner seulement le paramètre " +"'compte' sans 'clé pgp', mettez simple la valeur '' pour 'clé pgp'." -#: ../src/gajim-remote.py:134 +#: ../src/gajim-remote.py:133 ../src/gajim-remote.py:146 msgid "JID of the contact that will receive the message" msgstr "JID du contact qui recevra le message" -#: ../src/gajim-remote.py:135 +#: ../src/gajim-remote.py:134 ../src/gajim-remote.py:148 msgid "message contents" msgstr "contenu du message" -#: ../src/gajim-remote.py:136 +#: ../src/gajim-remote.py:135 ../src/gajim-remote.py:149 msgid "pgp key" msgstr "clé pgp" -#: ../src/gajim-remote.py:136 +#: ../src/gajim-remote.py:135 ../src/gajim-remote.py:149 msgid "if specified, the message will be encrypted using this public key" -msgstr "Si spécifié, le message sera crypté en utilisant cette clé public" +msgstr "Si spécifié, le message sera chiffré en utilisant cette clé public" -#: ../src/gajim-remote.py:138 +#: ../src/gajim-remote.py:137 ../src/gajim-remote.py:151 msgid "if specified, the message will be sent using this account" msgstr "Si spécifié, le message sera envoyé en utilisant ce compte" -#: ../src/gajim-remote.py:143 +#: ../src/gajim-remote.py:142 +#, fuzzy +msgid "" +"Sends new single message to a contact in the roster. Both OpenPGP key and " +"account are optional. If you want to set only 'account', without 'OpenPGP " +"key', just set 'OpenPGP key' to ''." +msgstr "" +"Envoyer un nouveau message à un contact dans la liste. La clé OpenPGP et le " +"compte sont facultatifs. Si vous voulez renseigner seulement le paramètre " +"'compte' sans 'clé pgp', mettez simple la valeur '' pour 'clé pgp'." + +#: ../src/gajim-remote.py:147 +#, fuzzy +msgid "subject" +msgstr "Sujet" + +#: ../src/gajim-remote.py:147 +#, fuzzy +msgid "message subject" +msgstr "Message Envoyé" + +#: ../src/gajim-remote.py:156 msgid "Gets detailed info on a contact" msgstr "Récupère les informations détaillées d'un contact" -#: ../src/gajim-remote.py:145 -#: ../src/gajim-remote.py:158 -#: ../src/gajim-remote.py:188 +#: ../src/gajim-remote.py:158 ../src/gajim-remote.py:171 +#: ../src/gajim-remote.py:201 ../src/gajim-remote.py:210 msgid "JID of the contact" msgstr "JID du contact" -#: ../src/gajim-remote.py:149 +#: ../src/gajim-remote.py:162 msgid "Gets detailed info on a account" msgstr "Récupère les informations détaillées d'un compte" -#: ../src/gajim-remote.py:151 +#: ../src/gajim-remote.py:164 msgid "Name of the account" msgstr "Nom du compte" -#: ../src/gajim-remote.py:155 +#: ../src/gajim-remote.py:168 msgid "Sends file to a contact" msgstr "Envoyer un fichier à un contact" -#: ../src/gajim-remote.py:157 +#: ../src/gajim-remote.py:170 msgid "file" msgstr "fichier" -#: ../src/gajim-remote.py:157 +#: ../src/gajim-remote.py:170 msgid "File path" msgstr "Chemin du fichier" -#: ../src/gajim-remote.py:159 +#: ../src/gajim-remote.py:172 msgid "if specified, file will be sent using this account" msgstr "si spécifié, le message sera envoyé en utilisant ce compte" -#: ../src/gajim-remote.py:164 +#: ../src/gajim-remote.py:177 msgid "Lists all preferences and their values" msgstr "Liste toutes les préférences et leurs valeurs" -#: ../src/gajim-remote.py:168 +#: ../src/gajim-remote.py:181 msgid "Sets value of 'key' to 'value'." msgstr "Définir la valeur de 'clé' à 'valeur'." -#: ../src/gajim-remote.py:170 +#: ../src/gajim-remote.py:183 msgid "key=value" msgstr "clé=valeur" -#: ../src/gajim-remote.py:170 +#: ../src/gajim-remote.py:183 msgid "'key' is the name of the preference, 'value' is the value to set it to" msgstr "'clé' est le nom de la préférence, 'valeur' est la valeur à assigner" -#: ../src/gajim-remote.py:175 +#: ../src/gajim-remote.py:188 msgid "Deletes a preference item" msgstr "Supprime une option de préférence" -#: ../src/gajim-remote.py:177 +#: ../src/gajim-remote.py:190 msgid "key" msgstr "touche" -#: ../src/gajim-remote.py:177 +#: ../src/gajim-remote.py:190 msgid "name of the preference to be deleted" msgstr "nom de la préférence a supprimer" -#: ../src/gajim-remote.py:181 +#: ../src/gajim-remote.py:194 msgid "Writes the current state of Gajim preferences to the .config file" msgstr "Écrit les préférences actuelles de Gajim dans le fichier .config" -#: ../src/gajim-remote.py:186 +#: ../src/gajim-remote.py:199 msgid "Removes contact from roster" msgstr "Enlever le contact de la liste" -#: ../src/gajim-remote.py:195 +#: ../src/gajim-remote.py:208 msgid "Adds contact to roster" msgstr "Ajouter le contact à la liste" -#: ../src/gajim-remote.py:197 -msgid "Adds new contact to this account." +#: ../src/gajim-remote.py:210 +msgid "jid" +msgstr "" + +#: ../src/gajim-remote.py:211 +#, fuzzy +msgid "Adds new contact to this account" msgstr "Ajouter un nouveau contact à ce compte." -#: ../src/gajim-remote.py:202 +#: ../src/gajim-remote.py:216 msgid "Returns current status (the global one unless account is specified)" msgstr "Renvoit l'état actuel (global à moins qu'un compte ne soit spécifié)" -#: ../src/gajim-remote.py:209 -msgid "Returns current status message(the global one unless account is specified)" -msgstr "Renvois le message d'état actuel (global à moins qu'un compte ne soit spécifié)" +#: ../src/gajim-remote.py:223 +msgid "" +"Returns current status message(the global one unless account is specified)" +msgstr "" +"Renvois le message d'état actuel (global à moins qu'un compte ne soit " +"spécifié)" -#: ../src/gajim-remote.py:216 +#: ../src/gajim-remote.py:230 msgid "Returns number of unreaded messages" msgstr "Renvois le nombre de messages non-lus" +#: ../src/gajim-remote.py:234 +msgid "Open 'Start Chat' dialog" +msgstr "" + #: ../src/gajim-remote.py:236 +#, fuzzy +msgid "Starts chat, using this account" +msgstr "Commencer une discussion avec le compte %s" + +#: ../src/gajim-remote.py:256 msgid "Missing argument \"contact_jid\"" msgstr "Argument manquant \"jid_contact\"" -#: ../src/gajim-remote.py:255 +#: ../src/gajim-remote.py:275 #, python-format msgid "" "'%s' is not in your roster.\n" @@ -1400,16 +3525,16 @@ msgstr "" "'%s' n'est pas dans votre liste de contact.\n" "Précisez le compte pour envoyer le message." -#: ../src/gajim-remote.py:258 +#: ../src/gajim-remote.py:278 msgid "You have no active account" msgstr "Vous n'avez aucun compte actif" -#: ../src/gajim-remote.py:301 +#: ../src/gajim-remote.py:321 #, python-format msgid "Unknown D-Bus version: %s" -msgstr "Version de dbus inconnue : %s" +msgstr "Version de dbus inconnue : %s" -#: ../src/gajim-remote.py:328 +#: ../src/gajim-remote.py:348 #, python-format msgid "" "Usage: %s %s %s \n" @@ -1418,25 +3543,25 @@ msgstr "" "Usage: %s %s %s \n" "\t %s" -#: ../src/gajim-remote.py:331 +#: ../src/gajim-remote.py:351 msgid "Arguments:" -msgstr "Arguments :" +msgstr "Arguments :" -#: ../src/gajim-remote.py:335 +#: ../src/gajim-remote.py:355 #, python-format msgid "%s not found" msgstr "%s non trouvé" -#: ../src/gajim-remote.py:339 +#: ../src/gajim-remote.py:359 #, python-format msgid "" "Usage: %s command [arguments]\n" "Command is one of:\n" msgstr "" -"Usage : %s commande [arguments]\n" -"commande est l'une de :\n" +"Utilisation : %s commande [arguments]\n" +"commande est l'une de :\n" -#: ../src/gajim-remote.py:413 +#: ../src/gajim-remote.py:433 #, python-format msgid "" "Argument \"%s\" is not specified. \n" @@ -1471,116 +3596,110 @@ msgstr "La bibliothèque GTK+ ne contient pas le support de glade" #: ../src/gajim.py:63 #, python-format -msgid "Please remove your current GTK+ runtime and install the latest stable version from %s" -msgstr "Supprimez votre version actuelle de la bibliothèque GTK+ et installez la dernière version stable à partir de %s" +msgid "" +"Please remove your current GTK+ runtime and install the latest stable " +"version from %s" +msgstr "" +"Supprimez votre version actuelle de la bibliothèque GTK+ et installez la " +"dernière version stable à partir de %s" #: ../src/gajim.py:65 -msgid "Please make sure that GTK+ and PyGTK have libglade support in your system." -msgstr "Vérifiez que GTK+ et PyGTK contiennent le support de glade dans votre système." +msgid "" +"Please make sure that GTK+ and PyGTK have libglade support in your system." +msgstr "" +"Vérifiez que GTK+ et PyGTK contiennent le support de glade dans votre " +"système." #: ../src/gajim.py:70 msgid "Gajim needs PySQLite2 to run" msgstr "Gajim a besoin de PyGTK 2.6+ pour s'exécuter" -#: ../src/gajim.py:235 +#. set the icon to all newly opened wind +#: ../src/gajim.py:151 +msgid "Gajim is already running" +msgstr "" + +#: ../src/gajim.py:152 +msgid "" +"Another instance of Gajim seems to be running\n" +"Run anyway?" +msgstr "" + +#: ../src/gajim.py:267 #, python-format msgid "HTTP (%s) Authorization for %s (id: %s)" -msgstr "Autorisation HTTP (%s) pour %s (id : %s)" +msgstr "Autorisation HTTP (%s) pour %s (id : %s)" -#: ../src/gajim.py:236 +#: ../src/gajim.py:268 msgid "Do you accept this request?" msgstr "Acceptez vous sa requête ?" -#: ../src/gajim.py:438 -#, python-format -msgid "%(nickname)s Signed In" -msgstr "%(nickname)s s'est connecté" - -#: ../src/gajim.py:469 -#, python-format -msgid "%(nickname)s Signed Out" -msgstr "%(nickname)s s'est déconnecté" - -#: ../src/gajim.py:583 -#, python-format -msgid "New Private Message from room %s" -msgstr "Nouveau Message Privé du Salon %s" - -#: ../src/gajim.py:584 -#, python-format -msgid "%(nickname)s: %(message)s" -msgstr "%(nickname)s : %(message)s" - -#: ../src/gajim.py:606 -#, python-format -msgid "New Single Message from %(nickname)s" -msgstr "Nouveau Message Simple de %(nickname)s" - -#: ../src/gajim.py:612 -#, python-format -msgid "New Message from %(nickname)s" -msgstr "Nouveau Message de %(nickname)s" - -#: ../src/gajim.py:660 +#: ../src/gajim.py:611 #, python-format msgid "error while sending %s ( %s )" msgstr "erreur en envoyant %s ( %s )" -#: ../src/gajim.py:700 +#: ../src/gajim.py:651 msgid "Authorization accepted" msgstr "Autorisation acceptée" -#: ../src/gajim.py:701 +#: ../src/gajim.py:652 #, python-format msgid "The contact \"%s\" has authorized you to see his or her status." msgstr "Le contact \"%s\" vous a autorisé à voir son état." -#: ../src/gajim.py:709 +#: ../src/gajim.py:660 #, python-format msgid "Contact \"%s\" removed subscription from you" msgstr "Le contact \"%s\" a cessé de vous souscrire à sa présence" -#: ../src/gajim.py:710 +#: ../src/gajim.py:661 msgid "You will always see him or her as offline." msgstr "Vous le verrez toujours déconnecté." -#: ../src/gajim.py:736 +#: ../src/gajim.py:704 #, python-format msgid "Contact with \"%s\" cannot be established" msgstr "Le contact avec \"%s\" ne peut être établi" -#: ../src/gajim.py:737 -#: ../src/common/connection.py:349 +#: ../src/gajim.py:705 ../src/common/connection.py:398 msgid "Check your connection or try again later." msgstr "Vérifiez votre connexion ou réessayez plus tard." -#: ../src/gajim.py:874 -#: ../src/roster_window.py:1012 +#: ../src/gajim.py:849 ../src/roster_window.py:1025 #, python-format msgid "%s is now %s (%s)" msgstr "%s est maintenant %s (%s)" -#: ../src/gajim.py:963 +#: ../src/gajim.py:930 msgid "Your passphrase is incorrect" msgstr "Votre mot de passe est incorrect" -#: ../src/gajim.py:964 +#: ../src/gajim.py:931 msgid "You are currently connected without your OpenPGP key." msgstr "Vous êtes actuellement connecté sans clé OpenPGP." #. FIXME: find a better image -#: ../src/gajim.py:1045 +#: ../src/gajim.py:1033 #, python-format msgid "New E-mail on %(gmail_mail_address)s" msgstr "Nouvel E-mail sur %(gmail_mail_address)s" -#: ../src/gajim.py:1047 +#: ../src/gajim.py:1035 #, python-format msgid "You have %d new E-mail message" msgid_plural "You have %d new E-mail messages" msgstr[0] "Vous avez %d nouveau courrier électronique" msgstr[1] "Vous avez %d nouveaux courriers électroniques" +#. each message has a 'From', 'Subject' and 'Snippet' field +#: ../src/gajim.py:1040 +#, python-format +msgid "" +"\n" +"From: %(from_address)s" +msgstr "" + #: ../src/gajim.py:1185 #, python-format msgid "%s wants to send you a file." @@ -1595,7 +3714,8 @@ msgstr "Vous avez bien reçu %(filename)s de la part de %(name)s." #: ../src/gajim.py:1249 #, python-format msgid "File transfer of %(filename)s from %(name)s stopped." -msgstr "Le transfert du fichier %(filename)s de la part de %(name)s est arrêté." +msgstr "" +"Le transfert du fichier %(filename)s de la part de %(name)s est arrêté." #: ../src/gajim.py:1262 #, python-format @@ -1621,2092 +3741,628 @@ msgid "vCard publication failed" msgstr "échec lors de la publication de votre vCard" #: ../src/gajim.py:1304 -msgid "There was an error while publishing your personal information, try again later." -msgstr "Une erreur s'est produite lors de la publication de vos informations personnelles, veuillez réessayer plus tard." +msgid "" +"There was an error while publishing your personal information, try again " +"later." +msgstr "" +"Une erreur s'est produite lors de la publication de vos informations " +"personnelles, veuillez réessayer plus tard." #. it is good to notify the user #. in case he or she cannot see the output of the console -#: ../src/gajim.py:1634 +#: ../src/gajim.py:1683 msgid "Could not save your settings and preferences" -msgstr "Impossible de sauver vos informations de configuration" +msgstr "Impossible d'enregistrer vos informations de configuration" -#: ../src/gajim.py:1848 +#: ../src/gajim.py:1903 msgid "Session Management support not available (missing gnome.ui module)" -msgstr "Support du gestionnaire de sessions indisponible (module gnome.ui manquant)" +msgstr "" +"Support du gestionnaire de sessions indisponible (module gnome.ui manquant)" -#: ../src/gajim.py:1878 +#: ../src/gajim.py:1932 msgid "Migrating Logs..." msgstr "Migration de l'historique..." -#: ../src/gajim.py:1879 +#: ../src/gajim.py:1933 msgid "Please wait while logs are being migrated..." msgstr "Merci de patienter pendant la migration de l'historique..." -#: ../src/gajim_themes_window.py:67 +#: ../src/gajim_themes_window.py:59 msgid "Theme" msgstr "Thème" #. don't confuse translators -#: ../src/gajim_themes_window.py:149 +#: ../src/gajim_themes_window.py:141 msgid "theme name" msgstr "nom du thème" -#: ../src/gajim_themes_window.py:166 +#: ../src/gajim_themes_window.py:158 msgid "You cannot delete your current theme" msgstr "Vous ne pouvez pas supprimer le thème actuellement utilisé" -#: ../src/gajim_themes_window.py:167 +#: ../src/gajim_themes_window.py:159 msgid "Please first choose another for your current theme." -msgstr "Veuillez tout d'abord appliquer un autre thème avant de supprimer celui-ci." +msgstr "" +"Veuillez tout d'abord appliquer un autre thème avant de supprimer celui-ci." -#: ../src/groupchat_control.py:68 +#: ../src/groupchat_control.py:99 msgid "Private Chat" msgstr "Conversation privée" -#: ../src/groupchat_control.py:68 +#: ../src/groupchat_control.py:99 msgid "Private Chats" msgstr "Conversations privées" -#: ../src/groupchat_control.py:84 +#: ../src/groupchat_control.py:115 msgid "Sending private message failed" msgstr "L'envoi du message privé a échoué" #. in second %s code replaces with nickname -#: ../src/groupchat_control.py:86 +#: ../src/groupchat_control.py:117 #, python-format msgid "You are no longer in room \"%s\" or \"%s\" has left." msgstr "Vous n'êtes plus dans le salon \"%s\" ou \"%s\" l'a quitté." -#: ../src/groupchat_control.py:98 +#: ../src/groupchat_control.py:129 msgid "Group Chat" msgstr "Salon de Discussion" -#: ../src/groupchat_control.py:98 +#: ../src/groupchat_control.py:129 msgid "Group Chats" msgstr "Salons de Discussion" -#: ../src/groupchat_control.py:595 +#: ../src/groupchat_control.py:308 +#, fuzzy +msgid "Insert Nickname" +msgstr "Changer de sur_nom" + +#: ../src/groupchat_control.py:702 msgid "This room has no subject" msgstr "Ce salon n'a pas de sujet" #. do not print 'kicked by None' -#: ../src/groupchat_control.py:693 +#: ../src/groupchat_control.py:801 #, python-format msgid "%(nick)s has been kicked: %(reason)s" -msgstr "%(nick)s a été éjecté : %(reason)s" +msgstr "%(nick)s a été éjecté : %(reason)s" -#: ../src/groupchat_control.py:697 +#: ../src/groupchat_control.py:805 #, python-format msgid "%(nick)s has been kicked by %(who)s: %(reason)s" -msgstr "%(nick)s a été éjecté par %(who)s : %(reason)s" +msgstr "%(nick)s a été éjecté par %(who)s : %(reason)s" #. do not print 'banned by None' -#: ../src/groupchat_control.py:704 +#: ../src/groupchat_control.py:812 #, python-format msgid "%(nick)s has been banned: %(reason)s" -msgstr "%(nick)s a été banni : %(reason)s" +msgstr "%(nick)s a été banni : %(reason)s" -#: ../src/groupchat_control.py:708 +#: ../src/groupchat_control.py:816 #, python-format msgid "%(nick)s has been banned by %(who)s: %(reason)s" -msgstr "%(nick)s a été banni par %(who)s : %(reason)s" +msgstr "%(nick)s a été banni par %(who)s : %(reason)s" -#: ../src/groupchat_control.py:716 +#: ../src/groupchat_control.py:824 #, python-format msgid "You are now known as %s" msgstr "Vous êtes désormais connu sous le nom de %s" -#: ../src/groupchat_control.py:718 +#: ../src/groupchat_control.py:826 #, python-format msgid "%s is now known as %s" msgstr "%s est maintenant %s" -#: ../src/groupchat_control.py:757 +#: ../src/groupchat_control.py:897 #, python-format msgid "%s has left" msgstr "%s est parti" +#: ../src/groupchat_control.py:902 +#, python-format +msgid "%s has joined the room" +msgstr "" + #. No status message -#: ../src/groupchat_control.py:759 -#: ../src/roster_window.py:1015 +#: ../src/groupchat_control.py:904 ../src/roster_window.py:1028 #, python-format msgid "%s is now %s" msgstr "%s est maintenant %s" -#: ../src/groupchat_control.py:871 -#: ../src/groupchat_control.py:888 -#: ../src/groupchat_control.py:981 -#: ../src/groupchat_control.py:997 +#: ../src/groupchat_control.py:1022 ../src/groupchat_control.py:1039 +#: ../src/groupchat_control.py:1132 ../src/groupchat_control.py:1148 #, python-format msgid "Nickname not found: %s" -msgstr "Surnom introuvable : %s" +msgstr "Surnom introuvable : %s" -#: ../src/groupchat_control.py:915 +#: ../src/groupchat_control.py:1066 #, python-format msgid "Invited %(contact_jid)s to %(room_jid)s." -msgstr "Contact %(contact_jid)s invité dans le salon de discussion %(room_jid)s." +msgstr "" +"Contact %(contact_jid)s invité dans le salon de discussion %(room_jid)s." #. %s is something the user wrote but it is not a jid so we inform -#: ../src/groupchat_control.py:922 -#: ../src/groupchat_control.py:952 +#: ../src/groupchat_control.py:1073 ../src/groupchat_control.py:1103 #, python-format msgid "%s does not appear to be a valid JID" msgstr "%s semble ne pas être un JID valide" -#: ../src/groupchat_control.py:1019 +#: ../src/groupchat_control.py:1185 #, python-format msgid "No such command: /%s (if you want to send this, prefix it with /say)" msgstr "Cette commande n'existe pas: /%s (précédez la de /say pour l'envoyer)" -#: ../src/groupchat_control.py:1041 +#: ../src/groupchat_control.py:1207 #, python-format msgid "Commands: %s" -msgstr "Commandes : %s" +msgstr "Commandes : %s" -#: ../src/groupchat_control.py:1043 +#: ../src/groupchat_control.py:1209 #, python-format -msgid "Usage: /%s [reason], bans the JID from the room. The nickname of an occupant may be substituted, but not if it contains \"@\". If the JID is currently in the room, he/she/it will also be kicked. Does NOT support spaces in nickname." -msgstr "Usage : /%s [raison], bannit le JID du salon. Le surnom de l'occupant peut être utilisé s'il ne contient pas de \"@\". Si le JID est actuellement dans le salon il sera également éjecté. Ne supporte pas les espaces dans le surnom." +msgid "" +"Usage: /%s [reason], bans the JID from the room. The nickname " +"of an occupant may be substituted, but not if it contains \"@\". If the JID " +"is currently in the room, he/she/it will also be kicked. Does NOT support " +"spaces in nickname." +msgstr "" +"Utilisation : /%s [raison], bannit le JID du salon. Le surnom de " +"l'occupant peut être utilisé s'il ne contient pas de \"@\". Si le JID est " +"actuellement dans le salon il sera également éjecté. Ne supporte pas les " +"espaces dans le surnom." -#: ../src/groupchat_control.py:1049 +#: ../src/groupchat_control.py:1215 #, python-format -msgid "Usage: /%s , opens a private chat window to the specified occupant." -msgstr "Usage : /%s , ouvre une fenêtre de discussion privée avec l'occupant spécifié." +msgid "" +"Usage: /%s , opens a private chat window to the specified occupant." +msgstr "" +"Utilisation : /%s , ouvre une fenêtre de discussion privée avec l'occupant " +"spécifié." -#: ../src/groupchat_control.py:1053 +#: ../src/groupchat_control.py:1219 #, python-format msgid "Usage: /%s, clears the text window." msgstr "Usage : /%s, nettoie la fenêtre." -#: ../src/groupchat_control.py:1055 +#: ../src/groupchat_control.py:1221 #, python-format -msgid "Usage: /%s [reason], closes the current window or tab, displaying reason if specified." -msgstr "Usage : /%s [raison], ferme la fenêtre ou l'onglet courrant en affichant la raison si spécifiée." +msgid "" +"Usage: /%s [reason], closes the current window or tab, displaying reason if " +"specified." +msgstr "" +"Utilisation : /%s [raison], ferme la fenêtre ou l'onglet courrant en affichant la " +"raison si spécifiée." -#: ../src/groupchat_control.py:1058 +#: ../src/groupchat_control.py:1224 #, python-format msgid "Usage: /%s, hide the chat buttons." msgstr "Usage: /%s, cache les boutons de discussion." -#: ../src/groupchat_control.py:1060 +#: ../src/groupchat_control.py:1226 #, python-format -msgid "Usage: /%s [reason], invites JID to the current room, optionally providing a reason." -msgstr "Usage : /%s [raison], invite le JID dans le salon actuel, la raison est optionnelle." +msgid "" +"Usage: /%s [reason], invites JID to the current room, optionally " +"providing a reason." +msgstr "" +"Utilisation : /%s [raison], invite le JID dans le salon actuel, la raison " +"est optionnelle." -#: ../src/groupchat_control.py:1064 +#: ../src/groupchat_control.py:1230 #, python-format -msgid "Usage: /%s @[/nickname], offers to join room@server optionally using specified nickname." -msgstr "Usage : /%s @[/surnom], propose de rejoindre salon@serveur en option on peut spécifier le surnom utilisé." +msgid "" +"Usage: /%s @[/nickname], offers to join room@server optionally " +"using specified nickname." +msgstr "" +"Utilisation : /%s @[/surnom], propose de rejoindre salon@serveur " +"en option on peut spécifier le surnom utilisé." -#: ../src/groupchat_control.py:1068 +#: ../src/groupchat_control.py:1234 #, python-format -msgid "Usage: /%s [reason], removes the occupant specified by nickname from the room and optionally displays a reason. Does NOT support spaces in nickname." -msgstr "Usage : /%s [raison], supprime l'occupant portant le surnom spécifié du salon et affiche en option la raison. Le surnom ne doit pas contenir d'espaces !" +msgid "" +"Usage: /%s [reason], removes the occupant specified by nickname " +"from the room and optionally displays a reason. Does NOT support spaces in " +"nickname." +msgstr "" +"Utilisation : /%s [raison], supprime l'occupant portant le surnom " +"spécifié du salon et affiche en option la raison. Le surnom ne doit pas " +"contenir d'espaces !" -#: ../src/groupchat_control.py:1073 +#: ../src/groupchat_control.py:1239 #, python-format -msgid "Usage: /%s , sends action to the current room. Use third person. (e.g. /%s explodes.)" -msgstr "Usage : /%s , envoie l'action au salon actuel. Utilise la troisième personne. (ex : /%s explose.)" +msgid "" +"Usage: /%s , sends action to the current room. Use third person. (e." +"g. /%s explodes.)" +msgstr "" +"Utilisation : /%s , envoie l'action au salon actuel. Utilise la troisième " +"personne. (ex : /%s explose.)" -#: ../src/groupchat_control.py:1077 +#: ../src/groupchat_control.py:1243 #, python-format -msgid "Usage: /%s [message], opens a private message windowand sends message to the occupant specified by nickname." -msgstr "Usage : /%s [message], ouvre une fenêtre de discussion privée et envoie le message à l'occupant(e) spécifié(e) par le surnom." +msgid "" +"Usage: /%s [message], opens a private message windowand sends " +"message to the occupant specified by nickname." +msgstr "" +"Utilisation : /%s [message], ouvre une fenêtre de discussion privée et " +"envoie le message à l'occupant(e) spécifié(e) par le surnom." -#: ../src/groupchat_control.py:1082 +#: ../src/groupchat_control.py:1248 #, python-format msgid "Usage: /%s , changes your nickname in current room." -msgstr "Usage : /%s , change votre surnom dans ce salon." +msgstr "Utilisation : /%s , change votre surnom dans ce salon." -#: ../src/groupchat_control.py:1086 +#: ../src/groupchat_control.py:1252 +#, fuzzy, python-format +msgid "Usage: /%s , display the names of room occupants." +msgstr "Utilisation : /%s [sujet], affiche ou met à jour le sujet actuel du salon." + +#: ../src/groupchat_control.py:1256 #, python-format msgid "Usage: /%s [topic], displays or updates the current room topic." -msgstr "Usage : /%s [sujet], affiche ou met à jour le sujet actuel du salon." +msgstr "Utilisation : /%s [sujet], affiche ou met à jour le sujet actuel du salon." -#: ../src/groupchat_control.py:1089 +#: ../src/groupchat_control.py:1259 #, python-format -msgid "Usage: /%s , sends a message without looking for other commands." -msgstr "Usage : /%s , envoie un message sans chercher d'autres commandes." +msgid "" +"Usage: /%s , sends a message without looking for other commands." +msgstr "" +"Utilisation : /%s , envoie un message sans chercher d'autres commandes." -#: ../src/groupchat_control.py:1092 +#: ../src/groupchat_control.py:1262 #, python-format msgid "No help info for /%s" msgstr "Pas d'aide disponible pour /%s" -#: ../src/groupchat_control.py:1128 +#: ../src/groupchat_control.py:1304 #, python-format msgid "Are you sure you want to leave room \"%s\"?" msgstr "Êtes-vous sûr de vouloir quitter le salon \"%s\" ?" -#: ../src/groupchat_control.py:1129 +#: ../src/groupchat_control.py:1305 msgid "If you close this window, you will be disconnected from this room." msgstr "Si vous fermez cette fenêtre, vous serez déconnecté de ce salon." -#: ../src/groupchat_control.py:1133 +#: ../src/groupchat_control.py:1309 msgid "Do _not ask me again" msgstr "_Ne plus me poser la question" -#: ../src/groupchat_control.py:1167 +#: ../src/groupchat_control.py:1343 msgid "Changing Subject" msgstr "Changement de Sujet" -#: ../src/groupchat_control.py:1168 +#: ../src/groupchat_control.py:1344 msgid "Please specify the new subject:" -msgstr "Saisissez le nouveau sujet :" +msgstr "Saisissez le nouveau sujet :" -#: ../src/groupchat_control.py:1176 +#: ../src/groupchat_control.py:1352 msgid "Changing Nickname" msgstr "Changement de Surnom" -#: ../src/groupchat_control.py:1177 +#: ../src/groupchat_control.py:1353 msgid "Please specify the new nickname you want to use:" -msgstr "Saisissez le nouveau surnom que vous souhaitez utiliser :" +msgstr "Saisissez le nouveau surnom que vous souhaitez utiliser :" -#: ../src/groupchat_control.py:1202 +#: ../src/groupchat_control.py:1379 msgid "Bookmark already set" msgstr "Marque-page déjà spécifié" -#: ../src/groupchat_control.py:1203 +#: ../src/groupchat_control.py:1380 #, python-format msgid "Room \"%s\" is already in your bookmarks." msgstr "Le salon \"%s\" est déjà dans vos marque-pages." -#: ../src/groupchat_control.py:1212 +#: ../src/groupchat_control.py:1389 msgid "Bookmark has been added successfully" msgstr "Marque-page ajouté avec succès" -#: ../src/groupchat_control.py:1213 +#: ../src/groupchat_control.py:1390 msgid "You can manage your bookmarks via Actions menu in your roster." -msgstr "Vous pouvez gérer vos marque-pages par le menu Actions de votre liste de contacts." +msgstr "" +"Vous pouvez gérer vos marque-pages par le menu Actions de votre liste de " +"contacts." #. ask for reason -#: ../src/groupchat_control.py:1322 +#: ../src/groupchat_control.py:1500 #, python-format msgid "Kicking %s" msgstr "Exclusion de %s" -#: ../src/groupchat_control.py:1323 -#: ../src/groupchat_control.py:1568 +#: ../src/groupchat_control.py:1501 ../src/groupchat_control.py:1779 msgid "You may specify a reason below:" -msgstr "Vous pouvez saisir une raison ci-dessous :" +msgstr "Vous pouvez saisir une raison ci-dessous :" #. ask for reason -#: ../src/groupchat_control.py:1567 +#: ../src/groupchat_control.py:1778 #, python-format msgid "Banning %s" msgstr "Bannissement de %s" -#: ../src/gtkexcepthook.py:52 +#: ../src/gtkexcepthook.py:51 msgid "A programming error has been detected" msgstr "Une erreur de programmation a été détectée" -#: ../src/gtkexcepthook.py:53 -msgid "It probably is not fatal, but should be reported to the developers nonetheless." -msgstr "Elle n'est probablement pas fatale mais devrait quand même être communiquée aux développeurs." +#: ../src/gtkexcepthook.py:52 +msgid "" +"It probably is not fatal, but should be reported to the developers " +"nonetheless." +msgstr "" +"Elle n'est probablement pas fatale mais devrait quand même être communiquée " +"aux développeurs." -#: ../src/gtkexcepthook.py:59 +#: ../src/gtkexcepthook.py:58 msgid "_Report Bug" msgstr "_Rapporter l'anomalie" -#: ../src/gtkexcepthook.py:82 +#: ../src/gtkexcepthook.py:81 msgid "Details" msgstr "Détails" -#. this always tracebacks -#: ../src/gtkgui.glade.h:1 -msgid "0" -msgstr "0" - -#: ../src/gtkgui.glade.h:2 -msgid "" -"Account is being created\n" -"\n" -"Please wait..." -msgstr "" -"Création du compte en cours\n" -"\n" -"Veuillez patienter..." - -#: ../src/gtkgui.glade.h:5 -msgid "Advanced Configuration Editor" -msgstr "Éditeur de Configuration avancée" - -#: ../src/gtkgui.glade.h:6 -msgid "Applications" -msgstr "Applications" - -#: ../src/gtkgui.glade.h:7 -msgid "Chatstate Tab Colors" -msgstr "Couleurs des Onglets" - -#. a header for custom browser/client/file manager. so translate sth like: Custom Settings -#: ../src/gtkgui.glade.h:9 -msgid "Custom" -msgstr "Personnalisé" - -#: ../src/gtkgui.glade.h:10 -msgid "Description" -msgstr "Description" - -#: ../src/gtkgui.glade.h:11 -msgid "Format of a line" -msgstr "Format d'une ligne de discussion" - -#: ../src/gtkgui.glade.h:12 -msgid "Interface Customization" -msgstr "Personnalisation de l'interface" - -#: ../src/gtkgui.glade.h:13 -msgid "Jabber Traffic" -msgstr "Trafic Jabber" - -#: ../src/gtkgui.glade.h:14 -msgid "Miscellaneous" -msgstr "Divers" - -#: ../src/gtkgui.glade.h:15 -msgid "NOTE: You should restart gajim for some setting to take effect" -msgstr "NOTE : Vous devez redémarrer Gajim pour prendre en compte certaines de vos modifications." - -#: ../src/gtkgui.glade.h:16 -msgid "OpenPGP" -msgstr "OpenPGP" - -#: ../src/gtkgui.glade.h:17 -msgid "Personal Information" -msgstr "Informations personnelles" - -#: ../src/gtkgui.glade.h:18 -msgid "Please choose one of the options below:" -msgstr "Choisissez une des options suivantes :" - -#: ../src/gtkgui.glade.h:19 -msgid "Please fill in the data for your new account" -msgstr "Remplissez les informations pour votre nouveau compte" - -#: ../src/gtkgui.glade.h:20 -msgid "Preset Status Messages" -msgstr "Messages d'état prédéfinis" - -#: ../src/gtkgui.glade.h:21 -msgid "Properties" -msgstr "Propriétés" - -#: ../src/gtkgui.glade.h:22 -msgid "Settings" -msgstr "Réglages" - -#: ../src/gtkgui.glade.h:23 -msgid "Sounds" -msgstr "Sons" - -#: ../src/gtkgui.glade.h:24 -msgid "Type your new status message" -msgstr "Taper votre nouveau message d'état" - -#: ../src/gtkgui.glade.h:25 -msgid "Visual Notifications" -msgstr "Notifications visuelles" - -#: ../src/gtkgui.glade.h:26 -msgid "What do you want to do?" -msgstr "Que voulez vous faire ?" - -#: ../src/gtkgui.glade.h:27 -msgid "XML Input" -msgstr "Entrée XML" - -#: ../src/gtkgui.glade.h:28 -msgid "A list of active, completed and stopped file transfers" -msgstr "Une liste des transferts de fichier actifs, terminés et arrêtés" - -#: ../src/gtkgui.glade.h:29 -msgid "A_ccounts" -msgstr "_Comptes" - -#: ../src/gtkgui.glade.h:30 -msgid "A_fter nickname:" -msgstr "Après le surnom :" - -#. "About" is the text of a tab of vcard window -#: ../src/gtkgui.glade.h:32 -msgid "About" -msgstr "À propos" - -#: ../src/gtkgui.glade.h:33 -msgid "Accept" -msgstr "Accepter" - -#: ../src/gtkgui.glade.h:34 -msgid "Account" -msgstr "Compte" - -#: ../src/gtkgui.glade.h:35 -msgid "" -"Account\n" -"Group\n" -"Contact\n" -"Banner" -msgstr "" -"Compte\n" -"Groupe\n" -"Contact\n" -"Bannière" - -#: ../src/gtkgui.glade.h:39 -msgid "Account Modification" -msgstr "Modification du compte" - -#: ../src/gtkgui.glade.h:40 -msgid "Accounts" -msgstr "Comptes" - -#: ../src/gtkgui.glade.h:42 -msgid "Add New Contact" -msgstr "Ajouter un nouveau contact" - -#: ../src/gtkgui.glade.h:43 -msgid "Add Special _Notification" -msgstr "Ajouter une notification spéciale" - -#: ../src/gtkgui.glade.h:44 -msgid "Add _Contact" -msgstr "Ajouter un _contact" - -#: ../src/gtkgui.glade.h:45 -msgid "Address" -msgstr "Adresse" - -#: ../src/gtkgui.glade.h:46 -msgid "Advanced" -msgstr "Avancées" - -#: ../src/gtkgui.glade.h:47 -msgid "Advanced Configuration Editor" -msgstr "Éditeur de configuration avancée" - -#: ../src/gtkgui.glade.h:48 -msgid "" -"All chat states\n" -"Composing only\n" -"Disabled" -msgstr "" -"Tous les états\n" -"En train de composer seulement\n" -"Aucun" - -#: ../src/gtkgui.glade.h:51 -msgid "Allow _OS information to be sent" -msgstr "Autoriser l'envoi des informations concernant votre _système d'exploitation" - -#: ../src/gtkgui.glade.h:52 -msgid "Allow him/her to see my status" -msgstr "L'autoriser à voir mon état" - -#: ../src/gtkgui.glade.h:53 -msgid "Allow popup/notifications when I'm _away/na/busy/invisible" -msgstr "Autoriser les _notifications lorsque je suis absent/indisponible/occupé/invisible" - -#: ../src/gtkgui.glade.h:54 -msgid "Also known as iChat style" -msgstr "Aussi appellé style iChat" - -#: ../src/gtkgui.glade.h:55 -msgid "Ask status message when I:" -msgstr "Demander le message d'état lorsque je me : " - -#: ../src/gtkgui.glade.h:56 -msgid "Ask to see his/her status" -msgstr "Lui demander à voir son état" - -#: ../src/gtkgui.glade.h:57 -msgid "Ask:" -msgstr "Demande :" - -#: ../src/gtkgui.glade.h:58 -msgid "Assign Open_PGP Key" -msgstr "Assigner une clé Open_PGP" - -#: ../src/gtkgui.glade.h:59 -msgid "Authorize contact so he can know when you're connected" -msgstr "Autoriser le contact à savoir quand vous êtes connecté" - -#: ../src/gtkgui.glade.h:60 -msgid "Auto _away after:" -msgstr "Passer _absent après :" - -#: ../src/gtkgui.glade.h:61 -msgid "Auto _not available after:" -msgstr "Passer _indisponible après :" - -#: ../src/gtkgui.glade.h:62 -msgid "Auto join" -msgstr "Rejoindre automatiquement" - -#: ../src/gtkgui.glade.h:63 -msgid "" -"Autodetect on every Gajim startup\n" -"Always use GNOME default applications\n" -"Always use KDE default applications\n" -"Custom" -msgstr "" -"Détection automatique à chaque démarrage\n" -"Toujours utiliser les applications par défaut de GNOME\n" -"Toujours utiliser les applications par défaut de KDE\n" -"Personnalisé" - -#: ../src/gtkgui.glade.h:67 -msgid "Automatically authorize contact" -msgstr "Autoriser automatiquement le contact à voir mon état" - -#: ../src/gtkgui.glade.h:68 -msgid "Autoreconnect when connection is lost" -msgstr "Reconnexion automatique quand la connexion est perdue" - -#: ../src/gtkgui.glade.h:69 -msgid "B_efore nickname:" -msgstr "Avant le surnom :" - -#: ../src/gtkgui.glade.h:70 -msgid "Birthday:" -msgstr "Anniversaire :" - -#: ../src/gtkgui.glade.h:71 -msgid "Bold" -msgstr "Gras" - -#: ../src/gtkgui.glade.h:72 -msgid "Build custom query" -msgstr "Créer une requête personnalisée" - -#: ../src/gtkgui.glade.h:73 -msgid "C_onnect on Gajim startup" -msgstr "C_onnexion au démarrage" - -#: ../src/gtkgui.glade.h:74 -msgid "Cancel file transfer" -msgstr "Annule le transfert de fichier" - -#: ../src/gtkgui.glade.h:75 -msgid "Cancels the selected file transfer" -msgstr "Annule le transfert du fichier sélectionné" - -#: ../src/gtkgui.glade.h:76 -msgid "Cancels the selected file transfer and removes incomplete file" -msgstr "Annule le transfert du fichier sélectionné et supprime le fichier incomplet" - -#: ../src/gtkgui.glade.h:77 -msgid "Chan_ge Password" -msgstr "Chan_ger le mot de passe" - -#: ../src/gtkgui.glade.h:78 -msgid "Change Password" -msgstr "Changer le mot de passe" - -#: ../src/gtkgui.glade.h:79 -msgid "Change _Nickname" -msgstr "Changer de sur_nom" - -#: ../src/gtkgui.glade.h:80 -msgid "Change _Subject" -msgstr "Changer le _sujet" - -#: ../src/gtkgui.glade.h:82 -msgid "Chat state noti_fications:" -msgstr "Noti_fications d'état de discussion" - -#: ../src/gtkgui.glade.h:83 -msgid "Check this option, only if someone you don't have in the roster spams/annoys you. Use with caution, cause it blocks all messages from any contact that is not in the roster" -msgstr "Cochez cette option seulement si quelqu'un n'appartenant pas à votre liste vous spamme/ennuie. Utilisez la avec précaution, car elle bloque tous les messages des contacts qui ne sont pas dans votre liste" - -#: ../src/gtkgui.glade.h:84 -msgid "Check this so Gajim will connect in port 5223 where legacy servers are expected to have SSL capabilities. Note that Gajim uses TLS encryption by default if broadcasted by the server, and with this option enabled TLS will be disabled" -msgstr "Si vous cochez cette case, Gajim se connectera sur le port 5223, sur lequel les serveurs sont supposés gérer le SSL. Notez que Gajim utilise le cryptage TLS par défaut si le serveur annonce qu'il le supporte, et avec cette option vous désactivez le TLS" - -#: ../src/gtkgui.glade.h:85 -msgid "Choose _Key..." -msgstr "Choisissez une _clé" - -#: ../src/gtkgui.glade.h:86 -msgid "City:" -msgstr "Ville :" - -#: ../src/gtkgui.glade.h:87 -msgid "Clean _up" -msgstr "_Nettoyer" - -#: ../src/gtkgui.glade.h:88 -msgid "Click to change account's password" -msgstr "Cliquez pour changer le mot de passe du compte" - -#: ../src/gtkgui.glade.h:89 -msgid "Click to insert an emoticon (Alt+M)" -msgstr "Cliquer pour insérer un émoticône (Alt+M)" - -#: ../src/gtkgui.glade.h:90 -msgid "Click to see features (like MSN, ICQ transports) of jabber servers" -msgstr "Cliquez pour voir les fonctionnalités du serveur jabber (comme les passerelles MSN, ICQ)" - -#: ../src/gtkgui.glade.h:91 -msgid "Click to see past conversation in this room" -msgstr "Cliquez ici pour voir les précédentes conversations de ce salon" - -#: ../src/gtkgui.glade.h:92 -msgid "Click to see past conversations with this contact" -msgstr "Cliquez ici pour voir les précédentes conversations avec ce contact" - -#: ../src/gtkgui.glade.h:93 -msgid "Client:" -msgstr "Client :" - -#: ../src/gtkgui.glade.h:94 -msgid "Company:" -msgstr "Entreprise :" - -#: ../src/gtkgui.glade.h:95 -msgid "Composing" -msgstr "En train d'écrire" - -#: ../src/gtkgui.glade.h:96 -msgid "Configure _Room" -msgstr "Confi_gurer le Salon" - -#: ../src/gtkgui.glade.h:97 -msgid "Connect when I press Finish" -msgstr "Se connecter quand je clique sur Finir" - -#: ../src/gtkgui.glade.h:98 -msgid "Connection" -msgstr "Connexion" - -#: ../src/gtkgui.glade.h:99 -msgid "Contact Information" -msgstr "Informations" - -#: ../src/gtkgui.glade.h:100 -msgid "Contact _Info" -msgstr "_Informations" - -#: ../src/gtkgui.glade.h:101 -msgid "Conversation History" -msgstr "Historique de Conversation" - -#: ../src/gtkgui.glade.h:102 -msgid "Country:" -msgstr "Pays :" - -#: ../src/gtkgui.glade.h:103 -msgid "Default status _iconset:" -msgstr "_Icônes d'état par défaut :" - -#: ../src/gtkgui.glade.h:104 -msgid "Delete MOTD" -msgstr "Supprimer MOTD" - -#: ../src/gtkgui.glade.h:105 -msgid "Deletes Message of the Day" -msgstr "Supprime le message du jour" - -#: ../src/gtkgui.glade.h:106 -msgid "Deny" -msgstr "Refuser" - -#: ../src/gtkgui.glade.h:107 -msgid "Deny authorization from contact so he cannot know when you're connected" -msgstr "Refuser l'autorisation au contact pour qu'il ne puisse pas savoir quand vous êtes connecté" - -#: ../src/gtkgui.glade.h:108 -msgid "Department:" -msgstr "Département :" - -#: ../src/gtkgui.glade.h:109 -msgid "Display a_vatars of contacts in roster" -msgstr "Afficher l'a_vatar des contacts dans la liste des contacts" - -#: ../src/gtkgui.glade.h:110 -msgid "Display status _messages of contacts in roster" -msgstr "Afficher les _messages d'état des contacts dans la liste des contacts" - -#: ../src/gtkgui.glade.h:111 -msgid "E-Mail:" -msgstr "Courriel :" - -#: ../src/gtkgui.glade.h:112 -msgid "E_very 5 minutes" -msgstr "Toutes les 5 minutes" - -#: ../src/gtkgui.glade.h:113 -msgid "Edit Groups" -msgstr "Éditer les groupes" - -#: ../src/gtkgui.glade.h:114 -msgid "Edit Personal Information..." -msgstr "_Éditer les informations personnelles..." - -#: ../src/gtkgui.glade.h:115 -msgid "Edit _Groups" -msgstr "Éditer les _groupes" - -#: ../src/gtkgui.glade.h:116 -msgid "Emoticons:" -msgstr "Émoticônes :" - -#. XML Console enable checkbutton -#: ../src/gtkgui.glade.h:118 -msgid "Enable" -msgstr "Activer" - -#: ../src/gtkgui.glade.h:119 -msgid "Enter it again for confirmation:" -msgstr "Entrez le de nouveau pour confirmer :" - -#: ../src/gtkgui.glade.h:120 -msgid "Enter new password:" -msgstr "Entrez un nouveau mot de passe :" - -#: ../src/gtkgui.glade.h:121 -msgid "Events" -msgstr "Événements" - -#: ../src/gtkgui.glade.h:122 -msgid "Extra Address:" -msgstr "Adresse 2 :" - -#. Family Name -#: ../src/gtkgui.glade.h:124 -msgid "Family:" -msgstr "Famille :" - -#: ../src/gtkgui.glade.h:125 -msgid "File Transfers" -msgstr "Transfert de fichiers" - -#: ../src/gtkgui.glade.h:126 -msgid "File _Transfers" -msgstr "_Transfert de fichiers" - -#: ../src/gtkgui.glade.h:127 -msgid "Filter:" -msgstr "Filtre :" - -#: ../src/gtkgui.glade.h:128 -msgid "Font style:" -msgstr "Style de la police :" - -#: ../src/gtkgui.glade.h:129 -msgid "Forbid him/her to see my status" -msgstr "Lui interdire de voir mon état" - -#: ../src/gtkgui.glade.h:130 -msgid "Format: YYYY-MM-DD" -msgstr "Format : AAAA-MM-JJ" - -#: ../src/gtkgui.glade.h:131 -msgid "Frequently Asked Questions (online)" -msgstr "Foire Aux Questions (en ligne)" - -#: ../src/gtkgui.glade.h:132 -msgid "From:" -msgstr "De :" - -#: ../src/gtkgui.glade.h:133 -msgid "G_o" -msgstr "Parc_ourir" - -#: ../src/gtkgui.glade.h:134 -#: ../src/notify.py:167 -#: ../src/notify.py:189 -#: ../src/notify.py:201 -#: ../src/tooltips.py:339 -msgid "Gajim" -msgstr "Gajim" - -#: ../src/gtkgui.glade.h:135 -msgid "Gajim Themes Customization" -msgstr "Personalisation des thèmes de Gajim" - -#: ../src/gtkgui.glade.h:136 -msgid "Gajim can send and receive meta-information related to a conversation you may have with a contact. Here you can specify which chatstates you want to send to the other party." -msgstr "Gajim peut envoyer et recevoir des meta-informations concernant les conversations que vous pouvez avoir avec un contact. Vous pouvez ici spécifier quel état de conversation vous voulez envoyer à vos contacts" - -#: ../src/gtkgui.glade.h:137 -msgid "Gajim will automatically show new events by poping up the relative window" -msgstr "Gajim montrera automatiquement les nouveaux évènements reçus en montrant la fenêtre correspondante" - -#: ../src/gtkgui.glade.h:138 -msgid "Gajim will notify you for new events via a popup in the bottom right of the screen" -msgstr "Gajim vous signalera les nouveaux évènements dans une fenêtre en bas à droite de l'écran" - -#: ../src/gtkgui.glade.h:139 -msgid "Gajim will notify you via a popup window in the bottom right of the screen about contacts that just signed in" -msgstr "Gajim vous signalera par une fenêtre de notification en bas à droite de l'écran qu'un contact s'est connecté" - -#: ../src/gtkgui.glade.h:140 -msgid "Gajim will notify you via a popup window in the bottom right of the screen about contacts that just signed out" -msgstr "Gajim vous signalera par une fenêtre de notification en bas à droite de l'écran qu'un contact s'est déconnecté" - -#: ../src/gtkgui.glade.h:141 -msgid "Gajim will only change the icon of the contact that triggered the new event" -msgstr "Gajim ne fera que changer l'icône du contact qui a envoyé le nouvel évènement" - -#: ../src/gtkgui.glade.h:142 -msgid "Gajim: Account Creation Wizard" -msgstr "Gajim : Assistant de création de compte" - -#. user has no group, print him in General -#: ../src/gtkgui.glade.h:143 -#: ../src/roster_window.py:291 -#: ../src/roster_window.py:1183 -#: ../src/roster_window.py:1405 -#: ../src/systray.py:286 -msgid "General" -msgstr "Général" - -#. Given Name -#: ../src/gtkgui.glade.h:145 -msgid "Given:" -msgstr "Prénom :" - -#: ../src/gtkgui.glade.h:146 -msgid "Gone" -msgstr "Parti" - -#: ../src/gtkgui.glade.h:147 -msgid "Group:" -msgstr "Groupe :" - -#: ../src/gtkgui.glade.h:148 -msgid "HTTP Connect" -msgstr "Connexion HTTP" - -#: ../src/gtkgui.glade.h:149 -msgid "Help online" -msgstr "Aide en ligne" - -#: ../src/gtkgui.glade.h:150 -msgid "Hides the window" -msgstr "Cache la fenêtre" - -#: ../src/gtkgui.glade.h:151 -msgid "Homepage:" -msgstr "Site perso :" - -#: ../src/gtkgui.glade.h:152 -msgid "Hostname: " -msgstr "Serveur :" - -#: ../src/gtkgui.glade.h:153 -msgid "I already have an account I want to use" -msgstr "J'ai déjà un compte que je veux utiliser" - -#: ../src/gtkgui.glade.h:154 -msgid "I want to _register for a new account" -msgstr "Je veux _créer un nouveau compte" - -#: ../src/gtkgui.glade.h:155 -msgid "I would like to add you to my contact list." -msgstr "Je souhaiterais vous ajouter à ma liste de contacts." - -#: ../src/gtkgui.glade.h:156 -msgid "If checked, Gajim will also broadcast some more IPs except from just your IP, so file transfer has higher chances of working right." -msgstr "Si cette case est cochée, Gajim va diffuser des adresses IP en plus de la votre, les transferts de fichiers ont ainsi plus de chance de fonctionner." - -#: ../src/gtkgui.glade.h:157 -msgid "If checked, Gajim will display avatars of contacts in roster window and in group chats" -msgstr "Si cette case est cochée, Gajim affichera l'avatar de chaque contact dans la fenêtre principale et les salons" - -#: ../src/gtkgui.glade.h:158 -msgid "If checked, Gajim will display status messages of contacts under the contact name in roster window and in group chats" -msgstr "Si cette case est cochée, Gajim affichera le message d'état, sous le nom de chaque contact dans la fenêtre principale et les salons" - -#: ../src/gtkgui.glade.h:159 -msgid "If checked, Gajim will join this group chat on startup" -msgstr "Si cette case est cochée, Gajim se connectera à ce salon au démarrage" - -#: ../src/gtkgui.glade.h:160 -msgid "If checked, Gajim will remember the password for this account" -msgstr "Si cette case est cochée, Gajim va retenir le mot de passe pour ce compte" - -#: ../src/gtkgui.glade.h:161 -msgid "If checked, Gajim will remember the roster and chat window positions in the screen and the sizes of them next time you run it" -msgstr "Si cette case est cochée, Gajim va retenir la position de votre liste decontacts et des fenêtres de discussion pour vos prochaines utilisations" - -#: ../src/gtkgui.glade.h:162 -msgid "If checked, Gajim will send keep-alive packets so it prevents connection timeout which results in disconnection" -msgstr "Si cette case est cochée, Gajim enverra des paquets de maintien de connexion pour prévenir des temps de latence pouvant entraîner des déconnexions" - -#: ../src/gtkgui.glade.h:163 -msgid "If checked, Gajim will store the password in ~/.gajim/config with 'read' permission only for you" -msgstr "Si cette case est cochée, Gajim va sauvegarder le mot de passe dans ~/.gajim/config avec accès en lecture pour vous uniquement" - -#: ../src/gtkgui.glade.h:164 -msgid "If checked, Gajim will use protocol-specific status icons. (eg. A contact from MSN will have the equivalent msn icon for status online, away, busy, etc...)" -msgstr "Si cette case est cochée, Gajim utilisera des icônes d'état spécifiques aux protocoles. (Par ex. un contact MSN aura les icônes de MSN pour les états disponible, absent, occupé, etc)" - -#: ../src/gtkgui.glade.h:165 -msgid "If checked, Gajim, when launched, will automatically connect to jabber using this account" -msgstr "Si cette case est cochée, au démarrage, Gajim se connectera automatiquement à jabber en utilisant ce compte." - -#: ../src/gtkgui.glade.h:166 -msgid "If checked, any change to the global status (handled by the combobox at the bottom of the roster window) will change the status of this account accordingly" -msgstr "Si cette case est cochée, toute modification de l'état global (accessible à l'aide du bouton en bas de la fenêtre principale) sera répercutée sur l'état de ce compte" - -#: ../src/gtkgui.glade.h:167 -msgid "If not disabled, Gajim will replace ascii smilies like ':)' with equivalent animated or static graphical emoticons" -msgstr "Si cette case n'est pas décochée, Gajim va remplacer les émoticône ASCII comme « :) » par un équivalent graphique statique ou dynamique" - -#: ../src/gtkgui.glade.h:168 -msgid "If you have 2 or more accounts and it is checked, Gajim will list all contacts as if you had one account" -msgstr "Si vous avez 2 comptes ou plus et que cette case est cochée, Gajim va lister tous les contacts comme si vous n'aviez qu'un seul compte" - -#: ../src/gtkgui.glade.h:169 -msgid "Inactive" -msgstr "Inactif" - -#. Info/Query make the "IQ" initials. So translate like this 'YourLang/YourLang (Info/Query)'. Thanks (it's a tooltip so width is not a problem) -#: ../src/gtkgui.glade.h:171 -msgid "Info/Query" -msgstr "Information/Demande" - -#: ../src/gtkgui.glade.h:172 -msgid "Information about you, as stored in the server" -msgstr "Les informations vous concernant, stockées sur le serveur" - -#: ../src/gtkgui.glade.h:173 -msgid "Invitation Received" -msgstr "Invitation reçue" - -#: ../src/gtkgui.glade.h:174 -msgid "Italic" -msgstr "Italique" - -#: ../src/gtkgui.glade.h:175 -msgid "Jabber" -msgstr "Jabber" - -#: ../src/gtkgui.glade.h:176 -msgid "Jabber ID:" -msgstr "Identifiant Jabber :" - -#: ../src/gtkgui.glade.h:178 -msgid "Join _Group Chat" -msgstr "Rejoindre un _salon de discussion" - -#: ../src/gtkgui.glade.h:179 -msgid "Location" -msgstr "Adresse" - -#: ../src/gtkgui.glade.h:180 -msgid "" -"MUC\n" -"Messages" -msgstr "" -"Messages\n" -"de salon" - -#: ../src/gtkgui.glade.h:182 -msgid "" -"MUC Directed\n" -"Messages" -msgstr "" -"Messages \n" -"Dirigés dans\n" -"les salons" - -#: ../src/gtkgui.glade.h:184 -msgid "Ma_nage..." -msgstr "Gérer..." - -#: ../src/gtkgui.glade.h:185 -msgid "Manage Accounts" -msgstr "Gérer les comptes" - -#: ../src/gtkgui.glade.h:186 -msgid "Manage Bookmarks" -msgstr "Gérer les Marque-pages" - -#: ../src/gtkgui.glade.h:187 -msgid "Manage Proxy Profiles" -msgstr "Gérer les profils de proxies" - -#: ../src/gtkgui.glade.h:188 -msgid "Manage..." -msgstr "Modifier..." - -#. Middle Name -#: ../src/gtkgui.glade.h:190 -msgid "Middle:" -msgstr "Second prénom :" - -#: ../src/gtkgui.glade.h:191 -msgid "Mo_derator" -msgstr "Mo_dérer" - -#: ../src/gtkgui.glade.h:192 -msgid "More" -msgstr "Complément" - -#: ../src/gtkgui.glade.h:193 -msgid "Name:" -msgstr "Nom :" - -#: ../src/gtkgui.glade.h:194 -msgid "" -"Never\n" -"Always\n" -"Per account\n" -"Per type" -msgstr "" -"Jamais\n" -"Toujours\n" -"Par compte\n" -"Par type" - -#: ../src/gtkgui.glade.h:198 -msgid "Nickname:" -msgstr "Surnom :" - -#. None means no proxy profile selected -#: ../src/gtkgui.glade.h:201 -msgid "None" -msgstr "Aucun" - -#: ../src/gtkgui.glade.h:202 -msgid "Notify me about contacts that: " -msgstr "Me Signaler quand un contact se : " - -#: ../src/gtkgui.glade.h:203 -msgid "Notify on new _Gmail e-mail" -msgstr "Me prévenir lorsqu'un nouveau courrier électronique _Gmail arrive" - -#: ../src/gtkgui.glade.h:204 -msgid "OS:" -msgstr "Syst. d'exploit. :" - -#: ../src/gtkgui.glade.h:205 -msgid "On every _message" -msgstr "À _chaque message" - -#: ../src/gtkgui.glade.h:206 -msgid "One message _window:" -msgstr "Une seule fenêtre de discussion :" - -#: ../src/gtkgui.glade.h:208 -msgid "Pass_word:" -msgstr "_Mot de passe : " - -#: ../src/gtkgui.glade.h:209 -msgid "Passphrase" -msgstr "Mot de passe" - -#: ../src/gtkgui.glade.h:210 -msgid "Password:" -msgstr "Mot de passe :" - -#: ../src/gtkgui.glade.h:211 -#: ../src/tooltips.py:645 -msgid "Paused" -msgstr "Pause" - -#: ../src/gtkgui.glade.h:212 -msgid "Personal Information" -msgstr "Informations personnelles" - -#: ../src/gtkgui.glade.h:213 -msgid "Phone No.:" -msgstr "Téléphone :" - -#: ../src/gtkgui.glade.h:214 -msgid "Play _sounds" -msgstr "_Jouer les sons" - -#: ../src/gtkgui.glade.h:215 -msgid "Port: " -msgstr "Port : " - -#: ../src/gtkgui.glade.h:216 -msgid "Position:" -msgstr "Poste :" - -#: ../src/gtkgui.glade.h:217 -msgid "Postal Code:" -msgstr "Code postal :" - -#: ../src/gtkgui.glade.h:218 -msgid "Preferences" -msgstr "Préférences" - -#. Prefix in Name -#: ../src/gtkgui.glade.h:220 -msgid "Prefix:" -msgstr "Titre :" - -#: ../src/gtkgui.glade.h:221 -msgid "Preset messages:" -msgstr "Messages prédéfinis :" - -#: ../src/gtkgui.glade.h:222 -msgid "Print time:" -msgstr "Afficher l'heure :" - -#: ../src/gtkgui.glade.h:223 -msgid "Priori_ty:" -msgstr "Priori_té :" - -#: ../src/gtkgui.glade.h:224 -msgid "Priority is used in Jabber to determine who gets the events from the jabber server when two or more clients are connected using the same account; The client with the highest priority gets the events" -msgstr "La priorité est utilisé par Jabber pour déterminer qui reçoit les évenements du serveur quand plusieurs clients sont connectés avec le même compte. Le client ayant la plus haute priorité recevra les messages" - -#: ../src/gtkgui.glade.h:225 -msgid "Profile, Avatar" -msgstr "Profil, _Avatar" - -#: ../src/gtkgui.glade.h:226 -msgid "Protocol:" -msgstr "Protocole :" - -#: ../src/gtkgui.glade.h:227 -msgid "Proxy:" -msgstr "Proxy :" - -#: ../src/gtkgui.glade.h:228 -msgid "Query Builder..." -msgstr "Construire une Requête..." - -#: ../src/gtkgui.glade.h:229 -msgid "Recently:" -msgstr "Récemment :" - -#: ../src/gtkgui.glade.h:230 -msgid "Register to" -msgstr "S'enregistrer à" - -#: ../src/gtkgui.glade.h:231 -msgid "Remove account _only from Gajim" -msgstr "Supprimer le compte de Gajim _uniquement" - -#: ../src/gtkgui.glade.h:232 -msgid "Remove account from Gajim and from _server" -msgstr "Supprimer le compte de Gajim et du _serveur" - -#: ../src/gtkgui.glade.h:233 -msgid "Remove file transfer from the list." -msgstr "Supprimer le transfert de fichier de la liste." - -#: ../src/gtkgui.glade.h:234 -msgid "Removes completed, canceled and failed file transfers from the list" -msgstr "Supprimer les transferts de fichier terminés, annulés et échoués de la liste" - -#: ../src/gtkgui.glade.h:235 -msgid "Reply to this message" -msgstr "Repondre à ce message" - -#: ../src/gtkgui.glade.h:236 -msgid "Resour_ce: " -msgstr "Ressour_ce: " - -#: ../src/gtkgui.glade.h:237 -msgid "Resource is sent to the Jabber server in order to separate the same JID in two or more parts depending on the number of the clients connected in the same server with the same account. So you might be connected in the same account with resource 'Home' and 'Work' at the same time. The resource which has the highest priority will get the events. (see below)" -msgstr "La ressource est envoyée au serveur jabber pour différencier les clients connectés au même serveur avec le même compte. Vous pouvez donc être connecté avec le même compte avec les ressources « Maison » et « Travail » en même temps. La ressource avec la plus haute priorité recevra les messages (voir plus bas)." - -#: ../src/gtkgui.glade.h:238 -msgid "Resource:" -msgstr "Ressource :" - -#: ../src/gtkgui.glade.h:239 -msgid "Role:" -msgstr "Fonction :" - -#: ../src/gtkgui.glade.h:240 -msgid "Room Configuration" -msgstr "Configuration du salon de discussion" - -#: ../src/gtkgui.glade.h:241 -msgid "Room:" -msgstr "Salon :" - -#: ../src/gtkgui.glade.h:242 -msgid "Save _passphrase (insecure)" -msgstr "Enregistrer votre mot de _passe (non sécurisé)" - -#: ../src/gtkgui.glade.h:243 -msgid "Save _position and size for roster and chat windows" -msgstr "Garder la _position et la taille pour la liste de contact et les fenêtres de discussion" - -#: ../src/gtkgui.glade.h:244 -msgid "Save as Preset..." -msgstr "Enregistrer comme Messages d'État Prédéfini" - -#: ../src/gtkgui.glade.h:245 -msgid "Save conversation _logs for all contacts" -msgstr "Garder l'_historique des conversations pour tous les contacts" - -#: ../src/gtkgui.glade.h:246 -msgid "Save pass_word" -msgstr "Enregistrer le mot de _passe" - -#: ../src/gtkgui.glade.h:247 -msgid "Search" -msgstr "Chercher" - -#: ../src/gtkgui.glade.h:248 -msgid "Sen_d" -msgstr "_Envoyer" - -#: ../src/gtkgui.glade.h:249 -msgid "Send File" -msgstr "Envoyer un Fichier" - -#: ../src/gtkgui.glade.h:250 -msgid "Send Single _Message" -msgstr "Envoyer un _message simple" - -#: ../src/gtkgui.glade.h:251 -msgid "Send Single _Message..." -msgstr "Envoyer un _Message Simple..." - -#: ../src/gtkgui.glade.h:252 -msgid "Send _File" -msgstr "Envoyer un _fichier" - -#: ../src/gtkgui.glade.h:253 -msgid "Send keep-alive packets" -msgstr "Envoi des paquets de maintien de connexion" - -#: ../src/gtkgui.glade.h:254 -msgid "Send message" -msgstr "Envoyer un message" - -#: ../src/gtkgui.glade.h:255 -msgid "Send message and close window" -msgstr "Envoyer le message et fermer la fenêtre" - -#: ../src/gtkgui.glade.h:256 -msgid "Sends a message to currently connected users to this server" -msgstr "Envoie un message aux utilisateurs actuellement connectés a ce serveur" - -#: ../src/gtkgui.glade.h:257 -msgid "Server:" -msgstr "Serveur :" - -#: ../src/gtkgui.glade.h:258 -msgid "Servers Features" -msgstr "Fonctionalités des Serveurs" - -#: ../src/gtkgui.glade.h:259 -msgid "Set MOTD" -msgstr "Définir MOTD" - -#: ../src/gtkgui.glade.h:260 -msgid "Set _Avatar" -msgstr "Choisir un _avatar" - -#: ../src/gtkgui.glade.h:261 -msgid "Set my profile when I connect" -msgstr "Définir mon profil quand je me connecte" - -#: ../src/gtkgui.glade.h:262 -msgid "Sets Message of the Day" -msgstr "Mets un message du jour" - -#: ../src/gtkgui.glade.h:263 -msgid "Show All Pending _Events" -msgstr "Montrer tous les _événements en attente" - -#: ../src/gtkgui.glade.h:264 -msgid "Show _Offline Contacts" -msgstr "Montrer les contacts déc_onnectés" - -#: ../src/gtkgui.glade.h:265 -msgid "Show _Roster" -msgstr "Montrer la _liste de contacts" - -#: ../src/gtkgui.glade.h:266 -msgid "Show _XML Console" -msgstr "Montrer la console _XML" - -#: ../src/gtkgui.glade.h:267 -msgid "Show only in _roster" -msgstr "Ne montrer le que dans la _liste" - -#: ../src/gtkgui.glade.h:268 -msgid "Shows a list of file transfers between you and other" -msgstr "Affiche une liste des transferts de fichiers entre vous et les autres" - -#: ../src/gtkgui.glade.h:269 -msgid "Sign _in" -msgstr "_connecte" - -#: ../src/gtkgui.glade.h:270 -msgid "Sign _out" -msgstr "_déconnecte" - -#: ../src/gtkgui.glade.h:271 -msgid "Sta_tus" -msgstr "É_tat" - -#: ../src/gtkgui.glade.h:272 -msgid "Start _Chat" -msgstr "Commencer une _discussion" - -#: ../src/gtkgui.glade.h:273 -msgid "State:" -msgstr "État :" - -#: ../src/gtkgui.glade.h:274 -msgid "Status" -msgstr "État" - -#: ../src/gtkgui.glade.h:275 -msgid "Status:" -msgstr "État :" - -#: ../src/gtkgui.glade.h:276 -msgid "Street:" -msgstr "Rue :" - -#: ../src/gtkgui.glade.h:277 -msgid "Subject:" -msgstr "Sujet :" - -#: ../src/gtkgui.glade.h:278 -msgid "Subscription Request" -msgstr "Requête d'Inscription" - -#: ../src/gtkgui.glade.h:279 -msgid "Subscription:" -msgstr "Inscription :" - -#. Suffix in Name -#: ../src/gtkgui.glade.h:281 -msgid "Suffix:" -msgstr "Suffixe :" - -#: ../src/gtkgui.glade.h:282 -msgid "Synch_ronize account status with global status" -msgstr "Synch_roniser l'état du compte avec l'état global" - -#: ../src/gtkgui.glade.h:283 -msgid "T_heme:" -msgstr "T_hème :" - -#: ../src/gtkgui.glade.h:284 -msgid "Text _color:" -msgstr "_Couleur du texte :" - -#: ../src/gtkgui.glade.h:285 -msgid "Text _font:" -msgstr "_Police du texte :" - -#: ../src/gtkgui.glade.h:286 -msgid "The auto away status message" -msgstr "Le message automatique pour l'état \"absent\"" - -#: ../src/gtkgui.glade.h:287 -msgid "The auto not available status message" -msgstr "Le message automatique pour l'état \"non disponible\"" - -#: ../src/gtkgui.glade.h:288 -msgid "This action removes single file transfer from the list. If the transfer is active, it is first stopped and then removed" -msgstr "Cette action supprime les transferts de fichier de la liste. Si le transfert est actif, il est d'abord arrêté puis supprimé" - -#: ../src/gtkgui.glade.h:289 -msgid "Title:" -msgstr "Titre :" - -#: ../src/gtkgui.glade.h:290 -msgid "To:" -msgstr "À :" - -#: ../src/gtkgui.glade.h:291 -msgid "Toggle Open_PGP Encryption" -msgstr "Bascule l'Encryption _GPG" - -#: ../src/gtkgui.glade.h:292 -msgid "Type:" -msgstr "Type :" - -#: ../src/gtkgui.glade.h:293 -msgid "Underline" -msgstr "Souligner" - -#: ../src/gtkgui.glade.h:294 -msgid "Update MOTD" -msgstr "Mettre à jour MOTD" - -#: ../src/gtkgui.glade.h:295 -msgid "Updates Message of the Day" -msgstr "Mets à jour le message du jour" - -#: ../src/gtkgui.glade.h:296 -msgid "Use _SSL (legacy)" -msgstr "Utiliser _SSL" - -#: ../src/gtkgui.glade.h:297 -msgid "Use _transports iconsets" -msgstr "Utiliser les icônes des passere_lles" - -#: ../src/gtkgui.glade.h:298 -msgid "Use authentication" -msgstr "Utiliser l'authentification" - -#: ../src/gtkgui.glade.h:299 -msgid "Use custom hostname/port" -msgstr "Utiliser un nom d'hôte/port personnalisé" - -#: ../src/gtkgui.glade.h:300 -msgid "Use file transfer proxies" -msgstr "Utiliser les proxies pour les transferts de fichiers" - -#: ../src/gtkgui.glade.h:301 -msgid "Use t_rayicon (aka. notification area icon)" -msgstr "_Icône dans la zone de notification (trayicon)" - -#: ../src/gtkgui.glade.h:302 -msgid "User ID:" -msgstr "Identifiant :" - -#: ../src/gtkgui.glade.h:303 -msgid "When a file transfer is complete show a popup notification" -msgstr "Quand le transfert de fichier est terminé, montrer une fenêtre de notification" - -#: ../src/gtkgui.glade.h:304 -msgid "When a new event (message, file transfer request etc..) is received, the following methods may be used to inform you about it. Please note that events about new messages only occur if it is a new message from a contact you are not already chatting with" -msgstr "Lorsqu'un nouvel événement (message, requête de transfert de fichier, etc.) est reçu, les méthodes suivantes peuvent être utilisées pour vous en informer. NB : Les événements de nouveau message ne surviennent que s'ils proviennent d'un contact avec qui vous n'êtes pas déjà en train de parler" - -#: ../src/gtkgui.glade.h:305 -msgid "When new event is received" -msgstr "Quand un nouvel événement est reçu" - -#: ../src/gtkgui.glade.h:306 -msgid "Work" -msgstr "Emploi" - -#: ../src/gtkgui.glade.h:307 -msgid "" -"You need to have an account in order to connect\n" -"to the Jabber network." -msgstr "" -"Vous devez avoir un compte pour vous connecter\n" -"au réseau Jabber." - -#: ../src/gtkgui.glade.h:309 -msgid "Your JID:" -msgstr "Votre Identifiant Jabber :" - -#. Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector) -#: ../src/gtkgui.glade.h:311 -msgid "_Actions" -msgstr "Ac_tions" - -#: ../src/gtkgui.glade.h:312 -msgid "_Add Contact..." -msgstr "Ajouter un _Contact..." - -#: ../src/gtkgui.glade.h:313 -msgid "_Add to Roster" -msgstr "_Ajouter à la liste de contacts" - -#: ../src/gtkgui.glade.h:314 -msgid "_Address:" -msgstr "_Adresse :" - -#: ../src/gtkgui.glade.h:315 -msgid "_Admin" -msgstr "_Administrateur" - -#: ../src/gtkgui.glade.h:316 -msgid "_Administrator" -msgstr "_Administrateur" - -#: ../src/gtkgui.glade.h:317 -msgid "_Advanced" -msgstr "_Avancées" - -#: ../src/gtkgui.glade.h:318 -msgid "_After time:" -msgstr "_Après l'heure :" - -#: ../src/gtkgui.glade.h:319 -msgid "_Authorize" -msgstr "_Autoriser" - -#: ../src/gtkgui.glade.h:320 -msgid "_Background:" -msgstr "_Arrière-plan :" - -#: ../src/gtkgui.glade.h:321 -msgid "_Ban" -msgstr "_Bannir" - -#: ../src/gtkgui.glade.h:322 -msgid "_Before time:" -msgstr "A_vant l'heure :" - -#: ../src/gtkgui.glade.h:323 -msgid "_Bookmark This Room" -msgstr "Ajouter ce salon aux _Marque-pages" - -#: ../src/gtkgui.glade.h:324 -msgid "_Browser:" -msgstr "_Navigateur :" - -#: ../src/gtkgui.glade.h:325 -msgid "_Cancel" -msgstr "_Annuler" - -#: ../src/gtkgui.glade.h:326 -msgid "_Compact View Alt+C" -msgstr "Vue _Compacte Alt+C" - -#: ../src/gtkgui.glade.h:327 -msgid "_Contents" -msgstr "_Sommaire" - -#: ../src/gtkgui.glade.h:329 -msgid "_Copy JID/Email Address" -msgstr "_Copier le JID/l'Adresse électronique" - -#: ../src/gtkgui.glade.h:330 -msgid "_Copy Link Location" -msgstr "_Copier l'Adresse du Lien" - -#: ../src/gtkgui.glade.h:331 -msgid "_Deny" -msgstr "_Refuser" - -#: ../src/gtkgui.glade.h:332 -msgid "_Discover Services" -msgstr "_Découvrir les services" - -#: ../src/gtkgui.glade.h:333 -msgid "_Discover Services..." -msgstr "_Découvrir les services..." - -#: ../src/gtkgui.glade.h:335 -msgid "_FAQ" -msgstr "_FAQ" - -#: ../src/gtkgui.glade.h:336 -msgid "_File manager:" -msgstr "Gestionnaire de _fichiers :" - -#: ../src/gtkgui.glade.h:337 -msgid "_Filter:" -msgstr "_Filtre :" - -#: ../src/gtkgui.glade.h:338 -msgid "_Finish" -msgstr "_Finir" - -#: ../src/gtkgui.glade.h:339 -msgid "_Font:" -msgstr "_Police :" - -#: ../src/gtkgui.glade.h:340 -msgid "_Group Chat" -msgstr "_Salons de discussion" - -#: ../src/gtkgui.glade.h:341 -msgid "_Help" -msgstr "_Aide" - -#: ../src/gtkgui.glade.h:342 -msgid "_Highlight misspelled words" -msgstr "_Souligner les fautes d'orthographe" - -#: ../src/gtkgui.glade.h:343 -msgid "_History" -msgstr "_Historique" - -#: ../src/gtkgui.glade.h:344 -msgid "_Host:" -msgstr "_Serveur :" - -#. Info/Query: all(?) jabber xml start with Welcome to Gajim History Logs Manager\n" -"\n" -"You can select logs from the left and/or search database from below.\n" -"\n" -"WARNING:\n" -"If you plan to do massive deletions, please make sure Gajim is not running. Generally avoid deletions with contacts you currently chat with." +#: ../src/gtkgui_helpers.py:717 +msgid "Extension not supported" msgstr "" -"Bienvenue dans le Gestionnaire d'Historique de Gajim\n" -"\n" -"Vous pouvez sélectionner les contacts sur la gauche et/ou rechercher dans la base de données en bas.\n" -"\n" -"ATTENTION :\n" -"Si vous faites beaucoup de suppressions, vérifiez que Gajim n'est pas lancé. Ne faites pas de suppressions avec un contact avec qui vous êtes en train de parler." -#: ../src/history_manager.glade.h:7 -msgid "Delete" -msgstr "Supprimer" +#: ../src/gtkgui_helpers.py:718 +#, python-format +msgid "Image cannot be saved in %(type)s format. Save as %(new_filename)s?" +msgstr "" -#: ../src/history_manager.glade.h:8 -msgid "Export" -msgstr "Exporter" +#: ../src/gtkgui_helpers.py:727 +#, fuzzy +msgid "Save Image as..." +msgstr "Enregistrer le Fichier sous..." -#: ../src/history_manager.glade.h:9 -msgid "Gajim History Logs Manager" -msgstr "Gestionnaire d'Historique de Gajim" - -#: ../src/history_manager.glade.h:10 -msgid "_Search Database" -msgstr "Rechercher dans la base de données" - -#: ../src/history_manager.py:58 +#: ../src/history_manager.py:61 msgid "Cannot find history logs database" msgstr "Impossible de trouver la base de données de l'historique" #. holds jid -#: ../src/history_manager.py:102 +#: ../src/history_manager.py:104 msgid "Contacts" msgstr "Contacts" #. holds time -#: ../src/history_manager.py:115 -#: ../src/history_manager.py:155 -#: ../src/history_window.py:94 +#: ../src/history_manager.py:117 ../src/history_manager.py:157 +#: ../src/history_window.py:85 msgid "Date" msgstr "Date" #. holds nickname -#: ../src/history_manager.py:121 -#: ../src/history_manager.py:173 +#: ../src/history_manager.py:123 ../src/history_manager.py:175 msgid "Nickname" msgstr "Pseudonyme" #. holds message -#: ../src/history_manager.py:129 -#: ../src/history_manager.py:161 -#: ../src/history_window.py:102 +#: ../src/history_manager.py:131 ../src/history_manager.py:163 +#: ../src/history_window.py:93 msgid "Message" msgstr "Message" #. holds subject -#: ../src/history_manager.py:136 -#: ../src/history_manager.py:167 +#: ../src/history_manager.py:138 ../src/history_manager.py:169 msgid "Subject" msgstr "Sujet" -#: ../src/history_manager.py:181 -msgid "Do you want to clean up the database? (STRONGLY NOT RECOMMENDED IF GAJIM IS RUNNING)" -msgstr "Voulez vous nettoyer la base de donnée ? (TRÈS DÉCONSEILLÉ SI GAJIM EST LANCÉ)" - #: ../src/history_manager.py:183 msgid "" -"Normally allocated database size will not be freed, it will just become reusable. If you really want to reduce database filesize, click YES, else click NO.\n" +"Do you want to clean up the database? (STRONGLY NOT RECOMMENDED IF GAJIM IS " +"RUNNING)" +msgstr "" +"Voulez vous nettoyer la base de donnée ? (TRÈS DÉCONSEILLÉ SI GAJIM EST " +"LANCÉ)" + +#: ../src/history_manager.py:185 +msgid "" +"Normally allocated database size will not be freed, it will just become " +"reusable. If you really want to reduce database filesize, click YES, else " +"click NO.\n" "\n" "In case you click YES, please wait..." msgstr "" -"Normalement la taille allouée a la base de donnée ne sera pas libérée, elle sera simplement ré-utilisable. Si vous voulez vraiment réduire la taille du fichier, choisir OUI, sinon choisir NON.\n" +"Normalement la taille allouée a la base de donnée ne sera pas libérée, elle " +"sera simplement ré-utilisable. Si vous voulez vraiment réduire la taille du " +"fichier, choisir OUI, sinon choisir NON.\n" "\n" "Si vous choisissez OUI, patientez..." -#: ../src/history_manager.py:389 +#: ../src/history_manager.py:391 msgid "Exporting History Logs..." msgstr "Exporte l'historique..." -#: ../src/history_manager.py:465 +#: ../src/history_manager.py:467 #, python-format msgid "%(who)s on %(time)s said: %(message)s\n" msgstr "%(who)s le %(time)s a dit: %(message)s\n" -#: ../src/history_manager.py:465 +#: ../src/history_manager.py:467 msgid "who" msgstr "qui" -#: ../src/history_manager.py:503 +#: ../src/history_manager.py:505 msgid "Do you really want to delete logs of the selected contact?" msgid_plural "Do you really want to delete logs of the selected contacts?" msgstr[0] "Voulez vous réellement supprimer l'historique de ce contact ?" msgstr[1] "Voulez vous réellement supprimer l'historique de ces contacts ?" -#: ../src/history_manager.py:507 -#: ../src/history_manager.py:543 +#: ../src/history_manager.py:509 ../src/history_manager.py:545 msgid "This is an irreversible operation." msgstr "C'est une opération irréversible." -#: ../src/history_manager.py:540 +#: ../src/history_manager.py:542 msgid "Do you really want to delete the selected message?" msgid_plural "Do you really want to delete the selected messages?" msgstr[0] "Voulez-vous vraiment supprimer le message sélectionné ?" msgstr[1] "Voulez-vous vraiment supprimer les messages sélectionnés ?" -#: ../src/history_window.py:111 -#: ../src/history_window.py:113 +#: ../src/history_window.py:102 ../src/history_window.py:104 #, python-format msgid "Conversation History with %s" msgstr "Historique de Conversation avec %s" -#: ../src/history_window.py:265 +#: ../src/history_window.py:258 #, python-format msgid "%(nick)s is now %(status)s: %(status_msg)s" -msgstr "%(nick)s est maintenant %(status)s : %(status_msg)s" +msgstr "%(nick)s est maintenant %(status)s : %(status_msg)s" -#: ../src/history_window.py:269 +#: ../src/history_window.py:262 ../src/notify.py:113 #, python-format msgid "%(nick)s is now %(status)s" msgstr "%(nick)s est maintenant %(status)s" -#: ../src/history_window.py:275 +#: ../src/history_window.py:268 #, python-format msgid "Status is now: %(status)s: %(status_msg)s" -msgstr "L'état est maintenant : %(status)s : %(status_msg)s" +msgstr "L'état est maintenant : %(status)s : %(status_msg)s" -#: ../src/history_window.py:278 +#: ../src/history_window.py:271 #, python-format msgid "Status is now: %(status)s" -msgstr "L'état est maintenant : %(status)s" +msgstr "L'état est maintenant : %(status)s" -#: ../src/message_window.py:233 +#: ../src/message_window.py:244 msgid "Messages" msgstr "Messages" -#: ../src/message_window.py:234 +#: ../src/message_window.py:245 #, python-format msgid "%s - Gajim" msgstr "%s - Gajim" -#: ../src/roster_window.py:140 +#: ../src/notify.py:111 +#, fuzzy, python-format +msgid "%(nick)s Changed Status" +msgstr "%(nick)s est maintenant %(status)s" + +#: ../src/notify.py:121 +#, python-format +msgid "%(nickname)s Signed In" +msgstr "%(nickname)s s'est connecté" + +#: ../src/notify.py:129 +#, python-format +msgid "%(nickname)s Signed Out" +msgstr "%(nickname)s s'est déconnecté" + +#: ../src/notify.py:141 +#, python-format +msgid "New Single Message from %(nickname)s" +msgstr "Nouveau Message Simple de %(nickname)s" + +#: ../src/notify.py:150 +#, python-format +msgid "New Private Message from room %s" +msgstr "Nouveau Message Privé du Salon %s" + +#: ../src/notify.py:151 +#, python-format +msgid "%(nickname)s: %(message)s" +msgstr "%(nickname)s : %(message)s" + +#: ../src/notify.py:157 +#, python-format +msgid "New Message from %(nickname)s" +msgstr "Nouveau Message de %(nickname)s" + +#: ../src/roster_window.py:131 msgid "Merged accounts" msgstr "Comptes regroupés" -#: ../src/roster_window.py:289 -#: ../src/common/helpers.py:42 +#: ../src/roster_window.py:288 ../src/common/helpers.py:39 msgid "Observers" msgstr "Observateurs" -#: ../src/roster_window.py:542 +#: ../src/roster_window.py:544 #, python-format msgid "You are already in room %s" msgstr "Vous êtes déjà dans le salon %s" -#: ../src/roster_window.py:546 -#: ../src/roster_window.py:2262 +#: ../src/roster_window.py:548 ../src/roster_window.py:2280 msgid "You cannot join a room while you are invisible" -msgstr "Vous ne pouvez pas joindre un salon de discussion tant que vous êtes invisible." +msgstr "" +"Vous ne pouvez pas joindre un salon de discussion tant que vous êtes " +"invisible." #. the 'manage gc bookmarks' item is showed #. below to avoid duplicate code #. add -#: ../src/roster_window.py:735 +#: ../src/roster_window.py:748 #, python-format msgid "to %s account" msgstr "au compte %s" #. disco -#: ../src/roster_window.py:742 +#: ../src/roster_window.py:755 #, python-format msgid "using %s account" msgstr "en utilisant le compte %s" -#. new message +#. new chat #. for chat_with #. for single message -#: ../src/roster_window.py:750 -#: ../src/systray.py:194 -#: ../src/systray.py:201 +#: ../src/roster_window.py:763 ../src/systray.py:193 ../src/systray.py:198 #, python-format msgid "using account %s" msgstr "en utilisant le compte %s" #. profile, avatar -#: ../src/roster_window.py:759 +#: ../src/roster_window.py:772 #, python-format msgid "of account %s" msgstr "du compte %s" -#: ../src/roster_window.py:818 +#: ../src/roster_window.py:831 msgid "Manage Bookmarks..." msgstr "Gérer les Marque-pages..." -#: ../src/roster_window.py:842 +#: ../src/roster_window.py:855 #, python-format msgid "for account %s" msgstr "pour le compte %s" #. History manager -#: ../src/roster_window.py:863 +#: ../src/roster_window.py:876 msgid "History Manager" msgstr "Gestionnaire d'historique" -#: ../src/roster_window.py:872 +#: ../src/roster_window.py:885 msgid "_Join New Room" msgstr "Re_joindre un nouveau salon" -#: ../src/roster_window.py:1158 +#: ../src/roster_window.py:1159 #, python-format msgid "Transport \"%s\" will be removed" msgstr "La passerelle \"%s\" sera enlevée" -#: ../src/roster_window.py:1158 -msgid "You will no longer be able to send and receive messages to contacts from this transport." -msgstr "Vous ne pourrez plus envoyer et recevoir de messages aux contacts de cette passerelle." +#: ../src/roster_window.py:1159 +msgid "" +"You will no longer be able to send and receive messages to contacts from " +"this transport." +msgstr "" +"Vous ne pourrez plus envoyer et recevoir de messages aux contacts de cette " +"passerelle." -#: ../src/roster_window.py:1200 +#: ../src/roster_window.py:1201 msgid "Assign OpenPGP Key" msgstr "Assigner une clé OpenPGP" -#: ../src/roster_window.py:1201 +#: ../src/roster_window.py:1202 msgid "Select a key to apply to the contact" msgstr "Choisissez une clé à assigner au contact" @@ -3730,239 +4386,251 @@ msgstr "_Déconnecter" msgid "_Change Status Message" msgstr "_Changer le message d'état" -#: ../src/roster_window.py:1617 +#: ../src/roster_window.py:1621 msgid "Authorization has been sent" msgstr "L'Autorisation a été envoyée" -#: ../src/roster_window.py:1618 +#: ../src/roster_window.py:1622 #, python-format msgid "Now \"%s\" will know your status." msgstr "Désormais \"%s\" connaîtra votre état." -#: ../src/roster_window.py:1642 +#: ../src/roster_window.py:1646 msgid "Subscription request has been sent" msgstr "La requête d'inscription a été envoyée" -#: ../src/roster_window.py:1643 +#: ../src/roster_window.py:1647 #, python-format msgid "If \"%s\" accepts this request you will know his or her status." msgstr "Si \"%s\" accepte cette requête, vous connaîtrez son état." -#: ../src/roster_window.py:1654 +#: ../src/roster_window.py:1658 msgid "Authorization has been removed" msgstr "L'Autorisation a été supprimée" -#: ../src/roster_window.py:1655 +#: ../src/roster_window.py:1659 #, python-format msgid "Now \"%s\" will always see you as offline." msgstr "Dorénavant, \"%s\" vous verra toujours déconnecté." -#: ../src/roster_window.py:1824 +#: ../src/roster_window.py:1822 #, python-format msgid "Contact \"%s\" will be removed from your roster" msgstr "Le contact \"%s\" sera enlevé de la liste de contacts" -#: ../src/roster_window.py:1828 -msgid "By removing this contact you also remove authorization resulting in him or her always seeing you as offline." -msgstr "En supprimant ce contact, vous enlevez aussi son autorisation. Il/Elle vous verra donc toujours déconnecté." +#: ../src/roster_window.py:1826 +msgid "" +"By removing this contact you also remove authorization resulting in him or " +"her always seeing you as offline." +msgstr "" +"En supprimant ce contact, vous enlevez aussi son autorisation. Il/Elle vous " +"verra donc toujours déconnecté." -#: ../src/roster_window.py:1832 -msgid "By removing this contact you also by default remove authorization resulting in him or her always seeing you as offline." -msgstr "En supprimant ce contact, vous supprimez également son autorisation. Il vous verra donc toujours déconnecté." +#: ../src/roster_window.py:1830 +msgid "" +"By removing this contact you also by default remove authorization resulting " +"in him or her always seeing you as offline." +msgstr "" +"En supprimant ce contact, vous supprimez également son autorisation. Il vous " +"verra donc toujours déconnecté." -#: ../src/roster_window.py:1833 +#: ../src/roster_window.py:1831 msgid "I want this contact to know my status after removal" msgstr "Autoriser ce contact à connaître mon état après la suppression" -#: ../src/roster_window.py:1901 +#: ../src/roster_window.py:1899 msgid "Passphrase Required" msgstr "Mot de Passe Requis" -#: ../src/roster_window.py:1902 +#: ../src/roster_window.py:1900 #, python-format msgid "Enter GPG key passphrase for account %s." msgstr "Entrez votre mot de passe GPG pour le compte %s." -#: ../src/roster_window.py:1907 +#: ../src/roster_window.py:1905 msgid "Save passphrase" msgstr "Enregistrer le mot de passe" -#: ../src/roster_window.py:1915 +#: ../src/roster_window.py:1913 msgid "Wrong Passphrase" msgstr "mot de passe erroné" -#: ../src/roster_window.py:1916 +#: ../src/roster_window.py:1914 msgid "Please retype your GPG passphrase or press Cancel." msgstr "Ressaisissez votre mot de passe GPG ou pressez Annuler." -#: ../src/roster_window.py:1964 -#: ../src/roster_window.py:2021 +#: ../src/roster_window.py:1963 ../src/roster_window.py:2020 msgid "You are participating in one or more group chats" msgstr "Vous participez à un ou plusieurs salons" -#: ../src/roster_window.py:1965 -#: ../src/roster_window.py:2022 -msgid "Changing your status to invisible will result in disconnection from those group chats. Are you sure you want to go invisible?" -msgstr "Basculer en état invisible entraînera votre déconnexion ces salons. Êtes-vous sûr de vouloir être invisible ?" +#: ../src/roster_window.py:1964 ../src/roster_window.py:2021 +msgid "" +"Changing your status to invisible will result in disconnection from those " +"group chats. Are you sure you want to go invisible?" +msgstr "" +"Basculer en état invisible entraînera votre déconnexion ces salons. Êtes-" +"vous sûr de vouloir être invisible ?" -#: ../src/roster_window.py:1981 +#: ../src/roster_window.py:1980 msgid "No account available" msgstr "Aucun compte disponible" -#: ../src/roster_window.py:1982 +#: ../src/roster_window.py:1981 msgid "You must create an account before you can chat with other contacts." -msgstr "Vous devez créer un compte avant de pouvoir discuter avec d'autres contacts." +msgstr "" +"Vous devez créer un compte avant de pouvoir discuter avec d'autres contacts." -#: ../src/roster_window.py:2427 -#: ../src/roster_window.py:2433 +#: ../src/roster_window.py:2452 ../src/roster_window.py:2458 msgid "You have unread messages" msgstr "Vous avez des messages non-lus" -#: ../src/roster_window.py:2428 -#: ../src/roster_window.py:2434 -msgid "Messages will only be available for reading them later if you have history enabled." -msgstr "Les messages seront disponibles à une lecture ultérieure si l'archivage de l'historique est actif." +#: ../src/roster_window.py:2453 ../src/roster_window.py:2459 +msgid "" +"Messages will only be available for reading them later if you have history " +"enabled." +msgstr "" +"Les messages seront disponibles à une lecture ultérieure si l'archivage de " +"l'historique est actif." -#: ../src/roster_window.py:3184 +#: ../src/roster_window.py:3231 #, python-format msgid "Drop %s in group %s" msgstr "Mettre %s dans le groupe %s" -#: ../src/roster_window.py:3191 +#: ../src/roster_window.py:3238 #, python-format msgid "Make %s and %s metacontacts" msgstr "associer %s et %s en un contact groupé ?" -#: ../src/roster_window.py:3358 +#: ../src/roster_window.py:3408 msgid "Change Status Message..." msgstr "Changer le message d'état..." -#: ../src/systray.py:155 +#: ../src/systray.py:154 msgid "_Change Status Message..." msgstr "_Changer le message d'état..." -#: ../src/systray.py:236 +#: ../src/systray.py:231 msgid "Hide this menu" msgstr "Cacher ce menu" -#: ../src/systraywin32.py:266 -#: ../src/systraywin32.py:285 -#: ../src/tooltips.py:315 +#: ../src/systraywin32.py:261 ../src/systraywin32.py:280 #, python-format msgid "Gajim - %d unread message" msgid_plural "Gajim - %d unread messages" msgstr[0] "Gajim - %d message non-lu" msgstr[1] "Gajim - %d messages non-lus" -#: ../src/tooltips.py:321 -#, python-format -msgid "Gajim - %d unread single message" -msgid_plural "Gajim - %d unread single messages" +#: ../src/tooltips.py:326 +#, fuzzy, python-format +msgid " %d unread message" +msgid_plural " %d unread messages" +msgstr[0] "Gajim - %d message non-lu" +msgstr[1] "Gajim - %d messages non-lus" + +#: ../src/tooltips.py:332 +#, fuzzy, python-format +msgid " %d unread single message" +msgid_plural " %d unread single messages" msgstr[0] "Gajim - %d message simple non-lu" msgstr[1] "Gajim - %d messages simples non-lus" -#: ../src/tooltips.py:327 -#, python-format -msgid "Gajim - %d unread group chat message" -msgid_plural "Gajim - %d unread group chat messages" +#: ../src/tooltips.py:338 +#, fuzzy, python-format +msgid " %d unread group chat message" +msgid_plural " %d unread group chat messages" msgstr[0] "Gajim - %d message de salon non-lu" msgstr[1] "Gajim - %d messages de salon non-lus" -#: ../src/tooltips.py:333 -#, python-format -msgid "Gajim - %d unread private message" -msgid_plural "Gajim - %d unread private messages" +#: ../src/tooltips.py:344 +#, fuzzy, python-format +msgid " %d unread private message" +msgid_plural " %d unread private messages" msgstr[0] "Gajim - %d message privé non-lu" msgstr[1] "Gajim - %d messages privés non-lus" -#: ../src/tooltips.py:348 -#: ../src/tooltips.py:350 +#: ../src/tooltips.py:359 ../src/tooltips.py:361 #, python-format msgid "Gajim - %s" msgstr "Gajim - %s" -#: ../src/tooltips.py:383 +#: ../src/tooltips.py:395 msgid "Role: " -msgstr "Fonction : " +msgstr "Fonction : " -#: ../src/tooltips.py:384 +#: ../src/tooltips.py:396 msgid "Affiliation: " -msgstr "Affiliation : " +msgstr "Affiliation : " -#: ../src/tooltips.py:386 -#: ../src/tooltips.py:518 +#: ../src/tooltips.py:398 ../src/tooltips.py:537 msgid "Resource: " -msgstr "Ressource : " +msgstr "Ressource : " -#: ../src/tooltips.py:394 -#: ../src/tooltips.py:521 -#: ../src/tooltips.py:543 -#: ../src/tooltips.py:654 +#: ../src/tooltips.py:407 ../src/tooltips.py:540 ../src/tooltips.py:565 +#: ../src/tooltips.py:676 msgid "Status: " -msgstr "État : " +msgstr "État : " -#: ../src/tooltips.py:501 +#: ../src/tooltips.py:514 msgid "Subscription: " -msgstr "Inscription : " +msgstr "Inscription : " -#: ../src/tooltips.py:510 +#: ../src/tooltips.py:523 msgid "OpenPGP: " -msgstr "OpenPGP : " +msgstr "OpenPGP : " -#: ../src/tooltips.py:548 +#: ../src/tooltips.py:570 #, python-format msgid "Last status on %s" msgstr "Dernière connexion le %s" -#: ../src/tooltips.py:550 +#: ../src/tooltips.py:572 #, python-format msgid "Since %s" msgstr "Depuis %s" -#: ../src/tooltips.py:610 +#: ../src/tooltips.py:632 msgid "Download" msgstr "Télécharger" -#: ../src/tooltips.py:616 +#: ../src/tooltips.py:638 msgid "Upload" msgstr "Envoyer" -#: ../src/tooltips.py:623 +#: ../src/tooltips.py:645 msgid "Type: " -msgstr "Type : " +msgstr "Type : " -#: ../src/tooltips.py:629 +#: ../src/tooltips.py:651 msgid "Transferred: " -msgstr "Transféré : " +msgstr "Transféré : " -#: ../src/tooltips.py:632 -#: ../src/tooltips.py:653 +#: ../src/tooltips.py:654 ../src/tooltips.py:675 msgid "Not started" msgstr "Non commencé" -#: ../src/tooltips.py:636 +#: ../src/tooltips.py:658 msgid "Stopped" msgstr "Arrêté" -#: ../src/tooltips.py:638 -#: ../src/tooltips.py:641 +#: ../src/tooltips.py:660 ../src/tooltips.py:663 msgid "Completed" msgstr "Terminé" #. stalled is not paused. it is like 'frozen' it stopped alone -#: ../src/tooltips.py:649 +#: ../src/tooltips.py:671 msgid "Stalled" msgstr "Calé" -#: ../src/tooltips.py:651 +#: ../src/tooltips.py:673 msgid "Transferring" msgstr "En train de transférer" -#: ../src/tooltips.py:683 +#: ../src/tooltips.py:705 msgid "This service has not yet responded with detailed information" msgstr "Ce service n'a pas encore renvoyé d'informations détaillées" -#: ../src/tooltips.py:686 +#: ../src/tooltips.py:708 msgid "" "This service could not respond with detailed information.\n" "It is most likely legacy or broken" @@ -3971,102 +4639,111 @@ msgstr "" "Il est probablement défectueux ou cassé" #. keep identation -#: ../src/vcard.py:186 +#: ../src/vcard.py:188 msgid "Could not load image" msgstr "Impossible de charger l'image" -#: ../src/vcard.py:262 +#: ../src/vcard.py:289 msgid "?Client:Unknown" msgstr "Inconnu" -#: ../src/vcard.py:264 +#: ../src/vcard.py:291 msgid "?OS:Unknown" msgstr "Inconnu" -#: ../src/vcard.py:281 +#: ../src/vcard.py:308 #, python-format msgid "since %s" msgstr "depuis %s" -#: ../src/vcard.py:305 -msgid "This contact is interested in your presence information, but you are not interested in his/her presence" -msgstr "Ce contact s'intéresse à votre état mais vous ne vous intéressez au sien" +#: ../src/vcard.py:332 +msgid "" +"This contact is interested in your presence information, but you are not " +"interested in his/her presence" +msgstr "" +"Ce contact s'intéresse à votre état mais vous ne vous intéressez au sien" -#: ../src/vcard.py:307 -msgid "You are interested in the contact's presence information, but he/she is not interested in yours" -msgstr "Vous vous intéressez à l'état de ce contact mais il ne s'intéresse pas au votre" +#: ../src/vcard.py:334 +msgid "" +"You are interested in the contact's presence information, but he/she is not " +"interested in yours" +msgstr "" +"Vous vous intéressez à l'état de ce contact mais il ne s'intéresse pas au " +"votre" -#: ../src/vcard.py:309 +#: ../src/vcard.py:336 msgid "You and the contact are interested in each other's presence information" msgstr "Vous et ce contact vous intéressez à vos états réciproques" #. None -#: ../src/vcard.py:311 -msgid "You are not interested in the contact's presence, and neither he/she is interested in yours" -msgstr "Vous n'êtes pas intéressé par l'état de ce contact et il ne s'intéressepas au votre" +#: ../src/vcard.py:338 +msgid "" +"You are not interested in the contact's presence, and neither he/she is " +"interested in yours" +msgstr "" +"Vous n'êtes pas intéressé par l'état de ce contact et il ne s'intéressepas " +"au votre" -#: ../src/vcard.py:320 +#: ../src/vcard.py:347 msgid "You are waiting contact's answer about your subscription request" -msgstr "Vous attendez la réponse de ce contact pour votre demande de voir son état" +msgstr "" +"Vous attendez la réponse de ce contact pour votre demande de voir son état" -#: ../src/vcard.py:332 -#: ../src/vcard.py:355 +#: ../src/vcard.py:359 ../src/vcard.py:382 msgid " resource with priority " msgstr " ressource avec la priorité " -#: ../src/vcard.py:434 +#: ../src/vcard.py:458 msgid "Without a connection you can not publish your contact information." msgstr "Vous devez être connecté pour publier vos informations." -#: ../src/vcard.py:463 +#: ../src/vcard.py:491 msgid "Without a connection, you can not get your contact information." msgstr "Vous devez être connecté pour récupérer vos informations." -#: ../src/vcard.py:467 +#: ../src/vcard.py:495 msgid "Personal details" msgstr "Informations Personnelles" -#: ../src/common/check_paths.py:39 +#: ../src/common/check_paths.py:35 msgid "creating logs database" msgstr "création de la base de donnée de l'historique" -#: ../src/common/check_paths.py:84 -#: ../src/common/check_paths.py:95 -#: ../src/common/check_paths.py:102 +#: ../src/common/check_paths.py:82 ../src/common/check_paths.py:93 +#: ../src/common/check_paths.py:100 #, python-format msgid "%s is file but it should be a directory" msgstr "%s est un fichier mais devrait être un répertoire" -#: ../src/common/check_paths.py:85 -#: ../src/common/check_paths.py:96 -#: ../src/common/check_paths.py:103 -#: ../src/common/check_paths.py:110 +#: ../src/common/check_paths.py:83 ../src/common/check_paths.py:94 +#: ../src/common/check_paths.py:101 ../src/common/check_paths.py:109 msgid "Gajim will now exit" msgstr "Gajim va maintenant s'arrêter" -#: ../src/common/check_paths.py:109 +#: ../src/common/check_paths.py:108 #, python-format msgid "%s is directory but should be file" msgstr "%s est un répertoire mais devrait être un fichier" -#: ../src/common/check_paths.py:125 +#: ../src/common/check_paths.py:124 #, python-format msgid "creating %s directory" msgstr "crée le répertoire %s" -#: ../src/common/exceptions.py:35 +#: ../src/common/exceptions.py:32 msgid "pysqlite2 (aka python-pysqlite2) dependency is missing. Exiting..." msgstr "pysqlite2 (ou python-pysqlite2) n'est pas installé.Quitte..." -#: ../src/common/exceptions.py:43 +#: ../src/common/exceptions.py:40 msgid "Service not available: Gajim is not running, or remote_control is False" -msgstr "Service indisponible : Gajim n'est pas lancé ou remote_control est False" +msgstr "" +"Service indisponible : Gajim n'est pas lancé ou remote_control est False" -#: ../src/common/exceptions.py:51 +#: ../src/common/exceptions.py:48 msgid "D-Bus is not present on this machine or python module is missing" msgstr "D-Bus n'est pas présent sur cette machine" -#: ../src/common/exceptions.py:59 +#: ../src/common/exceptions.py:56 msgid "" "Session bus is not available.\n" "Try reading http://trac.gajim.org/wiki/GajimDBus" @@ -4074,78 +4751,147 @@ msgstr "" "Le bus de session n'est pas disponible.\n" "Essayer en lisant http://trac.gajim.org/wiki/GajimDBus" -#: ../src/common/config.py:53 +#: ../src/common/config.py:51 msgid "Use DBus and Notification-Daemon to show notifications" msgstr "Utilise DBus et Notification-Daemon pour afficher les notifications" -#: ../src/common/config.py:57 +#: ../src/common/config.py:55 msgid "Time in minutes, after which your status changes to away." msgstr "Temps en minutes, au bout duquel votre état basculera absent." -#: ../src/common/config.py:58 +#: ../src/common/config.py:56 msgid "Away as a result of being idle" msgstr "Absent car inactif" -#: ../src/common/config.py:60 +#: ../src/common/config.py:58 msgid "Time in minutes, after which your status changes to not available." msgstr "Temps en minutes après lequel votre état basculera non disponible." -#: ../src/common/config.py:61 +#: ../src/common/config.py:59 msgid "Not available as a result of being idle" msgstr "Non disponible car inactif" -#: ../src/common/config.py:88 -msgid "Treat * / _ pairs as possible formatting characters." -msgstr "Traiter les paires de * / _ comme des éventuels caractères de formatage." +#: ../src/common/config.py:77 +msgid "List (space separated) of rows (accounts and groups) that are collapsed" +msgstr "" -#: ../src/common/config.py:89 -msgid "If True, do not remove */_ . So *abc* will be bold but with * * not removed." -msgstr "Si vrai ne supprime pas */_ . Donc *abc* sera en gras mais sans supprimer les * *" +#: ../src/common/config.py:83 +msgid "" +"'always' - print time for every message.\n" +"'sometimes' - print time every print_ichat_every_foo_minutes minute.\n" +"'never' - never print time." +msgstr "" + +#: ../src/common/config.py:84 +msgid "" +"Value of fuzziness from 1 to 4 or 0 to disable fuzzyclock. 1 is the most " +"precise clock, 4 the less precise one." +msgstr "" + +#: ../src/common/config.py:87 +msgid "Treat * / _ pairs as possible formatting characters." +msgstr "" +"Traiter les paires de * / _ comme des éventuels caractères de formatage." + +#: ../src/common/config.py:88 +msgid "" +"If True, do not remove */_ . So *abc* will be bold but with * * not removed." +msgstr "" +"Si vrai ne supprime pas */_ . Donc *abc* sera en gras mais sans supprimer " +"les * *" + +#: ../src/common/config.py:98 +msgid "" +"Character to add after nickname when using nick completion (tab) in group " +"chat" +msgstr "" + +#: ../src/common/config.py:99 +msgid "" +"Character to propose to add after desired nickname when desired nickname is " +"used by someone else in group chat" +msgstr "" #: ../src/common/config.py:131 msgid "Add * and [n] in roster title?" msgstr "Ajouter * et [n] au titre de la liste des contacts ?" #: ../src/common/config.py:132 -msgid "How many lines to remember from previous conversation when a chat tab/window is reopened." -msgstr "Nombre de lignes de l'historique à afficher lorsque l'onglet ou la fenêtre de discussion est ouvert à nouveau." +msgid "" +"How many lines to remember from previous conversation when a chat tab/window " +"is reopened." +msgstr "" +"Nombre de lignes de l'historique à afficher lorsque l'onglet ou la fenêtre " +"de discussion est ouvert à nouveau." #: ../src/common/config.py:133 msgid "How many minutes should last lines from previous conversation last." -msgstr "Durée de vie en minutes des dernières lignes des conversations précédentes." +msgstr "" +"Durée de vie en minutes des dernières lignes des conversations précédentes." #: ../src/common/config.py:134 -msgid "Send message on Ctrl+Enter and with Enter make new line (Mirabilis ICQ Client default behaviour)." -msgstr "Envoyer le message avec Ctrl+Entrée et aller à la ligne avec Entrée (comportement par défaut du client ICQ de Mirabilis)." +msgid "" +"Send message on Ctrl+Enter and with Enter make new line (Mirabilis ICQ " +"Client default behaviour)." +msgstr "" +"Envoyer le message avec Ctrl+Entrée et aller à la ligne avec Entrée " +"(comportement par défaut du client ICQ de Mirabilis)." #: ../src/common/config.py:136 msgid "How many lines to store for Ctrl+KeyUP." -msgstr "Nombre de lignes à stocker pour le rappel des lignes précédentes (avec Ctrl+flèche vers le haut)." +msgstr "" +"Nombre de lignes à stocker pour le rappel des lignes précédentes (avec Ctrl" +"+flèche vers le haut)." #: ../src/common/config.py:139 #, python-format -msgid "Either custom url with %s in it where %s is the word/phrase or 'WIKTIONARY' which means use wiktionary." -msgstr "Soit une url personnalisée contenant %s où %s est le mot/la phrase, soit \"WIKTIONARY\", ce qui signifie l'utilisation de wikitionary." +msgid "" +"Either custom url with %s in it where %s is the word/phrase or 'WIKTIONARY' " +"which means use wiktionary." +msgstr "" +"Soit une url personnalisée contenant %s où %s est le mot/la phrase, soit " +"\"WIKTIONARY\", ce qui signifie l'utilisation de wikitionary." #: ../src/common/config.py:142 msgid "If checked, Gajim can be controlled remotely using gajim-remote." -msgstr "Si cette case est cochée, Gajim pourra être contrôlé à distance via gajim-remote." +msgstr "" +"Si cette case est cochée, Gajim pourra être contrôlé à distance via gajim-" +"remote." + +#: ../src/common/config.py:145 +msgid "" +"When not printing time for every message (print_time==sometimes), print it " +"every x minutes" +msgstr "" #: ../src/common/config.py:146 msgid "Ask before closing a group chat tab/window." -msgstr "Demander avant de fermer un onglet ou une fenêtre de discussion de salon." +msgstr "" +"Demander avant de fermer un onglet ou une fenêtre de discussion de salon." #: ../src/common/config.py:147 -msgid "Always ask before closing group chat tab/window in this space separated list of room jids." -msgstr "Toujours demander avant de fermer les salons de cette liste séparés par des espaces." +msgid "" +"Always ask before closing group chat tab/window in this space separated list " +"of room jids." +msgstr "" +"Toujours demander avant de fermer les salons de cette liste séparés par des " +"espaces." #: ../src/common/config.py:148 -msgid "Never ask before closing group chat tab/window in this space separated list of room jids." -msgstr "Ne jamais demander avant de fermer les salons de cette liste séparés par des espaces." +msgid "" +"Never ask before closing group chat tab/window in this space separated list " +"of room jids." +msgstr "" +"Ne jamais demander avant de fermer les salons de cette liste séparés par des " +"espaces." #: ../src/common/config.py:151 -msgid "Overrides the host we send for File Transfer in case of address translation/port forwarding." -msgstr "Outrepasse le nom d'hôte pour les transferts de fichier en cas de traduction d'adresse/transfert de port." +msgid "" +"Overrides the host we send for File Transfer in case of address translation/" +"port forwarding." +msgstr "" +"Outrepasse le nom d'hôte pour les transferts de fichier en cas de traduction " +"d'adresse/transfert de port." #: ../src/common/config.py:153 msgid "IEC standard says KiB = 1024 bytes, KB = 1000 bytes." @@ -4156,7 +4902,8 @@ msgid "Show tab when only one conversation?" msgstr "Montrer l'onglet quand il n'y a qu'une discussion ?" #: ../src/common/config.py:162 -msgid "Show tab border if one conversation?" +#, fuzzy +msgid "Show tabbed notebook border in chat windows?" msgstr "Montrer l'onglet quand il n'y a qu'une discussion ?" #: ../src/common/config.py:163 @@ -4164,656 +4911,627 @@ msgid "Show close button in tab?" msgstr "Afficher le bouton fermer sur l'onglet ?" #: ../src/common/config.py:176 -msgid "A semicolon-separated list of words that will be highlighted in multi-user chat." -msgstr "Une liste de mots séparés par des points-virgules qui seront mis en surbrillance dans les salons." +msgid "" +"A semicolon-separated list of words that will be highlighted in multi-user " +"chat." +msgstr "" +"Une liste de mots séparés par des points-virgules qui seront mis en " +"surbrillance dans les salons." #: ../src/common/config.py:177 -msgid "If True, quits Gajim when X button of Window Manager is clicked. This setting is taken into account only if trayicon is used." -msgstr "Si vrai, quitte Gajim quand on clique sur le bouton X du gestionnaire de fenêtre. Cette option n'est prise en compte que si l'icône dans la barre de notification est utilisée." +msgid "" +"If True, quits Gajim when X button of Window Manager is clicked. This " +"setting is taken into account only if trayicon is used." +msgstr "" +"Si vrai, quitte Gajim quand on clique sur le bouton X du gestionnaire de " +"fenêtre. Cette option n'est prise en compte que si l'icône dans la barre de " +"notification est utilisée." #: ../src/common/config.py:178 msgid "If True, Gajim registers for xmpp:// on each startup." msgstr "Si vrai, Gajim s'enregistre pour xmpp:// à chaque démarrage." #: ../src/common/config.py:179 -msgid "If True, Gajim will display an icon on each tab containing unread messages. Depending on the theme, this icon may be animated." -msgstr "Si vrai, Gajim affichera dans chaque onglet une icône contenant les messages non-lus. En fonction du thème, cette icône peut être animée." +msgid "" +"If True, Gajim will display an icon on each tab containing unread messages. " +"Depending on the theme, this icon may be animated." +msgstr "" +"Si vrai, Gajim affichera dans chaque onglet une icône contenant les messages " +"non-lus. En fonction du thème, cette icône peut être animée." #: ../src/common/config.py:180 -msgid "If True, Gajim will display the status message, if not empty, for every contact under the contact name in roster window" -msgstr "Si vrai, Gajim affichera le message d'état, s'il n'est pas vide, sous le nom de chaque contact dans la fenêtre principale." +msgid "" +"If True, Gajim will display the status message, if not empty, for every " +"contact under the contact name in roster window" +msgstr "" +"Si vrai, Gajim affichera le message d'état, s'il n'est pas vide, sous le nom " +"de chaque contact dans la fenêtre principale." #: ../src/common/config.py:182 -msgid "If True, Gajim will ask for avatar each contact that did not have an avatar last time or has one cached that is too old." -msgstr "Si vrai demandera son avatar à chaque contact qui n'en avait pas la fois précédente ou dont la version en cache a expiré." +msgid "" +"If True, Gajim will ask for avatar each contact that did not have an avatar " +"last time or has one cached that is too old." +msgstr "" +"Si vrai demandera son avatar à chaque contact qui n'en avait pas la fois " +"précédente ou dont la version en cache a expiré." + +#: ../src/common/config.py:183 +#, fuzzy +msgid "" +"If False, Gajim will no longer print status line in chats when a contact " +"changes his or her status and/or his or her status message." +msgstr "" +"Si faux, vous ne verrez plus les lignes d'état dans les conversations quand " +"un contact modifie son état et/ou son message d'état." -#. FIXME: remove you and make it Gajim will not; and/or his or *her* status messages #: ../src/common/config.py:184 -msgid "If False, you will no longer see status line in chats when a contact changes his or her status and/or his status message." -msgstr "Si faux, vous ne verrez plus les lignes d'état dans les conversations quand un contact modifie son état et/ou son message d'état." +msgid "" +"can be \"none\", \"all\" or \"in_and_out\". If \"none\", Gajim will no " +"longer print status line in groupchats when a member changes his or her " +"status and/or his or her status message. If \"all\" Gajim will print all " +"status messages. If \"in_and_out\", gajim will only print FOO enters/leaves " +"room" +msgstr "" + +#: ../src/common/config.py:187 +msgid "Don't show avatar for the transport itself." +msgstr "" #: ../src/common/config.py:189 -msgid "If True and installed GTK+ and PyGTK versions are at least 2.8, make the window flash (the default behaviour in most Window Managers) when holding pending events." -msgstr "Si vrai et que les versions de GTK+ et PyGTK sont au moins 2.8, fait clignoter (comportement par défaut dans la plupart des gestionnaires de fenêtres) la fenêtre quand elle contient des évènements non lus." +msgid "" +"If True and installed GTK+ and PyGTK versions are at least 2.8, make the " +"window flash (the default behaviour in most Window Managers) when holding " +"pending events." +msgstr "" +"Si vrai et que les versions de GTK+ et PyGTK sont au moins 2.8, fait " +"clignoter (comportement par défaut dans la plupart des gestionnaires de " +"fenêtres) la fenêtre quand elle contient des évènements non lus." #: ../src/common/config.py:191 -msgid "Jabberd1.4 does not like sha info when one join a password protected room. Turn this option to False to stop sending sha info in groupchat presences" -msgstr "Jabberd1.4 n'aime pas l'information sha quand on rejoint un salon protégé par un mot de passe. Passer cette option a Faux pour ne plus envoyer l'information sha dans les présences des salons" +msgid "" +"Jabberd1.4 does not like sha info when one join a password protected room. " +"Turn this option to False to stop sending sha info in groupchat presences" +msgstr "" +"Jabberd1.4 n'aime pas l'information sha quand on rejoint un salon protégé " +"par un mot de passe. Passer cette option a Faux pour ne plus envoyer " +"l'information sha dans les présences des salons" -#: ../src/common/config.py:193 +#. always, never, peracct, pertype should not be translated +#: ../src/common/config.py:194 msgid "" "Controls the window where new messages are placed.\n" "'always' - All messages are sent to a single window.\n" "'never' - All messages get their own window.\n" "'peracct' - Messages for each account are sent to a specific window.\n" -"'pertype' - Each message type (e.g., chats vs. groupchats) are sent to a specific window. Note, changing this option requires restarting Gajim before the changes will take effect" +"'pertype' - Each message type (e.g., chats vs. groupchats) are sent to a " +"specific window. Note, changing this option requires restarting Gajim before " +"the changes will take effect" msgstr "" "Contrôle la fenêtre dans laquelle sont placés les nouvelles conversassions.\n" "'always' - Toutes les conversassions dans une unique fenêtre.\n" "'never' - Toutes les conversassions dans des fenêtres séparées.\n" -"'peracct' - Toutes les conversassions d'un même compte dans la même fenêtre.\n" -"'pertype' - Toutes les conversassions d'un même type (discussion, salon) dans la même fenêtre." - -#: ../src/common/config.py:194 -msgid "If False, you will no longer see the avatar in the chat window" -msgstr "Si Faux, vous ne verrez plus les avatars dans les fenêtres de discussions" +"'peracct' - Toutes les conversassions d'un même compte dans la même " +"fenêtre.\n" +"'pertype' - Toutes les conversassions d'un même type (discussion, salon) " +"dans la même fenêtre." #: ../src/common/config.py:195 +msgid "If False, you will no longer see the avatar in the chat window" +msgstr "" +"Si Faux, vous ne verrez plus les avatars dans les fenêtres de discussions" + +#: ../src/common/config.py:196 msgid "If True, pressing the escape key closes a tab/window" msgstr "Si vrai, appuyer sur la touche echap pour fermer un onglet/une fenêtre" -#: ../src/common/config.py:196 +#: ../src/common/config.py:197 msgid "Hides the buttons in group chat window" msgstr "Cacher les boutons dans la fenêtre des salons" -#: ../src/common/config.py:197 +#: ../src/common/config.py:198 msgid "Hides the buttons in two persons chat window" msgstr "Cache les boutons dans les fenêtres de discussions" -#: ../src/common/config.py:198 +#: ../src/common/config.py:199 msgid "Hides the banner in a group chat window" msgstr "Cacher les boutons dans la fenêtre de discussion" -#: ../src/common/config.py:199 +#: ../src/common/config.py:200 msgid "Hides the banner in two persons chat window" msgstr "Cache la bannière dans les fenêtres de discussions" -#: ../src/common/config.py:200 +#: ../src/common/config.py:201 msgid "Hides the room occupants list in groupchat window" -msgstr "Cache la liste des occupants du salon dans les fenêtres des salons de discussion" +msgstr "" +"Cache la liste des occupants du salon dans les fenêtres des salons de " +"discussion" + +#: ../src/common/config.py:202 +msgid "Merge consecutive nickname in chat window" +msgstr "" + +#: ../src/common/config.py:203 +msgid "Indentation when using merge consecutive nickame" +msgstr "" + +#: ../src/common/config.py:204 +msgid "List of colors that will be used to color nicknames in groupchats" +msgstr "" #. yes, no, ask -#: ../src/common/config.py:233 +#: ../src/common/config.py:237 msgid "Jabberd2 workaround" msgstr "Contournement de bug de jabberd2" -#: ../src/common/config.py:237 -msgid "If checked, Gajim will use your IP and proxies defined in file_transfer_proxies option for file transfer." -msgstr "Si cette case est cochée, Gajim utilisera votre IP et les proxies définis dans l'option file_transfer_proxies pour les transferts de fichiers." +#: ../src/common/config.py:241 +msgid "" +"If checked, Gajim will use your IP and proxies defined in " +"file_transfer_proxies option for file transfer." +msgstr "" +"Si cette case est cochée, Gajim utilisera votre IP et les proxies définis " +"dans l'option file_transfer_proxies pour les transferts de fichiers." -#: ../src/common/config.py:290 +#: ../src/common/config.py:297 msgid "Sleeping" msgstr "Dors" -#: ../src/common/config.py:291 +#: ../src/common/config.py:298 msgid "Back soon" msgstr "Bientôt de retour" -#: ../src/common/config.py:291 +#: ../src/common/config.py:298 msgid "Back in some minutes." msgstr "De retour dans quelques minutes." -#: ../src/common/config.py:292 +#: ../src/common/config.py:299 msgid "Eating" msgstr "Mange" -#: ../src/common/config.py:292 +#: ../src/common/config.py:299 msgid "I'm eating, so leave me a message." msgstr "Je mange, donc laissez moi un message." -#: ../src/common/config.py:293 +#: ../src/common/config.py:300 msgid "Movie" msgstr "Film" -#: ../src/common/config.py:293 +#: ../src/common/config.py:300 msgid "I'm watching a movie." msgstr "Je regarde un film." -#: ../src/common/config.py:294 +#: ../src/common/config.py:301 msgid "Working" msgstr "Travail" -#: ../src/common/config.py:294 +#: ../src/common/config.py:301 msgid "I'm working." msgstr "Je travaille." -#: ../src/common/config.py:295 +#: ../src/common/config.py:302 msgid "Phone" msgstr "Téléphone" -#: ../src/common/config.py:295 +#: ../src/common/config.py:302 msgid "I'm on the phone." msgstr "Je suis au téléphone." -#: ../src/common/config.py:296 +#: ../src/common/config.py:303 msgid "Out" msgstr "Dehors" -#: ../src/common/config.py:296 +#: ../src/common/config.py:303 msgid "I'm out enjoying life" msgstr "Je suis dehors à profiter de la vie" -#: ../src/common/config.py:305 -msgid "Sound to play when a MUC message contains one of the words in muc_highlight_words, or when a MUC message contains your nickname." -msgstr "Son à jouer lorsqu'un message de salon contient un des mots de muc_highlight_words, ou lorsqu'un message de salon contient votre surnom." +#: ../src/common/config.py:312 +msgid "" +"Sound to play when a MUC message contains one of the words in " +"muc_highlight_words, or when a MUC message contains your nickname." +msgstr "" +"Son à jouer lorsqu'un message de salon contient un des mots de " +"muc_highlight_words, ou lorsqu'un message de salon contient votre surnom." -#: ../src/common/config.py:306 -msgid "Sound to play when any MUC message arrives. (This setting is taken into account only if notify_on_all_muc_messages is True)" -msgstr "Son à jouer lorsqu'un message quelconque de salon arrive. (Ce réglage est pris en compte seulement si notify_on_all_muc_messages est vrai)" +#: ../src/common/config.py:313 +msgid "" +"Sound to play when any MUC message arrives. (This setting is taken into " +"account only if notify_on_all_muc_messages is True)" +msgstr "" +"Son à jouer lorsqu'un message quelconque de salon arrive. (Ce réglage est " +"pris en compte seulement si notify_on_all_muc_messages est vrai)" -#: ../src/common/config.py:314 -#: ../src/common/optparser.py:181 +#: ../src/common/config.py:321 ../src/common/optparser.py:185 msgid "green" msgstr "Vert" -#: ../src/common/config.py:318 -#: ../src/common/optparser.py:167 +#: ../src/common/config.py:325 ../src/common/optparser.py:171 msgid "grocery" msgstr "épicerie" -#: ../src/common/config.py:322 +#: ../src/common/config.py:329 msgid "human" msgstr "Humain" -#: ../src/common/config.py:326 +#: ../src/common/config.py:333 msgid "marine" msgstr "Marine" -#: ../src/common/connection.py:152 +#: ../src/common/connection.py:172 #, python-format msgid "Connection with account \"%s\" has been lost" msgstr "La connexion du compte \"%s\" a été perdue" -#: ../src/common/connection.py:153 +#: ../src/common/connection.py:173 msgid "To continue sending and receiving messages, you will need to reconnect." -msgstr "Pour continuer à envoyer et recevoir des messages, vous devez vous reconnecter." +msgstr "" +"Pour continuer à envoyer et recevoir des messages, vous devez vous " +"reconnecter." -#: ../src/common/connection.py:169 -#: ../src/common/connection.py:195 +#: ../src/common/connection.py:185 ../src/common/connection.py:211 #, python-format msgid "Transport %s answered wrongly to register request." msgstr "Le transport %s a mal répondu a la requête " #. wrong answer -#: ../src/common/connection.py:194 +#: ../src/common/connection.py:210 msgid "Invalid answer" msgstr "Réponse non valide" -#: ../src/common/connection.py:348 -#: ../src/common/connection.py:384 -#: ../src/common/connection.py:754 +#: ../src/common/connection.py:397 ../src/common/connection.py:433 +#: ../src/common/connection.py:857 #, python-format msgid "Could not connect to \"%s\"" msgstr "Impossible de se connecter à \"%s\"" -#: ../src/common/connection.py:362 +#: ../src/common/connection.py:411 #, python-format msgid "Connected to server %s:%s with %s" msgstr "Connecté au serveur %s:%s avec %s" -#: ../src/common/connection.py:385 +#: ../src/common/connection.py:434 msgid "Check your connection or try again later" msgstr "Vérifiez votre connexion ou réessayer plus tard" -#: ../src/common/connection.py:410 +#: ../src/common/connection.py:459 #, python-format msgid "Authentication failed with \"%s\"" msgstr "Echec de l'authentification avec \"%s\"" -#: ../src/common/connection.py:411 +#: ../src/common/connection.py:460 msgid "Please check your login and password for correctness." msgstr "Vérifiez si votre identifiant et votre mot de passe sont corrects." #. We didn't set a passphrase -#: ../src/common/connection.py:487 +#: ../src/common/connection.py:573 msgid "OpenPGP passphrase was not given" msgstr "Mot de passe OpenPGP non renseigné" #. %s is the account name here -#: ../src/common/connection.py:489 +#: ../src/common/connection.py:575 #, python-format msgid "You will be connected to %s without OpenPGP." msgstr "Vous serez connecté à %s sans OpenPGP." #. do not show I'm invisible! -#: ../src/common/connection.py:526 +#: ../src/common/connection.py:612 msgid "invisible" msgstr "invisible" -#: ../src/common/connection.py:527 +#: ../src/common/connection.py:613 msgid "offline" msgstr "Déconnecté" -#: ../src/common/connection.py:528 +#: ../src/common/connection.py:614 #, python-format msgid "I'm %s" msgstr "Je suis %s" #. we're not english -#: ../src/common/connection.py:611 +#: ../src/common/connection.py:699 msgid "[This message is encrypted]" msgstr "[ce message est chiffré]" -#: ../src/common/connection.py:649 +#: ../src/common/connection.py:742 #, python-format msgid "" "Subject: %s\n" "%s" msgstr "" -"Sujet : %s\n" +"Sujet : %s\n" "%s" -#: ../src/common/connection.py:699 +#: ../src/common/connection.py:795 ../src/common/connection_handlers.py:1511 msgid "I would like to add you to my roster." msgstr "Je souhaiterais vous ajouter à ma liste de contacts." -#: ../src/common/helpers.py:103 +#: ../src/common/connection_handlers.py:49 +#, fuzzy +msgid "Unable to load idle module" +msgstr "Impossible de rejoindre le salon" + +#: ../src/common/connection_handlers.py:581 +#, python-format +msgid "Registration information for transport %s has not arrived in time" +msgstr "" +"L'information d'enregistrement pour la passerelle %s n'est pas arrivée à " +"temps" + +#. password required to join +#. we are banned +#. room does not exist +#: ../src/common/connection_handlers.py:1450 +#: ../src/common/connection_handlers.py:1453 +#: ../src/common/connection_handlers.py:1456 +#: ../src/common/connection_handlers.py:1459 +#: ../src/common/connection_handlers.py:1462 +#: ../src/common/connection_handlers.py:1465 +#: ../src/common/connection_handlers.py:1473 +msgid "Unable to join room" +msgstr "Impossible de rejoindre le salon" + +#: ../src/common/connection_handlers.py:1451 +msgid "A password is required to join this room." +msgstr "Un mot de passe est requis pour rejoindre ce salon." + +#: ../src/common/connection_handlers.py:1454 +msgid "You are banned from this room." +msgstr "Vous êtes banni de ce salon." + +#: ../src/common/connection_handlers.py:1457 +msgid "Such room does not exist." +msgstr "Ce salon n'existe pas." + +#: ../src/common/connection_handlers.py:1460 +msgid "Room creation is restricted." +msgstr "La création de salon est réservée aux administrateurs." + +#: ../src/common/connection_handlers.py:1463 +msgid "Your registered nickname must be used." +msgstr "Vous devez utiliser le surnom donné lors de l'enregistrement." + +#: ../src/common/connection_handlers.py:1466 +msgid "You are not in the members list." +msgstr "Vous n'êtes pas dans la liste des membres." + +#: ../src/common/connection_handlers.py:1474 +msgid "" +"Your desired nickname is in use or registered by another occupant.\n" +"Please specify another nickname below:" +msgstr "" +"Le surnom que vous vouliez utiliser est actuellement utilisé ou enregistré " +"par un autre occupant.\n" +"Veuillez entrer un autre surnom ci-dessous :" + +#. BE CAREFUL: no con.updateRosterItem() in a callback +#: ../src/common/connection_handlers.py:1519 +#, python-format +msgid "we are now subscribed to %s" +msgstr "nous sommes maintenant inscrits chez %s" + +#: ../src/common/connection_handlers.py:1521 +#, python-format +msgid "unsubscribe request from %s" +msgstr "Requête de désinscription de la part de %s" + +#: ../src/common/connection_handlers.py:1523 +#, python-format +msgid "we are now unsubscribed from %s" +msgstr "nous ne sommes plus dans la liste de %s" + +#: ../src/common/connection_handlers.py:1680 +#, fuzzy, python-format +msgid "" +"JID %s is not RFC compliant. It will not be added to your roster. Use roster " +"management tools such as http://jru.jabberstudio.org/ to remove it" +msgstr "" +"je Jid %s ne respecte pas la norma RFC. Il ne sera pas ajouté a votre liste " +"de contact. Utiliser un outil de gestion de liste de contact tel que http://" +"jru.jabberstudio.org/ pour le supprimer" + +#: ../src/common/helpers.py:100 msgid "Invalid character in username." msgstr "Caractère non valide dans le nom d'utilisateur." -#: ../src/common/helpers.py:108 +#: ../src/common/helpers.py:105 msgid "Server address required." msgstr "Adresse du serveur requise." -#: ../src/common/helpers.py:113 +#: ../src/common/helpers.py:110 msgid "Invalid character in hostname." msgstr "Caractère non valide dans le nom d'hôte." -#: ../src/common/helpers.py:119 +#: ../src/common/helpers.py:116 msgid "Invalid character in resource." msgstr "Caractère non valide dans la ressource." #. GiB means gibibyte -#: ../src/common/helpers.py:159 +#: ../src/common/helpers.py:156 #, python-format msgid "%s GiB" msgstr "%s Go" #. GB means gigabyte -#: ../src/common/helpers.py:162 +#: ../src/common/helpers.py:159 #, python-format msgid "%s GB" msgstr "%s Go" #. MiB means mibibyte -#: ../src/common/helpers.py:166 +#: ../src/common/helpers.py:163 #, python-format msgid "%s MiB" msgstr "%s Mo" #. MB means megabyte -#: ../src/common/helpers.py:169 +#: ../src/common/helpers.py:166 #, python-format msgid "%s MB" msgstr "%s Mo" #. KiB means kibibyte -#: ../src/common/helpers.py:173 +#: ../src/common/helpers.py:170 #, python-format msgid "%s KiB" -msgstr "%s Ko" +msgstr "%s Kio" #. KB means kilo bytes -#: ../src/common/helpers.py:176 +#: ../src/common/helpers.py:173 #, python-format msgid "%s KB" msgstr "%s Ko" #. B means bytes -#: ../src/common/helpers.py:179 +#: ../src/common/helpers.py:176 #, python-format msgid "%s B" msgstr "%s o" -#: ../src/common/helpers.py:189 +#: ../src/common/helpers.py:205 msgid "_Busy" msgstr "O_ccupé" -#: ../src/common/helpers.py:191 +#: ../src/common/helpers.py:207 msgid "Busy" msgstr "Occupé" -#: ../src/common/helpers.py:194 +#: ../src/common/helpers.py:210 msgid "_Not Available" msgstr "_Non disponible" -#: ../src/common/helpers.py:196 +#: ../src/common/helpers.py:212 msgid "Not Available" msgstr "Non disponible" -#: ../src/common/helpers.py:199 +#: ../src/common/helpers.py:215 msgid "_Free for Chat" msgstr "Dis_ponible pour discuter" -#: ../src/common/helpers.py:201 +#: ../src/common/helpers.py:217 msgid "Free for Chat" msgstr "Disponible pour discuter" -#: ../src/common/helpers.py:204 +#: ../src/common/helpers.py:220 msgid "_Available" msgstr "_Disponible" -#: ../src/common/helpers.py:206 +#: ../src/common/helpers.py:222 msgid "Available" msgstr "Disponible" -#: ../src/common/helpers.py:208 +#: ../src/common/helpers.py:224 msgid "Connecting" msgstr "Connexion" -#: ../src/common/helpers.py:211 +#: ../src/common/helpers.py:227 msgid "A_way" msgstr "_Absent" -#: ../src/common/helpers.py:213 +#: ../src/common/helpers.py:229 msgid "Away" msgstr "Absent" -#: ../src/common/helpers.py:216 +#: ../src/common/helpers.py:232 msgid "_Offline" msgstr "Déc_onnecté" -#: ../src/common/helpers.py:218 +#: ../src/common/helpers.py:234 msgid "Offline" msgstr "Déconnecté" -#: ../src/common/helpers.py:221 +#: ../src/common/helpers.py:237 msgid "_Invisible" msgstr "_Invisible" -#: ../src/common/helpers.py:223 -msgid "Invisible" -msgstr "Invisible" - -#: ../src/common/helpers.py:227 +#: ../src/common/helpers.py:243 msgid "?contact has status:Unknown" msgstr "Inconnu" -#: ../src/common/helpers.py:229 +#: ../src/common/helpers.py:245 msgid "?contact has status:Has errors" msgstr "a une erreur" -#: ../src/common/helpers.py:234 +#: ../src/common/helpers.py:250 msgid "?Subscription we already have:None" msgstr "Aucune" -#: ../src/common/helpers.py:236 +#: ../src/common/helpers.py:252 msgid "To" msgstr "À" -#: ../src/common/helpers.py:238 +#: ../src/common/helpers.py:254 msgid "From" msgstr "De" -#: ../src/common/helpers.py:240 +#: ../src/common/helpers.py:256 msgid "Both" msgstr "Les deux" -#: ../src/common/helpers.py:248 +#: ../src/common/helpers.py:264 msgid "?Ask (for Subscription):None" msgstr "Aucune" -#: ../src/common/helpers.py:250 +#: ../src/common/helpers.py:266 msgid "Subscribe" msgstr "S'inscrire" -#: ../src/common/helpers.py:259 +#: ../src/common/helpers.py:275 msgid "?Group Chat Contact Role:None" msgstr "Aucun" -#: ../src/common/helpers.py:262 +#: ../src/common/helpers.py:278 msgid "Moderators" msgstr "Modérateurs" -#: ../src/common/helpers.py:264 +#: ../src/common/helpers.py:280 msgid "Moderator" msgstr "Modérateur" -#: ../src/common/helpers.py:267 +#: ../src/common/helpers.py:283 msgid "Participants" msgstr "Participants" -#: ../src/common/helpers.py:269 +#: ../src/common/helpers.py:285 msgid "Participant" msgstr "Participant" -#: ../src/common/helpers.py:272 +#: ../src/common/helpers.py:288 msgid "Visitors" msgstr "Visiteurs" -#: ../src/common/helpers.py:274 +#: ../src/common/helpers.py:290 msgid "Visitor" msgstr "Visiteur" -#: ../src/common/helpers.py:310 +#: ../src/common/helpers.py:326 msgid "is paying attention to the conversation" msgstr "prête attention à la conversation" -#: ../src/common/helpers.py:312 +#: ../src/common/helpers.py:328 msgid "is doing something else" msgstr "fait quelque chose d'autre" -#: ../src/common/helpers.py:314 +#: ../src/common/helpers.py:330 msgid "is composing a message..." msgstr "écrit un message..." #. paused means he or she was compoing but has stopped for a while -#: ../src/common/helpers.py:317 +#: ../src/common/helpers.py:333 msgid "paused composing a message" msgstr "a arrêté d'écrire un message" -#: ../src/common/helpers.py:319 +#: ../src/common/helpers.py:335 msgid "has closed the chat window or tab" msgstr "a fermé la fenêtre ou l'onglet de discussion" #. we talk about a file -#: ../src/common/optparser.py:62 +#: ../src/common/optparser.py:60 #, python-format msgid "error: cannot open %s for reading" msgstr "erreur: impossible d'ouvrir %s en lecture" -#: ../src/common/optparser.py:167 +#: ../src/common/optparser.py:171 msgid "gtk+" msgstr "gtk+" -#: ../src/common/optparser.py:176 -#: ../src/common/optparser.py:177 +#: ../src/common/optparser.py:180 ../src/common/optparser.py:181 msgid "cyan" -msgstr "Cyan" - -#~ msgid "Would you like to overwrite it?" -#~ msgstr "Voulez-vous l'écraser ?" -#~ msgid "_Join New Room..." -#~ msgstr "Re_joindre un nouveau salon..." -#~ msgid "Usage: /%s, sets the groupchat window to compact mode." -#~ msgstr "" -#~ "Usage : /%s, passe la fenêtre de salon de discussion en vue compacte." - -#, fuzzy -#~ msgid "Please modify your special notification below" -#~ msgstr "Choisissez une des options suivantes :" -#~ msgid "Ad_vanced Actions" -#~ msgstr "Actions a_vancées" -#~ msgid "Delete Message of the Day" -#~ msgstr "Supprimer le message du jour" - -#, fuzzy -#~ msgid "I want a notification popup:" -#~ msgstr "Noti_fications d'état de discussion" - -#, fuzzy -#~ msgid "I want to listen to:" -#~ msgstr "%s souhaite vous envoyer un fichier :" -#~ msgid "Send _New Message..." -#~ msgstr "Envoyer un _nouveau message..." -#~ msgid "Set Message of the Day" -#~ msgstr "Définir un message du jour" -#~ msgid "Update Message of the Day" -#~ msgstr "Mettre à jour le message du jour" -#~ msgid "_XML Console..." -#~ msgstr "Console _XML..." -#~ msgid "Choose Avatar" -#~ msgstr "Choisissez un Avatar" -#~ msgid "Use compact view when you open a chat window" -#~ msgstr "" -#~ "Utiliser la vue compacte quand vous ouvrez une fenêtre de discussion" -#~ msgid "Use compact view when you open a group chat window" -#~ msgstr "Utiliser la vue compacte quand vous ouvrez une fenêtre de salon" -#~ msgid "plain" -#~ msgstr "Standard" -#~ msgid "Send" -#~ msgstr "Envoyer" -#~ msgid "%(nickname)s in room %(room_name)s has sent you a new message." -#~ msgstr "" -#~ "%(nickname)s du salon %(room_name)s vous a envoyé un nouveau message." -#~ msgid "%s has sent you a new message." -#~ msgstr "%s vous a envoyé un nouveau message." - -#, fuzzy -#~ msgid "GUI Migration failed" -#~ msgstr "échec lors de la publication de votre vCard" -#~ msgid "Logs have been successfully migrated to the database." -#~ msgstr "L'historique a été corectement récupéré." -#~ msgid "If checked, Gajim will also have a trayicon" -#~ msgstr "" -#~ "Si cette case est cochée, Gajim placera une icône dans la zone de " -#~ "notification" -#~ msgid "_Online Users" -#~ msgstr "Utilisateurs En _Ligne" - -#, fuzzy -#~ msgid "Start Chat with Contact" -#~ msgstr "Commencer une discussion avec le compte %s" -#~ msgid "All contacts in this group are offline or have errors" -#~ msgstr "Tous les contacts de ce groupe sont déconnectés ou ont des erreurs" -#~ msgid "Size: " -#~ msgstr "Taille : " -#~ msgid "Session bus is not available" -#~ msgstr "Le bus de session n'est pas disponible" - -#, fuzzy -#~ msgid "Unable to load idle module" -#~ msgstr "Impossible de rejoindre le salon" -#~ msgid "Unable to join room" -#~ msgstr "Impossible de rejoindre le salon" -#~ msgid "A password is required to join this room." -#~ msgstr "Un mot de passe est requis pour rejoindre ce salon." -#~ msgid "You are banned from this room." -#~ msgstr "Vous êtes banni de ce salon." -#~ msgid "Such room does not exist." -#~ msgstr "Ce salon n'existe pas." -#~ msgid "Room creation is restricted." -#~ msgstr "La création de salon est réservée aux administrateurs." -#~ msgid "Your registered nickname must be used." -#~ msgstr "Vous devez utiliser le surnom donné lors de l'enregistrement." -#~ msgid "You are not in the members list." -#~ msgstr "Vous n'êtes pas dans la liste des membres." -#~ msgid "" -#~ "Your desired nickname is in use or registered by another occupant.\n" -#~ "Please specify another nickname below:" -#~ msgstr "" -#~ "Le surnom que vous vouliez utiliser est actuellement utilisé ou " -#~ "enregistré par un autre occupant.\n" -#~ "Veuillez entrer un autre surnom ci-dessous :" -#~ msgid "we are now subscribed to %s" -#~ msgstr "nous sommes maintenant inscrits chez %s" -#~ msgid "unsubscribe request from %s" -#~ msgstr "Requête de désinscription de la part de %s" -#~ msgid "we are now unsubscribed from %s" -#~ msgstr "nous ne sommes plus dans la liste de %s" - -#, fuzzy -#~ msgid "" -#~ "JID %s is not RFC compliant. It will not be added to your roster. Use " -#~ "roster management tools such as http://jru.jabberstudio.org/ to remove it" -#~ msgstr "" -#~ "je Jid %s ne respecte pas la norma RFC. Il ne sera pas ajouté a votre " -#~ "liste de contact. Utiliser un outil de gestion de liste de contact tel " -#~ "que http://jru.jabberstudio.org/ pour le supprimer" -#~ msgid "Registration information for transport %s has not arrived in time" -#~ msgstr "" -#~ "L'information d'enregistrement pour la passerelle %s n'est pas arrivée à " -#~ "temps" -#~ msgid "Sound" -#~ msgstr "Son" -#~ msgid "Text" -#~ msgstr "Texte" -#~ msgid "Image" -#~ msgstr "Image" -#~ msgid "From %s" -#~ msgstr "De %s" -#~ msgid "To %s" -#~ msgstr "À %s" -#~ msgid "You have been invited to the %(room_jid)s room by %(contact_jid)s" -#~ msgstr "Vous avez été invité dans le salon %(room_jid)s par %(contact_jid)s" -#~ msgid "Manage Emoticons" -#~ msgstr "Gérer les frimousses" -#~ msgid "Or choose a preset message:" -#~ msgstr "Ou choisissez votre message :" -#~ msgid "Use _emoticons" -#~ msgstr "Utiliser les _frimousses" -#~ msgid "_Set Image..." -#~ msgstr "_Choisir une image..." -#~ msgid "Switch to %s" -#~ msgstr "Basculer vers %s" -#~ msgid "using account " -#~ msgstr "en utilisant le compte " -#~ msgid "The filesize of image \"%s\" is too large" -#~ msgstr "Le taille du fichier de l'image \"%s\" est trop importante" -#~ msgid "The file must not be more than 32 kilobytes." -#~ msgstr "Le fichier ne doit pas excéder les 32 kilobytes." -#~ msgid "Timeout" -#~ msgstr "Dépassement de temps" -#~ msgid "A protocol error has occured:" -#~ msgstr "Une erreur de protocole s'est produite :" -#~ msgid "account: " -#~ msgstr "compte : " -#~ msgid "Are you sure you want to leave rooms \"%s\"?" -#~ msgstr "Êtes-vous sûr de vouloir quitter les salons \"%s\" ?" -#~ msgid "If you close this window, you will be disconnected from these rooms." -#~ msgstr "Si vous fermer cette fenêtre, vous serez déconnecté de ces salons." -#~ msgid "Activate/Disable notification for when a file transfer is complete" -#~ msgstr "Active/Désactive la notification de fin de transfert" -#~ msgid "Removing selected file transfer" -#~ msgstr "Supprime le transfert du fichier sélectionné" -#~ msgid "Stoping selected file transfer" -#~ msgstr "Arrête le transfert de fichier sélectionné" -#~ msgid "Use a single chat window with _tabs" -#~ msgstr "Utiliser une seule fenê_tre de discussion avec des onglets" -#~ msgid "" -#~ "If you close this tab and you have history disabled, the message will be " -#~ "lost." -#~ msgstr "" -#~ "Si vous fermez cet onglet et que l'historique n'est pas activé, le " -#~ "message sera perdu." -#~ msgid "Cannot remove last group" -#~ msgstr "Impossible d'enlever le dernier groupe" -#~ msgid "At least one contact group must be present." -#~ msgstr "Au moins un groupe de contacts doit exister." -#~ msgid "" -#~ "pysqlite2 (aka python-pysqlite2) dependency is missing. After you install " -#~ "pysqlite3, if you want to migrate your logs to the new database, please " -#~ "read: http://trac.gajim.org/wiki/MigrateLogToDot9DB Exiting..." -#~ msgstr "" -#~ "pysqlite2 (ou python-pysqlite2) n'est pas installé. Aprés avoir installé " -#~ "pysqlite2, si vous voulez migrer votre historique dans la nouvelle base " -#~ "de donnée, lisez http://trac.gajim.org/wiki/MigrateLogToDot9DB. Quitte..." -#~ msgid "Image is too big" -#~ msgstr "L'image est trop grande" -#~ msgid "" -#~ "Image for emoticon has to be less than or equal to 24 pixels in width and " -#~ "24 in height." -#~ msgstr "" -#~ "L'image pour l'émoticône doit être inférieure ou égale à 24 points en " -#~ "largeur et 24 points en hauteur." - +msgstr "cyan" diff --git a/po/gajim.pot b/po/gajim.pot index a023bca52..6429685ee 100644 --- a/po/gajim.pot +++ b/po/gajim.pot @@ -3,13 +3,13 @@ # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # -#: ../src/gajim-remote.py:204 ../src/gajim-remote.py:211 +#: ../src/gajim-remote.py:218 ../src/gajim-remote.py:225 #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2006-04-13 12:52+0200\n" +"POT-Creation-Date: 2006-07-04 00:03+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -30,30 +30,1967 @@ msgstr "" msgid "Jabber IM Client" msgstr "" -#: ../src/advanced.py:71 +#: ../data/glade/account_context_menu.glade.h:1 +msgid "Send Single _Message..." +msgstr "" + +#: ../data/glade/account_context_menu.glade.h:2 +msgid "_Add Contact..." +msgstr "" + +#: ../data/glade/account_context_menu.glade.h:3 +msgid "_Discover Services..." +msgstr "" + +#: ../data/glade/account_context_menu.glade.h:4 +#: ../data/glade/roster_window.glade.h:15 +#: ../data/glade/systray_context_menu.glade.h:5 +msgid "_Group Chat" +msgstr "" + +#: ../data/glade/account_context_menu.glade.h:5 +msgid "_Modify Account..." +msgstr "" + +#: ../data/glade/account_context_menu.glade.h:6 +msgid "_Status" +msgstr "" + +#: ../data/glade/account_creation_wizard_window.glade.h:1 +msgid "" +"Account is being created\n" +"\n" +"Please wait..." +msgstr "" + +#: ../data/glade/account_creation_wizard_window.glade.h:4 +msgid "Please choose one of the options below:" +msgstr "" + +#: ../data/glade/account_creation_wizard_window.glade.h:5 +msgid "Please fill in the data for your new account" +msgstr "" + +#: ../data/glade/account_creation_wizard_window.glade.h:6 +msgid "Click to see features (like MSN, ICQ transports) of jabber servers" +msgstr "" + +#: ../data/glade/account_creation_wizard_window.glade.h:7 +msgid "Connect when I press Finish" +msgstr "" + +#: ../data/glade/account_creation_wizard_window.glade.h:8 +msgid "Gajim: Account Creation Wizard" +msgstr "" + +#: ../data/glade/account_creation_wizard_window.glade.h:9 +msgid "I already have an account I want to use" +msgstr "" + +#: ../data/glade/account_creation_wizard_window.glade.h:10 +msgid "I want to _register for a new account" +msgstr "" + +#: ../data/glade/account_creation_wizard_window.glade.h:11 +#: ../data/glade/account_modification_window.glade.h:18 +msgid "If checked, Gajim will remember the password for this account" +msgstr "" + +#: ../data/glade/account_creation_wizard_window.glade.h:12 +#: ../data/glade/manage_proxies_window.glade.h:6 +msgid "Pass_word:" +msgstr "" + +#: ../data/glade/account_creation_wizard_window.glade.h:13 +#: ../data/glade/account_modification_window.glade.h:37 +msgid "Save pass_word" +msgstr "" + +#: ../data/glade/account_creation_wizard_window.glade.h:14 +msgid "Servers Features" +msgstr "" + +#: ../data/glade/account_creation_wizard_window.glade.h:15 +msgid "Set my profile when I connect" +msgstr "" + +#: ../data/glade/account_creation_wizard_window.glade.h:16 +msgid "" +"You need to have an account in order to connect\n" +"to the Jabber network." +msgstr "" + +#: ../data/glade/account_creation_wizard_window.glade.h:18 +msgid "Your JID:" +msgstr "" + +#: ../data/glade/account_creation_wizard_window.glade.h:19 +#: ../data/glade/roster_window.glade.h:10 +msgid "_Advanced" +msgstr "" + +#: ../data/glade/account_creation_wizard_window.glade.h:20 +msgid "_Finish" +msgstr "" + +#: ../data/glade/account_creation_wizard_window.glade.h:21 +#: ../data/glade/manage_proxies_window.glade.h:9 +msgid "_Host:" +msgstr "" + +#: ../data/glade/account_creation_wizard_window.glade.h:22 +#: ../data/glade/account_modification_window.glade.h:45 +msgid "_Password:" +msgstr "" + +#: ../data/glade/account_creation_wizard_window.glade.h:23 +#: ../data/glade/manage_proxies_window.glade.h:10 +msgid "_Port:" +msgstr "" + +#: ../data/glade/account_creation_wizard_window.glade.h:24 +msgid "_Retype Password:" +msgstr "" + +#: ../data/glade/account_creation_wizard_window.glade.h:25 +msgid "_Server:" +msgstr "" + +#: ../data/glade/account_creation_wizard_window.glade.h:26 +msgid "_Use proxy" +msgstr "" + +#: ../data/glade/account_creation_wizard_window.glade.h:27 +#: ../data/glade/manage_proxies_window.glade.h:11 +msgid "_Username:" +msgstr "" + +#: ../data/glade/account_modification_window.glade.h:1 +#: ../data/glade/preferences_window.glade.h:8 +msgid "Miscellaneous" +msgstr "" + +#: ../data/glade/account_modification_window.glade.h:2 +msgid "OpenPGP" +msgstr "" + +#: ../data/glade/account_modification_window.glade.h:3 +msgid "Personal Information" +msgstr "" + +#: ../data/glade/account_modification_window.glade.h:4 +msgid "Account" +msgstr "" + +#: ../data/glade/account_modification_window.glade.h:5 +msgid "Account Modification" +msgstr "" + +#: ../data/glade/account_modification_window.glade.h:6 +msgid "Autoreconnect when connection is lost" +msgstr "" + +#: ../data/glade/account_modification_window.glade.h:7 +msgid "C_onnect on Gajim startup" +msgstr "" + +#: ../data/glade/account_modification_window.glade.h:8 +msgid "Chan_ge Password" +msgstr "" + +#: ../data/glade/account_modification_window.glade.h:9 +msgid "" +"Check this so Gajim will connect in port 5223 where legacy servers are " +"expected to have SSL capabilities. Note that Gajim uses TLS encryption by " +"default if broadcasted by the server, and with this option enabled TLS will " +"be disabled" +msgstr "" + +#: ../data/glade/account_modification_window.glade.h:10 +msgid "Choose _Key..." +msgstr "" + +#: ../data/glade/account_modification_window.glade.h:11 +msgid "Click to change account's password" +msgstr "" + +#: ../data/glade/account_modification_window.glade.h:12 +msgid "Connection" +msgstr "" + +#: ../data/glade/account_modification_window.glade.h:13 +msgid "Edit Personal Information..." +msgstr "" + +#: ../data/glade/account_modification_window.glade.h:14 +#: ../data/glade/roster_window.glade.h:5 ../src/notify.py:308 +#: ../src/notify.py:330 ../src/notify.py:342 ../src/tooltips.py:350 +msgid "Gajim" +msgstr "" + +#: ../data/glade/account_modification_window.glade.h:15 +#: ../data/glade/preferences_window.glade.h:44 +#: ../data/glade/vcard_information_window.glade.h:17 +#: ../src/roster_window.py:290 ../src/roster_window.py:1184 +#: ../src/roster_window.py:1405 +msgid "General" +msgstr "" + +#: ../data/glade/account_modification_window.glade.h:16 +msgid "Hostname: " +msgstr "" + +#: ../data/glade/account_modification_window.glade.h:17 +msgid "" +"If checked, Gajim will also broadcast some more IPs except from just your " +"IP, so file transfer has higher chances of working." +msgstr "" + +#: ../data/glade/account_modification_window.glade.h:19 +msgid "" +"If checked, Gajim will send keep-alive packets so it prevents connection " +"timeout which results in disconnection" +msgstr "" + +#: ../data/glade/account_modification_window.glade.h:20 +msgid "" +"If checked, Gajim will store the password in ~/.gajim/config with 'read' " +"permission only for you" +msgstr "" + +#: ../data/glade/account_modification_window.glade.h:21 +msgid "" +"If checked, Gajim, when launched, will automatically connect to jabber using " +"this account" +msgstr "" + +#: ../data/glade/account_modification_window.glade.h:22 +msgid "" +"If checked, any change to the global status (handled by the combobox at the " +"bottom of the roster window) will change the status of this account " +"accordingly" +msgstr "" + +#: ../data/glade/account_modification_window.glade.h:23 +msgid "Information about you, as stored in the server" +msgstr "" + +#: ../data/glade/account_modification_window.glade.h:24 +msgid "Manage..." +msgstr "" + +#: ../data/glade/account_modification_window.glade.h:25 ../src/config.py:1448 +msgid "No key selected" +msgstr "" + +#. None means no proxy profile selected +#: ../data/glade/account_modification_window.glade.h:27 ../src/config.py:1053 +#: ../src/config.py:1058 ../src/config.py:1230 ../src/config.py:1505 +#: ../src/config.py:1578 ../src/config.py:2282 +msgid "None" +msgstr "" + +#: ../data/glade/account_modification_window.glade.h:28 +msgid "Personal Information" +msgstr "" + +#: ../data/glade/account_modification_window.glade.h:29 +msgid "Port: " +msgstr "" + +#: ../data/glade/account_modification_window.glade.h:30 +msgid "Priori_ty:" +msgstr "" + +#: ../data/glade/account_modification_window.glade.h:31 +msgid "" +"Priority is used in Jabber to determine who gets the events from the jabber " +"server when two or more clients are connected using the same account; The " +"client with the highest priority gets the events" +msgstr "" + +#: ../data/glade/account_modification_window.glade.h:32 +msgid "Proxy:" +msgstr "" + +#: ../data/glade/account_modification_window.glade.h:33 +msgid "Resour_ce: " +msgstr "" + +#: ../data/glade/account_modification_window.glade.h:34 +msgid "" +"Resource is sent to the Jabber server in order to separate the same JID in " +"two or more parts depending on the number of the clients connected in the " +"same server with the same account. So you might be connected in the same " +"account with resource 'Home' and 'Work' at the same time. The resource which " +"has the highest priority will get the events. (see below)" +msgstr "" + +#: ../data/glade/account_modification_window.glade.h:35 +msgid "Save _passphrase (insecure)" +msgstr "" + +#: ../data/glade/account_modification_window.glade.h:36 +msgid "Save conversation _logs for all contacts" +msgstr "" + +#: ../data/glade/account_modification_window.glade.h:38 +msgid "Send keep-alive packets" +msgstr "" + +#: ../data/glade/account_modification_window.glade.h:39 +msgid "Synch_ronize account status with global status" +msgstr "" + +#: ../data/glade/account_modification_window.glade.h:40 +msgid "Use _SSL (legacy)" +msgstr "" + +#: ../data/glade/account_modification_window.glade.h:41 +msgid "Use custom hostname/port" +msgstr "" + +#: ../data/glade/account_modification_window.glade.h:42 +msgid "Use file transfer proxies" +msgstr "" + +#: ../data/glade/account_modification_window.glade.h:43 +#: ../data/glade/add_new_contact_window.glade.h:6 +msgid "_Jabber ID:" +msgstr "" + +#: ../data/glade/account_modification_window.glade.h:44 +msgid "_Name: " +msgstr "" + +#: ../data/glade/accounts_window.glade.h:1 +msgid "Accounts" +msgstr "" + +#: ../data/glade/accounts_window.glade.h:2 +msgid "" +"If you have 2 or more accounts and it is checked, Gajim will list all " +"contacts as if you had one account" +msgstr "" + +#: ../data/glade/accounts_window.glade.h:3 +msgid "_Merge accounts" +msgstr "" + +#: ../data/glade/accounts_window.glade.h:4 +msgid "_Modify" +msgstr "" + +#: ../data/glade/accounts_window.glade.h:5 +#: ../data/glade/remove_account_window.glade.h:4 +msgid "_Remove" +msgstr "" + +#: ../data/glade/add_new_contact_window.glade.h:1 +msgid "A_llow this contact to view my status" +msgstr "" + +#: ../data/glade/add_new_contact_window.glade.h:2 +msgid "Add New Contact" +msgstr "" + +#: ../data/glade/add_new_contact_window.glade.h:3 +msgid "I would like to add you to my contact list." +msgstr "" + +#: ../data/glade/add_new_contact_window.glade.h:4 +msgid "_Account:" +msgstr "" + +#: ../data/glade/add_new_contact_window.glade.h:5 +msgid "_Group:" +msgstr "" + +#: ../data/glade/add_new_contact_window.glade.h:7 +msgid "_Nickname:" +msgstr "" + +#: ../data/glade/add_new_contact_window.glade.h:8 +msgid "_Protocol:" +msgstr "" + +#: ../data/glade/add_new_contact_window.glade.h:9 +msgid "_Subscribe" +msgstr "" + +#: ../data/glade/add_new_contact_window.glade.h:10 +msgid "_User ID:" +msgstr "" + +#: ../data/glade/advanced_configuration_window.glade.h:1 +msgid "Description" +msgstr "" + +#: ../data/glade/advanced_configuration_window.glade.h:2 +msgid "NOTE: You should restart gajim for some setting to take effect" +msgstr "" + +#: ../data/glade/advanced_configuration_window.glade.h:3 +msgid "Advanced Configuration Editor" +msgstr "" + +#: ../data/glade/advanced_configuration_window.glade.h:4 +msgid "Filter:" +msgstr "" + +#: ../data/glade/advanced_menuitem_menu.glade.h:1 +msgid "Delete MOTD" +msgstr "" + +#: ../data/glade/advanced_menuitem_menu.glade.h:2 +msgid "Deletes Message of the Day" +msgstr "" + +#: ../data/glade/advanced_menuitem_menu.glade.h:3 +msgid "Sends a message to currently connected users to this server" +msgstr "" + +#: ../data/glade/advanced_menuitem_menu.glade.h:4 +msgid "Set MOTD" +msgstr "" + +#: ../data/glade/advanced_menuitem_menu.glade.h:5 +msgid "Sets Message of the Day" +msgstr "" + +#: ../data/glade/advanced_menuitem_menu.glade.h:6 +msgid "Show _XML Console" +msgstr "" + +#: ../data/glade/advanced_menuitem_menu.glade.h:7 +msgid "Update MOTD" +msgstr "" + +#: ../data/glade/advanced_menuitem_menu.glade.h:8 +msgid "Updates Message of the Day" +msgstr "" + +#: ../data/glade/advanced_menuitem_menu.glade.h:9 +msgid "_Administrator" +msgstr "" + +#: ../data/glade/advanced_menuitem_menu.glade.h:10 +msgid "_Privacy Lists" +msgstr "" + +#: ../data/glade/advanced_menuitem_menu.glade.h:11 +msgid "_Send Server Message" +msgstr "" + +#: ../data/glade/advanced_menuitem_menu.glade.h:12 +msgid "_Send Single Message" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:1 +msgid " a window/tab opened with that contact " +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:2 +msgid "Actions" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:3 +msgid "Conditions" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:4 +#: ../data/glade/preferences_window.glade.h:10 +msgid "Sounds" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:5 +msgid "Add" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:6 +msgid "Advanced Actions" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:7 +msgid "Advanced Notifications Control" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:8 +msgid "All Status " +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:9 +msgid "And I " +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:10 +msgid "Away " +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:11 +msgid "Busy " +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:12 +msgid "Don't have " +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:13 +msgid "Down" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:14 +msgid "Have " +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:15 +#: ../src/common/helpers.py:239 +msgid "Invisible" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:16 +msgid "Launch a command" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:17 +msgid "List of special notifications settings" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:18 +msgid "Not Available " +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:19 +msgid "Online / Free For Chat" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:20 +msgid "Play a sound" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:21 +msgid "" +"Receive a Message\n" +"Contact Connected\n" +"Contact Disconnected\n" +"Contact Change Status\n" +"Group Chat Message Highlight\n" +"Group Chat Message Received\n" +"File Transfert Resquest\n" +"File Transfert Started\n" +"File Transfert Finished" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:30 +msgid "Some special(s) status..." +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:31 +msgid "Up" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:32 +msgid "When " +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:33 +msgid "_Activate Windows manager UrgencyHint to make chat taskbar to flash" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:34 +msgid "_Disable auto opening chat window" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:35 +msgid "_Disable existing popup window" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:36 +msgid "_Disable existing sound for this event" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:37 +msgid "_Disable showing event in roster" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:38 +msgid "_Disable showing event in systray" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:39 +msgid "_Inform me with a popup window" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:40 +msgid "_Open chat window with user" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:41 +msgid "_Show event in roster" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:42 +msgid "_Show event in systray" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:43 +msgid "" +"contact(s)\n" +"group(s)\n" +"everybody" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:46 +msgid "for " +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:47 +msgid "when I'm " +msgstr "" + +#: ../data/glade/change_password_dialog.glade.h:1 +msgid "Change Password" +msgstr "" + +#: ../data/glade/change_password_dialog.glade.h:2 +msgid "Enter it again for confirmation:" +msgstr "" + +#: ../data/glade/change_password_dialog.glade.h:3 +msgid "Enter new password:" +msgstr "" + +#: ../data/glade/change_status_message_dialog.glade.h:1 +msgid "Type your new status message" +msgstr "" + +#: ../data/glade/change_status_message_dialog.glade.h:2 +msgid "Preset messages:" +msgstr "" + +#: ../data/glade/change_status_message_dialog.glade.h:3 +msgid "Save as Preset..." +msgstr "" + +#: ../data/glade/chat_context_menu.glade.h:1 +msgid "Join _Group Chat" +msgstr "" + +#: ../data/glade/chat_context_menu.glade.h:2 +#: ../data/glade/chat_control_popup_menu.glade.h:4 +#: ../data/glade/gc_occupants_menu.glade.h:2 +#: ../data/glade/roster_contact_context_menu.glade.h:8 +msgid "_Add to Roster" +msgstr "" + +#: ../data/glade/chat_context_menu.glade.h:3 +msgid "_Copy JID/Email Address" +msgstr "" + +#: ../data/glade/chat_context_menu.glade.h:4 +msgid "_Copy Link Location" +msgstr "" + +#: ../data/glade/chat_context_menu.glade.h:5 +msgid "_Open Email Composer" +msgstr "" + +#: ../data/glade/chat_context_menu.glade.h:6 +msgid "_Open Link in Browser" +msgstr "" + +#: ../data/glade/chat_context_menu.glade.h:7 +#: ../data/glade/roster_window.glade.h:19 +#: ../data/glade/systray_context_menu.glade.h:6 +msgid "_Start Chat" +msgstr "" + +#: ../data/glade/chat_control_popup_menu.glade.h:1 +msgid "Click to see past conversations with this contact" +msgstr "" + +#: ../data/glade/chat_control_popup_menu.glade.h:2 +#: ../data/glade/roster_contact_context_menu.glade.h:6 +msgid "Send _File" +msgstr "" + +#: ../data/glade/chat_control_popup_menu.glade.h:3 +msgid "Toggle Open_PGP Encryption" +msgstr "" + +#: ../data/glade/chat_control_popup_menu.glade.h:5 +#: ../data/glade/gc_control_popup_menu.glade.h:6 +msgid "_Compact View Alt+C" +msgstr "" + +#: ../data/glade/chat_control_popup_menu.glade.h:6 +#: ../data/glade/gc_control_popup_menu.glade.h:7 +#: ../data/glade/gc_occupants_menu.glade.h:5 +#: ../data/glade/roster_contact_context_menu.glade.h:11 +msgid "_History" +msgstr "" + +#: ../data/glade/data_form_window.glade.h:1 +msgid "Room Configuration" +msgstr "" + +#: ../data/glade/edit_groups_dialog.glade.h:1 +msgid "Edit Groups" +msgstr "" + +#: ../data/glade/filetransfers.glade.h:1 +msgid "A list of active, completed and stopped file transfers" +msgstr "" + +#: ../data/glade/filetransfers.glade.h:2 +msgid "Cancel file transfer" +msgstr "" + +#: ../data/glade/filetransfers.glade.h:3 +msgid "Cancels the selected file transfer" +msgstr "" + +#: ../data/glade/filetransfers.glade.h:4 +msgid "Cancels the selected file transfer and removes incomplete file" +msgstr "" + +#: ../data/glade/filetransfers.glade.h:5 +msgid "Clean _up" +msgstr "" + +#: ../data/glade/filetransfers.glade.h:6 +msgid "File Transfers" +msgstr "" + +#: ../data/glade/filetransfers.glade.h:7 +msgid "Hides the window" +msgstr "" + +#: ../data/glade/filetransfers.glade.h:8 +msgid "Remove file transfer from the list." +msgstr "" + +#: ../data/glade/filetransfers.glade.h:9 +msgid "Removes completed, canceled and failed file transfers from the list" +msgstr "" + +#: ../data/glade/filetransfers.glade.h:10 +msgid "Shows a list of file transfers between you and other" +msgstr "" + +#: ../data/glade/filetransfers.glade.h:11 +msgid "" +"This action removes single file transfer from the list. If the transfer is " +"active, it is first stopped and then removed" +msgstr "" + +#: ../data/glade/filetransfers.glade.h:12 +msgid "When a file transfer is complete show a popup notification" +msgstr "" + +#: ../data/glade/filetransfers.glade.h:13 ../src/filetransfers_window.py:753 +msgid "_Continue" +msgstr "" + +#: ../data/glade/filetransfers.glade.h:14 +msgid "_Notify me when a file transfer is complete" +msgstr "" + +#: ../data/glade/filetransfers.glade.h:15 ../src/filetransfers_window.py:190 +msgid "_Open Containing Folder" +msgstr "" + +#: ../data/glade/filetransfers.glade.h:16 +msgid "_Pause" +msgstr "" + +#: ../data/glade/filetransfers.glade.h:17 +msgid "file transfers list" +msgstr "" + +#: ../data/glade/gajim_themes_window.glade.h:1 +msgid "Chatstate Tab Colors" +msgstr "" + +#: ../data/glade/gajim_themes_window.glade.h:2 +msgid "" +"Account\n" +"Group\n" +"Contact\n" +"Banner" +msgstr "" + +#: ../data/glade/gajim_themes_window.glade.h:6 +#: ../data/glade/privacy_list_edit_window.glade.h:4 ../src/config.py:326 +msgid "Active" +msgstr "" + +#: ../data/glade/gajim_themes_window.glade.h:7 +msgid "Bold" +msgstr "" + +#: ../data/glade/gajim_themes_window.glade.h:8 +msgid "Composing" +msgstr "" + +#: ../data/glade/gajim_themes_window.glade.h:9 +msgid "Font style:" +msgstr "" + +#: ../data/glade/gajim_themes_window.glade.h:10 +msgid "Gajim Themes Customization" +msgstr "" + +#: ../data/glade/gajim_themes_window.glade.h:11 +msgid "Gone" +msgstr "" + +#: ../data/glade/gajim_themes_window.glade.h:12 +msgid "Inactive" +msgstr "" + +#: ../data/glade/gajim_themes_window.glade.h:13 +msgid "Italic" +msgstr "" + +#: ../data/glade/gajim_themes_window.glade.h:14 +msgid "" +"MUC\n" +"Messages" +msgstr "" + +#: ../data/glade/gajim_themes_window.glade.h:16 +msgid "" +"MUC Directed\n" +"Messages" +msgstr "" + +#: ../data/glade/gajim_themes_window.glade.h:18 ../src/tooltips.py:667 +msgid "Paused" +msgstr "" + +#: ../data/glade/gajim_themes_window.glade.h:19 +msgid "Text _color:" +msgstr "" + +#: ../data/glade/gajim_themes_window.glade.h:20 +msgid "Text _font:" +msgstr "" + +#: ../data/glade/gajim_themes_window.glade.h:21 +msgid "_Background:" +msgstr "" + +#: ../data/glade/gc_control_popup_menu.glade.h:1 +msgid "Change _Nickname" +msgstr "" + +#: ../data/glade/gc_control_popup_menu.glade.h:2 +msgid "Change _Subject" +msgstr "" + +#: ../data/glade/gc_control_popup_menu.glade.h:3 +msgid "Click to see past conversation in this room" +msgstr "" + +#: ../data/glade/gc_control_popup_menu.glade.h:4 +msgid "Configure _Room" +msgstr "" + +#: ../data/glade/gc_control_popup_menu.glade.h:5 +msgid "_Bookmark This Room" +msgstr "" + +#: ../data/glade/gc_occupants_menu.glade.h:1 +msgid "Mo_derator" +msgstr "" + +#: ../data/glade/gc_occupants_menu.glade.h:3 +msgid "_Admin" +msgstr "" + +#: ../data/glade/gc_occupants_menu.glade.h:4 +msgid "_Ban" +msgstr "" + +#: ../data/glade/gc_occupants_menu.glade.h:6 +msgid "_Kick" +msgstr "" + +#: ../data/glade/gc_occupants_menu.glade.h:7 +msgid "_Member" +msgstr "" + +#: ../data/glade/gc_occupants_menu.glade.h:8 +msgid "_Occupant Actions" +msgstr "" + +#: ../data/glade/gc_occupants_menu.glade.h:9 +msgid "_Owner" +msgstr "" + +#: ../data/glade/gc_occupants_menu.glade.h:10 +msgid "_Send Private Message" +msgstr "" + +#: ../data/glade/gc_occupants_menu.glade.h:11 +msgid "_Voice" +msgstr "" + +#: ../data/glade/history_manager.glade.h:1 +msgid "" +"Welcome to Gajim History Logs Manager\n" +"\n" +"You can select logs from the left and/or search database from below.\n" +"\n" +"WARNING:\n" +"If you plan to do massive deletions, please make sure Gajim is not running. " +"Generally avoid deletions with contacts you currently chat with." +msgstr "" + +#: ../data/glade/history_manager.glade.h:7 +msgid "Delete" +msgstr "" + +#: ../data/glade/history_manager.glade.h:8 +msgid "Export" +msgstr "" + +#: ../data/glade/history_manager.glade.h:9 +msgid "Gajim History Logs Manager" +msgstr "" + +#: ../data/glade/history_manager.glade.h:10 +msgid "_Search Database" +msgstr "" + +#: ../data/glade/history_window.glade.h:1 +msgid "Build custom query" +msgstr "" + +#: ../data/glade/history_window.glade.h:2 +msgid "Conversation History" +msgstr "" + +#: ../data/glade/history_window.glade.h:3 +msgid "Query Builder..." +msgstr "" + +#: ../data/glade/history_window.glade.h:4 +msgid "Search" +msgstr "" + +#: ../data/glade/history_window.glade.h:5 +msgid "_Search" +msgstr "" + +#: ../data/glade/invitation_received_dialog.glade.h:1 +msgid "Accept" +msgstr "" + +#: ../data/glade/invitation_received_dialog.glade.h:2 +#: ../data/glade/privacy_list_edit_window.glade.h:8 +msgid "Deny" +msgstr "" + +#: ../data/glade/invitation_received_dialog.glade.h:3 +msgid "Invitation Received" +msgstr "" + +#: ../data/glade/join_groupchat_window.glade.h:1 ../src/dialogs.py:941 +msgid "Join Group Chat" +msgstr "" + +#: ../data/glade/join_groupchat_window.glade.h:2 +#: ../data/glade/manage_bookmarks_window.glade.h:4 +#: ../data/glade/vcard_information_window.glade.h:28 +msgid "Nickname:" +msgstr "" + +#: ../data/glade/join_groupchat_window.glade.h:3 +#: ../data/glade/manage_bookmarks_window.glade.h:5 +msgid "Password:" +msgstr "" + +#: ../data/glade/join_groupchat_window.glade.h:4 +msgid "Recently:" +msgstr "" + +#: ../data/glade/join_groupchat_window.glade.h:5 +#: ../data/glade/manage_bookmarks_window.glade.h:7 +msgid "Room:" +msgstr "" + +#: ../data/glade/join_groupchat_window.glade.h:6 +#: ../data/glade/manage_bookmarks_window.glade.h:8 +msgid "Server:" +msgstr "" + +#: ../data/glade/join_groupchat_window.glade.h:7 ../src/disco.py:1145 +#: ../src/disco.py:1507 +msgid "_Join" +msgstr "" + +#: ../data/glade/manage_accounts_window.glade.h:1 +msgid "Manage Accounts" +msgstr "" + +#: ../data/glade/manage_bookmarks_window.glade.h:1 +msgid "Auto join" +msgstr "" + +#: ../data/glade/manage_bookmarks_window.glade.h:2 +msgid "If checked, Gajim will join this group chat on startup" +msgstr "" + +#: ../data/glade/manage_bookmarks_window.glade.h:3 +msgid "Manage Bookmarks" +msgstr "" + +#: ../data/glade/manage_bookmarks_window.glade.h:6 +msgid "Print status:" +msgstr "" + +#: ../data/glade/manage_bookmarks_window.glade.h:9 +msgid "Title:" +msgstr "" + +#: ../data/glade/manage_proxies_window.glade.h:1 +msgid "Properties" +msgstr "" + +#: ../data/glade/manage_proxies_window.glade.h:2 +msgid "Settings" +msgstr "" + +#: ../data/glade/manage_proxies_window.glade.h:3 +msgid "HTTP Connect" +msgstr "" + +#: ../data/glade/manage_proxies_window.glade.h:4 +msgid "Manage Proxy Profiles" +msgstr "" + +#: ../data/glade/manage_proxies_window.glade.h:5 +#: ../data/glade/vcard_information_window.glade.h:27 +msgid "Name:" +msgstr "" + +#: ../data/glade/manage_proxies_window.glade.h:7 +msgid "Type:" +msgstr "" + +#: ../data/glade/manage_proxies_window.glade.h:8 +msgid "Use authentication" +msgstr "" + +#: ../data/glade/message_window.glade.h:1 +msgid "Click to insert an emoticon (Alt+M)" +msgstr "" + +#: ../data/glade/message_window.glade.h:2 ../src/chat_control.py:966 +msgid "OpenPGP Encryption" +msgstr "" + +#. Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector) +#: ../data/glade/message_window.glade.h:4 +#: ../data/glade/roster_window.glade.h:9 +msgid "_Actions" +msgstr "" + +#. Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector) +#: ../data/glade/message_window.glade.h:6 +#: ../data/glade/xml_console_window.glade.h:11 +#: ../src/filetransfers_window.py:249 +msgid "_Send" +msgstr "" + +#: ../data/glade/passphrase_dialog.glade.h:1 +msgid "Passphrase" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:1 +msgid "Advanced Configuration Editor" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:2 +msgid "Applications" +msgstr "" + +#. a header for custom browser/client/file manager. so translate sth like: Custom Settings +#: ../data/glade/preferences_window.glade.h:4 +msgid "Custom" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:5 +msgid "Format of a line" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:6 +msgid "GMail Options" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:7 +msgid "Interface Customization" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:9 +msgid "Preset Status Messages" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:11 +msgid "Visual Notifications" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:12 +msgid "A_fter nickname:" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:13 +msgid "Advanced" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:14 +msgid "" +"All chat states\n" +"Composing only\n" +"Disabled" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:17 +msgid "Allow _OS information to be sent" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:18 +msgid "Allow popup/notifications when I'm _away/na/busy/invisible" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:19 +msgid "Also known as iChat style" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:20 +msgid "Ask status message when I:" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:21 +msgid "Auto _away after:" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:22 +msgid "Auto _not available after:" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:23 +msgid "" +"Autodetect on every Gajim startup\n" +"Always use GNOME default applications\n" +"Always use KDE default applications\n" +"Custom" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:27 +msgid "B_efore nickname:" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:28 ../src/chat_control.py:718 +msgid "Chat" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:29 +msgid "Chat state noti_fications:" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:30 +msgid "" +"Check this option, only if someone you don't have in the roster spams/annoys " +"you. Use with caution, cause it blocks all messages from any contact that is " +"not in the roster" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:31 +msgid "Default status _iconset:" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:32 +msgid "Display _extra email details" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:33 +msgid "Display a_vatars of contacts in roster" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:34 +msgid "Display status _messages of contacts in roster" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:35 +msgid "E_very 5 minutes" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:36 +msgid "Emoticons:" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:37 +msgid "Events" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:38 +msgid "" +"Gajim can send and receive meta-information related to a conversation you " +"may have with a contact. Here you can specify which chatstates you want to " +"send to the other party." +msgstr "" + +#: ../data/glade/preferences_window.glade.h:39 +msgid "" +"Gajim will automatically show new events by poping up the relative window" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:40 +msgid "" +"Gajim will notify you for new events via a popup in the bottom right of the " +"screen" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:41 +msgid "" +"Gajim will notify you via a popup window in the bottom right of the screen " +"about contacts that just signed in" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:42 +msgid "" +"Gajim will notify you via a popup window in the bottom right of the screen " +"about contacts that just signed out" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:43 +msgid "" +"Gajim will only change the icon of the contact that triggered the new event" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:45 +msgid "" +"If checked, Gajim will display avatars of contacts in roster window and in " +"group chats" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:46 +msgid "" +"If checked, Gajim will display status messages of contacts under the contact " +"name in roster window and in group chats" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:47 +msgid "" +"If checked, Gajim will remember the roster and chat window positions in the " +"screen and the sizes of them next time you run it" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:48 +msgid "" +"If checked, Gajim will use protocol-specific status icons. (eg. A contact " +"from MSN will have the equivalent msn icon for status online, away, busy, " +"etc...)" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:49 +msgid "" +"If not disabled, Gajim will replace ascii smilies like ':)' with equivalent " +"animated or static graphical emoticons" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:50 +msgid "Ma_nage..." +msgstr "" + +#: ../data/glade/preferences_window.glade.h:51 +msgid "" +"Never\n" +"Always\n" +"Per account\n" +"Per type" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:55 +msgid "Notify me about contacts that: " +msgstr "" + +#: ../data/glade/preferences_window.glade.h:56 +msgid "Notify on new _GMail email" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:57 +msgid "On every _message" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:58 +msgid "One message _window:" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:59 +msgid "Play _sounds" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:60 +msgid "Preferences" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:61 +msgid "Print time:" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:62 +msgid "Save _position and size for roster and chat windows" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:63 +msgid "Show only in _roster" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:64 +msgid "Sign _in" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:65 +msgid "Sign _out" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:66 +msgid "Status" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:67 +msgid "T_heme:" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:68 +msgid "The auto away status message" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:69 +msgid "The auto not available status message" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:70 +msgid "Use _transports iconsets" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:71 +msgid "Use system _default" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:72 +msgid "Use t_rayicon (aka. notification area icon)" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:73 +msgid "" +"When a new event (message, file transfer request etc..) is received, the " +"following methods may be used to inform you about it. Please note that " +"events about new messages only occur if it is a new message from a contact " +"you are not already chatting with" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:74 +msgid "When new event is received" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:75 +msgid "_Advanced Notifications Control..." +msgstr "" + +#: ../data/glade/preferences_window.glade.h:76 +msgid "_After time:" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:77 +msgid "_Before time:" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:78 +msgid "_Browser:" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:79 +msgid "_File manager:" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:80 +msgid "_Font:" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:81 +msgid "_Highlight misspelled words" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:82 +msgid "_Ignore events from contacts not in the roster" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:83 +msgid "_Incoming message:" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:84 +msgid "_Log status changes of contacts" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:85 +msgid "_Mail client:" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:86 +msgid "_Never" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:87 +msgid "_Notify me about it" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:88 +msgid "_Open..." +msgstr "" + +#: ../data/glade/preferences_window.glade.h:89 +msgid "_Outgoing message:" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:90 +msgid "_Player:" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:91 +msgid "_Pop it up" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:92 +msgid "_Reset to Default Colors" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:93 +msgid "_Sort contacts by status" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:94 +msgid "_Status message:" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:95 +msgid "_URL:" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:96 +msgid "minutes" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:1 +msgid "Add / Edit a rule" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:2 +msgid "List of rules" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:3 +msgid "Privacy List" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:5 ../src/config.py:2281 +msgid "All" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:6 +msgid "Allow" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:7 +msgid "Default" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:9 +msgid "JabberID" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:10 +msgid "Order:" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:11 ../src/dialogs.py:1626 +msgid "Privacy List" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:12 +msgid "all by subscription" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:13 +msgid "all in the group" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:14 +msgid "" +"none\n" +"both\n" +"from\n" +"to" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:18 +msgid "to send me messages" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:19 +msgid "to send me queries" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:20 +msgid "to send me status" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:21 +msgid "to view my status" +msgstr "" + +#: ../data/glade/privacy_lists_first_window.glade.h:1 +msgid "Create your own Privacy Lists" +msgstr "" + +#: ../data/glade/privacy_lists_first_window.glade.h:2 +msgid "Server-based Privacy Lists" +msgstr "" + +#: ../data/glade/remove_account_window.glade.h:1 +msgid "What do you want to do?" +msgstr "" + +#: ../data/glade/remove_account_window.glade.h:2 +msgid "Remove account _only from Gajim" +msgstr "" + +#: ../data/glade/remove_account_window.glade.h:3 +msgid "Remove account from Gajim and from _server" +msgstr "" + +#: ../data/glade/roster_contact_context_menu.glade.h:1 +msgid "A_sk to see his/her status" +msgstr "" + +#: ../data/glade/roster_contact_context_menu.glade.h:2 +msgid "Add Special _Notification" +msgstr "" + +#: ../data/glade/roster_contact_context_menu.glade.h:3 +msgid "Assign Open_PGP Key" +msgstr "" + +#: ../data/glade/roster_contact_context_menu.glade.h:4 +msgid "Edit _Groups" +msgstr "" + +#: ../data/glade/roster_contact_context_menu.glade.h:5 +#: ../data/glade/systray_context_menu.glade.h:1 +msgid "Send Single _Message" +msgstr "" + +#: ../data/glade/roster_contact_context_menu.glade.h:7 +msgid "Start _Chat" +msgstr "" + +#: ../data/glade/roster_contact_context_menu.glade.h:9 +msgid "_Allow him/her to see my status" +msgstr "" + +#: ../data/glade/roster_contact_context_menu.glade.h:10 +msgid "_Forbid him/her to see my status" +msgstr "" + +#: ../data/glade/roster_contact_context_menu.glade.h:12 +#: ../src/roster_window.py:1482 +msgid "_Remove from Roster" +msgstr "" + +#: ../data/glade/roster_contact_context_menu.glade.h:13 +#: ../src/roster_window.py:1470 +msgid "_Rename" +msgstr "" + +#: ../data/glade/roster_contact_context_menu.glade.h:14 +msgid "_Subscription" +msgstr "" + +#: ../data/glade/roster_window.glade.h:1 +msgid "A_ccounts" +msgstr "" + +#: ../data/glade/roster_window.glade.h:2 +msgid "Add _Contact" +msgstr "" + +#: ../data/glade/roster_window.glade.h:3 +msgid "File _Transfers" +msgstr "" + +#: ../data/glade/roster_window.glade.h:4 +msgid "Frequently Asked Questions (online)" +msgstr "" + +#: ../data/glade/roster_window.glade.h:6 +msgid "Help online" +msgstr "" + +#: ../data/glade/roster_window.glade.h:7 +msgid "Profile, Avatar" +msgstr "" + +#: ../data/glade/roster_window.glade.h:8 +msgid "Show _Offline Contacts" +msgstr "" + +#: ../data/glade/roster_window.glade.h:11 +msgid "_Contents" +msgstr "" + +#: ../data/glade/roster_window.glade.h:12 +msgid "_Discover Services" +msgstr "" + +#: ../data/glade/roster_window.glade.h:13 ../src/disco.py:1252 +#: ../src/roster_window.py:1462 +msgid "_Edit" +msgstr "" + +#: ../data/glade/roster_window.glade.h:14 +msgid "_FAQ" +msgstr "" + +#: ../data/glade/roster_window.glade.h:16 +msgid "_Help" +msgstr "" + +#: ../data/glade/roster_window.glade.h:17 +msgid "_Preferences" +msgstr "" + +#: ../data/glade/roster_window.glade.h:18 +msgid "_Quit" +msgstr "" + +#: ../data/glade/service_discovery_window.glade.h:1 +msgid "G_o" +msgstr "" + +#: ../data/glade/service_discovery_window.glade.h:2 +msgid "_Address:" +msgstr "" + +#: ../data/glade/service_discovery_window.glade.h:3 +msgid "_Filter:" +msgstr "" + +#: ../data/glade/service_registration_window.glade.h:1 +msgid "Register to" +msgstr "" + +#: ../data/glade/service_registration_window.glade.h:2 +msgid "_Cancel" +msgstr "" + +#: ../data/glade/service_registration_window.glade.h:3 +msgid "_OK" +msgstr "" + +#: ../data/glade/single_message_window.glade.h:1 +msgid "0" +msgstr "" + +#: ../data/glade/single_message_window.glade.h:2 +msgid "From:" +msgstr "" + +#: ../data/glade/single_message_window.glade.h:3 +msgid "Reply to this message" +msgstr "" + +#: ../data/glade/single_message_window.glade.h:4 +msgid "Sen_d" +msgstr "" + +#: ../data/glade/single_message_window.glade.h:5 +msgid "Send message" +msgstr "" + +#: ../data/glade/single_message_window.glade.h:6 +msgid "Send message and close window" +msgstr "" + +#: ../data/glade/single_message_window.glade.h:7 +msgid "Subject:" +msgstr "" + +#: ../data/glade/single_message_window.glade.h:8 +msgid "To:" +msgstr "" + +#: ../data/glade/single_message_window.glade.h:9 +msgid "_Reply" +msgstr "" + +#: ../data/glade/single_message_window.glade.h:10 +msgid "_Send & Close" +msgstr "" + +#: ../data/glade/subscription_request_window.glade.h:1 +msgid "Authorize contact so he can know when you're connected" +msgstr "" + +#: ../data/glade/subscription_request_window.glade.h:2 +msgid "Contact _Info" +msgstr "" + +#: ../data/glade/subscription_request_window.glade.h:3 +msgid "Deny authorization from contact so he cannot know when you're connected" +msgstr "" + +#: ../data/glade/subscription_request_window.glade.h:4 +msgid "Subscription Request" +msgstr "" + +#: ../data/glade/subscription_request_window.glade.h:5 +msgid "_Authorize" +msgstr "" + +#: ../data/glade/subscription_request_window.glade.h:6 +msgid "_Deny" +msgstr "" + +#: ../data/glade/systray_context_menu.glade.h:2 +msgid "Show All Pending _Events" +msgstr "" + +#: ../data/glade/systray_context_menu.glade.h:3 +msgid "Show _Roster" +msgstr "" + +#: ../data/glade/systray_context_menu.glade.h:4 +msgid "Sta_tus" +msgstr "" + +#. "About" is the text of a tab of vcard window +#: ../data/glade/vcard_information_window.glade.h:2 +msgid "About" +msgstr "" + +#: ../data/glade/vcard_information_window.glade.h:3 +msgid "Address" +msgstr "" + +#: ../data/glade/vcard_information_window.glade.h:4 +msgid "Ask:" +msgstr "" + +#: ../data/glade/vcard_information_window.glade.h:5 +msgid "Birthday:" +msgstr "" + +#: ../data/glade/vcard_information_window.glade.h:6 +msgid "City:" +msgstr "" + +#: ../data/glade/vcard_information_window.glade.h:7 +msgid "Client:" +msgstr "" + +#: ../data/glade/vcard_information_window.glade.h:8 +msgid "Company:" +msgstr "" + +#: ../data/glade/vcard_information_window.glade.h:9 +msgid "Contact Information" +msgstr "" + +#: ../data/glade/vcard_information_window.glade.h:10 +msgid "Country:" +msgstr "" + +#: ../data/glade/vcard_information_window.glade.h:11 +msgid "Department:" +msgstr "" + +#: ../data/glade/vcard_information_window.glade.h:12 +msgid "E-Mail:" +msgstr "" + +#: ../data/glade/vcard_information_window.glade.h:13 +msgid "Extra Address:" +msgstr "" + +#. Family Name +#: ../data/glade/vcard_information_window.glade.h:15 +msgid "Family:" +msgstr "" + +#: ../data/glade/vcard_information_window.glade.h:16 +msgid "Format: YYYY-MM-DD" +msgstr "" + +#. Given Name +#: ../data/glade/vcard_information_window.glade.h:19 +msgid "Given:" +msgstr "" + +#: ../data/glade/vcard_information_window.glade.h:20 +msgid "Homepage:" +msgstr "" + +#: ../data/glade/vcard_information_window.glade.h:21 +msgid "Jabber" +msgstr "" + +#: ../data/glade/vcard_information_window.glade.h:22 +msgid "Jabber ID:" +msgstr "" + +#: ../data/glade/vcard_information_window.glade.h:23 +msgid "Location" +msgstr "" + +#. Middle Name +#: ../data/glade/vcard_information_window.glade.h:25 +msgid "Middle:" +msgstr "" + +#: ../data/glade/vcard_information_window.glade.h:26 +msgid "More" +msgstr "" + +#: ../data/glade/vcard_information_window.glade.h:29 +msgid "OS:" +msgstr "" + +#: ../data/glade/vcard_information_window.glade.h:30 +msgid "Phone No.:" +msgstr "" + +#: ../data/glade/vcard_information_window.glade.h:31 +msgid "Position:" +msgstr "" + +#: ../data/glade/vcard_information_window.glade.h:32 +msgid "Postal Code:" +msgstr "" + +#. Prefix in Name +#: ../data/glade/vcard_information_window.glade.h:34 +msgid "Prefix:" +msgstr "" + +#: ../data/glade/vcard_information_window.glade.h:35 +msgid "Resource:" +msgstr "" + +#: ../data/glade/vcard_information_window.glade.h:36 +msgid "Role:" +msgstr "" + +#: ../data/glade/vcard_information_window.glade.h:37 +msgid "Set _Avatar" +msgstr "" + +#: ../data/glade/vcard_information_window.glade.h:38 +msgid "State:" +msgstr "" + +#: ../data/glade/vcard_information_window.glade.h:39 +msgid "Status:" +msgstr "" + +#: ../data/glade/vcard_information_window.glade.h:40 +msgid "Street:" +msgstr "" + +#: ../data/glade/vcard_information_window.glade.h:41 +msgid "Subscription:" +msgstr "" + +#. Suffix in Name +#: ../data/glade/vcard_information_window.glade.h:43 +msgid "Suffix:" +msgstr "" + +#: ../data/glade/vcard_information_window.glade.h:44 +msgid "Work" +msgstr "" + +#: ../data/glade/vcard_information_window.glade.h:45 +msgid "_Log conversation history" +msgstr "" + +#: ../data/glade/vcard_information_window.glade.h:46 +msgid "_Publish" +msgstr "" + +#: ../data/glade/vcard_information_window.glade.h:47 +msgid "_Retrieve" +msgstr "" + +#: ../data/glade/xml_console_window.glade.h:1 +msgid "Jabber Traffic" +msgstr "" + +#: ../data/glade/xml_console_window.glade.h:2 +msgid "XML Input" +msgstr "" + +#. XML Console enable checkbutton +#: ../data/glade/xml_console_window.glade.h:4 +msgid "Enable" +msgstr "" + +#. Info/Query make the "IQ" initials. So translate like this 'YourLang/YourLang (Info/Query)'. Thanks (it's a tooltip so width is not a problem) +#: ../data/glade/xml_console_window.glade.h:6 +msgid "Info/Query" +msgstr "" + +#. Info/Query: all(?) jabber xml start with Whom do you want to ban?\n" "\n" msgstr "" -#: ../src/config.py:2023 +#: ../src/config.py:2062 msgid "Adding Member..." msgstr "" -#: ../src/config.py:2024 +#: ../src/config.py:2063 msgid "" "Whom do you want to make a member?\n" "\n" msgstr "" -#: ../src/config.py:2026 +#: ../src/config.py:2065 msgid "Adding Owner..." msgstr "" -#: ../src/config.py:2027 +#: ../src/config.py:2066 msgid "" "Whom do you want to make a owner?\n" "\n" msgstr "" -#: ../src/config.py:2029 +#: ../src/config.py:2068 msgid "Adding Administrator..." msgstr "" -#: ../src/config.py:2030 +#: ../src/config.py:2069 msgid "" "Whom do you want to make an administrator?\n" "\n" msgstr "" -#: ../src/config.py:2031 +#: ../src/config.py:2070 msgid "" "Can be one of the following:\n" "1. user@domain/resource (only that resource matches).\n" @@ -392,661 +2313,733 @@ msgid "" "domain/resource, or address containing a subdomain." msgstr "" -#: ../src/config.py:2127 +#: ../src/config.py:2166 #, python-format msgid "Removing %s account" msgstr "" -#: ../src/config.py:2144 ../src/roster_window.py:1859 +#: ../src/config.py:2183 ../src/roster_window.py:1857 msgid "Password Required" msgstr "" -#: ../src/config.py:2145 ../src/roster_window.py:1860 +#: ../src/config.py:2184 ../src/roster_window.py:1858 #, python-format msgid "Enter your password for account %s" msgstr "" -#: ../src/config.py:2146 ../src/roster_window.py:1861 +#: ../src/config.py:2185 ../src/roster_window.py:1859 msgid "Save password" msgstr "" -#: ../src/config.py:2159 +#: ../src/config.py:2198 #, python-format msgid "Account \"%s\" is connected to the server" msgstr "" -#: ../src/config.py:2160 +#: ../src/config.py:2199 msgid "If you remove it, the connection will be lost." msgstr "" -#: ../src/config.py:2295 +#: ../src/config.py:2282 +msgid "Enter and leave only" +msgstr "" + +#: ../src/config.py:2352 msgid "New Room" msgstr "" -#: ../src/config.py:2326 +#: ../src/config.py:2383 msgid "This bookmark has invalid data" msgstr "" -#: ../src/config.py:2327 +#: ../src/config.py:2384 msgid "" "Please be sure to fill out server and room fields or remove this bookmark." msgstr "" -#: ../src/config.py:2564 +#: ../src/config.py:2638 msgid "Invalid username" msgstr "" -#: ../src/config.py:2565 +#: ../src/config.py:2639 msgid "You must provide a username to configure this account." msgstr "" -#: ../src/config.py:2574 ../src/dialogs.py:1036 +#: ../src/config.py:2648 ../src/dialogs.py:1118 msgid "Invalid password" msgstr "" -#: ../src/config.py:2575 +#: ../src/config.py:2649 msgid "You must enter a password for the new account." msgstr "" -#: ../src/config.py:2579 ../src/dialogs.py:1041 +#: ../src/config.py:2653 ../src/dialogs.py:1123 msgid "Passwords do not match" msgstr "" -#: ../src/config.py:2580 ../src/dialogs.py:1042 +#: ../src/config.py:2654 ../src/dialogs.py:1124 msgid "The passwords typed in both fields must be identical." msgstr "" -#: ../src/config.py:2599 +#: ../src/config.py:2673 msgid "Duplicate Jabber ID" msgstr "" -#: ../src/config.py:2600 +#: ../src/config.py:2674 msgid "This account is already configured in Gajim." msgstr "" -#: ../src/config.py:2617 +#: ../src/config.py:2691 msgid "Account has been added successfully" msgstr "" -#: ../src/config.py:2618 ../src/config.py:2651 +#: ../src/config.py:2692 ../src/config.py:2725 msgid "" "You can set advanced account options by pressing Advanced button, or later " "by clicking in Accounts menuitem under Edit menu from the main window." msgstr "" -#: ../src/config.py:2650 +#: ../src/config.py:2724 msgid "Your new account has been created successfully" msgstr "" -#: ../src/config.py:2666 +#: ../src/config.py:2740 msgid "An error occured during account creation" msgstr "" -#: ../src/config.py:2723 +#: ../src/config.py:2797 msgid "Account name is in use" msgstr "" -#: ../src/config.py:2724 +#: ../src/config.py:2798 msgid "You already have an account using this name." msgstr "" -#: ../src/conversation_textview.py:182 +#: ../src/conversation_textview.py:205 msgid "" "Text below this line is what has been said since the last time you paid " "attention to this group chat" msgstr "" -#: ../src/conversation_textview.py:239 +#: ../src/conversation_textview.py:263 #, python-format msgid "Actions for \"%s\"" msgstr "" -#: ../src/conversation_textview.py:251 +#: ../src/conversation_textview.py:275 msgid "Read _Wikipedia Article" msgstr "" -#: ../src/conversation_textview.py:255 +#: ../src/conversation_textview.py:280 msgid "Look it up in _Dictionary" msgstr "" #. we must have %s in the url if not WIKTIONARY -#: ../src/conversation_textview.py:270 +#: ../src/conversation_textview.py:296 #, python-format msgid "Dictionary URL is missing an \"%s\" and it is not WIKTIONARY" msgstr "" #. we must have %s in the url -#: ../src/conversation_textview.py:281 +#: ../src/conversation_textview.py:308 #, python-format msgid "Web Search URL is missing an \"%s\"" msgstr "" -#: ../src/conversation_textview.py:284 +#: ../src/conversation_textview.py:311 msgid "Web _Search for it" msgstr "" -#: ../src/conversation_textview.py:574 +#: ../src/conversation_textview.py:607 msgid "Yesterday" msgstr "" #. the number is >= 2 #. %i is day in year (1-365), %d (1-31) we want %i -#: ../src/conversation_textview.py:578 +#: ../src/conversation_textview.py:611 #, python-format msgid "%i days ago" msgstr "" #. if we have subject, show it too! -#: ../src/conversation_textview.py:634 +#: ../src/conversation_textview.py:686 #, python-format msgid "Subject: %s\n" msgstr "" #. only say that to non Windows users -#: ../src/dbus_support.py:34 +#: ../src/dbus_support.py:32 msgid "D-Bus python bindings are missing in this computer" msgstr "" -#: ../src/dbus_support.py:35 +#: ../src/dbus_support.py:33 msgid "D-Bus capabilities of Gajim cannot be used" msgstr "" -#: ../src/dialogs.py:64 +#: ../src/dialogs.py:55 #, python-format msgid "Contact's name: %s" msgstr "" -#: ../src/dialogs.py:66 +#: ../src/dialogs.py:57 #, python-format msgid "JID: %s" msgstr "" -#: ../src/dialogs.py:169 +#. Group name +#. In group boolean +#: ../src/dialogs.py:173 msgid "Group" msgstr "" -#: ../src/dialogs.py:176 +#: ../src/dialogs.py:180 msgid "In the group" msgstr "" -#: ../src/dialogs.py:226 +#: ../src/dialogs.py:230 msgid "KeyID" msgstr "" -#: ../src/dialogs.py:229 +#: ../src/dialogs.py:233 msgid "Contact name" msgstr "" -#: ../src/dialogs.py:263 +#: ../src/dialogs.py:266 #, python-format msgid "%s Status Message" msgstr "" -#: ../src/dialogs.py:265 +#: ../src/dialogs.py:268 msgid "Status Message" msgstr "" -#: ../src/dialogs.py:340 +#: ../src/dialogs.py:343 msgid "Save as Preset Status Message" msgstr "" -#: ../src/dialogs.py:341 +#: ../src/dialogs.py:344 msgid "Please type a name for this status message" msgstr "" -#: ../src/dialogs.py:369 +#: ../src/dialogs.py:391 #, python-format msgid "Please fill in the data of the contact you want to add in account %s" msgstr "" -#: ../src/dialogs.py:371 +#: ../src/dialogs.py:393 msgid "Please fill in the data of the contact you want to add" msgstr "" -#. the user can be in mutiple groups, see in all of them -#: ../src/dialogs.py:380 ../src/disco.py:118 ../src/disco.py:119 -#: ../src/disco.py:1258 ../src/roster_window.py:214 -#: ../src/roster_window.py:275 ../src/roster_window.py:310 -#: ../src/roster_window.py:330 ../src/roster_window.py:354 -#: ../src/roster_window.py:2940 ../src/roster_window.py:2942 -#: ../src/systray.py:291 ../src/common/helpers.py:42 +#: ../src/dialogs.py:403 ../src/disco.py:109 ../src/disco.py:110 +#: ../src/disco.py:1249 ../src/roster_window.py:207 +#: ../src/roster_window.py:273 ../src/roster_window.py:309 +#: ../src/roster_window.py:329 ../src/roster_window.py:353 +#: ../src/roster_window.py:2973 ../src/roster_window.py:2975 +#: ../src/common/helpers.py:39 msgid "Transports" msgstr "" -#: ../src/dialogs.py:452 ../src/dialogs.py:458 +#: ../src/dialogs.py:493 ../src/dialogs.py:499 msgid "Invalid User ID" msgstr "" -#: ../src/dialogs.py:459 +#: ../src/dialogs.py:500 msgid "The user ID must not contain a resource." msgstr "" -#: ../src/dialogs.py:466 +#: ../src/dialogs.py:513 msgid "Contact already in roster" msgstr "" -#: ../src/dialogs.py:467 +#: ../src/dialogs.py:514 msgid "This contact is already listed in your roster." msgstr "" -#: ../src/dialogs.py:528 +#: ../src/dialogs.py:576 msgid "A GTK+ jabber client" msgstr "" -#: ../src/dialogs.py:539 +#: ../src/dialogs.py:577 +msgid "GTK+ Version:" +msgstr "" + +#: ../src/dialogs.py:578 +msgid "PyGTK Version:" +msgstr "" + +#: ../src/dialogs.py:586 +msgid "Current Developers:" +msgstr "" + +#: ../src/dialogs.py:588 msgid "Past Developers:" msgstr "" -#: ../src/dialogs.py:543 +#: ../src/dialogs.py:592 msgid "THANKS:" msgstr "" -#. remove one english setence +#. remove one english sentence #. and add it manually as translatable -#: ../src/dialogs.py:550 +#: ../src/dialogs.py:598 msgid "Last but not least, we would like to thank all the package maintainers." msgstr "" #. here you write your name in the form Name FamilyName -#: ../src/dialogs.py:564 +#: ../src/dialogs.py:612 msgid "translator-credits" msgstr "" -#: ../src/dialogs.py:826 +#: ../src/dialogs.py:738 +#, python-format +msgid "Unable to bind to port %s." +msgstr "" + +#: ../src/dialogs.py:739 +msgid "" +"Maybe you have another running instance of Gajim. File Transfer will be " +"canceled." +msgstr "" + +#: ../src/dialogs.py:881 #, python-format msgid "Subscription request for account %s from %s" msgstr "" -#: ../src/dialogs.py:829 +#: ../src/dialogs.py:884 #, python-format msgid "Subscription request from %s" msgstr "" -#: ../src/dialogs.py:872 +#: ../src/dialogs.py:926 msgid "You can not join a group chat unless you are connected." msgstr "" -#: ../src/dialogs.py:885 +#: ../src/dialogs.py:939 #, python-format msgid "Join Group Chat with account %s" msgstr "" -#: ../src/dialogs.py:887 ../src/gtkgui.glade.h:177 -msgid "Join Group Chat" -msgstr "" - -#: ../src/dialogs.py:976 +#: ../src/dialogs.py:1030 msgid "Invalid room or server name" msgstr "" -#: ../src/dialogs.py:977 +#: ../src/dialogs.py:1031 msgid "The room name or server name has not allowed characters." msgstr "" -#: ../src/dialogs.py:996 +#: ../src/dialogs.py:1050 #, python-format msgid "Start Chat with account %s" msgstr "" -#: ../src/dialogs.py:998 +#: ../src/dialogs.py:1052 msgid "Start Chat" msgstr "" -#: ../src/dialogs.py:999 +#: ../src/dialogs.py:1053 msgid "" -"Fill in the contact ID of the contact you would like\n" +"Fill in the jid, or nick of the contact you would like\n" "to send a chat message to:" msgstr "" #. if offline or connecting -#: ../src/dialogs.py:1007 ../src/dialogs.py:1330 ../src/dialogs.py:1450 +#: ../src/dialogs.py:1078 ../src/dialogs.py:1427 ../src/dialogs.py:1551 msgid "Connection not available" msgstr "" -#: ../src/dialogs.py:1008 ../src/dialogs.py:1331 ../src/dialogs.py:1451 +#: ../src/dialogs.py:1079 ../src/dialogs.py:1428 ../src/dialogs.py:1552 #, python-format msgid "Please make sure you are connected with \"%s\"." msgstr "" -#: ../src/dialogs.py:1018 +#: ../src/dialogs.py:1088 ../src/dialogs.py:1091 +msgid "Invalid JID" +msgstr "" + +#: ../src/dialogs.py:1091 +#, python-format +msgid "Unable to parse \"%s\"." +msgstr "" + +#: ../src/dialogs.py:1100 msgid "Without a connection, you can not change your password." msgstr "" -#: ../src/dialogs.py:1037 +#: ../src/dialogs.py:1119 msgid "You must enter a password." msgstr "" #. img to display #. default value -#: ../src/dialogs.py:1083 ../src/gajim.py:443 ../src/notify.py:129 +#: ../src/dialogs.py:1165 ../src/notify.py:126 ../src/notify.py:268 msgid "Contact Signed In" msgstr "" -#: ../src/dialogs.py:1085 ../src/gajim.py:474 ../src/notify.py:131 +#: ../src/dialogs.py:1167 ../src/notify.py:134 ../src/notify.py:270 msgid "Contact Signed Out" msgstr "" #. chat message -#: ../src/dialogs.py:1087 ../src/gajim.py:609 ../src/notify.py:133 +#: ../src/dialogs.py:1169 ../src/notify.py:154 ../src/notify.py:272 msgid "New Message" msgstr "" #. single message -#: ../src/dialogs.py:1087 ../src/gajim.py:603 ../src/notify.py:133 +#: ../src/dialogs.py:1169 ../src/notify.py:138 ../src/notify.py:272 msgid "New Single Message" msgstr "" -#: ../src/dialogs.py:1088 ../src/gajim.py:586 ../src/notify.py:134 +#. private message +#: ../src/dialogs.py:1170 ../src/notify.py:145 ../src/notify.py:273 msgid "New Private Message" msgstr "" -#: ../src/dialogs.py:1088 ../src/gajim.py:1049 ../src/notify.py:142 +#: ../src/dialogs.py:1170 ../src/gajim.py:1044 ../src/notify.py:281 msgid "New E-mail" msgstr "" -#: ../src/dialogs.py:1090 ../src/gajim.py:1187 ../src/notify.py:136 +#: ../src/dialogs.py:1172 ../src/gajim.py:1187 ../src/notify.py:275 msgid "File Transfer Request" msgstr "" -#: ../src/dialogs.py:1092 ../src/gajim.py:1035 ../src/gajim.py:1164 -#: ../src/notify.py:138 +#: ../src/dialogs.py:1174 ../src/gajim.py:1022 ../src/gajim.py:1164 +#: ../src/notify.py:277 msgid "File Transfer Error" msgstr "" -#: ../src/dialogs.py:1094 ../src/gajim.py:1222 ../src/gajim.py:1244 -#: ../src/gajim.py:1261 ../src/notify.py:140 +#: ../src/dialogs.py:1176 ../src/gajim.py:1222 ../src/gajim.py:1244 +#: ../src/gajim.py:1261 ../src/notify.py:279 msgid "File Transfer Completed" msgstr "" -#: ../src/dialogs.py:1095 ../src/gajim.py:1225 ../src/notify.py:140 +#: ../src/dialogs.py:1177 ../src/gajim.py:1225 ../src/notify.py:279 msgid "File Transfer Stopped" msgstr "" -#: ../src/dialogs.py:1097 ../src/gajim.py:953 ../src/notify.py:144 +#: ../src/dialogs.py:1179 ../src/gajim.py:920 ../src/notify.py:283 msgid "Groupchat Invitation" msgstr "" +#: ../src/dialogs.py:1181 ../src/notify.py:118 ../src/notify.py:285 +msgid "Contact Changed Status" +msgstr "" + #. FIXME: for Received with should become 'in' -#: ../src/dialogs.py:1262 +#: ../src/dialogs.py:1359 #, python-format msgid "Single Message with account %s" msgstr "" -#: ../src/dialogs.py:1264 +#: ../src/dialogs.py:1361 msgid "Single Message" msgstr "" #. prepare UI for Sending -#: ../src/dialogs.py:1267 +#: ../src/dialogs.py:1364 #, python-format msgid "Send %s" msgstr "" #. prepare UI for Receiving -#: ../src/dialogs.py:1290 +#: ../src/dialogs.py:1387 #, python-format msgid "Received %s" msgstr "" #. we create a new blank window to send and we preset RE: and to jid -#: ../src/dialogs.py:1355 +#: ../src/dialogs.py:1454 #, python-format msgid "RE: %s" msgstr "" -#: ../src/dialogs.py:1356 +#: ../src/dialogs.py:1455 #, python-format msgid "%s wrote:\n" msgstr "" -#: ../src/dialogs.py:1400 +#: ../src/dialogs.py:1499 #, python-format msgid "XML Console for %s" msgstr "" -#: ../src/dialogs.py:1402 +#: ../src/dialogs.py:1501 msgid "XML Console" msgstr "" +#: ../src/dialogs.py:1620 +#, python-format +msgid "Privacy List %s" +msgstr "" + +#: ../src/dialogs.py:1624 +#, python-format +msgid "Privacy List for %s" +msgstr "" + +#: ../src/dialogs.py:1716 +msgid "Edit a rule" +msgstr "" + +#: ../src/dialogs.py:1801 +msgid "Add a rule" +msgstr "" + +#: ../src/dialogs.py:1897 +#, python-format +msgid "Privacy Lists for %s" +msgstr "" + +#: ../src/dialogs.py:1899 +msgid "Privacy Lists" +msgstr "" + #. FIXME: use nickname instead of contact_jid -#: ../src/dialogs.py:1488 +#: ../src/dialogs.py:1988 #, python-format msgid "%(contact_jid)s has invited you to %(room_jid)s room" msgstr "" #. only if not None and not '' -#: ../src/dialogs.py:1494 +#: ../src/dialogs.py:1994 #, python-format msgid "Comment: %s" msgstr "" -#: ../src/dialogs.py:1554 +#: ../src/dialogs.py:2054 msgid "Choose Sound" msgstr "" -#: ../src/dialogs.py:1564 ../src/dialogs.py:1607 +#: ../src/dialogs.py:2064 ../src/dialogs.py:2107 msgid "All files" msgstr "" -#: ../src/dialogs.py:1569 +#: ../src/dialogs.py:2069 msgid "Wav Sounds" msgstr "" -#: ../src/dialogs.py:1597 +#: ../src/dialogs.py:2097 msgid "Choose Image" msgstr "" -#: ../src/dialogs.py:1612 +#: ../src/dialogs.py:2112 msgid "Images" msgstr "" -#: ../src/dialogs.py:1658 +#: ../src/dialogs.py:2157 #, python-format msgid "When %s becomes:" msgstr "" -#: ../src/dialogs.py:1660 +#: ../src/dialogs.py:2159 #, python-format msgid "Adding Special Notification for %s" msgstr "" -#: ../src/disco.py:117 +#: ../src/dialogs.py:2232 +msgid "Condition" +msgstr "" + +#: ../src/disco.py:108 msgid "Others" msgstr "" #. conference is a category for listing mostly groupchats in service discovery -#: ../src/disco.py:121 +#: ../src/disco.py:112 msgid "Conference" msgstr "" -#: ../src/disco.py:420 +#: ../src/disco.py:411 msgid "Without a connection, you can not browse available services" msgstr "" -#: ../src/disco.py:499 +#: ../src/disco.py:490 #, python-format msgid "Service Discovery using account %s" msgstr "" -#: ../src/disco.py:500 +#: ../src/disco.py:491 msgid "Service Discovery" msgstr "" -#: ../src/disco.py:637 +#: ../src/disco.py:628 msgid "The service could not be found" msgstr "" -#: ../src/disco.py:638 +#: ../src/disco.py:629 msgid "" "There is no service at the address you entered, or it is not responding. " "Check the address and try again." msgstr "" -#: ../src/disco.py:642 ../src/disco.py:924 +#: ../src/disco.py:633 ../src/disco.py:915 msgid "The service is not browsable" msgstr "" -#: ../src/disco.py:643 +#: ../src/disco.py:634 msgid "This type of service does not contain any items to browse." msgstr "" -#: ../src/disco.py:723 +#: ../src/disco.py:714 #, python-format msgid "Browsing %s using account %s" msgstr "" -#: ../src/disco.py:762 +#: ../src/disco.py:753 msgid "_Browse" msgstr "" -#: ../src/disco.py:925 +#: ../src/disco.py:916 msgid "This service does not contain any items to browse." msgstr "" -#: ../src/disco.py:1146 ../src/disco.py:1263 +#: ../src/disco.py:1137 ../src/disco.py:1254 msgid "Re_gister" msgstr "" -#: ../src/disco.py:1154 ../src/disco.py:1516 ../src/gtkgui.glade.h:350 -msgid "_Join" -msgstr "" - -#: ../src/disco.py:1261 ../src/gtkgui.glade.h:334 ../src/roster_window.py:1462 -msgid "_Edit" -msgstr "" - -#: ../src/disco.py:1300 +#: ../src/disco.py:1291 #, python-format msgid "Scanning %d / %d.." msgstr "" #. Users column -#: ../src/disco.py:1482 +#: ../src/disco.py:1473 msgid "Users" msgstr "" #. Description column -#: ../src/disco.py:1489 +#: ../src/disco.py:1480 msgid "Description" msgstr "" -#: ../src/filetransfers_window.py:81 +#: ../src/filetransfers_window.py:72 msgid "File" msgstr "" -#: ../src/filetransfers_window.py:96 +#: ../src/filetransfers_window.py:87 msgid "Time" msgstr "" -#: ../src/filetransfers_window.py:108 +#: ../src/filetransfers_window.py:99 msgid "Progress" msgstr "" -#: ../src/filetransfers_window.py:176 ../src/filetransfers_window.py:238 +#: ../src/filetransfers_window.py:163 ../src/filetransfers_window.py:223 #, python-format msgid "Filename: %s" msgstr "" -#: ../src/filetransfers_window.py:178 ../src/filetransfers_window.py:308 +#: ../src/filetransfers_window.py:164 ../src/filetransfers_window.py:291 #, python-format msgid "Size: %s" msgstr "" #. You is a reply of who sent a file #. You is a reply of who received a file -#: ../src/filetransfers_window.py:187 ../src/filetransfers_window.py:197 -#: ../src/history_manager.py:452 +#: ../src/filetransfers_window.py:173 ../src/filetransfers_window.py:183 +#: ../src/history_manager.py:454 msgid "You" msgstr "" -#: ../src/filetransfers_window.py:188 ../src/filetransfers_window.py:240 +#: ../src/filetransfers_window.py:174 ../src/filetransfers_window.py:224 #, python-format msgid "Sender: %s" msgstr "" -#: ../src/filetransfers_window.py:189 ../src/filetransfers_window.py:555 -#: ../src/tooltips.py:617 +#: ../src/filetransfers_window.py:175 ../src/filetransfers_window.py:556 +#: ../src/tooltips.py:639 msgid "Recipient: " msgstr "" -#: ../src/filetransfers_window.py:200 +#: ../src/filetransfers_window.py:186 #, python-format msgid "Saved in: %s" msgstr "" -#: ../src/filetransfers_window.py:203 +#: ../src/filetransfers_window.py:188 msgid "File transfer completed" msgstr "" -#: ../src/filetransfers_window.py:205 ../src/gtkgui.glade.h:366 -msgid "_Open Containing Folder" -msgstr "" - -#: ../src/filetransfers_window.py:219 ../src/filetransfers_window.py:227 +#: ../src/filetransfers_window.py:204 ../src/filetransfers_window.py:212 msgid "File transfer canceled" msgstr "" -#: ../src/filetransfers_window.py:219 ../src/filetransfers_window.py:228 +#: ../src/filetransfers_window.py:204 ../src/filetransfers_window.py:213 msgid "Connection with peer cannot be established." msgstr "" -#: ../src/filetransfers_window.py:242 +#: ../src/filetransfers_window.py:225 msgid "File transfer stopped by the contact of the other side" msgstr "" -#: ../src/filetransfers_window.py:259 +#: ../src/filetransfers_window.py:242 msgid "Choose File to Send..." msgstr "" -#. Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector) -#: ../src/filetransfers_window.py:266 ../src/gtkgui.glade.h:390 -msgid "_Send" -msgstr "" - -#: ../src/filetransfers_window.py:273 +#: ../src/filetransfers_window.py:256 msgid "Gajim cannot access this file" msgstr "" -#: ../src/filetransfers_window.py:274 +#: ../src/filetransfers_window.py:257 msgid "This file is being used by another process." msgstr "" -#: ../src/filetransfers_window.py:306 +#: ../src/filetransfers_window.py:289 #, python-format msgid "File: %s" msgstr "" -#: ../src/filetransfers_window.py:311 +#: ../src/filetransfers_window.py:294 #, python-format msgid "Type: %s" msgstr "" -#: ../src/filetransfers_window.py:313 +#: ../src/filetransfers_window.py:296 #, python-format msgid "Description: %s" msgstr "" -#: ../src/filetransfers_window.py:314 +#: ../src/filetransfers_window.py:297 #, python-format msgid "%s wants to send you a file:" msgstr "" -#: ../src/filetransfers_window.py:329 +#: ../src/filetransfers_window.py:311 +#, python-format +msgid "Cannot overwrite existing file \"%s\"" +msgstr "" + +#: ../src/filetransfers_window.py:312 +msgid "" +"A file with this name already exists and you do not have permission to " +"overwrite it." +msgstr "" + +#: ../src/filetransfers_window.py:319 ../src/gtkgui_helpers.py:685 msgid "This file already exists" msgstr "" -#: ../src/filetransfers_window.py:329 +#: ../src/filetransfers_window.py:319 ../src/gtkgui_helpers.py:685 msgid "What do you want to do?" msgstr "" -#: ../src/filetransfers_window.py:344 +#: ../src/filetransfers_window.py:331 +#, python-format +msgid "Directory \"%s\" is not writable" +msgstr "" + +#: ../src/filetransfers_window.py:331 +msgid "You do not have permission to create files in this directory." +msgstr "" + +#: ../src/filetransfers_window.py:341 msgid "Save File as..." msgstr "" #. Print remaining time in format 00:00:00 #. You can change the places of (hours), (minutes), (seconds) - #. they are not translatable. -#: ../src/filetransfers_window.py:419 +#: ../src/filetransfers_window.py:420 #, python-format msgid "%(hours)02.d:%(minutes)02.d:%(seconds)02.d" msgstr "" @@ -1054,29 +3047,29 @@ msgstr "" #. This should make the string Kb/s, #. where 'Kb' part is taken from %s. #. Only the 's' after / (which means second) should be translated. -#: ../src/filetransfers_window.py:491 +#: ../src/filetransfers_window.py:492 #, python-format msgid "(%(filesize_unit)s/s)" msgstr "" -#: ../src/filetransfers_window.py:527 ../src/filetransfers_window.py:530 +#: ../src/filetransfers_window.py:528 ../src/filetransfers_window.py:531 msgid "Invalid File" msgstr "" -#: ../src/filetransfers_window.py:527 +#: ../src/filetransfers_window.py:528 msgid "File: " msgstr "" -#: ../src/filetransfers_window.py:531 +#: ../src/filetransfers_window.py:532 msgid "It is not possible to send empty files" msgstr "" -#: ../src/filetransfers_window.py:551 ../src/tooltips.py:498 -#: ../src/tooltips.py:607 +#: ../src/filetransfers_window.py:552 ../src/tooltips.py:511 +#: ../src/tooltips.py:629 msgid "Name: " msgstr "" -#: ../src/filetransfers_window.py:553 ../src/tooltips.py:611 +#: ../src/filetransfers_window.py:554 ../src/tooltips.py:633 msgid "Sender: " msgstr "" @@ -1084,252 +3077,278 @@ msgstr "" msgid "Pause" msgstr "" -#: ../src/filetransfers_window.py:753 ../src/gtkgui.glade.h:328 -msgid "_Continue" -msgstr "" - -#: ../src/gajim-remote.py:84 +#: ../src/gajim-remote.py:82 msgid "shows a help on specific command" msgstr "" #. User gets help for the command, specified by this parameter -#: ../src/gajim-remote.py:87 +#: ../src/gajim-remote.py:85 msgid "command" msgstr "" -#: ../src/gajim-remote.py:88 +#: ../src/gajim-remote.py:86 msgid "show help on command" msgstr "" -#: ../src/gajim-remote.py:92 +#: ../src/gajim-remote.py:90 msgid "Shows or hides the roster window" msgstr "" -#: ../src/gajim-remote.py:96 +#: ../src/gajim-remote.py:94 msgid "Popups a window with the next unread message" msgstr "" -#: ../src/gajim-remote.py:100 +#: ../src/gajim-remote.py:98 msgid "" "Prints a list of all contacts in the roster. Each contact appear on a " "separate line" msgstr "" -#: ../src/gajim-remote.py:102 ../src/gajim-remote.py:115 -#: ../src/gajim-remote.py:125 ../src/gajim-remote.py:138 -#: ../src/gajim-remote.py:159 ../src/gajim-remote.py:189 -#: ../src/gajim-remote.py:197 ../src/gajim-remote.py:204 -#: ../src/gajim-remote.py:211 +#: ../src/gajim-remote.py:100 ../src/gajim-remote.py:114 +#: ../src/gajim-remote.py:124 ../src/gajim-remote.py:137 +#: ../src/gajim-remote.py:151 ../src/gajim-remote.py:172 +#: ../src/gajim-remote.py:202 ../src/gajim-remote.py:211 +#: ../src/gajim-remote.py:218 ../src/gajim-remote.py:225 +#: ../src/gajim-remote.py:236 msgid "account" msgstr "" -#: ../src/gajim-remote.py:102 +#: ../src/gajim-remote.py:100 msgid "show only contacts of the given account" msgstr "" -#: ../src/gajim-remote.py:107 +#: ../src/gajim-remote.py:105 msgid "Prints a list of registered accounts" msgstr "" -#: ../src/gajim-remote.py:111 +#: ../src/gajim-remote.py:109 msgid "Changes the status of account or accounts" msgstr "" -#: ../src/gajim-remote.py:113 +#. offline, online, chat, away, xa, dnd, invisible should not be translated +#: ../src/gajim-remote.py:112 msgid "status" msgstr "" -#: ../src/gajim-remote.py:113 +#: ../src/gajim-remote.py:112 msgid "one of: offline, online, chat, away, xa, dnd, invisible " msgstr "" -#: ../src/gajim-remote.py:114 ../src/gajim-remote.py:135 +#: ../src/gajim-remote.py:113 ../src/gajim-remote.py:134 +#: ../src/gajim-remote.py:148 msgid "message" msgstr "" -#: ../src/gajim-remote.py:114 +#: ../src/gajim-remote.py:113 msgid "status message" msgstr "" -#: ../src/gajim-remote.py:115 +#: ../src/gajim-remote.py:114 msgid "" "change status of account \"account\". If not specified, try to change status " "of all accounts that have \"sync with global status\" option set" msgstr "" -#: ../src/gajim-remote.py:121 +#: ../src/gajim-remote.py:120 msgid "Shows the chat dialog so that you can send messages to a contact" msgstr "" -#: ../src/gajim-remote.py:123 +#: ../src/gajim-remote.py:122 msgid "JID of the contact that you want to chat with" msgstr "" -#: ../src/gajim-remote.py:125 ../src/gajim-remote.py:189 +#: ../src/gajim-remote.py:124 ../src/gajim-remote.py:202 msgid "if specified, contact is taken from the contact list of this account" msgstr "" -#: ../src/gajim-remote.py:130 +#: ../src/gajim-remote.py:129 msgid "" -"Sends new message to a contact in the roster. Both OpenPGP key and account " -"are optional. If you want to set only 'account', without 'OpenPGP key', just " -"set 'OpenPGP key' to ''." +"Sends new chat message to a contact in the roster. Both OpenPGP key and " +"account are optional. If you want to set only 'account', without 'OpenPGP " +"key', just set 'OpenPGP key' to ''." msgstr "" -#: ../src/gajim-remote.py:134 +#: ../src/gajim-remote.py:133 ../src/gajim-remote.py:146 msgid "JID of the contact that will receive the message" msgstr "" -#: ../src/gajim-remote.py:135 +#: ../src/gajim-remote.py:134 ../src/gajim-remote.py:148 msgid "message contents" msgstr "" -#: ../src/gajim-remote.py:136 +#: ../src/gajim-remote.py:135 ../src/gajim-remote.py:149 msgid "pgp key" msgstr "" -#: ../src/gajim-remote.py:136 +#: ../src/gajim-remote.py:135 ../src/gajim-remote.py:149 msgid "if specified, the message will be encrypted using this public key" msgstr "" -#: ../src/gajim-remote.py:138 +#: ../src/gajim-remote.py:137 ../src/gajim-remote.py:151 msgid "if specified, the message will be sent using this account" msgstr "" -#: ../src/gajim-remote.py:143 +#: ../src/gajim-remote.py:142 +msgid "" +"Sends new single message to a contact in the roster. Both OpenPGP key and " +"account are optional. If you want to set only 'account', without 'OpenPGP " +"key', just set 'OpenPGP key' to ''." +msgstr "" + +#: ../src/gajim-remote.py:147 +msgid "subject" +msgstr "" + +#: ../src/gajim-remote.py:147 +msgid "message subject" +msgstr "" + +#: ../src/gajim-remote.py:156 msgid "Gets detailed info on a contact" msgstr "" -#: ../src/gajim-remote.py:145 ../src/gajim-remote.py:158 -#: ../src/gajim-remote.py:188 +#: ../src/gajim-remote.py:158 ../src/gajim-remote.py:171 +#: ../src/gajim-remote.py:201 ../src/gajim-remote.py:210 msgid "JID of the contact" msgstr "" -#: ../src/gajim-remote.py:149 +#: ../src/gajim-remote.py:162 msgid "Gets detailed info on a account" msgstr "" -#: ../src/gajim-remote.py:151 +#: ../src/gajim-remote.py:164 msgid "Name of the account" msgstr "" -#: ../src/gajim-remote.py:155 +#: ../src/gajim-remote.py:168 msgid "Sends file to a contact" msgstr "" -#: ../src/gajim-remote.py:157 +#: ../src/gajim-remote.py:170 msgid "file" msgstr "" -#: ../src/gajim-remote.py:157 +#: ../src/gajim-remote.py:170 msgid "File path" msgstr "" -#: ../src/gajim-remote.py:159 +#: ../src/gajim-remote.py:172 msgid "if specified, file will be sent using this account" msgstr "" -#: ../src/gajim-remote.py:164 +#: ../src/gajim-remote.py:177 msgid "Lists all preferences and their values" msgstr "" -#: ../src/gajim-remote.py:168 +#: ../src/gajim-remote.py:181 msgid "Sets value of 'key' to 'value'." msgstr "" -#: ../src/gajim-remote.py:170 +#: ../src/gajim-remote.py:183 msgid "key=value" msgstr "" -#: ../src/gajim-remote.py:170 +#: ../src/gajim-remote.py:183 msgid "'key' is the name of the preference, 'value' is the value to set it to" msgstr "" -#: ../src/gajim-remote.py:175 +#: ../src/gajim-remote.py:188 msgid "Deletes a preference item" msgstr "" -#: ../src/gajim-remote.py:177 +#: ../src/gajim-remote.py:190 msgid "key" msgstr "" -#: ../src/gajim-remote.py:177 +#: ../src/gajim-remote.py:190 msgid "name of the preference to be deleted" msgstr "" -#: ../src/gajim-remote.py:181 +#: ../src/gajim-remote.py:194 msgid "Writes the current state of Gajim preferences to the .config file" msgstr "" -#: ../src/gajim-remote.py:186 +#: ../src/gajim-remote.py:199 msgid "Removes contact from roster" msgstr "" -#: ../src/gajim-remote.py:195 +#: ../src/gajim-remote.py:208 msgid "Adds contact to roster" msgstr "" -#: ../src/gajim-remote.py:197 -msgid "Adds new contact to this account." +#: ../src/gajim-remote.py:210 +msgid "jid" msgstr "" -#: ../src/gajim-remote.py:202 +#: ../src/gajim-remote.py:211 +msgid "Adds new contact to this account" +msgstr "" + +#: ../src/gajim-remote.py:216 msgid "Returns current status (the global one unless account is specified)" msgstr "" -#: ../src/gajim-remote.py:209 +#: ../src/gajim-remote.py:223 msgid "" "Returns current status message(the global one unless account is specified)" msgstr "" -#: ../src/gajim-remote.py:216 +#: ../src/gajim-remote.py:230 msgid "Returns number of unreaded messages" msgstr "" +#: ../src/gajim-remote.py:234 +msgid "Open 'Start Chat' dialog" +msgstr "" + #: ../src/gajim-remote.py:236 +msgid "Starts chat, using this account" +msgstr "" + +#: ../src/gajim-remote.py:256 msgid "Missing argument \"contact_jid\"" msgstr "" -#: ../src/gajim-remote.py:255 +#: ../src/gajim-remote.py:275 #, python-format msgid "" "'%s' is not in your roster.\n" "Please specify account for sending the message." msgstr "" -#: ../src/gajim-remote.py:258 +#: ../src/gajim-remote.py:278 msgid "You have no active account" msgstr "" -#: ../src/gajim-remote.py:301 +#: ../src/gajim-remote.py:321 #, python-format msgid "Unknown D-Bus version: %s" msgstr "" -#: ../src/gajim-remote.py:328 +#: ../src/gajim-remote.py:348 #, python-format msgid "" "Usage: %s %s %s \n" "\t %s" msgstr "" -#: ../src/gajim-remote.py:331 +#: ../src/gajim-remote.py:351 msgid "Arguments:" msgstr "" -#: ../src/gajim-remote.py:335 +#: ../src/gajim-remote.py:355 #, python-format msgid "%s not found" msgstr "" -#: ../src/gajim-remote.py:339 +#: ../src/gajim-remote.py:359 #, python-format msgid "" "Usage: %s command [arguments]\n" "Command is one of:\n" msgstr "" -#: ../src/gajim-remote.py:413 +#: ../src/gajim-remote.py:433 #, python-format msgid "" "Argument \"%s\" is not specified. \n" @@ -1376,103 +3395,92 @@ msgstr "" msgid "Gajim needs PySQLite2 to run" msgstr "" -#: ../src/gajim.py:235 +#. set the icon to all newly opened wind +#: ../src/gajim.py:151 +msgid "Gajim is already running" +msgstr "" + +#: ../src/gajim.py:152 +msgid "" +"Another instance of Gajim seems to be running\n" +"Run anyway?" +msgstr "" + +#: ../src/gajim.py:267 #, python-format msgid "HTTP (%s) Authorization for %s (id: %s)" msgstr "" -#: ../src/gajim.py:236 +#: ../src/gajim.py:268 msgid "Do you accept this request?" msgstr "" -#: ../src/gajim.py:438 -#, python-format -msgid "%(nickname)s Signed In" -msgstr "" - -#: ../src/gajim.py:469 -#, python-format -msgid "%(nickname)s Signed Out" -msgstr "" - -#: ../src/gajim.py:583 -#, python-format -msgid "New Private Message from room %s" -msgstr "" - -#: ../src/gajim.py:584 -#, python-format -msgid "%(nickname)s: %(message)s" -msgstr "" - -#: ../src/gajim.py:606 -#, python-format -msgid "New Single Message from %(nickname)s" -msgstr "" - -#: ../src/gajim.py:612 -#, python-format -msgid "New Message from %(nickname)s" -msgstr "" - -#: ../src/gajim.py:660 +#: ../src/gajim.py:611 #, python-format msgid "error while sending %s ( %s )" msgstr "" -#: ../src/gajim.py:700 +#: ../src/gajim.py:651 msgid "Authorization accepted" msgstr "" -#: ../src/gajim.py:701 +#: ../src/gajim.py:652 #, python-format msgid "The contact \"%s\" has authorized you to see his or her status." msgstr "" -#: ../src/gajim.py:709 +#: ../src/gajim.py:660 #, python-format msgid "Contact \"%s\" removed subscription from you" msgstr "" -#: ../src/gajim.py:710 +#: ../src/gajim.py:661 msgid "You will always see him or her as offline." msgstr "" -#: ../src/gajim.py:736 +#: ../src/gajim.py:704 #, python-format msgid "Contact with \"%s\" cannot be established" msgstr "" -#: ../src/gajim.py:737 ../src/common/connection.py:349 +#: ../src/gajim.py:705 ../src/common/connection.py:398 msgid "Check your connection or try again later." msgstr "" -#: ../src/gajim.py:874 ../src/roster_window.py:1012 +#: ../src/gajim.py:849 ../src/roster_window.py:1025 #, python-format msgid "%s is now %s (%s)" msgstr "" -#: ../src/gajim.py:963 +#: ../src/gajim.py:930 msgid "Your passphrase is incorrect" msgstr "" -#: ../src/gajim.py:964 +#: ../src/gajim.py:931 msgid "You are currently connected without your OpenPGP key." msgstr "" #. FIXME: find a better image -#: ../src/gajim.py:1045 +#: ../src/gajim.py:1033 #, python-format msgid "New E-mail on %(gmail_mail_address)s" msgstr "" -#: ../src/gajim.py:1047 +#: ../src/gajim.py:1035 #, python-format msgid "You have %d new E-mail message" msgid_plural "You have %d new E-mail messages" msgstr[0] "" msgstr[1] "" +#. each message has a 'From', 'Subject' and 'Snippet' field +#: ../src/gajim.py:1040 +#, python-format +msgid "" +"\n" +"From: %(from_address)s" +msgstr "" + #: ../src/gajim.py:1185 #, python-format msgid "%s wants to send you a file." @@ -1520,140 +3528,149 @@ msgstr "" #. it is good to notify the user #. in case he or she cannot see the output of the console -#: ../src/gajim.py:1634 +#: ../src/gajim.py:1683 msgid "Could not save your settings and preferences" msgstr "" -#: ../src/gajim.py:1848 +#: ../src/gajim.py:1903 msgid "Session Management support not available (missing gnome.ui module)" msgstr "" -#: ../src/gajim.py:1878 +#: ../src/gajim.py:1932 msgid "Migrating Logs..." msgstr "" -#: ../src/gajim.py:1879 +#: ../src/gajim.py:1933 msgid "Please wait while logs are being migrated..." msgstr "" -#: ../src/gajim_themes_window.py:67 +#: ../src/gajim_themes_window.py:59 msgid "Theme" msgstr "" #. don't confuse translators -#: ../src/gajim_themes_window.py:149 +#: ../src/gajim_themes_window.py:141 msgid "theme name" msgstr "" -#: ../src/gajim_themes_window.py:166 +#: ../src/gajim_themes_window.py:158 msgid "You cannot delete your current theme" msgstr "" -#: ../src/gajim_themes_window.py:167 +#: ../src/gajim_themes_window.py:159 msgid "Please first choose another for your current theme." msgstr "" -#: ../src/groupchat_control.py:68 +#: ../src/groupchat_control.py:99 msgid "Private Chat" msgstr "" -#: ../src/groupchat_control.py:68 +#: ../src/groupchat_control.py:99 msgid "Private Chats" msgstr "" -#: ../src/groupchat_control.py:84 +#: ../src/groupchat_control.py:115 msgid "Sending private message failed" msgstr "" #. in second %s code replaces with nickname -#: ../src/groupchat_control.py:86 +#: ../src/groupchat_control.py:117 #, python-format msgid "You are no longer in room \"%s\" or \"%s\" has left." msgstr "" -#: ../src/groupchat_control.py:98 +#: ../src/groupchat_control.py:129 msgid "Group Chat" msgstr "" -#: ../src/groupchat_control.py:98 +#: ../src/groupchat_control.py:129 msgid "Group Chats" msgstr "" -#: ../src/groupchat_control.py:595 +#: ../src/groupchat_control.py:308 +msgid "Insert Nickname" +msgstr "" + +#: ../src/groupchat_control.py:702 msgid "This room has no subject" msgstr "" #. do not print 'kicked by None' -#: ../src/groupchat_control.py:693 +#: ../src/groupchat_control.py:801 #, python-format msgid "%(nick)s has been kicked: %(reason)s" msgstr "" -#: ../src/groupchat_control.py:697 +#: ../src/groupchat_control.py:805 #, python-format msgid "%(nick)s has been kicked by %(who)s: %(reason)s" msgstr "" #. do not print 'banned by None' -#: ../src/groupchat_control.py:704 +#: ../src/groupchat_control.py:812 #, python-format msgid "%(nick)s has been banned: %(reason)s" msgstr "" -#: ../src/groupchat_control.py:708 +#: ../src/groupchat_control.py:816 #, python-format msgid "%(nick)s has been banned by %(who)s: %(reason)s" msgstr "" -#: ../src/groupchat_control.py:716 +#: ../src/groupchat_control.py:824 #, python-format msgid "You are now known as %s" msgstr "" -#: ../src/groupchat_control.py:718 +#: ../src/groupchat_control.py:826 #, python-format msgid "%s is now known as %s" msgstr "" -#: ../src/groupchat_control.py:757 +#: ../src/groupchat_control.py:897 #, python-format msgid "%s has left" msgstr "" +#: ../src/groupchat_control.py:902 +#, python-format +msgid "%s has joined the room" +msgstr "" + #. No status message -#: ../src/groupchat_control.py:759 ../src/roster_window.py:1015 +#: ../src/groupchat_control.py:904 ../src/roster_window.py:1028 #, python-format msgid "%s is now %s" msgstr "" -#: ../src/groupchat_control.py:871 ../src/groupchat_control.py:888 -#: ../src/groupchat_control.py:981 ../src/groupchat_control.py:997 +#: ../src/groupchat_control.py:1022 ../src/groupchat_control.py:1039 +#: ../src/groupchat_control.py:1132 ../src/groupchat_control.py:1148 #, python-format msgid "Nickname not found: %s" msgstr "" -#: ../src/groupchat_control.py:915 +#: ../src/groupchat_control.py:1066 #, python-format msgid "Invited %(contact_jid)s to %(room_jid)s." msgstr "" #. %s is something the user wrote but it is not a jid so we inform -#: ../src/groupchat_control.py:922 ../src/groupchat_control.py:952 +#: ../src/groupchat_control.py:1073 ../src/groupchat_control.py:1103 #, python-format msgid "%s does not appear to be a valid JID" msgstr "" -#: ../src/groupchat_control.py:1019 +#: ../src/groupchat_control.py:1185 #, python-format msgid "No such command: /%s (if you want to send this, prefix it with /say)" msgstr "" -#: ../src/groupchat_control.py:1041 +#: ../src/groupchat_control.py:1207 #, python-format msgid "Commands: %s" msgstr "" -#: ../src/groupchat_control.py:1043 +#: ../src/groupchat_control.py:1209 #, python-format msgid "" "Usage: /%s [reason], bans the JID from the room. The nickname " @@ -1662,44 +3679,44 @@ msgid "" "spaces in nickname." msgstr "" -#: ../src/groupchat_control.py:1049 +#: ../src/groupchat_control.py:1215 #, python-format msgid "" "Usage: /%s , opens a private chat window to the specified occupant." msgstr "" -#: ../src/groupchat_control.py:1053 +#: ../src/groupchat_control.py:1219 #, python-format msgid "Usage: /%s, clears the text window." msgstr "" -#: ../src/groupchat_control.py:1055 +#: ../src/groupchat_control.py:1221 #, python-format msgid "" "Usage: /%s [reason], closes the current window or tab, displaying reason if " "specified." msgstr "" -#: ../src/groupchat_control.py:1058 +#: ../src/groupchat_control.py:1224 #, python-format msgid "Usage: /%s, hide the chat buttons." msgstr "" -#: ../src/groupchat_control.py:1060 +#: ../src/groupchat_control.py:1226 #, python-format msgid "" "Usage: /%s [reason], invites JID to the current room, optionally " "providing a reason." msgstr "" -#: ../src/groupchat_control.py:1064 +#: ../src/groupchat_control.py:1230 #, python-format msgid "" "Usage: /%s @[/nickname], offers to join room@server optionally " "using specified nickname." msgstr "" -#: ../src/groupchat_control.py:1068 +#: ../src/groupchat_control.py:1234 #, python-format msgid "" "Usage: /%s [reason], removes the occupant specified by nickname " @@ -1707,1776 +3724,198 @@ msgid "" "nickname." msgstr "" -#: ../src/groupchat_control.py:1073 +#: ../src/groupchat_control.py:1239 #, python-format msgid "" "Usage: /%s , sends action to the current room. Use third person. (e." "g. /%s explodes.)" msgstr "" -#: ../src/groupchat_control.py:1077 +#: ../src/groupchat_control.py:1243 #, python-format msgid "" "Usage: /%s [message], opens a private message windowand sends " "message to the occupant specified by nickname." msgstr "" -#: ../src/groupchat_control.py:1082 +#: ../src/groupchat_control.py:1248 #, python-format msgid "Usage: /%s , changes your nickname in current room." msgstr "" -#: ../src/groupchat_control.py:1086 +#: ../src/groupchat_control.py:1252 +#, python-format +msgid "Usage: /%s , display the names of room occupants." +msgstr "" + +#: ../src/groupchat_control.py:1256 #, python-format msgid "Usage: /%s [topic], displays or updates the current room topic." msgstr "" -#: ../src/groupchat_control.py:1089 +#: ../src/groupchat_control.py:1259 #, python-format msgid "" "Usage: /%s , sends a message without looking for other commands." msgstr "" -#: ../src/groupchat_control.py:1092 +#: ../src/groupchat_control.py:1262 #, python-format msgid "No help info for /%s" msgstr "" -#: ../src/groupchat_control.py:1128 +#: ../src/groupchat_control.py:1304 #, python-format msgid "Are you sure you want to leave room \"%s\"?" msgstr "" -#: ../src/groupchat_control.py:1129 +#: ../src/groupchat_control.py:1305 msgid "If you close this window, you will be disconnected from this room." msgstr "" -#: ../src/groupchat_control.py:1133 +#: ../src/groupchat_control.py:1309 msgid "Do _not ask me again" msgstr "" -#: ../src/groupchat_control.py:1167 +#: ../src/groupchat_control.py:1343 msgid "Changing Subject" msgstr "" -#: ../src/groupchat_control.py:1168 +#: ../src/groupchat_control.py:1344 msgid "Please specify the new subject:" msgstr "" -#: ../src/groupchat_control.py:1176 +#: ../src/groupchat_control.py:1352 msgid "Changing Nickname" msgstr "" -#: ../src/groupchat_control.py:1177 +#: ../src/groupchat_control.py:1353 msgid "Please specify the new nickname you want to use:" msgstr "" -#: ../src/groupchat_control.py:1202 +#: ../src/groupchat_control.py:1379 msgid "Bookmark already set" msgstr "" -#: ../src/groupchat_control.py:1203 +#: ../src/groupchat_control.py:1380 #, python-format msgid "Room \"%s\" is already in your bookmarks." msgstr "" -#: ../src/groupchat_control.py:1212 +#: ../src/groupchat_control.py:1389 msgid "Bookmark has been added successfully" msgstr "" -#: ../src/groupchat_control.py:1213 +#: ../src/groupchat_control.py:1390 msgid "You can manage your bookmarks via Actions menu in your roster." msgstr "" #. ask for reason -#: ../src/groupchat_control.py:1322 +#: ../src/groupchat_control.py:1500 #, python-format msgid "Kicking %s" msgstr "" -#: ../src/groupchat_control.py:1323 ../src/groupchat_control.py:1568 +#: ../src/groupchat_control.py:1501 ../src/groupchat_control.py:1779 msgid "You may specify a reason below:" msgstr "" #. ask for reason -#: ../src/groupchat_control.py:1567 +#: ../src/groupchat_control.py:1778 #, python-format msgid "Banning %s" msgstr "" -#: ../src/gtkexcepthook.py:52 +#: ../src/gtkexcepthook.py:51 msgid "A programming error has been detected" msgstr "" -#: ../src/gtkexcepthook.py:53 +#: ../src/gtkexcepthook.py:52 msgid "" "It probably is not fatal, but should be reported to the developers " "nonetheless." msgstr "" -#: ../src/gtkexcepthook.py:59 +#: ../src/gtkexcepthook.py:58 msgid "_Report Bug" msgstr "" -#: ../src/gtkexcepthook.py:82 +#: ../src/gtkexcepthook.py:81 msgid "Details" msgstr "" -#. this always tracebacks -#: ../src/gtkgui.glade.h:1 -msgid "0" -msgstr "" - -#: ../src/gtkgui.glade.h:2 -msgid "" -"Account is being created\n" -"\n" -"Please wait..." -msgstr "" - -#: ../src/gtkgui.glade.h:5 -msgid "Advanced Configuration Editor" -msgstr "" - -#: ../src/gtkgui.glade.h:6 -msgid "Applications" -msgstr "" - -#: ../src/gtkgui.glade.h:7 -msgid "Chatstate Tab Colors" -msgstr "" - -#. a header for custom browser/client/file manager. so translate sth like: Custom Settings -#: ../src/gtkgui.glade.h:9 -msgid "Custom" -msgstr "" - -#: ../src/gtkgui.glade.h:10 -msgid "Description" -msgstr "" - -#: ../src/gtkgui.glade.h:11 -msgid "Format of a line" -msgstr "" - -#: ../src/gtkgui.glade.h:12 -msgid "Interface Customization" -msgstr "" - -#: ../src/gtkgui.glade.h:13 -msgid "Jabber Traffic" -msgstr "" - -#: ../src/gtkgui.glade.h:14 -msgid "Miscellaneous" -msgstr "" - -#: ../src/gtkgui.glade.h:15 -msgid "NOTE: You should restart gajim for some setting to take effect" -msgstr "" - -#: ../src/gtkgui.glade.h:16 -msgid "OpenPGP" -msgstr "" - -#: ../src/gtkgui.glade.h:17 -msgid "Personal Information" -msgstr "" - -#: ../src/gtkgui.glade.h:18 -msgid "Please choose one of the options below:" -msgstr "" - -#: ../src/gtkgui.glade.h:19 -msgid "Please fill in the data for your new account" -msgstr "" - -#: ../src/gtkgui.glade.h:20 -msgid "Preset Status Messages" -msgstr "" - -#: ../src/gtkgui.glade.h:21 -msgid "Properties" -msgstr "" - -#: ../src/gtkgui.glade.h:22 -msgid "Settings" -msgstr "" - -#: ../src/gtkgui.glade.h:23 -msgid "Sounds" -msgstr "" - -#: ../src/gtkgui.glade.h:24 -msgid "Type your new status message" -msgstr "" - -#: ../src/gtkgui.glade.h:25 -msgid "Visual Notifications" -msgstr "" - -#: ../src/gtkgui.glade.h:26 -msgid "What do you want to do?" -msgstr "" - -#: ../src/gtkgui.glade.h:27 -msgid "XML Input" -msgstr "" - -#: ../src/gtkgui.glade.h:28 -msgid "A list of active, completed and stopped file transfers" -msgstr "" - -#: ../src/gtkgui.glade.h:29 -msgid "A_ccounts" -msgstr "" - -#: ../src/gtkgui.glade.h:30 -msgid "A_fter nickname:" -msgstr "" - -#. "About" is the text of a tab of vcard window -#: ../src/gtkgui.glade.h:32 -msgid "About" -msgstr "" - -#: ../src/gtkgui.glade.h:33 -msgid "Accept" -msgstr "" - -#: ../src/gtkgui.glade.h:34 -msgid "Account" -msgstr "" - -#: ../src/gtkgui.glade.h:35 -msgid "" -"Account\n" -"Group\n" -"Contact\n" -"Banner" -msgstr "" - -#: ../src/gtkgui.glade.h:39 -msgid "Account Modification" -msgstr "" - -#: ../src/gtkgui.glade.h:40 -msgid "Accounts" -msgstr "" - -#: ../src/gtkgui.glade.h:42 -msgid "Add New Contact" -msgstr "" - -#: ../src/gtkgui.glade.h:43 -msgid "Add Special _Notification" -msgstr "" - -#: ../src/gtkgui.glade.h:44 -msgid "Add _Contact" -msgstr "" - -#: ../src/gtkgui.glade.h:45 -msgid "Address" -msgstr "" - -#: ../src/gtkgui.glade.h:46 -msgid "Advanced" -msgstr "" - -#: ../src/gtkgui.glade.h:47 -msgid "Advanced Configuration Editor" -msgstr "" - -#: ../src/gtkgui.glade.h:48 -msgid "" -"All chat states\n" -"Composing only\n" -"Disabled" -msgstr "" - -#: ../src/gtkgui.glade.h:51 -msgid "Allow _OS information to be sent" -msgstr "" - -#: ../src/gtkgui.glade.h:52 -msgid "Allow him/her to see my status" -msgstr "" - -#: ../src/gtkgui.glade.h:53 -msgid "Allow popup/notifications when I'm _away/na/busy/invisible" -msgstr "" - -#: ../src/gtkgui.glade.h:54 -msgid "Also known as iChat style" -msgstr "" - -#: ../src/gtkgui.glade.h:55 -msgid "Ask status message when I:" -msgstr "" - -#: ../src/gtkgui.glade.h:56 -msgid "Ask to see his/her status" -msgstr "" - -#: ../src/gtkgui.glade.h:57 -msgid "Ask:" -msgstr "" - -#: ../src/gtkgui.glade.h:58 -msgid "Assign Open_PGP Key" -msgstr "" - -#: ../src/gtkgui.glade.h:59 -msgid "Authorize contact so he can know when you're connected" -msgstr "" - -#: ../src/gtkgui.glade.h:60 -msgid "Auto _away after:" -msgstr "" - -#: ../src/gtkgui.glade.h:61 -msgid "Auto _not available after:" -msgstr "" - -#: ../src/gtkgui.glade.h:62 -msgid "Auto join" -msgstr "" - -#: ../src/gtkgui.glade.h:63 -msgid "" -"Autodetect on every Gajim startup\n" -"Always use GNOME default applications\n" -"Always use KDE default applications\n" -"Custom" -msgstr "" - -#: ../src/gtkgui.glade.h:67 -msgid "Automatically authorize contact" -msgstr "" - -#: ../src/gtkgui.glade.h:68 -msgid "Autoreconnect when connection is lost" -msgstr "" - -#: ../src/gtkgui.glade.h:69 -msgid "B_efore nickname:" -msgstr "" - -#: ../src/gtkgui.glade.h:70 -msgid "Birthday:" -msgstr "" - -#: ../src/gtkgui.glade.h:71 -msgid "Bold" -msgstr "" - -#: ../src/gtkgui.glade.h:72 -msgid "Build custom query" -msgstr "" - -#: ../src/gtkgui.glade.h:73 -msgid "C_onnect on Gajim startup" -msgstr "" - -#: ../src/gtkgui.glade.h:74 -msgid "Cancel file transfer" -msgstr "" - -#: ../src/gtkgui.glade.h:75 -msgid "Cancels the selected file transfer" -msgstr "" - -#: ../src/gtkgui.glade.h:76 -msgid "Cancels the selected file transfer and removes incomplete file" -msgstr "" - -#: ../src/gtkgui.glade.h:77 -msgid "Chan_ge Password" -msgstr "" - -#: ../src/gtkgui.glade.h:78 -msgid "Change Password" -msgstr "" - -#: ../src/gtkgui.glade.h:79 -msgid "Change _Nickname" -msgstr "" - -#: ../src/gtkgui.glade.h:80 -msgid "Change _Subject" -msgstr "" - -#: ../src/gtkgui.glade.h:82 -msgid "Chat state noti_fications:" -msgstr "" - -#: ../src/gtkgui.glade.h:83 -msgid "" -"Check this option, only if someone you don't have in the roster spams/annoys " -"you. Use with caution, cause it blocks all messages from any contact that is " -"not in the roster" -msgstr "" - -#: ../src/gtkgui.glade.h:84 -msgid "" -"Check this so Gajim will connect in port 5223 where legacy servers are " -"expected to have SSL capabilities. Note that Gajim uses TLS encryption by " -"default if broadcasted by the server, and with this option enabled TLS will " -"be disabled" -msgstr "" - -#: ../src/gtkgui.glade.h:85 -msgid "Choose _Key..." -msgstr "" - -#: ../src/gtkgui.glade.h:86 -msgid "City:" -msgstr "" - -#: ../src/gtkgui.glade.h:87 -msgid "Clean _up" -msgstr "" - -#: ../src/gtkgui.glade.h:88 -msgid "Click to change account's password" -msgstr "" - -#: ../src/gtkgui.glade.h:89 -msgid "Click to insert an emoticon (Alt+M)" -msgstr "" - -#: ../src/gtkgui.glade.h:90 -msgid "Click to see features (like MSN, ICQ transports) of jabber servers" -msgstr "" - -#: ../src/gtkgui.glade.h:91 -msgid "Click to see past conversation in this room" -msgstr "" - -#: ../src/gtkgui.glade.h:92 -msgid "Click to see past conversations with this contact" -msgstr "" - -#: ../src/gtkgui.glade.h:93 -msgid "Client:" -msgstr "" - -#: ../src/gtkgui.glade.h:94 -msgid "Company:" -msgstr "" - -#: ../src/gtkgui.glade.h:95 -msgid "Composing" -msgstr "" - -#: ../src/gtkgui.glade.h:96 -msgid "Configure _Room" -msgstr "" - -#: ../src/gtkgui.glade.h:97 -msgid "Connect when I press Finish" -msgstr "" - -#: ../src/gtkgui.glade.h:98 -msgid "Connection" -msgstr "" - -#: ../src/gtkgui.glade.h:99 -msgid "Contact Information" -msgstr "" - -#: ../src/gtkgui.glade.h:100 -msgid "Contact _Info" -msgstr "" - -#: ../src/gtkgui.glade.h:101 -msgid "Conversation History" -msgstr "" - -#: ../src/gtkgui.glade.h:102 -msgid "Country:" -msgstr "" - -#: ../src/gtkgui.glade.h:103 -msgid "Default status _iconset:" -msgstr "" - -#: ../src/gtkgui.glade.h:104 -msgid "Delete MOTD" -msgstr "" - -#: ../src/gtkgui.glade.h:105 -msgid "Deletes Message of the Day" -msgstr "" - -#: ../src/gtkgui.glade.h:106 -msgid "Deny" -msgstr "" - -#: ../src/gtkgui.glade.h:107 -msgid "Deny authorization from contact so he cannot know when you're connected" -msgstr "" - -#: ../src/gtkgui.glade.h:108 -msgid "Department:" -msgstr "" - -#: ../src/gtkgui.glade.h:109 -msgid "Display a_vatars of contacts in roster" -msgstr "" - -#: ../src/gtkgui.glade.h:110 -msgid "Display status _messages of contacts in roster" -msgstr "" - -#: ../src/gtkgui.glade.h:111 -msgid "E-Mail:" -msgstr "" - -#: ../src/gtkgui.glade.h:112 -msgid "E_very 5 minutes" -msgstr "" - -#: ../src/gtkgui.glade.h:113 -msgid "Edit Groups" -msgstr "" - -#: ../src/gtkgui.glade.h:114 -msgid "Edit Personal Information..." -msgstr "" - -#: ../src/gtkgui.glade.h:115 -msgid "Edit _Groups" -msgstr "" - -#: ../src/gtkgui.glade.h:116 -msgid "Emoticons:" -msgstr "" - -#. XML Console enable checkbutton -#: ../src/gtkgui.glade.h:118 -msgid "Enable" -msgstr "" - -#: ../src/gtkgui.glade.h:119 -msgid "Enter it again for confirmation:" -msgstr "" - -#: ../src/gtkgui.glade.h:120 -msgid "Enter new password:" -msgstr "" - -#: ../src/gtkgui.glade.h:121 -msgid "Events" -msgstr "" - -#: ../src/gtkgui.glade.h:122 -msgid "Extra Address:" -msgstr "" - -#. Family Name -#: ../src/gtkgui.glade.h:124 -msgid "Family:" -msgstr "" - -#: ../src/gtkgui.glade.h:125 -msgid "File Transfers" -msgstr "" - -#: ../src/gtkgui.glade.h:126 -msgid "File _Transfers" -msgstr "" - -#: ../src/gtkgui.glade.h:127 -msgid "Filter:" -msgstr "" - -#: ../src/gtkgui.glade.h:128 -msgid "Font style:" -msgstr "" - -#: ../src/gtkgui.glade.h:129 -msgid "Forbid him/her to see my status" -msgstr "" - -#: ../src/gtkgui.glade.h:130 -msgid "Format: YYYY-MM-DD" -msgstr "" - -#: ../src/gtkgui.glade.h:131 -msgid "Frequently Asked Questions (online)" -msgstr "" - -#: ../src/gtkgui.glade.h:132 -msgid "From:" -msgstr "" - -#: ../src/gtkgui.glade.h:133 -msgid "G_o" -msgstr "" - -#: ../src/gtkgui.glade.h:134 ../src/notify.py:167 ../src/notify.py:189 -#: ../src/notify.py:201 ../src/tooltips.py:339 -msgid "Gajim" -msgstr "" - -#: ../src/gtkgui.glade.h:135 -msgid "Gajim Themes Customization" -msgstr "" - -#: ../src/gtkgui.glade.h:136 -msgid "" -"Gajim can send and receive meta-information related to a conversation you " -"may have with a contact. Here you can specify which chatstates you want to " -"send to the other party." -msgstr "" - -#: ../src/gtkgui.glade.h:137 -msgid "" -"Gajim will automatically show new events by poping up the relative window" -msgstr "" - -#: ../src/gtkgui.glade.h:138 -msgid "" -"Gajim will notify you for new events via a popup in the bottom right of the " -"screen" -msgstr "" - -#: ../src/gtkgui.glade.h:139 -msgid "" -"Gajim will notify you via a popup window in the bottom right of the screen " -"about contacts that just signed in" -msgstr "" - -#: ../src/gtkgui.glade.h:140 -msgid "" -"Gajim will notify you via a popup window in the bottom right of the screen " -"about contacts that just signed out" -msgstr "" - -#: ../src/gtkgui.glade.h:141 -msgid "" -"Gajim will only change the icon of the contact that triggered the new event" -msgstr "" - -#: ../src/gtkgui.glade.h:142 -msgid "Gajim: Account Creation Wizard" -msgstr "" - -#. user has no group, print him in General -#: ../src/gtkgui.glade.h:143 ../src/roster_window.py:291 -#: ../src/roster_window.py:1183 ../src/roster_window.py:1405 -#: ../src/systray.py:286 -msgid "General" -msgstr "" - -#. Given Name -#: ../src/gtkgui.glade.h:145 -msgid "Given:" -msgstr "" - -#: ../src/gtkgui.glade.h:146 -msgid "Gone" -msgstr "" - -#: ../src/gtkgui.glade.h:147 -msgid "Group:" -msgstr "" - -#: ../src/gtkgui.glade.h:148 -msgid "HTTP Connect" -msgstr "" - -#: ../src/gtkgui.glade.h:149 -msgid "Help online" -msgstr "" - -#: ../src/gtkgui.glade.h:150 -msgid "Hides the window" -msgstr "" - -#: ../src/gtkgui.glade.h:151 -msgid "Homepage:" -msgstr "" - -#: ../src/gtkgui.glade.h:152 -msgid "Hostname: " -msgstr "" - -#: ../src/gtkgui.glade.h:153 -msgid "I already have an account I want to use" -msgstr "" - -#: ../src/gtkgui.glade.h:154 -msgid "I want to _register for a new account" -msgstr "" - -#: ../src/gtkgui.glade.h:155 -msgid "I would like to add you to my contact list." -msgstr "" - -#: ../src/gtkgui.glade.h:156 -msgid "" -"If checked, Gajim will also broadcast some more IPs except from just your " -"IP, so file transfer has higher chances of working right." -msgstr "" - -#: ../src/gtkgui.glade.h:157 -msgid "" -"If checked, Gajim will display avatars of contacts in roster window and in " -"group chats" -msgstr "" - -#: ../src/gtkgui.glade.h:158 -msgid "" -"If checked, Gajim will display status messages of contacts under the contact " -"name in roster window and in group chats" -msgstr "" - -#: ../src/gtkgui.glade.h:159 -msgid "If checked, Gajim will join this group chat on startup" -msgstr "" - -#: ../src/gtkgui.glade.h:160 -msgid "If checked, Gajim will remember the password for this account" -msgstr "" - -#: ../src/gtkgui.glade.h:161 -msgid "" -"If checked, Gajim will remember the roster and chat window positions in the " -"screen and the sizes of them next time you run it" -msgstr "" - -#: ../src/gtkgui.glade.h:162 -msgid "" -"If checked, Gajim will send keep-alive packets so it prevents connection " -"timeout which results in disconnection" -msgstr "" - -#: ../src/gtkgui.glade.h:163 -msgid "" -"If checked, Gajim will store the password in ~/.gajim/config with 'read' " -"permission only for you" -msgstr "" - -#: ../src/gtkgui.glade.h:164 -msgid "" -"If checked, Gajim will use protocol-specific status icons. (eg. A contact " -"from MSN will have the equivalent msn icon for status online, away, busy, " -"etc...)" -msgstr "" - -#: ../src/gtkgui.glade.h:165 -msgid "" -"If checked, Gajim, when launched, will automatically connect to jabber using " -"this account" -msgstr "" - -#: ../src/gtkgui.glade.h:166 -msgid "" -"If checked, any change to the global status (handled by the combobox at the " -"bottom of the roster window) will change the status of this account " -"accordingly" -msgstr "" - -#: ../src/gtkgui.glade.h:167 -msgid "" -"If not disabled, Gajim will replace ascii smilies like ':)' with equivalent " -"animated or static graphical emoticons" -msgstr "" - -#: ../src/gtkgui.glade.h:168 -msgid "" -"If you have 2 or more accounts and it is checked, Gajim will list all " -"contacts as if you had one account" -msgstr "" - -#: ../src/gtkgui.glade.h:169 -msgid "Inactive" -msgstr "" - -#. Info/Query make the "IQ" initials. So translate like this 'YourLang/YourLang (Info/Query)'. Thanks (it's a tooltip so width is not a problem) -#: ../src/gtkgui.glade.h:171 -msgid "Info/Query" -msgstr "" - -#: ../src/gtkgui.glade.h:172 -msgid "Information about you, as stored in the server" -msgstr "" - -#: ../src/gtkgui.glade.h:173 -msgid "Invitation Received" -msgstr "" - -#: ../src/gtkgui.glade.h:174 -msgid "Italic" -msgstr "" - -#: ../src/gtkgui.glade.h:175 -msgid "Jabber" -msgstr "" - -#: ../src/gtkgui.glade.h:176 -msgid "Jabber ID:" -msgstr "" - -#: ../src/gtkgui.glade.h:178 -msgid "Join _Group Chat" -msgstr "" - -#: ../src/gtkgui.glade.h:179 -msgid "Location" -msgstr "" - -#: ../src/gtkgui.glade.h:180 -msgid "" -"MUC\n" -"Messages" -msgstr "" - -#: ../src/gtkgui.glade.h:182 -msgid "" -"MUC Directed\n" -"Messages" -msgstr "" - -#: ../src/gtkgui.glade.h:184 -msgid "Ma_nage..." -msgstr "" - -#: ../src/gtkgui.glade.h:185 -msgid "Manage Accounts" -msgstr "" - -#: ../src/gtkgui.glade.h:186 -msgid "Manage Bookmarks" -msgstr "" - -#: ../src/gtkgui.glade.h:187 -msgid "Manage Proxy Profiles" -msgstr "" - -#: ../src/gtkgui.glade.h:188 -msgid "Manage..." -msgstr "" - -#. Middle Name -#: ../src/gtkgui.glade.h:190 -msgid "Middle:" -msgstr "" - -#: ../src/gtkgui.glade.h:191 -msgid "Mo_derator" -msgstr "" - -#: ../src/gtkgui.glade.h:192 -msgid "More" -msgstr "" - -#: ../src/gtkgui.glade.h:193 -msgid "Name:" -msgstr "" - -#: ../src/gtkgui.glade.h:194 -msgid "" -"Never\n" -"Always\n" -"Per account\n" -"Per type" -msgstr "" - -#: ../src/gtkgui.glade.h:198 -msgid "Nickname:" -msgstr "" - -#. None means no proxy profile selected -#: ../src/gtkgui.glade.h:201 -msgid "None" -msgstr "" - -#: ../src/gtkgui.glade.h:202 -msgid "Notify me about contacts that: " -msgstr "" - -#: ../src/gtkgui.glade.h:203 -msgid "Notify on new _Gmail e-mail" -msgstr "" - -#: ../src/gtkgui.glade.h:204 -msgid "OS:" -msgstr "" - -#: ../src/gtkgui.glade.h:205 -msgid "On every _message" -msgstr "" - -#: ../src/gtkgui.glade.h:206 -msgid "One message _window:" -msgstr "" - -#: ../src/gtkgui.glade.h:208 -msgid "Pass_word:" -msgstr "" - -#: ../src/gtkgui.glade.h:209 -msgid "Passphrase" -msgstr "" - -#: ../src/gtkgui.glade.h:210 -msgid "Password:" -msgstr "" - -#: ../src/gtkgui.glade.h:211 ../src/tooltips.py:645 -msgid "Paused" -msgstr "" - -#: ../src/gtkgui.glade.h:212 -msgid "Personal Information" -msgstr "" - -#: ../src/gtkgui.glade.h:213 -msgid "Phone No.:" -msgstr "" - -#: ../src/gtkgui.glade.h:214 -msgid "Play _sounds" -msgstr "" - -#: ../src/gtkgui.glade.h:215 -msgid "Port: " -msgstr "" - -#: ../src/gtkgui.glade.h:216 -msgid "Position:" -msgstr "" - -#: ../src/gtkgui.glade.h:217 -msgid "Postal Code:" -msgstr "" - -#: ../src/gtkgui.glade.h:218 -msgid "Preferences" -msgstr "" - -#. Prefix in Name -#: ../src/gtkgui.glade.h:220 -msgid "Prefix:" -msgstr "" - -#: ../src/gtkgui.glade.h:221 -msgid "Preset messages:" -msgstr "" - -#: ../src/gtkgui.glade.h:222 -msgid "Print time:" -msgstr "" - -#: ../src/gtkgui.glade.h:223 -msgid "Priori_ty:" -msgstr "" - -#: ../src/gtkgui.glade.h:224 -msgid "" -"Priority is used in Jabber to determine who gets the events from the jabber " -"server when two or more clients are connected using the same account; The " -"client with the highest priority gets the events" -msgstr "" - -#: ../src/gtkgui.glade.h:225 -msgid "Profile, Avatar" -msgstr "" - -#: ../src/gtkgui.glade.h:226 -msgid "Protocol:" -msgstr "" - -#: ../src/gtkgui.glade.h:227 -msgid "Proxy:" -msgstr "" - -#: ../src/gtkgui.glade.h:228 -msgid "Query Builder..." -msgstr "" - -#: ../src/gtkgui.glade.h:229 -msgid "Recently:" -msgstr "" - -#: ../src/gtkgui.glade.h:230 -msgid "Register to" -msgstr "" - -#: ../src/gtkgui.glade.h:231 -msgid "Remove account _only from Gajim" -msgstr "" - -#: ../src/gtkgui.glade.h:232 -msgid "Remove account from Gajim and from _server" -msgstr "" - -#: ../src/gtkgui.glade.h:233 -msgid "Remove file transfer from the list." -msgstr "" - -#: ../src/gtkgui.glade.h:234 -msgid "Removes completed, canceled and failed file transfers from the list" -msgstr "" - -#: ../src/gtkgui.glade.h:235 -msgid "Reply to this message" -msgstr "" - -#: ../src/gtkgui.glade.h:236 -msgid "Resour_ce: " -msgstr "" - -#: ../src/gtkgui.glade.h:237 -msgid "" -"Resource is sent to the Jabber server in order to separate the same JID in " -"two or more parts depending on the number of the clients connected in the " -"same server with the same account. So you might be connected in the same " -"account with resource 'Home' and 'Work' at the same time. The resource which " -"has the highest priority will get the events. (see below)" -msgstr "" - -#: ../src/gtkgui.glade.h:238 -msgid "Resource:" -msgstr "" - -#: ../src/gtkgui.glade.h:239 -msgid "Role:" -msgstr "" - -#: ../src/gtkgui.glade.h:240 -msgid "Room Configuration" -msgstr "" - -#: ../src/gtkgui.glade.h:241 -msgid "Room:" -msgstr "" - -#: ../src/gtkgui.glade.h:242 -msgid "Save _passphrase (insecure)" -msgstr "" - -#: ../src/gtkgui.glade.h:243 -msgid "Save _position and size for roster and chat windows" -msgstr "" - -#: ../src/gtkgui.glade.h:244 -msgid "Save as Preset..." -msgstr "" - -#: ../src/gtkgui.glade.h:245 -msgid "Save conversation _logs for all contacts" -msgstr "" - -#: ../src/gtkgui.glade.h:246 -msgid "Save pass_word" -msgstr "" - -#: ../src/gtkgui.glade.h:247 -msgid "Search" -msgstr "" - -#: ../src/gtkgui.glade.h:248 -msgid "Sen_d" -msgstr "" - -#: ../src/gtkgui.glade.h:249 -msgid "Send File" -msgstr "" - -#: ../src/gtkgui.glade.h:250 -msgid "Send Single _Message" -msgstr "" - -#: ../src/gtkgui.glade.h:251 -msgid "Send Single _Message..." -msgstr "" - -#: ../src/gtkgui.glade.h:252 -msgid "Send _File" -msgstr "" - -#: ../src/gtkgui.glade.h:253 -msgid "Send keep-alive packets" -msgstr "" - -#: ../src/gtkgui.glade.h:254 -msgid "Send message" -msgstr "" - -#: ../src/gtkgui.glade.h:255 -msgid "Send message and close window" -msgstr "" - -#: ../src/gtkgui.glade.h:256 -msgid "Sends a message to currently connected users to this server" -msgstr "" - -#: ../src/gtkgui.glade.h:257 -msgid "Server:" -msgstr "" - -#: ../src/gtkgui.glade.h:258 -msgid "Servers Features" -msgstr "" - -#: ../src/gtkgui.glade.h:259 -msgid "Set MOTD" -msgstr "" - -#: ../src/gtkgui.glade.h:260 -msgid "Set _Avatar" -msgstr "" - -#: ../src/gtkgui.glade.h:261 -msgid "Set my profile when I connect" -msgstr "" - -#: ../src/gtkgui.glade.h:262 -msgid "Sets Message of the Day" -msgstr "" - -#: ../src/gtkgui.glade.h:263 -msgid "Show All Pending _Events" -msgstr "" - -#: ../src/gtkgui.glade.h:264 -msgid "Show _Offline Contacts" -msgstr "" - -#: ../src/gtkgui.glade.h:265 -msgid "Show _Roster" -msgstr "" - -#: ../src/gtkgui.glade.h:266 -msgid "Show _XML Console" -msgstr "" - -#: ../src/gtkgui.glade.h:267 -msgid "Show only in _roster" -msgstr "" - -#: ../src/gtkgui.glade.h:268 -msgid "Shows a list of file transfers between you and other" -msgstr "" - -#: ../src/gtkgui.glade.h:269 -msgid "Sign _in" -msgstr "" - -#: ../src/gtkgui.glade.h:270 -msgid "Sign _out" -msgstr "" - -#: ../src/gtkgui.glade.h:271 -msgid "Sta_tus" -msgstr "" - -#: ../src/gtkgui.glade.h:272 -msgid "Start _Chat" -msgstr "" - -#: ../src/gtkgui.glade.h:273 -msgid "State:" -msgstr "" - -#: ../src/gtkgui.glade.h:274 -msgid "Status" -msgstr "" - -#: ../src/gtkgui.glade.h:275 -msgid "Status:" -msgstr "" - -#: ../src/gtkgui.glade.h:276 -msgid "Street:" -msgstr "" - -#: ../src/gtkgui.glade.h:277 -msgid "Subject:" -msgstr "" - -#: ../src/gtkgui.glade.h:278 -msgid "Subscription Request" -msgstr "" - -#: ../src/gtkgui.glade.h:279 -msgid "Subscription:" -msgstr "" - -#. Suffix in Name -#: ../src/gtkgui.glade.h:281 -msgid "Suffix:" -msgstr "" - -#: ../src/gtkgui.glade.h:282 -msgid "Synch_ronize account status with global status" -msgstr "" - -#: ../src/gtkgui.glade.h:283 -msgid "T_heme:" -msgstr "" - -#: ../src/gtkgui.glade.h:284 -msgid "Text _color:" -msgstr "" - -#: ../src/gtkgui.glade.h:285 -msgid "Text _font:" -msgstr "" - -#: ../src/gtkgui.glade.h:286 -msgid "The auto away status message" -msgstr "" - -#: ../src/gtkgui.glade.h:287 -msgid "The auto not available status message" -msgstr "" - -#: ../src/gtkgui.glade.h:288 -msgid "" -"This action removes single file transfer from the list. If the transfer is " -"active, it is first stopped and then removed" -msgstr "" - -#: ../src/gtkgui.glade.h:289 -msgid "Title:" -msgstr "" - -#: ../src/gtkgui.glade.h:290 -msgid "To:" -msgstr "" - -#: ../src/gtkgui.glade.h:291 -msgid "Toggle Open_PGP Encryption" -msgstr "" - -#: ../src/gtkgui.glade.h:292 -msgid "Type:" -msgstr "" - -#: ../src/gtkgui.glade.h:293 -msgid "Underline" -msgstr "" - -#: ../src/gtkgui.glade.h:294 -msgid "Update MOTD" -msgstr "" - -#: ../src/gtkgui.glade.h:295 -msgid "Updates Message of the Day" -msgstr "" - -#: ../src/gtkgui.glade.h:296 -msgid "Use _SSL (legacy)" -msgstr "" - -#: ../src/gtkgui.glade.h:297 -msgid "Use _transports iconsets" -msgstr "" - -#: ../src/gtkgui.glade.h:298 -msgid "Use authentication" -msgstr "" - -#: ../src/gtkgui.glade.h:299 -msgid "Use custom hostname/port" -msgstr "" - -#: ../src/gtkgui.glade.h:300 -msgid "Use file transfer proxies" -msgstr "" - -#: ../src/gtkgui.glade.h:301 -msgid "Use t_rayicon (aka. notification area icon)" -msgstr "" - -#: ../src/gtkgui.glade.h:302 -msgid "User ID:" -msgstr "" - -#: ../src/gtkgui.glade.h:303 -msgid "When a file transfer is complete show a popup notification" -msgstr "" - -#: ../src/gtkgui.glade.h:304 -msgid "" -"When a new event (message, file transfer request etc..) is received, the " -"following methods may be used to inform you about it. Please note that " -"events about new messages only occur if it is a new message from a contact " -"you are not already chatting with" -msgstr "" - -#: ../src/gtkgui.glade.h:305 -msgid "When new event is received" -msgstr "" - -#: ../src/gtkgui.glade.h:306 -msgid "Work" -msgstr "" - -#: ../src/gtkgui.glade.h:307 -msgid "" -"You need to have an account in order to connect\n" -"to the Jabber network." -msgstr "" - -#: ../src/gtkgui.glade.h:309 -msgid "Your JID:" -msgstr "" - -#. Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector) -#: ../src/gtkgui.glade.h:311 -msgid "_Actions" -msgstr "" - -#: ../src/gtkgui.glade.h:312 -msgid "_Add Contact..." -msgstr "" - -#: ../src/gtkgui.glade.h:313 -msgid "_Add to Roster" -msgstr "" - -#: ../src/gtkgui.glade.h:314 -msgid "_Address:" -msgstr "" - -#: ../src/gtkgui.glade.h:315 -msgid "_Admin" -msgstr "" - -#: ../src/gtkgui.glade.h:316 -msgid "_Administrator" -msgstr "" - -#: ../src/gtkgui.glade.h:317 -msgid "_Advanced" -msgstr "" - -#: ../src/gtkgui.glade.h:318 -msgid "_After time:" -msgstr "" - -#: ../src/gtkgui.glade.h:319 -msgid "_Authorize" -msgstr "" - -#: ../src/gtkgui.glade.h:320 -msgid "_Background:" -msgstr "" - -#: ../src/gtkgui.glade.h:321 -msgid "_Ban" -msgstr "" - -#: ../src/gtkgui.glade.h:322 -msgid "_Before time:" -msgstr "" - -#: ../src/gtkgui.glade.h:323 -msgid "_Bookmark This Room" -msgstr "" - -#: ../src/gtkgui.glade.h:324 -msgid "_Browser:" -msgstr "" - -#: ../src/gtkgui.glade.h:325 -msgid "_Cancel" -msgstr "" - -#: ../src/gtkgui.glade.h:326 -msgid "_Compact View Alt+C" -msgstr "" - -#: ../src/gtkgui.glade.h:327 -msgid "_Contents" -msgstr "" - -#: ../src/gtkgui.glade.h:329 -msgid "_Copy JID/Email Address" -msgstr "" - -#: ../src/gtkgui.glade.h:330 -msgid "_Copy Link Location" -msgstr "" - -#: ../src/gtkgui.glade.h:331 -msgid "_Deny" -msgstr "" - -#: ../src/gtkgui.glade.h:332 -msgid "_Discover Services" -msgstr "" - -#: ../src/gtkgui.glade.h:333 -msgid "_Discover Services..." -msgstr "" - -#: ../src/gtkgui.glade.h:335 -msgid "_FAQ" -msgstr "" - -#: ../src/gtkgui.glade.h:336 -msgid "_File manager:" -msgstr "" - -#: ../src/gtkgui.glade.h:337 -msgid "_Filter:" -msgstr "" - -#: ../src/gtkgui.glade.h:338 -msgid "_Finish" -msgstr "" - -#: ../src/gtkgui.glade.h:339 -msgid "_Font:" -msgstr "" - -#: ../src/gtkgui.glade.h:340 -msgid "_Group Chat" -msgstr "" - -#: ../src/gtkgui.glade.h:341 -msgid "_Help" -msgstr "" - -#: ../src/gtkgui.glade.h:342 -msgid "_Highlight misspelled words" -msgstr "" - -#: ../src/gtkgui.glade.h:343 -msgid "_History" -msgstr "" - -#: ../src/gtkgui.glade.h:344 -msgid "_Host:" -msgstr "" - -#. Info/Query: all(?) jabber xml start with Welcome to Gajim History Logs Manager\n" -"\n" -"You can select logs from the left and/or search database from below.\n" -"\n" -"WARNING:\n" -"If you plan to do massive deletions, please make sure Gajim is not running. " -"Generally avoid deletions with contacts you currently chat with." +#: ../src/gtkgui_helpers.py:717 +msgid "Extension not supported" msgstr "" -#: ../src/history_manager.glade.h:7 -msgid "Delete" +#: ../src/gtkgui_helpers.py:718 +#, python-format +msgid "Image cannot be saved in %(type)s format. Save as %(new_filename)s?" msgstr "" -#: ../src/history_manager.glade.h:8 -msgid "Export" +#: ../src/gtkgui_helpers.py:727 +msgid "Save Image as..." msgstr "" -#: ../src/history_manager.glade.h:9 -msgid "Gajim History Logs Manager" -msgstr "" - -#: ../src/history_manager.glade.h:10 -msgid "_Search Database" -msgstr "" - -#: ../src/history_manager.py:58 +#: ../src/history_manager.py:61 msgid "Cannot find history logs database" msgstr "" #. holds jid -#: ../src/history_manager.py:102 +#: ../src/history_manager.py:104 msgid "Contacts" msgstr "" #. holds time -#: ../src/history_manager.py:115 ../src/history_manager.py:155 -#: ../src/history_window.py:94 +#: ../src/history_manager.py:117 ../src/history_manager.py:157 +#: ../src/history_window.py:85 msgid "Date" msgstr "" #. holds nickname -#: ../src/history_manager.py:121 ../src/history_manager.py:173 +#: ../src/history_manager.py:123 ../src/history_manager.py:175 msgid "Nickname" msgstr "" #. holds message -#: ../src/history_manager.py:129 ../src/history_manager.py:161 -#: ../src/history_window.py:102 +#: ../src/history_manager.py:131 ../src/history_manager.py:163 +#: ../src/history_window.py:93 msgid "Message" msgstr "" #. holds subject -#: ../src/history_manager.py:136 ../src/history_manager.py:167 +#: ../src/history_manager.py:138 ../src/history_manager.py:169 msgid "Subject" msgstr "" -#: ../src/history_manager.py:181 +#: ../src/history_manager.py:183 msgid "" "Do you want to clean up the database? (STRONGLY NOT RECOMMENDED IF GAJIM IS " "RUNNING)" msgstr "" -#: ../src/history_manager.py:183 +#: ../src/history_manager.py:185 msgid "" "Normally allocated database size will not be freed, it will just become " "reusable. If you really want to reduce database filesize, click YES, else " @@ -3485,148 +3924,183 @@ msgid "" "In case you click YES, please wait..." msgstr "" -#: ../src/history_manager.py:389 +#: ../src/history_manager.py:391 msgid "Exporting History Logs..." msgstr "" -#: ../src/history_manager.py:465 +#: ../src/history_manager.py:467 #, python-format msgid "%(who)s on %(time)s said: %(message)s\n" msgstr "" -#: ../src/history_manager.py:465 +#: ../src/history_manager.py:467 msgid "who" msgstr "" -#: ../src/history_manager.py:503 +#: ../src/history_manager.py:505 msgid "Do you really want to delete logs of the selected contact?" msgid_plural "Do you really want to delete logs of the selected contacts?" msgstr[0] "" msgstr[1] "" -#: ../src/history_manager.py:507 ../src/history_manager.py:543 +#: ../src/history_manager.py:509 ../src/history_manager.py:545 msgid "This is an irreversible operation." msgstr "" -#: ../src/history_manager.py:540 +#: ../src/history_manager.py:542 msgid "Do you really want to delete the selected message?" msgid_plural "Do you really want to delete the selected messages?" msgstr[0] "" msgstr[1] "" -#: ../src/history_window.py:111 ../src/history_window.py:113 +#: ../src/history_window.py:102 ../src/history_window.py:104 #, python-format msgid "Conversation History with %s" msgstr "" -#: ../src/history_window.py:265 +#: ../src/history_window.py:258 #, python-format msgid "%(nick)s is now %(status)s: %(status_msg)s" msgstr "" -#: ../src/history_window.py:269 +#: ../src/history_window.py:262 ../src/notify.py:113 #, python-format msgid "%(nick)s is now %(status)s" msgstr "" -#: ../src/history_window.py:275 +#: ../src/history_window.py:268 #, python-format msgid "Status is now: %(status)s: %(status_msg)s" msgstr "" -#: ../src/history_window.py:278 +#: ../src/history_window.py:271 #, python-format msgid "Status is now: %(status)s" msgstr "" -#: ../src/message_window.py:233 +#: ../src/message_window.py:244 msgid "Messages" msgstr "" -#: ../src/message_window.py:234 +#: ../src/message_window.py:245 #, python-format msgid "%s - Gajim" msgstr "" -#: ../src/roster_window.py:140 +#: ../src/notify.py:111 +#, python-format +msgid "%(nick)s Changed Status" +msgstr "" + +#: ../src/notify.py:121 +#, python-format +msgid "%(nickname)s Signed In" +msgstr "" + +#: ../src/notify.py:129 +#, python-format +msgid "%(nickname)s Signed Out" +msgstr "" + +#: ../src/notify.py:141 +#, python-format +msgid "New Single Message from %(nickname)s" +msgstr "" + +#: ../src/notify.py:150 +#, python-format +msgid "New Private Message from room %s" +msgstr "" + +#: ../src/notify.py:151 +#, python-format +msgid "%(nickname)s: %(message)s" +msgstr "" + +#: ../src/notify.py:157 +#, python-format +msgid "New Message from %(nickname)s" +msgstr "" + +#: ../src/roster_window.py:131 msgid "Merged accounts" msgstr "" -#: ../src/roster_window.py:289 ../src/common/helpers.py:42 +#: ../src/roster_window.py:288 ../src/common/helpers.py:39 msgid "Observers" msgstr "" -#: ../src/roster_window.py:542 +#: ../src/roster_window.py:544 #, python-format msgid "You are already in room %s" msgstr "" -#: ../src/roster_window.py:546 ../src/roster_window.py:2262 +#: ../src/roster_window.py:548 ../src/roster_window.py:2280 msgid "You cannot join a room while you are invisible" msgstr "" #. the 'manage gc bookmarks' item is showed #. below to avoid duplicate code #. add -#: ../src/roster_window.py:735 +#: ../src/roster_window.py:748 #, python-format msgid "to %s account" msgstr "" #. disco -#: ../src/roster_window.py:742 +#: ../src/roster_window.py:755 #, python-format msgid "using %s account" msgstr "" -#. new message +#. new chat #. for chat_with #. for single message -#: ../src/roster_window.py:750 ../src/systray.py:194 ../src/systray.py:201 +#: ../src/roster_window.py:763 ../src/systray.py:193 ../src/systray.py:198 #, python-format msgid "using account %s" msgstr "" #. profile, avatar -#: ../src/roster_window.py:759 +#: ../src/roster_window.py:772 #, python-format msgid "of account %s" msgstr "" -#: ../src/roster_window.py:818 +#: ../src/roster_window.py:831 msgid "Manage Bookmarks..." msgstr "" -#: ../src/roster_window.py:842 +#: ../src/roster_window.py:855 #, python-format msgid "for account %s" msgstr "" #. History manager -#: ../src/roster_window.py:863 +#: ../src/roster_window.py:876 msgid "History Manager" msgstr "" -#: ../src/roster_window.py:872 +#: ../src/roster_window.py:885 msgid "_Join New Room" msgstr "" -#: ../src/roster_window.py:1158 +#: ../src/roster_window.py:1159 #, python-format msgid "Transport \"%s\" will be removed" msgstr "" -#: ../src/roster_window.py:1158 +#: ../src/roster_window.py:1159 msgid "" "You will no longer be able to send and receive messages to contacts from " "this transport." msgstr "" -#: ../src/roster_window.py:1200 +#: ../src/roster_window.py:1201 msgid "Assign OpenPGP Key" msgstr "" -#: ../src/roster_window.py:1201 +#: ../src/roster_window.py:1202 msgid "Select a key to apply to the contact" msgstr "" @@ -3650,374 +4124,409 @@ msgstr "" msgid "_Change Status Message" msgstr "" -#: ../src/roster_window.py:1617 +#: ../src/roster_window.py:1621 msgid "Authorization has been sent" msgstr "" -#: ../src/roster_window.py:1618 +#: ../src/roster_window.py:1622 #, python-format msgid "Now \"%s\" will know your status." msgstr "" -#: ../src/roster_window.py:1642 +#: ../src/roster_window.py:1646 msgid "Subscription request has been sent" msgstr "" -#: ../src/roster_window.py:1643 +#: ../src/roster_window.py:1647 #, python-format msgid "If \"%s\" accepts this request you will know his or her status." msgstr "" -#: ../src/roster_window.py:1654 +#: ../src/roster_window.py:1658 msgid "Authorization has been removed" msgstr "" -#: ../src/roster_window.py:1655 +#: ../src/roster_window.py:1659 #, python-format msgid "Now \"%s\" will always see you as offline." msgstr "" -#: ../src/roster_window.py:1824 +#: ../src/roster_window.py:1822 #, python-format msgid "Contact \"%s\" will be removed from your roster" msgstr "" -#: ../src/roster_window.py:1828 +#: ../src/roster_window.py:1826 msgid "" "By removing this contact you also remove authorization resulting in him or " "her always seeing you as offline." msgstr "" -#: ../src/roster_window.py:1832 +#: ../src/roster_window.py:1830 msgid "" "By removing this contact you also by default remove authorization resulting " "in him or her always seeing you as offline." msgstr "" -#: ../src/roster_window.py:1833 +#: ../src/roster_window.py:1831 msgid "I want this contact to know my status after removal" msgstr "" -#: ../src/roster_window.py:1901 +#: ../src/roster_window.py:1899 msgid "Passphrase Required" msgstr "" -#: ../src/roster_window.py:1902 +#: ../src/roster_window.py:1900 #, python-format msgid "Enter GPG key passphrase for account %s." msgstr "" -#: ../src/roster_window.py:1907 +#: ../src/roster_window.py:1905 msgid "Save passphrase" msgstr "" -#: ../src/roster_window.py:1915 +#: ../src/roster_window.py:1913 msgid "Wrong Passphrase" msgstr "" -#: ../src/roster_window.py:1916 +#: ../src/roster_window.py:1914 msgid "Please retype your GPG passphrase or press Cancel." msgstr "" -#: ../src/roster_window.py:1964 ../src/roster_window.py:2021 +#: ../src/roster_window.py:1963 ../src/roster_window.py:2020 msgid "You are participating in one or more group chats" msgstr "" -#: ../src/roster_window.py:1965 ../src/roster_window.py:2022 +#: ../src/roster_window.py:1964 ../src/roster_window.py:2021 msgid "" "Changing your status to invisible will result in disconnection from those " "group chats. Are you sure you want to go invisible?" msgstr "" -#: ../src/roster_window.py:1981 +#: ../src/roster_window.py:1980 msgid "No account available" msgstr "" -#: ../src/roster_window.py:1982 +#: ../src/roster_window.py:1981 msgid "You must create an account before you can chat with other contacts." msgstr "" -#: ../src/roster_window.py:2427 ../src/roster_window.py:2433 +#: ../src/roster_window.py:2452 ../src/roster_window.py:2458 msgid "You have unread messages" msgstr "" -#: ../src/roster_window.py:2428 ../src/roster_window.py:2434 +#: ../src/roster_window.py:2453 ../src/roster_window.py:2459 msgid "" "Messages will only be available for reading them later if you have history " "enabled." msgstr "" -#: ../src/roster_window.py:3184 +#: ../src/roster_window.py:3231 #, python-format msgid "Drop %s in group %s" msgstr "" -#: ../src/roster_window.py:3191 +#: ../src/roster_window.py:3238 #, python-format msgid "Make %s and %s metacontacts" msgstr "" -#: ../src/roster_window.py:3358 +#: ../src/roster_window.py:3408 msgid "Change Status Message..." msgstr "" -#: ../src/systray.py:155 +#: ../src/systray.py:154 msgid "_Change Status Message..." msgstr "" -#: ../src/systray.py:236 +#: ../src/systray.py:231 msgid "Hide this menu" msgstr "" -#: ../src/systraywin32.py:266 ../src/systraywin32.py:285 -#: ../src/tooltips.py:315 +#: ../src/systraywin32.py:261 ../src/systraywin32.py:280 #, python-format msgid "Gajim - %d unread message" msgid_plural "Gajim - %d unread messages" msgstr[0] "" msgstr[1] "" -#: ../src/tooltips.py:321 +#: ../src/tooltips.py:326 #, python-format -msgid "Gajim - %d unread single message" -msgid_plural "Gajim - %d unread single messages" +msgid " %d unread message" +msgid_plural " %d unread messages" msgstr[0] "" msgstr[1] "" -#: ../src/tooltips.py:327 +#: ../src/tooltips.py:332 #, python-format -msgid "Gajim - %d unread group chat message" -msgid_plural "Gajim - %d unread group chat messages" +msgid " %d unread single message" +msgid_plural " %d unread single messages" msgstr[0] "" msgstr[1] "" -#: ../src/tooltips.py:333 +#: ../src/tooltips.py:338 #, python-format -msgid "Gajim - %d unread private message" -msgid_plural "Gajim - %d unread private messages" +msgid " %d unread group chat message" +msgid_plural " %d unread group chat messages" msgstr[0] "" msgstr[1] "" -#: ../src/tooltips.py:348 ../src/tooltips.py:350 +#: ../src/tooltips.py:344 +#, python-format +msgid " %d unread private message" +msgid_plural " %d unread private messages" +msgstr[0] "" +msgstr[1] "" + +#: ../src/tooltips.py:359 ../src/tooltips.py:361 #, python-format msgid "Gajim - %s" msgstr "" -#: ../src/tooltips.py:383 +#: ../src/tooltips.py:395 msgid "Role: " msgstr "" -#: ../src/tooltips.py:384 +#: ../src/tooltips.py:396 msgid "Affiliation: " msgstr "" -#: ../src/tooltips.py:386 ../src/tooltips.py:518 +#: ../src/tooltips.py:398 ../src/tooltips.py:537 msgid "Resource: " msgstr "" -#: ../src/tooltips.py:394 ../src/tooltips.py:521 ../src/tooltips.py:543 -#: ../src/tooltips.py:654 +#: ../src/tooltips.py:407 ../src/tooltips.py:540 ../src/tooltips.py:565 +#: ../src/tooltips.py:676 msgid "Status: " msgstr "" -#: ../src/tooltips.py:501 +#: ../src/tooltips.py:514 msgid "Subscription: " msgstr "" -#: ../src/tooltips.py:510 +#: ../src/tooltips.py:523 msgid "OpenPGP: " msgstr "" -#: ../src/tooltips.py:548 +#: ../src/tooltips.py:570 #, python-format msgid "Last status on %s" msgstr "" -#: ../src/tooltips.py:550 +#: ../src/tooltips.py:572 #, python-format msgid "Since %s" msgstr "" -#: ../src/tooltips.py:610 +#: ../src/tooltips.py:632 msgid "Download" msgstr "" -#: ../src/tooltips.py:616 +#: ../src/tooltips.py:638 msgid "Upload" msgstr "" -#: ../src/tooltips.py:623 +#: ../src/tooltips.py:645 msgid "Type: " msgstr "" -#: ../src/tooltips.py:629 +#: ../src/tooltips.py:651 msgid "Transferred: " msgstr "" -#: ../src/tooltips.py:632 ../src/tooltips.py:653 +#: ../src/tooltips.py:654 ../src/tooltips.py:675 msgid "Not started" msgstr "" -#: ../src/tooltips.py:636 +#: ../src/tooltips.py:658 msgid "Stopped" msgstr "" -#: ../src/tooltips.py:638 ../src/tooltips.py:641 +#: ../src/tooltips.py:660 ../src/tooltips.py:663 msgid "Completed" msgstr "" #. stalled is not paused. it is like 'frozen' it stopped alone -#: ../src/tooltips.py:649 +#: ../src/tooltips.py:671 msgid "Stalled" msgstr "" -#: ../src/tooltips.py:651 +#: ../src/tooltips.py:673 msgid "Transferring" msgstr "" -#: ../src/tooltips.py:683 +#: ../src/tooltips.py:705 msgid "This service has not yet responded with detailed information" msgstr "" -#: ../src/tooltips.py:686 +#: ../src/tooltips.py:708 msgid "" "This service could not respond with detailed information.\n" "It is most likely legacy or broken" msgstr "" #. keep identation -#: ../src/vcard.py:186 +#: ../src/vcard.py:188 msgid "Could not load image" msgstr "" -#: ../src/vcard.py:262 +#: ../src/vcard.py:289 msgid "?Client:Unknown" msgstr "" -#: ../src/vcard.py:264 +#: ../src/vcard.py:291 msgid "?OS:Unknown" msgstr "" -#: ../src/vcard.py:281 +#: ../src/vcard.py:308 #, python-format msgid "since %s" msgstr "" -#: ../src/vcard.py:305 +#: ../src/vcard.py:332 msgid "" "This contact is interested in your presence information, but you are not " "interested in his/her presence" msgstr "" -#: ../src/vcard.py:307 +#: ../src/vcard.py:334 msgid "" "You are interested in the contact's presence information, but he/she is not " "interested in yours" msgstr "" -#: ../src/vcard.py:309 +#: ../src/vcard.py:336 msgid "You and the contact are interested in each other's presence information" msgstr "" #. None -#: ../src/vcard.py:311 +#: ../src/vcard.py:338 msgid "" "You are not interested in the contact's presence, and neither he/she is " "interested in yours" msgstr "" -#: ../src/vcard.py:320 +#: ../src/vcard.py:347 msgid "You are waiting contact's answer about your subscription request" msgstr "" -#: ../src/vcard.py:332 ../src/vcard.py:355 +#: ../src/vcard.py:359 ../src/vcard.py:382 msgid " resource with priority " msgstr "" -#: ../src/vcard.py:434 +#: ../src/vcard.py:458 msgid "Without a connection you can not publish your contact information." msgstr "" -#: ../src/vcard.py:463 +#: ../src/vcard.py:491 msgid "Without a connection, you can not get your contact information." msgstr "" -#: ../src/vcard.py:467 +#: ../src/vcard.py:495 msgid "Personal details" msgstr "" -#: ../src/common/check_paths.py:39 +#: ../src/common/check_paths.py:35 msgid "creating logs database" msgstr "" -#: ../src/common/check_paths.py:84 ../src/common/check_paths.py:95 -#: ../src/common/check_paths.py:102 +#: ../src/common/check_paths.py:82 ../src/common/check_paths.py:93 +#: ../src/common/check_paths.py:100 #, python-format msgid "%s is file but it should be a directory" msgstr "" -#: ../src/common/check_paths.py:85 ../src/common/check_paths.py:96 -#: ../src/common/check_paths.py:103 ../src/common/check_paths.py:110 +#: ../src/common/check_paths.py:83 ../src/common/check_paths.py:94 +#: ../src/common/check_paths.py:101 ../src/common/check_paths.py:109 msgid "Gajim will now exit" msgstr "" -#: ../src/common/check_paths.py:109 +#: ../src/common/check_paths.py:108 #, python-format msgid "%s is directory but should be file" msgstr "" -#: ../src/common/check_paths.py:125 +#: ../src/common/check_paths.py:124 #, python-format msgid "creating %s directory" msgstr "" -#: ../src/common/exceptions.py:35 +#: ../src/common/exceptions.py:32 msgid "pysqlite2 (aka python-pysqlite2) dependency is missing. Exiting..." msgstr "" -#: ../src/common/exceptions.py:43 +#: ../src/common/exceptions.py:40 msgid "Service not available: Gajim is not running, or remote_control is False" msgstr "" -#: ../src/common/exceptions.py:51 +#: ../src/common/exceptions.py:48 msgid "D-Bus is not present on this machine or python module is missing" msgstr "" -#: ../src/common/exceptions.py:59 +#: ../src/common/exceptions.py:56 msgid "" "Session bus is not available.\n" "Try reading http://trac.gajim.org/wiki/GajimDBus" msgstr "" -#: ../src/common/config.py:53 +#: ../src/common/config.py:51 msgid "Use DBus and Notification-Daemon to show notifications" msgstr "" -#: ../src/common/config.py:57 +#: ../src/common/config.py:55 msgid "Time in minutes, after which your status changes to away." msgstr "" -#: ../src/common/config.py:58 +#: ../src/common/config.py:56 msgid "Away as a result of being idle" msgstr "" -#: ../src/common/config.py:60 +#: ../src/common/config.py:58 msgid "Time in minutes, after which your status changes to not available." msgstr "" -#: ../src/common/config.py:61 +#: ../src/common/config.py:59 msgid "Not available as a result of being idle" msgstr "" -#: ../src/common/config.py:88 +#: ../src/common/config.py:77 +msgid "List (space separated) of rows (accounts and groups) that are collapsed" +msgstr "" + +#: ../src/common/config.py:83 +msgid "" +"'always' - print time for every message.\n" +"'sometimes' - print time every print_ichat_every_foo_minutes minute.\n" +"'never' - never print time." +msgstr "" + +#: ../src/common/config.py:84 +msgid "" +"Value of fuzziness from 1 to 4 or 0 to disable fuzzyclock. 1 is the most " +"precise clock, 4 the less precise one." +msgstr "" + +#: ../src/common/config.py:87 msgid "Treat * / _ pairs as possible formatting characters." msgstr "" -#: ../src/common/config.py:89 +#: ../src/common/config.py:88 msgid "" "If True, do not remove */_ . So *abc* will be bold but with * * not removed." msgstr "" +#: ../src/common/config.py:98 +msgid "" +"Character to add after nickname when using nick completion (tab) in group " +"chat" +msgstr "" + +#: ../src/common/config.py:99 +msgid "" +"Character to propose to add after desired nickname when desired nickname is " +"used by someone else in group chat" +msgstr "" + #: ../src/common/config.py:131 msgid "Add * and [n] in roster title?" msgstr "" @@ -4053,6 +4562,12 @@ msgstr "" msgid "If checked, Gajim can be controlled remotely using gajim-remote." msgstr "" +#: ../src/common/config.py:145 +msgid "" +"When not printing time for every message (print_time==sometimes), print it " +"every x minutes" +msgstr "" + #: ../src/common/config.py:146 msgid "Ask before closing a group chat tab/window." msgstr "" @@ -4084,7 +4599,7 @@ msgid "Show tab when only one conversation?" msgstr "" #: ../src/common/config.py:162 -msgid "Show tab border if one conversation?" +msgid "Show tabbed notebook border in chat windows?" msgstr "" #: ../src/common/config.py:163 @@ -4125,11 +4640,23 @@ msgid "" "last time or has one cached that is too old." msgstr "" -#. FIXME: remove you and make it Gajim will not; and/or his or *her* status messages +#: ../src/common/config.py:183 +msgid "" +"If False, Gajim will no longer print status line in chats when a contact " +"changes his or her status and/or his or her status message." +msgstr "" + #: ../src/common/config.py:184 msgid "" -"If False, you will no longer see status line in chats when a contact changes " -"his or her status and/or his status message." +"can be \"none\", \"all\" or \"in_and_out\". If \"none\", Gajim will no " +"longer print status line in groupchats when a member changes his or her " +"status and/or his or her status message. If \"all\" Gajim will print all " +"status messages. If \"in_and_out\", gajim will only print FOO enters/leaves " +"room" +msgstr "" + +#: ../src/common/config.py:187 +msgid "Don't show avatar for the transport itself." msgstr "" #: ../src/common/config.py:189 @@ -4145,7 +4672,8 @@ msgid "" "Turn this option to False to stop sending sha info in groupchat presences" msgstr "" -#: ../src/common/config.py:193 +#. always, never, peracct, pertype should not be translated +#: ../src/common/config.py:194 msgid "" "Controls the window where new messages are placed.\n" "'always' - All messages are sent to a single window.\n" @@ -4156,418 +4684,501 @@ msgid "" "the changes will take effect" msgstr "" -#: ../src/common/config.py:194 +#: ../src/common/config.py:195 msgid "If False, you will no longer see the avatar in the chat window" msgstr "" -#: ../src/common/config.py:195 +#: ../src/common/config.py:196 msgid "If True, pressing the escape key closes a tab/window" msgstr "" -#: ../src/common/config.py:196 +#: ../src/common/config.py:197 msgid "Hides the buttons in group chat window" msgstr "" -#: ../src/common/config.py:197 +#: ../src/common/config.py:198 msgid "Hides the buttons in two persons chat window" msgstr "" -#: ../src/common/config.py:198 +#: ../src/common/config.py:199 msgid "Hides the banner in a group chat window" msgstr "" -#: ../src/common/config.py:199 +#: ../src/common/config.py:200 msgid "Hides the banner in two persons chat window" msgstr "" -#: ../src/common/config.py:200 +#: ../src/common/config.py:201 msgid "Hides the room occupants list in groupchat window" msgstr "" +#: ../src/common/config.py:202 +msgid "Merge consecutive nickname in chat window" +msgstr "" + +#: ../src/common/config.py:203 +msgid "Indentation when using merge consecutive nickame" +msgstr "" + +#: ../src/common/config.py:204 +msgid "List of colors that will be used to color nicknames in groupchats" +msgstr "" + #. yes, no, ask -#: ../src/common/config.py:233 +#: ../src/common/config.py:237 msgid "Jabberd2 workaround" msgstr "" -#: ../src/common/config.py:237 +#: ../src/common/config.py:241 msgid "" "If checked, Gajim will use your IP and proxies defined in " "file_transfer_proxies option for file transfer." msgstr "" -#: ../src/common/config.py:290 +#: ../src/common/config.py:297 msgid "Sleeping" msgstr "" -#: ../src/common/config.py:291 +#: ../src/common/config.py:298 msgid "Back soon" msgstr "" -#: ../src/common/config.py:291 +#: ../src/common/config.py:298 msgid "Back in some minutes." msgstr "" -#: ../src/common/config.py:292 +#: ../src/common/config.py:299 msgid "Eating" msgstr "" -#: ../src/common/config.py:292 +#: ../src/common/config.py:299 msgid "I'm eating, so leave me a message." msgstr "" -#: ../src/common/config.py:293 +#: ../src/common/config.py:300 msgid "Movie" msgstr "" -#: ../src/common/config.py:293 +#: ../src/common/config.py:300 msgid "I'm watching a movie." msgstr "" -#: ../src/common/config.py:294 +#: ../src/common/config.py:301 msgid "Working" msgstr "" -#: ../src/common/config.py:294 +#: ../src/common/config.py:301 msgid "I'm working." msgstr "" -#: ../src/common/config.py:295 +#: ../src/common/config.py:302 msgid "Phone" msgstr "" -#: ../src/common/config.py:295 +#: ../src/common/config.py:302 msgid "I'm on the phone." msgstr "" -#: ../src/common/config.py:296 +#: ../src/common/config.py:303 msgid "Out" msgstr "" -#: ../src/common/config.py:296 +#: ../src/common/config.py:303 msgid "I'm out enjoying life" msgstr "" -#: ../src/common/config.py:305 +#: ../src/common/config.py:312 msgid "" "Sound to play when a MUC message contains one of the words in " "muc_highlight_words, or when a MUC message contains your nickname." msgstr "" -#: ../src/common/config.py:306 +#: ../src/common/config.py:313 msgid "" "Sound to play when any MUC message arrives. (This setting is taken into " "account only if notify_on_all_muc_messages is True)" msgstr "" -#: ../src/common/config.py:314 ../src/common/optparser.py:181 +#: ../src/common/config.py:321 ../src/common/optparser.py:185 msgid "green" msgstr "" -#: ../src/common/config.py:318 ../src/common/optparser.py:167 +#: ../src/common/config.py:325 ../src/common/optparser.py:171 msgid "grocery" msgstr "" -#: ../src/common/config.py:322 +#: ../src/common/config.py:329 msgid "human" msgstr "" -#: ../src/common/config.py:326 +#: ../src/common/config.py:333 msgid "marine" msgstr "" -#: ../src/common/connection.py:152 +#: ../src/common/connection.py:172 #, python-format msgid "Connection with account \"%s\" has been lost" msgstr "" -#: ../src/common/connection.py:153 +#: ../src/common/connection.py:173 msgid "To continue sending and receiving messages, you will need to reconnect." msgstr "" -#: ../src/common/connection.py:169 ../src/common/connection.py:195 +#: ../src/common/connection.py:185 ../src/common/connection.py:211 #, python-format msgid "Transport %s answered wrongly to register request." msgstr "" #. wrong answer -#: ../src/common/connection.py:194 +#: ../src/common/connection.py:210 msgid "Invalid answer" msgstr "" -#: ../src/common/connection.py:348 ../src/common/connection.py:384 -#: ../src/common/connection.py:754 +#: ../src/common/connection.py:397 ../src/common/connection.py:433 +#: ../src/common/connection.py:857 #, python-format msgid "Could not connect to \"%s\"" msgstr "" -#: ../src/common/connection.py:362 +#: ../src/common/connection.py:411 #, python-format msgid "Connected to server %s:%s with %s" msgstr "" -#: ../src/common/connection.py:385 +#: ../src/common/connection.py:434 msgid "Check your connection or try again later" msgstr "" -#: ../src/common/connection.py:410 +#: ../src/common/connection.py:459 #, python-format msgid "Authentication failed with \"%s\"" msgstr "" -#: ../src/common/connection.py:411 +#: ../src/common/connection.py:460 msgid "Please check your login and password for correctness." msgstr "" #. We didn't set a passphrase -#: ../src/common/connection.py:487 +#: ../src/common/connection.py:573 msgid "OpenPGP passphrase was not given" msgstr "" #. %s is the account name here -#: ../src/common/connection.py:489 +#: ../src/common/connection.py:575 #, python-format msgid "You will be connected to %s without OpenPGP." msgstr "" #. do not show I'm invisible! -#: ../src/common/connection.py:526 +#: ../src/common/connection.py:612 msgid "invisible" msgstr "" -#: ../src/common/connection.py:527 +#: ../src/common/connection.py:613 msgid "offline" msgstr "" -#: ../src/common/connection.py:528 +#: ../src/common/connection.py:614 #, python-format msgid "I'm %s" msgstr "" #. we're not english -#: ../src/common/connection.py:611 +#: ../src/common/connection.py:699 msgid "[This message is encrypted]" msgstr "" -#: ../src/common/connection.py:649 +#: ../src/common/connection.py:742 #, python-format msgid "" "Subject: %s\n" "%s" msgstr "" -#: ../src/common/connection.py:699 +#: ../src/common/connection.py:795 ../src/common/connection_handlers.py:1511 msgid "I would like to add you to my roster." msgstr "" -#: ../src/common/helpers.py:103 +#: ../src/common/connection_handlers.py:49 +msgid "Unable to load idle module" +msgstr "" + +#: ../src/common/connection_handlers.py:581 +#, python-format +msgid "Registration information for transport %s has not arrived in time" +msgstr "" + +#. password required to join +#. we are banned +#. room does not exist +#: ../src/common/connection_handlers.py:1450 +#: ../src/common/connection_handlers.py:1453 +#: ../src/common/connection_handlers.py:1456 +#: ../src/common/connection_handlers.py:1459 +#: ../src/common/connection_handlers.py:1462 +#: ../src/common/connection_handlers.py:1465 +#: ../src/common/connection_handlers.py:1473 +msgid "Unable to join room" +msgstr "" + +#: ../src/common/connection_handlers.py:1451 +msgid "A password is required to join this room." +msgstr "" + +#: ../src/common/connection_handlers.py:1454 +msgid "You are banned from this room." +msgstr "" + +#: ../src/common/connection_handlers.py:1457 +msgid "Such room does not exist." +msgstr "" + +#: ../src/common/connection_handlers.py:1460 +msgid "Room creation is restricted." +msgstr "" + +#: ../src/common/connection_handlers.py:1463 +msgid "Your registered nickname must be used." +msgstr "" + +#: ../src/common/connection_handlers.py:1466 +msgid "You are not in the members list." +msgstr "" + +#: ../src/common/connection_handlers.py:1474 +msgid "" +"Your desired nickname is in use or registered by another occupant.\n" +"Please specify another nickname below:" +msgstr "" + +#. BE CAREFUL: no con.updateRosterItem() in a callback +#: ../src/common/connection_handlers.py:1519 +#, python-format +msgid "we are now subscribed to %s" +msgstr "" + +#: ../src/common/connection_handlers.py:1521 +#, python-format +msgid "unsubscribe request from %s" +msgstr "" + +#: ../src/common/connection_handlers.py:1523 +#, python-format +msgid "we are now unsubscribed from %s" +msgstr "" + +#: ../src/common/connection_handlers.py:1680 +#, python-format +msgid "" +"JID %s is not RFC compliant. It will not be added to your roster. Use roster " +"management tools such as http://jru.jabberstudio.org/ to remove it" +msgstr "" + +#: ../src/common/helpers.py:100 msgid "Invalid character in username." msgstr "" -#: ../src/common/helpers.py:108 +#: ../src/common/helpers.py:105 msgid "Server address required." msgstr "" -#: ../src/common/helpers.py:113 +#: ../src/common/helpers.py:110 msgid "Invalid character in hostname." msgstr "" -#: ../src/common/helpers.py:119 +#: ../src/common/helpers.py:116 msgid "Invalid character in resource." msgstr "" #. GiB means gibibyte -#: ../src/common/helpers.py:159 +#: ../src/common/helpers.py:156 #, python-format msgid "%s GiB" msgstr "" #. GB means gigabyte -#: ../src/common/helpers.py:162 +#: ../src/common/helpers.py:159 #, python-format msgid "%s GB" msgstr "" #. MiB means mibibyte -#: ../src/common/helpers.py:166 +#: ../src/common/helpers.py:163 #, python-format msgid "%s MiB" msgstr "" #. MB means megabyte -#: ../src/common/helpers.py:169 +#: ../src/common/helpers.py:166 #, python-format msgid "%s MB" msgstr "" #. KiB means kibibyte -#: ../src/common/helpers.py:173 +#: ../src/common/helpers.py:170 #, python-format msgid "%s KiB" msgstr "" #. KB means kilo bytes -#: ../src/common/helpers.py:176 +#: ../src/common/helpers.py:173 #, python-format msgid "%s KB" msgstr "" #. B means bytes -#: ../src/common/helpers.py:179 +#: ../src/common/helpers.py:176 #, python-format msgid "%s B" msgstr "" -#: ../src/common/helpers.py:189 +#: ../src/common/helpers.py:205 msgid "_Busy" msgstr "" -#: ../src/common/helpers.py:191 +#: ../src/common/helpers.py:207 msgid "Busy" msgstr "" -#: ../src/common/helpers.py:194 +#: ../src/common/helpers.py:210 msgid "_Not Available" msgstr "" -#: ../src/common/helpers.py:196 +#: ../src/common/helpers.py:212 msgid "Not Available" msgstr "" -#: ../src/common/helpers.py:199 +#: ../src/common/helpers.py:215 msgid "_Free for Chat" msgstr "" -#: ../src/common/helpers.py:201 +#: ../src/common/helpers.py:217 msgid "Free for Chat" msgstr "" -#: ../src/common/helpers.py:204 +#: ../src/common/helpers.py:220 msgid "_Available" msgstr "" -#: ../src/common/helpers.py:206 +#: ../src/common/helpers.py:222 msgid "Available" msgstr "" -#: ../src/common/helpers.py:208 +#: ../src/common/helpers.py:224 msgid "Connecting" msgstr "" -#: ../src/common/helpers.py:211 +#: ../src/common/helpers.py:227 msgid "A_way" msgstr "" -#: ../src/common/helpers.py:213 +#: ../src/common/helpers.py:229 msgid "Away" msgstr "" -#: ../src/common/helpers.py:216 +#: ../src/common/helpers.py:232 msgid "_Offline" msgstr "" -#: ../src/common/helpers.py:218 +#: ../src/common/helpers.py:234 msgid "Offline" msgstr "" -#: ../src/common/helpers.py:221 +#: ../src/common/helpers.py:237 msgid "_Invisible" msgstr "" -#: ../src/common/helpers.py:223 -msgid "Invisible" -msgstr "" - -#: ../src/common/helpers.py:227 +#: ../src/common/helpers.py:243 msgid "?contact has status:Unknown" msgstr "" -#: ../src/common/helpers.py:229 +#: ../src/common/helpers.py:245 msgid "?contact has status:Has errors" msgstr "" -#: ../src/common/helpers.py:234 +#: ../src/common/helpers.py:250 msgid "?Subscription we already have:None" msgstr "" -#: ../src/common/helpers.py:236 +#: ../src/common/helpers.py:252 msgid "To" msgstr "" -#: ../src/common/helpers.py:238 +#: ../src/common/helpers.py:254 msgid "From" msgstr "" -#: ../src/common/helpers.py:240 +#: ../src/common/helpers.py:256 msgid "Both" msgstr "" -#: ../src/common/helpers.py:248 +#: ../src/common/helpers.py:264 msgid "?Ask (for Subscription):None" msgstr "" -#: ../src/common/helpers.py:250 +#: ../src/common/helpers.py:266 msgid "Subscribe" msgstr "" -#: ../src/common/helpers.py:259 +#: ../src/common/helpers.py:275 msgid "?Group Chat Contact Role:None" msgstr "" -#: ../src/common/helpers.py:262 +#: ../src/common/helpers.py:278 msgid "Moderators" msgstr "" -#: ../src/common/helpers.py:264 +#: ../src/common/helpers.py:280 msgid "Moderator" msgstr "" -#: ../src/common/helpers.py:267 +#: ../src/common/helpers.py:283 msgid "Participants" msgstr "" -#: ../src/common/helpers.py:269 +#: ../src/common/helpers.py:285 msgid "Participant" msgstr "" -#: ../src/common/helpers.py:272 +#: ../src/common/helpers.py:288 msgid "Visitors" msgstr "" -#: ../src/common/helpers.py:274 +#: ../src/common/helpers.py:290 msgid "Visitor" msgstr "" -#: ../src/common/helpers.py:310 +#: ../src/common/helpers.py:326 msgid "is paying attention to the conversation" msgstr "" -#: ../src/common/helpers.py:312 +#: ../src/common/helpers.py:328 msgid "is doing something else" msgstr "" -#: ../src/common/helpers.py:314 +#: ../src/common/helpers.py:330 msgid "is composing a message..." msgstr "" #. paused means he or she was compoing but has stopped for a while -#: ../src/common/helpers.py:317 +#: ../src/common/helpers.py:333 msgid "paused composing a message" msgstr "" -#: ../src/common/helpers.py:319 +#: ../src/common/helpers.py:335 msgid "has closed the chat window or tab" msgstr "" #. we talk about a file -#: ../src/common/optparser.py:62 +#: ../src/common/optparser.py:60 #, python-format msgid "error: cannot open %s for reading" msgstr "" -#: ../src/common/optparser.py:167 +#: ../src/common/optparser.py:171 msgid "gtk+" msgstr "" -#: ../src/common/optparser.py:176 ../src/common/optparser.py:177 +#: ../src/common/optparser.py:180 ../src/common/optparser.py:181 msgid "cyan" msgstr "" diff --git a/po/hr.po b/po/hr.po new file mode 100644 index 000000000..64bd5fc68 --- /dev/null +++ b/po/hr.po @@ -0,0 +1,5267 @@ +# Croatian translations for gajim. +# Copyright (C) 2006 RiLinux +# This file is distributed under the same license as the gajim package. +# Adrian C. , 2006. +# Deni B. , 2006. +# Armando V. 2006. +# Vedran M. 2006. +# +msgid "" +msgstr "" +"Project-Id-Version: gajim 0.10.1\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2006-07-04 00:03+0200\n" +"PO-Revision-Date: 2006-08-12 21:05+0100\n" +"Last-Translator: Adrian C. \n" +"Language-Team: Croatian\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n==1?0:1);\n" + +#: ../gajim.desktop.in.h:1 +msgid "A GTK+ Jabber client" +msgstr "GTK+ Jabber klijent" + +#: ../gajim.desktop.in.h:2 +msgid "Gajim Instant Messenger" +msgstr "Gajim Instant Messenger" + +#: ../gajim.desktop.in.h:3 +msgid "Jabber IM Client" +msgstr "Jabber IM Klijent" + +#: ../data/glade/account_context_menu.glade.h:1 +msgid "Send Single _Message..." +msgstr "PoÅ¡alji Jednu _Poruku..." + +#: ../data/glade/account_context_menu.glade.h:2 +msgid "_Add Contact..." +msgstr "_Dodavanje Kontakta..." + +#: ../data/glade/account_context_menu.glade.h:3 +msgid "_Discover Services..." +msgstr "_Otkrivanje Usluga..." + +#: ../data/glade/account_context_menu.glade.h:4 +#: ../data/glade/roster_window.glade.h:15 +#: ../data/glade/systray_context_menu.glade.h:5 +msgid "_Group Chat" +msgstr "_Grupni Razgovor" + +#: ../data/glade/account_context_menu.glade.h:5 +msgid "_Modify Account..." +msgstr "_Izmjeni RaÄun..." + +#: ../data/glade/account_context_menu.glade.h:6 +msgid "_Status" +msgstr "_Status" + +#: ../data/glade/account_creation_wizard_window.glade.h:1 +msgid "" +"Account is being created\n" +"\n" +"Please wait..." +msgstr "" +"KorisniÄki raÄun je u procesu stvaranja\n" +"\n" +"Molimo priÄekajte..." + +#: ../data/glade/account_creation_wizard_window.glade.h:4 +msgid "Please choose one of the options below:" +msgstr "Molimo odaberite jednu od opcija ispod:" + +#: ../data/glade/account_creation_wizard_window.glade.h:5 +msgid "Please fill in the data for your new account" +msgstr "Molimo popunite podatke za vaÅ¡ novi korisniÄki raÄun" + +#: ../data/glade/account_creation_wizard_window.glade.h:6 +msgid "Click to see features (like MSN, ICQ transports) of jabber servers" +msgstr "Kliknite da vidite mogućnosti (kao Å¡to su MSN, ICQ transporti od jabber servera" + +#: ../data/glade/account_creation_wizard_window.glade.h:7 +msgid "Connect when I press Finish" +msgstr "Spoji se kada pritisnem ZavrÅ¡i" + +#: ../data/glade/account_creation_wizard_window.glade.h:8 +msgid "Gajim: Account Creation Wizard" +msgstr "Gajim: ÄŒarobnjak za Stvaranje RaÄuna" + +#: ../data/glade/account_creation_wizard_window.glade.h:9 +msgid "I already have an account I want to use" +msgstr "Već imam raÄun koji želim koristiti" + +#: ../data/glade/account_creation_wizard_window.glade.h:10 +msgid "I want to _register for a new account" +msgstr "Želim se _registrirati novi raÄun" + +#: ../data/glade/account_creation_wizard_window.glade.h:11 +#: ../data/glade/account_modification_window.glade.h:18 +msgid "If checked, Gajim will remember the password for this account" +msgstr "Ako je oznaÄeno, Gajim će pamtiti lozinku za ovaj raÄun" + +#: ../data/glade/account_creation_wizard_window.glade.h:12 +#: ../data/glade/manage_proxies_window.glade.h:6 +msgid "Pass_word:" +msgstr "Lo_zinka:" + +#: ../data/glade/account_creation_wizard_window.glade.h:13 +#: ../data/glade/account_modification_window.glade.h:37 +msgid "Save pass_word" +msgstr "Snimi lo_zinku" + +#: ../data/glade/account_creation_wizard_window.glade.h:14 +msgid "Servers Features" +msgstr "Mogućnosti Poslužitelja" + +#: ../data/glade/account_creation_wizard_window.glade.h:15 +msgid "Set my profile when I connect" +msgstr "Postavi moj profil pri spajanju" + +#: ../data/glade/account_creation_wizard_window.glade.h:16 +msgid "" +"You need to have an account in order to connect\n" +"to the Jabber network." +msgstr "" +"Morate imati raÄun kako bi se mogli spojiti\n" +"na Jabber mrežu." + +#: ../data/glade/account_creation_wizard_window.glade.h:18 +msgid "Your JID:" +msgstr "VaÅ¡ JID:" + +#: ../data/glade/account_creation_wizard_window.glade.h:19 +#: ../data/glade/roster_window.glade.h:10 +msgid "_Advanced" +msgstr "_Napredno" + +#: ../data/glade/account_creation_wizard_window.glade.h:20 +msgid "_Finish" +msgstr "_ZavrÅ¡i" + +#: ../data/glade/account_creation_wizard_window.glade.h:21 +#: ../data/glade/manage_proxies_window.glade.h:9 +msgid "_Host:" +msgstr "_Poslužitelj:" + +#: ../data/glade/account_creation_wizard_window.glade.h:22 +#: ../data/glade/account_modification_window.glade.h:45 +msgid "_Password:" +msgstr "_Lozinka:" + +#: ../data/glade/account_creation_wizard_window.glade.h:23 +#: ../data/glade/manage_proxies_window.glade.h:10 +msgid "_Port:" +msgstr "_Port:" + +#: ../data/glade/account_creation_wizard_window.glade.h:24 +msgid "_Retype Password:" +msgstr "_Ponovo utipkajte Password:" + +#: ../data/glade/account_creation_wizard_window.glade.h:25 +msgid "_Server:" +msgstr "_Poslužitelj:" + +#: ../data/glade/account_creation_wizard_window.glade.h:26 +msgid "_Use proxy" +msgstr "_Koristi proxy" + +#: ../data/glade/account_creation_wizard_window.glade.h:27 +#: ../data/glade/manage_proxies_window.glade.h:11 +msgid "_Username:" +msgstr "_KorisniÄko ime:" + +#: ../data/glade/account_modification_window.glade.h:1 +#: ../data/glade/preferences_window.glade.h:8 +msgid "Miscellaneous" +msgstr "Ostalo" + +#: ../data/glade/account_modification_window.glade.h:2 +msgid "OpenPGP" +msgstr "OpenPGP" + +#: ../data/glade/account_modification_window.glade.h:3 +msgid "Personal Information" +msgstr "Osobne informacije" + +#: ../data/glade/account_modification_window.glade.h:4 +msgid "Account" +msgstr "KorisniÄki raÄun" + +#: ../data/glade/account_modification_window.glade.h:5 +msgid "Account Modification" +msgstr "Modifikacija KorisniÄkog RaÄuna" + +#: ../data/glade/account_modification_window.glade.h:6 +msgid "Autoreconnect when connection is lost" +msgstr "Automatsko ponovno spajanje kada je veza izgubljena" + +#: ../data/glade/account_modification_window.glade.h:7 +msgid "C_onnect on Gajim startup" +msgstr "Sp_oji se prilikom pokretanja Gajima" + +#: ../data/glade/account_modification_window.glade.h:8 +msgid "Chan_ge Password" +msgstr "P_romijeni Lozinku" + +#: ../data/glade/account_modification_window.glade.h:9 +msgid "Check this so Gajim will connect in port 5223 where legacy servers are expected to have SSL capabilities. Note that Gajim uses TLS encryption by default if broadcasted by the server, and with this option enabled TLS will be disabled" +msgstr "OznaÄite ovo kako bi se Gajim spajao na port 5223 gdje se od starijih poslužitelja oÄekuju SSL mogućnosti. Primjetite da Gajim koristi TLS enkripciju ukoliko to server podržava, te će sa ovom opcijom ukljuÄenom TLS biti onemogućen" + +#: ../data/glade/account_modification_window.glade.h:10 +msgid "Choose _Key..." +msgstr "Odaberi _KljuÄ" + +#: ../data/glade/account_modification_window.glade.h:11 +msgid "Click to change account's password" +msgstr "Kliknite za promjenu lozinke korisniÄkog raÄuna" + +#: ../data/glade/account_modification_window.glade.h:12 +msgid "Connection" +msgstr "Veza" + +#: ../data/glade/account_modification_window.glade.h:13 +msgid "Edit Personal Information..." +msgstr "Izmjeni Osobne Informacije" + +#: ../data/glade/account_modification_window.glade.h:14 +#: ../data/glade/roster_window.glade.h:5 +#: ../src/notify.py:308 +#: ../src/notify.py:330 +#: ../src/notify.py:342 +#: ../src/tooltips.py:350 +msgid "Gajim" +msgstr "Gajim" + +#: ../data/glade/account_modification_window.glade.h:15 +#: ../data/glade/preferences_window.glade.h:44 +#: ../data/glade/vcard_information_window.glade.h:17 +#: ../src/roster_window.py:290 +#: ../src/roster_window.py:1184 +#: ../src/roster_window.py:1405 +msgid "General" +msgstr "Općenito" + +#: ../data/glade/account_modification_window.glade.h:16 +msgid "Hostname: " +msgstr "Ime poslužitelja:" + +#: ../data/glade/account_modification_window.glade.h:17 +msgid "If checked, Gajim will also broadcast some more IPs except from just your IP, so file transfer has higher chances of working." +msgstr "Ako je oznaÄeno, Gajim će odaÅ¡iljati joÅ¡ neke IP adrese osim vaÅ¡e, kako bi prijenosi datoteka imali veću Å¡ansu uspjeha." + +#: ../data/glade/account_modification_window.glade.h:19 +msgid "If checked, Gajim will send keep-alive packets so it prevents connection timeout which results in disconnection" +msgstr "Ako je oznaÄeno, Gajim će slati keep-alive pakete kako bi sprijeÄio prekid veze zbog preduge neaktivnosti" + +#: ../data/glade/account_modification_window.glade.h:20 +msgid "If checked, Gajim will store the password in ~/.gajim/config with 'read' permission only for you" +msgstr "Ako je oznaÄeno, Gajim će spremiti lozinku u ~/.gajim/config sa 'Äitaj' dozvolom samo za vas" + +#: ../data/glade/account_modification_window.glade.h:21 +msgid "If checked, Gajim, when launched, will automatically connect to jabber using this account" +msgstr "Ako je oznaÄeno, Gajim će se pri pokretanju automatski spojiti na jabber koristeći ovaj raÄun" + +#: ../data/glade/account_modification_window.glade.h:22 +msgid "If checked, any change to the global status (handled by the combobox at the bottom of the roster window) will change the status of this account accordingly" +msgstr "Ako je oznaÄeno, svaka promjena globalnog statusa (koji se mjenja padajućim izbornikom na dnu prozora kontaktne liste) promjenit će status i ovog raÄuna" + +#: ../data/glade/account_modification_window.glade.h:23 +msgid "Information about you, as stored in the server" +msgstr "Informacije o vama, kako stoji na poslužitelju" + +#: ../data/glade/account_modification_window.glade.h:24 +msgid "Manage..." +msgstr "Podesi..." + +#: ../data/glade/account_modification_window.glade.h:25 +#: ../src/config.py:1448 +msgid "No key selected" +msgstr "Niti jedan kljuÄ nije odabran" + +#. None means no proxy profile selected +#: ../data/glade/account_modification_window.glade.h:27 +#: ../src/config.py:1053 +#: ../src/config.py:1058 +#: ../src/config.py:1230 +#: ../src/config.py:1505 +#: ../src/config.py:1578 +#: ../src/config.py:2282 +msgid "None" +msgstr "NiÅ¡ta" + +#: ../data/glade/account_modification_window.glade.h:28 +msgid "Personal Information" +msgstr "Osobne Informacije" + +#: ../data/glade/account_modification_window.glade.h:29 +msgid "Port: " +msgstr "Port:" + +#: ../data/glade/account_modification_window.glade.h:30 +msgid "Priori_ty:" +msgstr "Priori_tet:" + +#: ../data/glade/account_modification_window.glade.h:31 +msgid "Priority is used in Jabber to determine who gets the events from the jabber server when two or more clients are connected using the same account; The client with the highest priority gets the events" +msgstr "Prioritet se u Jabberu koristi kako bi se odredilo tko dobiva dogaÄ‘aje sa jabber servera kada su spojena 2 ili viÅ¡e klijenta koristeći isti raÄun; klijent sa najviÅ¡im prioritetom dobiva te dogaÄ‘aje" + +#: ../data/glade/account_modification_window.glade.h:32 +msgid "Proxy:" +msgstr "Proxy:" + +#: ../data/glade/account_modification_window.glade.h:33 +msgid "Resour_ce: " +msgstr "Resur_s" + +#: ../data/glade/account_modification_window.glade.h:34 +msgid "Resource is sent to the Jabber server in order to separate the same JID in two or more parts depending on the number of the clients connected in the same server with the same account. So you might be connected in the same account with resource 'Home' and 'Work' at the same time. The resource which has the highest priority will get the events. (see below)" +msgstr "Resurs se Å¡alje Jabber serveru kako bi se razlikovao isti JID kod 2 ili viÅ¡e klijenata spojena u isto vrijeme na isti server sa istim raÄunom. Dakle, možete biti spojeni sa resursom 'Posao' ili 'Kuća', klijent sa najviÅ¡im prioritetom dobivat će obavijesti o dogaÄ‘ajima" + +#: ../data/glade/account_modification_window.glade.h:35 +msgid "Save _passphrase (insecure)" +msgstr "Snimi _lozinku (nesigurno)" + +#: ../data/glade/account_modification_window.glade.h:36 +msgid "Save conversation _logs for all contacts" +msgstr "Snimi _dnevnik razgovora za sve kontakte" + +#: ../data/glade/account_modification_window.glade.h:38 +msgid "Send keep-alive packets" +msgstr "Å alji keep-alive pakete" + +#: ../data/glade/account_modification_window.glade.h:39 +msgid "Synch_ronize account status with global status" +msgstr "Sink_roniziraj status raÄuna sa globalnim statusom" + +#: ../data/glade/account_modification_window.glade.h:40 +msgid "Use _SSL (legacy)" +msgstr "Koristi _SSL (zastarjelo)" + +#: ../data/glade/account_modification_window.glade.h:41 +msgid "Use custom hostname/port" +msgstr "Koristi vlastito ime poslužitelja/port" + +#: ../data/glade/account_modification_window.glade.h:42 +msgid "Use file transfer proxies" +msgstr "Koristi proxy za prijenos datoteka" + +#: ../data/glade/account_modification_window.glade.h:43 +#: ../data/glade/add_new_contact_window.glade.h:6 +msgid "_Jabber ID:" +msgstr "_Jabber ID:" + +#: ../data/glade/account_modification_window.glade.h:44 +msgid "_Name: " +msgstr "_Ime:" + +#: ../data/glade/accounts_window.glade.h:1 +msgid "Accounts" +msgstr "KorisniÄki RaÄun" + +#: ../data/glade/accounts_window.glade.h:2 +msgid "If you have 2 or more accounts and it is checked, Gajim will list all contacts as if you had one account" +msgstr "Ako imate 2 ili viÅ¡e raÄuna i ovo je oznaÄeno, Gajim će prikazivati sve kontakte kao da imate jedan raÄun" + +#: ../data/glade/accounts_window.glade.h:3 +msgid "_Merge accounts" +msgstr "_Spoji raÄune" + +#: ../data/glade/accounts_window.glade.h:4 +msgid "_Modify" +msgstr "_Izmjeni" + +#: ../data/glade/accounts_window.glade.h:5 +#: ../data/glade/remove_account_window.glade.h:4 +msgid "_Remove" +msgstr "_Ukloni" + +#: ../data/glade/add_new_contact_window.glade.h:1 +msgid "A_llow this contact to view my status" +msgstr "D_ozvoli njemu/njoj da vidi moj status" + +#: ../data/glade/add_new_contact_window.glade.h:2 +msgid "Add New Contact" +msgstr "Dodaj Novi Kontakt" + +#: ../data/glade/add_new_contact_window.glade.h:3 +msgid "I would like to add you to my contact list." +msgstr "Želio bih Vas dodati na moju listu kontakata." + +#: ../data/glade/add_new_contact_window.glade.h:4 +msgid "_Account:" +msgstr "_KorisniÄki raÄun" + +#: ../data/glade/add_new_contact_window.glade.h:5 +msgid "_Group:" +msgstr "_Grupa:" + +#: ../data/glade/add_new_contact_window.glade.h:7 +msgid "_Nickname:" +msgstr "_Nadimak:" + +#: ../data/glade/add_new_contact_window.glade.h:8 +msgid "_Protocol:" +msgstr "_Protokol:" + +#: ../data/glade/add_new_contact_window.glade.h:9 +msgid "_Subscribe" +msgstr "_Pretplatiti se" + +#: ../data/glade/add_new_contact_window.glade.h:10 +msgid "_User ID:" +msgstr "_ID Korisnika:" + +#: ../data/glade/advanced_configuration_window.glade.h:1 +msgid "Description" +msgstr "Opis" + +#: ../data/glade/advanced_configuration_window.glade.h:2 +msgid "NOTE: You should restart gajim for some setting to take effect" +msgstr "NAPOMENA: Trebali biste ponovno pokrenuti gajim da bi neke postavke postale aktivne" + +#: ../data/glade/advanced_configuration_window.glade.h:3 +msgid "Advanced Configuration Editor" +msgstr "Editor Naprednih Postavki" + +#: ../data/glade/advanced_configuration_window.glade.h:4 +msgid "Filter:" +msgstr "Filter:" + +#: ../data/glade/advanced_menuitem_menu.glade.h:1 +msgid "Delete MOTD" +msgstr "IzbriÅ¡i MOTD" + +#: ../data/glade/advanced_menuitem_menu.glade.h:2 +msgid "Deletes Message of the Day" +msgstr "BriÅ¡e Poruku Dana" + +#: ../data/glade/advanced_menuitem_menu.glade.h:3 +msgid "Sends a message to currently connected users to this server" +msgstr "Å alje poruku trenutno spojenim korisnicima na ovom poslužitelju" + +#: ../data/glade/advanced_menuitem_menu.glade.h:4 +msgid "Set MOTD" +msgstr "Postavi MOTD" + +#: ../data/glade/advanced_menuitem_menu.glade.h:5 +msgid "Sets Message of the Day" +msgstr "Postavlja Poruku Dana (Message of the Day)" + +#: ../data/glade/advanced_menuitem_menu.glade.h:6 +msgid "Show _XML Console" +msgstr "Prikaži _XML Konzolu" + +#: ../data/glade/advanced_menuitem_menu.glade.h:7 +msgid "Update MOTD" +msgstr "Osvježi MOTD" + +#: ../data/glade/advanced_menuitem_menu.glade.h:8 +msgid "Updates Message of the Day" +msgstr "Osvježava Poruku Dana" + +#: ../data/glade/advanced_menuitem_menu.glade.h:9 +msgid "_Administrator" +msgstr "_Administrator" + +#: ../data/glade/advanced_menuitem_menu.glade.h:10 +msgid "_Privacy Lists" +msgstr "Liste _Privatnosti" + +#: ../data/glade/advanced_menuitem_menu.glade.h:11 +msgid "_Send Server Message" +msgstr "_PoÅ¡alji Poslužiteljsku Poruku" + +#: ../data/glade/advanced_menuitem_menu.glade.h:12 +msgid "_Send Single Message" +msgstr "_PoÅ¡alji Jednu Poruku" + +#: ../data/glade/advanced_notifications_window.glade.h:1 +msgid " a window/tab opened with that contact " +msgstr " otvaranje prozora/taba sa tim kontaktom " + +#: ../data/glade/advanced_notifications_window.glade.h:2 +msgid "Actions" +msgstr "Akcije" + +#: ../data/glade/advanced_notifications_window.glade.h:3 +msgid "Conditions" +msgstr "Uvjeti" + +#: ../data/glade/advanced_notifications_window.glade.h:4 +#: ../data/glade/preferences_window.glade.h:10 +msgid "Sounds" +msgstr "Zvukovi" + +#: ../data/glade/advanced_notifications_window.glade.h:5 +msgid "Add" +msgstr "Dodaj" + +#: ../data/glade/advanced_notifications_window.glade.h:6 +msgid "Advanced Actions" +msgstr "Napredne Akcije" + +#: ../data/glade/advanced_notifications_window.glade.h:7 +msgid "Advanced Notifications Control" +msgstr "Editor Naprednih Obavijesti" + +#: ../data/glade/advanced_notifications_window.glade.h:8 +msgid "All Status " +msgstr "Svi Statusi: " + +#: ../data/glade/advanced_notifications_window.glade.h:9 +msgid "And I " +msgstr "I ja " + +#: ../data/glade/advanced_notifications_window.glade.h:10 +msgid "Away " +msgstr "Odsutan" + +#: ../data/glade/advanced_notifications_window.glade.h:11 +msgid "Busy " +msgstr "Zaposlen" + +#: ../data/glade/advanced_notifications_window.glade.h:12 +msgid "Don't have " +msgstr "Nemam " + +#: ../data/glade/advanced_notifications_window.glade.h:13 +msgid "Down" +msgstr "Skidanje" + +#: ../data/glade/advanced_notifications_window.glade.h:14 +msgid "Have " +msgstr "Imam " + +#: ../data/glade/advanced_notifications_window.glade.h:15 +#: ../src/common/helpers.py:239 +msgid "Invisible" +msgstr "Nevidljiv" + +#: ../data/glade/advanced_notifications_window.glade.h:16 +msgid "Launch a command" +msgstr "Pokrenite naredbu" + +#: ../data/glade/advanced_notifications_window.glade.h:17 +msgid "List of special notifications settings" +msgstr "Lista podeÅ¡enja posebnih obavijesti" + +#: ../data/glade/advanced_notifications_window.glade.h:18 +msgid "Not Available " +msgstr "Nedostupan" + +#: ../data/glade/advanced_notifications_window.glade.h:19 +msgid "Online / Free For Chat" +msgstr "Spojen / Slobodan za Razgovor" + +#: ../data/glade/advanced_notifications_window.glade.h:20 +msgid "Play a sound" +msgstr "Sviraj zvukove" + +#: ../data/glade/advanced_notifications_window.glade.h:21 +msgid "" +"Receive a Message\n" +"Contact Connected\n" +"Contact Disconnected\n" +"Contact Change Status\n" +"Group Chat Message Highlight\n" +"Group Chat Message Received\n" +"File Transfert Resquest\n" +"File Transfert Started\n" +"File Transfert Finished" +msgstr "" +"Primanje Poruke\n" +"Kontakt Spojen\n" +"Kontakt Odspojen\n" +"Kontakt Promjeni Status\n" +"Osvjetljavanje na Poruku Grupnog Razgovora\n" +"Primanje Poruke Grupnog Razgovora\n" +"Zahtjev za Prijenosom Datoteke\n" +"PoÄetak Prijenosa Datoteke\n" +"ZavrÅ¡en Prijenos Datoteke" + +#: ../data/glade/advanced_notifications_window.glade.h:30 +msgid "Some special(s) status..." +msgstr "Neki poseban status..." + +#: ../data/glade/advanced_notifications_window.glade.h:31 +msgid "Up" +msgstr "Gore" + +#: ../data/glade/advanced_notifications_window.glade.h:32 +msgid "When " +msgstr "Kada " + +#: ../data/glade/advanced_notifications_window.glade.h:33 +msgid "_Activate Windows manager UrgencyHint to make chat taskbar to flash" +msgstr "_Aktivacija opcije Upravitelja prozorima za bljeskanje razgovora u taskbaru" + +#: ../data/glade/advanced_notifications_window.glade.h:34 +msgid "_Disable auto opening chat window" +msgstr "_Onemogući automatsko otvaranje prozora razgovora" + +#: ../data/glade/advanced_notifications_window.glade.h:35 +msgid "_Disable existing popup window" +msgstr "_Onemogući postojeći iskoÄni prozor" + +#: ../data/glade/advanced_notifications_window.glade.h:36 +msgid "_Disable existing sound for this event" +msgstr "_Onemogući postojeći zvuk za ovaj dogaÄ‘aj" + +#: ../data/glade/advanced_notifications_window.glade.h:37 +msgid "_Disable showing event in roster" +msgstr "_Onemogući prikazivanje dogaÄ‘aja u listi kontakata" + +#: ../data/glade/advanced_notifications_window.glade.h:38 +msgid "_Disable showing event in systray" +msgstr "_Onemogući prikazivanje dogaÄ‘aja u systrayu" + +#: ../data/glade/advanced_notifications_window.glade.h:39 +msgid "_Inform me with a popup window" +msgstr "_Obavijesti me sa iskoÄnim prozorom" + +#: ../data/glade/advanced_notifications_window.glade.h:40 +msgid "_Open chat window with user" +msgstr "_Otvori prozor za razgovor sa korisnikom" + +#: ../data/glade/advanced_notifications_window.glade.h:41 +msgid "_Show event in roster" +msgstr "Prikaži dogaÄ‘aj u _listi kontakata" + +#: ../data/glade/advanced_notifications_window.glade.h:42 +msgid "_Show event in systray" +msgstr "Prikaži samo u _listi kontakata" + +#: ../data/glade/advanced_notifications_window.glade.h:43 +msgid "" +"contact(s)\n" +"group(s)\n" +"everybody" +msgstr "" +"kontakt(i)\n" +"grupe\n" +"svi" + +#: ../data/glade/advanced_notifications_window.glade.h:46 +msgid "for " +msgstr "za" + +#: ../data/glade/advanced_notifications_window.glade.h:47 +msgid "when I'm " +msgstr "kada sam " + +#: ../data/glade/change_password_dialog.glade.h:1 +msgid "Change Password" +msgstr "Promijeni Password" + +#: ../data/glade/change_password_dialog.glade.h:2 +msgid "Enter it again for confirmation:" +msgstr "Ponovite unos za potvrdu:" + +#: ../data/glade/change_password_dialog.glade.h:3 +msgid "Enter new password:" +msgstr "Unesite novu lozinku:" + +#: ../data/glade/change_status_message_dialog.glade.h:1 +msgid "Type your new status message" +msgstr "UpiÅ¡ite vaÅ¡u novu statusnu poruku" + +#: ../data/glade/change_status_message_dialog.glade.h:2 +msgid "Preset messages:" +msgstr "Prije postavljene poruke:" + +#: ../data/glade/change_status_message_dialog.glade.h:3 +msgid "Save as Preset..." +msgstr "Snimi kao Prije Postavljeno..." + +#: ../data/glade/chat_context_menu.glade.h:1 +msgid "Join _Group Chat" +msgstr "Pridruživanje _Grupnom Razgovoru" + +#: ../data/glade/chat_context_menu.glade.h:2 +#: ../data/glade/chat_control_popup_menu.glade.h:4 +#: ../data/glade/gc_occupants_menu.glade.h:2 +#: ../data/glade/roster_contact_context_menu.glade.h:8 +msgid "_Add to Roster" +msgstr "_Dodaj na Listu" + +#: ../data/glade/chat_context_menu.glade.h:3 +msgid "_Copy JID/Email Address" +msgstr "_Kopiraj JID/Email Adresu" + +#: ../data/glade/chat_context_menu.glade.h:4 +msgid "_Copy Link Location" +msgstr "_Kopiraj Lokaciju Linka" + +#: ../data/glade/chat_context_menu.glade.h:5 +msgid "_Open Email Composer" +msgstr "_Otvori Sastavljanje Emaila" + +#: ../data/glade/chat_context_menu.glade.h:6 +msgid "_Open Link in Browser" +msgstr "_Otvori Link u Pretražniku" + +#: ../data/glade/chat_context_menu.glade.h:7 +#: ../data/glade/roster_window.glade.h:19 +#: ../data/glade/systray_context_menu.glade.h:6 +msgid "_Start Chat" +msgstr "_ZapoÄni Razgovor" + +#: ../data/glade/chat_control_popup_menu.glade.h:1 +msgid "Click to see past conversations with this contact" +msgstr "Pritisnite za pregled proÅ¡lih razgovora sa ovim kontaktom" + +#: ../data/glade/chat_control_popup_menu.glade.h:2 +#: ../data/glade/roster_contact_context_menu.glade.h:6 +msgid "Send _File" +msgstr "PoÅ¡alji _Datoteku" + +#: ../data/glade/chat_control_popup_menu.glade.h:3 +msgid "Toggle Open_PGP Encryption" +msgstr "UkljuÄi/IskljuÄi Open_PGP Enkripciju" + +#: ../data/glade/chat_control_popup_menu.glade.h:5 +#: ../data/glade/gc_control_popup_menu.glade.h:6 +msgid "_Compact View Alt+C" +msgstr "_Kompaktan Pregled Alt+K" + +#: ../data/glade/chat_control_popup_menu.glade.h:6 +#: ../data/glade/gc_control_popup_menu.glade.h:7 +#: ../data/glade/gc_occupants_menu.glade.h:5 +#: ../data/glade/roster_contact_context_menu.glade.h:11 +msgid "_History" +msgstr "_Povijest" + +#: ../data/glade/data_form_window.glade.h:1 +msgid "Room Configuration" +msgstr "Konfiguracija Sobe" + +#: ../data/glade/edit_groups_dialog.glade.h:1 +msgid "Edit Groups" +msgstr "Izmjeni Grupe" + +#: ../data/glade/filetransfers.glade.h:1 +msgid "A list of active, completed and stopped file transfers" +msgstr "Lista aktivnih, kompletiranih i zaustavljenih prijenosa datoteka" + +#: ../data/glade/filetransfers.glade.h:2 +msgid "Cancel file transfer" +msgstr "Prekini transfer datoteke" + +#: ../data/glade/filetransfers.glade.h:3 +msgid "Cancels the selected file transfer" +msgstr "Prekini transfer odabrane datoteke" + +#: ../data/glade/filetransfers.glade.h:4 +msgid "Cancels the selected file transfer and removes incomplete file" +msgstr "Prekini transfer odabrane datoteke i izbriÅ¡i nekompletnu datoteku" + +#: ../data/glade/filetransfers.glade.h:5 +msgid "Clean _up" +msgstr "PoÄist_i" + +#: ../data/glade/filetransfers.glade.h:6 +msgid "File Transfers" +msgstr "Prijenosi Datoteka" + +#: ../data/glade/filetransfers.glade.h:7 +msgid "Hides the window" +msgstr "Skriva prozor" + +#: ../data/glade/filetransfers.glade.h:8 +msgid "Remove file transfer from the list." +msgstr "Ukloni prijenos datoteka sa liste" + +#: ../data/glade/filetransfers.glade.h:9 +msgid "Removes completed, canceled and failed file transfers from the list" +msgstr "Ukloni zavrÅ¡ene, zaustavljene ili neuspjele prijenose datoteka sa liste" + +#: ../data/glade/filetransfers.glade.h:10 +msgid "Shows a list of file transfers between you and other" +msgstr "Prikazuje listu prijenosa datoteka izmeÄ‘u vas i ostalih" + +#: ../data/glade/filetransfers.glade.h:11 +msgid "This action removes single file transfer from the list. If the transfer is active, it is first stopped and then removed" +msgstr "Ova akcija uklanja prijenos datoteke sa liste. Ako je prijenos aktivan, prvo se zaustavlja i onda uklanja" + +#: ../data/glade/filetransfers.glade.h:12 +msgid "When a file transfer is complete show a popup notification" +msgstr "Pokaži popup obavijest kada se zavrÅ¡i prijenos datoteka" + +#: ../data/glade/filetransfers.glade.h:13 +#: ../src/filetransfers_window.py:753 +msgid "_Continue" +msgstr "_Nastaviti" + +#: ../data/glade/filetransfers.glade.h:14 +msgid "_Notify me when a file transfer is complete" +msgstr "_Obavijesti me kada se zavrÅ¡i prijenos datoteka" + +#: ../data/glade/filetransfers.glade.h:15 +#: ../src/filetransfers_window.py:190 +msgid "_Open Containing Folder" +msgstr "_Otvaranje Mape Sadržaja" + +#: ../data/glade/filetransfers.glade.h:16 +msgid "_Pause" +msgstr "_Stanka" + +#: ../data/glade/filetransfers.glade.h:17 +msgid "file transfers list" +msgstr "lista prijenosa datoteka" + +#: ../data/glade/gajim_themes_window.glade.h:1 +msgid "Chatstate Tab Colors" +msgstr "Boje Tabova Statusa Razgovora" + +#: ../data/glade/gajim_themes_window.glade.h:2 +msgid "" +"Account\n" +"Group\n" +"Contact\n" +"Banner" +msgstr "" +"KorisniÄki raÄun\n" +"Grupa\n" +"Kontakt\n" +"Baner" + +#: ../data/glade/gajim_themes_window.glade.h:6 +#: ../data/glade/privacy_list_edit_window.glade.h:4 +#: ../src/config.py:326 +msgid "Active" +msgstr "Aktivno" + +#: ../data/glade/gajim_themes_window.glade.h:7 +msgid "Bold" +msgstr "Podebljano" + +#: ../data/glade/gajim_themes_window.glade.h:8 +msgid "Composing" +msgstr "Pisanje" + +#: ../data/glade/gajim_themes_window.glade.h:9 +msgid "Font style:" +msgstr "Stil fonta:" + +#: ../data/glade/gajim_themes_window.glade.h:10 +msgid "Gajim Themes Customization" +msgstr "Personalizacija Gajim Tema" + +#: ../data/glade/gajim_themes_window.glade.h:11 +msgid "Gone" +msgstr "OtiÅ¡ao" + +#: ../data/glade/gajim_themes_window.glade.h:12 +msgid "Inactive" +msgstr "Neaktivno" + +#: ../data/glade/gajim_themes_window.glade.h:13 +msgid "Italic" +msgstr "UkoÅ¡eno" + +#: ../data/glade/gajim_themes_window.glade.h:14 +msgid "" +"MUC\n" +"Messages" +msgstr "" +"MUC\n" +"Poruke" + +#: ../data/glade/gajim_themes_window.glade.h:16 +msgid "" +"MUC Directed\n" +"Messages" +msgstr "" +"MUC Usmjerene\n" +"Poruke" + +#: ../data/glade/gajim_themes_window.glade.h:18 +#: ../src/tooltips.py:667 +msgid "Paused" +msgstr "Pauza" + +#: ../data/glade/gajim_themes_window.glade.h:19 +msgid "Text _color:" +msgstr "Boj_a teksta:" + +#: ../data/glade/gajim_themes_window.glade.h:20 +msgid "Text _font:" +msgstr "_Font Teksta:" + +#: ../data/glade/gajim_themes_window.glade.h:21 +msgid "_Background:" +msgstr "_Pozadina:" + +#: ../data/glade/gc_control_popup_menu.glade.h:1 +msgid "Change _Nickname" +msgstr "Promijeni _Nadimak" + +#: ../data/glade/gc_control_popup_menu.glade.h:2 +msgid "Change _Subject" +msgstr "Promijeni _Temu" + +#: ../data/glade/gc_control_popup_menu.glade.h:3 +msgid "Click to see past conversation in this room" +msgstr "Pritisnite za pregled proteklog razgovora u ovoj sobi" + +#: ../data/glade/gc_control_popup_menu.glade.h:4 +msgid "Configure _Room" +msgstr "PodeÅ¡avanje _Sobe" + +#: ../data/glade/gc_control_popup_menu.glade.h:5 +msgid "_Bookmark This Room" +msgstr "_Postavi Knjižnu Oznaku" + +#: ../data/glade/gc_occupants_menu.glade.h:1 +msgid "Mo_derator" +msgstr "Mo_derator" + +#: ../data/glade/gc_occupants_menu.glade.h:3 +msgid "_Admin" +msgstr "_Admin" + +#: ../data/glade/gc_occupants_menu.glade.h:4 +msgid "_Ban" +msgstr "_Zabrani" + +#: ../data/glade/gc_occupants_menu.glade.h:6 +msgid "_Kick" +msgstr "_Izbaci" + +#: ../data/glade/gc_occupants_menu.glade.h:7 +msgid "_Member" +msgstr "_ÄŒlan" + +#: ../data/glade/gc_occupants_menu.glade.h:8 +msgid "_Occupant Actions" +msgstr "_Akcije Prisutnih" + +#: ../data/glade/gc_occupants_menu.glade.h:9 +msgid "_Owner" +msgstr "_Vlasnik" + +#: ../data/glade/gc_occupants_menu.glade.h:10 +msgid "_Send Private Message" +msgstr "_PoÅ¡alji Privatnu Poruku" + +#: ../data/glade/gc_occupants_menu.glade.h:11 +msgid "_Voice" +msgstr "_Glas" + +#: ../data/glade/history_manager.glade.h:1 +msgid "" +"Welcome to Gajim History Logs Manager\n" +"\n" +"You can select logs from the left and/or search database from below.\n" +"\n" +"WARNING:\n" +"If you plan to do massive deletions, please make sure Gajim is not running. Generally avoid deletions with contacts you currently chat with." +msgstr "" +"Dobro doÅ¡li u Gajim Upravitelj ZabiljeÅ¡kama Povijesti\n" +"\n" +"Sa lijeve strane možete odabrati zabiljeÅ¡ke i/ili niže pretražiti bazu podataka.\n" +"\n" +"UPOZORENJE:\n" +"Ako planirate raditi veća uklanjanja, osigurajte da Gajim nije pokrenut. Općenito izbjegavajte uklanjanja vezana uz kontakte sa kojima trenutno razgovarate." + +#: ../data/glade/history_manager.glade.h:7 +msgid "Delete" +msgstr "ObriÅ¡i" + +#: ../data/glade/history_manager.glade.h:8 +msgid "Export" +msgstr "Izvoz" + +#: ../data/glade/history_manager.glade.h:9 +msgid "Gajim History Logs Manager" +msgstr "Gajim Upravitelj ZabiljeÅ¡kama Povijesti" + +#: ../data/glade/history_manager.glade.h:10 +msgid "_Search Database" +msgstr "_Pretraži Bazu Podataka" + +#: ../data/glade/history_window.glade.h:1 +msgid "Build custom query" +msgstr "Izgradi prilagoÄ‘eno pretraživanje" + +#: ../data/glade/history_window.glade.h:2 +msgid "Conversation History" +msgstr "Povijest razgovora" + +#: ../data/glade/history_window.glade.h:3 +msgid "Query Builder..." +msgstr "Graditelj Upita..." + +#: ../data/glade/history_window.glade.h:4 +msgid "Search" +msgstr "Pretraga" + +#: ../data/glade/history_window.glade.h:5 +msgid "_Search" +msgstr "_Pretraga" + +#: ../data/glade/invitation_received_dialog.glade.h:1 +msgid "Accept" +msgstr "Prihvati" + +#: ../data/glade/invitation_received_dialog.glade.h:2 +#: ../data/glade/privacy_list_edit_window.glade.h:8 +msgid "Deny" +msgstr "Odbij" + +#: ../data/glade/invitation_received_dialog.glade.h:3 +msgid "Invitation Received" +msgstr "Primljen Poziv" + +#: ../data/glade/join_groupchat_window.glade.h:1 +#: ../src/dialogs.py:941 +msgid "Join Group Chat" +msgstr "Pridružiti se Grupnom Razgovoru" + +#: ../data/glade/join_groupchat_window.glade.h:2 +#: ../data/glade/manage_bookmarks_window.glade.h:4 +#: ../data/glade/vcard_information_window.glade.h:28 +msgid "Nickname:" +msgstr "Nadimak:" + +#: ../data/glade/join_groupchat_window.glade.h:3 +#: ../data/glade/manage_bookmarks_window.glade.h:5 +msgid "Password:" +msgstr "Lozinka:" + +#: ../data/glade/join_groupchat_window.glade.h:4 +msgid "Recently:" +msgstr "Nedavno:" + +#: ../data/glade/join_groupchat_window.glade.h:5 +#: ../data/glade/manage_bookmarks_window.glade.h:7 +msgid "Room:" +msgstr "Soba:" + +#: ../data/glade/join_groupchat_window.glade.h:6 +#: ../data/glade/manage_bookmarks_window.glade.h:8 +msgid "Server:" +msgstr "Poslužitelj:" + +#: ../data/glade/join_groupchat_window.glade.h:7 +#: ../src/disco.py:1145 +#: ../src/disco.py:1507 +msgid "_Join" +msgstr "_Pridruživanje" + +#: ../data/glade/manage_accounts_window.glade.h:1 +msgid "Manage Accounts" +msgstr "PodeÅ¡avanje RaÄuna" + +#: ../data/glade/manage_bookmarks_window.glade.h:1 +msgid "Auto join" +msgstr "Automatsko spajanje" + +#: ../data/glade/manage_bookmarks_window.glade.h:2 +msgid "If checked, Gajim will join this group chat on startup" +msgstr "Ako je oznaÄeno, Gajim će se pridružiti ovom grupnom razgovoru pri pokretanju" + +#: ../data/glade/manage_bookmarks_window.glade.h:3 +msgid "Manage Bookmarks" +msgstr "PodeÅ¡avanje Knjižnih Oznaka" + +#: ../data/glade/manage_bookmarks_window.glade.h:6 +msgid "Print status:" +msgstr "Ispis statusa:" + +#: ../data/glade/manage_bookmarks_window.glade.h:9 +msgid "Title:" +msgstr "Naslov:" + +#: ../data/glade/manage_proxies_window.glade.h:1 +msgid "Properties" +msgstr "Karakteristike" + +#: ../data/glade/manage_proxies_window.glade.h:2 +msgid "Settings" +msgstr "Postavke" + +#: ../data/glade/manage_proxies_window.glade.h:3 +msgid "HTTP Connect" +msgstr "HTTP Spoj" + +#: ../data/glade/manage_proxies_window.glade.h:4 +msgid "Manage Proxy Profiles" +msgstr "PodeÅ¡avanje Proxy Profila" + +#: ../data/glade/manage_proxies_window.glade.h:5 +#: ../data/glade/vcard_information_window.glade.h:27 +msgid "Name:" +msgstr "Ime:" + +#: ../data/glade/manage_proxies_window.glade.h:7 +msgid "Type:" +msgstr "Vrsta:" + +#: ../data/glade/manage_proxies_window.glade.h:8 +msgid "Use authentication" +msgstr "Koristi autentifikaciju" + +#: ../data/glade/message_window.glade.h:1 +msgid "Click to insert an emoticon (Alt+M)" +msgstr "Kliknite da ubacite emoticon (Alt+M)" + +#: ../data/glade/message_window.glade.h:2 +#: ../src/chat_control.py:966 +msgid "OpenPGP Encryption" +msgstr "OpenPGP Enkripcija" + +#. Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector) +#: ../data/glade/message_window.glade.h:4 +#: ../data/glade/roster_window.glade.h:9 +msgid "_Actions" +msgstr "_Akcije" + +#. Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector) +#: ../data/glade/message_window.glade.h:6 +#: ../data/glade/xml_console_window.glade.h:11 +#: ../src/filetransfers_window.py:249 +msgid "_Send" +msgstr "_PoÅ¡alji" + +#: ../data/glade/passphrase_dialog.glade.h:1 +msgid "Passphrase" +msgstr "Lozinka" + +#: ../data/glade/preferences_window.glade.h:1 +msgid "Advanced Configuration Editor" +msgstr "Napredni UreÄ‘ivaÄ Konfiguracije" + +#: ../data/glade/preferences_window.glade.h:2 +msgid "Applications" +msgstr "Aplikacije" + +#. a header for custom browser/client/file manager. so translate sth like: Custom Settings +#: ../data/glade/preferences_window.glade.h:4 +msgid "Custom" +msgstr "Osobni" + +#: ../data/glade/preferences_window.glade.h:5 +msgid "Format of a line" +msgstr "Format linije" + +#: ../data/glade/preferences_window.glade.h:6 +msgid "GMail Options" +msgstr "GMail Mogućnosti" + +#: ../data/glade/preferences_window.glade.h:7 +msgid "Interface Customization" +msgstr "PrilagoÄ‘avanje SuÄelja" + +#: ../data/glade/preferences_window.glade.h:9 +msgid "Preset Status Messages" +msgstr "Predefinirane Statusne Poruke" + +#: ../data/glade/preferences_window.glade.h:11 +msgid "Visual Notifications" +msgstr "Vizualne Obavijesti" + +#: ../data/glade/preferences_window.glade.h:12 +msgid "A_fter nickname:" +msgstr "Poslije nadimka:" + +#: ../data/glade/preferences_window.glade.h:13 +msgid "Advanced" +msgstr "Napredno" + +#: ../data/glade/preferences_window.glade.h:14 +msgid "" +"All chat states\n" +"Composing only\n" +"Disabled" +msgstr "" +"Statusi svih razgovora\n" +"Samo pisanje\n" +"Onemogućeno" + +#: ../data/glade/preferences_window.glade.h:17 +msgid "Allow _OS information to be sent" +msgstr "Dozvoli slanje podataka o _OS-u" + +#: ../data/glade/preferences_window.glade.h:18 +msgid "Allow popup/notifications when I'm _away/na/busy/invisible" +msgstr "Dozvoli popup obavijesti kada sam _odsutan/nedostupan/zaposlen/nevidljiv" + +#: ../data/glade/preferences_window.glade.h:19 +msgid "Also known as iChat style" +msgstr "Poznato i kao iChat stil" + +#: ../data/glade/preferences_window.glade.h:20 +msgid "Ask status message when I:" +msgstr "Traži poruku statusa kada ja:" + +#: ../data/glade/preferences_window.glade.h:21 +msgid "Auto _away after:" +msgstr "Automatski _odsutan nakon:" + +#: ../data/glade/preferences_window.glade.h:22 +msgid "Auto _not available after:" +msgstr "Automatski _nedostupan nakon:" + +#: ../data/glade/preferences_window.glade.h:23 +msgid "" +"Autodetect on every Gajim startup\n" +"Always use GNOME default applications\n" +"Always use KDE default applications\n" +"Custom" +msgstr "" +"Automatski prepoznaj na svakom Gajim pokretanju\n" +"Uvijek koristi predefiniranu GNOME aplikaciju\n" +"Uvijek koristi predefiniranu KDE aplikaciju\n" +"PrilagoÄ‘eno" + +#: ../data/glade/preferences_window.glade.h:27 +msgid "B_efore nickname:" +msgstr "Prij_e nadimka" + +#: ../data/glade/preferences_window.glade.h:28 +#: ../src/chat_control.py:718 +msgid "Chat" +msgstr "Razgovor" + +#: ../data/glade/preferences_window.glade.h:29 +msgid "Chat state noti_fications:" +msgstr "Noti_fikacije o statusu razgovora" + +#: ../data/glade/preferences_window.glade.h:30 +msgid "Check this option, only if someone you don't have in the roster spams/annoys you. Use with caution, cause it blocks all messages from any contact that is not in the roster" +msgstr "OznaÄite ovu opciju samo ako vas netko van vaÅ¡e liste spama/uznemirava. Koristite sa oprezom, blokira sve poruke koje dolaze od ljudi van vaÅ¡e liste kontakata" + +#: ../data/glade/preferences_window.glade.h:31 +msgid "Default status _iconset:" +msgstr "Predefinirani statusni set _ikona" + +#: ../data/glade/preferences_window.glade.h:32 +msgid "Display _extra email details" +msgstr "Prikaži dodatne email _detalje" + +#: ../data/glade/preferences_window.glade.h:33 +msgid "Display a_vatars of contacts in roster" +msgstr "Prikaži a_vatare kontakata na listi" + +#: ../data/glade/preferences_window.glade.h:34 +msgid "Display status _messages of contacts in roster" +msgstr "Prikaži statusne _poruke kontakata na listi" + +#: ../data/glade/preferences_window.glade.h:35 +msgid "E_very 5 minutes" +msgstr "S_vakih 5 minuta" + +#: ../data/glade/preferences_window.glade.h:36 +msgid "Emoticons:" +msgstr "Emotikone:" + +#: ../data/glade/preferences_window.glade.h:37 +msgid "Events" +msgstr "DogaÄ‘aji" + +#: ../data/glade/preferences_window.glade.h:38 +msgid "Gajim can send and receive meta-information related to a conversation you may have with a contact. Here you can specify which chatstates you want to send to the other party." +msgstr "Gajim može primati i slati meta-informacije vezane za razgovor koji vodite sa kontaktom. Ovdje možete odrediti koji statusi razgovora će se slati drugoj osobi." + +#: ../data/glade/preferences_window.glade.h:39 +msgid "Gajim will automatically show new events by poping up the relative window" +msgstr "Gajim će automatski prikazivati nove dogaÄ‘aje iskaÄući sa bitnim prozorom" + +#: ../data/glade/preferences_window.glade.h:40 +msgid "Gajim will notify you for new events via a popup in the bottom right of the screen" +msgstr "Gajim će vas obavijestiti o novim dogaÄ‘ajima sa popup prozorom u donjem desnom kutu ekrana" + +#: ../data/glade/preferences_window.glade.h:41 +msgid "Gajim will notify you via a popup window in the bottom right of the screen about contacts that just signed in" +msgstr "Gajim će vas obavijestiti o kontaktima koji su se upravo prijavili sa popup prozorom u donjem desnom kutu ekrana" + +#: ../data/glade/preferences_window.glade.h:42 +msgid "Gajim will notify you via a popup window in the bottom right of the screen about contacts that just signed out" +msgstr "Gajim će vas obavijestiti o kontaktima koji su se upravo odjavili sa popup prozorom u donjem desnom kutu ekrana" + +#: ../data/glade/preferences_window.glade.h:43 +msgid "Gajim will only change the icon of the contact that triggered the new event" +msgstr "Gajim će mjenjati ikonu samo onom kontaktu koji je potaknuo novi dogaÄ‘aj" + +#: ../data/glade/preferences_window.glade.h:45 +msgid "If checked, Gajim will display avatars of contacts in roster window and in group chats" +msgstr "Ako je oznaÄeno, Gajim će prikazivati avatare kontakata u listi kontakata i u grupnim razgovorima" + +#: ../data/glade/preferences_window.glade.h:46 +msgid "If checked, Gajim will display status messages of contacts under the contact name in roster window and in group chats" +msgstr "Ako je oznaÄeno, Gajim će prikazivati statusne poruke kontakata ispod imena kontakta u listi kontakata i u grupnim razgovorima" + +#: ../data/glade/preferences_window.glade.h:47 +msgid "If checked, Gajim will remember the roster and chat window positions in the screen and the sizes of them next time you run it" +msgstr "Ako je oznaÄeno, Gajim će se prisjetiti pozicije prozora liste kontakata i razgovora, kao i njihove veliÄine kod sljedećeg pokretanja" + +#: ../data/glade/preferences_window.glade.h:48 +msgid "If checked, Gajim will use protocol-specific status icons. (eg. A contact from MSN will have the equivalent msn icon for status online, away, busy, etc...)" +msgstr "Ako je oznaÄeno, Gajim će koristiti statusne ikone specifiÄne za protokol. (npr. kontakt sa MSN-a će imati msn ikone za statuse)" + +#: ../data/glade/preferences_window.glade.h:49 +msgid "If not disabled, Gajim will replace ascii smilies like ':)' with equivalent animated or static graphical emoticons" +msgstr "Ako nije onemogućeno, Gajim će zamjeniti ascii smajliće poput ':)' sa ekvivalentnim animiranim ili statiÄnim grafiÄkim emotikonama" + +#: ../data/glade/preferences_window.glade.h:50 +msgid "Ma_nage..." +msgstr "Po_desi" + +#: ../data/glade/preferences_window.glade.h:51 +msgid "" +"Never\n" +"Always\n" +"Per account\n" +"Per type" +msgstr "" +"Nikad\n" +"Uvijek\n" +"Ovisi o raÄunu\n" +"Ovisi o tipu" + +#: ../data/glade/preferences_window.glade.h:55 +msgid "Notify me about contacts that: " +msgstr "Obavijesti me o kontaktima koji:" + +#: ../data/glade/preferences_window.glade.h:56 +msgid "Notify on new _GMail email" +msgstr "Obavijesti o novoj _Gmail e-poÅ¡ti" + +#: ../data/glade/preferences_window.glade.h:57 +msgid "On every _message" +msgstr "Na svaku _poruku" + +#: ../data/glade/preferences_window.glade.h:58 +msgid "One message _window:" +msgstr "Prozor _jedne poruke:" + +#: ../data/glade/preferences_window.glade.h:59 +msgid "Play _sounds" +msgstr "Sviraj _zvukove" + +#: ../data/glade/preferences_window.glade.h:60 +msgid "Preferences" +msgstr "Postavke" + +#: ../data/glade/preferences_window.glade.h:61 +msgid "Print time:" +msgstr "Prikaz vremena:" + +#: ../data/glade/preferences_window.glade.h:62 +msgid "Save _position and size for roster and chat windows" +msgstr "Snimi _poziciju i veliÄinu za prozore liste kontakata i razgovora" + +#: ../data/glade/preferences_window.glade.h:63 +msgid "Show only in _roster" +msgstr "Prikaži samo u _listi kontakata" + +#: ../data/glade/preferences_window.glade.h:64 +msgid "Sign _in" +msgstr "Prijavi _se" + +#: ../data/glade/preferences_window.glade.h:65 +msgid "Sign _out" +msgstr "_Odjavi se" + +#: ../data/glade/preferences_window.glade.h:66 +msgid "Status" +msgstr "Status" + +#: ../data/glade/preferences_window.glade.h:67 +msgid "T_heme:" +msgstr "_Tema:" + +#: ../data/glade/preferences_window.glade.h:68 +msgid "The auto away status message" +msgstr "Statusna poruka automatske odsutnosti" + +#: ../data/glade/preferences_window.glade.h:69 +msgid "The auto not available status message" +msgstr "Statusna poruka automatske ne dostupnosti" + +#: ../data/glade/preferences_window.glade.h:70 +msgid "Use _transports iconsets" +msgstr "Koristi set ikona _transporta" + +#: ../data/glade/preferences_window.glade.h:71 +msgid "Use system _default" +msgstr "Koristi pret_postavljeno od sustava" + +#: ../data/glade/preferences_window.glade.h:72 +msgid "Use t_rayicon (aka. notification area icon)" +msgstr "Koristi t_ray ikonu" + +#: ../data/glade/preferences_window.glade.h:73 +msgid "When a new event (message, file transfer request etc..) is received, the following methods may be used to inform you about it. Please note that events about new messages only occur if it is a new message from a contact you are not already chatting with" +msgstr "Kada se primi novi dogaÄ‘aj (poruka, zahtjev za prijenosom datoteka i sl.), mogu se koristiti sjedeće metode za obavijest. Imajte na umu da se obavijesti o novim porukama prikazuju samo za kontakte sa kojima trenutno ne razgovarate" + +#: ../data/glade/preferences_window.glade.h:74 +msgid "When new event is received" +msgstr "Kada se primi novi dogaÄ‘aj" + +#: ../data/glade/preferences_window.glade.h:75 +msgid "_Advanced Notifications Control..." +msgstr "_Napredno Upravljanje Obavijestima..." + +#: ../data/glade/preferences_window.glade.h:76 +msgid "_After time:" +msgstr "_Nakon vremena:" + +#: ../data/glade/preferences_window.glade.h:77 +msgid "_Before time:" +msgstr "_Prije vremena:" + +#: ../data/glade/preferences_window.glade.h:78 +msgid "_Browser:" +msgstr "_Pretražnik:" + +#: ../data/glade/preferences_window.glade.h:79 +msgid "_File manager:" +msgstr "_Upravitelj datotekama:" + +#: ../data/glade/preferences_window.glade.h:80 +msgid "_Font:" +msgstr "_Font:" + +#: ../data/glade/preferences_window.glade.h:81 +msgid "_Highlight misspelled words" +msgstr "_Osvijetli krivo napisane rijeÄi" + +#: ../data/glade/preferences_window.glade.h:82 +msgid "_Ignore events from contacts not in the roster" +msgstr "_Ignoriraj dogaÄ‘aje od kontakata koji nisu na listi kontakata" + +#: ../data/glade/preferences_window.glade.h:83 +msgid "_Incoming message:" +msgstr "_Dolazna poruka:" + +#: ../data/glade/preferences_window.glade.h:84 +msgid "_Log status changes of contacts" +msgstr "_Pamti promjene statusa kontakata" + +#: ../data/glade/preferences_window.glade.h:85 +msgid "_Mail client:" +msgstr "_Mail klijent:" + +#: ../data/glade/preferences_window.glade.h:86 +msgid "_Never" +msgstr "_Nikada" + +#: ../data/glade/preferences_window.glade.h:87 +msgid "_Notify me about it" +msgstr "_Obavijesti me o tome" + +#: ../data/glade/preferences_window.glade.h:88 +msgid "_Open..." +msgstr "_Otvori..." + +#: ../data/glade/preferences_window.glade.h:89 +msgid "_Outgoing message:" +msgstr "_Odlazna poruka:" + +#: ../data/glade/preferences_window.glade.h:90 +msgid "_Player:" +msgstr "_Player:" + +#: ../data/glade/preferences_window.glade.h:91 +msgid "_Pop it up" +msgstr "_IskoÄi ga" + +#: ../data/glade/preferences_window.glade.h:92 +msgid "_Reset to Default Colors" +msgstr "_Ponovo uÄitavanje Pretpostavljenih Boja" + +#: ../data/glade/preferences_window.glade.h:93 +msgid "_Sort contacts by status" +msgstr "_Sortiranje kontakata po statusu" + +#: ../data/glade/preferences_window.glade.h:94 +msgid "_Status message:" +msgstr "_Statusna poruka:" + +#: ../data/glade/preferences_window.glade.h:95 +msgid "_URL:" +msgstr "_URL:" + +#: ../data/glade/preferences_window.glade.h:96 +msgid "minutes" +msgstr "minuta" + +#: ../data/glade/privacy_list_edit_window.glade.h:1 +msgid "Add / Edit a rule" +msgstr "Dodaj / Izmjeni pravilo" + +#: ../data/glade/privacy_list_edit_window.glade.h:2 +msgid "List of rules" +msgstr "Lista pravila" + +#: ../data/glade/privacy_list_edit_window.glade.h:3 +msgid "Privacy List" +msgstr "Lista Privatnosti" + +#: ../data/glade/privacy_list_edit_window.glade.h:5 +#: ../src/config.py:2281 +msgid "All" +msgstr "Svi" + +#: ../data/glade/privacy_list_edit_window.glade.h:6 +msgid "Allow" +msgstr "Dozvoli" + +#: ../data/glade/privacy_list_edit_window.glade.h:7 +msgid "Default" +msgstr "Predefinirano" + +#: ../data/glade/privacy_list_edit_window.glade.h:9 +msgid "JabberID" +msgstr "JabberID" + +#: ../data/glade/privacy_list_edit_window.glade.h:10 +msgid "Order:" +msgstr "Poredak:" + +#: ../data/glade/privacy_list_edit_window.glade.h:11 +#: ../src/dialogs.py:1626 +msgid "Privacy List" +msgstr "Lista Privatnosti" + +#: ../data/glade/privacy_list_edit_window.glade.h:12 +msgid "all by subscription" +msgstr "sve prema pretplati" + +#: ../data/glade/privacy_list_edit_window.glade.h:13 +msgid "all in the group" +msgstr "sve u grupi" + +#: ../data/glade/privacy_list_edit_window.glade.h:14 +msgid "" +"none\n" +"both\n" +"from\n" +"to" +msgstr "" +"niÅ¡ta\n" +"oboje\n" +"od\n" +"za" + +#: ../data/glade/privacy_list_edit_window.glade.h:18 +msgid "to send me messages" +msgstr "da mi Å¡alje poruke" + +#: ../data/glade/privacy_list_edit_window.glade.h:19 +msgid "to send me queries" +msgstr "da mi Å¡alje upite" + +#: ../data/glade/privacy_list_edit_window.glade.h:20 +msgid "to send me status" +msgstr "da mi prikaže status" + +#: ../data/glade/privacy_list_edit_window.glade.h:21 +msgid "to view my status" +msgstr "da vidi moj status" + +#: ../data/glade/privacy_lists_first_window.glade.h:1 +msgid "Create your own Privacy Lists" +msgstr "Sami stvorite svoju vlasitu Listu Privatnosti" + +#: ../data/glade/privacy_lists_first_window.glade.h:2 +msgid "Server-based Privacy Lists" +msgstr "Liste Privatnosti ovisne o poslužitelju" + +#: ../data/glade/remove_account_window.glade.h:1 +msgid "What do you want to do?" +msgstr "Å to želite uÄiniti?" + +#: ../data/glade/remove_account_window.glade.h:2 +msgid "Remove account _only from Gajim" +msgstr "Ukloni raÄun sam_o iz Gajima" + +#: ../data/glade/remove_account_window.glade.h:3 +msgid "Remove account from Gajim and from _server" +msgstr "Ukloni raÄun iz Gajima i sa po_služitelja" + +#: ../data/glade/roster_contact_context_menu.glade.h:1 +msgid "A_sk to see his/her status" +msgstr "Traži njegov/njezin status" + +#: ../data/glade/roster_contact_context_menu.glade.h:2 +msgid "Add Special _Notification" +msgstr "Dodaj Posebnu _Obavijest" + +#: ../data/glade/roster_contact_context_menu.glade.h:3 +msgid "Assign Open_PGP Key" +msgstr "Pridruži Open_PGP KljuÄ" + +#: ../data/glade/roster_contact_context_menu.glade.h:4 +msgid "Edit _Groups" +msgstr "Izmjeni _Grupe" + +#: ../data/glade/roster_contact_context_menu.glade.h:5 +#: ../data/glade/systray_context_menu.glade.h:1 +msgid "Send Single _Message" +msgstr "PoÅ¡alji Jednu _Poruku" + +#: ../data/glade/roster_contact_context_menu.glade.h:7 +msgid "Start _Chat" +msgstr "ZapoÄni _Razgovor" + +#: ../data/glade/roster_contact_context_menu.glade.h:9 +msgid "_Allow him/her to see my status" +msgstr "_Dozvoli njemu/njoj da vidi moj status" + +#: ../data/glade/roster_contact_context_menu.glade.h:10 +msgid "_Forbid him/her to see my status" +msgstr "_Zabrani mu/joj da vidi moj status" + +#: ../data/glade/roster_contact_context_menu.glade.h:12 +#: ../src/roster_window.py:1482 +msgid "_Remove from Roster" +msgstr "_Ukloni sa Liste kontakata" + +#: ../data/glade/roster_contact_context_menu.glade.h:13 +#: ../src/roster_window.py:1470 +msgid "_Rename" +msgstr "_Preimenuj" + +#: ../data/glade/roster_contact_context_menu.glade.h:14 +msgid "_Subscription" +msgstr "_Pretplata" + +#: ../data/glade/roster_window.glade.h:1 +msgid "A_ccounts" +msgstr "KorisniÄki raÄuni" + +#: ../data/glade/roster_window.glade.h:2 +msgid "Add _Contact" +msgstr "Dodaj _Kontakt" + +#: ../data/glade/roster_window.glade.h:3 +msgid "File _Transfers" +msgstr "Prijenosi _Datoteka" + +#: ../data/glade/roster_window.glade.h:4 +msgid "Frequently Asked Questions (online)" +msgstr "ÄŒesto Postavljana Pitanja (online)" + +#: ../data/glade/roster_window.glade.h:6 +msgid "Help online" +msgstr "Online Pomoć" + +#: ../data/glade/roster_window.glade.h:7 +msgid "Profile, Avatar" +msgstr "Profil, Avatar" + +#: ../data/glade/roster_window.glade.h:8 +msgid "Show _Offline Contacts" +msgstr "Prikaži _Odspojene Kontakte" + +#: ../data/glade/roster_window.glade.h:11 +msgid "_Contents" +msgstr "_Sadržaj" + +#: ../data/glade/roster_window.glade.h:12 +msgid "_Discover Services" +msgstr "_Otkrivanje Usluga" + +#: ../data/glade/roster_window.glade.h:13 +#: ../src/disco.py:1252 +#: ../src/roster_window.py:1462 +msgid "_Edit" +msgstr "_Uredi" + +#: ../data/glade/roster_window.glade.h:14 +msgid "_FAQ" +msgstr "_FAQ" + +#: ../data/glade/roster_window.glade.h:16 +msgid "_Help" +msgstr "_Pomoć" + +#: ../data/glade/roster_window.glade.h:17 +msgid "_Preferences" +msgstr "_Postavke" + +#: ../data/glade/roster_window.glade.h:18 +msgid "_Quit" +msgstr "_Izlaz" + +#: ../data/glade/service_discovery_window.glade.h:1 +msgid "G_o" +msgstr "K_reni" + +#: ../data/glade/service_discovery_window.glade.h:2 +msgid "_Address:" +msgstr "_Adresa:" + +#: ../data/glade/service_discovery_window.glade.h:3 +msgid "_Filter:" +msgstr "_Filter:" + +#: ../data/glade/service_registration_window.glade.h:1 +msgid "Register to" +msgstr "Registriraj na" + +#: ../data/glade/service_registration_window.glade.h:2 +msgid "_Cancel" +msgstr "_Odustani" + +#: ../data/glade/service_registration_window.glade.h:3 +msgid "_OK" +msgstr "_Uredu" + +#: ../data/glade/single_message_window.glade.h:1 +msgid "0" +msgstr "0" + +#: ../data/glade/single_message_window.glade.h:2 +msgid "From:" +msgstr "Od:" + +#: ../data/glade/single_message_window.glade.h:3 +msgid "Reply to this message" +msgstr "Odgovori na ovu poruku" + +#: ../data/glade/single_message_window.glade.h:4 +msgid "Sen_d" +msgstr "P_oÅ¡alji" + +#: ../data/glade/single_message_window.glade.h:5 +msgid "Send message" +msgstr "PoÅ¡alji poruku" + +#: ../data/glade/single_message_window.glade.h:6 +msgid "Send message and close window" +msgstr "PoÅ¡alji poruku i zatvori prozor" + +#: ../data/glade/single_message_window.glade.h:7 +msgid "Subject:" +msgstr "Tema:" + +#: ../data/glade/single_message_window.glade.h:8 +msgid "To:" +msgstr "Za:" + +#: ../data/glade/single_message_window.glade.h:9 +msgid "_Reply" +msgstr "_Odgovor" + +#: ../data/glade/single_message_window.glade.h:10 +msgid "_Send & Close" +msgstr "_PoÅ¡alji i Zatvori" + +#: ../data/glade/subscription_request_window.glade.h:1 +msgid "Authorize contact so he can know when you're connected" +msgstr "Dozvoli kontaktu da može vidjeti kada sam spojen" + +#: ../data/glade/subscription_request_window.glade.h:2 +msgid "Contact _Info" +msgstr "Kontakt _Info" + +#: ../data/glade/subscription_request_window.glade.h:3 +msgid "Deny authorization from contact so he cannot know when you're connected" +msgstr "Odbija autorizaciju kontaktu kako nebi mogao vidjeti kada ste spojeni" + +#: ../data/glade/subscription_request_window.glade.h:4 +msgid "Subscription Request" +msgstr "Zahtjev za Pretplatom" + +#: ../data/glade/subscription_request_window.glade.h:5 +msgid "_Authorize" +msgstr "_Odobri" + +#: ../data/glade/subscription_request_window.glade.h:6 +msgid "_Deny" +msgstr "_Odbij" + +#: ../data/glade/systray_context_menu.glade.h:2 +msgid "Show All Pending _Events" +msgstr "Prikaži Sve _DogaÄ‘aje na ÄŒekanju" + +#: ../data/glade/systray_context_menu.glade.h:3 +msgid "Show _Roster" +msgstr "Prikaži _Listu Kontakata" + +#: ../data/glade/systray_context_menu.glade.h:4 +msgid "Sta_tus" +msgstr "Sta_tus" + +#. "About" is the text of a tab of vcard window +#: ../data/glade/vcard_information_window.glade.h:2 +msgid "About" +msgstr "O" + +#: ../data/glade/vcard_information_window.glade.h:3 +msgid "Address" +msgstr "Adresa:" + +#: ../data/glade/vcard_information_window.glade.h:4 +msgid "Ask:" +msgstr "Pitaj:" + +#: ../data/glade/vcard_information_window.glade.h:5 +msgid "Birthday:" +msgstr "RoÄ‘endan:" + +#: ../data/glade/vcard_information_window.glade.h:6 +msgid "City:" +msgstr "Mjesto:" + +#: ../data/glade/vcard_information_window.glade.h:7 +msgid "Client:" +msgstr "Klijent:" + +#: ../data/glade/vcard_information_window.glade.h:8 +msgid "Company:" +msgstr "Poduzeće:" + +#: ../data/glade/vcard_information_window.glade.h:9 +msgid "Contact Information" +msgstr "Informacije Kontakta" + +#: ../data/glade/vcard_information_window.glade.h:10 +msgid "Country:" +msgstr "Država:" + +#: ../data/glade/vcard_information_window.glade.h:11 +msgid "Department:" +msgstr "Odjel:" + +#: ../data/glade/vcard_information_window.glade.h:12 +msgid "E-Mail:" +msgstr "E-Mail:" + +#: ../data/glade/vcard_information_window.glade.h:13 +msgid "Extra Address:" +msgstr "Dodatna Adresa:" + +#. Family Name +#: ../data/glade/vcard_information_window.glade.h:15 +msgid "Family:" +msgstr "Obitelj:" + +#: ../data/glade/vcard_information_window.glade.h:16 +msgid "Format: YYYY-MM-DD" +msgstr "Format: GGGG-MM-DD" + +#. Given Name +#: ../data/glade/vcard_information_window.glade.h:19 +msgid "Given:" +msgstr "Dano:" + +#: ../data/glade/vcard_information_window.glade.h:20 +msgid "Homepage:" +msgstr "Vlastita stranica:" + +#: ../data/glade/vcard_information_window.glade.h:21 +msgid "Jabber" +msgstr "Jabber" + +#: ../data/glade/vcard_information_window.glade.h:22 +msgid "Jabber ID:" +msgstr "Jabber ID:" + +#: ../data/glade/vcard_information_window.glade.h:23 +msgid "Location" +msgstr "Lokacija" + +#. Middle Name +#: ../data/glade/vcard_information_window.glade.h:25 +msgid "Middle:" +msgstr "Srednje" + +#: ../data/glade/vcard_information_window.glade.h:26 +msgid "More" +msgstr "ViÅ¡e" + +#: ../data/glade/vcard_information_window.glade.h:29 +msgid "OS:" +msgstr "OS:" + +#: ../data/glade/vcard_information_window.glade.h:30 +msgid "Phone No.:" +msgstr "Broj Telefona:" + +#: ../data/glade/vcard_information_window.glade.h:31 +msgid "Position:" +msgstr "Pozicija:" + +#: ../data/glade/vcard_information_window.glade.h:32 +msgid "Postal Code:" +msgstr "PoÅ¡tanski broj:" + +#. Prefix in Name +#: ../data/glade/vcard_information_window.glade.h:34 +msgid "Prefix:" +msgstr "Prefiks:" + +#: ../data/glade/vcard_information_window.glade.h:35 +msgid "Resource:" +msgstr "Resurs" + +#: ../data/glade/vcard_information_window.glade.h:36 +msgid "Role:" +msgstr "Uloga:" + +#: ../data/glade/vcard_information_window.glade.h:37 +msgid "Set _Avatar" +msgstr "Postavi _Avatar" + +#: ../data/glade/vcard_information_window.glade.h:38 +msgid "State:" +msgstr "Država:" + +#: ../data/glade/vcard_information_window.glade.h:39 +msgid "Status:" +msgstr "Status:" + +#: ../data/glade/vcard_information_window.glade.h:40 +msgid "Street:" +msgstr "Ulica:" + +#: ../data/glade/vcard_information_window.glade.h:41 +msgid "Subscription:" +msgstr "Pretplata:" + +#. Suffix in Name +#: ../data/glade/vcard_information_window.glade.h:43 +msgid "Suffix:" +msgstr "Sufiks:" + +#: ../data/glade/vcard_information_window.glade.h:44 +msgid "Work" +msgstr "Posao" + +#: ../data/glade/vcard_information_window.glade.h:45 +msgid "_Log conversation history" +msgstr "_Pamti povijest razgovora" + +#: ../data/glade/vcard_information_window.glade.h:46 +msgid "_Publish" +msgstr "_Objava" + +#: ../data/glade/vcard_information_window.glade.h:47 +msgid "_Retrieve" +msgstr "_Dohvati" + +#: ../data/glade/xml_console_window.glade.h:1 +msgid "Jabber Traffic" +msgstr "Jabber Promet" + +#: ../data/glade/xml_console_window.glade.h:2 +msgid "XML Input" +msgstr "XML Unos" + +#. XML Console enable checkbutton +#: ../data/glade/xml_console_window.glade.h:4 +msgid "Enable" +msgstr "Omogući" + +#. Info/Query make the "IQ" initials. So translate like this 'YourLang/YourLang (Info/Query)'. Thanks (it's a tooltip so width is not a problem) +#: ../data/glade/xml_console_window.glade.h:6 +msgid "Info/Query" +msgstr "Info/Upit" + +#. Info/Query: all(?) jabber xml start with Whom do you want to ban?\n" +"\n" +msgstr "" +"Koga želite zabraniti?\n" +"\n" + +#: ../src/config.py:2062 +msgid "Adding Member..." +msgstr "Dodaja ÄŒlana..." + +#: ../src/config.py:2063 +msgid "" +"Whom do you want to make a member?\n" +"\n" +msgstr "" +"Koga želite uÄiniti Älanom?\n" +"\n" + +#: ../src/config.py:2065 +msgid "Adding Owner..." +msgstr "Dodavanje Vlasnika..." + +#: ../src/config.py:2066 +msgid "" +"Whom do you want to make a owner?\n" +"\n" +msgstr "" +"Koga želite uÄiniti vlasnikom?\n" +"\n" + +#: ../src/config.py:2068 +msgid "Adding Administrator..." +msgstr "Dodajem Administratora..." + +#: ../src/config.py:2069 +msgid "" +"Whom do you want to make an administrator?\n" +"\n" +msgstr "" +"Koga želite uÄiniti administratorom?\n" +"\n" + +#: ../src/config.py:2070 +msgid "" +"Can be one of the following:\n" +"1. user@domain/resource (only that resource matches).\n" +"2. user@domain (any resource matches).\n" +"3. domain/resource (only that resource matches).\n" +"4. domain (the domain itself matches, as does any user@domain,\n" +"domain/resource, or address containing a subdomain." +msgstr "" +"Može biti jedno od sljedećeg:\n" +"1. korisnik@domena/resurs (poklapa se samo sa tim resursom).\n" +"2. korisnik@domena (bilo koji resurs se poklapa).\n" +"3. domena/resurs (poklapa se samo sa tim resursom).\n" +"4. domena (sama domena se poklapa, kao i bilo koji korisnik@domena,\n" +"domena/resurs, ili adresa koja sadrži poddomenu." + +#: ../src/config.py:2166 +#, python-format +msgid "Removing %s account" +msgstr "Uklanjanje %s raÄuna" + +#: ../src/config.py:2183 +#: ../src/roster_window.py:1857 +msgid "Password Required" +msgstr "Potrebna Lozinka" + +#: ../src/config.py:2184 +#: ../src/roster_window.py:1858 +#, python-format +msgid "Enter your password for account %s" +msgstr "Unesite svoju lozinku za raÄun %s" + +#: ../src/config.py:2185 +#: ../src/roster_window.py:1859 +msgid "Save password" +msgstr "Spremiti lozinku" + +#: ../src/config.py:2198 +#, python-format +msgid "Account \"%s\" is connected to the server" +msgstr "RaÄun \"%s\" je spojen na poslužitelj" + +#: ../src/config.py:2199 +msgid "If you remove it, the connection will be lost." +msgstr "Ukoliko ga uklonite, veza će biti izgubljena." + +#: ../src/config.py:2282 +msgid "Enter and leave only" +msgstr "Ući i samo napustiti" + +#: ../src/config.py:2352 +msgid "New Room" +msgstr "Nova Soba" + +#: ../src/config.py:2383 +msgid "This bookmark has invalid data" +msgstr "Ova knjižna oznaka ima neispravne podatke" + +#: ../src/config.py:2384 +msgid "Please be sure to fill out server and room fields or remove this bookmark." +msgstr "Molimo obavezno ispunite polja poslužitelja i sobe ili uklonite ovu kljižnu oznaku." + +#: ../src/config.py:2638 +msgid "Invalid username" +msgstr "Neispravno korisniÄko ime" + +#: ../src/config.py:2639 +msgid "You must provide a username to configure this account." +msgstr "Morate ponuditi korisniÄko ime za postavke ovog raÄuna." + +#: ../src/config.py:2648 +#: ../src/dialogs.py:1118 +msgid "Invalid password" +msgstr "Neispravna lozinka" + +#: ../src/config.py:2649 +msgid "You must enter a password for the new account." +msgstr "Morate unesti lozinku za novi raÄun" + +#: ../src/config.py:2653 +#: ../src/dialogs.py:1123 +msgid "Passwords do not match" +msgstr "Lozinke se ne podudaraju" + +#: ../src/config.py:2654 +#: ../src/dialogs.py:1124 +msgid "The passwords typed in both fields must be identical." +msgstr "Lozinke upisane u oba polja moraju biti identiÄne." + +#: ../src/config.py:2673 +msgid "Duplicate Jabber ID" +msgstr "Dvostruki Jabber ID" + +#: ../src/config.py:2674 +msgid "This account is already configured in Gajim." +msgstr "Ovaj raÄun je već konfiguriran u Gajimu." + +#: ../src/config.py:2691 +msgid "Account has been added successfully" +msgstr "RaÄun je uspjeÅ¡no dodan" + +#: ../src/config.py:2692 +#: ../src/config.py:2725 +msgid "You can set advanced account options by pressing Advanced button, or later by clicking in Accounts menuitem under Edit menu from the main window." +msgstr "Napredne opcije raÄuna možete podesiti pritiskom na gumb Napredno, ili kasnije klikom na element RaÄuni pod izbornikom Uredi iz glavnog prozora." + +#: ../src/config.py:2724 +msgid "Your new account has been created successfully" +msgstr "VaÅ¡ novi raÄun je uspjeÅ¡no stvoren" + +#: ../src/config.py:2740 +msgid "An error occured during account creation" +msgstr "Pojavila se greÅ¡ka pri stvaranju raÄuna" + +#: ../src/config.py:2797 +msgid "Account name is in use" +msgstr "Ime raÄuna se već koristi" + +#: ../src/config.py:2798 +msgid "You already have an account using this name." +msgstr "Već imate raÄun pod tim imenom." + +#: ../src/conversation_textview.py:205 +msgid "Text below this line is what has been said since the last time you paid attention to this group chat" +msgstr "Tekst niže od ove linije je ono Å¡to je reÄeno od kad ste zadnji puta obraćali pozornost na ovaj grupni razovor" + +#: ../src/conversation_textview.py:263 +#, python-format +msgid "Actions for \"%s\"" +msgstr "Akcije za \"%s\"" + +#: ../src/conversation_textview.py:275 +msgid "Read _Wikipedia Article" +msgstr "ProÄitajte Älanak na _Wikipedii" + +#: ../src/conversation_textview.py:280 +msgid "Look it up in _Dictionary" +msgstr "Potražiti u _RijeÄniku" + +#. we must have %s in the url if not WIKTIONARY +#: ../src/conversation_textview.py:296 +#, python-format +msgid "Dictionary URL is missing an \"%s\" and it is not WIKTIONARY" +msgstr "URL-u rijeÄnika nedostaje \"%s\" i nije WIKTIONARY" + +#. we must have %s in the url +#: ../src/conversation_textview.py:308 +#, python-format +msgid "Web Search URL is missing an \"%s\"" +msgstr "URL-u Web Pretrage nedostaje \"%s\"" + +#: ../src/conversation_textview.py:311 +msgid "Web _Search for it" +msgstr "_Pretraži Web" + +#: ../src/conversation_textview.py:607 +msgid "Yesterday" +msgstr "JuÄer" + +#. the number is >= 2 +#. %i is day in year (1-365), %d (1-31) we want %i +#: ../src/conversation_textview.py:611 +#, python-format +msgid "%i days ago" +msgstr "Prije %i dana" + +#. if we have subject, show it too! +#: ../src/conversation_textview.py:686 +#, python-format +msgid "Subject: %s\n" +msgstr "Tema: %s\n" + +#. only say that to non Windows users +#: ../src/dbus_support.py:32 +msgid "D-Bus python bindings are missing in this computer" +msgstr "Ovom raÄunalu nedostaju D-Bus python poveznice" + +#: ../src/dbus_support.py:33 +msgid "D-Bus capabilities of Gajim cannot be used" +msgstr "D-Bus mogućnosti Gajima ne mogu se koristiti" + +#: ../src/dialogs.py:55 +#, python-format +msgid "Contact's name: %s" +msgstr "Ime kontakta: %s" + +#: ../src/dialogs.py:57 +#, python-format +msgid "JID: %s" +msgstr "JID: %s" + +#. Group name +#. In group boolean +#: ../src/dialogs.py:173 +msgid "Group" +msgstr "Grupa" + +#: ../src/dialogs.py:180 +msgid "In the group" +msgstr "U grupi" + +#: ../src/dialogs.py:230 +msgid "KeyID" +msgstr "ID kljuÄa" + +#: ../src/dialogs.py:233 +msgid "Contact name" +msgstr "Ime kontakta" + +#: ../src/dialogs.py:266 +#, python-format +msgid "%s Status Message" +msgstr "%s Statusna Poruka" + +#: ../src/dialogs.py:268 +msgid "Status Message" +msgstr "Statusna Poruka" + +#: ../src/dialogs.py:343 +msgid "Save as Preset Status Message" +msgstr "Snimiti kao Unaprijed Postavljenu Statusnu Poruku" + +#: ../src/dialogs.py:344 +msgid "Please type a name for this status message" +msgstr "Molimo unesite ime za ovu statusnu poruku" + +#: ../src/dialogs.py:391 +#, python-format +msgid "Please fill in the data of the contact you want to add in account %s" +msgstr "Molimo ispunite podatke kontakta kojeg želite dodati u raÄun %s" + +#: ../src/dialogs.py:393 +msgid "Please fill in the data of the contact you want to add" +msgstr "Molimo ispunite podatke kontakta kojeg želite dodati" + +#: ../src/dialogs.py:403 +#: ../src/disco.py:109 +#: ../src/disco.py:110 +#: ../src/disco.py:1249 +#: ../src/roster_window.py:207 +#: ../src/roster_window.py:273 +#: ../src/roster_window.py:309 +#: ../src/roster_window.py:329 +#: ../src/roster_window.py:353 +#: ../src/roster_window.py:2973 +#: ../src/roster_window.py:2975 +#: ../src/common/helpers.py:39 +msgid "Transports" +msgstr "Prijenosi" + +#: ../src/dialogs.py:493 +#: ../src/dialogs.py:499 +msgid "Invalid User ID" +msgstr "Neispravan KorisniÄki ID" + +#: ../src/dialogs.py:500 +msgid "The user ID must not contain a resource." +msgstr "ID korisnika ne smije sadržavati resurs." + +#: ../src/dialogs.py:513 +msgid "Contact already in roster" +msgstr "Kontakt je već na listi" + +#: ../src/dialogs.py:514 +msgid "This contact is already listed in your roster." +msgstr "Ovaj kontakt je već na vaÅ¡oj listi kontakata." + +#: ../src/dialogs.py:576 +msgid "A GTK+ jabber client" +msgstr "GTK+ jabber klijent" + +#: ../src/dialogs.py:577 +msgid "GTK+ Version:" +msgstr "GTK+ Verzija:" + +#: ../src/dialogs.py:578 +msgid "PyGTK Version:" +msgstr "PyGTK Verzija:" + +#: ../src/dialogs.py:586 +msgid "Current Developers:" +msgstr "Trenutni Razvojni Programeri:" + +#: ../src/dialogs.py:588 +msgid "Past Developers:" +msgstr "ProÅ¡li Razvojni Programeri:" + +#: ../src/dialogs.py:592 +msgid "THANKS:" +msgstr "ZAHVALE:" + +#. remove one english sentence +#. and add it manually as translatable +#: ../src/dialogs.py:598 +msgid "Last but not least, we would like to thank all the package maintainers." +msgstr "Zadnje, ali ne najmanje, željeli bismo se zahvaliti svim održavateljima paketa" + +#. here you write your name in the form Name FamilyName +#: ../src/dialogs.py:612 +msgid "translator-credits" +msgstr "" +"Adrian C. \n" +"Deni B. \n" +"Armando V. \n" +"Vedran M. " + +#: ../src/dialogs.py:738 +#, python-format +msgid "Unable to bind to port %s." +msgstr "Nemoguće vezanje na port %s." + +#: ../src/dialogs.py:739 +msgid "Maybe you have another running instance of Gajim. File Transfer will be canceled." +msgstr "Možda već imate pokrenutu jednu instancu Gajima. Prijenos Datoteka će biti prekinut." + +#: ../src/dialogs.py:881 +#, python-format +msgid "Subscription request for account %s from %s" +msgstr "Zahtjev pretplate za raÄun %s od %s" + +#: ../src/dialogs.py:884 +#, python-format +msgid "Subscription request from %s" +msgstr "Zahtjev za pretplatom od %s" + +#: ../src/dialogs.py:926 +msgid "You can not join a group chat unless you are connected." +msgstr "Ne možete se pridružiti grupnom razgovoru ukoliko niste spojeni." + +#: ../src/dialogs.py:939 +#, python-format +msgid "Join Group Chat with account %s" +msgstr "Pridružiti se Grupnom Razgovoru sa raÄunom %s" + +#: ../src/dialogs.py:1030 +msgid "Invalid room or server name" +msgstr "Neispravno ime sobe ili poslužitelja" + +#: ../src/dialogs.py:1031 +msgid "The room name or server name has not allowed characters." +msgstr "Ime sobe ili poslužitelja ima nedozvoljene znakove." + +#: ../src/dialogs.py:1050 +#, python-format +msgid "Start Chat with account %s" +msgstr "ZapoÄeti Razgovor sa raÄunom %s" + +#: ../src/dialogs.py:1052 +msgid "Start Chat" +msgstr "ZapoÄeti Razgovor" + +#: ../src/dialogs.py:1053 +msgid "" +"Fill in the jid, or nick of the contact you would like\n" +"to send a chat message to:" +msgstr "" +"Ispunite JID ili nadimak kontakta kojem želite\n" +"poslati razgovornu poruku:" + +#. if offline or connecting +#: ../src/dialogs.py:1078 +#: ../src/dialogs.py:1427 +#: ../src/dialogs.py:1551 +msgid "Connection not available" +msgstr "Veza nije dostupna" + +#: ../src/dialogs.py:1079 +#: ../src/dialogs.py:1428 +#: ../src/dialogs.py:1552 +#, python-format +msgid "Please make sure you are connected with \"%s\"." +msgstr "Molimo potvrdite da ste spojeni na \"%s\"." + +#: ../src/dialogs.py:1088 +#: ../src/dialogs.py:1091 +msgid "Invalid JID" +msgstr "Neispravan JID" + +#: ../src/dialogs.py:1091 +#, python-format +msgid "Unable to parse \"%s\"." +msgstr "Nije moguće uÄitati \"%s\"." + +#: ../src/dialogs.py:1100 +msgid "Without a connection, you can not change your password." +msgstr "Bez veze nije moguća promjena lozinke." + +#: ../src/dialogs.py:1119 +msgid "You must enter a password." +msgstr "Morate unesti lozinku." + +#. img to display +#. default value +#: ../src/dialogs.py:1165 +#: ../src/notify.py:126 +#: ../src/notify.py:268 +msgid "Contact Signed In" +msgstr "Kontakt Se Prijavio" + +#: ../src/dialogs.py:1167 +#: ../src/notify.py:134 +#: ../src/notify.py:270 +msgid "Contact Signed Out" +msgstr "Kontakt Se Odjavio" + +#. chat message +#: ../src/dialogs.py:1169 +#: ../src/notify.py:154 +#: ../src/notify.py:272 +msgid "New Message" +msgstr "Nova Poruka" + +#. single message +#: ../src/dialogs.py:1169 +#: ../src/notify.py:138 +#: ../src/notify.py:272 +msgid "New Single Message" +msgstr "Nova Jedna Poruka" + +#. private message +#: ../src/dialogs.py:1170 +#: ../src/notify.py:145 +#: ../src/notify.py:273 +msgid "New Private Message" +msgstr "Nova Privatna Poruka" + +#: ../src/dialogs.py:1170 +#: ../src/gajim.py:1044 +#: ../src/notify.py:281 +msgid "New E-mail" +msgstr "Novi E-mail" + +#: ../src/dialogs.py:1172 +#: ../src/gajim.py:1187 +#: ../src/notify.py:275 +msgid "File Transfer Request" +msgstr "Zahtjev Razmjene Datoteka" + +#: ../src/dialogs.py:1174 +#: ../src/gajim.py:1022 +#: ../src/gajim.py:1164 +#: ../src/notify.py:277 +msgid "File Transfer Error" +msgstr "GreÅ¡ka u Razmjeni Datoteka" + +#: ../src/dialogs.py:1176 +#: ../src/gajim.py:1222 +#: ../src/gajim.py:1244 +#: ../src/gajim.py:1261 +#: ../src/notify.py:279 +msgid "File Transfer Completed" +msgstr "Razmjena Datoteka ZavrÅ¡ena" + +#: ../src/dialogs.py:1177 +#: ../src/gajim.py:1225 +#: ../src/notify.py:279 +msgid "File Transfer Stopped" +msgstr "Razmjena Datoteka Zaustavljena" + +#: ../src/dialogs.py:1179 +#: ../src/gajim.py:920 +#: ../src/notify.py:283 +msgid "Groupchat Invitation" +msgstr "Poziv na Grupni Razgovor" + +#: ../src/dialogs.py:1181 +#: ../src/notify.py:118 +#: ../src/notify.py:285 +msgid "Contact Changed Status" +msgstr "Kontakt Promjenio Status" + +#. FIXME: for Received with should become 'in' +#: ../src/dialogs.py:1359 +#, python-format +msgid "Single Message with account %s" +msgstr "Jedna Poruka sa raÄunom %s" + +#: ../src/dialogs.py:1361 +msgid "Single Message" +msgstr "Jedna Poruka" + +#. prepare UI for Sending +#: ../src/dialogs.py:1364 +#, python-format +msgid "Send %s" +msgstr "Poslati %s" + +#. prepare UI for Receiving +#: ../src/dialogs.py:1387 +#, python-format +msgid "Received %s" +msgstr "Primljene %s" + +#. we create a new blank window to send and we preset RE: and to jid +#: ../src/dialogs.py:1454 +#, python-format +msgid "RE: %s" +msgstr "RE: %s" + +#: ../src/dialogs.py:1455 +#, python-format +msgid "%s wrote:\n" +msgstr "%s piÅ¡e:\n" + +#: ../src/dialogs.py:1499 +#, python-format +msgid "XML Console for %s" +msgstr "XML Konzola za %s" + +#: ../src/dialogs.py:1501 +msgid "XML Console" +msgstr "XML Konzola" + +#: ../src/dialogs.py:1620 +#, python-format +msgid "Privacy List %s" +msgstr "Lista Privatnosti %s" + +#: ../src/dialogs.py:1624 +#, python-format +msgid "Privacy List for %s" +msgstr "Lista Privatnosti za %s" + +#: ../src/dialogs.py:1716 +msgid "Edit a rule" +msgstr "Izmjena pravila" + +#: ../src/dialogs.py:1801 +msgid "Add a rule" +msgstr "Dodaj pravilo" + +#: ../src/dialogs.py:1897 +#, python-format +msgid "Privacy Lists for %s" +msgstr "Liste Privatnosti za %s" + +#: ../src/dialogs.py:1899 +msgid "Privacy Lists" +msgstr "Liste Privatnosti" + +#. FIXME: use nickname instead of contact_jid +#: ../src/dialogs.py:1988 +#, python-format +msgid "%(contact_jid)s has invited you to %(room_jid)s room" +msgstr "%(contact_jid)s vas je pozvao u sobu %(room_jid)s" + +#. only if not None and not '' +#: ../src/dialogs.py:1994 +#, python-format +msgid "Comment: %s" +msgstr "Komentar: %s" + +#: ../src/dialogs.py:2054 +msgid "Choose Sound" +msgstr "Odabir Zvuka" + +#: ../src/dialogs.py:2064 +#: ../src/dialogs.py:2107 +msgid "All files" +msgstr "Sve datoteke" + +#: ../src/dialogs.py:2069 +msgid "Wav Sounds" +msgstr "Wav Zvukovi" + +#: ../src/dialogs.py:2097 +msgid "Choose Image" +msgstr "Odabir Slike" + +#: ../src/dialogs.py:2112 +msgid "Images" +msgstr "Slike" + +#: ../src/dialogs.py:2157 +#, python-format +msgid "When %s becomes:" +msgstr "Kad %s postane:" + +#: ../src/dialogs.py:2159 +#, python-format +msgid "Adding Special Notification for %s" +msgstr "Dodavanje Posebne Obavijesti za %s" + +#: ../src/dialogs.py:2232 +msgid "Condition" +msgstr "Uvjet" + +#: ../src/disco.py:108 +msgid "Others" +msgstr "Ostali" + +#. conference is a category for listing mostly groupchats in service discovery +#: ../src/disco.py:112 +msgid "Conference" +msgstr "Konferencija" + +#: ../src/disco.py:411 +msgid "Without a connection, you can not browse available services" +msgstr "Ukoliko niste spojeni nećete moći pregledati dostupne usluge" + +#: ../src/disco.py:490 +#, python-format +msgid "Service Discovery using account %s" +msgstr "Otkrivanje Usluga koristeći raÄun %s" + +#: ../src/disco.py:491 +msgid "Service Discovery" +msgstr "Otkrivanje Usluga" + +#: ../src/disco.py:628 +msgid "The service could not be found" +msgstr "Usluga nije pronaÄ‘ena" + +#: ../src/disco.py:629 +msgid "There is no service at the address you entered, or it is not responding. Check the address and try again." +msgstr "Na adresi koju ste naveli nema usluge ili odgovora. Provjerite adresu i pokuÅ¡ajte ponovo." + +#: ../src/disco.py:633 +#: ../src/disco.py:915 +msgid "The service is not browsable" +msgstr "Uslugu nije moguće pretražiti" + +#: ../src/disco.py:634 +msgid "This type of service does not contain any items to browse." +msgstr "Ovakav tip usluge ne sadrži stvari za pretraživanje" + +#: ../src/disco.py:714 +#, python-format +msgid "Browsing %s using account %s" +msgstr "Pretraga %s koristeći raÄun %s" + +#: ../src/disco.py:753 +msgid "_Browse" +msgstr "_Pregled" + +#: ../src/disco.py:916 +msgid "This service does not contain any items to browse." +msgstr "Ova usluga ne sadrži stvari za pretraživanje" + +#: ../src/disco.py:1137 +#: ../src/disco.py:1254 +msgid "Re_gister" +msgstr "Re_gistracija" + +#: ../src/disco.py:1291 +#, python-format +msgid "Scanning %d / %d.." +msgstr "Skeniranje %d / %d.." + +#. Users column +#: ../src/disco.py:1473 +msgid "Users" +msgstr "Korisnici" + +#. Description column +#: ../src/disco.py:1480 +msgid "Description" +msgstr "Opis" + +#: ../src/filetransfers_window.py:72 +msgid "File" +msgstr "Datoteka" + +#: ../src/filetransfers_window.py:87 +msgid "Time" +msgstr "Vrijeme" + +#: ../src/filetransfers_window.py:99 +msgid "Progress" +msgstr "Napredak" + +#: ../src/filetransfers_window.py:163 +#: ../src/filetransfers_window.py:223 +#, python-format +msgid "Filename: %s" +msgstr "Ime datoteke: %s" + +#: ../src/filetransfers_window.py:164 +#: ../src/filetransfers_window.py:291 +#, python-format +msgid "Size: %s" +msgstr "veliÄina: %s" + +#. You is a reply of who sent a file +#. You is a reply of who received a file +#: ../src/filetransfers_window.py:173 +#: ../src/filetransfers_window.py:183 +#: ../src/history_manager.py:454 +msgid "You" +msgstr "Vi" + +#: ../src/filetransfers_window.py:174 +#: ../src/filetransfers_window.py:224 +#, python-format +msgid "Sender: %s" +msgstr "PoÅ¡iljatelj: %s" + +#: ../src/filetransfers_window.py:175 +#: ../src/filetransfers_window.py:556 +#: ../src/tooltips.py:639 +msgid "Recipient: " +msgstr "Primatelj: " + +#: ../src/filetransfers_window.py:186 +#, python-format +msgid "Saved in: %s" +msgstr "Spremljeno u: %s" + +#: ../src/filetransfers_window.py:188 +msgid "File transfer completed" +msgstr "Prijenos datoteka zavrÅ¡en" + +#: ../src/filetransfers_window.py:204 +#: ../src/filetransfers_window.py:212 +msgid "File transfer canceled" +msgstr "Prijenos datoteka prekinut" + +#: ../src/filetransfers_window.py:204 +#: ../src/filetransfers_window.py:213 +msgid "Connection with peer cannot be established." +msgstr "Vezu nije moguće ostvariti." + +#: ../src/filetransfers_window.py:225 +msgid "File transfer stopped by the contact of the other side" +msgstr "Prijenos datoteka je zaustavio kontakt na drugoj strani" + +#: ../src/filetransfers_window.py:242 +msgid "Choose File to Send..." +msgstr "Odabir Datoteke za Slanje..." + +#: ../src/filetransfers_window.py:256 +msgid "Gajim cannot access this file" +msgstr "Gajim ne može pristupiti ovoj datoteci" + +#: ../src/filetransfers_window.py:257 +msgid "This file is being used by another process." +msgstr "Ovu datoteku koristi neki drugi proces." + +#: ../src/filetransfers_window.py:289 +#, python-format +msgid "File: %s" +msgstr "Datoteka: %s" + +#: ../src/filetransfers_window.py:294 +#, python-format +msgid "Type: %s" +msgstr "Tip: %s" + +#: ../src/filetransfers_window.py:296 +#, python-format +msgid "Description: %s" +msgstr "Opis: %s" + +#: ../src/filetransfers_window.py:297 +#, python-format +msgid "%s wants to send you a file:" +msgstr "%s vam želi poslati datoteku:" + +#: ../src/filetransfers_window.py:311 +#, python-format +msgid "Cannot overwrite existing file \"%s\"" +msgstr "Nije moguće prepisati postojeću datoteku \"%s\"" + +#: ../src/filetransfers_window.py:312 +msgid "A file with this name already exists and you do not have permission to overwrite it." +msgstr "Datoteka sa ovim imenom već postoji i nemate ovlasti prepisati ju." + +#: ../src/filetransfers_window.py:319 +#: ../src/gtkgui_helpers.py:685 +msgid "This file already exists" +msgstr "Ova datoteka već postoji" + +#: ../src/filetransfers_window.py:319 +#: ../src/gtkgui_helpers.py:685 +msgid "What do you want to do?" +msgstr "Å to želite uÄiniti?" + +#: ../src/filetransfers_window.py:331 +#, python-format +msgid "Directory \"%s\" is not writable" +msgstr "U direktorij \"%s\" nije moguće zapisivati" + +#: ../src/filetransfers_window.py:331 +msgid "You do not have permission to create files in this directory." +msgstr "Nemate ovlasti stvarati datoteke u ovom direktoriju" + +#: ../src/filetransfers_window.py:341 +msgid "Save File as..." +msgstr "Snimiti Datoteku kao..." + +#. Print remaining time in format 00:00:00 +#. You can change the places of (hours), (minutes), (seconds) - +#. they are not translatable. +#: ../src/filetransfers_window.py:420 +#, python-format +msgid "%(hours)02.d:%(minutes)02.d:%(seconds)02.d" +msgstr "%(hours)02.d:%(minutes)02.d:%(seconds)02.d" + +#. This should make the string Kb/s, +#. where 'Kb' part is taken from %s. +#. Only the 's' after / (which means second) should be translated. +#: ../src/filetransfers_window.py:492 +#, python-format +msgid "(%(filesize_unit)s/s)" +msgstr "(%(filesize_unit)s/s)" + +#: ../src/filetransfers_window.py:528 +#: ../src/filetransfers_window.py:531 +msgid "Invalid File" +msgstr "Neispravna Datoteka" + +#: ../src/filetransfers_window.py:528 +msgid "File: " +msgstr "Datoteka: " + +#: ../src/filetransfers_window.py:532 +msgid "It is not possible to send empty files" +msgstr "Nije moguće poslati prazne datoteke" + +#: ../src/filetransfers_window.py:552 +#: ../src/tooltips.py:511 +#: ../src/tooltips.py:629 +msgid "Name: " +msgstr "Ime: " + +#: ../src/filetransfers_window.py:554 +#: ../src/tooltips.py:633 +msgid "Sender: " +msgstr "PoÅ¡iljatelj: " + +#: ../src/filetransfers_window.py:742 +msgid "Pause" +msgstr "Pauza" + +#: ../src/gajim-remote.py:82 +msgid "shows a help on specific command" +msgstr "prikazuje pomoć za odreÄ‘enu naredbu" + +#. User gets help for the command, specified by this parameter +#: ../src/gajim-remote.py:85 +msgid "command" +msgstr "naredba" + +#: ../src/gajim-remote.py:86 +msgid "show help on command" +msgstr "prikaži pomoć za komandu" + +#: ../src/gajim-remote.py:90 +msgid "Shows or hides the roster window" +msgstr "Prikazuje ili skriva prozor liste" + +#: ../src/gajim-remote.py:94 +msgid "Popups a window with the next unread message" +msgstr "IskaÄe prozor sa sljedećom neproÄitanom porukom" + +#: ../src/gajim-remote.py:98 +msgid "Prints a list of all contacts in the roster. Each contact appear on a separate line" +msgstr "Ispisuje listu svih kontakata na listi. Svaki kontakt pojavljuje se u odvojenoj liniji" + +#: ../src/gajim-remote.py:100 +#: ../src/gajim-remote.py:114 +#: ../src/gajim-remote.py:124 +#: ../src/gajim-remote.py:137 +#: ../src/gajim-remote.py:151 +#: ../src/gajim-remote.py:172 +#: ../src/gajim-remote.py:202 +#: ../src/gajim-remote.py:211 +#: ../src/gajim-remote.py:218 +#: ../src/gajim-remote.py:225 +#: ../src/gajim-remote.py:236 +msgid "account" +msgstr "raÄun" + +#: ../src/gajim-remote.py:100 +msgid "show only contacts of the given account" +msgstr "prikaži samo kontakte ovog raÄuna" + +#: ../src/gajim-remote.py:105 +msgid "Prints a list of registered accounts" +msgstr "Ispisuje listu registriranih raÄuna" + +#: ../src/gajim-remote.py:109 +msgid "Changes the status of account or accounts" +msgstr "Mjenja status jednog raÄuna ili viÅ¡e njih" + +#. offline, online, chat, away, xa, dnd, invisible should not be translated +#: ../src/gajim-remote.py:112 +msgid "status" +msgstr "status" + +#: ../src/gajim-remote.py:112 +msgid "one of: offline, online, chat, away, xa, dnd, invisible " +msgstr "jedno od: " + +#: ../src/gajim-remote.py:113 +#: ../src/gajim-remote.py:134 +#: ../src/gajim-remote.py:148 +msgid "message" +msgstr "poruka" + +#: ../src/gajim-remote.py:113 +msgid "status message" +msgstr "statusna poruka" + +#: ../src/gajim-remote.py:114 +msgid "change status of account \"account\". If not specified, try to change status of all accounts that have \"sync with global status\" option set" +msgstr "izmjena statusa raÄuna \"raÄun\". Ako nije odreÄ‘eno, pokuÅ¡aj promjene statusa svih raÄuna koji imaju podeÅ¡enu opciju \"sinkronizacija sa globalnim statusom\"" + +#: ../src/gajim-remote.py:120 +msgid "Shows the chat dialog so that you can send messages to a contact" +msgstr "Prikazuje dialog razgovora kako bi mogli slati poruke kontaktu" + +#: ../src/gajim-remote.py:122 +msgid "JID of the contact that you want to chat with" +msgstr "JID kontakta sa kojim želite razgovarati" + +#: ../src/gajim-remote.py:124 +#: ../src/gajim-remote.py:202 +msgid "if specified, contact is taken from the contact list of this account" +msgstr "ako je oznaÄeno, kontak se uzima sa kontakt liste ovog raÄuna" + +#: ../src/gajim-remote.py:129 +msgid "Sends new chat message to a contact in the roster. Both OpenPGP key and account are optional. If you want to set only 'account', without 'OpenPGP key', just set 'OpenPGP key' to ''." +msgstr "Å alje novu poruku kontaktu na listi, OpenPGP kljuÄ i raÄun su opcionalni. Ako želite postaviti samo 'raÄun', bez 'OpenPGP kljuÄa', samo podesite 'OpenPGP kljuÄ' na ''." + +#: ../src/gajim-remote.py:133 +#: ../src/gajim-remote.py:146 +msgid "JID of the contact that will receive the message" +msgstr "JID kontakta koji će primiti poruku" + +#: ../src/gajim-remote.py:134 +#: ../src/gajim-remote.py:148 +msgid "message contents" +msgstr "sadržaj poruke" + +#: ../src/gajim-remote.py:135 +#: ../src/gajim-remote.py:149 +msgid "pgp key" +msgstr "pgp kljuÄ" + +#: ../src/gajim-remote.py:135 +#: ../src/gajim-remote.py:149 +msgid "if specified, the message will be encrypted using this public key" +msgstr "ako je oznaÄeno, poruka će biti kriptirana koristeći ovaj javni kljuÄ" + +#: ../src/gajim-remote.py:137 +#: ../src/gajim-remote.py:151 +msgid "if specified, the message will be sent using this account" +msgstr "ako je oznaÄeno, poruka će biti poslana koristeći ovaj raÄun" + +#: ../src/gajim-remote.py:142 +msgid "Sends new single message to a contact in the roster. Both OpenPGP key and account are optional. If you want to set only 'account', without 'OpenPGP key', just set 'OpenPGP key' to ''." +msgstr "Å alje novu poruku kontaktu na listi, OpenPGP i raÄun su opcionalni. Ako želite postaviti samo 'raÄun', bez 'OpenPGP kljuÄa', samo podesite 'OpenPGP kljuÄ' na ''." + +#: ../src/gajim-remote.py:147 +msgid "subject" +msgstr "tema" + +#: ../src/gajim-remote.py:147 +msgid "message subject" +msgstr "tema poruke" + +#: ../src/gajim-remote.py:156 +msgid "Gets detailed info on a contact" +msgstr "Daje detaljne informacije o kontaktu" + +#: ../src/gajim-remote.py:158 +#: ../src/gajim-remote.py:171 +#: ../src/gajim-remote.py:201 +#: ../src/gajim-remote.py:210 +msgid "JID of the contact" +msgstr "JID kontakta" + +#: ../src/gajim-remote.py:162 +msgid "Gets detailed info on a account" +msgstr "Daje detaljne informacije o raÄunu" + +#: ../src/gajim-remote.py:164 +msgid "Name of the account" +msgstr "Ime raÄuna" + +#: ../src/gajim-remote.py:168 +msgid "Sends file to a contact" +msgstr "Å alje datoteku kontaktu" + +#: ../src/gajim-remote.py:170 +msgid "file" +msgstr "datoteka" + +#: ../src/gajim-remote.py:170 +msgid "File path" +msgstr "Putanja datoteke" + +#: ../src/gajim-remote.py:172 +msgid "if specified, file will be sent using this account" +msgstr "ako je oznaÄeno, datoteka će biti poslana koriteći ovaj raÄun" + +#: ../src/gajim-remote.py:177 +msgid "Lists all preferences and their values" +msgstr "Prikatuje sve postavke i njihove vrijednosti" + +#: ../src/gajim-remote.py:181 +msgid "Sets value of 'key' to 'value'." +msgstr "Postavlja vrijednost 'kljuÄa' na 'vrijednost'." + +#: ../src/gajim-remote.py:183 +msgid "key=value" +msgstr "kljuÄ=vrijednost" + +#: ../src/gajim-remote.py:183 +msgid "'key' is the name of the preference, 'value' is the value to set it to" +msgstr "'kljuÄ' je ime postavke, 'vrijednost' je vrijednost na koju će se postaviti" + +#: ../src/gajim-remote.py:188 +msgid "Deletes a preference item" +msgstr "BriÅ¡e element postavke" + +#: ../src/gajim-remote.py:190 +msgid "key" +msgstr "kljuÄ" + +#: ../src/gajim-remote.py:190 +msgid "name of the preference to be deleted" +msgstr "ime postavke koja će se brisati" + +#: ../src/gajim-remote.py:194 +msgid "Writes the current state of Gajim preferences to the .config file" +msgstr "Zapisuje trenutno stanje Gajim postavku u .config datoteku" + +#: ../src/gajim-remote.py:199 +msgid "Removes contact from roster" +msgstr "Uklanja kontakt sa liste" + +#: ../src/gajim-remote.py:208 +msgid "Adds contact to roster" +msgstr "Dodaje kontakt na listu" + +#: ../src/gajim-remote.py:210 +msgid "jid" +msgstr "jid" + +#: ../src/gajim-remote.py:211 +msgid "Adds new contact to this account" +msgstr "Dodaje novi kontakt ovom raÄunu" + +#: ../src/gajim-remote.py:216 +msgid "Returns current status (the global one unless account is specified)" +msgstr "Vraća trenutni status (globalni ukoliko nije odreÄ‘en raÄun)" + +#: ../src/gajim-remote.py:223 +msgid "Returns current status message(the global one unless account is specified)" +msgstr "Vraća trenutnu statusnu poruku (globalnu ukoliko nije odreÄ‘en raÄun)" + +#: ../src/gajim-remote.py:230 +msgid "Returns number of unreaded messages" +msgstr "Vraća broj neproÄitanih poruka" + +#: ../src/gajim-remote.py:234 +msgid "Open 'Start Chat' dialog" +msgstr "Otvaranje dialoga 'ZapoÄeti Razgovor'" + +#: ../src/gajim-remote.py:236 +msgid "Starts chat, using this account" +msgstr "ZapoÄinje razgovor, koristeći ovaj raÄun" + +#: ../src/gajim-remote.py:256 +msgid "Missing argument \"contact_jid\"" +msgstr "Nedostaje argument \"contact_jid\"" + +#: ../src/gajim-remote.py:275 +#, python-format +msgid "" +"'%s' is not in your roster.\n" +"Please specify account for sending the message." +msgstr "" +"'%s' nije na vaÅ¡oj listi.\n" +"Molimo odredite raÄun za slanje poruke." + +#: ../src/gajim-remote.py:278 +msgid "You have no active account" +msgstr "nemate aktivnih raÄuna" + +#: ../src/gajim-remote.py:321 +#, python-format +msgid "Unknown D-Bus version: %s" +msgstr "Nepoznata verzija D-Busa: %s" + +#: ../src/gajim-remote.py:348 +#, python-format +msgid "" +"Usage: %s %s %s \n" +"\t %s" +msgstr "" +"KoriÅ¡tenje: %s %s %s \n" +"\t %s" + +#: ../src/gajim-remote.py:351 +msgid "Arguments:" +msgstr "Argumenti:" + +#: ../src/gajim-remote.py:355 +#, python-format +msgid "%s not found" +msgstr "%s nije pronaÄ‘en" + +#: ../src/gajim-remote.py:359 +#, python-format +msgid "" +"Usage: %s command [arguments]\n" +"Command is one of:\n" +msgstr "" +"KoriÅ¡tenje: %s naredba [argumenti]\n" +"Naredba je jedna od:\n" + +#: ../src/gajim-remote.py:433 +#, python-format +msgid "" +"Argument \"%s\" is not specified. \n" +"Type \"%s help %s\" for more info" +msgstr "" +"Argument \"%s\" nije odreÄ‘en. \n" +"Unesite \"%s help %s\" za viÅ¡e informacija" + +#: ../src/gajim.py:48 +msgid "Gajim needs Xserver to run. Quiting..." +msgstr "Gajim treba Xserver za pokretanje. Izlaz..." + +#: ../src/gajim.py:52 +msgid "Gajim needs PyGTK 2.6 or above" +msgstr "Gajim treba pyGTK 2.6 ili viÅ¡i" + +#: ../src/gajim.py:53 +msgid "Gajim needs PyGTK 2.6 or above to run. Quiting..." +msgstr "Gajim needs PyGTK 2.6 ili viÅ¡i za pokretanje. Izlaz..." + +#: ../src/gajim.py:55 +msgid "Gajim needs GTK 2.6 or above" +msgstr "Gajim treba GTK 2.6 ili viÅ¡i" + +#: ../src/gajim.py:56 +msgid "Gajim needs GTK 2.6 or above to run. Quiting..." +msgstr "Gajim treba GTK 2.6 ili viÅ¡i za pokretanje. Izlaz..." + +#: ../src/gajim.py:61 +msgid "GTK+ runtime is missing libglade support" +msgstr "GTK+ nema podrÅ¡ku za libglade" + +#: ../src/gajim.py:63 +#, python-format +msgid "Please remove your current GTK+ runtime and install the latest stable version from %s" +msgstr "Molimo uklonite svoj trenutni GTK+ i instalirajte posljednju stabilnu verziju sa %s" + +#: ../src/gajim.py:65 +msgid "Please make sure that GTK+ and PyGTK have libglade support in your system." +msgstr "Molimo provjerite da GTK+ i PyGTK imaju podrÅ¡ku za libglade na vaÅ¡em sustavu" + +#: ../src/gajim.py:70 +msgid "Gajim needs PySQLite2 to run" +msgstr "Gajim treba PySQLite2 za pokretanje" + +#. set the icon to all newly opened wind +#: ../src/gajim.py:151 +msgid "Gajim is already running" +msgstr "Gajim je već pokrenut" + +#: ../src/gajim.py:152 +msgid "" +"Another instance of Gajim seems to be running\n" +"Run anyway?" +msgstr "" +"Trenutno je već pokrenuta jedna instanca Gajima\n" +"Svejedno pokrenuti?" + +#: ../src/gajim.py:267 +#, python-format +msgid "HTTP (%s) Authorization for %s (id: %s)" +msgstr "HTTP (%s) Autorizacija za %s (id: %s)" + +#: ../src/gajim.py:268 +msgid "Do you accept this request?" +msgstr "Prihvaćate li ovaj zahtjev?" + +#: ../src/gajim.py:611 +#, python-format +msgid "error while sending %s ( %s )" +msgstr "greÅ¡ka prilikom slanja %s ( %s )" + +#: ../src/gajim.py:651 +msgid "Authorization accepted" +msgstr "Autorizacija prihvaćena" + +#: ../src/gajim.py:652 +#, python-format +msgid "The contact \"%s\" has authorized you to see his or her status." +msgstr "Kontakt \"%s\" vam je dozvolio da vidite njegov ili njezin status." + +#: ../src/gajim.py:660 +#, python-format +msgid "Contact \"%s\" removed subscription from you" +msgstr "Kontankt \"%s\" je uklonio pretplatu od vas" + +#: ../src/gajim.py:661 +msgid "You will always see him or her as offline." +msgstr "Uvijek ćete vidjeti njega ili nju kao neprikljuÄenog." + +#: ../src/gajim.py:704 +#, python-format +msgid "Contact with \"%s\" cannot be established" +msgstr "Kontakt sa \"%s\" ne može biti uspostavljen" + +#: ../src/gajim.py:705 +#: ../src/common/connection.py:398 +msgid "Check your connection or try again later." +msgstr "Provjerite svoju vezu ili pokuÅ¡ajte kasnije." + +#: ../src/gajim.py:849 +#: ../src/roster_window.py:1025 +#, python-format +msgid "%s is now %s (%s)" +msgstr "%s je sada %s (%s)" + +#: ../src/gajim.py:930 +msgid "Your passphrase is incorrect" +msgstr "VaÅ¡a lozinka nije toÄna" + +#: ../src/gajim.py:931 +msgid "You are currently connected without your OpenPGP key." +msgstr "Trenutno ste spojeni bez OpenPGP kljuÄa." + +#. FIXME: find a better image +#: ../src/gajim.py:1033 +#, python-format +msgid "New E-mail on %(gmail_mail_address)s" +msgstr "Novi E-mail na %(gmail_mail_address)s" + +#: ../src/gajim.py:1035 +#, python-format +msgid "You have %d new E-mail message" +msgid_plural "You have %d new E-mail messages" +msgstr[0] "Imate %d novu E-mail poruku" +msgstr[1] "Imate %d nove E-mail poruke" +msgstr[2] "Imate %d novih E-mail poruka" + +#. each message has a 'From', 'Subject' and 'Snippet' field +#: ../src/gajim.py:1040 +#, python-format +msgid "" +"\n" +"From: %(from_address)s" +msgstr "" +"\n" +"Od: %(from_address)s" + +#: ../src/gajim.py:1185 +#, python-format +msgid "%s wants to send you a file." +msgstr "%s vam želi poslati datoteku." + +#: ../src/gajim.py:1245 +#, python-format +msgid "You successfully received %(filename)s from %(name)s." +msgstr "UspjeÅ¡no ste primili %(filename)s od %(name)s." + +#. ft stopped +#: ../src/gajim.py:1249 +#, python-format +msgid "File transfer of %(filename)s from %(name)s stopped." +msgstr "Prijenos %(filename)s od %(name)s je zaustavljen." + +#: ../src/gajim.py:1262 +#, python-format +msgid "You successfully sent %(filename)s to %(name)s." +msgstr "UspjeÅ¡no ste poslali %(filename)s %(name)s" + +#. ft stopped +#: ../src/gajim.py:1266 +#, python-format +msgid "File transfer of %(filename)s to %(name)s stopped." +msgstr "Prijenos %(filename)s %(name)s je zaustavljen. " + +#: ../src/gajim.py:1295 +msgid "vCard publication succeeded" +msgstr "Objava vCard uspjeÅ¡na" + +#: ../src/gajim.py:1295 +msgid "Your personal information has been published successfully." +msgstr "VaÅ¡i osobni podaci su uspjeÅ¡no objavljeni." + +#: ../src/gajim.py:1304 +msgid "vCard publication failed" +msgstr "Objava vCard neuspjeÅ¡na" + +#: ../src/gajim.py:1304 +msgid "There was an error while publishing your personal information, try again later." +msgstr "Nastala je greÅ¡ka prilikom objavljivanja vaÅ¡ih osobnih podataka, pokuÅ¡ajte ponovno kasnije." + +#. it is good to notify the user +#. in case he or she cannot see the output of the console +#: ../src/gajim.py:1683 +msgid "Could not save your settings and preferences" +msgstr "Nije moguće spremanje vaÅ¡ih postavki" + +#: ../src/gajim.py:1903 +msgid "Session Management support not available (missing gnome.ui module)" +msgstr "PodrÅ¡ka za Upravljanje Seansama nije dostupna (nedostaje gnome.ui modul)" + +#: ../src/gajim.py:1932 +msgid "Migrating Logs..." +msgstr "Selim Zapise..." + +#: ../src/gajim.py:1933 +msgid "Please wait while logs are being migrated..." +msgstr "PriÄekajte dok se odvija selidba zapisa..." + +#: ../src/gajim_themes_window.py:59 +msgid "Theme" +msgstr "Tema" + +#. don't confuse translators +#: ../src/gajim_themes_window.py:141 +msgid "theme name" +msgstr "ime teme" + +#: ../src/gajim_themes_window.py:158 +msgid "You cannot delete your current theme" +msgstr "Ne možete izbrisati svoju trenutnu temu" + +#: ../src/gajim_themes_window.py:159 +msgid "Please first choose another for your current theme." +msgstr "Molimo vas da prvo odaberete neku drugu temu za trenutnu." + +#: ../src/groupchat_control.py:99 +msgid "Private Chat" +msgstr "Privatni Razgovor" + +#: ../src/groupchat_control.py:99 +msgid "Private Chats" +msgstr "Privanti Razgovori" + +#: ../src/groupchat_control.py:115 +msgid "Sending private message failed" +msgstr "Slanje privatne poruke neuspjeÅ¡no" + +#. in second %s code replaces with nickname +#: ../src/groupchat_control.py:117 +#, python-format +msgid "You are no longer in room \"%s\" or \"%s\" has left." +msgstr "ViÅ¡e niste u sobi \"%s\" ili je \"%s\" otiÅ¡ao." + +#: ../src/groupchat_control.py:129 +msgid "Group Chat" +msgstr "Grupni Razgovor" + +#: ../src/groupchat_control.py:129 +msgid "Group Chats" +msgstr "Grupni Razgovori" + +#: ../src/groupchat_control.py:308 +msgid "Insert Nickname" +msgstr "Umetni _Nadimak" + +#: ../src/groupchat_control.py:702 +msgid "This room has no subject" +msgstr "Ova soba nema naslov" + +#. do not print 'kicked by None' +#: ../src/groupchat_control.py:801 +#, python-format +msgid "%(nick)s has been kicked: %(reason)s" +msgstr "%(nick)s je izbaÄen: %(reason)s" + +#: ../src/groupchat_control.py:805 +#, python-format +msgid "%(nick)s has been kicked by %(who)s: %(reason)s" +msgstr "%(nick)s je izbaÄen od strane %(who)s: %(reason)s" + +#. do not print 'banned by None' +#: ../src/groupchat_control.py:812 +#, python-format +msgid "%(nick)s has been banned: %(reason)s" +msgstr "%(nick)s ima zabranjen pristup: %(reason)s" + +#: ../src/groupchat_control.py:816 +#, python-format +msgid "%(nick)s has been banned by %(who)s: %(reason)s" +msgstr "%(nick)s ima zabranjen pristup od strane %(who)s: %(reason)s" + +#: ../src/groupchat_control.py:824 +#, python-format +msgid "You are now known as %s" +msgstr "Od sada ste poznati kao %s" + +#: ../src/groupchat_control.py:826 +#, python-format +msgid "%s is now known as %s" +msgstr "%s je od sada poznat kao %s" + +#: ../src/groupchat_control.py:897 +#, python-format +msgid "%s has left" +msgstr "%s je napustio" + +#: ../src/groupchat_control.py:902 +#, python-format +msgid "%s has joined the room" +msgstr "%s se pridružio sobi" + +#. No status message +#: ../src/groupchat_control.py:904 +#: ../src/roster_window.py:1028 +#, python-format +msgid "%s is now %s" +msgstr "%s je sada %s" + +#: ../src/groupchat_control.py:1022 +#: ../src/groupchat_control.py:1039 +#: ../src/groupchat_control.py:1132 +#: ../src/groupchat_control.py:1148 +#, python-format +msgid "Nickname not found: %s" +msgstr "Nadimak nije pronaÄ‘en: %s " + +#: ../src/groupchat_control.py:1066 +#, python-format +msgid "Invited %(contact_jid)s to %(room_jid)s." +msgstr "Pozvali ste %(contact_jid)s na %(room_jid)s" + +#. %s is something the user wrote but it is not a jid so we inform +#: ../src/groupchat_control.py:1073 +#: ../src/groupchat_control.py:1103 +#, python-format +msgid "%s does not appear to be a valid JID" +msgstr "%s ne izgleda kao valjani JID" + +#: ../src/groupchat_control.py:1185 +#, python-format +msgid "No such command: /%s (if you want to send this, prefix it with /say)" +msgstr "Ne postoji komanda: /%s (ako želite poslati to kao poruku, prefiksirajte je sa /say)" + +#: ../src/groupchat_control.py:1207 +#, python-format +msgid "Commands: %s" +msgstr "Komanda: %s" + +#: ../src/groupchat_control.py:1209 +#, python-format +msgid "Usage: /%s [reason], bans the JID from the room. The nickname of an occupant may be substituted, but not if it contains \"@\". If the JID is currently in the room, he/she/it will also be kicked. Does NOT support spaces in nickname." +msgstr "KoriÅ¡tenje: /%s [razlog], je zabranio pristup JID-u u sobu. Nadimak uÄesnika može biti zamijenjen, ali ne ako sadrži \"@\". Ako je JID trenutno u sobi, on/ona/ono će biti izbaÄen(a/o). Razmaci u imenima nisu podržani." + +#: ../src/groupchat_control.py:1215 +#, python-format +msgid "Usage: /%s , opens a private chat window to the specified occupant." +msgstr "NaÄin koriÅ¡tenja: /%s , otvara privatni razgovor sa uÄesnikom" + +#: ../src/groupchat_control.py:1219 +#, python-format +msgid "Usage: /%s, clears the text window." +msgstr "NaÄin koriÅ¡tenja: /%s, prazni tekstualni prozor" + +#: ../src/groupchat_control.py:1221 +#, python-format +msgid "Usage: /%s [reason], closes the current window or tab, displaying reason if specified." +msgstr "NaÄin koriÅ¡tenja: /%s [razlog], zatvara trenutni prozor ili tab, i prikazuje razlog ako je specificiran." + +#: ../src/groupchat_control.py:1224 +#, python-format +msgid "Usage: /%s, hide the chat buttons." +msgstr "NaÄin koriÅ¡tenja: /%s, sakriva dugmadi." + +#: ../src/groupchat_control.py:1226 +#, python-format +msgid "Usage: /%s [reason], invites JID to the current room, optionally providing a reason." +msgstr "NaÄin koriÅ¡tenja: /%s [razlog], poziva JID u trenutnu sobu, opcionalno dajući razlog." + +#: ../src/groupchat_control.py:1230 +#, python-format +msgid "Usage: /%s @[/nickname], offers to join room@server optionally using specified nickname." +msgstr "NaÄin koriÅ¡tenja: /%s @[/nadimak], nudi mogućnost spajanja na sobu@poslužitelj koristeći navedeni nadimak." + +#: ../src/groupchat_control.py:1234 +#, python-format +msgid "Usage: /%s [reason], removes the occupant specified by nickname from the room and optionally displays a reason. Does NOT support spaces in nickname." +msgstr "NaÄin koriÅ¡tenja: /%s [razlog], uklanja uÄesnika specificiranog nadimkom iz sobe i opcionalno prikazuje razlog. NE podržava razmake u nadimku." + +#: ../src/groupchat_control.py:1239 +#, python-format +msgid "Usage: /%s , sends action to the current room. Use third person. (e.g. /%s explodes.)" +msgstr "NaÄin koriÅ¡tenja: /%s , Å¡alje akciju trenutnoj sobi. Koristi treću osobu. (npr. /%s eksplodira.)" + +#: ../src/groupchat_control.py:1243 +msgid "Usage: /%s [message], opens a private message windowand sends message to the occupant specified by nickname." +msgstr "NaÄin koriÅ¡tenja: /%s [poruka], otvara prozor privatne poruke i Å¡alje poruku uÄesniku specificiranom pomoću nadimka." + +#: ../src/groupchat_control.py:1248 +#, python-format +msgid "Usage: /%s , changes your nickname in current room." +msgstr "NaÄin koriÅ¡tenja: /%s , mijenja vaÅ¡ nadimak u trenutnoj sobi." + +#: ../src/groupchat_control.py:1252 +msgid "Usage: /%s , display the names of room occupants." +msgstr "NaÄin koriÅ¡tenja: /%s , prikazuje imena uÄesnika u sobi." + +#: ../src/groupchat_control.py:1256 +#, python-format +msgid "Usage: /%s [topic], displays or updates the current room topic." +msgstr "NaÄin koriÅ¡tenja: /%s [tema], prikazuje ili ažurira temu sobe." + +#: ../src/groupchat_control.py:1259 +#, python-format +msgid "Usage: /%s , sends a message without looking for other commands." +msgstr "NaÄin koriÅ¡tenja: /%s , Å¡alje poruku bez gledanja za ostale komande." + +#: ../src/groupchat_control.py:1262 +#, python-format +msgid "No help info for /%s" +msgstr "Nema informacija ni pomoći za /%s" + +#: ../src/groupchat_control.py:1304 +#, python-format +msgid "Are you sure you want to leave room \"%s\"?" +msgstr "Želite li napustiti sobu \"%s\"?" + +#: ../src/groupchat_control.py:1305 +msgid "If you close this window, you will be disconnected from this room." +msgstr "Ako zatvorite ovaj prozor, biti ćete odspojen iz sobe." + +#: ../src/groupchat_control.py:1309 +msgid "Do _not ask me again" +msgstr "_Ne pitaj me viÅ¡e" + +#: ../src/groupchat_control.py:1343 +msgid "Changing Subject" +msgstr "Mijenjanje Teme" + +#: ../src/groupchat_control.py:1344 +msgid "Please specify the new subject:" +msgstr "Molimo specificirajte novu temu:" + +#: ../src/groupchat_control.py:1352 +msgid "Changing Nickname" +msgstr "Mijenjam Nadimak" + +#: ../src/groupchat_control.py:1353 +msgid "Please specify the new nickname you want to use:" +msgstr "Molimo specificirajte novi nadimak ako ga želite koristiti:" + +#: ../src/groupchat_control.py:1379 +msgid "Bookmark already set" +msgstr "Knjižna oznaka je već postavljena" + +#: ../src/groupchat_control.py:1380 +#, python-format +msgid "Room \"%s\" is already in your bookmarks." +msgstr "Soba \"%s\" je već u vaÅ¡im knjižnim oznakama." + +#: ../src/groupchat_control.py:1389 +msgid "Bookmark has been added successfully" +msgstr "Knjižna oznaka je bez uspjeÅ¡no dodana" + +#: ../src/groupchat_control.py:1390 +msgid "You can manage your bookmarks via Actions menu in your roster." +msgstr "Možete upravljati vaÅ¡im knjižnim oznakama pomoću izbornika Akcije u vaÅ¡em spisku." + +#. ask for reason +#: ../src/groupchat_control.py:1500 +#, python-format +msgid "Kicking %s" +msgstr "Izbacujem %s" + +#: ../src/groupchat_control.py:1501 +#: ../src/groupchat_control.py:1779 +msgid "You may specify a reason below:" +msgstr "Možete specificirati razlog ispod:" + +#. ask for reason +#: ../src/groupchat_control.py:1778 +#, python-format +msgid "Banning %s" +msgstr "Zabranjujem pristup %s" + +#: ../src/gtkexcepthook.py:51 +msgid "A programming error has been detected" +msgstr "Otkrivena je bila greÅ¡ka u programiranju" + +#: ../src/gtkexcepthook.py:52 +msgid "It probably is not fatal, but should be reported to the developers nonetheless." +msgstr "Najvjerojatnije nije kobna, ali ipak preporuÄamo, da ju javite programerima." + +#: ../src/gtkexcepthook.py:58 +msgid "_Report Bug" +msgstr "_Prijavi GreÅ¡ku" + +#: ../src/gtkexcepthook.py:81 +msgid "Details" +msgstr "Detalji" + +#. we talk about file +#: ../src/gtkgui_helpers.py:154 +#: ../src/gtkgui_helpers.py:169 +#, python-format +msgid "Error: cannot open %s for reading" +msgstr "GreÅ¡ka: nije moguće otvoriti %s za Äitanje" + +#: ../src/gtkgui_helpers.py:298 +msgid "Error reading file:" +msgstr "GreÅ¡ka pri Äitanju datoteke:" + +#: ../src/gtkgui_helpers.py:301 +msgid "Error parsing file:" +msgstr "GreÅ¡ka pri uÄitavanju datoteke:" + +#. do not traceback (could be a permission problem) +#. we talk about a file here +#: ../src/gtkgui_helpers.py:339 +#, python-format +msgid "Could not write to %s. Session Management support will not work" +msgstr "Nije moguće pisati u %s. Rukovanje sesijama neće biti moguće" + +#: ../src/gtkgui_helpers.py:717 +msgid "Extension not supported" +msgstr "Produžetak nije podržan" + +#: ../src/gtkgui_helpers.py:718 +#, python-format +msgid "Image cannot be saved in %(type)s format. Save as %(new_filename)s?" +msgstr "Sliku nije moguće spremiti u %(type)s formatu. Spremiti kao %(new_filename)s?" + +#: ../src/gtkgui_helpers.py:727 +msgid "Save Image as..." +msgstr "Snimiti Sliku kao..." + +#: ../src/history_manager.py:61 +msgid "Cannot find history logs database" +msgstr "Nije moguće pronaći bazu podataka zabiljeÅ¡ki povijesti" + +#. holds jid +#: ../src/history_manager.py:104 +msgid "Contacts" +msgstr "Kontakti" + +#. holds time +#: ../src/history_manager.py:117 +#: ../src/history_manager.py:157 +#: ../src/history_window.py:85 +msgid "Date" +msgstr "Datum" + +#. holds nickname +#: ../src/history_manager.py:123 +#: ../src/history_manager.py:175 +msgid "Nickname" +msgstr "Nadimak" + +#. holds message +#: ../src/history_manager.py:131 +#: ../src/history_manager.py:163 +#: ../src/history_window.py:93 +msgid "Message" +msgstr "Poruka" + +#. holds subject +#: ../src/history_manager.py:138 +#: ../src/history_manager.py:169 +msgid "Subject" +msgstr "Tema" + +#: ../src/history_manager.py:183 +msgid "Do you want to clean up the database? (STRONGLY NOT RECOMMENDED IF GAJIM IS RUNNING)" +msgstr "Želite li oÄistiti bazu podataka? (NE PREPORUÄŒUJEMO UKOLIKO JE GAJIM POKRENUT)" + +#: ../src/history_manager.py:185 +msgid "" +"Normally allocated database size will not be freed, it will just become reusable. If you really want to reduce database filesize, click YES, else click NO.\n" +"\n" +"In case you click YES, please wait..." +msgstr "" +"UobiÄajeno, veliÄina prikupljenog prostora za bazu podataka neće biti osloboÄ‘ena, samo će postati ponovo koristiva. Ukoliko zaista želite smanjiti veliÄinu baze podataka, pritisnite Da, inaÄe pritisnite Ne.\n" +"\n" +"Ukoliko pritisnite Da, priÄekajte..." + +#: ../src/history_manager.py:391 +msgid "Exporting History Logs..." +msgstr "Izvozim ZabiljeÅ¡ke Povijesti..." + +#: ../src/history_manager.py:467 +#, python-format +msgid "%(who)s on %(time)s said: %(message)s\n" +msgstr "%(who)s %(time)s kaže: %(message)s\n" + +#: ../src/history_manager.py:467 +msgid "who" +msgstr "tko" + +#: ../src/history_manager.py:505 +msgid "Do you really want to delete logs of the selected contact?" +msgid_plural "Do you really want to delete logs of the selected contacts?" +msgstr[0] "Da li zaista želite ukloniti zabiljeÅ¡ke odabranog kontakta?" +msgstr[1] "Da li zaista želite ukloniti zabiljeÅ¡ke odabranih kontakata?" +msgstr[2] "" + +#: ../src/history_manager.py:509 +#: ../src/history_manager.py:545 +msgid "This is an irreversible operation." +msgstr "Ovo je nepovratna operacija." + +#: ../src/history_manager.py:542 +msgid "Do you really want to delete the selected message?" +msgid_plural "Do you really want to delete the selected messages?" +msgstr[0] "Da li zaista želite ukloniti odabranu poruku?" +msgstr[1] "Da li zaista želite ukloniti odabrane poruke?" +msgstr[2] "" + +#: ../src/history_window.py:102 +#: ../src/history_window.py:104 +#, python-format +msgid "Conversation History with %s" +msgstr "Povijest Razgovora sa %s" + +#: ../src/history_window.py:258 +#, python-format +msgid "%(nick)s is now %(status)s: %(status_msg)s" +msgstr "%(nick)s je trenutno %(status)s: %(status_msg)s" + +#: ../src/history_window.py:262 +#: ../src/notify.py:113 +#, python-format +msgid "%(nick)s is now %(status)s" +msgstr "%(nick)s je trenutno %(status)s" + +#: ../src/history_window.py:268 +#, python-format +msgid "Status is now: %(status)s: %(status_msg)s" +msgstr "Stauts je trenutno: %(status)s: %(status_msg)s" + +#: ../src/history_window.py:271 +#, python-format +msgid "Status is now: %(status)s" +msgstr "Status je trenutno: %(status)s" + +#: ../src/message_window.py:244 +msgid "Messages" +msgstr "Poruke" + +#: ../src/message_window.py:245 +#, python-format +msgid "%s - Gajim" +msgstr "%s - Gajim" + +#: ../src/notify.py:111 +#, python-format +msgid "%(nick)s Changed Status" +msgstr "%(nick)s je Promjenio Status" + +#: ../src/notify.py:121 +#, python-format +msgid "%(nickname)s Signed In" +msgstr "%(nickname)s Se Prijavio" + +#: ../src/notify.py:129 +#, python-format +msgid "%(nickname)s Signed Out" +msgstr "%(nickname)s Se Odjavio" + +#: ../src/notify.py:141 +#, python-format +msgid "New Single Message from %(nickname)s" +msgstr "Nova Jedna Poruka od %(nickname)s" + +#: ../src/notify.py:150 +#, python-format +msgid "New Private Message from room %s" +msgstr "Nova Privatna Poruka iz sobe %s" + +#: ../src/notify.py:151 +#, python-format +msgid "%(nickname)s: %(message)s" +msgstr "%(nickname)s: %(message)s" + +#: ../src/notify.py:157 +#, python-format +msgid "New Message from %(nickname)s" +msgstr "Nova poruka od %(nickname)s" + +#: ../src/roster_window.py:131 +msgid "Merged accounts" +msgstr "Spojeni raÄuni" + +#: ../src/roster_window.py:288 +#: ../src/common/helpers.py:39 +msgid "Observers" +msgstr "PosmatraÄi" + +#: ../src/roster_window.py:544 +#, python-format +msgid "You are already in room %s" +msgstr "Već ste u sobi %s" + +#: ../src/roster_window.py:548 +#: ../src/roster_window.py:2280 +msgid "You cannot join a room while you are invisible" +msgstr "Nije moguće pridruživanje sobi dok ste nevidljivi" + +#. the 'manage gc bookmarks' item is showed +#. below to avoid duplicate code +#. add +#: ../src/roster_window.py:748 +#, python-format +msgid "to %s account" +msgstr "na %s raÄun" + +#. disco +#: ../src/roster_window.py:755 +#, python-format +msgid "using %s account" +msgstr "koristeći %s raÄun" + +#. new chat +#. for chat_with +#. for single message +#: ../src/roster_window.py:763 +#: ../src/systray.py:193 +#: ../src/systray.py:198 +#, python-format +msgid "using account %s" +msgstr "koristeći raÄun %s" + +#. profile, avatar +#: ../src/roster_window.py:772 +#, python-format +msgid "of account %s" +msgstr "raÄuna %s" + +#: ../src/roster_window.py:831 +msgid "Manage Bookmarks..." +msgstr "Upravljanje Knjižnim Oznakama..." + +#: ../src/roster_window.py:855 +#, python-format +msgid "for account %s" +msgstr "za raÄun %s" + +#. History manager +#: ../src/roster_window.py:876 +msgid "History Manager" +msgstr "Upravitelj Povijesti" + +#: ../src/roster_window.py:885 +msgid "_Join New Room" +msgstr "_Pridruživanje Novoj Sobi" + +#: ../src/roster_window.py:1159 +#, python-format +msgid "Transport \"%s\" will be removed" +msgstr "Prijenos \"%s\" biti će uklonjen" + +#: ../src/roster_window.py:1159 +msgid "You will no longer be able to send and receive messages to contacts from this transport." +msgstr "ViÅ¡e nećete biti u mogućnosti razmjenjivati poruka sa kontaktima ovog prijenosa." + +#: ../src/roster_window.py:1201 +msgid "Assign OpenPGP Key" +msgstr "Dodjeli OpenPGP KljuÄ" + +#: ../src/roster_window.py:1202 +msgid "Select a key to apply to the contact" +msgstr "Odaberite kljuÄ za dodavanje kontaktu" + +#: ../src/roster_window.py:1358 +msgid "I would like to add you to my roster" +msgstr "Želio bih vas dodati na svoju listu kontakata" + +#: ../src/roster_window.py:1410 +msgid "Re_name" +msgstr "Pre_imenuj" + +#: ../src/roster_window.py:1441 +msgid "_Log on" +msgstr "_Prijava" + +#: ../src/roster_window.py:1450 +msgid "Log _off" +msgstr "_Odjava" + +#: ../src/roster_window.py:1545 +msgid "_Change Status Message" +msgstr "_Izmjena Statusne Poruke" + +#: ../src/roster_window.py:1621 +msgid "Authorization has been sent" +msgstr "Odobrenje je poslano" + +#: ../src/roster_window.py:1622 +#, python-format +msgid "Now \"%s\" will know your status." +msgstr "Sada će \"%s\" znati vaÅ¡ status." + +#: ../src/roster_window.py:1646 +msgid "Subscription request has been sent" +msgstr "Zahtjev za pretplatom je poslan" + +#: ../src/roster_window.py:1647 +#, python-format +msgid "If \"%s\" accepts this request you will know his or her status." +msgstr "Ako \"%s\" prihvati ovaj zahtjev znati će te njegov/njezin status." + +#: ../src/roster_window.py:1658 +msgid "Authorization has been removed" +msgstr "Odobrenje je uklonjeno" + +#: ../src/roster_window.py:1659 +#, python-format +msgid "Now \"%s\" will always see you as offline." +msgstr "Sada će vas \"%s\" uvijek vidjeti kao odspojenog." + +#: ../src/roster_window.py:1822 +#, python-format +msgid "Contact \"%s\" will be removed from your roster" +msgstr "Kontakt \"%s\" biti će uklonjen sa vaÅ¡e liste kontakata" + +#: ../src/roster_window.py:1826 +msgid "By removing this contact you also remove authorization resulting in him or her always seeing you as offline." +msgstr "Uklanjanjem ovog kontakta ujedno i uklanjate odobrenje Å¡to konaÄno znaÄi da će vas ta osoba uvijek vidjeti kao da ste odspojeni." + +#: ../src/roster_window.py:1830 +msgid "By removing this contact you also by default remove authorization resulting in him or her always seeing you as offline." +msgstr "Uklanjanjem ovog kontakta ujedno po pretpostavljenom uklanjate i odobrenje Å¡to konaÄno znaÄi da će vas ta osoba uvijek vidjeti kao da ste odspojeni." + +#: ../src/roster_window.py:1831 +msgid "I want this contact to know my status after removal" +msgstr "Želim da ovaj kontakt zna moj status nakon uklanjanja" + +#: ../src/roster_window.py:1899 +msgid "Passphrase Required" +msgstr "Potrebna Lozinka" + +#: ../src/roster_window.py:1900 +#, python-format +msgid "Enter GPG key passphrase for account %s." +msgstr "Unesite lozinku GPG kljuÄa za raÄun %s." + +#: ../src/roster_window.py:1905 +msgid "Save passphrase" +msgstr "SaÄuvati lozinku" + +#: ../src/roster_window.py:1913 +msgid "Wrong Passphrase" +msgstr "Kriva Lozinka" + +#: ../src/roster_window.py:1914 +msgid "Please retype your GPG passphrase or press Cancel." +msgstr "Molimo ponovo utipkajte svoju GPG lozinku ili pritisnite Odustani" + +#: ../src/roster_window.py:1963 +#: ../src/roster_window.py:2020 +msgid "You are participating in one or more group chats" +msgstr "Sudjelujete u jednom ili viÅ¡e grupnih razovora" + +#: ../src/roster_window.py:1964 +#: ../src/roster_window.py:2021 +msgid "Changing your status to invisible will result in disconnection from those group chats. Are you sure you want to go invisible?" +msgstr "Promjena vaÅ¡eg statusa u nevidljivo rezultirati će odspajanjem sa tih grupnih razgovora. Jeste li sigurni da želite ići na nevidljivo?" + +#: ../src/roster_window.py:1980 +msgid "No account available" +msgstr "Nema dostupnih raÄuna" + +#: ../src/roster_window.py:1981 +msgid "You must create an account before you can chat with other contacts." +msgstr "Morate stvoriti raÄun prije nego Å¡to možete razgovarati sa drugim kontaktima." + +#: ../src/roster_window.py:2452 +#: ../src/roster_window.py:2458 +msgid "You have unread messages" +msgstr "Imte neproÄitane poruke" + +#: ../src/roster_window.py:2453 +#: ../src/roster_window.py:2459 +msgid "Messages will only be available for reading them later if you have history enabled." +msgstr "Poruke će biti dostupne za Äitanje i kasnije ukoliko imate omogućenu povijest." + +#: ../src/roster_window.py:3231 +#, python-format +msgid "Drop %s in group %s" +msgstr "Spusti %s u grupu %s" + +#: ../src/roster_window.py:3238 +#, python-format +msgid "Make %s and %s metacontacts" +msgstr "UÄini %s i %s pseudokontaktima" + +#: ../src/roster_window.py:3408 +msgid "Change Status Message..." +msgstr "Promijeni Statusnu Poruku..." + +#: ../src/systray.py:154 +msgid "_Change Status Message..." +msgstr "_Promijeni Statusnu Poruku..." + +#: ../src/systray.py:231 +msgid "Hide this menu" +msgstr "Sakrij ovaj izbornik" + +#: ../src/systraywin32.py:261 +#: ../src/systraywin32.py:280 +#, python-format +msgid "Gajim - %d unread message" +msgid_plural "Gajim - %d unread messages" +msgstr[0] "Gajim - %d neproÄitana poruka" +msgstr[1] "Gajim - %d neproÄitanih poruka" +msgstr[2] "" + +#: ../src/tooltips.py:326 +#, python-format +msgid " %d unread message" +msgid_plural " %d unread messages" +msgstr[0] "%d neproÄitana poruka" +msgstr[1] "%d neproÄitanih poruka" + +#: ../src/tooltips.py:332 +#, python-format +msgid " %d unread single message" +msgid_plural " %d unread single messages" +msgstr[0] "%d neproÄitana jedna poruka" +msgstr[1] "%d neproÄitanih jednih poruka" + +#: ../src/tooltips.py:338 +#, python-format +msgid " %d unread group chat message" +msgid_plural " %d unread group chat messages" +msgstr[0] "%d neproÄitana poruka grupnih razgovora" +msgstr[1] "%d neproÄitanih poruka grupnih razgovora" + +#: ../src/tooltips.py:344 +#, python-format +msgid " %d unread private message" +msgid_plural " %d unread private messages" +msgstr[0] "Gajim - %d neproÄitana privatna poruka" +msgstr[1] "%d neproÄitanih privatnih poruka" + +#: ../src/tooltips.py:359 +#: ../src/tooltips.py:361 +#, python-format +msgid "Gajim - %s" +msgstr "Gajim - %s" + +#: ../src/tooltips.py:395 +msgid "Role: " +msgstr "Uloga: " + +#: ../src/tooltips.py:396 +msgid "Affiliation: " +msgstr "Pripadnost: " + +#: ../src/tooltips.py:398 +#: ../src/tooltips.py:537 +msgid "Resource: " +msgstr "Resurs: " + +#: ../src/tooltips.py:407 +#: ../src/tooltips.py:540 +#: ../src/tooltips.py:565 +#: ../src/tooltips.py:676 +msgid "Status: " +msgstr "Status: " + +#: ../src/tooltips.py:514 +msgid "Subscription: " +msgstr "Pretplata: " + +#: ../src/tooltips.py:523 +msgid "OpenPGP: " +msgstr "OpenPGP: " + +#: ../src/tooltips.py:570 +#, python-format +msgid "Last status on %s" +msgstr "Zadnji status na %s" + +#: ../src/tooltips.py:572 +#, python-format +msgid "Since %s" +msgstr "Od %s" + +#: ../src/tooltips.py:632 +msgid "Download" +msgstr "Skidanje" + +#: ../src/tooltips.py:638 +msgid "Upload" +msgstr "Podizanje" + +#: ../src/tooltips.py:645 +msgid "Type: " +msgstr "Tip: " + +#: ../src/tooltips.py:651 +msgid "Transferred: " +msgstr "PreneÅ¡eno: " + +#: ../src/tooltips.py:654 +#: ../src/tooltips.py:675 +msgid "Not started" +msgstr "Nije poÄeto" + +#: ../src/tooltips.py:658 +msgid "Stopped" +msgstr "Zaustavljeno" + +#: ../src/tooltips.py:660 +#: ../src/tooltips.py:663 +msgid "Completed" +msgstr "ZavrÅ¡eno" + +#. stalled is not paused. it is like 'frozen' it stopped alone +#: ../src/tooltips.py:671 +msgid "Stalled" +msgstr "Zaustavljeno" + +#: ../src/tooltips.py:673 +msgid "Transferring" +msgstr "Prenosim" + +#: ../src/tooltips.py:705 +msgid "This service has not yet responded with detailed information" +msgstr "Ovaj servis nije joÅ¡ pružio detaljnije informacije" + +#: ../src/tooltips.py:708 +msgid "" +"This service could not respond with detailed information.\n" +"It is most likely legacy or broken" +msgstr "" +"Ova usluga nije mogla odgovoriti sa detaljnim informacijama.\n" +"Najvjerojatnije je zastarjela ili neispravna" + +#. keep identation +#: ../src/vcard.py:188 +msgid "Could not load image" +msgstr "Nemogu uÄitati sliku" + +#: ../src/vcard.py:289 +msgid "?Client:Unknown" +msgstr "?Klijent:Nepoznat" + +#: ../src/vcard.py:291 +msgid "?OS:Unknown" +msgstr "?OS:Nepoznat" + +#: ../src/vcard.py:308 +#, python-format +msgid "since %s" +msgstr "od %s" + +#: ../src/vcard.py:332 +msgid "This contact is interested in your presence information, but you are not interested in his/her presence" +msgstr "Ovaj kontakt je zainteresiran za informacije o vaÅ¡em prisutstvu, ali vas ne zanimaju informacije o njegovom/njenom prisustvu" + +#: ../src/vcard.py:334 +msgid "You are interested in the contact's presence information, but he/she is not interested in yours" +msgstr "Vi ste zainteresirani za informacije o prisustvu nekog kontakta, ali nju/njega ne interesira vaÅ¡e prisutstvo" + +#: ../src/vcard.py:336 +msgid "You and the contact are interested in each other's presence information" +msgstr "Vi i vaÅ¡ kontakt ste zainteresirani za informacije o prisustvu jedno drugog" + +#. None +#: ../src/vcard.py:338 +msgid "You are not interested in the contact's presence, and neither he/she is interested in yours" +msgstr "Ne interesira vas prisutnost kontakta, niti vaÅ¡a prisutnost zanima njega/nju" + +#: ../src/vcard.py:347 +msgid "You are waiting contact's answer about your subscription request" +msgstr "ÄŒekate odgovor kontakta o vaÅ¡em zahtjevu za pretplatom" + +#: ../src/vcard.py:359 +#: ../src/vcard.py:382 +msgid " resource with priority " +msgstr " resurs s prioritetom " + +#: ../src/vcard.py:458 +msgid "Without a connection you can not publish your contact information." +msgstr "Bez veze ne možete objaviti informacije o sebi" + +#: ../src/vcard.py:491 +msgid "Without a connection, you can not get your contact information." +msgstr "Bez veze ne možete dobiti informacije o kontaktu." + +#: ../src/vcard.py:495 +msgid "Personal details" +msgstr "Osobni detalji" + +#: ../src/common/check_paths.py:35 +msgid "creating logs database" +msgstr "kreiram bazu zabiljeÅ¡ki" + +#: ../src/common/check_paths.py:82 +#: ../src/common/check_paths.py:93 +#: ../src/common/check_paths.py:100 +#, python-format +msgid "%s is file but it should be a directory" +msgstr "%s je datoteka ali bi trebao biti direktorij" + +#: ../src/common/check_paths.py:83 +#: ../src/common/check_paths.py:94 +#: ../src/common/check_paths.py:101 +#: ../src/common/check_paths.py:109 +msgid "Gajim will now exit" +msgstr "Gajim će se sad iskljuÄiti" + +#: ../src/common/check_paths.py:108 +#, python-format +msgid "%s is directory but should be file" +msgstr "%s je direktorij ali bi trebao biti datoteka" + +#: ../src/common/check_paths.py:124 +#, python-format +msgid "creating %s directory" +msgstr "kreiram %s direktorij" + +#: ../src/common/exceptions.py:32 +msgid "pysqlite2 (aka python-pysqlite2) dependency is missing. Exiting..." +msgstr "pysqlite2 (poznat kao python-pysqlite2) nedostaje. Izlazim..." + +#: ../src/common/exceptions.py:40 +msgid "Service not available: Gajim is not running, or remote_control is False" +msgstr "Servis nije dostupan: Gajim nije pokrenut ili je remote_control Neistinito" + +#: ../src/common/exceptions.py:48 +msgid "D-Bus is not present on this machine or python module is missing" +msgstr "D-Bus nije namjeÅ¡ten na ovom sustavu ili nema python modula." + +#: ../src/common/exceptions.py:56 +msgid "" +"Session bus is not available.\n" +"Try reading http://trac.gajim.org/wiki/GajimDBus" +msgstr "" +"Sesijska sabirnica nije dostupna.\n" +"PokuÅ¡ajte proÄitati http:/trac.gajim.org/wiki/GajimDBus" + +#: ../src/common/config.py:51 +msgid "Use DBus and Notification-Daemon to show notifications" +msgstr "Koristi DBus i ObavjeÅ¡tajni-Demon za prikazivanje obavijesti" + +#: ../src/common/config.py:55 +msgid "Time in minutes, after which your status changes to away." +msgstr "Vrijeme u minutama, nako kojega će se vaÅ¡ status promijeniti u odsutan." + +#: ../src/common/config.py:56 +msgid "Away as a result of being idle" +msgstr "Odsutan, kao posljedica mirovanja" + +#: ../src/common/config.py:58 +msgid "Time in minutes, after which your status changes to not available." +msgstr "Vrijeme u minutama, nakon kojega će se vaÅ¡ status promijenti u nije dostupan." + +#: ../src/common/config.py:59 +msgid "Not available as a result of being idle" +msgstr "Nije dostupan, kao posljedica mirovanja." + +#: ../src/common/config.py:77 +msgid "List (space separated) of rows (accounts and groups) that are collapsed" +msgstr "Lista (odvojena razmacima) redova (raÄuna i grupa) koji su otvoreni" + +#: ../src/common/config.py:83 +msgid "" +"'always' - print time for every message.\n" +"'sometimes' - print time every print_ichat_every_foo_minutes minute.\n" +"'never' - never print time." +msgstr "" +"'uvijek' - ispisuj vrijeme za svaku poruku.\n" +"'ponekad' - ispisuj vrijeme svakih print_ichat_every_foo_minutes minuta.\n" +"'nikada' - nikada ne ispisuj vrijeme." + +#: ../src/common/config.py:84 +msgid "Value of fuzziness from 1 to 4 or 0 to disable fuzzyclock. 1 is the most precise clock, 4 the less precise one." +msgstr "Vrijednost nejasnoće od 1 do 4 ili 0 za onemogućavanje nejasnog sata. 1 je najprecizniji sat, 4 najneprecizniji." + +#: ../src/common/config.py:87 +msgid "Treat * / _ pairs as possible formatting characters." +msgstr "Koristi * / _ parove kao znakove za formatiranje." + +#: ../src/common/config.py:88 +msgid "If True, do not remove */_ . So *abc* will be bold but with * * not removed." +msgstr "Ako je Istinito, nemoj odstraniti */_ . Tako će *abc* biti podebljano, ali omeÄ‘eno sa * *." + +#: ../src/common/config.py:98 +msgid "Character to add after nickname when using nick completion (tab) in group chat" +msgstr "Znak za dodavanje nakon nadimka pri koriÅ¡tenju zavrÅ¡avanja nadimka (tipka tab) u grupnom razgovoru" + +#: ../src/common/config.py:99 +msgid "Character to propose to add after desired nickname when desired nickname is used by someone else in group chat" +msgstr "Znak koji treba pokuÅ¡ati dodati željenom nadimku ukoliko netko u grupnom razgovoru već koristi željeni nadimak" + +#: ../src/common/config.py:131 +msgid "Add * and [n] in roster title?" +msgstr "Dodaj * i [n] u naslov liste?" + +#: ../src/common/config.py:132 +msgid "How many lines to remember from previous conversation when a chat tab/window is reopened." +msgstr "Koliko će se linija pamtiti iz proÅ¡lih razgovora kada se prozor/tab razgovora ponovno otvori." + +#: ../src/common/config.py:133 +msgid "How many minutes should last lines from previous conversation last." +msgstr "Koliko minuta trebaju trajati linije iz proÅ¡log razgovora." + +#: ../src/common/config.py:134 +msgid "Send message on Ctrl+Enter and with Enter make new line (Mirabilis ICQ Client default behaviour)." +msgstr "PoÅ¡alji poruku sa Ctrl+Enter i sa Enter napravi novu liniju. (Pretpostavljeno ponaÅ¡anje Mirabilis ICQ klijenta)" + +#: ../src/common/config.py:136 +msgid "How many lines to store for Ctrl+KeyUP." +msgstr "Koliko linija se sprema za Ctrl+TipkaGORE" + +#: ../src/common/config.py:139 +#, python-format +msgid "Either custom url with %s in it where %s is the word/phrase or 'WIKTIONARY' which means use wiktionary." +msgstr "Ili je osobni url sa %s u njemu gdje je %s rijeÄ ili fraza ili 'WIKTIONARY' sta znaci da koristi wiktionary." + +#: ../src/common/config.py:142 +msgid "If checked, Gajim can be controlled remotely using gajim-remote." +msgstr "Ako je oznaÄeno, Gajim se može kontrolirati preko gajim-remote-a." + +#: ../src/common/config.py:145 +msgid "When not printing time for every message (print_time==sometimes), print it every x minutes" +msgstr "Ako se ne ispisuje vrijeme za svaku poruku (print_time==ponekad), ispisati ga svakih x minuta" + +#: ../src/common/config.py:146 +msgid "Ask before closing a group chat tab/window." +msgstr "Pitaj prije zatvaranja taba/prozora razgovora grupe." + +#: ../src/common/config.py:147 +msgid "Always ask before closing group chat tab/window in this space separated list of room jids." +msgstr "Uvijek pitaj prije zatvaranja taba/prozora razgovora grupe u ovoj razmakom odjeljenoj listi JID konatakta." + +#: ../src/common/config.py:148 +msgid "Never ask before closing group chat tab/window in this space separated list of room jids." +msgstr "Nikad ne pitaj prije zatvaranja taba/prozora razgovora grupe u ovoj razmacima podjeljenoj listi JID kontakata." + +#: ../src/common/config.py:151 +msgid "Overrides the host we send for File Transfer in case of address translation/port forwarding." +msgstr "Prepisuje poslužitelja kojega koristimo za prijenos datoteka u sluÄaju prosljeÄ‘ivanja" + +#: ../src/common/config.py:153 +msgid "IEC standard says KiB = 1024 bytes, KB = 1000 bytes." +msgstr "IEC standard definira KiB = 1024 bajtova, KB = 1000 bajtova" + +#: ../src/common/config.py:161 +msgid "Show tab when only one conversation?" +msgstr "Prikaži tab ako je otvoren samo jedan razgovor?" + +#: ../src/common/config.py:162 +msgid "Show tabbed notebook border in chat windows?" +msgstr "Prikaži granicu notesa sa tabovima u prozorima razgovora?" + +#: ../src/common/config.py:163 +msgid "Show close button in tab?" +msgstr "Prikaži dugme za zatvaranje u tabu?" + +#: ../src/common/config.py:176 +msgid "A semicolon-separated list of words that will be highlighted in multi-user chat." +msgstr "Lista rijeÄi podjeljena toÄka-zarezom će biti oznaÄena u razgovoru viÅ¡e korisnika." + +#: ../src/common/config.py:177 +msgid "If True, quits Gajim when X button of Window Manager is clicked. This setting is taken into account only if trayicon is used." +msgstr "Ako je Istinito, Gajim se zavrÅ¡ava kad je pritisnuto X dugme. Ova postavka je upotrebljena samo ako je trayicon u upotrebi." + +#: ../src/common/config.py:178 +msgid "If True, Gajim registers for xmpp:// on each startup." +msgstr "Ako je Istinito, Gajim registrira za xmpp:// pri svakom pokretanju." + +#: ../src/common/config.py:179 +msgid "If True, Gajim will display an icon on each tab containing unread messages. Depending on the theme, this icon may be animated." +msgstr "Ako je Istinito, Gajim će prikazvati ikonu na svakom tabu koji sadrži neproÄitane poruke. Ovisno o temi, ikona može biti i animirana." + +#: ../src/common/config.py:180 +msgid "If True, Gajim will display the status message, if not empty, for every contact under the contact name in roster window" +msgstr "Ako je Istinito, Gajim će prikazivati statusnu poruku, ako nije prazna, za svaki kontakt pod imenom kontakta na listi." + +#: ../src/common/config.py:182 +msgid "If True, Gajim will ask for avatar each contact that did not have an avatar last time or has one cached that is too old." +msgstr "Ako je Istinito, će Gajim poslati upit za avatar svaki kontakt, koji nije imao avatar ili je onaj u memoriji prestar" + +#: ../src/common/config.py:183 +msgid "If False, Gajim will no longer print status line in chats when a contact changes his or her status and/or his or her status message." +msgstr "Ako je Neistinito, viÅ¡e nećete vidjeti statusnu poruku u razgovorima, kada kontakt promjeni svoj status i/ili statusnu poruku." + +#: ../src/common/config.py:184 +msgid "can be \"none\", \"all\" or \"in_and_out\". If \"none\", Gajim will no longer print status line in groupchats when a member changes his or her status and/or his or her status message. If \"all\" Gajim will print all status messages. If \"in_and_out\", gajim will only print FOO enters/leaves room" +msgstr "može biti \"niÅ¡ta\", \"sve\" ili \"ulaz_i_izlaz\". Ako je \"niÅ¡ta\", Gajim viÅ¡e neće ispisivati statusnu liniju u grupnim razgovorima kada Älan promjeni svoj status ili izmjeni statusnu poruku. Ako je \"sve\" Gajim će prikazivati sve statusne poruke. Ako je \"ulaz_i_izlaz\" Gajim će prikazivati samo poruke tipa FOO je uÅ¡ao/izaÅ¡ao u/iz sobe" + +#: ../src/common/config.py:187 +msgid "Don't show avatar for the transport itself." +msgstr "Ne prikazuj avatar za sam transport." + +#: ../src/common/config.py:189 +msgid "If True and installed GTK+ and PyGTK versions are at least 2.8, make the window flash (the default behaviour in most Window Managers) when holding pending events." +msgstr "Ako je Istinito, i instalirane verzije GTK+ i PyGTK su barem 2.8, neka prozor bljeska (pretpostavljeno ponaÅ¡anje u većini Upravitelja Prozorima) pri novim dogaÄ‘ajima." + +#: ../src/common/config.py:191 +msgid "Jabberd1.4 does not like sha info when one join a password protected room. Turn this option to False to stop sending sha info in groupchat presences" +msgstr "Jabberd1.4 ne voli sha informacije kada netko uÄ‘e u sobu zaÅ¡tićenu lozinkom. IskljuÄite ovu opciju da prestanete slati sha informacije u obavjestima o prisutnosti u grupnim razgovorima" + +#. always, never, peracct, pertype should not be translated +#: ../src/common/config.py:194 +msgid "" +"Controls the window where new messages are placed.\n" +"'always' - All messages are sent to a single window.\n" +"'never' - All messages get their own window.\n" +"'peracct' - Messages for each account are sent to a specific window.\n" +"'pertype' - Each message type (e.g., chats vs. groupchats) are sent to a specific window. Note, changing this option requires restarting Gajim before the changes will take effect" +msgstr "" +"'uvijek' - Sve poruke su poslane u isti prozor.\n" +"'nikad' - Svaka poruka dobiva svoj prozor.\n" +"'zaracun' - Poruke za svaki raÄun su poslane u svoj prozor.\n" +"'zatip' - Svaki tip poruke (npr., razgovori i grupni razgovori) je poslan u svoj prozor. Promjena ove opcije zahtijeva ponovno pokretanje Gajima" + +#: ../src/common/config.py:195 +msgid "If False, you will no longer see the avatar in the chat window" +msgstr "Ako je Neistinito, nećete viÅ¡e vidjeti avatar u prozoru razgovora" + +#: ../src/common/config.py:196 +msgid "If True, pressing the escape key closes a tab/window" +msgstr "Ako je Istinito, pritisak na 'esc' tipku zatvara tab/prozor" + +#: ../src/common/config.py:197 +msgid "Hides the buttons in group chat window" +msgstr "Sakrije dugmad u prozoru grupnog razgovora" + +#: ../src/common/config.py:198 +msgid "Hides the buttons in two persons chat window" +msgstr "Sakrije dugme u prozoru razgovora dviju osoba" + +#: ../src/common/config.py:199 +msgid "Hides the banner in a group chat window" +msgstr "Sakrije baner u prozoru grupnog razgovora" + +#: ../src/common/config.py:200 +msgid "Hides the banner in two persons chat window" +msgstr "Sakrije baner u prozoru razgovora dviju osoba" + +#: ../src/common/config.py:201 +msgid "Hides the room occupants list in groupchat window" +msgstr "Sakrije listu uÄesnika u prozoru grupnog razgovora" + +#: ../src/common/config.py:202 +msgid "Merge consecutive nickname in chat window" +msgstr "Spajanje toka po nadimcima u prozoru razgovora" + +#: ../src/common/config.py:203 +msgid "Indentation when using merge consecutive nickame" +msgstr "UvlaÄenje pri koriÅ¡tenju spajanja toka po nadimcima" + +#: ../src/common/config.py:204 +msgid "List of colors that will be used to color nicknames in groupchats" +msgstr "Lista boja koje će biti koriÅ¡tene za bojanje nadimaka u grupnim razgovorima" + +#. yes, no, ask +#: ../src/common/config.py:237 +msgid "Jabberd2 workaround" +msgstr "Jabberd2 workaround" + +#: ../src/common/config.py:241 +msgid "If checked, Gajim will use your IP and proxies defined in file_transfer_proxies option for file transfer." +msgstr "Ako je oznaÄeno, Gajim Äe koristiti vaÅ¡u IP adresu i proxy koji je definiran u file_transfer_proxies opcijama za prijenos." + +#: ../src/common/config.py:297 +msgid "Sleeping" +msgstr "Spavam" + +#: ../src/common/config.py:298 +msgid "Back soon" +msgstr "Vraćam se ubrzo" + +#: ../src/common/config.py:298 +msgid "Back in some minutes." +msgstr "Vraćam se za nekoliko minuta." + +#: ../src/common/config.py:299 +msgid "Eating" +msgstr "Jedem" + +#: ../src/common/config.py:299 +msgid "I'm eating, so leave me a message." +msgstr "Jedem, ostavite mi poruku." + +#: ../src/common/config.py:300 +msgid "Movie" +msgstr "Film" + +#: ../src/common/config.py:300 +msgid "I'm watching a movie." +msgstr "Gledam film." + +#: ../src/common/config.py:301 +msgid "Working" +msgstr "Radim." + +#: ../src/common/config.py:301 +msgid "I'm working." +msgstr "Radim." + +#: ../src/common/config.py:302 +msgid "Phone" +msgstr "Telefon" + +#: ../src/common/config.py:302 +msgid "I'm on the phone." +msgstr "Telefoniram." + +#: ../src/common/config.py:303 +msgid "Out" +msgstr "Vani" + +#: ../src/common/config.py:303 +msgid "I'm out enjoying life" +msgstr "Vani uživam život" + +#: ../src/common/config.py:312 +msgid "Sound to play when a MUC message contains one of the words in muc_highlight_words, or when a MUC message contains your nickname." +msgstr "Zvuk koji će biti puÅ¡ten kad neka MUC poruka sadrži neku rijeÄ iz muc_highlight_words, ili kad neka MUC poruka sadrži vaÅ¡ nadimak." + +#: ../src/common/config.py:313 +msgid "Sound to play when any MUC message arrives. (This setting is taken into account only if notify_on_all_muc_messages is True)" +msgstr "Zvuk koji će biti puÅ¡ten kad je primljena neka MUC poruka. (Ova postavka je postavljena samo ako je notify_on_all_muc_messages Istinito)" + +#: ../src/common/config.py:321 +#: ../src/common/optparser.py:185 +msgid "green" +msgstr "zelena" + +#: ../src/common/config.py:325 +#: ../src/common/optparser.py:171 +msgid "grocery" +msgstr "namirnice" + +#: ../src/common/config.py:329 +msgid "human" +msgstr "ljudska" + +#: ../src/common/config.py:333 +msgid "marine" +msgstr "morska" + +#: ../src/common/connection.py:172 +#, python-format +msgid "Connection with account \"%s\" has been lost" +msgstr "Veza sa raÄunom \"%s\" je izgubljena" + +#: ../src/common/connection.py:173 +msgid "To continue sending and receiving messages, you will need to reconnect." +msgstr "Ako želite nastaviti sa slanjem i primanjem poruka, morati će te se ponovno spojiti." + +#: ../src/common/connection.py:185 +#: ../src/common/connection.py:211 +#, python-format +msgid "Transport %s answered wrongly to register request." +msgstr "Prijenos %s je krivo odgovorio na poziv za registraciju." + +#. wrong answer +#: ../src/common/connection.py:210 +msgid "Invalid answer" +msgstr "Nepravilan odgovor" + +#: ../src/common/connection.py:397 +#: ../src/common/connection.py:433 +#: ../src/common/connection.py:857 +#, python-format +msgid "Could not connect to \"%s\"" +msgstr "Nije moguća veza sa \"%s\"" + +#: ../src/common/connection.py:411 +#, python-format +msgid "Connected to server %s:%s with %s" +msgstr "Povezan na poslužitelj %s:%s sa %s" + +#: ../src/common/connection.py:434 +msgid "Check your connection or try again later" +msgstr "Provjerite vaÅ¡u vezu ili pokuÅ¡ajte ponovno kasnije" + +#: ../src/common/connection.py:459 +#, python-format +msgid "Authentication failed with \"%s\"" +msgstr "Autentifikacija sa \"%s\" nije uspjela" + +#: ../src/common/connection.py:460 +msgid "Please check your login and password for correctness." +msgstr "Molimo vas da provjerite korisniÄko ime i lozinku za greÅ¡ke." + +#. We didn't set a passphrase +#: ../src/common/connection.py:573 +msgid "OpenPGP passphrase was not given" +msgstr "Lozinka za OpenPGP nije uneÅ¡ena" + +#. %s is the account name here +#: ../src/common/connection.py:575 +#, python-format +msgid "You will be connected to %s without OpenPGP." +msgstr "Biti će te spojeni na %s bez OpenPGP-a." + +#. do not show I'm invisible! +#: ../src/common/connection.py:612 +msgid "invisible" +msgstr "nevidljiv" + +#: ../src/common/connection.py:613 +msgid "offline" +msgstr "odspojen" + +#: ../src/common/connection.py:614 +#, python-format +msgid "I'm %s" +msgstr "Ja sam %s" + +#. we're not english +#: ../src/common/connection.py:699 +msgid "[This message is encrypted]" +msgstr "[Ova poruka je kriptirana]" + +#: ../src/common/connection.py:742 +#, python-format +msgid "" +"Subject: %s\n" +"%s" +msgstr "" +"Tema: %s\n" +"%s" + +#: ../src/common/connection.py:795 +#: ../src/common/connection_handlers.py:1511 +msgid "I would like to add you to my roster." +msgstr "Želio bih te dodati na moju listu kontakata." + +#: ../src/common/connection_handlers.py:49 +msgid "Unable to load idle module" +msgstr "Nije moguće uÄitati modul idle" + +#: ../src/common/connection_handlers.py:581 +#, python-format +msgid "Registration information for transport %s has not arrived in time" +msgstr "Registracijske informacije za transport %s nisu doÅ¡le na vrijeme" + +#. password required to join +#. we are banned +#. room does not exist +#: ../src/common/connection_handlers.py:1450 +#: ../src/common/connection_handlers.py:1453 +#: ../src/common/connection_handlers.py:1456 +#: ../src/common/connection_handlers.py:1459 +#: ../src/common/connection_handlers.py:1462 +#: ../src/common/connection_handlers.py:1465 +#: ../src/common/connection_handlers.py:1473 +msgid "Unable to join room" +msgstr "Nije moguće pridružiti se sobi" + +#: ../src/common/connection_handlers.py:1451 +msgid "A password is required to join this room." +msgstr "Potrebna je lozinka za pridruživanje ovoj sobi." + +#: ../src/common/connection_handlers.py:1454 +msgid "You are banned from this room." +msgstr "Zabranjen vam je pristup ovoj sobi." + +#: ../src/common/connection_handlers.py:1457 +msgid "Such room does not exist." +msgstr "Takva soba ne postoji." + +#: ../src/common/connection_handlers.py:1460 +msgid "Room creation is restricted." +msgstr "Stvaranje soba je ograniÄeno." + +#: ../src/common/connection_handlers.py:1463 +msgid "Your registered nickname must be used." +msgstr "Morate koristiti vaÅ¡ registrirani nadimak." + +#: ../src/common/connection_handlers.py:1466 +msgid "You are not in the members list." +msgstr "Niste u listi Älanova." + +#: ../src/common/connection_handlers.py:1474 +msgid "" +"Your desired nickname is in use or registered by another occupant.\n" +"Please specify another nickname below:" +msgstr "" +"VaÅ¡ željeni nadimak se trenutno koristi ili je registriran od strane nekog od uÄesnika.\n" +"Molimo niže odredite drugi nadimak:" + +#. BE CAREFUL: no con.updateRosterItem() in a callback +#: ../src/common/connection_handlers.py:1519 +#, python-format +msgid "we are now subscribed to %s" +msgstr "sada smo pretplaćeni na %s" + +#: ../src/common/connection_handlers.py:1521 +msgid "unsubscribe request from %s" +msgstr "Zahtjev za ukidanjem pretplate od %s" + +#: ../src/common/connection_handlers.py:1523 +#, python-format +msgid "we are now unsubscribed from %s" +msgstr "sada smo ukinuli pretplatu za %s" + +#: ../src/common/connection_handlers.py:1680 +#, python-format +msgid "JID %s is not RFC compliant. It will not be added to your roster. Use roster management tools such as http://jru.jabberstudio.org/ to remove it" +msgstr "JID %s ne poÅ¡tuje RFC pravila. Neće biti dodan na vaÅ¡u listu kontakata. Upotrijebite alate za upravljanje listom kontakata kao Å¡to je http://jru.jabberstudio.org/ za uklanjanje" + +#: ../src/common/helpers.py:100 +msgid "Invalid character in username." +msgstr "Neispravan znak u korisniÄkom imenu." + +#: ../src/common/helpers.py:105 +msgid "Server address required." +msgstr "Potrebna je adresa poslužitelja." + +#: ../src/common/helpers.py:110 +msgid "Invalid character in hostname." +msgstr "Neispravan znak u imenu raÄunala." + +#: ../src/common/helpers.py:116 +msgid "Invalid character in resource." +msgstr "Neispravan znak u resursu." + +#. GiB means gibibyte +#: ../src/common/helpers.py:156 +#, python-format +msgid "%s GiB" +msgstr "%s GiB" + +#. GB means gigabyte +#: ../src/common/helpers.py:159 +#, python-format +msgid "%s GB" +msgstr "%s GB" + +#. MiB means mibibyte +#: ../src/common/helpers.py:163 +#, python-format +msgid "%s MiB" +msgstr "%s MiB" + +#. MB means megabyte +#: ../src/common/helpers.py:166 +#, python-format +msgid "%s MB" +msgstr "%s MB" + +#. KiB means kibibyte +#: ../src/common/helpers.py:170 +#, python-format +msgid "%s KiB" +msgstr "%s KiB" + +#. KB means kilo bytes +#: ../src/common/helpers.py:173 +#, python-format +msgid "%s KB" +msgstr "%s KB" + +#. B means bytes +#: ../src/common/helpers.py:176 +#, python-format +msgid "%s B" +msgstr "%s B" + +#: ../src/common/helpers.py:205 +msgid "_Busy" +msgstr "_Zaposlen" + +#: ../src/common/helpers.py:207 +msgid "Busy" +msgstr "Zaposlen" + +#: ../src/common/helpers.py:210 +msgid "_Not Available" +msgstr "_Nedostupan" + +#: ../src/common/helpers.py:212 +msgid "Not Available" +msgstr "Nedostupan" + +#: ../src/common/helpers.py:215 +msgid "_Free for Chat" +msgstr "_Slobodan za razgovor" + +#: ../src/common/helpers.py:217 +msgid "Free for Chat" +msgstr "Slobodan za razgovor" + +#: ../src/common/helpers.py:220 +msgid "_Available" +msgstr "_Dostupan" + +#: ../src/common/helpers.py:222 +msgid "Available" +msgstr "Dostupan" + +#: ../src/common/helpers.py:224 +msgid "Connecting" +msgstr "Povezujem" + +#: ../src/common/helpers.py:227 +msgid "A_way" +msgstr "O_dsutan" + +#: ../src/common/helpers.py:229 +msgid "Away" +msgstr "Odsutan" + +#: ../src/common/helpers.py:232 +msgid "_Offline" +msgstr "_Odspojen" + +#: ../src/common/helpers.py:234 +msgid "Offline" +msgstr "Odspojen" + +#: ../src/common/helpers.py:237 +msgid "_Invisible" +msgstr "_Nevidljiv" + +#: ../src/common/helpers.py:243 +msgid "?contact has status:Unknown" +msgstr "?kontakt ima status:Nepoznat" + +#: ../src/common/helpers.py:245 +msgid "?contact has status:Has errors" +msgstr "?kontakt ima status:Ima greÅ¡ke" + +#: ../src/common/helpers.py:250 +msgid "?Subscription we already have:None" +msgstr "?Pretplata koju već imamo:NiÅ¡ta" + +#: ../src/common/helpers.py:252 +msgid "To" +msgstr "Za" + +#: ../src/common/helpers.py:254 +msgid "From" +msgstr "Od" + +#: ../src/common/helpers.py:256 +msgid "Both" +msgstr "Oboje" + +#: ../src/common/helpers.py:264 +msgid "?Ask (for Subscription):None" +msgstr "?Pitaj (za Pretplatu):NiÅ¡ta" + +#: ../src/common/helpers.py:266 +msgid "Subscribe" +msgstr "Pretplatite se" + +#: ../src/common/helpers.py:275 +msgid "?Group Chat Contact Role:None" +msgstr "?Uloga Kontakta u Grupnom Razgvoru:Nikakva" + +#: ../src/common/helpers.py:278 +msgid "Moderators" +msgstr "Moderatori" + +#: ../src/common/helpers.py:280 +msgid "Moderator" +msgstr "Moderator" + +#: ../src/common/helpers.py:283 +msgid "Participants" +msgstr "Sudionici" + +#: ../src/common/helpers.py:285 +msgid "Participant" +msgstr "Sudionik" + +#: ../src/common/helpers.py:288 +msgid "Visitors" +msgstr "Posjetitelji" + +#: ../src/common/helpers.py:290 +msgid "Visitor" +msgstr "Posjetitelj" + +#: ../src/common/helpers.py:326 +msgid "is paying attention to the conversation" +msgstr "obraća pažnju na razgovor" + +#: ../src/common/helpers.py:328 +msgid "is doing something else" +msgstr "radi neÅ¡to drugo" + +#: ../src/common/helpers.py:330 +msgid "is composing a message..." +msgstr "piÅ¡e poruku..." + +#. paused means he or she was compoing but has stopped for a while +#: ../src/common/helpers.py:333 +msgid "paused composing a message" +msgstr "stanka pri pisanju poruke" + +#: ../src/common/helpers.py:335 +msgid "has closed the chat window or tab" +msgstr "je zatvorio/zatvorila prozor za razgovor" + +#. we talk about a file +#: ../src/common/optparser.py:60 +#, python-format +msgid "error: cannot open %s for reading" +msgstr "greÅ¡ka: nemogu otvoriti %s za Äitanje" + +#: ../src/common/optparser.py:171 +msgid "gtk+" +msgstr "gtk+" + +#: ../src/common/optparser.py:180 +#: ../src/common/optparser.py:181 +msgid "cyan" +msgstr "cijan" + +#~ msgid "Automatically authorize contact" +#~ msgstr "Automatski autoriziraj kontakt" +#~ msgid "Send File" +#~ msgstr "PoÅ¡alji Datoteku" +#~ msgid "Underline" +#~ msgstr "Podcrtano" + + diff --git a/po/it.po b/po/it.po index 2d18de201..1441cea88 100644 --- a/po/it.po +++ b/po/it.po @@ -5,9 +5,12 @@ # Mauro Brenna , 2005. # Andrea Ratti , 2005. # Matteo Dell'Amico , 2005, 2006. +#: ../src/gajim-remote.py:218 ../src/gajim-remote.py:225 msgid "" msgstr "" "Project-Id-Version: Gajim 2\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2006-07-04 00:03+0200\n" "PO-Revision-Date: 2006-04-28 14:06+0300\n" "Last-Translator: Matteo Dell'Amico \n" "Language-Team: Italian\n" @@ -28,30 +31,2105 @@ msgstr "Messaggistica istantanea Gajim" msgid "Jabber IM Client" msgstr "Client IM Jabber" -#: ../src/advanced.py:71 +#: ../data/glade/account_context_menu.glade.h:1 +msgid "Send Single _Message..." +msgstr "Invia _messaggio singolo..." + +#: ../data/glade/account_context_menu.glade.h:2 +msgid "_Add Contact..." +msgstr "_Aggiungi Contatto..." + +#: ../data/glade/account_context_menu.glade.h:3 +msgid "_Discover Services..." +msgstr "_Ricerca servizi..." + +#: ../data/glade/account_context_menu.glade.h:4 +#: ../data/glade/roster_window.glade.h:15 +#: ../data/glade/systray_context_menu.glade.h:5 +msgid "_Group Chat" +msgstr "Chat di _gruppo" + +#: ../data/glade/account_context_menu.glade.h:5 +msgid "_Modify Account..." +msgstr "_Modifica account..." + +#: ../data/glade/account_context_menu.glade.h:6 +msgid "_Status" +msgstr "_Stato" + +#: ../data/glade/account_creation_wizard_window.glade.h:1 +msgid "" +"Account is being created\n" +"\n" +"Please wait..." +msgstr "" +"Creazione dell'account in corso\n" +"\n" +"Attendere prego..." + +#: ../data/glade/account_creation_wizard_window.glade.h:4 +msgid "Please choose one of the options below:" +msgstr "Scegliere una delle seguenti opzioni:" + +#: ../data/glade/account_creation_wizard_window.glade.h:5 +msgid "Please fill in the data for your new account" +msgstr "Inserire i dati per il nuovo account" + +#: ../data/glade/account_creation_wizard_window.glade.h:6 +msgid "Click to see features (like MSN, ICQ transports) of jabber servers" +msgstr "" +"Cliccare per vedere i servizi (come i trasporti MSN o ICQ) dei server Jabber" + +#: ../data/glade/account_creation_wizard_window.glade.h:7 +msgid "Connect when I press Finish" +msgstr "Collegati alla pressione di Fine" + +#: ../data/glade/account_creation_wizard_window.glade.h:8 +msgid "Gajim: Account Creation Wizard" +msgstr "Gajim: Assistente creazione account" + +#: ../data/glade/account_creation_wizard_window.glade.h:9 +msgid "I already have an account I want to use" +msgstr "Ho già un account da usare" + +#: ../data/glade/account_creation_wizard_window.glade.h:10 +msgid "I want to _register for a new account" +msgstr "Voglio _registrare un nuovo account" + +#: ../data/glade/account_creation_wizard_window.glade.h:11 +#: ../data/glade/account_modification_window.glade.h:18 +msgid "If checked, Gajim will remember the password for this account" +msgstr "Se marcato, Gajim ricorderà la password per questo account" + +#: ../data/glade/account_creation_wizard_window.glade.h:12 +#: ../data/glade/manage_proxies_window.glade.h:6 +msgid "Pass_word:" +msgstr "Pass_word:" + +#: ../data/glade/account_creation_wizard_window.glade.h:13 +#: ../data/glade/account_modification_window.glade.h:37 +msgid "Save pass_word" +msgstr "_Memorizza password" + +#: ../data/glade/account_creation_wizard_window.glade.h:14 +msgid "Servers Features" +msgstr "Servizi del server" + +#: ../data/glade/account_creation_wizard_window.glade.h:15 +msgid "Set my profile when I connect" +msgstr "Imposta il profilo durante la connessione" + +#: ../data/glade/account_creation_wizard_window.glade.h:16 +msgid "" +"You need to have an account in order to connect\n" +"to the Jabber network." +msgstr "" +"È necessario avere un account per connettersi\n" +"alla rete Jabber." + +#: ../data/glade/account_creation_wizard_window.glade.h:18 +msgid "Your JID:" +msgstr "Il tuo JID:" + +#: ../data/glade/account_creation_wizard_window.glade.h:19 +#: ../data/glade/roster_window.glade.h:10 +msgid "_Advanced" +msgstr "_Avanzato" + +#: ../data/glade/account_creation_wizard_window.glade.h:20 +msgid "_Finish" +msgstr "_Fine" + +#: ../data/glade/account_creation_wizard_window.glade.h:21 +#: ../data/glade/manage_proxies_window.glade.h:9 +msgid "_Host:" +msgstr "_Host:" + +#: ../data/glade/account_creation_wizard_window.glade.h:22 +#: ../data/glade/account_modification_window.glade.h:45 +msgid "_Password:" +msgstr "_Password:" + +#: ../data/glade/account_creation_wizard_window.glade.h:23 +#: ../data/glade/manage_proxies_window.glade.h:10 +msgid "_Port:" +msgstr "_Porta:" + +#: ../data/glade/account_creation_wizard_window.glade.h:24 +msgid "_Retype Password:" +msgstr "_Ripetere password:" + +#: ../data/glade/account_creation_wizard_window.glade.h:25 +msgid "_Server:" +msgstr "_Server:" + +#: ../data/glade/account_creation_wizard_window.glade.h:26 +msgid "_Use proxy" +msgstr "_Usa proxy" + +#: ../data/glade/account_creation_wizard_window.glade.h:27 +#: ../data/glade/manage_proxies_window.glade.h:11 +msgid "_Username:" +msgstr "_Nome utente:" + +#: ../data/glade/account_modification_window.glade.h:1 +#: ../data/glade/preferences_window.glade.h:8 +msgid "Miscellaneous" +msgstr "Varie" + +#: ../data/glade/account_modification_window.glade.h:2 +msgid "OpenPGP" +msgstr "OpenPGP" + +#: ../data/glade/account_modification_window.glade.h:3 +msgid "Personal Information" +msgstr "Informazioni personali" + +#: ../data/glade/account_modification_window.glade.h:4 +msgid "Account" +msgstr "Account" + +#: ../data/glade/account_modification_window.glade.h:5 +msgid "Account Modification" +msgstr "Modifica account" + +#: ../data/glade/account_modification_window.glade.h:6 +msgid "Autoreconnect when connection is lost" +msgstr "Riconnettiti automaticamente quando si perde la connessione" + +#: ../data/glade/account_modification_window.glade.h:7 +msgid "C_onnect on Gajim startup" +msgstr "_Connetti all'avvio di Gajim" + +#: ../data/glade/account_modification_window.glade.h:8 +msgid "Chan_ge Password" +msgstr "_Cambia password" + +#: ../data/glade/account_modification_window.glade.h:9 +msgid "" +"Check this so Gajim will connect in port 5223 where legacy servers are " +"expected to have SSL capabilities. Note that Gajim uses TLS encryption by " +"default if broadcasted by the server, and with this option enabled TLS will " +"be disabled" +msgstr "" +"Selezionando questa opzione Gajim si connetterà alla porta 5223, sulla quale " +"i server più vecchi attivano SSL. Notare che Gajim usa la cifratura TLS di " +"default se il server la annuncia, e abilitando questa opzione TLS sarà " +"disabilitata." + +#: ../data/glade/account_modification_window.glade.h:10 +msgid "Choose _Key..." +msgstr "Scegli _chiave..." + +#: ../data/glade/account_modification_window.glade.h:11 +msgid "Click to change account's password" +msgstr "Cliccare per cambiare la password dell'account" + +#: ../data/glade/account_modification_window.glade.h:12 +msgid "Connection" +msgstr "Connessione" + +#: ../data/glade/account_modification_window.glade.h:13 +msgid "Edit Personal Information..." +msgstr "Modifica informazioni personali..." + +#: ../data/glade/account_modification_window.glade.h:14 +#: ../data/glade/roster_window.glade.h:5 ../src/notify.py:308 +#: ../src/notify.py:330 ../src/notify.py:342 ../src/tooltips.py:350 +msgid "Gajim" +msgstr "Gajim" + +#: ../data/glade/account_modification_window.glade.h:15 +#: ../data/glade/preferences_window.glade.h:44 +#: ../data/glade/vcard_information_window.glade.h:17 +#: ../src/roster_window.py:290 ../src/roster_window.py:1184 +#: ../src/roster_window.py:1405 +msgid "General" +msgstr "Generale" + +#: ../data/glade/account_modification_window.glade.h:16 +msgid "Hostname: " +msgstr "Nome dell'host: " + +#: ../data/glade/account_modification_window.glade.h:17 +#, fuzzy +msgid "" +"If checked, Gajim will also broadcast some more IPs except from just your " +"IP, so file transfer has higher chances of working." +msgstr "" +"Se marcato, Gajim annuncerà alcuni IP in più oltre a quello della macchina " +"su cui viene eseguito, di modo che il trasferimento file abbia maggiori " +"possibilità di funzionare correttamente." + +#: ../data/glade/account_modification_window.glade.h:19 +msgid "" +"If checked, Gajim will send keep-alive packets so it prevents connection " +"timeout which results in disconnection" +msgstr "" +"Se marcato, Gajim invierà dei pacchetti di keep-alive per prevenire il " +"timeout che provoca una disconnessione" + +#: ../data/glade/account_modification_window.glade.h:20 +msgid "" +"If checked, Gajim will store the password in ~/.gajim/config with 'read' " +"permission only for you" +msgstr "" +"Se marcato, Gajim memorizzerà la password in ~/.gajim/config, con permessi " +"di lettura solo per l'utente che esegue il programma" + +#: ../data/glade/account_modification_window.glade.h:21 +msgid "" +"If checked, Gajim, when launched, will automatically connect to jabber using " +"this account" +msgstr "" +"Se marcato, Gajim, quando lanciato, si connetterà automaticamente a Jabber " +"usando questo account." + +#: ../data/glade/account_modification_window.glade.h:22 +msgid "" +"If checked, any change to the global status (handled by the combobox at the " +"bottom of the roster window) will change the status of this account " +"accordingly" +msgstr "" +"Se marcato, ogni cambio allo stato globale (gestito dalla combo box sotto la " +"lista contatti) cambierà di conseguenza lo stato di questo account" + +#: ../data/glade/account_modification_window.glade.h:23 +msgid "Information about you, as stored in the server" +msgstr "Informazioni su di te, archiviate sul server" + +#: ../data/glade/account_modification_window.glade.h:24 +msgid "Manage..." +msgstr "Gestisci..." + +#: ../data/glade/account_modification_window.glade.h:25 ../src/config.py:1448 +msgid "No key selected" +msgstr "Nessuna chiave selezionata" + +#. None means no proxy profile selected +#: ../data/glade/account_modification_window.glade.h:27 ../src/config.py:1053 +#: ../src/config.py:1058 ../src/config.py:1230 ../src/config.py:1505 +#: ../src/config.py:1578 ../src/config.py:2282 +msgid "None" +msgstr "Nessuno" + +#: ../data/glade/account_modification_window.glade.h:28 +msgid "Personal Information" +msgstr "Informazioni personali" + +#: ../data/glade/account_modification_window.glade.h:29 +msgid "Port: " +msgstr "Porta: " + +#: ../data/glade/account_modification_window.glade.h:30 +msgid "Priori_ty:" +msgstr "Pr_iorità:" + +#: ../data/glade/account_modification_window.glade.h:31 +msgid "" +"Priority is used in Jabber to determine who gets the events from the jabber " +"server when two or more clients are connected using the same account; The " +"client with the highest priority gets the events" +msgstr "" +"La priorità si usa in Jabber per determinare chi riceve gli eventi dal " +"server Jabber, quando due o più client sono connessi usando lo stesso " +"account; il client con la maggiore priorità riceverà gli eventi." + +#: ../data/glade/account_modification_window.glade.h:32 +msgid "Proxy:" +msgstr "Proxy:" + +#: ../data/glade/account_modification_window.glade.h:33 +msgid "Resour_ce: " +msgstr "_Risorsa: " + +#: ../data/glade/account_modification_window.glade.h:34 +msgid "" +"Resource is sent to the Jabber server in order to separate the same JID in " +"two or more parts depending on the number of the clients connected in the " +"same server with the same account. So you might be connected in the same " +"account with resource 'Home' and 'Work' at the same time. The resource which " +"has the highest priority will get the events. (see below)" +msgstr "" +"La risorsa viene inviata al server Jabber per distinguere tra due o più " +"client connessi allo stesso server. In questa maniera, è possibile " +"connettersi allo stesso account con risorse 'Casa' e 'Lavoro' " +"contemporaneamente. La risorsa con la priorità maggiore riceverà gli eventi " +"(vedi sotto)." + +#: ../data/glade/account_modification_window.glade.h:35 +msgid "Save _passphrase (insecure)" +msgstr "Salva _passphrase (non sicuro)" + +#: ../data/glade/account_modification_window.glade.h:36 +msgid "Save conversation _logs for all contacts" +msgstr "Memorizza i _log delle conversazioni con tutti i contatti" + +#: ../data/glade/account_modification_window.glade.h:38 +msgid "Send keep-alive packets" +msgstr "Invia pacchetti di keep-alive" + +#: ../data/glade/account_modification_window.glade.h:39 +msgid "Synch_ronize account status with global status" +msgstr "_Sincronizza lo stato dell'account con lo stato globale" + +#: ../data/glade/account_modification_window.glade.h:40 +msgid "Use _SSL (legacy)" +msgstr "Usa _SSL (legacy)" + +#: ../data/glade/account_modification_window.glade.h:41 +msgid "Use custom hostname/port" +msgstr "Usa hostname/port personalizzati" + +#: ../data/glade/account_modification_window.glade.h:42 +msgid "Use file transfer proxies" +msgstr "Usa proxy per il trasferimento file" + +#: ../data/glade/account_modification_window.glade.h:43 +#: ../data/glade/add_new_contact_window.glade.h:6 +msgid "_Jabber ID:" +msgstr "ID _Jabber:" + +#: ../data/glade/account_modification_window.glade.h:44 +msgid "_Name: " +msgstr "_Nome: " + +#: ../data/glade/accounts_window.glade.h:1 +msgid "Accounts" +msgstr "Account" + +#: ../data/glade/accounts_window.glade.h:2 +msgid "" +"If you have 2 or more accounts and it is checked, Gajim will list all " +"contacts as if you had one account" +msgstr "" +"Se marcato e se sono presenti 2 o più account, Gajim mostrerà tutti i " +"contatti come se ci fosse un unico account" + +#: ../data/glade/accounts_window.glade.h:3 +msgid "_Merge accounts" +msgstr "_Unisci account" + +#: ../data/glade/accounts_window.glade.h:4 +msgid "_Modify" +msgstr "_Modifica" + +#: ../data/glade/accounts_window.glade.h:5 +#: ../data/glade/remove_account_window.glade.h:4 +msgid "_Remove" +msgstr "_Elimina" + +#: ../data/glade/add_new_contact_window.glade.h:1 +#, fuzzy +msgid "A_llow this contact to view my status" +msgstr "Permetti di vedere il mio stato" + +#: ../data/glade/add_new_contact_window.glade.h:2 +msgid "Add New Contact" +msgstr "Aggiungi nuovo contatto" + +#: ../data/glade/add_new_contact_window.glade.h:3 +msgid "I would like to add you to my contact list." +msgstr "Vorrei aggiungerti alla mia lista contatti." + +#: ../data/glade/add_new_contact_window.glade.h:4 +#, fuzzy +msgid "_Account:" +msgstr "Account:" + +#: ../data/glade/add_new_contact_window.glade.h:5 +#, fuzzy +msgid "_Group:" +msgstr "Gruppo:" + +#: ../data/glade/add_new_contact_window.glade.h:7 +msgid "_Nickname:" +msgstr "_Nickname:" + +#: ../data/glade/add_new_contact_window.glade.h:8 +#, fuzzy +msgid "_Protocol:" +msgstr "Protocollo:" + +#: ../data/glade/add_new_contact_window.glade.h:9 +msgid "_Subscribe" +msgstr "A_bbonati" + +#: ../data/glade/add_new_contact_window.glade.h:10 +#, fuzzy +msgid "_User ID:" +msgstr "ID utente:" + +#: ../data/glade/advanced_configuration_window.glade.h:1 +msgid "Description" +msgstr "Descrizione" + +#: ../data/glade/advanced_configuration_window.glade.h:2 +msgid "NOTE: You should restart gajim for some setting to take effect" +msgstr "" +"NOTA: È necessario riavviare gajim perché alcune impostazioni abbiano " +"effetto" + +#: ../data/glade/advanced_configuration_window.glade.h:3 +msgid "Advanced Configuration Editor" +msgstr "Editor di configurazione avanzata" + +#: ../data/glade/advanced_configuration_window.glade.h:4 +msgid "Filter:" +msgstr "Filtro:" + +#: ../data/glade/advanced_menuitem_menu.glade.h:1 +msgid "Delete MOTD" +msgstr "Elimina MOTD" + +#: ../data/glade/advanced_menuitem_menu.glade.h:2 +msgid "Deletes Message of the Day" +msgstr "Elimina il messaggio del giorno" + +#: ../data/glade/advanced_menuitem_menu.glade.h:3 +msgid "Sends a message to currently connected users to this server" +msgstr "Invia un messaggio agli utenti attualmenti connessi a questo server" + +#: ../data/glade/advanced_menuitem_menu.glade.h:4 +msgid "Set MOTD" +msgstr "Imposta MOTD" + +#: ../data/glade/advanced_menuitem_menu.glade.h:5 +msgid "Sets Message of the Day" +msgstr "Imposta messaggio del giorno" + +#: ../data/glade/advanced_menuitem_menu.glade.h:6 +msgid "Show _XML Console" +msgstr "Mostra console _XML" + +#: ../data/glade/advanced_menuitem_menu.glade.h:7 +msgid "Update MOTD" +msgstr "Aggiorna MOTD" + +#: ../data/glade/advanced_menuitem_menu.glade.h:8 +msgid "Updates Message of the Day" +msgstr "Aggiorna il messaggio del giorno" + +#: ../data/glade/advanced_menuitem_menu.glade.h:9 +msgid "_Administrator" +msgstr "_Amministratore" + +#: ../data/glade/advanced_menuitem_menu.glade.h:10 +msgid "_Privacy Lists" +msgstr "" + +#: ../data/glade/advanced_menuitem_menu.glade.h:11 +msgid "_Send Server Message" +msgstr "_Invia messaggio server" + +#: ../data/glade/advanced_menuitem_menu.glade.h:12 +msgid "_Send Single Message" +msgstr "_Invia messaggio singolo" + +#: ../data/glade/advanced_notifications_window.glade.h:1 +msgid " a window/tab opened with that contact " +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:2 +#, fuzzy +msgid "Actions" +msgstr "Applicazioni" + +#: ../data/glade/advanced_notifications_window.glade.h:3 +#, fuzzy +msgid "Conditions" +msgstr "Suoni" + +#: ../data/glade/advanced_notifications_window.glade.h:4 +#: ../data/glade/preferences_window.glade.h:10 +msgid "Sounds" +msgstr "Suoni" + +#: ../data/glade/advanced_notifications_window.glade.h:5 +#, fuzzy +msgid "Add" +msgstr "Indirizzo" + +#: ../data/glade/advanced_notifications_window.glade.h:6 +#, fuzzy +msgid "Advanced Actions" +msgstr "Avanzato" + +#: ../data/glade/advanced_notifications_window.glade.h:7 +#, fuzzy +msgid "Advanced Notifications Control" +msgstr "Editor di configurazione avanzata" + +#: ../data/glade/advanced_notifications_window.glade.h:8 +#, fuzzy +msgid "All Status " +msgstr "Stato: " + +#: ../data/glade/advanced_notifications_window.glade.h:9 +msgid "And I " +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:10 +#, fuzzy +msgid "Away " +msgstr "Assente" + +#: ../data/glade/advanced_notifications_window.glade.h:11 +#, fuzzy +msgid "Busy " +msgstr "Occupato" + +#: ../data/glade/advanced_notifications_window.glade.h:12 +msgid "Don't have " +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:13 +#, fuzzy +msgid "Down" +msgstr "Scarica" + +#: ../data/glade/advanced_notifications_window.glade.h:14 +msgid "Have " +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:15 +#: ../src/common/helpers.py:239 +msgid "Invisible" +msgstr "Invisibile" + +#: ../data/glade/advanced_notifications_window.glade.h:16 +#, fuzzy +msgid "Launch a command" +msgstr "Comando inesistente: /%s" + +#: ../data/glade/advanced_notifications_window.glade.h:17 +#, fuzzy +msgid "List of special notifications settings" +msgstr "Creazione notifica speciale per %s" + +#: ../data/glade/advanced_notifications_window.glade.h:18 +#, fuzzy +msgid "Not Available " +msgstr "Non disponibile" + +#: ../data/glade/advanced_notifications_window.glade.h:19 +#, fuzzy +msgid "Online / Free For Chat" +msgstr "Libero per chat" + +#: ../data/glade/advanced_notifications_window.glade.h:20 +#, fuzzy +msgid "Play a sound" +msgstr "Riproduci _suoni" + +#: ../data/glade/advanced_notifications_window.glade.h:21 +msgid "" +"Receive a Message\n" +"Contact Connected\n" +"Contact Disconnected\n" +"Contact Change Status\n" +"Group Chat Message Highlight\n" +"Group Chat Message Received\n" +"File Transfert Resquest\n" +"File Transfert Started\n" +"File Transfert Finished" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:30 +msgid "Some special(s) status..." +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:31 +msgid "Up" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:32 +msgid "When " +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:33 +msgid "_Activate Windows manager UrgencyHint to make chat taskbar to flash" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:34 +#, fuzzy +msgid "_Disable auto opening chat window" +msgstr "Nasconde i pulsanti nella finestra di chat di gruppo" + +#: ../data/glade/advanced_notifications_window.glade.h:35 +msgid "_Disable existing popup window" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:36 +msgid "_Disable existing sound for this event" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:37 +msgid "_Disable showing event in roster" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:38 +msgid "_Disable showing event in systray" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:39 +msgid "_Inform me with a popup window" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:40 +#, fuzzy +msgid "_Open chat window with user" +msgstr "Usa una sola finestra di chat con _schede" + +#: ../data/glade/advanced_notifications_window.glade.h:41 +#, fuzzy +msgid "_Show event in roster" +msgstr "Mostra solo nella lista _contatti" + +#: ../data/glade/advanced_notifications_window.glade.h:42 +#, fuzzy +msgid "_Show event in systray" +msgstr "Mostra solo nella lista _contatti" + +#: ../data/glade/advanced_notifications_window.glade.h:43 +msgid "" +"contact(s)\n" +"group(s)\n" +"everybody" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:46 +#, fuzzy +msgid "for " +msgstr "Porta: " + +#: ../data/glade/advanced_notifications_window.glade.h:47 +msgid "when I'm " +msgstr "" + +#: ../data/glade/change_password_dialog.glade.h:1 +msgid "Change Password" +msgstr "Cambia password" + +#: ../data/glade/change_password_dialog.glade.h:2 +msgid "Enter it again for confirmation:" +msgstr "Inserire nuovamente per conferma:" + +#: ../data/glade/change_password_dialog.glade.h:3 +msgid "Enter new password:" +msgstr "Inserire nuova password:" + +#: ../data/glade/change_status_message_dialog.glade.h:1 +msgid "Type your new status message" +msgstr "Scrivere il nuovo messaggio di stato" + +#: ../data/glade/change_status_message_dialog.glade.h:2 +msgid "Preset messages:" +msgstr "Messaggi predefiniti:" + +#: ../data/glade/change_status_message_dialog.glade.h:3 +msgid "Save as Preset..." +msgstr "Salva come predefinito..." + +#: ../data/glade/chat_context_menu.glade.h:1 +msgid "Join _Group Chat" +msgstr "Entra in chat di _gruppo" + +#: ../data/glade/chat_context_menu.glade.h:2 +#: ../data/glade/chat_control_popup_menu.glade.h:4 +#: ../data/glade/gc_occupants_menu.glade.h:2 +#: ../data/glade/roster_contact_context_menu.glade.h:8 +msgid "_Add to Roster" +msgstr "_Aggiungi ai contatti" + +#: ../data/glade/chat_context_menu.glade.h:3 +msgid "_Copy JID/Email Address" +msgstr "_Copia Indirizzo Email/JID" + +#: ../data/glade/chat_context_menu.glade.h:4 +msgid "_Copy Link Location" +msgstr "_Copia indirizzo collegamento" + +#: ../data/glade/chat_context_menu.glade.h:5 +msgid "_Open Email Composer" +msgstr "_Apri composizione email" + +#: ../data/glade/chat_context_menu.glade.h:6 +msgid "_Open Link in Browser" +msgstr "_Apri il collegamento nel browser" + +#: ../data/glade/chat_context_menu.glade.h:7 +#: ../data/glade/roster_window.glade.h:19 +#: ../data/glade/systray_context_menu.glade.h:6 +msgid "_Start Chat" +msgstr "_Inizia chat" + +#: ../data/glade/chat_control_popup_menu.glade.h:1 +msgid "Click to see past conversations with this contact" +msgstr "Cliccare per vedere le conversazioni precedenti con questo contatto" + +#: ../data/glade/chat_control_popup_menu.glade.h:2 +#: ../data/glade/roster_contact_context_menu.glade.h:6 +msgid "Send _File" +msgstr "Invia _file" + +#: ../data/glade/chat_control_popup_menu.glade.h:3 +msgid "Toggle Open_PGP Encryption" +msgstr "Attiva cifratura Open_PGP" + +#: ../data/glade/chat_control_popup_menu.glade.h:5 +#: ../data/glade/gc_control_popup_menu.glade.h:6 +msgid "_Compact View Alt+C" +msgstr "_Vista compatta Alt+C" + +#: ../data/glade/chat_control_popup_menu.glade.h:6 +#: ../data/glade/gc_control_popup_menu.glade.h:7 +#: ../data/glade/gc_occupants_menu.glade.h:5 +#: ../data/glade/roster_contact_context_menu.glade.h:11 +msgid "_History" +msgstr "_Cronologia" + +#: ../data/glade/data_form_window.glade.h:1 +msgid "Room Configuration" +msgstr "Configurazione della stanza" + +#: ../data/glade/edit_groups_dialog.glade.h:1 +msgid "Edit Groups" +msgstr "Modifica gruppi" + +#: ../data/glade/filetransfers.glade.h:1 +msgid "A list of active, completed and stopped file transfers" +msgstr "Un elenco dei trasferimenti di file attivi, completati ed annullati" + +#: ../data/glade/filetransfers.glade.h:2 +msgid "Cancel file transfer" +msgstr "Annulla trasferimento file" + +#: ../data/glade/filetransfers.glade.h:3 +msgid "Cancels the selected file transfer" +msgstr "Annulla il trasferimento file selezionato" + +#: ../data/glade/filetransfers.glade.h:4 +msgid "Cancels the selected file transfer and removes incomplete file" +msgstr "Annulla il trasferimento file selezionato e rimuove il file incompleto" + +#: ../data/glade/filetransfers.glade.h:5 +msgid "Clean _up" +msgstr "P_ulisci" + +#: ../data/glade/filetransfers.glade.h:6 +msgid "File Transfers" +msgstr "Trasferimenti file" + +#: ../data/glade/filetransfers.glade.h:7 +msgid "Hides the window" +msgstr "Nasconde la finestra" + +#: ../data/glade/filetransfers.glade.h:8 +msgid "Remove file transfer from the list." +msgstr "Rimuovi trasferimento file dalla lista" + +#: ../data/glade/filetransfers.glade.h:9 +msgid "Removes completed, canceled and failed file transfers from the list" +msgstr "" +"Rimuove dalla lista i trasferimenti di file completati, annullati e falliti" + +#: ../data/glade/filetransfers.glade.h:10 +msgid "Shows a list of file transfers between you and other" +msgstr "Mostra una lista dei trasferimenti di file tra te e gli altri" + +#: ../data/glade/filetransfers.glade.h:11 +msgid "" +"This action removes single file transfer from the list. If the transfer is " +"active, it is first stopped and then removed" +msgstr "" +"Questa azione elimina un singolo trasferimento file dalla lista. Se il " +"trasferimento è attivo, viene prima fermato e poi rimosso" + +#: ../data/glade/filetransfers.glade.h:12 +msgid "When a file transfer is complete show a popup notification" +msgstr "" +"Mostra una notifica popup quando un trasferimento file viene completato" + +#: ../data/glade/filetransfers.glade.h:13 ../src/filetransfers_window.py:753 +msgid "_Continue" +msgstr "_Continua" + +#: ../data/glade/filetransfers.glade.h:14 +msgid "_Notify me when a file transfer is complete" +msgstr "_Notifica quando un trasferimento file viene completato" + +#: ../data/glade/filetransfers.glade.h:15 ../src/filetransfers_window.py:190 +msgid "_Open Containing Folder" +msgstr "_Apri cartella" + +#: ../data/glade/filetransfers.glade.h:16 +msgid "_Pause" +msgstr "_Pausa" + +#: ../data/glade/filetransfers.glade.h:17 +msgid "file transfers list" +msgstr "lista trasferimenti file" + +#: ../data/glade/gajim_themes_window.glade.h:1 +msgid "Chatstate Tab Colors" +msgstr "Colori della scheda di stato chat" + +#: ../data/glade/gajim_themes_window.glade.h:2 +msgid "" +"Account\n" +"Group\n" +"Contact\n" +"Banner" +msgstr "" +"Account\n" +"Gruppo\n" +"Contatto\n" +"Banner" + +#: ../data/glade/gajim_themes_window.glade.h:6 +#: ../data/glade/privacy_list_edit_window.glade.h:4 ../src/config.py:326 +msgid "Active" +msgstr "Attivo" + +#: ../data/glade/gajim_themes_window.glade.h:7 +msgid "Bold" +msgstr "Grassetto" + +#: ../data/glade/gajim_themes_window.glade.h:8 +msgid "Composing" +msgstr "Scrivendo" + +#: ../data/glade/gajim_themes_window.glade.h:9 +msgid "Font style:" +msgstr "Stile carattere:" + +#: ../data/glade/gajim_themes_window.glade.h:10 +msgid "Gajim Themes Customization" +msgstr "Personalizzazione temi di Gajim" + +#: ../data/glade/gajim_themes_window.glade.h:11 +msgid "Gone" +msgstr "Andato via" + +#: ../data/glade/gajim_themes_window.glade.h:12 +msgid "Inactive" +msgstr "Inattivo" + +#: ../data/glade/gajim_themes_window.glade.h:13 +msgid "Italic" +msgstr "Corsivo" + +#: ../data/glade/gajim_themes_window.glade.h:14 +msgid "" +"MUC\n" +"Messages" +msgstr "" +"Messaggi\n" +"MUC" + +#: ../data/glade/gajim_themes_window.glade.h:16 +msgid "" +"MUC Directed\n" +"Messages" +msgstr "" +"Messaggi diretti\n" +"a MUC" + +#: ../data/glade/gajim_themes_window.glade.h:18 ../src/tooltips.py:667 +msgid "Paused" +msgstr "In pausa" + +#: ../data/glade/gajim_themes_window.glade.h:19 +msgid "Text _color:" +msgstr "_Colore del testo:" + +#: ../data/glade/gajim_themes_window.glade.h:20 +msgid "Text _font:" +msgstr "Carattere del _testo:" + +#: ../data/glade/gajim_themes_window.glade.h:21 +msgid "_Background:" +msgstr "_Sfondo:" + +#: ../data/glade/gc_control_popup_menu.glade.h:1 +msgid "Change _Nickname" +msgstr "Cambia _nickname" + +#: ../data/glade/gc_control_popup_menu.glade.h:2 +msgid "Change _Subject" +msgstr "Cambia _oggetto" + +#: ../data/glade/gc_control_popup_menu.glade.h:3 +msgid "Click to see past conversation in this room" +msgstr "Cliccare per vedere le conversazioni precedenti di questa stanza" + +#: ../data/glade/gc_control_popup_menu.glade.h:4 +msgid "Configure _Room" +msgstr "Configu_ra la stanza" + +#: ../data/glade/gc_control_popup_menu.glade.h:5 +msgid "_Bookmark This Room" +msgstr "Inserire un _segnalibro per questa stanza" + +#: ../data/glade/gc_occupants_menu.glade.h:1 +msgid "Mo_derator" +msgstr "Mo_deratore" + +#: ../data/glade/gc_occupants_menu.glade.h:3 +msgid "_Admin" +msgstr "_Admin" + +#: ../data/glade/gc_occupants_menu.glade.h:4 +msgid "_Ban" +msgstr "_Bandisci" + +#: ../data/glade/gc_occupants_menu.glade.h:6 +msgid "_Kick" +msgstr "_Caccia" + +#: ../data/glade/gc_occupants_menu.glade.h:7 +msgid "_Member" +msgstr "_Membro" + +#: ../data/glade/gc_occupants_menu.glade.h:8 +msgid "_Occupant Actions" +msgstr "Azioni _partecipanti" + +#: ../data/glade/gc_occupants_menu.glade.h:9 +msgid "_Owner" +msgstr "_Proprietario" + +#: ../data/glade/gc_occupants_menu.glade.h:10 +msgid "_Send Private Message" +msgstr "_Invia messaggio privato" + +#: ../data/glade/gc_occupants_menu.glade.h:11 +msgid "_Voice" +msgstr "_Voce" + +#: ../data/glade/history_manager.glade.h:1 +msgid "" +"Welcome to Gajim History Logs Manager\n" +"\n" +"You can select logs from the left and/or search database from below.\n" +"\n" +"WARNING:\n" +"If you plan to do massive deletions, please make sure Gajim is not running. " +"Generally avoid deletions with contacts you currently chat with." +msgstr "" +"Benvenuti al gestore delle cronologie di Gajim\n" +"\n" +"Si possono selezionare elementi alla sinistra e/o cercare nella base dati da " +"sotto.\n" +"\n" +"ATTENZIONE:\n" +"Se si ha intenzione di cancellare molte cose, verificare che Gajim non sia " +"in esecuzione. Generalmente evitare di eliminare dati sui contatti con cui " +"si sta conversando." + +#: ../data/glade/history_manager.glade.h:7 +msgid "Delete" +msgstr "Elimina" + +#: ../data/glade/history_manager.glade.h:8 +msgid "Export" +msgstr "Esporta" + +#: ../data/glade/history_manager.glade.h:9 +msgid "Gajim History Logs Manager" +msgstr "Gestore delle cronologie di Gajim" + +#: ../data/glade/history_manager.glade.h:10 +msgid "_Search Database" +msgstr "_Cerca base dati" + +#: ../data/glade/history_window.glade.h:1 +msgid "Build custom query" +msgstr "Costruisci richiesta personalizzata" + +#: ../data/glade/history_window.glade.h:2 +msgid "Conversation History" +msgstr "Cronologia conversazione" + +#: ../data/glade/history_window.glade.h:3 +msgid "Query Builder..." +msgstr "Costruttore richieste..." + +#: ../data/glade/history_window.glade.h:4 +msgid "Search" +msgstr "Cerca" + +#: ../data/glade/history_window.glade.h:5 +msgid "_Search" +msgstr "_Cerca" + +#: ../data/glade/invitation_received_dialog.glade.h:1 +msgid "Accept" +msgstr "Accetta" + +#: ../data/glade/invitation_received_dialog.glade.h:2 +#: ../data/glade/privacy_list_edit_window.glade.h:8 +msgid "Deny" +msgstr "Nega" + +#: ../data/glade/invitation_received_dialog.glade.h:3 +msgid "Invitation Received" +msgstr "Invito ricevuto" + +#: ../data/glade/join_groupchat_window.glade.h:1 ../src/dialogs.py:941 +msgid "Join Group Chat" +msgstr "Entrare in chat di gruppo" + +#: ../data/glade/join_groupchat_window.glade.h:2 +#: ../data/glade/manage_bookmarks_window.glade.h:4 +#: ../data/glade/vcard_information_window.glade.h:28 +msgid "Nickname:" +msgstr "Nickname:" + +#: ../data/glade/join_groupchat_window.glade.h:3 +#: ../data/glade/manage_bookmarks_window.glade.h:5 +msgid "Password:" +msgstr "Password:" + +#: ../data/glade/join_groupchat_window.glade.h:4 +msgid "Recently:" +msgstr "Recentemente:" + +#: ../data/glade/join_groupchat_window.glade.h:5 +#: ../data/glade/manage_bookmarks_window.glade.h:7 +msgid "Room:" +msgstr "Stanza:" + +#: ../data/glade/join_groupchat_window.glade.h:6 +#: ../data/glade/manage_bookmarks_window.glade.h:8 +msgid "Server:" +msgstr "Server:" + +#: ../data/glade/join_groupchat_window.glade.h:7 ../src/disco.py:1145 +#: ../src/disco.py:1507 +msgid "_Join" +msgstr "_Entra" + +#: ../data/glade/manage_accounts_window.glade.h:1 +msgid "Manage Accounts" +msgstr "Gestisci account" + +#: ../data/glade/manage_bookmarks_window.glade.h:1 +msgid "Auto join" +msgstr "Partecipa automaticamente" + +#: ../data/glade/manage_bookmarks_window.glade.h:2 +msgid "If checked, Gajim will join this group chat on startup" +msgstr "Se marcato, all'avvio Gajim entrerà in questa chat di gruppo" + +#: ../data/glade/manage_bookmarks_window.glade.h:3 +msgid "Manage Bookmarks" +msgstr "Gestisci segnalibri" + +#: ../data/glade/manage_bookmarks_window.glade.h:6 +#, fuzzy +msgid "Print status:" +msgstr "Stampa ora:" + +#: ../data/glade/manage_bookmarks_window.glade.h:9 +msgid "Title:" +msgstr "Titolo:" + +#: ../data/glade/manage_proxies_window.glade.h:1 +msgid "Properties" +msgstr "Proprietà" + +#: ../data/glade/manage_proxies_window.glade.h:2 +msgid "Settings" +msgstr "Impostazioni" + +#: ../data/glade/manage_proxies_window.glade.h:3 +msgid "HTTP Connect" +msgstr "Connessione HTTP" + +#: ../data/glade/manage_proxies_window.glade.h:4 +msgid "Manage Proxy Profiles" +msgstr "Gestisci profili proxy" + +#: ../data/glade/manage_proxies_window.glade.h:5 +#: ../data/glade/vcard_information_window.glade.h:27 +msgid "Name:" +msgstr "Nome:" + +#: ../data/glade/manage_proxies_window.glade.h:7 +msgid "Type:" +msgstr "Tipo:" + +#: ../data/glade/manage_proxies_window.glade.h:8 +msgid "Use authentication" +msgstr "Usa autenticazione" + +#: ../data/glade/message_window.glade.h:1 +msgid "Click to insert an emoticon (Alt+M)" +msgstr "Cliccare per inserire un emoticon (Alt+M)" + +#: ../data/glade/message_window.glade.h:2 ../src/chat_control.py:966 +msgid "OpenPGP Encryption" +msgstr "Cifratura OpenPGP" + +#. Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector) +#: ../data/glade/message_window.glade.h:4 +#: ../data/glade/roster_window.glade.h:9 +msgid "_Actions" +msgstr "_Azioni" + +#. Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector) +#: ../data/glade/message_window.glade.h:6 +#: ../data/glade/xml_console_window.glade.h:11 +#: ../src/filetransfers_window.py:249 +msgid "_Send" +msgstr "_Invia" + +#: ../data/glade/passphrase_dialog.glade.h:1 +msgid "Passphrase" +msgstr "Passphrase" + +#: ../data/glade/preferences_window.glade.h:1 +msgid "Advanced Configuration Editor" +msgstr "Editor di configurazione avanzata" + +#: ../data/glade/preferences_window.glade.h:2 +msgid "Applications" +msgstr "Applicazioni" + +#. a header for custom browser/client/file manager. so translate sth like: Custom Settings +#: ../data/glade/preferences_window.glade.h:4 +msgid "Custom" +msgstr "Personalizzato" + +#: ../data/glade/preferences_window.glade.h:5 +msgid "Format of a line" +msgstr "Formato di una linea" + +#: ../data/glade/preferences_window.glade.h:6 +#, fuzzy +msgid "GMail Options" +msgstr "Applicazioni" + +#: ../data/glade/preferences_window.glade.h:7 +msgid "Interface Customization" +msgstr "Personalizzazione dell'interfaccia" + +#: ../data/glade/preferences_window.glade.h:9 +msgid "Preset Status Messages" +msgstr "Messaggi di stato predefiniti" + +#: ../data/glade/preferences_window.glade.h:11 +msgid "Visual Notifications" +msgstr "Notifiche visuali" + +#: ../data/glade/preferences_window.glade.h:12 +msgid "A_fter nickname:" +msgstr "_Dopo il nickname:" + +#: ../data/glade/preferences_window.glade.h:13 +msgid "Advanced" +msgstr "Avanzato" + +#: ../data/glade/preferences_window.glade.h:14 +msgid "" +"All chat states\n" +"Composing only\n" +"Disabled" +msgstr "" +"Tutti gli stati di chat\n" +"Solo composizione\n" +"Disattivato" + +#: ../data/glade/preferences_window.glade.h:17 +msgid "Allow _OS information to be sent" +msgstr "Consentire invio di informazioni sull'_OS" + +#: ../data/glade/preferences_window.glade.h:18 +msgid "Allow popup/notifications when I'm _away/na/busy/invisible" +msgstr "Consentire notifiche/popup quando _assente/nd/occupato/invisibile." + +#: ../data/glade/preferences_window.glade.h:19 +msgid "Also known as iChat style" +msgstr "Conosciuto anche come stile iChat" + +#: ../data/glade/preferences_window.glade.h:20 +msgid "Ask status message when I:" +msgstr "Chiedi messaggio di stato per:" + +#: ../data/glade/preferences_window.glade.h:21 +msgid "Auto _away after:" +msgstr "_Assente automaticamente dopo:" + +#: ../data/glade/preferences_window.glade.h:22 +msgid "Auto _not available after:" +msgstr "N_on disponibile automaticamente dopo:" + +#: ../data/glade/preferences_window.glade.h:23 +msgid "" +"Autodetect on every Gajim startup\n" +"Always use GNOME default applications\n" +"Always use KDE default applications\n" +"Custom" +msgstr "" +"Ricerca in automatico ad ogni avvio di Gajim\n" +"Usa sempre le applicazioni predefinite di GNOME\n" +"Usa sempre le applicazioni predefinite di KDE\n" +"Personalizza" + +#: ../data/glade/preferences_window.glade.h:27 +msgid "B_efore nickname:" +msgstr "_Prima del nickname:" + +#: ../data/glade/preferences_window.glade.h:28 ../src/chat_control.py:718 +msgid "Chat" +msgstr "Chat" + +#: ../data/glade/preferences_window.glade.h:29 +msgid "Chat state noti_fications:" +msgstr "Noti_fiche dello stato di chat" + +#: ../data/glade/preferences_window.glade.h:30 +msgid "" +"Check this option, only if someone you don't have in the roster spams/annoys " +"you. Use with caution, cause it blocks all messages from any contact that is " +"not in the roster" +msgstr "" +"Selezionare questa opzione solo se qualche utente fuori dalla lista contatti " +"spamma o disturba. Attenzione, verranno bloccati tutti i messaggi ricevuti " +"da chi non è membro della lista contatti." + +#: ../data/glade/preferences_window.glade.h:31 +msgid "Default status _iconset:" +msgstr "_Icone stato predefinite:" + +#: ../data/glade/preferences_window.glade.h:32 +msgid "Display _extra email details" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:33 +msgid "Display a_vatars of contacts in roster" +msgstr "Mostra gli a_vatar dei contatti nella lista" + +#: ../data/glade/preferences_window.glade.h:34 +msgid "Display status _messages of contacts in roster" +msgstr "Mostra i _messaggi di stato dei contatti nella lista" + +#: ../data/glade/preferences_window.glade.h:35 +msgid "E_very 5 minutes" +msgstr "_Ogni 5 minuti" + +#: ../data/glade/preferences_window.glade.h:36 +msgid "Emoticons:" +msgstr "Emoticon:" + +#: ../data/glade/preferences_window.glade.h:37 +msgid "Events" +msgstr "Eventi" + +#: ../data/glade/preferences_window.glade.h:38 +msgid "" +"Gajim can send and receive meta-information related to a conversation you " +"may have with a contact. Here you can specify which chatstates you want to " +"send to the other party." +msgstr "" +"Gajim può ricevere ed inviare meta-informazioni relative ad una " +"conversazione con un contatto. Qui è possibile specificare che stati di chat " +"si vogliono inviare al corrispondente." + +#: ../data/glade/preferences_window.glade.h:39 +msgid "" +"Gajim will automatically show new events by poping up the relative window" +msgstr "" +"Gajim mostrerà automaticamente i nuovi eventi evidenziando la finestra " +"relativa" + +#: ../data/glade/preferences_window.glade.h:40 +msgid "" +"Gajim will notify you for new events via a popup in the bottom right of the " +"screen" +msgstr "" +"Gajim notificherà i nuovi eventi tramite popup nell'angolo in fondo a destra " +"dello schermo" + +#: ../data/glade/preferences_window.glade.h:41 +msgid "" +"Gajim will notify you via a popup window in the bottom right of the screen " +"about contacts that just signed in" +msgstr "" +"Gajim notificherà tramite popup nell'angolo in fondo a destra dello schermo " +"quando un contatto si connette" + +#: ../data/glade/preferences_window.glade.h:42 +msgid "" +"Gajim will notify you via a popup window in the bottom right of the screen " +"about contacts that just signed out" +msgstr "" +"Gajim notificherà tramite popup nell'angolo in fondo a destra dello schermo " +"quando un contatto si disconnette" + +#: ../data/glade/preferences_window.glade.h:43 +msgid "" +"Gajim will only change the icon of the contact that triggered the new event" +msgstr "Gajim cambierà solamente l'icona del contatto fonte del nuovo evento" + +#: ../data/glade/preferences_window.glade.h:45 +msgid "" +"If checked, Gajim will display avatars of contacts in roster window and in " +"group chats" +msgstr "" +"Se marcato, Gajim mostrerà gli avatar dei contatti nella lista contatti e " +"nelle chat di gruppo" + +#: ../data/glade/preferences_window.glade.h:46 +msgid "" +"If checked, Gajim will display status messages of contacts under the contact " +"name in roster window and in group chats" +msgstr "" +"Se marcato, Gajim mostrerà il messaggio di stato di ogni membro di lista " +"contatti e chat di gruppo sotto il suo nome" + +#: ../data/glade/preferences_window.glade.h:47 +msgid "" +"If checked, Gajim will remember the roster and chat window positions in the " +"screen and the sizes of them next time you run it" +msgstr "" +"Se marcato, Gajim manterrà le posizioni delle finestre di chat e della lista " +"contatti sullo schermo la prossima volta che verrà eseguito" + +#: ../data/glade/preferences_window.glade.h:48 +msgid "" +"If checked, Gajim will use protocol-specific status icons. (eg. A contact " +"from MSN will have the equivalent msn icon for status online, away, busy, " +"etc...)" +msgstr "" +"Se marcato, Gajim userà icone di stato specifiche per il protocollo usato. " +"(es., un contatto MSN avrà l'icona MSN equivalente per gli stati online, " +"assente, occupato, ecc...)" + +#: ../data/glade/preferences_window.glade.h:49 +msgid "" +"If not disabled, Gajim will replace ascii smilies like ':)' with equivalent " +"animated or static graphical emoticons" +msgstr "" +"Se marcato, Gajim sostituirà gli smiley ASCII come ':)' con gli equivalenti " +"emoticon grafici animati o statici" + +#: ../data/glade/preferences_window.glade.h:50 +msgid "Ma_nage..." +msgstr "_Gestisci..." + +#: ../data/glade/preferences_window.glade.h:51 +msgid "" +"Never\n" +"Always\n" +"Per account\n" +"Per type" +msgstr "" +"Mai\n" +"Sempre\n" +"Per account\n" +"Per tipo" + +#: ../data/glade/preferences_window.glade.h:55 +msgid "Notify me about contacts that: " +msgstr "Notificare i contatti che eseguono:" + +#: ../data/glade/preferences_window.glade.h:56 +#, fuzzy +msgid "Notify on new _GMail email" +msgstr "Notifica le nuove e-mail su _Gmail" + +#: ../data/glade/preferences_window.glade.h:57 +msgid "On every _message" +msgstr "In _tutti i messaggi" + +#: ../data/glade/preferences_window.glade.h:58 +msgid "One message _window:" +msgstr "Una finestra messaggi:" + +#: ../data/glade/preferences_window.glade.h:59 +msgid "Play _sounds" +msgstr "Riproduci _suoni" + +#: ../data/glade/preferences_window.glade.h:60 +msgid "Preferences" +msgstr "Preferenze" + +#: ../data/glade/preferences_window.glade.h:61 +msgid "Print time:" +msgstr "Stampa ora:" + +#: ../data/glade/preferences_window.glade.h:62 +msgid "Save _position and size for roster and chat windows" +msgstr "Salva _posizione e dimensione delle finestre di chat e lista contatti" + +#: ../data/glade/preferences_window.glade.h:63 +msgid "Show only in _roster" +msgstr "Mostra solo nella lista _contatti" + +#: ../data/glade/preferences_window.glade.h:64 +msgid "Sign _in" +msgstr "C_onnessione" + +#: ../data/glade/preferences_window.glade.h:65 +msgid "Sign _out" +msgstr "_Disconnessione" + +#: ../data/glade/preferences_window.glade.h:66 +msgid "Status" +msgstr "Stato" + +#: ../data/glade/preferences_window.glade.h:67 +msgid "T_heme:" +msgstr "T_ema:" + +#: ../data/glade/preferences_window.glade.h:68 +msgid "The auto away status message" +msgstr "Il messaggio di stato per l'assenza automatica" + +#: ../data/glade/preferences_window.glade.h:69 +msgid "The auto not available status message" +msgstr "Il messaggio di stato per il 'non disponibile' automatico" + +#: ../data/glade/preferences_window.glade.h:70 +msgid "Use _transports iconsets" +msgstr "Usa le icone dei _trasporti" + +#: ../data/glade/preferences_window.glade.h:71 +msgid "Use system _default" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:72 +msgid "Use t_rayicon (aka. notification area icon)" +msgstr "Usa _icona nell'area di notifica" + +#: ../data/glade/preferences_window.glade.h:73 +msgid "" +"When a new event (message, file transfer request etc..) is received, the " +"following methods may be used to inform you about it. Please note that " +"events about new messages only occur if it is a new message from a contact " +"you are not already chatting with" +msgstr "" +"Quando un nuovo evento (messaggio, richiesta di trasferimento file, ecc...) " +"viene ricevuto, i seguenti metodi possono venire usati per informarti di " +"ciò. Notare che gli eventi per i nuovi messaggi avverranno solo se si tratta " +"di un nuovo messaggio da un contatto con cui non si sta già chattando" + +#: ../data/glade/preferences_window.glade.h:74 +msgid "When new event is received" +msgstr "Quando si riceve un nuovo evento" + +#: ../data/glade/preferences_window.glade.h:75 +#, fuzzy +msgid "_Advanced Notifications Control..." +msgstr "Editor di configurazione avanzata" + +#: ../data/glade/preferences_window.glade.h:76 +msgid "_After time:" +msgstr "_Dopo l'ora:" + +#: ../data/glade/preferences_window.glade.h:77 +msgid "_Before time:" +msgstr "_Prima dell'ora:" + +#: ../data/glade/preferences_window.glade.h:78 +msgid "_Browser:" +msgstr "_Browser:" + +#: ../data/glade/preferences_window.glade.h:79 +msgid "_File manager:" +msgstr "Gestore _file:" + +#: ../data/glade/preferences_window.glade.h:80 +msgid "_Font:" +msgstr "_Carattere:" + +#: ../data/glade/preferences_window.glade.h:81 +msgid "_Highlight misspelled words" +msgstr "Evidenzia _parole scorrette" + +#: ../data/glade/preferences_window.glade.h:82 +msgid "_Ignore events from contacts not in the roster" +msgstr "_Ignora gli eventi da contatti non appartenenti alla lista" + +#: ../data/glade/preferences_window.glade.h:83 +msgid "_Incoming message:" +msgstr "Messaggio in _arrivo:" + +#: ../data/glade/preferences_window.glade.h:84 +msgid "_Log status changes of contacts" +msgstr "_Registra i cambiamenti di stato dei contatti" + +#: ../data/glade/preferences_window.glade.h:85 +msgid "_Mail client:" +msgstr "_Client mail:" + +#: ../data/glade/preferences_window.glade.h:86 +msgid "_Never" +msgstr "_Mai" + +#: ../data/glade/preferences_window.glade.h:87 +msgid "_Notify me about it" +msgstr "_Notifica" + +#: ../data/glade/preferences_window.glade.h:88 +msgid "_Open..." +msgstr "_Apri..." + +#: ../data/glade/preferences_window.glade.h:89 +msgid "_Outgoing message:" +msgstr "Messaggio in _uscita:" + +#: ../data/glade/preferences_window.glade.h:90 +msgid "_Player:" +msgstr "_Riproduttore:" + +#: ../data/glade/preferences_window.glade.h:91 +msgid "_Pop it up" +msgstr "_Mostra" + +#: ../data/glade/preferences_window.glade.h:92 +msgid "_Reset to Default Colors" +msgstr "_Reimposta ai colori di default" + +#: ../data/glade/preferences_window.glade.h:93 +msgid "_Sort contacts by status" +msgstr "_Ordina i contatti per stato" + +#: ../data/glade/preferences_window.glade.h:94 +msgid "_Status message:" +msgstr "Messaggio di _stato:" + +#: ../data/glade/preferences_window.glade.h:95 +msgid "_URL:" +msgstr "_URL:" + +#: ../data/glade/preferences_window.glade.h:96 +msgid "minutes" +msgstr "minuti" + +#: ../data/glade/privacy_list_edit_window.glade.h:1 +msgid "Add / Edit a rule" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:2 +#, fuzzy +msgid "List of rules" +msgstr "Formato di una linea" + +#: ../data/glade/privacy_list_edit_window.glade.h:3 +msgid "Privacy List" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:5 ../src/config.py:2281 +msgid "All" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:6 +msgid "Allow" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:7 +#, fuzzy +msgid "Default" +msgstr "Elimina" + +#: ../data/glade/privacy_list_edit_window.glade.h:9 +#, fuzzy +msgid "JabberID" +msgstr "ID Jabber: " + +#: ../data/glade/privacy_list_edit_window.glade.h:10 +#, fuzzy +msgid "Order:" +msgstr "Server:" + +#: ../data/glade/privacy_list_edit_window.glade.h:11 ../src/dialogs.py:1626 +#, fuzzy +msgid "Privacy List" +msgstr "Lista utenti bloccati" + +#: ../data/glade/privacy_list_edit_window.glade.h:12 +#, fuzzy +msgid "all by subscription" +msgstr "_Abbonamento" + +#: ../data/glade/privacy_list_edit_window.glade.h:13 +#, fuzzy +msgid "all in the group" +msgstr "Nel gruppo" + +#: ../data/glade/privacy_list_edit_window.glade.h:14 +msgid "" +"none\n" +"both\n" +"from\n" +"to" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:18 +#, fuzzy +msgid "to send me messages" +msgstr "Invia messaggio" + +#: ../data/glade/privacy_list_edit_window.glade.h:19 +msgid "to send me queries" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:20 +#, fuzzy +msgid "to send me status" +msgstr "Chiedi di poter vedere il suo stato" + +#: ../data/glade/privacy_list_edit_window.glade.h:21 +#, fuzzy +msgid "to view my status" +msgstr "Permetti di vedere il mio stato" + +#: ../data/glade/privacy_lists_first_window.glade.h:1 +msgid "Create your own Privacy Lists" +msgstr "" + +#: ../data/glade/privacy_lists_first_window.glade.h:2 +msgid "Server-based Privacy Lists" +msgstr "" + +#: ../data/glade/remove_account_window.glade.h:1 +msgid "What do you want to do?" +msgstr "Cosa fare?" + +#: ../data/glade/remove_account_window.glade.h:2 +msgid "Remove account _only from Gajim" +msgstr "Rimuovi l'account solo da _Gajim" + +#: ../data/glade/remove_account_window.glade.h:3 +msgid "Remove account from Gajim and from _server" +msgstr "Eliminare l'account da Gajim e dal _server" + +#: ../data/glade/roster_contact_context_menu.glade.h:1 +#, fuzzy +msgid "A_sk to see his/her status" +msgstr "Chiedi di poter vedere il suo stato" + +#: ../data/glade/roster_contact_context_menu.glade.h:2 +msgid "Add Special _Notification" +msgstr "Crea _notifica speciale" + +#: ../data/glade/roster_contact_context_menu.glade.h:3 +msgid "Assign Open_PGP Key" +msgstr "Assegna chiave Open_PGP" + +#: ../data/glade/roster_contact_context_menu.glade.h:4 +msgid "Edit _Groups" +msgstr "Modifica _gruppi" + +#: ../data/glade/roster_contact_context_menu.glade.h:5 +#: ../data/glade/systray_context_menu.glade.h:1 +msgid "Send Single _Message" +msgstr "Invia _messaggio singolo" + +#: ../data/glade/roster_contact_context_menu.glade.h:7 +msgid "Start _Chat" +msgstr "Inizia _chat" + +#: ../data/glade/roster_contact_context_menu.glade.h:9 +#, fuzzy +msgid "_Allow him/her to see my status" +msgstr "Permetti di vedere il mio stato" + +#: ../data/glade/roster_contact_context_menu.glade.h:10 +#, fuzzy +msgid "_Forbid him/her to see my status" +msgstr "Proibisci di vedere il mio stato" + +#: ../data/glade/roster_contact_context_menu.glade.h:12 +#: ../src/roster_window.py:1482 +msgid "_Remove from Roster" +msgstr "_Elimina dai contatti" + +#: ../data/glade/roster_contact_context_menu.glade.h:13 +#: ../src/roster_window.py:1470 +msgid "_Rename" +msgstr "_Rinomina" + +#: ../data/glade/roster_contact_context_menu.glade.h:14 +msgid "_Subscription" +msgstr "_Abbonamento" + +#: ../data/glade/roster_window.glade.h:1 +msgid "A_ccounts" +msgstr "_Account" + +#: ../data/glade/roster_window.glade.h:2 +msgid "Add _Contact" +msgstr "Aggiungi _contatto" + +#: ../data/glade/roster_window.glade.h:3 +msgid "File _Transfers" +msgstr "_Trasferimenti file" + +#: ../data/glade/roster_window.glade.h:4 +msgid "Frequently Asked Questions (online)" +msgstr "Domande frequenti (online)" + +#: ../data/glade/roster_window.glade.h:6 +msgid "Help online" +msgstr "Aiuto online" + +#: ../data/glade/roster_window.glade.h:7 +msgid "Profile, Avatar" +msgstr "Profilo, avatar" + +#: ../data/glade/roster_window.glade.h:8 +msgid "Show _Offline Contacts" +msgstr "Mostra contatti _offline" + +#: ../data/glade/roster_window.glade.h:11 +msgid "_Contents" +msgstr "_Contenuti" + +#: ../data/glade/roster_window.glade.h:12 +msgid "_Discover Services" +msgstr "_Ricerca servizi" + +#: ../data/glade/roster_window.glade.h:13 ../src/disco.py:1252 +#: ../src/roster_window.py:1462 +msgid "_Edit" +msgstr "_Modifica" + +#: ../data/glade/roster_window.glade.h:14 +msgid "_FAQ" +msgstr "_FAQ" + +#: ../data/glade/roster_window.glade.h:16 +msgid "_Help" +msgstr "A_iuto" + +#: ../data/glade/roster_window.glade.h:17 +msgid "_Preferences" +msgstr "_Preferenze" + +#: ../data/glade/roster_window.glade.h:18 +msgid "_Quit" +msgstr "_Esci" + +#: ../data/glade/service_discovery_window.glade.h:1 +msgid "G_o" +msgstr "_Vai" + +#: ../data/glade/service_discovery_window.glade.h:2 +msgid "_Address:" +msgstr "_Indirizzo:" + +#: ../data/glade/service_discovery_window.glade.h:3 +msgid "_Filter:" +msgstr "_Filtro:" + +#: ../data/glade/service_registration_window.glade.h:1 +msgid "Register to" +msgstr "Registra a" + +#: ../data/glade/service_registration_window.glade.h:2 +msgid "_Cancel" +msgstr "_Annulla" + +#: ../data/glade/service_registration_window.glade.h:3 +msgid "_OK" +msgstr "_OK" + +#: ../data/glade/single_message_window.glade.h:1 +msgid "0" +msgstr "0" + +#: ../data/glade/single_message_window.glade.h:2 +msgid "From:" +msgstr "Da:" + +#: ../data/glade/single_message_window.glade.h:3 +msgid "Reply to this message" +msgstr "Rispondi a questo messaggio" + +#: ../data/glade/single_message_window.glade.h:4 +msgid "Sen_d" +msgstr "_Invia" + +#: ../data/glade/single_message_window.glade.h:5 +msgid "Send message" +msgstr "Invia messaggio" + +#: ../data/glade/single_message_window.glade.h:6 +msgid "Send message and close window" +msgstr "Invia messaggio e chiudi la finestra" + +#: ../data/glade/single_message_window.glade.h:7 +msgid "Subject:" +msgstr "Oggetto:" + +#: ../data/glade/single_message_window.glade.h:8 +msgid "To:" +msgstr "A:" + +#: ../data/glade/single_message_window.glade.h:9 +msgid "_Reply" +msgstr "_Rispondi" + +#: ../data/glade/single_message_window.glade.h:10 +msgid "_Send & Close" +msgstr "_Invia e Chiudi" + +#: ../data/glade/subscription_request_window.glade.h:1 +msgid "Authorize contact so he can know when you're connected" +msgstr "Autorizza il contatto affinché sappia quando sei connesso" + +#: ../data/glade/subscription_request_window.glade.h:2 +msgid "Contact _Info" +msgstr "_Informazioni contatto" + +#: ../data/glade/subscription_request_window.glade.h:3 +msgid "Deny authorization from contact so he cannot know when you're connected" +msgstr "" +"Nega l'autorizzazione al contatto; in questa maniera non saprà quando sei " +"connesso" + +#: ../data/glade/subscription_request_window.glade.h:4 +msgid "Subscription Request" +msgstr "Richiesta di abbonamento" + +#: ../data/glade/subscription_request_window.glade.h:5 +msgid "_Authorize" +msgstr "_Autorizza" + +#: ../data/glade/subscription_request_window.glade.h:6 +msgid "_Deny" +msgstr "_Nega" + +#: ../data/glade/systray_context_menu.glade.h:2 +msgid "Show All Pending _Events" +msgstr "Mostra tutti gli _eventi pendenti" + +#: ../data/glade/systray_context_menu.glade.h:3 +msgid "Show _Roster" +msgstr "Mostra lista _contatti" + +#: ../data/glade/systray_context_menu.glade.h:4 +msgid "Sta_tus" +msgstr "Sta_to" + +#. "About" is the text of a tab of vcard window +#: ../data/glade/vcard_information_window.glade.h:2 +msgid "About" +msgstr "A proposito" + +#: ../data/glade/vcard_information_window.glade.h:3 +msgid "Address" +msgstr "Indirizzo" + +#: ../data/glade/vcard_information_window.glade.h:4 +msgid "Ask:" +msgstr "Chiedi:" + +#: ../data/glade/vcard_information_window.glade.h:5 +msgid "Birthday:" +msgstr "Data di nascita:" + +#: ../data/glade/vcard_information_window.glade.h:6 +msgid "City:" +msgstr "Città:" + +#: ../data/glade/vcard_information_window.glade.h:7 +msgid "Client:" +msgstr "Client:" + +#: ../data/glade/vcard_information_window.glade.h:8 +msgid "Company:" +msgstr "Società:" + +#: ../data/glade/vcard_information_window.glade.h:9 +msgid "Contact Information" +msgstr "Informazioni sul contatto" + +#: ../data/glade/vcard_information_window.glade.h:10 +msgid "Country:" +msgstr "Paese:" + +#: ../data/glade/vcard_information_window.glade.h:11 +msgid "Department:" +msgstr "Dipartimento:" + +#: ../data/glade/vcard_information_window.glade.h:12 +msgid "E-Mail:" +msgstr "E-Mail:" + +#: ../data/glade/vcard_information_window.glade.h:13 +msgid "Extra Address:" +msgstr "Indirizzo extra:" + +#. Family Name +#: ../data/glade/vcard_information_window.glade.h:15 +msgid "Family:" +msgstr "Cognome:" + +#: ../data/glade/vcard_information_window.glade.h:16 +msgid "Format: YYYY-MM-DD" +msgstr "Formato: AAAA-MM-GG" + +#. Given Name +#: ../data/glade/vcard_information_window.glade.h:19 +msgid "Given:" +msgstr "Nome:" + +#: ../data/glade/vcard_information_window.glade.h:20 +msgid "Homepage:" +msgstr "Homepage:" + +#: ../data/glade/vcard_information_window.glade.h:21 +msgid "Jabber" +msgstr "Jabber" + +#: ../data/glade/vcard_information_window.glade.h:22 +msgid "Jabber ID:" +msgstr "ID Jabber: " + +#: ../data/glade/vcard_information_window.glade.h:23 +msgid "Location" +msgstr "Indirizzo" + +#. Middle Name +#: ../data/glade/vcard_information_window.glade.h:25 +msgid "Middle:" +msgstr "Secondo nome:" + +#: ../data/glade/vcard_information_window.glade.h:26 +msgid "More" +msgstr "Ancora" + +#: ../data/glade/vcard_information_window.glade.h:29 +msgid "OS:" +msgstr "OS:" + +#: ../data/glade/vcard_information_window.glade.h:30 +msgid "Phone No.:" +msgstr "Telefono:" + +#: ../data/glade/vcard_information_window.glade.h:31 +msgid "Position:" +msgstr "Titolo:" + +#: ../data/glade/vcard_information_window.glade.h:32 +msgid "Postal Code:" +msgstr "Codice postale:" + +#. Prefix in Name +#: ../data/glade/vcard_information_window.glade.h:34 +msgid "Prefix:" +msgstr "Prefisso:" + +#: ../data/glade/vcard_information_window.glade.h:35 +msgid "Resource:" +msgstr "Risorsa:" + +#: ../data/glade/vcard_information_window.glade.h:36 +msgid "Role:" +msgstr "Ruolo:" + +#: ../data/glade/vcard_information_window.glade.h:37 +msgid "Set _Avatar" +msgstr "Imposta _avatar" + +#: ../data/glade/vcard_information_window.glade.h:38 +msgid "State:" +msgstr "Regione:" + +#: ../data/glade/vcard_information_window.glade.h:39 +msgid "Status:" +msgstr "Stato:" + +#: ../data/glade/vcard_information_window.glade.h:40 +msgid "Street:" +msgstr "Via:" + +#: ../data/glade/vcard_information_window.glade.h:41 +msgid "Subscription:" +msgstr "Abbonamento:" + +#. Suffix in Name +#: ../data/glade/vcard_information_window.glade.h:43 +msgid "Suffix:" +msgstr "Suffisso:" + +#: ../data/glade/vcard_information_window.glade.h:44 +msgid "Work" +msgstr "Lavoro" + +#: ../data/glade/vcard_information_window.glade.h:45 +msgid "_Log conversation history" +msgstr "_Memorizza cronologia conversazione" + +#: ../data/glade/vcard_information_window.glade.h:46 +msgid "_Publish" +msgstr "_Pubblica" + +#: ../data/glade/vcard_information_window.glade.h:47 +msgid "_Retrieve" +msgstr "_Recupera" + +#: ../data/glade/xml_console_window.glade.h:1 +msgid "Jabber Traffic" +msgstr "Traffico Jabber" + +#: ../data/glade/xml_console_window.glade.h:2 +msgid "XML Input" +msgstr "Inserimento XML" + +#. XML Console enable checkbutton +#: ../data/glade/xml_console_window.glade.h:4 +msgid "Enable" +msgstr "Abilita" + +#. Info/Query make the "IQ" initials. So translate like this 'YourLang/YourLang (Info/Query)'. Thanks (it's a tooltip so width is not a problem) +#: ../data/glade/xml_console_window.glade.h:6 +msgid "Info/Query" +msgstr "Info/Richiesta (Info/Query)" + +#. Info/Query: all(?) jabber xml start with Whom do you want to ban?\n" "\n" @@ -364,11 +2429,11 @@ msgstr "" "Chi si vuole bloccare?\n" "\n" -#: ../src/config.py:2023 +#: ../src/config.py:2062 msgid "Adding Member..." msgstr "Aggiunta membro..." -#: ../src/config.py:2024 +#: ../src/config.py:2063 msgid "" "Whom do you want to make a member?\n" "\n" @@ -376,11 +2441,11 @@ msgstr "" "Chi si vuole rendere membro?\n" "\n" -#: ../src/config.py:2026 +#: ../src/config.py:2065 msgid "Adding Owner..." msgstr "Aggiunta proprietario..." -#: ../src/config.py:2027 +#: ../src/config.py:2066 msgid "" "Whom do you want to make a owner?\n" "\n" @@ -388,11 +2453,11 @@ msgstr "" "Chi si vuole rendere proprietario?\n" "\n" -#: ../src/config.py:2029 +#: ../src/config.py:2068 msgid "Adding Administrator..." msgstr "Aggiunta amministratore..." -#: ../src/config.py:2030 +#: ../src/config.py:2069 msgid "" "Whom do you want to make an administrator?\n" "\n" @@ -400,7 +2465,7 @@ msgstr "" "Chi si vuole rendere amministratore?\n" "\n" -#: ../src/config.py:2031 +#: ../src/config.py:2070 msgid "" "Can be one of the following:\n" "1. user@domain/resource (only that resource matches).\n" @@ -417,85 +2482,89 @@ msgstr "" "4. dominio (il dominio corrisponde, così come qualsiasi utente@dominio,\n" "dominio/risorsa, o indirizzo contenente un sottodominio)." -#: ../src/config.py:2127 +#: ../src/config.py:2166 #, python-format msgid "Removing %s account" msgstr "Eliminazione account %s" -#: ../src/config.py:2144 ../src/roster_window.py:1859 +#: ../src/config.py:2183 ../src/roster_window.py:1857 msgid "Password Required" msgstr "Password richiesta" -#: ../src/config.py:2145 ../src/roster_window.py:1860 +#: ../src/config.py:2184 ../src/roster_window.py:1858 #, python-format msgid "Enter your password for account %s" msgstr "Inserire la password per l'account %s" -#: ../src/config.py:2146 ../src/roster_window.py:1861 +#: ../src/config.py:2185 ../src/roster_window.py:1859 msgid "Save password" msgstr "Memorizza password" -#: ../src/config.py:2159 +#: ../src/config.py:2198 #, python-format msgid "Account \"%s\" is connected to the server" msgstr "L'account \"%s\" è connesso al server" -#: ../src/config.py:2160 +#: ../src/config.py:2199 msgid "If you remove it, the connection will be lost." msgstr "Se viene rimosso, la connessione verrà persa." -#: ../src/config.py:2295 +#: ../src/config.py:2282 +msgid "Enter and leave only" +msgstr "" + +#: ../src/config.py:2352 msgid "New Room" msgstr "Nuova stanza" -#: ../src/config.py:2326 +#: ../src/config.py:2383 msgid "This bookmark has invalid data" msgstr "Questo segnalibro contiene dati non validi" -#: ../src/config.py:2327 +#: ../src/config.py:2384 msgid "" "Please be sure to fill out server and room fields or remove this bookmark." msgstr "" "Controllare di avere compilato i campi server e stanza, o eliminare questo " "segnalibro." -#: ../src/config.py:2564 +#: ../src/config.py:2638 msgid "Invalid username" msgstr "Nome utente non valido" -#: ../src/config.py:2565 +#: ../src/config.py:2639 msgid "You must provide a username to configure this account." msgstr "È necessario inserire un nome utente per configurare questo account." -#: ../src/config.py:2574 ../src/dialogs.py:1036 +#: ../src/config.py:2648 ../src/dialogs.py:1118 msgid "Invalid password" msgstr "Password non valida" -#: ../src/config.py:2575 +#: ../src/config.py:2649 msgid "You must enter a password for the new account." msgstr "È necessario inserire una password per il nuovo account." -#: ../src/config.py:2579 ../src/dialogs.py:1041 +#: ../src/config.py:2653 ../src/dialogs.py:1123 msgid "Passwords do not match" msgstr "Le password non coincidono" -#: ../src/config.py:2580 ../src/dialogs.py:1042 +#: ../src/config.py:2654 ../src/dialogs.py:1124 msgid "The passwords typed in both fields must be identical." msgstr "Le password immesse nei due campi devono essere identiche." -#: ../src/config.py:2599 +#: ../src/config.py:2673 msgid "Duplicate Jabber ID" msgstr "Jabber ID duplicato" -#: ../src/config.py:2600 +#: ../src/config.py:2674 msgid "This account is already configured in Gajim." msgstr "Questo account è già configurato in Gajim." -#: ../src/config.py:2617 +#: ../src/config.py:2691 msgid "Account has been added successfully" msgstr "L'account è stato aggiunto con successo" -#: ../src/config.py:2618 ../src/config.py:2651 +#: ../src/config.py:2692 ../src/config.py:2725 msgid "" "You can set advanced account options by pressing Advanced button, or later " "by clicking in Accounts menuitem under Edit menu from the main window." @@ -504,23 +2573,23 @@ msgstr "" "\", o farlo più tardi cliccando alla voce \"Account\" nel menu \"Modifica\" " "della finestra principale." -#: ../src/config.py:2650 +#: ../src/config.py:2724 msgid "Your new account has been created successfully" msgstr "Il nuovo account è stato creato con successo" -#: ../src/config.py:2666 +#: ../src/config.py:2740 msgid "An error occured during account creation" msgstr "Si è verificato un errore durante la creazione dell'account" -#: ../src/config.py:2723 +#: ../src/config.py:2797 msgid "Account name is in use" msgstr "Il nome account è già in uso" -#: ../src/config.py:2724 +#: ../src/config.py:2798 msgid "You already have an account using this name." msgstr "Esiste già un account con lo stesso nome" -#: ../src/conversation_textview.py:182 +#: ../src/conversation_textview.py:205 msgid "" "Text below this line is what has been said since the last time you paid " "attention to this group chat" @@ -528,393 +2597,466 @@ msgstr "" "Il testo sotto a questa riga è quanto è stato detto dall'ultima volta che si " "è prestata attenzione a questa chat di gruppo" -#: ../src/conversation_textview.py:239 +#: ../src/conversation_textview.py:263 #, python-format msgid "Actions for \"%s\"" msgstr "Azioni per \"%s\"" -#: ../src/conversation_textview.py:251 +#: ../src/conversation_textview.py:275 msgid "Read _Wikipedia Article" msgstr "Leggi l'articolo di _Wikipedia" -#: ../src/conversation_textview.py:255 +#: ../src/conversation_textview.py:280 msgid "Look it up in _Dictionary" msgstr "Controlla nel _Dizionario" #. we must have %s in the url if not WIKTIONARY -#: ../src/conversation_textview.py:270 +#: ../src/conversation_textview.py:296 #, python-format msgid "Dictionary URL is missing an \"%s\" and it is not WIKTIONARY" msgstr "Manca un \"%s\" nell'URL del Dizionario e questo non è WIKTIONARY" #. we must have %s in the url -#: ../src/conversation_textview.py:281 +#: ../src/conversation_textview.py:308 #, python-format msgid "Web Search URL is missing an \"%s\"" msgstr "Manca un \"%s\" nell'URL di ricerca su web" -#: ../src/conversation_textview.py:284 +#: ../src/conversation_textview.py:311 msgid "Web _Search for it" msgstr "_Cercalo nel Web" -#: ../src/conversation_textview.py:574 +#: ../src/conversation_textview.py:607 msgid "Yesterday" msgstr "Ieri" #. the number is >= 2 #. %i is day in year (1-365), %d (1-31) we want %i -#: ../src/conversation_textview.py:578 +#: ../src/conversation_textview.py:611 #, python-format msgid "%i days ago" msgstr "%i giorni fa" #. if we have subject, show it too! -#: ../src/conversation_textview.py:634 +#: ../src/conversation_textview.py:686 #, python-format msgid "Subject: %s\n" msgstr "Oggetto: %s\n" #. only say that to non Windows users -#: ../src/dbus_support.py:34 +#: ../src/dbus_support.py:32 msgid "D-Bus python bindings are missing in this computer" msgstr "I binding python per D-Bus sono mancanti su questo computer" -#: ../src/dbus_support.py:35 +#: ../src/dbus_support.py:33 msgid "D-Bus capabilities of Gajim cannot be used" msgstr "Le potenzialità D-Bus di Gajim non possono essere usate" -#: ../src/dialogs.py:64 +#: ../src/dialogs.py:55 #, python-format msgid "Contact's name: %s" msgstr "Nome contatto: %s" -#: ../src/dialogs.py:66 +#: ../src/dialogs.py:57 #, python-format msgid "JID: %s" msgstr "JID : %s" -#: ../src/dialogs.py:169 +#. Group name +#. In group boolean +#: ../src/dialogs.py:173 msgid "Group" msgstr "Gruppo" -#: ../src/dialogs.py:176 +#: ../src/dialogs.py:180 msgid "In the group" msgstr "Nel gruppo" -#: ../src/dialogs.py:226 +#: ../src/dialogs.py:230 msgid "KeyID" msgstr "KeyID" -#: ../src/dialogs.py:229 +#: ../src/dialogs.py:233 msgid "Contact name" msgstr "Nome contatto" -#: ../src/dialogs.py:263 +#: ../src/dialogs.py:266 #, python-format msgid "%s Status Message" msgstr "Messaggio di stato %s" -#: ../src/dialogs.py:265 +#: ../src/dialogs.py:268 msgid "Status Message" msgstr "Messaggio di stato" -#: ../src/dialogs.py:340 +#: ../src/dialogs.py:343 msgid "Save as Preset Status Message" msgstr "Salva come messaggio di stato preimpostato" -#: ../src/dialogs.py:341 +#: ../src/dialogs.py:344 msgid "Please type a name for this status message" msgstr "Inserire un nome per questo messaggio di stato" -#: ../src/dialogs.py:369 +#: ../src/dialogs.py:391 #, python-format msgid "Please fill in the data of the contact you want to add in account %s" msgstr "Inserire i dati del contatto che si vuole aggiungere all'account %s" -#: ../src/dialogs.py:371 +#: ../src/dialogs.py:393 msgid "Please fill in the data of the contact you want to add" msgstr "Inserire i dati del contatto che si vuole aggiungere" -#. the user can be in mutiple groups, see in all of them -#: ../src/dialogs.py:380 ../src/disco.py:118 ../src/disco.py:119 -#: ../src/disco.py:1258 ../src/roster_window.py:214 -#: ../src/roster_window.py:275 ../src/roster_window.py:310 -#: ../src/roster_window.py:330 ../src/roster_window.py:354 -#: ../src/roster_window.py:2940 ../src/roster_window.py:2942 -#: ../src/systray.py:291 ../src/common/helpers.py:42 +#: ../src/dialogs.py:403 ../src/disco.py:109 ../src/disco.py:110 +#: ../src/disco.py:1249 ../src/roster_window.py:207 +#: ../src/roster_window.py:273 ../src/roster_window.py:309 +#: ../src/roster_window.py:329 ../src/roster_window.py:353 +#: ../src/roster_window.py:2973 ../src/roster_window.py:2975 +#: ../src/common/helpers.py:39 msgid "Transports" msgstr "Trasporti" -#: ../src/dialogs.py:452 ../src/dialogs.py:458 +#: ../src/dialogs.py:493 ../src/dialogs.py:499 msgid "Invalid User ID" msgstr "ID utente non valido" -#: ../src/dialogs.py:459 +#: ../src/dialogs.py:500 msgid "The user ID must not contain a resource." msgstr "L'identificatore dell'utente deve non contenere una risorsa." -#: ../src/dialogs.py:466 +#: ../src/dialogs.py:513 msgid "Contact already in roster" msgstr "Contatto già presente nella lista" -#: ../src/dialogs.py:467 +#: ../src/dialogs.py:514 msgid "This contact is already listed in your roster." msgstr "Questo contatto è già presente nella lista." -#: ../src/dialogs.py:528 +#: ../src/dialogs.py:576 msgid "A GTK+ jabber client" msgstr "Un client jabber GTK+" -#: ../src/dialogs.py:539 +#: ../src/dialogs.py:577 +msgid "GTK+ Version:" +msgstr "" + +#: ../src/dialogs.py:578 +msgid "PyGTK Version:" +msgstr "" + +#: ../src/dialogs.py:586 +#, fuzzy +msgid "Current Developers:" +msgstr "Sviluppatori precedenti:" + +#: ../src/dialogs.py:588 msgid "Past Developers:" msgstr "Sviluppatori precedenti:" -#: ../src/dialogs.py:543 +#: ../src/dialogs.py:592 msgid "THANKS:" msgstr "GRAZIE:" -#. remove one english setence +#. remove one english sentence #. and add it manually as translatable -#: ../src/dialogs.py:550 +#: ../src/dialogs.py:598 msgid "Last but not least, we would like to thank all the package maintainers." msgstr "Dulcis in fundo, ringraziamo tutti i gestori dei pacchetti" #. here you write your name in the form Name FamilyName -#: ../src/dialogs.py:564 +#: ../src/dialogs.py:612 msgid "translator-credits" msgstr "" "Mauro Brenna \n" "Andrea Ratti \n" "Matteo Dell'Amico " -#: ../src/dialogs.py:826 +#: ../src/dialogs.py:738 +#, fuzzy, python-format +msgid "Unable to bind to port %s." +msgstr "Non è possibile entrare nella stanza" + +#: ../src/dialogs.py:739 +msgid "" +"Maybe you have another running instance of Gajim. File Transfer will be " +"canceled." +msgstr "" + +#: ../src/dialogs.py:881 #, python-format msgid "Subscription request for account %s from %s" msgstr "Richiesta di abbonamento per l'account %s da %s" -#: ../src/dialogs.py:829 +#: ../src/dialogs.py:884 #, python-format msgid "Subscription request from %s" msgstr "Richiesta di abbonamento da %s" -#: ../src/dialogs.py:872 +#: ../src/dialogs.py:926 msgid "You can not join a group chat unless you are connected." msgstr "Non è possibile unirsi a chat di gruppo quando non si è connessi." -#: ../src/dialogs.py:885 +#: ../src/dialogs.py:939 #, python-format msgid "Join Group Chat with account %s" msgstr "Entra in chat di gruppo con l'account %s" -#: ../src/dialogs.py:887 ../src/gtkgui.glade.h:177 -msgid "Join Group Chat" -msgstr "Entrare in chat di gruppo" - -#: ../src/dialogs.py:976 +#: ../src/dialogs.py:1030 msgid "Invalid room or server name" msgstr "Nome della stanza o del server non valido" -#: ../src/dialogs.py:977 +#: ../src/dialogs.py:1031 msgid "The room name or server name has not allowed characters." msgstr "Il nome della stanza o del server contiene caratteri non permessi." -#: ../src/dialogs.py:996 +#: ../src/dialogs.py:1050 #, python-format msgid "Start Chat with account %s" msgstr "Inizia chat con l'account %s" -#: ../src/dialogs.py:998 +#: ../src/dialogs.py:1052 msgid "Start Chat" msgstr "Inizia chat" -#: ../src/dialogs.py:999 +#: ../src/dialogs.py:1053 +#, fuzzy msgid "" -"Fill in the contact ID of the contact you would like\n" +"Fill in the jid, or nick of the contact you would like\n" "to send a chat message to:" msgstr "" "Introdurre l'ID del contatto a cui\n" "mandare un messaggio di chat:" #. if offline or connecting -#: ../src/dialogs.py:1007 ../src/dialogs.py:1330 ../src/dialogs.py:1450 +#: ../src/dialogs.py:1078 ../src/dialogs.py:1427 ../src/dialogs.py:1551 msgid "Connection not available" msgstr "Connessione non disponibile" -#: ../src/dialogs.py:1008 ../src/dialogs.py:1331 ../src/dialogs.py:1451 +#: ../src/dialogs.py:1079 ../src/dialogs.py:1428 ../src/dialogs.py:1552 #, python-format msgid "Please make sure you are connected with \"%s\"." msgstr "Assicurarsi di essere connesso con \"%s\"." -#: ../src/dialogs.py:1018 +#: ../src/dialogs.py:1088 ../src/dialogs.py:1091 +#, fuzzy +msgid "Invalid JID" +msgstr "ID Jabber non valido" + +#: ../src/dialogs.py:1091 +#, fuzzy, python-format +msgid "Unable to parse \"%s\"." +msgstr "Impossibile scrivere il file in %s" + +#: ../src/dialogs.py:1100 msgid "Without a connection, you can not change your password." msgstr "Senza una connessione, non è possibile cambiare la password." -#: ../src/dialogs.py:1037 +#: ../src/dialogs.py:1119 msgid "You must enter a password." msgstr "È necessario inserire una password." #. img to display #. default value -#: ../src/dialogs.py:1083 ../src/gajim.py:443 ../src/notify.py:129 +#: ../src/dialogs.py:1165 ../src/notify.py:126 ../src/notify.py:268 msgid "Contact Signed In" msgstr "Contatto connesso" -#: ../src/dialogs.py:1085 ../src/gajim.py:474 ../src/notify.py:131 +#: ../src/dialogs.py:1167 ../src/notify.py:134 ../src/notify.py:270 msgid "Contact Signed Out" msgstr "Contatto disconnesso" #. chat message -#: ../src/dialogs.py:1087 ../src/gajim.py:609 ../src/notify.py:133 +#: ../src/dialogs.py:1169 ../src/notify.py:154 ../src/notify.py:272 msgid "New Message" msgstr "Nuovo messaggio" #. single message -#: ../src/dialogs.py:1087 ../src/gajim.py:603 ../src/notify.py:133 +#: ../src/dialogs.py:1169 ../src/notify.py:138 ../src/notify.py:272 msgid "New Single Message" msgstr "Nuovo messaggio singolo" -#: ../src/dialogs.py:1088 ../src/gajim.py:586 ../src/notify.py:134 +#. private message +#: ../src/dialogs.py:1170 ../src/notify.py:145 ../src/notify.py:273 msgid "New Private Message" msgstr "Nuovo messaggio privato" -#: ../src/dialogs.py:1088 ../src/gajim.py:1049 ../src/notify.py:142 +#: ../src/dialogs.py:1170 ../src/gajim.py:1044 ../src/notify.py:281 msgid "New E-mail" msgstr "Nuova e-mail" -#: ../src/dialogs.py:1090 ../src/gajim.py:1187 ../src/notify.py:136 +#: ../src/dialogs.py:1172 ../src/gajim.py:1187 ../src/notify.py:275 msgid "File Transfer Request" msgstr "Richiesta di trasferimento file" -#: ../src/dialogs.py:1092 ../src/gajim.py:1035 ../src/gajim.py:1164 -#: ../src/notify.py:138 +#: ../src/dialogs.py:1174 ../src/gajim.py:1022 ../src/gajim.py:1164 +#: ../src/notify.py:277 msgid "File Transfer Error" msgstr "Errore nel trasferimento file" -#: ../src/dialogs.py:1094 ../src/gajim.py:1222 ../src/gajim.py:1244 -#: ../src/gajim.py:1261 ../src/notify.py:140 +#: ../src/dialogs.py:1176 ../src/gajim.py:1222 ../src/gajim.py:1244 +#: ../src/gajim.py:1261 ../src/notify.py:279 msgid "File Transfer Completed" msgstr "Trasferimento file completato" -#: ../src/dialogs.py:1095 ../src/gajim.py:1225 ../src/notify.py:140 +#: ../src/dialogs.py:1177 ../src/gajim.py:1225 ../src/notify.py:279 msgid "File Transfer Stopped" msgstr "Trasferimento file fermato" -#: ../src/dialogs.py:1097 ../src/gajim.py:953 ../src/notify.py:144 +#: ../src/dialogs.py:1179 ../src/gajim.py:920 ../src/notify.py:283 msgid "Groupchat Invitation" msgstr "Invito a chat di gruppo" +#: ../src/dialogs.py:1181 ../src/notify.py:118 ../src/notify.py:285 +#, fuzzy +msgid "Contact Changed Status" +msgstr "Contatto disconnesso" + #. FIXME: for Received with should become 'in' -#: ../src/dialogs.py:1262 +#: ../src/dialogs.py:1359 #, python-format msgid "Single Message with account %s" msgstr "Messaggio singolo con l'account %s" -#: ../src/dialogs.py:1264 +#: ../src/dialogs.py:1361 msgid "Single Message" msgstr "Messaggio singolo" #. prepare UI for Sending -#: ../src/dialogs.py:1267 +#: ../src/dialogs.py:1364 #, python-format msgid "Send %s" msgstr "Invia %s" #. prepare UI for Receiving -#: ../src/dialogs.py:1290 +#: ../src/dialogs.py:1387 #, python-format msgid "Received %s" msgstr "Ricevuto %s" #. we create a new blank window to send and we preset RE: and to jid -#: ../src/dialogs.py:1355 +#: ../src/dialogs.py:1454 #, python-format msgid "RE: %s" msgstr "RE: %s" -#: ../src/dialogs.py:1356 +#: ../src/dialogs.py:1455 #, python-format msgid "%s wrote:\n" msgstr "%s ha scritto:\n" -#: ../src/dialogs.py:1400 +#: ../src/dialogs.py:1499 #, python-format msgid "XML Console for %s" msgstr "Console XML per %s" -#: ../src/dialogs.py:1402 +#: ../src/dialogs.py:1501 msgid "XML Console" msgstr "Console XML" +#: ../src/dialogs.py:1620 +#, python-format +msgid "Privacy List %s" +msgstr "" + +#: ../src/dialogs.py:1624 +#, python-format +msgid "Privacy List for %s" +msgstr "" + +#: ../src/dialogs.py:1716 +#, fuzzy +msgid "Edit a rule" +msgstr "Formato di una linea" + +#: ../src/dialogs.py:1801 +#, fuzzy +msgid "Add a rule" +msgstr "Formato di una linea" + +#: ../src/dialogs.py:1897 +#, python-format +msgid "Privacy Lists for %s" +msgstr "" + +#: ../src/dialogs.py:1899 +#, fuzzy +msgid "Privacy Lists" +msgstr "Chat private" + #. FIXME: use nickname instead of contact_jid -#: ../src/dialogs.py:1488 +#: ../src/dialogs.py:1988 #, python-format msgid "%(contact_jid)s has invited you to %(room_jid)s room" msgstr "%(contact_jid)s ti ha invitato alla stanza %(room_jid)s" #. only if not None and not '' -#: ../src/dialogs.py:1494 +#: ../src/dialogs.py:1994 #, python-format msgid "Comment: %s" msgstr "Commento: %s" -#: ../src/dialogs.py:1554 +#: ../src/dialogs.py:2054 msgid "Choose Sound" msgstr "Scegliere il suono" -#: ../src/dialogs.py:1564 ../src/dialogs.py:1607 +#: ../src/dialogs.py:2064 ../src/dialogs.py:2107 msgid "All files" msgstr "Tutti i file" -#: ../src/dialogs.py:1569 +#: ../src/dialogs.py:2069 msgid "Wav Sounds" msgstr "Suoni Wav" -#: ../src/dialogs.py:1597 +#: ../src/dialogs.py:2097 msgid "Choose Image" msgstr "Scegli immagine" -#: ../src/dialogs.py:1612 +#: ../src/dialogs.py:2112 msgid "Images" msgstr "Immagini" -#: ../src/dialogs.py:1658 +#: ../src/dialogs.py:2157 #, python-format msgid "When %s becomes:" msgstr "Quando %s diventa:" -#: ../src/dialogs.py:1660 +#: ../src/dialogs.py:2159 #, python-format msgid "Adding Special Notification for %s" msgstr "Creazione notifica speciale per %s" -#: ../src/disco.py:117 +#: ../src/dialogs.py:2232 +#, fuzzy +msgid "Condition" +msgstr "Connessione" + +#: ../src/disco.py:108 msgid "Others" msgstr "Altri" #. conference is a category for listing mostly groupchats in service discovery -#: ../src/disco.py:121 +#: ../src/disco.py:112 msgid "Conference" msgstr "Conferenze" -#: ../src/disco.py:420 +#: ../src/disco.py:411 msgid "Without a connection, you can not browse available services" msgstr "" "Senza una connessione, non è possibile consultare i servizi disponibili" -#: ../src/disco.py:499 +#: ../src/disco.py:490 #, python-format msgid "Service Discovery using account %s" msgstr "Ricerca servizi usando l'account %s" -#: ../src/disco.py:500 +#: ../src/disco.py:491 msgid "Service Discovery" msgstr "Ricerca servizi" -#: ../src/disco.py:637 +#: ../src/disco.py:628 msgid "The service could not be found" msgstr "Il servizio non è stato trovato" -#: ../src/disco.py:638 +#: ../src/disco.py:629 msgid "" "There is no service at the address you entered, or it is not responding. " "Check the address and try again." @@ -922,171 +3064,174 @@ msgstr "" "Il servizio all'indirizzo immesso non risponde o è inesistente. Controllare " "l'indirizzo e riprovare." -#: ../src/disco.py:642 ../src/disco.py:924 +#: ../src/disco.py:633 ../src/disco.py:915 msgid "The service is not browsable" msgstr "Non è possibile consultare il servizio" -#: ../src/disco.py:643 +#: ../src/disco.py:634 msgid "This type of service does not contain any items to browse." msgstr "Questo tipo di servizio non contiene oggetti da consultare." -#: ../src/disco.py:723 +#: ../src/disco.py:714 #, python-format msgid "Browsing %s using account %s" msgstr "Sfoglia %s usando l'account %s" -#: ../src/disco.py:762 +#: ../src/disco.py:753 msgid "_Browse" msgstr "_Consulta" -#: ../src/disco.py:925 +#: ../src/disco.py:916 msgid "This service does not contain any items to browse." msgstr "Questo servizio non contiene oggetti da consultare." -#: ../src/disco.py:1146 ../src/disco.py:1263 +#: ../src/disco.py:1137 ../src/disco.py:1254 msgid "Re_gister" msgstr "_Registra" -#: ../src/disco.py:1154 ../src/disco.py:1516 ../src/gtkgui.glade.h:350 -msgid "_Join" -msgstr "_Entra" - -#: ../src/disco.py:1261 ../src/gtkgui.glade.h:334 ../src/roster_window.py:1462 -msgid "_Edit" -msgstr "_Modifica" - -#: ../src/disco.py:1300 +#: ../src/disco.py:1291 #, python-format msgid "Scanning %d / %d.." msgstr "Analisi %d / %d..." #. Users column -#: ../src/disco.py:1482 +#: ../src/disco.py:1473 msgid "Users" msgstr "Utenti" #. Description column -#: ../src/disco.py:1489 +#: ../src/disco.py:1480 msgid "Description" msgstr "Descrizione" -#: ../src/filetransfers_window.py:81 +#: ../src/filetransfers_window.py:72 msgid "File" msgstr "File" -#: ../src/filetransfers_window.py:96 +#: ../src/filetransfers_window.py:87 msgid "Time" msgstr "Tempo" -#: ../src/filetransfers_window.py:108 +#: ../src/filetransfers_window.py:99 msgid "Progress" msgstr "Progresso" -#: ../src/filetransfers_window.py:176 ../src/filetransfers_window.py:238 +#: ../src/filetransfers_window.py:163 ../src/filetransfers_window.py:223 #, python-format msgid "Filename: %s" msgstr "Nome file: %s" -#: ../src/filetransfers_window.py:178 ../src/filetransfers_window.py:308 +#: ../src/filetransfers_window.py:164 ../src/filetransfers_window.py:291 #, python-format msgid "Size: %s" msgstr "Dimensione: %s" #. You is a reply of who sent a file #. You is a reply of who received a file -#: ../src/filetransfers_window.py:187 ../src/filetransfers_window.py:197 -#: ../src/history_manager.py:452 +#: ../src/filetransfers_window.py:173 ../src/filetransfers_window.py:183 +#: ../src/history_manager.py:454 msgid "You" msgstr "Tu" -#: ../src/filetransfers_window.py:188 ../src/filetransfers_window.py:240 +#: ../src/filetransfers_window.py:174 ../src/filetransfers_window.py:224 #, python-format msgid "Sender: %s" msgstr "Mittente: %s" -#: ../src/filetransfers_window.py:189 ../src/filetransfers_window.py:555 -#: ../src/tooltips.py:617 +#: ../src/filetransfers_window.py:175 ../src/filetransfers_window.py:556 +#: ../src/tooltips.py:639 msgid "Recipient: " msgstr "Destinatario: " -#: ../src/filetransfers_window.py:200 +#: ../src/filetransfers_window.py:186 #, python-format msgid "Saved in: %s" msgstr "Memorizzato in: %s" -#: ../src/filetransfers_window.py:203 +#: ../src/filetransfers_window.py:188 msgid "File transfer completed" msgstr "Trasferimento file completato" -#: ../src/filetransfers_window.py:205 ../src/gtkgui.glade.h:366 -msgid "_Open Containing Folder" -msgstr "_Apri cartella" - -#: ../src/filetransfers_window.py:219 ../src/filetransfers_window.py:227 +#: ../src/filetransfers_window.py:204 ../src/filetransfers_window.py:212 msgid "File transfer canceled" msgstr "Trasferimento file annullato" -#: ../src/filetransfers_window.py:219 ../src/filetransfers_window.py:228 +#: ../src/filetransfers_window.py:204 ../src/filetransfers_window.py:213 msgid "Connection with peer cannot be established." msgstr "La connessione non può essere stabilita." -#: ../src/filetransfers_window.py:242 +#: ../src/filetransfers_window.py:225 msgid "File transfer stopped by the contact of the other side" msgstr "Trasferimento file fermato dal contatto" -#: ../src/filetransfers_window.py:259 +#: ../src/filetransfers_window.py:242 msgid "Choose File to Send..." msgstr "Scegliere il file da inviare..." -#. Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector) -#: ../src/filetransfers_window.py:266 ../src/gtkgui.glade.h:390 -msgid "_Send" -msgstr "_Invia" - -#: ../src/filetransfers_window.py:273 +#: ../src/filetransfers_window.py:256 msgid "Gajim cannot access this file" msgstr "Gajim non riesce a leggere questo file" -#: ../src/filetransfers_window.py:274 +#: ../src/filetransfers_window.py:257 msgid "This file is being used by another process." msgstr "Questo file è in uso da un altro processo." -#: ../src/filetransfers_window.py:306 +#: ../src/filetransfers_window.py:289 #, python-format msgid "File: %s" msgstr "File: %s" -#: ../src/filetransfers_window.py:311 +#: ../src/filetransfers_window.py:294 #, python-format msgid "Type: %s" msgstr "Tipo: %s" -#: ../src/filetransfers_window.py:313 +#: ../src/filetransfers_window.py:296 #, python-format msgid "Description: %s" msgstr "Descrizione: %s" -#: ../src/filetransfers_window.py:314 +#: ../src/filetransfers_window.py:297 #, python-format msgid "%s wants to send you a file:" msgstr "%s vuole inviarti un file:" -#: ../src/filetransfers_window.py:329 +#: ../src/filetransfers_window.py:311 +#, python-format +msgid "Cannot overwrite existing file \"%s\"" +msgstr "" + +#: ../src/filetransfers_window.py:312 +msgid "" +"A file with this name already exists and you do not have permission to " +"overwrite it." +msgstr "" + +#: ../src/filetransfers_window.py:319 ../src/gtkgui_helpers.py:685 msgid "This file already exists" msgstr "Questo file esiste già" -#: ../src/filetransfers_window.py:329 +#: ../src/filetransfers_window.py:319 ../src/gtkgui_helpers.py:685 msgid "What do you want to do?" msgstr "Cosa fare?" -#: ../src/filetransfers_window.py:344 +#: ../src/filetransfers_window.py:331 +#, python-format +msgid "Directory \"%s\" is not writable" +msgstr "" + +#: ../src/filetransfers_window.py:331 +msgid "You do not have permission to create files in this directory." +msgstr "" + +#: ../src/filetransfers_window.py:341 msgid "Save File as..." msgstr "Salva file come..." #. Print remaining time in format 00:00:00 #. You can change the places of (hours), (minutes), (seconds) - #. they are not translatable. -#: ../src/filetransfers_window.py:419 +#: ../src/filetransfers_window.py:420 #, python-format msgid "%(hours)02.d:%(minutes)02.d:%(seconds)02.d" msgstr "%(hours)02.d:%(minutes)02.d:%(seconds)02.d" @@ -1094,29 +3239,29 @@ msgstr "%(hours)02.d:%(minutes)02.d:%(seconds)02.d" #. This should make the string Kb/s, #. where 'Kb' part is taken from %s. #. Only the 's' after / (which means second) should be translated. -#: ../src/filetransfers_window.py:491 +#: ../src/filetransfers_window.py:492 #, python-format msgid "(%(filesize_unit)s/s)" msgstr "(%(filesize_unit)s/s)" -#: ../src/filetransfers_window.py:527 ../src/filetransfers_window.py:530 +#: ../src/filetransfers_window.py:528 ../src/filetransfers_window.py:531 msgid "Invalid File" msgstr "File non valido" -#: ../src/filetransfers_window.py:527 +#: ../src/filetransfers_window.py:528 msgid "File: " msgstr "File: " -#: ../src/filetransfers_window.py:531 +#: ../src/filetransfers_window.py:532 msgid "It is not possible to send empty files" msgstr "Non è possibile inviare file vuoti" -#: ../src/filetransfers_window.py:551 ../src/tooltips.py:498 -#: ../src/tooltips.py:607 +#: ../src/filetransfers_window.py:552 ../src/tooltips.py:511 +#: ../src/tooltips.py:629 msgid "Name: " msgstr "Nome: " -#: ../src/filetransfers_window.py:553 ../src/tooltips.py:611 +#: ../src/filetransfers_window.py:554 ../src/tooltips.py:633 msgid "Sender: " msgstr "Mittente: " @@ -1124,75 +3269,74 @@ msgstr "Mittente: " msgid "Pause" msgstr "Pausa" -#: ../src/filetransfers_window.py:753 ../src/gtkgui.glade.h:328 -msgid "_Continue" -msgstr "_Continua" - -#: ../src/gajim-remote.py:84 +#: ../src/gajim-remote.py:82 msgid "shows a help on specific command" msgstr "mostra un aiuto su di un comando specifico" #. User gets help for the command, specified by this parameter -#: ../src/gajim-remote.py:87 +#: ../src/gajim-remote.py:85 msgid "command" msgstr "comando" -#: ../src/gajim-remote.py:88 +#: ../src/gajim-remote.py:86 msgid "show help on command" msgstr "mostra aiuto sul comando" -#: ../src/gajim-remote.py:92 +#: ../src/gajim-remote.py:90 msgid "Shows or hides the roster window" msgstr "Mostra o nascondi la lista contatti" -#: ../src/gajim-remote.py:96 +#: ../src/gajim-remote.py:94 msgid "Popups a window with the next unread message" msgstr "Apre una finestra con il prossimo messaggio non letto" -#: ../src/gajim-remote.py:100 +#: ../src/gajim-remote.py:98 msgid "" "Prints a list of all contacts in the roster. Each contact appear on a " "separate line" msgstr "Stampa la lista contatti. Ogni contatto appare su una linea separata" -#: ../src/gajim-remote.py:102 ../src/gajim-remote.py:115 -#: ../src/gajim-remote.py:125 ../src/gajim-remote.py:138 -#: ../src/gajim-remote.py:159 ../src/gajim-remote.py:189 -#: ../src/gajim-remote.py:197 ../src/gajim-remote.py:204 -#: ../src/gajim-remote.py:211 +#: ../src/gajim-remote.py:100 ../src/gajim-remote.py:114 +#: ../src/gajim-remote.py:124 ../src/gajim-remote.py:137 +#: ../src/gajim-remote.py:151 ../src/gajim-remote.py:172 +#: ../src/gajim-remote.py:202 ../src/gajim-remote.py:211 +#: ../src/gajim-remote.py:218 ../src/gajim-remote.py:225 +#: ../src/gajim-remote.py:236 msgid "account" msgstr "account" -#: ../src/gajim-remote.py:102 +#: ../src/gajim-remote.py:100 msgid "show only contacts of the given account" msgstr "mostra solo i contatti dell'account dato" -#: ../src/gajim-remote.py:107 +#: ../src/gajim-remote.py:105 msgid "Prints a list of registered accounts" msgstr "Stampa un elenco degli account registrati" -#: ../src/gajim-remote.py:111 +#: ../src/gajim-remote.py:109 msgid "Changes the status of account or accounts" msgstr "Cambia lo stato degli account" -#: ../src/gajim-remote.py:113 +#. offline, online, chat, away, xa, dnd, invisible should not be translated +#: ../src/gajim-remote.py:112 msgid "status" msgstr "stato" -#: ../src/gajim-remote.py:113 +#: ../src/gajim-remote.py:112 msgid "one of: offline, online, chat, away, xa, dnd, invisible " msgstr "" "uno fra: offline, online, chat, assente, xa, non disturbare, invisibile" -#: ../src/gajim-remote.py:114 ../src/gajim-remote.py:135 +#: ../src/gajim-remote.py:113 ../src/gajim-remote.py:134 +#: ../src/gajim-remote.py:148 msgid "message" msgstr "messaggio" -#: ../src/gajim-remote.py:114 +#: ../src/gajim-remote.py:113 msgid "status message" msgstr "messaggio di stato" -#: ../src/gajim-remote.py:115 +#: ../src/gajim-remote.py:114 msgid "" "change status of account \"account\". If not specified, try to change status " "of all accounts that have \"sync with global status\" option set" @@ -1201,150 +3345,186 @@ msgstr "" "cambiare lo stato di tutti gli account che hanno marcato l'opzione " "\"sincronizza con lo stato globale\"" -#: ../src/gajim-remote.py:121 +#: ../src/gajim-remote.py:120 msgid "Shows the chat dialog so that you can send messages to a contact" msgstr "Mostra la finestra di chat per mandare messaggi ad un contatto" -#: ../src/gajim-remote.py:123 +#: ../src/gajim-remote.py:122 msgid "JID of the contact that you want to chat with" msgstr "JID del contatto con cui si vuole chattare" -#: ../src/gajim-remote.py:125 ../src/gajim-remote.py:189 +#: ../src/gajim-remote.py:124 ../src/gajim-remote.py:202 msgid "if specified, contact is taken from the contact list of this account" msgstr "" "se specificato, il contatto è preso dalla lista contatti di questo account" -#: ../src/gajim-remote.py:130 +#: ../src/gajim-remote.py:129 +#, fuzzy msgid "" -"Sends new message to a contact in the roster. Both OpenPGP key and account " -"are optional. If you want to set only 'account', without 'OpenPGP key', just " -"set 'OpenPGP key' to ''." +"Sends new chat message to a contact in the roster. Both OpenPGP key and " +"account are optional. If you want to set only 'account', without 'OpenPGP " +"key', just set 'OpenPGP key' to ''." msgstr "" "Invia un nuovo messaggio ad un membro della lista contatti. Sia la chiave " "OpenPGP che l'account sono opzionali. Se si vuole impostare solo 'account', " "senza 'chiave OpenPGP', impostare 'chiave OpenPGP' a ''." -#: ../src/gajim-remote.py:134 +#: ../src/gajim-remote.py:133 ../src/gajim-remote.py:146 msgid "JID of the contact that will receive the message" msgstr "JID del contatto che riceverà il messaggio" -#: ../src/gajim-remote.py:135 +#: ../src/gajim-remote.py:134 ../src/gajim-remote.py:148 msgid "message contents" msgstr "contenuti messaggi" -#: ../src/gajim-remote.py:136 +#: ../src/gajim-remote.py:135 ../src/gajim-remote.py:149 msgid "pgp key" msgstr "chiave pgp" -#: ../src/gajim-remote.py:136 +#: ../src/gajim-remote.py:135 ../src/gajim-remote.py:149 msgid "if specified, the message will be encrypted using this public key" msgstr "" "se specificato, il messaggio verrà criptato usando questa chiave pubblica" -#: ../src/gajim-remote.py:138 +#: ../src/gajim-remote.py:137 ../src/gajim-remote.py:151 msgid "if specified, the message will be sent using this account" msgstr "se specificato, il messaggio verrà inviato usando questo account" -#: ../src/gajim-remote.py:143 +#: ../src/gajim-remote.py:142 +#, fuzzy +msgid "" +"Sends new single message to a contact in the roster. Both OpenPGP key and " +"account are optional. If you want to set only 'account', without 'OpenPGP " +"key', just set 'OpenPGP key' to ''." +msgstr "" +"Invia un nuovo messaggio ad un membro della lista contatti. Sia la chiave " +"OpenPGP che l'account sono opzionali. Se si vuole impostare solo 'account', " +"senza 'chiave OpenPGP', impostare 'chiave OpenPGP' a ''." + +#: ../src/gajim-remote.py:147 +#, fuzzy +msgid "subject" +msgstr "Oggetto" + +#: ../src/gajim-remote.py:147 +#, fuzzy +msgid "message subject" +msgstr "Messaggio inviato" + +#: ../src/gajim-remote.py:156 msgid "Gets detailed info on a contact" msgstr "Ottiene informazioni dettagliate su un contatto" -#: ../src/gajim-remote.py:145 ../src/gajim-remote.py:158 -#: ../src/gajim-remote.py:188 +#: ../src/gajim-remote.py:158 ../src/gajim-remote.py:171 +#: ../src/gajim-remote.py:201 ../src/gajim-remote.py:210 msgid "JID of the contact" msgstr "JID del contatto" -#: ../src/gajim-remote.py:149 +#: ../src/gajim-remote.py:162 msgid "Gets detailed info on a account" msgstr "Ottiene informazioni dettagliate su un contatto" -#: ../src/gajim-remote.py:151 +#: ../src/gajim-remote.py:164 msgid "Name of the account" msgstr "Nome dell'account" -#: ../src/gajim-remote.py:155 +#: ../src/gajim-remote.py:168 msgid "Sends file to a contact" msgstr "Invia file ad un contatto" -#: ../src/gajim-remote.py:157 +#: ../src/gajim-remote.py:170 msgid "file" msgstr "file" -#: ../src/gajim-remote.py:157 +#: ../src/gajim-remote.py:170 msgid "File path" msgstr "Percorso file" -#: ../src/gajim-remote.py:159 +#: ../src/gajim-remote.py:172 msgid "if specified, file will be sent using this account" msgstr "se specificato, il file verrà inviato usando questo account" -#: ../src/gajim-remote.py:164 +#: ../src/gajim-remote.py:177 msgid "Lists all preferences and their values" msgstr "Mostra tutte le preferenze ed i relativi valori" -#: ../src/gajim-remote.py:168 +#: ../src/gajim-remote.py:181 msgid "Sets value of 'key' to 'value'." msgstr "Imposta il valore di 'chiave' a 'valore'." -#: ../src/gajim-remote.py:170 +#: ../src/gajim-remote.py:183 msgid "key=value" msgstr "chiave=valore" -#: ../src/gajim-remote.py:170 +#: ../src/gajim-remote.py:183 msgid "'key' is the name of the preference, 'value' is the value to set it to" msgstr "" "'chiave' è il nome della preferenza, 'valore' è il valore a cui impostarla" -#: ../src/gajim-remote.py:175 +#: ../src/gajim-remote.py:188 msgid "Deletes a preference item" msgstr "Elimina un oggetto dalle preferenze" -#: ../src/gajim-remote.py:177 +#: ../src/gajim-remote.py:190 msgid "key" msgstr "chiave" -#: ../src/gajim-remote.py:177 +#: ../src/gajim-remote.py:190 msgid "name of the preference to be deleted" msgstr "nome della preferenza da eliminare" -#: ../src/gajim-remote.py:181 +#: ../src/gajim-remote.py:194 msgid "Writes the current state of Gajim preferences to the .config file" msgstr "Scrive lo stato corrente delle preferenze di Gajim nel file .config" -#: ../src/gajim-remote.py:186 +#: ../src/gajim-remote.py:199 msgid "Removes contact from roster" msgstr "Elimina il contatto dalla lista" -#: ../src/gajim-remote.py:195 +#: ../src/gajim-remote.py:208 msgid "Adds contact to roster" msgstr "Aggiunge il contatto alla lista" -#: ../src/gajim-remote.py:197 -msgid "Adds new contact to this account." +#: ../src/gajim-remote.py:210 +msgid "jid" +msgstr "" + +#: ../src/gajim-remote.py:211 +#, fuzzy +msgid "Adds new contact to this account" msgstr "Aggiunge un nuovo contatto a questo account" -#: ../src/gajim-remote.py:202 +#: ../src/gajim-remote.py:216 msgid "Returns current status (the global one unless account is specified)" msgstr "" "Restituisce lo stato corrente (quello globale se non è specificato un " "account)" -#: ../src/gajim-remote.py:209 +#: ../src/gajim-remote.py:223 msgid "" "Returns current status message(the global one unless account is specified)" msgstr "" "Restituisce il messaggio di stato corrente (quello globale se non è " "specificato un account)" -#: ../src/gajim-remote.py:216 +#: ../src/gajim-remote.py:230 msgid "Returns number of unreaded messages" msgstr "Restituisce il numero di messaggi non letti" +#: ../src/gajim-remote.py:234 +msgid "Open 'Start Chat' dialog" +msgstr "" + #: ../src/gajim-remote.py:236 +#, fuzzy +msgid "Starts chat, using this account" +msgstr "Inizia chat con l'account %s" + +#: ../src/gajim-remote.py:256 msgid "Missing argument \"contact_jid\"" msgstr "Parametro mancante \"contact_jid\"" -#: ../src/gajim-remote.py:255 +#: ../src/gajim-remote.py:275 #, python-format msgid "" "'%s' is not in your roster.\n" @@ -1353,16 +3533,16 @@ msgstr "" "'%s' non appartiene alla lista contatti.\n" "Specificare l'account per l'invio del messaggio." -#: ../src/gajim-remote.py:258 +#: ../src/gajim-remote.py:278 msgid "You have no active account" msgstr "Non ci sono account attivi" -#: ../src/gajim-remote.py:301 +#: ../src/gajim-remote.py:321 #, python-format msgid "Unknown D-Bus version: %s" msgstr "Versione D-Bus sconosciuta: %s" -#: ../src/gajim-remote.py:328 +#: ../src/gajim-remote.py:348 #, python-format msgid "" "Usage: %s %s %s \n" @@ -1371,16 +3551,16 @@ msgstr "" "Uso: %s %s %s \n" "\t %s" -#: ../src/gajim-remote.py:331 +#: ../src/gajim-remote.py:351 msgid "Arguments:" msgstr "Parametri:" -#: ../src/gajim-remote.py:335 +#: ../src/gajim-remote.py:355 #, python-format msgid "%s not found" msgstr "%s non trovato" -#: ../src/gajim-remote.py:339 +#: ../src/gajim-remote.py:359 #, python-format msgid "" "Usage: %s command [arguments]\n" @@ -1389,7 +3569,7 @@ msgstr "" "Uso: %s comando [parametri]\n" "Il comando è uno fra:\n" -#: ../src/gajim-remote.py:413 +#: ../src/gajim-remote.py:433 #, python-format msgid "" "Argument \"%s\" is not specified. \n" @@ -1441,103 +3621,92 @@ msgstr "Verificare che GTK+ e PyGTK abbiano supporto libglade sul sistema." msgid "Gajim needs PySQLite2 to run" msgstr "Gajim ha bisogno di PySQLite2 per essere eseguito" -#: ../src/gajim.py:235 +#. set the icon to all newly opened wind +#: ../src/gajim.py:151 +msgid "Gajim is already running" +msgstr "" + +#: ../src/gajim.py:152 +msgid "" +"Another instance of Gajim seems to be running\n" +"Run anyway?" +msgstr "" + +#: ../src/gajim.py:267 #, python-format msgid "HTTP (%s) Authorization for %s (id: %s)" msgstr "Autorizzazione HTTP (%s) per %s (id: %s)" -#: ../src/gajim.py:236 +#: ../src/gajim.py:268 msgid "Do you accept this request?" msgstr "Accettare questa richiesta?" -#: ../src/gajim.py:438 -#, python-format -msgid "%(nickname)s Signed In" -msgstr "%(nickname)s connesso" - -#: ../src/gajim.py:469 -#, python-format -msgid "%(nickname)s Signed Out" -msgstr "%(nickname)s disconnesso" - -#: ../src/gajim.py:583 -#, python-format -msgid "New Private Message from room %s" -msgstr "Nuovo messaggio privato dalla stanza %s" - -#: ../src/gajim.py:584 -#, python-format -msgid "%(nickname)s: %(message)s" -msgstr "%(nickname)s: %(message)s" - -#: ../src/gajim.py:606 -#, python-format -msgid "New Single Message from %(nickname)s" -msgstr "Nuovo messaggio singolo da %(nickname)s" - -#: ../src/gajim.py:612 -#, python-format -msgid "New Message from %(nickname)s" -msgstr "Nuovo messaggio da %(nickname)s" - -#: ../src/gajim.py:660 +#: ../src/gajim.py:611 #, python-format msgid "error while sending %s ( %s )" msgstr "errore durante l'invio di %s ( %s )" -#: ../src/gajim.py:700 +#: ../src/gajim.py:651 msgid "Authorization accepted" msgstr "Autorizzazione accettata" -#: ../src/gajim.py:701 +#: ../src/gajim.py:652 #, python-format msgid "The contact \"%s\" has authorized you to see his or her status." msgstr "Il contatto \"%s\" ti ha autorizzato a vedere il suo stato." -#: ../src/gajim.py:709 +#: ../src/gajim.py:660 #, python-format msgid "Contact \"%s\" removed subscription from you" msgstr "Il contatto \"%s\" ha eliminato il tuo abbonamento verso di lui" -#: ../src/gajim.py:710 +#: ../src/gajim.py:661 msgid "You will always see him or her as offline." msgstr "Lo vedrai sempre come offline." -#: ../src/gajim.py:736 +#: ../src/gajim.py:704 #, python-format msgid "Contact with \"%s\" cannot be established" msgstr "Non si può contattare \"%s\"" -#: ../src/gajim.py:737 ../src/common/connection.py:349 +#: ../src/gajim.py:705 ../src/common/connection.py:398 msgid "Check your connection or try again later." msgstr "Controllare la connessione o riprovare più tardi." -#: ../src/gajim.py:874 ../src/roster_window.py:1012 +#: ../src/gajim.py:849 ../src/roster_window.py:1025 #, python-format msgid "%s is now %s (%s)" msgstr "%s è ora %s (%s)" -#: ../src/gajim.py:963 +#: ../src/gajim.py:930 msgid "Your passphrase is incorrect" msgstr "Passphrase errata" -#: ../src/gajim.py:964 +#: ../src/gajim.py:931 msgid "You are currently connected without your OpenPGP key." msgstr "Si è connessi senza la chiave OpenPGP" #. FIXME: find a better image -#: ../src/gajim.py:1045 +#: ../src/gajim.py:1033 #, python-format msgid "New E-mail on %(gmail_mail_address)s" msgstr "Nuova e-mail su %(gmail_mail_address)s" -#: ../src/gajim.py:1047 +#: ../src/gajim.py:1035 #, python-format msgid "You have %d new E-mail message" msgid_plural "You have %d new E-mail messages" msgstr[0] "C'è %d nuova e-mail" msgstr[1] "Ci sono %d nuove e-mail" +#. each message has a 'From', 'Subject' and 'Snippet' field +#: ../src/gajim.py:1040 +#, python-format +msgid "" +"\n" +"From: %(from_address)s" +msgstr "" + #: ../src/gajim.py:1185 #, python-format msgid "%s wants to send you a file." @@ -1587,140 +3756,150 @@ msgstr "" #. it is good to notify the user #. in case he or she cannot see the output of the console -#: ../src/gajim.py:1634 +#: ../src/gajim.py:1683 msgid "Could not save your settings and preferences" msgstr "Impossibile salvare impostazioni e preferenze" -#: ../src/gajim.py:1848 +#: ../src/gajim.py:1903 msgid "Session Management support not available (missing gnome.ui module)" msgstr "Supporto gestione sessioni non disponibile (modulo gnome.ui mancante)" -#: ../src/gajim.py:1878 +#: ../src/gajim.py:1932 msgid "Migrating Logs..." msgstr "Migrazione log..." -#: ../src/gajim.py:1879 +#: ../src/gajim.py:1933 msgid "Please wait while logs are being migrated..." msgstr "Attendere durante la migrazione dei log..." -#: ../src/gajim_themes_window.py:67 +#: ../src/gajim_themes_window.py:59 msgid "Theme" msgstr "Tema" #. don't confuse translators -#: ../src/gajim_themes_window.py:149 +#: ../src/gajim_themes_window.py:141 msgid "theme name" msgstr "nome del tema" -#: ../src/gajim_themes_window.py:166 +#: ../src/gajim_themes_window.py:158 msgid "You cannot delete your current theme" msgstr "Non è possibile eliminare il tema corrente" -#: ../src/gajim_themes_window.py:167 +#: ../src/gajim_themes_window.py:159 msgid "Please first choose another for your current theme." msgstr "Scegliere prima un altro tema." -#: ../src/groupchat_control.py:68 +#: ../src/groupchat_control.py:99 msgid "Private Chat" msgstr "Chat privata" -#: ../src/groupchat_control.py:68 +#: ../src/groupchat_control.py:99 msgid "Private Chats" msgstr "Chat private" -#: ../src/groupchat_control.py:84 +#: ../src/groupchat_control.py:115 msgid "Sending private message failed" msgstr "Invio messaggio privato fallito" #. in second %s code replaces with nickname -#: ../src/groupchat_control.py:86 +#: ../src/groupchat_control.py:117 #, python-format msgid "You are no longer in room \"%s\" or \"%s\" has left." msgstr "Non sei più nella stanza \"%s\" o \"%s\" è uscito." -#: ../src/groupchat_control.py:98 +#: ../src/groupchat_control.py:129 msgid "Group Chat" msgstr "Chat di gruppo" -#: ../src/groupchat_control.py:98 +#: ../src/groupchat_control.py:129 msgid "Group Chats" msgstr "Chat di gruppo" -#: ../src/groupchat_control.py:595 +#: ../src/groupchat_control.py:308 +#, fuzzy +msgid "Insert Nickname" +msgstr "Cambia _nickname" + +#: ../src/groupchat_control.py:702 msgid "This room has no subject" msgstr "Questa stanza non ha oggetto" #. do not print 'kicked by None' -#: ../src/groupchat_control.py:693 +#: ../src/groupchat_control.py:801 #, python-format msgid "%(nick)s has been kicked: %(reason)s" msgstr "%(nick)s è stato cacciato: %(reason)s" -#: ../src/groupchat_control.py:697 +#: ../src/groupchat_control.py:805 #, python-format msgid "%(nick)s has been kicked by %(who)s: %(reason)s" msgstr "%(nick)s è stato cacciato da %(who)s : %(reason)s" #. do not print 'banned by None' -#: ../src/groupchat_control.py:704 +#: ../src/groupchat_control.py:812 #, python-format msgid "%(nick)s has been banned: %(reason)s" msgstr "%(nick)s è stato bandito: %(reason)s" -#: ../src/groupchat_control.py:708 +#: ../src/groupchat_control.py:816 #, python-format msgid "%(nick)s has been banned by %(who)s: %(reason)s" msgstr "%(nick)s è stato bandito da %(who)s : %(reason)s" -#: ../src/groupchat_control.py:716 +#: ../src/groupchat_control.py:824 #, python-format msgid "You are now known as %s" msgstr "Sei ora conosciuto come %s" -#: ../src/groupchat_control.py:718 +#: ../src/groupchat_control.py:826 #, python-format msgid "%s is now known as %s" msgstr "%s è ora conosciuto come %s" -#: ../src/groupchat_control.py:757 +#: ../src/groupchat_control.py:897 #, python-format msgid "%s has left" msgstr "%s se ne è andato" +#: ../src/groupchat_control.py:902 +#, python-format +msgid "%s has joined the room" +msgstr "" + #. No status message -#: ../src/groupchat_control.py:759 ../src/roster_window.py:1015 +#: ../src/groupchat_control.py:904 ../src/roster_window.py:1028 #, python-format msgid "%s is now %s" msgstr "%s è ora %s" -#: ../src/groupchat_control.py:871 ../src/groupchat_control.py:888 -#: ../src/groupchat_control.py:981 ../src/groupchat_control.py:997 +#: ../src/groupchat_control.py:1022 ../src/groupchat_control.py:1039 +#: ../src/groupchat_control.py:1132 ../src/groupchat_control.py:1148 #, python-format msgid "Nickname not found: %s" msgstr "Nickname non trovato: %s" -#: ../src/groupchat_control.py:915 +#: ../src/groupchat_control.py:1066 #, python-format msgid "Invited %(contact_jid)s to %(room_jid)s." msgstr "Si è invitato %(contact_jid)s a %(room_jid)s." #. %s is something the user wrote but it is not a jid so we inform -#: ../src/groupchat_control.py:922 ../src/groupchat_control.py:952 +#: ../src/groupchat_control.py:1073 ../src/groupchat_control.py:1103 #, python-format msgid "%s does not appear to be a valid JID" msgstr "%s non sembra essere un JID valido" -#: ../src/groupchat_control.py:1019 +#: ../src/groupchat_control.py:1185 #, python-format msgid "No such command: /%s (if you want to send this, prefix it with /say)" msgstr "Comando inesistente: /%s (per inviarlo, scrivere /say prima di esso)" -#: ../src/groupchat_control.py:1041 +#: ../src/groupchat_control.py:1207 #, python-format msgid "Commands: %s" msgstr "Comandi: %s" -#: ../src/groupchat_control.py:1043 +#: ../src/groupchat_control.py:1209 #, python-format msgid "" "Usage: /%s [reason], bans the JID from the room. The nickname " @@ -1733,7 +3912,7 @@ msgstr "" "\". Se il JID è correntemente nella stanza, verrà anche cacciato. NON " "supporta la presenza di spazi nel nickname." -#: ../src/groupchat_control.py:1049 +#: ../src/groupchat_control.py:1215 #, python-format msgid "" "Usage: /%s , opens a private chat window to the specified occupant." @@ -1741,12 +3920,12 @@ msgstr "" "Uso: /%s , apre una finestra di chat privata al partecipante " "specificato." -#: ../src/groupchat_control.py:1053 +#: ../src/groupchat_control.py:1219 #, python-format msgid "Usage: /%s, clears the text window." msgstr "Uso: /%s, pulisce la finestra di testo." -#: ../src/groupchat_control.py:1055 +#: ../src/groupchat_control.py:1221 #, python-format msgid "" "Usage: /%s [reason], closes the current window or tab, displaying reason if " @@ -1755,12 +3934,12 @@ msgstr "" "Uso: /%s [motivo], chiude la finestra oi scheda corrente, mostrando il " "motivo se specificato." -#: ../src/groupchat_control.py:1058 +#: ../src/groupchat_control.py:1224 #, python-format msgid "Usage: /%s, hide the chat buttons." msgstr "Uso: /%s, nasconde i pulsanti di chat." -#: ../src/groupchat_control.py:1060 +#: ../src/groupchat_control.py:1226 #, python-format msgid "" "Usage: /%s [reason], invites JID to the current room, optionally " @@ -1769,7 +3948,7 @@ msgstr "" "Uso: /%s [motivo], invita JID alla stanza corrente, opzionalmente " "fornendo un motivo." -#: ../src/groupchat_control.py:1064 +#: ../src/groupchat_control.py:1230 #, python-format msgid "" "Usage: /%s @[/nickname], offers to join room@server optionally " @@ -1778,7 +3957,7 @@ msgstr "" "Uso: /%s @[/nickname], offre la possibilità di entrare in " "stanza@server, opzionalmente usando il nickname specificato." -#: ../src/groupchat_control.py:1068 +#: ../src/groupchat_control.py:1234 #, python-format msgid "" "Usage: /%s [reason], removes the occupant specified by nickname " @@ -1789,7 +3968,7 @@ msgstr "" "nickname dalla stanza e opzionalmente mostra un motivo. NON supporta la " "presenza di spazi nel nickname." -#: ../src/groupchat_control.py:1073 +#: ../src/groupchat_control.py:1239 #, python-format msgid "" "Usage: /%s , sends action to the current room. Use third person. (e." @@ -1798,7 +3977,7 @@ msgstr "" "Uso: /%s , invia l'azione alla stanza corrente. Usare la terza " "persona (esempio: /%s esplode)." -#: ../src/groupchat_control.py:1077 +#: ../src/groupchat_control.py:1243 #, python-format msgid "" "Usage: /%s [message], opens a private message windowand sends " @@ -1807,98 +3986,104 @@ msgstr "" "Uso: /%s [messaggio], apre una finestra di messaggi privati ed " "invia il messaggio al partecipante specificato per nickname." -#: ../src/groupchat_control.py:1082 +#: ../src/groupchat_control.py:1248 #, python-format msgid "Usage: /%s , changes your nickname in current room." msgstr "Uso: /%s , cambia il tuo nickname nella stanza corrente." -#: ../src/groupchat_control.py:1086 +#: ../src/groupchat_control.py:1252 +#, fuzzy, python-format +msgid "Usage: /%s , display the names of room occupants." +msgstr "" +"Uso: /%s [argomento], mostra o aggiorna l'argomento della stanza corrente." + +#: ../src/groupchat_control.py:1256 #, python-format msgid "Usage: /%s [topic], displays or updates the current room topic." msgstr "" "Uso: /%s [argomento], mostra o aggiorna l'argomento della stanza corrente." -#: ../src/groupchat_control.py:1089 +#: ../src/groupchat_control.py:1259 #, python-format msgid "" "Usage: /%s , sends a message without looking for other commands." msgstr "" "Uso: /%s , invia un messaggio senza considerare gli altri comandi." -#: ../src/groupchat_control.py:1092 +#: ../src/groupchat_control.py:1262 #, python-format msgid "No help info for /%s" msgstr "Non esiste aiuto per /%s" -#: ../src/groupchat_control.py:1128 +#: ../src/groupchat_control.py:1304 #, python-format msgid "Are you sure you want to leave room \"%s\"?" msgstr "Si è sicuri di voler uscire dalla stanza \"%s\"?" -#: ../src/groupchat_control.py:1129 +#: ../src/groupchat_control.py:1305 msgid "If you close this window, you will be disconnected from this room." msgstr "Chiudendo questa finestra, si verrà disconnessi da questa stanza." -#: ../src/groupchat_control.py:1133 +#: ../src/groupchat_control.py:1309 msgid "Do _not ask me again" msgstr "_Non chiederlo più" -#: ../src/groupchat_control.py:1167 +#: ../src/groupchat_control.py:1343 msgid "Changing Subject" msgstr "Cambio oggetto" -#: ../src/groupchat_control.py:1168 +#: ../src/groupchat_control.py:1344 msgid "Please specify the new subject:" msgstr "Specificare il nuovo oggetto:" -#: ../src/groupchat_control.py:1176 +#: ../src/groupchat_control.py:1352 msgid "Changing Nickname" msgstr "Cambio nickname" -#: ../src/groupchat_control.py:1177 +#: ../src/groupchat_control.py:1353 msgid "Please specify the new nickname you want to use:" msgstr "Specificare il nuovo nickname da usare:" -#: ../src/groupchat_control.py:1202 +#: ../src/groupchat_control.py:1379 msgid "Bookmark already set" msgstr "Segnalibro già impostato" -#: ../src/groupchat_control.py:1203 +#: ../src/groupchat_control.py:1380 #, python-format msgid "Room \"%s\" is already in your bookmarks." msgstr "La stanza \"%s\" è già tra i segnalibri." -#: ../src/groupchat_control.py:1212 +#: ../src/groupchat_control.py:1389 msgid "Bookmark has been added successfully" msgstr "Il segnalibro è stato aggiunto con successo" -#: ../src/groupchat_control.py:1213 +#: ../src/groupchat_control.py:1390 msgid "You can manage your bookmarks via Actions menu in your roster." msgstr "" "È possibile gestire i segnalibri attraverso il menu Azioni nella finestra " "della lista contatti." #. ask for reason -#: ../src/groupchat_control.py:1322 +#: ../src/groupchat_control.py:1500 #, python-format msgid "Kicking %s" msgstr "Sto cacciando %s" -#: ../src/groupchat_control.py:1323 ../src/groupchat_control.py:1568 +#: ../src/groupchat_control.py:1501 ../src/groupchat_control.py:1779 msgid "You may specify a reason below:" msgstr "Specifica un motivo qui sotto:" #. ask for reason -#: ../src/groupchat_control.py:1567 +#: ../src/groupchat_control.py:1778 #, python-format msgid "Banning %s" msgstr "Sto bandendo %s" -#: ../src/gtkexcepthook.py:52 +#: ../src/gtkexcepthook.py:51 msgid "A programming error has been detected" msgstr "È stato individuato un errore di programmazione" -#: ../src/gtkexcepthook.py:53 +#: ../src/gtkexcepthook.py:52 msgid "" "It probably is not fatal, but should be reported to the developers " "nonetheless." @@ -1906,1741 +4091,90 @@ msgstr "" "Probabilmente non è fatale, ma dovrebbe comunque venire segnalato agli " "sviluppatori." -#: ../src/gtkexcepthook.py:59 +#: ../src/gtkexcepthook.py:58 msgid "_Report Bug" msgstr "_Segnala bug" -#: ../src/gtkexcepthook.py:82 +#: ../src/gtkexcepthook.py:81 msgid "Details" msgstr "Dettagli" -#. this always tracebacks -#: ../src/gtkgui.glade.h:1 -msgid "0" -msgstr "0" - -#: ../src/gtkgui.glade.h:2 -msgid "" -"Account is being created\n" -"\n" -"Please wait..." -msgstr "" -"Creazione dell'account in corso\n" -"\n" -"Attendere prego..." - -#: ../src/gtkgui.glade.h:5 -msgid "Advanced Configuration Editor" -msgstr "Editor di configurazione avanzata" - -#: ../src/gtkgui.glade.h:6 -msgid "Applications" -msgstr "Applicazioni" - -#: ../src/gtkgui.glade.h:7 -msgid "Chatstate Tab Colors" -msgstr "Colori della scheda di stato chat" - -#. a header for custom browser/client/file manager. so translate sth like: Custom Settings -#: ../src/gtkgui.glade.h:9 -msgid "Custom" -msgstr "Personalizzato" - -#: ../src/gtkgui.glade.h:10 -msgid "Description" -msgstr "Descrizione" - -#: ../src/gtkgui.glade.h:11 -msgid "Format of a line" -msgstr "Formato di una linea" - -#: ../src/gtkgui.glade.h:12 -msgid "Interface Customization" -msgstr "Personalizzazione dell'interfaccia" - -#: ../src/gtkgui.glade.h:13 -msgid "Jabber Traffic" -msgstr "Traffico Jabber" - -#: ../src/gtkgui.glade.h:14 -msgid "Miscellaneous" -msgstr "Varie" - -#: ../src/gtkgui.glade.h:15 -msgid "NOTE: You should restart gajim for some setting to take effect" -msgstr "NOTA: È necessario riavviare gajim perché alcune impostazioni abbiano effetto" - -#: ../src/gtkgui.glade.h:16 -msgid "OpenPGP" -msgstr "OpenPGP" - -#: ../src/gtkgui.glade.h:17 -msgid "Personal Information" -msgstr "Informazioni personali" - -#: ../src/gtkgui.glade.h:18 -msgid "Please choose one of the options below:" -msgstr "Scegliere una delle seguenti opzioni:" - -#: ../src/gtkgui.glade.h:19 -msgid "Please fill in the data for your new account" -msgstr "Inserire i dati per il nuovo account" - -#: ../src/gtkgui.glade.h:20 -msgid "Preset Status Messages" -msgstr "Messaggi di stato predefiniti" - -#: ../src/gtkgui.glade.h:21 -msgid "Properties" -msgstr "Proprietà" - -#: ../src/gtkgui.glade.h:22 -msgid "Settings" -msgstr "Impostazioni" - -#: ../src/gtkgui.glade.h:23 -msgid "Sounds" -msgstr "Suoni" - -#: ../src/gtkgui.glade.h:24 -msgid "Type your new status message" -msgstr "Scrivere il nuovo messaggio di stato" - -#: ../src/gtkgui.glade.h:25 -msgid "Visual Notifications" -msgstr "Notifiche visuali" - -#: ../src/gtkgui.glade.h:26 -msgid "What do you want to do?" -msgstr "Cosa fare?" - -#: ../src/gtkgui.glade.h:27 -msgid "XML Input" -msgstr "Inserimento XML" - -#: ../src/gtkgui.glade.h:28 -msgid "A list of active, completed and stopped file transfers" -msgstr "Un elenco dei trasferimenti di file attivi, completati ed annullati" - -#: ../src/gtkgui.glade.h:29 -msgid "A_ccounts" -msgstr "_Account" - -#: ../src/gtkgui.glade.h:30 -msgid "A_fter nickname:" -msgstr "_Dopo il nickname:" - -#. "About" is the text of a tab of vcard window -#: ../src/gtkgui.glade.h:32 -msgid "About" -msgstr "A proposito" - -#: ../src/gtkgui.glade.h:33 -msgid "Accept" -msgstr "Accetta" - -#: ../src/gtkgui.glade.h:34 -msgid "Account" -msgstr "Account" - -#: ../src/gtkgui.glade.h:35 -msgid "" -"Account\n" -"Group\n" -"Contact\n" -"Banner" -msgstr "" -"Account\n" -"Gruppo\n" -"Contatto\n" -"Banner" - -#: ../src/gtkgui.glade.h:39 -msgid "Account Modification" -msgstr "Modifica account" - -#: ../src/gtkgui.glade.h:40 -msgid "Accounts" -msgstr "Account" - -#: ../src/gtkgui.glade.h:42 -msgid "Add New Contact" -msgstr "Aggiungi nuovo contatto" - -#: ../src/gtkgui.glade.h:43 -msgid "Add Special _Notification" -msgstr "Crea _notifica speciale" - -#: ../src/gtkgui.glade.h:44 -msgid "Add _Contact" -msgstr "Aggiungi _contatto" - -#: ../src/gtkgui.glade.h:45 -msgid "Address" -msgstr "Indirizzo" - -#: ../src/gtkgui.glade.h:46 -msgid "Advanced" -msgstr "Avanzato" - -#: ../src/gtkgui.glade.h:47 -msgid "Advanced Configuration Editor" -msgstr "Editor di configurazione avanzata" - -#: ../src/gtkgui.glade.h:48 -msgid "" -"All chat states\n" -"Composing only\n" -"Disabled" -msgstr "" -"Tutti gli stati di chat\n" -"Solo composizione\n" -"Disattivato" - -#: ../src/gtkgui.glade.h:51 -msgid "Allow _OS information to be sent" -msgstr "Consentire invio di informazioni sull'_OS" - -#: ../src/gtkgui.glade.h:52 -msgid "Allow him/her to see my status" -msgstr "Permetti di vedere il mio stato" - -#: ../src/gtkgui.glade.h:53 -msgid "Allow popup/notifications when I'm _away/na/busy/invisible" -msgstr "Consentire notifiche/popup quando _assente/nd/occupato/invisibile." - -#: ../src/gtkgui.glade.h:54 -msgid "Also known as iChat style" -msgstr "Conosciuto anche come stile iChat" - -#: ../src/gtkgui.glade.h:55 -msgid "Ask status message when I:" -msgstr "Chiedi messaggio di stato per:" - -#: ../src/gtkgui.glade.h:56 -msgid "Ask to see his/her status" -msgstr "Chiedi di poter vedere il suo stato" - -#: ../src/gtkgui.glade.h:57 -msgid "Ask:" -msgstr "Chiedi:" - -#: ../src/gtkgui.glade.h:58 -msgid "Assign Open_PGP Key" -msgstr "Assegna chiave Open_PGP" - -#: ../src/gtkgui.glade.h:59 -msgid "Authorize contact so he can know when you're connected" -msgstr "Autorizza il contatto affinché sappia quando sei connesso" - -#: ../src/gtkgui.glade.h:60 -msgid "Auto _away after:" -msgstr "_Assente automaticamente dopo:" - -#: ../src/gtkgui.glade.h:61 -msgid "Auto _not available after:" -msgstr "N_on disponibile automaticamente dopo:" - -#: ../src/gtkgui.glade.h:62 -msgid "Auto join" -msgstr "Partecipa automaticamente" - -#: ../src/gtkgui.glade.h:63 -msgid "" -"Autodetect on every Gajim startup\n" -"Always use GNOME default applications\n" -"Always use KDE default applications\n" -"Custom" -msgstr "" -"Ricerca in automatico ad ogni avvio di Gajim\n" -"Usa sempre le applicazioni predefinite di GNOME\n" -"Usa sempre le applicazioni predefinite di KDE\n" -"Personalizza" - -#: ../src/gtkgui.glade.h:67 -msgid "Automatically authorize contact" -msgstr "Autorizza automaticamente il contatto" - -#: ../src/gtkgui.glade.h:68 -msgid "Autoreconnect when connection is lost" -msgstr "Riconnettiti automaticamente quando si perde la connessione" - -#: ../src/gtkgui.glade.h:69 -msgid "B_efore nickname:" -msgstr "_Prima del nickname:" - -#: ../src/gtkgui.glade.h:70 -msgid "Birthday:" -msgstr "Data di nascita:" - -#: ../src/gtkgui.glade.h:71 -msgid "Bold" -msgstr "Grassetto" - -#: ../src/gtkgui.glade.h:72 -msgid "Build custom query" -msgstr "Costruisci richiesta personalizzata" - -#: ../src/gtkgui.glade.h:73 -msgid "C_onnect on Gajim startup" -msgstr "_Connetti all'avvio di Gajim" - -#: ../src/gtkgui.glade.h:74 -msgid "Cancel file transfer" -msgstr "Annulla trasferimento file" - -#: ../src/gtkgui.glade.h:75 -msgid "Cancels the selected file transfer" -msgstr "Annulla il trasferimento file selezionato" - -#: ../src/gtkgui.glade.h:76 -msgid "Cancels the selected file transfer and removes incomplete file" -msgstr "Annulla il trasferimento file selezionato e rimuove il file incompleto" - -#: ../src/gtkgui.glade.h:77 -msgid "Chan_ge Password" -msgstr "_Cambia password" - -#: ../src/gtkgui.glade.h:78 -msgid "Change Password" -msgstr "Cambia password" - -#: ../src/gtkgui.glade.h:79 -msgid "Change _Nickname" -msgstr "Cambia _nickname" - -#: ../src/gtkgui.glade.h:80 -msgid "Change _Subject" -msgstr "Cambia _oggetto" - -#: ../src/gtkgui.glade.h:82 -msgid "Chat state noti_fications:" -msgstr "Noti_fiche dello stato di chat" - -#: ../src/gtkgui.glade.h:83 -msgid "" -"Check this option, only if someone you don't have in the roster spams/annoys " -"you. Use with caution, cause it blocks all messages from any contact that is " -"not in the roster" -msgstr "" -"Selezionare questa opzione solo se qualche utente fuori dalla lista contatti " -"spamma o disturba. Attenzione, verranno bloccati tutti i messaggi ricevuti " -"da chi non è membro della lista contatti." - -#: ../src/gtkgui.glade.h:84 -msgid "" -"Check this so Gajim will connect in port 5223 where legacy servers are " -"expected to have SSL capabilities. Note that Gajim uses TLS encryption by " -"default if broadcasted by the server, and with this option enabled TLS will " -"be disabled" -msgstr "" -"Selezionando questa opzione Gajim si connetterà alla porta 5223, sulla quale " -"i server più vecchi attivano SSL. Notare che Gajim usa la cifratura TLS di " -"default se il server la annuncia, e abilitando questa opzione TLS sarà " -"disabilitata." - -#: ../src/gtkgui.glade.h:85 -msgid "Choose _Key..." -msgstr "Scegli _chiave..." - -#: ../src/gtkgui.glade.h:86 -msgid "City:" -msgstr "Città:" - -#: ../src/gtkgui.glade.h:87 -msgid "Clean _up" -msgstr "P_ulisci" - -#: ../src/gtkgui.glade.h:88 -msgid "Click to change account's password" -msgstr "Cliccare per cambiare la password dell'account" - -#: ../src/gtkgui.glade.h:89 -msgid "Click to insert an emoticon (Alt+M)" -msgstr "Cliccare per inserire un emoticon (Alt+M)" - -#: ../src/gtkgui.glade.h:90 -msgid "Click to see features (like MSN, ICQ transports) of jabber servers" -msgstr "" -"Cliccare per vedere i servizi (come i trasporti MSN o ICQ) dei server Jabber" - -#: ../src/gtkgui.glade.h:91 -msgid "Click to see past conversation in this room" -msgstr "Cliccare per vedere le conversazioni precedenti di questa stanza" - -#: ../src/gtkgui.glade.h:92 -msgid "Click to see past conversations with this contact" -msgstr "Cliccare per vedere le conversazioni precedenti con questo contatto" - -#: ../src/gtkgui.glade.h:93 -msgid "Client:" -msgstr "Client:" - -#: ../src/gtkgui.glade.h:94 -msgid "Company:" -msgstr "Società:" - -#: ../src/gtkgui.glade.h:95 -msgid "Composing" -msgstr "Scrivendo" - -#: ../src/gtkgui.glade.h:96 -msgid "Configure _Room" -msgstr "Configu_ra la stanza" - -#: ../src/gtkgui.glade.h:97 -msgid "Connect when I press Finish" -msgstr "Collegati alla pressione di Fine" - -#: ../src/gtkgui.glade.h:98 -msgid "Connection" -msgstr "Connessione" - -#: ../src/gtkgui.glade.h:99 -msgid "Contact Information" -msgstr "Informazioni sul contatto" - -#: ../src/gtkgui.glade.h:100 -msgid "Contact _Info" -msgstr "_Informazioni contatto" - -#: ../src/gtkgui.glade.h:101 -msgid "Conversation History" -msgstr "Cronologia conversazione" - -#: ../src/gtkgui.glade.h:102 -msgid "Country:" -msgstr "Paese:" - -#: ../src/gtkgui.glade.h:103 -msgid "Default status _iconset:" -msgstr "_Icone stato predefinite:" - -#: ../src/gtkgui.glade.h:104 -msgid "Delete MOTD" -msgstr "Elimina MOTD" - -#: ../src/gtkgui.glade.h:105 -msgid "Deletes Message of the Day" -msgstr "Elimina il messaggio del giorno" - -#: ../src/gtkgui.glade.h:106 -msgid "Deny" -msgstr "Nega" - -#: ../src/gtkgui.glade.h:107 -msgid "Deny authorization from contact so he cannot know when you're connected" -msgstr "" -"Nega l'autorizzazione al contatto; in questa maniera non saprà quando sei " -"connesso" - -#: ../src/gtkgui.glade.h:108 -msgid "Department:" -msgstr "Dipartimento:" - -#: ../src/gtkgui.glade.h:109 -msgid "Display a_vatars of contacts in roster" -msgstr "Mostra gli a_vatar dei contatti nella lista" - -#: ../src/gtkgui.glade.h:110 -msgid "Display status _messages of contacts in roster" -msgstr "Mostra i _messaggi di stato dei contatti nella lista" - -#: ../src/gtkgui.glade.h:111 -msgid "E-Mail:" -msgstr "E-Mail:" - -#: ../src/gtkgui.glade.h:112 -msgid "E_very 5 minutes" -msgstr "_Ogni 5 minuti" - -#: ../src/gtkgui.glade.h:113 -msgid "Edit Groups" -msgstr "Modifica gruppi" - -#: ../src/gtkgui.glade.h:114 -msgid "Edit Personal Information..." -msgstr "Modifica informazioni personali..." - -#: ../src/gtkgui.glade.h:115 -msgid "Edit _Groups" -msgstr "Modifica _gruppi" - -#: ../src/gtkgui.glade.h:116 -msgid "Emoticons:" -msgstr "Emoticon:" - -#. XML Console enable checkbutton -#: ../src/gtkgui.glade.h:118 -msgid "Enable" -msgstr "Abilita" - -#: ../src/gtkgui.glade.h:119 -msgid "Enter it again for confirmation:" -msgstr "Inserire nuovamente per conferma:" - -#: ../src/gtkgui.glade.h:120 -msgid "Enter new password:" -msgstr "Inserire nuova password:" - -#: ../src/gtkgui.glade.h:121 -msgid "Events" -msgstr "Eventi" - -#: ../src/gtkgui.glade.h:122 -msgid "Extra Address:" -msgstr "Indirizzo extra:" - -#. Family Name -#: ../src/gtkgui.glade.h:124 -msgid "Family:" -msgstr "Cognome:" - -#: ../src/gtkgui.glade.h:125 -msgid "File Transfers" -msgstr "Trasferimenti file" - -#: ../src/gtkgui.glade.h:126 -msgid "File _Transfers" -msgstr "_Trasferimenti file" - -#: ../src/gtkgui.glade.h:127 -msgid "Filter:" -msgstr "Filtro:" - -#: ../src/gtkgui.glade.h:128 -msgid "Font style:" -msgstr "Stile carattere:" - -#: ../src/gtkgui.glade.h:129 -msgid "Forbid him/her to see my status" -msgstr "Proibisci di vedere il mio stato" - -#: ../src/gtkgui.glade.h:130 -msgid "Format: YYYY-MM-DD" -msgstr "Formato: AAAA-MM-GG" - -#: ../src/gtkgui.glade.h:131 -msgid "Frequently Asked Questions (online)" -msgstr "Domande frequenti (online)" - -#: ../src/gtkgui.glade.h:132 -msgid "From:" -msgstr "Da:" - -#: ../src/gtkgui.glade.h:133 -msgid "G_o" -msgstr "_Vai" - -#: ../src/gtkgui.glade.h:134 ../src/notify.py:167 ../src/notify.py:189 -#: ../src/notify.py:201 ../src/tooltips.py:339 -msgid "Gajim" -msgstr "Gajim" - -#: ../src/gtkgui.glade.h:135 -msgid "Gajim Themes Customization" -msgstr "Personalizzazione temi di Gajim" - -#: ../src/gtkgui.glade.h:136 -msgid "" -"Gajim can send and receive meta-information related to a conversation you " -"may have with a contact. Here you can specify which chatstates you want to " -"send to the other party." -msgstr "Gajim può ricevere ed inviare meta-informazioni relative ad una conversazione con un contatto. Qui è possibile specificare che stati di chat si vogliono inviare al corrispondente." - -#: ../src/gtkgui.glade.h:137 -msgid "" -"Gajim will automatically show new events by poping up the relative window" -msgstr "Gajim mostrerà automaticamente i nuovi eventi evidenziando la finestra relativa" - -#: ../src/gtkgui.glade.h:138 -msgid "" -"Gajim will notify you for new events via a popup in the bottom right of the " -"screen" -msgstr "Gajim notificherà i nuovi eventi tramite popup nell'angolo in fondo a destra dello schermo" - -#: ../src/gtkgui.glade.h:139 -msgid "" -"Gajim will notify you via a popup window in the bottom right of the screen " -"about contacts that just signed in" -msgstr "" -"Gajim notificherà tramite popup nell'angolo in fondo a destra dello schermo " -"quando un contatto si connette" - -#: ../src/gtkgui.glade.h:140 -msgid "" -"Gajim will notify you via a popup window in the bottom right of the screen " -"about contacts that just signed out" -msgstr "" -"Gajim notificherà tramite popup nell'angolo in fondo a destra dello schermo " -"quando un contatto si disconnette" - -#: ../src/gtkgui.glade.h:141 -msgid "" -"Gajim will only change the icon of the contact that triggered the new event" -msgstr "Gajim cambierà solamente l'icona del contatto fonte del nuovo evento" - -#: ../src/gtkgui.glade.h:142 -msgid "Gajim: Account Creation Wizard" -msgstr "Gajim: Assistente creazione account" - -#. user has no group, print him in General -#: ../src/gtkgui.glade.h:143 ../src/roster_window.py:291 -#: ../src/roster_window.py:1183 ../src/roster_window.py:1405 -#: ../src/systray.py:286 -msgid "General" -msgstr "Generale" - -#. Given Name -#: ../src/gtkgui.glade.h:145 -msgid "Given:" -msgstr "Nome:" - -#: ../src/gtkgui.glade.h:146 -msgid "Gone" -msgstr "Andato via" - -#: ../src/gtkgui.glade.h:147 -msgid "Group:" -msgstr "Gruppo:" - -#: ../src/gtkgui.glade.h:148 -msgid "HTTP Connect" -msgstr "Connessione HTTP" - -#: ../src/gtkgui.glade.h:149 -msgid "Help online" -msgstr "Aiuto online" - -#: ../src/gtkgui.glade.h:150 -msgid "Hides the window" -msgstr "Nasconde la finestra" - -#: ../src/gtkgui.glade.h:151 -msgid "Homepage:" -msgstr "Homepage:" - -#: ../src/gtkgui.glade.h:152 -msgid "Hostname: " -msgstr "Nome dell'host: " - -#: ../src/gtkgui.glade.h:153 -msgid "I already have an account I want to use" -msgstr "Ho già un account da usare" - -#: ../src/gtkgui.glade.h:154 -msgid "I want to _register for a new account" -msgstr "Voglio _registrare un nuovo account" - -#: ../src/gtkgui.glade.h:155 -msgid "I would like to add you to my contact list." -msgstr "Vorrei aggiungerti alla mia lista contatti." - -#: ../src/gtkgui.glade.h:156 -msgid "" -"If checked, Gajim will also broadcast some more IPs except from just your " -"IP, so file transfer has higher chances of working right." -msgstr "Se marcato, Gajim annuncerà alcuni IP in più oltre a quello della macchina su cui viene eseguito, di modo che il trasferimento file abbia maggiori possibilità di funzionare correttamente." - -#: ../src/gtkgui.glade.h:157 -msgid "" -"If checked, Gajim will display avatars of contacts in roster window and in " -"group chats" -msgstr "Se marcato, Gajim mostrerà gli avatar dei contatti nella lista contatti e nelle chat di gruppo" - -#: ../src/gtkgui.glade.h:158 -msgid "" -"If checked, Gajim will display status messages of contacts under the contact " -"name in roster window and in group chats" -msgstr "Se marcato, Gajim mostrerà il messaggio di stato di ogni membro di lista contatti e chat di gruppo sotto il suo nome" - -#: ../src/gtkgui.glade.h:159 -msgid "If checked, Gajim will join this group chat on startup" -msgstr "Se marcato, all'avvio Gajim entrerà in questa chat di gruppo" - -#: ../src/gtkgui.glade.h:160 -msgid "If checked, Gajim will remember the password for this account" -msgstr "Se marcato, Gajim ricorderà la password per questo account" - -#: ../src/gtkgui.glade.h:161 -msgid "" -"If checked, Gajim will remember the roster and chat window positions in the " -"screen and the sizes of them next time you run it" -msgstr "" -"Se marcato, Gajim manterrà le posizioni delle finestre di chat e della lista " -"contatti sullo schermo la prossima volta che verrà eseguito" - -#: ../src/gtkgui.glade.h:162 -msgid "" -"If checked, Gajim will send keep-alive packets so it prevents connection " -"timeout which results in disconnection" -msgstr "" -"Se marcato, Gajim invierà dei pacchetti di keep-alive per prevenire il " -"timeout che provoca una disconnessione" - -#: ../src/gtkgui.glade.h:163 -msgid "" -"If checked, Gajim will store the password in ~/.gajim/config with 'read' " -"permission only for you" -msgstr "" -"Se marcato, Gajim memorizzerà la password in ~/.gajim/config, con permessi " -"di lettura solo per l'utente che esegue il programma" - -#: ../src/gtkgui.glade.h:164 -msgid "" -"If checked, Gajim will use protocol-specific status icons. (eg. A contact " -"from MSN will have the equivalent msn icon for status online, away, busy, " -"etc...)" -msgstr "" -"Se marcato, Gajim userà icone di stato specifiche per il protocollo usato. " -"(es., un contatto MSN avrà l'icona MSN equivalente per gli stati online, " -"assente, occupato, ecc...)" - -#: ../src/gtkgui.glade.h:165 -msgid "" -"If checked, Gajim, when launched, will automatically connect to jabber using " -"this account" -msgstr "" -"Se marcato, Gajim, quando lanciato, si connetterà automaticamente a Jabber " -"usando questo account." - -#: ../src/gtkgui.glade.h:166 -msgid "" -"If checked, any change to the global status (handled by the combobox at the " -"bottom of the roster window) will change the status of this account " -"accordingly" -msgstr "" -"Se marcato, ogni cambio allo stato globale (gestito dalla combo box sotto la " -"lista contatti) cambierà di conseguenza lo stato di questo account" - -#: ../src/gtkgui.glade.h:167 -msgid "" -"If not disabled, Gajim will replace ascii smilies like ':)' with equivalent " -"animated or static graphical emoticons" -msgstr "Se marcato, Gajim sostituirà gli smiley ASCII come ':)' con gli equivalenti emoticon grafici animati o statici" - -#: ../src/gtkgui.glade.h:168 -msgid "" -"If you have 2 or more accounts and it is checked, Gajim will list all " -"contacts as if you had one account" -msgstr "" -"Se marcato e se sono presenti 2 o più account, Gajim mostrerà tutti i " -"contatti come se ci fosse un unico account" - -#: ../src/gtkgui.glade.h:169 -msgid "Inactive" -msgstr "Inattivo" - -#. Info/Query make the "IQ" initials. So translate like this 'YourLang/YourLang (Info/Query)'. Thanks (it's a tooltip so width is not a problem) -#: ../src/gtkgui.glade.h:171 -msgid "Info/Query" -msgstr "Info/Richiesta (Info/Query)" - -#: ../src/gtkgui.glade.h:172 -msgid "Information about you, as stored in the server" -msgstr "Informazioni su di te, archiviate sul server" - -#: ../src/gtkgui.glade.h:173 -msgid "Invitation Received" -msgstr "Invito ricevuto" - -#: ../src/gtkgui.glade.h:174 -msgid "Italic" -msgstr "Corsivo" - -#: ../src/gtkgui.glade.h:175 -msgid "Jabber" -msgstr "Jabber" - -#: ../src/gtkgui.glade.h:176 -msgid "Jabber ID:" -msgstr "ID Jabber: " - -#: ../src/gtkgui.glade.h:178 -msgid "Join _Group Chat" -msgstr "Entra in chat di _gruppo" - -#: ../src/gtkgui.glade.h:179 -msgid "Location" -msgstr "Indirizzo" - -#: ../src/gtkgui.glade.h:180 -msgid "" -"MUC\n" -"Messages" -msgstr "" -"Messaggi\n" -"MUC" - -#: ../src/gtkgui.glade.h:182 -msgid "" -"MUC Directed\n" -"Messages" -msgstr "" -"Messaggi diretti\n" -"a MUC" - -#: ../src/gtkgui.glade.h:184 -msgid "Ma_nage..." -msgstr "_Gestisci..." - -#: ../src/gtkgui.glade.h:185 -msgid "Manage Accounts" -msgstr "Gestisci account" - -#: ../src/gtkgui.glade.h:186 -msgid "Manage Bookmarks" -msgstr "Gestisci segnalibri" - -#: ../src/gtkgui.glade.h:187 -msgid "Manage Proxy Profiles" -msgstr "Gestisci profili proxy" - -#: ../src/gtkgui.glade.h:188 -msgid "Manage..." -msgstr "Gestisci..." - -#. Middle Name -#: ../src/gtkgui.glade.h:190 -msgid "Middle:" -msgstr "Secondo nome:" - -#: ../src/gtkgui.glade.h:191 -msgid "Mo_derator" -msgstr "Mo_deratore" - -#: ../src/gtkgui.glade.h:192 -msgid "More" -msgstr "Ancora" - -#: ../src/gtkgui.glade.h:193 -msgid "Name:" -msgstr "Nome:" - -#: ../src/gtkgui.glade.h:194 -msgid "" -"Never\n" -"Always\n" -"Per account\n" -"Per type" -msgstr "" -"Mai\n" -"Sempre\n" -"Per account\n" -"Per tipo" - -#: ../src/gtkgui.glade.h:198 -msgid "Nickname:" -msgstr "Nickname:" - -#. None means no proxy profile selected -#: ../src/gtkgui.glade.h:201 -msgid "None" -msgstr "Nessuno" - -#: ../src/gtkgui.glade.h:202 -msgid "Notify me about contacts that: " -msgstr "Notificare i contatti che eseguono:" - -#: ../src/gtkgui.glade.h:203 -msgid "Notify on new _Gmail e-mail" -msgstr "Notifica le nuove e-mail su _Gmail" - -#: ../src/gtkgui.glade.h:204 -msgid "OS:" -msgstr "OS:" - -#: ../src/gtkgui.glade.h:205 -msgid "On every _message" -msgstr "In _tutti i messaggi" - -#: ../src/gtkgui.glade.h:206 -msgid "One message _window:" -msgstr "Una finestra messaggi:" - -#: ../src/gtkgui.glade.h:208 -msgid "Pass_word:" -msgstr "Pass_word:" - -#: ../src/gtkgui.glade.h:209 -msgid "Passphrase" -msgstr "Passphrase" - -#: ../src/gtkgui.glade.h:210 -msgid "Password:" -msgstr "Password:" - -#: ../src/gtkgui.glade.h:211 ../src/tooltips.py:645 -msgid "Paused" -msgstr "In pausa" - -#: ../src/gtkgui.glade.h:212 -msgid "Personal Information" -msgstr "Informazioni personali" - -#: ../src/gtkgui.glade.h:213 -msgid "Phone No.:" -msgstr "Telefono:" - -#: ../src/gtkgui.glade.h:214 -msgid "Play _sounds" -msgstr "Riproduci _suoni" - -#: ../src/gtkgui.glade.h:215 -msgid "Port: " -msgstr "Porta: " - -#: ../src/gtkgui.glade.h:216 -msgid "Position:" -msgstr "Titolo:" - -#: ../src/gtkgui.glade.h:217 -msgid "Postal Code:" -msgstr "Codice postale:" - -#: ../src/gtkgui.glade.h:218 -msgid "Preferences" -msgstr "Preferenze" - -#. Prefix in Name -#: ../src/gtkgui.glade.h:220 -msgid "Prefix:" -msgstr "Prefisso:" - -#: ../src/gtkgui.glade.h:221 -msgid "Preset messages:" -msgstr "Messaggi predefiniti:" - -#: ../src/gtkgui.glade.h:222 -msgid "Print time:" -msgstr "Stampa ora:" - -#: ../src/gtkgui.glade.h:223 -msgid "Priori_ty:" -msgstr "Pr_iorità:" - -#: ../src/gtkgui.glade.h:224 -msgid "" -"Priority is used in Jabber to determine who gets the events from the jabber " -"server when two or more clients are connected using the same account; The " -"client with the highest priority gets the events" -msgstr "" -"La priorità si usa in Jabber per determinare chi riceve gli eventi dal " -"server Jabber, quando due o più client sono connessi usando lo stesso " -"account; il client con la maggiore priorità riceverà gli eventi." - -#: ../src/gtkgui.glade.h:225 -msgid "Profile, Avatar" -msgstr "Profilo, avatar" - -#: ../src/gtkgui.glade.h:226 -msgid "Protocol:" -msgstr "Protocollo:" - -#: ../src/gtkgui.glade.h:227 -msgid "Proxy:" -msgstr "Proxy:" - -#: ../src/gtkgui.glade.h:228 -msgid "Query Builder..." -msgstr "Costruttore richieste..." - -#: ../src/gtkgui.glade.h:229 -msgid "Recently:" -msgstr "Recentemente:" - -#: ../src/gtkgui.glade.h:230 -msgid "Register to" -msgstr "Registra a" - -#: ../src/gtkgui.glade.h:231 -msgid "Remove account _only from Gajim" -msgstr "Rimuovi l'account solo da _Gajim" - -#: ../src/gtkgui.glade.h:232 -msgid "Remove account from Gajim and from _server" -msgstr "Eliminare l'account da Gajim e dal _server" - -#: ../src/gtkgui.glade.h:233 -msgid "Remove file transfer from the list." -msgstr "Rimuovi trasferimento file dalla lista" - -#: ../src/gtkgui.glade.h:234 -msgid "Removes completed, canceled and failed file transfers from the list" -msgstr "" -"Rimuove dalla lista i trasferimenti di file completati, annullati e falliti" - -#: ../src/gtkgui.glade.h:235 -msgid "Reply to this message" -msgstr "Rispondi a questo messaggio" - -#: ../src/gtkgui.glade.h:236 -msgid "Resour_ce: " -msgstr "_Risorsa: " - -#: ../src/gtkgui.glade.h:237 -msgid "" -"Resource is sent to the Jabber server in order to separate the same JID in " -"two or more parts depending on the number of the clients connected in the " -"same server with the same account. So you might be connected in the same " -"account with resource 'Home' and 'Work' at the same time. The resource which " -"has the highest priority will get the events. (see below)" -msgstr "" -"La risorsa viene inviata al server Jabber per distinguere tra due o più " -"client connessi allo stesso server. In questa maniera, è possibile " -"connettersi allo stesso account con risorse 'Casa' e 'Lavoro' " -"contemporaneamente. La risorsa con la priorità maggiore riceverà gli eventi " -"(vedi sotto)." - -#: ../src/gtkgui.glade.h:238 -msgid "Resource:" -msgstr "Risorsa:" - -#: ../src/gtkgui.glade.h:239 -msgid "Role:" -msgstr "Ruolo:" - -#: ../src/gtkgui.glade.h:240 -msgid "Room Configuration" -msgstr "Configurazione della stanza" - -#: ../src/gtkgui.glade.h:241 -msgid "Room:" -msgstr "Stanza:" - -#: ../src/gtkgui.glade.h:242 -msgid "Save _passphrase (insecure)" -msgstr "Salva _passphrase (non sicuro)" - -#: ../src/gtkgui.glade.h:243 -msgid "Save _position and size for roster and chat windows" -msgstr "Salva _posizione e dimensione delle finestre di chat e lista contatti" - -#: ../src/gtkgui.glade.h:244 -msgid "Save as Preset..." -msgstr "Salva come predefinito..." - -#: ../src/gtkgui.glade.h:245 -msgid "Save conversation _logs for all contacts" -msgstr "Memorizza i _log delle conversazioni con tutti i contatti" - -#: ../src/gtkgui.glade.h:246 -msgid "Save pass_word" -msgstr "_Memorizza password" - -#: ../src/gtkgui.glade.h:247 -msgid "Search" -msgstr "Cerca" - -#: ../src/gtkgui.glade.h:248 -msgid "Sen_d" -msgstr "_Invia" - -#: ../src/gtkgui.glade.h:249 -msgid "Send File" -msgstr "Invia file" - -#: ../src/gtkgui.glade.h:250 -msgid "Send Single _Message" -msgstr "Invia _messaggio singolo" - -#: ../src/gtkgui.glade.h:251 -msgid "Send Single _Message..." -msgstr "Invia _messaggio singolo..." - -#: ../src/gtkgui.glade.h:252 -msgid "Send _File" -msgstr "Invia _file" - -#: ../src/gtkgui.glade.h:253 -msgid "Send keep-alive packets" -msgstr "Invia pacchetti di keep-alive" - -#: ../src/gtkgui.glade.h:254 -msgid "Send message" -msgstr "Invia messaggio" - -#: ../src/gtkgui.glade.h:255 -msgid "Send message and close window" -msgstr "Invia messaggio e chiudi la finestra" - -#: ../src/gtkgui.glade.h:256 -msgid "Sends a message to currently connected users to this server" -msgstr "Invia un messaggio agli utenti attualmenti connessi a questo server" - -#: ../src/gtkgui.glade.h:257 -msgid "Server:" -msgstr "Server:" - -#: ../src/gtkgui.glade.h:258 -msgid "Servers Features" -msgstr "Servizi del server" - -#: ../src/gtkgui.glade.h:259 -msgid "Set MOTD" -msgstr "Imposta MOTD" - -#: ../src/gtkgui.glade.h:260 -msgid "Set _Avatar" -msgstr "Imposta _avatar" - -#: ../src/gtkgui.glade.h:261 -msgid "Set my profile when I connect" -msgstr "Imposta il profilo durante la connessione" - -#: ../src/gtkgui.glade.h:262 -msgid "Sets Message of the Day" -msgstr "Imposta messaggio del giorno" - -#: ../src/gtkgui.glade.h:263 -msgid "Show All Pending _Events" -msgstr "Mostra tutti gli _eventi pendenti" - -#: ../src/gtkgui.glade.h:264 -msgid "Show _Offline Contacts" -msgstr "Mostra contatti _offline" - -#: ../src/gtkgui.glade.h:265 -msgid "Show _Roster" -msgstr "Mostra lista _contatti" - -#: ../src/gtkgui.glade.h:266 -msgid "Show _XML Console" -msgstr "Mostra console _XML" - -#: ../src/gtkgui.glade.h:267 -msgid "Show only in _roster" -msgstr "Mostra solo nella lista _contatti" - -#: ../src/gtkgui.glade.h:268 -msgid "Shows a list of file transfers between you and other" -msgstr "Mostra una lista dei trasferimenti di file tra te e gli altri" - -#: ../src/gtkgui.glade.h:269 -msgid "Sign _in" -msgstr "C_onnessione" - -#: ../src/gtkgui.glade.h:270 -msgid "Sign _out" -msgstr "_Disconnessione" - -#: ../src/gtkgui.glade.h:271 -msgid "Sta_tus" -msgstr "Sta_to" - -#: ../src/gtkgui.glade.h:272 -msgid "Start _Chat" -msgstr "Inizia _chat" - -#: ../src/gtkgui.glade.h:273 -msgid "State:" -msgstr "Regione:" - -#: ../src/gtkgui.glade.h:274 -msgid "Status" -msgstr "Stato" - -#: ../src/gtkgui.glade.h:275 -msgid "Status:" -msgstr "Stato:" - -#: ../src/gtkgui.glade.h:276 -msgid "Street:" -msgstr "Via:" - -#: ../src/gtkgui.glade.h:277 -msgid "Subject:" -msgstr "Oggetto:" - -#: ../src/gtkgui.glade.h:278 -msgid "Subscription Request" -msgstr "Richiesta di abbonamento" - -#: ../src/gtkgui.glade.h:279 -msgid "Subscription:" -msgstr "Abbonamento:" - -#. Suffix in Name -#: ../src/gtkgui.glade.h:281 -msgid "Suffix:" -msgstr "Suffisso:" - -#: ../src/gtkgui.glade.h:282 -msgid "Synch_ronize account status with global status" -msgstr "_Sincronizza lo stato dell'account con lo stato globale" - -#: ../src/gtkgui.glade.h:283 -msgid "T_heme:" -msgstr "T_ema:" - -#: ../src/gtkgui.glade.h:284 -msgid "Text _color:" -msgstr "_Colore del testo:" - -#: ../src/gtkgui.glade.h:285 -msgid "Text _font:" -msgstr "Carattere del _testo:" - -#: ../src/gtkgui.glade.h:286 -msgid "The auto away status message" -msgstr "Il messaggio di stato per l'assenza automatica" - -#: ../src/gtkgui.glade.h:287 -msgid "The auto not available status message" -msgstr "Il messaggio di stato per il 'non disponibile' automatico" - -#: ../src/gtkgui.glade.h:288 -msgid "" -"This action removes single file transfer from the list. If the transfer is " -"active, it is first stopped and then removed" -msgstr "" -"Questa azione elimina un singolo trasferimento file dalla lista. Se il " -"trasferimento è attivo, viene prima fermato e poi rimosso" - -#: ../src/gtkgui.glade.h:289 -msgid "Title:" -msgstr "Titolo:" - -#: ../src/gtkgui.glade.h:290 -msgid "To:" -msgstr "A:" - -#: ../src/gtkgui.glade.h:291 -msgid "Toggle Open_PGP Encryption" -msgstr "Attiva cifratura Open_PGP" - -#: ../src/gtkgui.glade.h:292 -msgid "Type:" -msgstr "Tipo:" - -#: ../src/gtkgui.glade.h:293 -msgid "Underline" -msgstr "Sottolinea" - -#: ../src/gtkgui.glade.h:294 -msgid "Update MOTD" -msgstr "Aggiorna MOTD" - -#: ../src/gtkgui.glade.h:295 -msgid "Updates Message of the Day" -msgstr "Aggiorna il messaggio del giorno" - -#: ../src/gtkgui.glade.h:296 -msgid "Use _SSL (legacy)" -msgstr "Usa _SSL (legacy)" - -#: ../src/gtkgui.glade.h:297 -msgid "Use _transports iconsets" -msgstr "Usa le icone dei _trasporti" - -#: ../src/gtkgui.glade.h:298 -msgid "Use authentication" -msgstr "Usa autenticazione" - -#: ../src/gtkgui.glade.h:299 -msgid "Use custom hostname/port" -msgstr "Usa hostname/port personalizzati" - -#: ../src/gtkgui.glade.h:300 -msgid "Use file transfer proxies" -msgstr "Usa proxy per il trasferimento file" - -#: ../src/gtkgui.glade.h:301 -msgid "Use t_rayicon (aka. notification area icon)" -msgstr "Usa _icona nell'area di notifica" - -#: ../src/gtkgui.glade.h:302 -msgid "User ID:" -msgstr "ID utente:" - -#: ../src/gtkgui.glade.h:303 -msgid "When a file transfer is complete show a popup notification" -msgstr "" -"Mostra una notifica popup quando un trasferimento file viene completato" - -#: ../src/gtkgui.glade.h:304 -msgid "" -"When a new event (message, file transfer request etc..) is received, the " -"following methods may be used to inform you about it. Please note that " -"events about new messages only occur if it is a new message from a contact " -"you are not already chatting with" -msgstr "Quando un nuovo evento (messaggio, richiesta di trasferimento file, ecc...) viene ricevuto, i seguenti metodi possono venire usati per informarti di ciò. Notare che gli eventi per i nuovi messaggi avverranno solo se si tratta di un nuovo messaggio da un contatto con cui non si sta già chattando" - -#: ../src/gtkgui.glade.h:305 -msgid "When new event is received" -msgstr "Quando si riceve un nuovo evento" - -#: ../src/gtkgui.glade.h:306 -msgid "Work" -msgstr "Lavoro" - -#: ../src/gtkgui.glade.h:307 -msgid "" -"You need to have an account in order to connect\n" -"to the Jabber network." -msgstr "" -"È necessario avere un account per connettersi\n" -"alla rete Jabber." - -#: ../src/gtkgui.glade.h:309 -msgid "Your JID:" -msgstr "Il tuo JID:" - -#. Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector) -#: ../src/gtkgui.glade.h:311 -msgid "_Actions" -msgstr "_Azioni" - -#: ../src/gtkgui.glade.h:312 -msgid "_Add Contact..." -msgstr "_Aggiungi Contatto..." - -#: ../src/gtkgui.glade.h:313 -msgid "_Add to Roster" -msgstr "_Aggiungi ai contatti" - -#: ../src/gtkgui.glade.h:314 -msgid "_Address:" -msgstr "_Indirizzo:" - -#: ../src/gtkgui.glade.h:315 -msgid "_Admin" -msgstr "_Admin" - -#: ../src/gtkgui.glade.h:316 -msgid "_Administrator" -msgstr "_Amministratore" - -#: ../src/gtkgui.glade.h:317 -msgid "_Advanced" -msgstr "_Avanzato" - -#: ../src/gtkgui.glade.h:318 -msgid "_After time:" -msgstr "_Dopo l'ora:" - -#: ../src/gtkgui.glade.h:319 -msgid "_Authorize" -msgstr "_Autorizza" - -#: ../src/gtkgui.glade.h:320 -msgid "_Background:" -msgstr "_Sfondo:" - -#: ../src/gtkgui.glade.h:321 -msgid "_Ban" -msgstr "_Bandisci" - -#: ../src/gtkgui.glade.h:322 -msgid "_Before time:" -msgstr "_Prima dell'ora:" - -#: ../src/gtkgui.glade.h:323 -msgid "_Bookmark This Room" -msgstr "Inserire un _segnalibro per questa stanza" - -#: ../src/gtkgui.glade.h:324 -msgid "_Browser:" -msgstr "_Browser:" - -#: ../src/gtkgui.glade.h:325 -msgid "_Cancel" -msgstr "_Annulla" - -#: ../src/gtkgui.glade.h:326 -msgid "_Compact View Alt+C" -msgstr "_Vista compatta Alt+C" - -#: ../src/gtkgui.glade.h:327 -msgid "_Contents" -msgstr "_Contenuti" - -#: ../src/gtkgui.glade.h:329 -msgid "_Copy JID/Email Address" -msgstr "_Copia Indirizzo Email/JID" - -#: ../src/gtkgui.glade.h:330 -msgid "_Copy Link Location" -msgstr "_Copia indirizzo collegamento" - -#: ../src/gtkgui.glade.h:331 -msgid "_Deny" -msgstr "_Nega" - -#: ../src/gtkgui.glade.h:332 -msgid "_Discover Services" -msgstr "_Ricerca servizi" - -#: ../src/gtkgui.glade.h:333 -msgid "_Discover Services..." -msgstr "_Ricerca servizi..." - -#: ../src/gtkgui.glade.h:335 -msgid "_FAQ" -msgstr "_FAQ" - -#: ../src/gtkgui.glade.h:336 -msgid "_File manager:" -msgstr "Gestore _file:" - -#: ../src/gtkgui.glade.h:337 -msgid "_Filter:" -msgstr "_Filtro:" - -#: ../src/gtkgui.glade.h:338 -msgid "_Finish" -msgstr "_Fine" - -#: ../src/gtkgui.glade.h:339 -msgid "_Font:" -msgstr "_Carattere:" - -#: ../src/gtkgui.glade.h:340 -msgid "_Group Chat" -msgstr "Chat di _gruppo" - -#: ../src/gtkgui.glade.h:341 -msgid "_Help" -msgstr "A_iuto" - -#: ../src/gtkgui.glade.h:342 -msgid "_Highlight misspelled words" -msgstr "Evidenzia _parole scorrette" - -#: ../src/gtkgui.glade.h:343 -msgid "_History" -msgstr "_Cronologia" - -#: ../src/gtkgui.glade.h:344 -msgid "_Host:" -msgstr "_Host:" - -#. Info/Query: all(?) jabber xml start with Welcome to Gajim History Logs Manager\n" -"\n" -"You can select logs from the left and/or search database from below.\n" -"\n" -"WARNING:\n" -"If you plan to do massive deletions, please make sure Gajim is not running. " -"Generally avoid deletions with contacts you currently chat with." +#: ../src/gtkgui_helpers.py:717 +#, fuzzy +msgid "Extension not supported" +msgstr "Dbus non è supportato." + +#: ../src/gtkgui_helpers.py:718 +#, python-format +msgid "Image cannot be saved in %(type)s format. Save as %(new_filename)s?" msgstr "" -"Benvenuti al gestore delle cronologie di Gajim\n" -"\n" -"Si possono selezionare elementi alla sinistra e/o cercare nella base dati da sotto.\n" -"\n" -"ATTENZIONE:\n" -"Se si ha intenzione di cancellare molte cose, verificare che Gajim non sia in esecuzione. Generalmente evitare di eliminare dati sui contatti con cui si sta conversando." -#: ../src/history_manager.glade.h:7 -msgid "Delete" -msgstr "Elimina" +#: ../src/gtkgui_helpers.py:727 +#, fuzzy +msgid "Save Image as..." +msgstr "Salva file come..." -#: ../src/history_manager.glade.h:8 -msgid "Export" -msgstr "Esporta" - -#: ../src/history_manager.glade.h:9 -msgid "Gajim History Logs Manager" -msgstr "Gestore delle cronologie di Gajim" - -#: ../src/history_manager.glade.h:10 -msgid "_Search Database" -msgstr "_Cerca base dati" - -#: ../src/history_manager.py:58 +#: ../src/history_manager.py:61 msgid "Cannot find history logs database" msgstr "Impossibile trovare la base dati delle cronologie" #. holds jid -#: ../src/history_manager.py:102 +#: ../src/history_manager.py:104 msgid "Contacts" msgstr "Contatti" #. holds time -#: ../src/history_manager.py:115 ../src/history_manager.py:155 -#: ../src/history_window.py:94 +#: ../src/history_manager.py:117 ../src/history_manager.py:157 +#: ../src/history_window.py:85 msgid "Date" msgstr "Data" #. holds nickname -#: ../src/history_manager.py:121 ../src/history_manager.py:173 +#: ../src/history_manager.py:123 ../src/history_manager.py:175 msgid "Nickname" msgstr "Nickname" #. holds message -#: ../src/history_manager.py:129 ../src/history_manager.py:161 -#: ../src/history_window.py:102 +#: ../src/history_manager.py:131 ../src/history_manager.py:163 +#: ../src/history_window.py:93 msgid "Message" msgstr "Messaggio" #. holds subject -#: ../src/history_manager.py:136 ../src/history_manager.py:167 +#: ../src/history_manager.py:138 ../src/history_manager.py:169 msgid "Subject" msgstr "Oggetto" -#: ../src/history_manager.py:181 +#: ../src/history_manager.py:183 msgid "" "Do you want to clean up the database? (STRONGLY NOT RECOMMENDED IF GAJIM IS " "RUNNING)" -msgstr "Ripulire il database? (FORTEMENTE SCONSIGLIATO SE GAJIM È IN ESECUZIONE)" +msgstr "" +"Ripulire il database? (FORTEMENTE SCONSIGLIATO SE GAJIM È IN ESECUZIONE)" -#: ../src/history_manager.py:183 +#: ../src/history_manager.py:185 msgid "" "Normally allocated database size will not be freed, it will just become " "reusable. If you really want to reduce database filesize, click YES, else " @@ -3648,142 +4182,181 @@ msgid "" "\n" "In case you click YES, please wait..." msgstr "" -"Solitamente lo spazio allocato per la base di dati non verrà liberato, ma solamente reso riutilizzabile. Se si vuole veramente ridurre la dimensione della base di dati, premere SÃŒ, altrimenti NO.\n" +"Solitamente lo spazio allocato per la base di dati non verrà liberato, ma " +"solamente reso riutilizzabile. Se si vuole veramente ridurre la dimensione " +"della base di dati, premere SÃŒ, altrimenti NO.\n" "\n" "Nel caso si prema SÃŒ, attendere..." -#: ../src/history_manager.py:389 +#: ../src/history_manager.py:391 msgid "Exporting History Logs..." msgstr "Esportazione cronologie..." -#: ../src/history_manager.py:465 +#: ../src/history_manager.py:467 #, python-format msgid "%(who)s on %(time)s said: %(message)s\n" msgstr "%(who)s alle %(time)s ha detto: %(message)s\n" -#: ../src/history_manager.py:465 +#: ../src/history_manager.py:467 msgid "who" msgstr "chi" -#: ../src/history_manager.py:503 +#: ../src/history_manager.py:505 msgid "Do you really want to delete logs of the selected contact?" msgid_plural "Do you really want to delete logs of the selected contacts?" -msgstr[0] "Si vuole davvero eliminare la cronologia per il contatto selezionato?" -msgstr[1] "Si vuole davvero eliminare la cronologia per i contatti selezionati?" +msgstr[0] "" +"Si vuole davvero eliminare la cronologia per il contatto selezionato?" +msgstr[1] "" +"Si vuole davvero eliminare la cronologia per i contatti selezionati?" -#: ../src/history_manager.py:507 ../src/history_manager.py:543 +#: ../src/history_manager.py:509 ../src/history_manager.py:545 msgid "This is an irreversible operation." msgstr "Questa operazione è irreversibile." -#: ../src/history_manager.py:540 +#: ../src/history_manager.py:542 msgid "Do you really want to delete the selected message?" msgid_plural "Do you really want to delete the selected messages?" msgstr[0] "Si vuole davvero eliminare il messaggio selezionato?" msgstr[1] "Si vuole davvero eliminare i messaggi selezionati?" -#: ../src/history_window.py:111 ../src/history_window.py:113 +#: ../src/history_window.py:102 ../src/history_window.py:104 #, python-format msgid "Conversation History with %s" msgstr "Cronologia conversazione con %s" -#: ../src/history_window.py:265 +#: ../src/history_window.py:258 #, python-format msgid "%(nick)s is now %(status)s: %(status_msg)s" msgstr "%(nick)s ora è %(status)s: %(status_msg)s" -#: ../src/history_window.py:269 +#: ../src/history_window.py:262 ../src/notify.py:113 #, python-format msgid "%(nick)s is now %(status)s" msgstr "%(nick)s è ora %(status)s" -#: ../src/history_window.py:275 +#: ../src/history_window.py:268 #, python-format msgid "Status is now: %(status)s: %(status_msg)s" msgstr "Lo stato ora è: %(status)s: %(status_msg)s" -#: ../src/history_window.py:278 +#: ../src/history_window.py:271 #, python-format msgid "Status is now: %(status)s" msgstr "Lo stato ora è: %(status)s" -#: ../src/message_window.py:233 +#: ../src/message_window.py:244 msgid "Messages" msgstr "Messaggi" -#: ../src/message_window.py:234 +#: ../src/message_window.py:245 #, python-format msgid "%s - Gajim" msgstr "%s - Gajim" -#: ../src/roster_window.py:140 +#: ../src/notify.py:111 +#, fuzzy, python-format +msgid "%(nick)s Changed Status" +msgstr "%(nick)s è ora %(status)s" + +#: ../src/notify.py:121 +#, python-format +msgid "%(nickname)s Signed In" +msgstr "%(nickname)s connesso" + +#: ../src/notify.py:129 +#, python-format +msgid "%(nickname)s Signed Out" +msgstr "%(nickname)s disconnesso" + +#: ../src/notify.py:141 +#, python-format +msgid "New Single Message from %(nickname)s" +msgstr "Nuovo messaggio singolo da %(nickname)s" + +#: ../src/notify.py:150 +#, python-format +msgid "New Private Message from room %s" +msgstr "Nuovo messaggio privato dalla stanza %s" + +#: ../src/notify.py:151 +#, python-format +msgid "%(nickname)s: %(message)s" +msgstr "%(nickname)s: %(message)s" + +#: ../src/notify.py:157 +#, python-format +msgid "New Message from %(nickname)s" +msgstr "Nuovo messaggio da %(nickname)s" + +#: ../src/roster_window.py:131 msgid "Merged accounts" msgstr "Account uniti" -#: ../src/roster_window.py:289 ../src/common/helpers.py:42 +#: ../src/roster_window.py:288 ../src/common/helpers.py:39 msgid "Observers" msgstr "Osservatori" -#: ../src/roster_window.py:542 +#: ../src/roster_window.py:544 #, python-format msgid "You are already in room %s" msgstr "Sei già nella stanza %s" -#: ../src/roster_window.py:546 ../src/roster_window.py:2262 +#: ../src/roster_window.py:548 ../src/roster_window.py:2280 msgid "You cannot join a room while you are invisible" msgstr "Non è possibile unirsi ad una stanza quando si è invisibile" #. the 'manage gc bookmarks' item is showed #. below to avoid duplicate code #. add -#: ../src/roster_window.py:735 +#: ../src/roster_window.py:748 #, python-format msgid "to %s account" msgstr "all'account %s" #. disco -#: ../src/roster_window.py:742 +#: ../src/roster_window.py:755 #, python-format msgid "using %s account" msgstr "usando l'account %s" -#. new message +#. new chat #. for chat_with #. for single message -#: ../src/roster_window.py:750 ../src/systray.py:194 ../src/systray.py:201 +#: ../src/roster_window.py:763 ../src/systray.py:193 ../src/systray.py:198 #, python-format msgid "using account %s" msgstr "usando l'account %s" #. profile, avatar -#: ../src/roster_window.py:759 +#: ../src/roster_window.py:772 #, python-format msgid "of account %s" msgstr "dell'account %s" -#: ../src/roster_window.py:818 +#: ../src/roster_window.py:831 msgid "Manage Bookmarks..." msgstr "Gestione segnalibri..." -#: ../src/roster_window.py:842 +#: ../src/roster_window.py:855 #, python-format msgid "for account %s" msgstr "per l'account %s" #. History manager -#: ../src/roster_window.py:863 +#: ../src/roster_window.py:876 msgid "History Manager" msgstr "Gestore cronologia" -#: ../src/roster_window.py:872 +#: ../src/roster_window.py:885 msgid "_Join New Room" msgstr "_Entra in nuova stanza" -#: ../src/roster_window.py:1158 +#: ../src/roster_window.py:1159 #, python-format msgid "Transport \"%s\" will be removed" msgstr "Il trasporto \"%s\" verrà rimosso" -#: ../src/roster_window.py:1158 +#: ../src/roster_window.py:1159 msgid "" "You will no longer be able to send and receive messages to contacts from " "this transport." @@ -3791,11 +4364,11 @@ msgstr "" "Non sarai in grado di mandare e ricevere messaggi verso i contatti di questo " "trasporto." -#: ../src/roster_window.py:1200 +#: ../src/roster_window.py:1201 msgid "Assign OpenPGP Key" msgstr "Assegna chiave OpenPGP" -#: ../src/roster_window.py:1201 +#: ../src/roster_window.py:1202 msgid "Select a key to apply to the contact" msgstr "Seleziona una chiave da applicare al contatto" @@ -3819,45 +4392,47 @@ msgstr "_Disconnetti" msgid "_Change Status Message" msgstr "_Cambia messaggio di stato" -#: ../src/roster_window.py:1617 +#: ../src/roster_window.py:1621 msgid "Authorization has been sent" msgstr "L'autorizzazione è stata inviata" -#: ../src/roster_window.py:1618 +#: ../src/roster_window.py:1622 #, python-format msgid "Now \"%s\" will know your status." msgstr "Ora \"%s\" conoscerà il tuo stato." -#: ../src/roster_window.py:1642 +#: ../src/roster_window.py:1646 msgid "Subscription request has been sent" msgstr "La richiesta di abbonamento è stata inviata" -#: ../src/roster_window.py:1643 +#: ../src/roster_window.py:1647 #, python-format msgid "If \"%s\" accepts this request you will know his or her status." msgstr "Se \"%s\" accetta questa richiesta conoscerai il suo stato." -#: ../src/roster_window.py:1654 +#: ../src/roster_window.py:1658 msgid "Authorization has been removed" msgstr "L'autorizzazione è stata rimossa" -#: ../src/roster_window.py:1655 +#: ../src/roster_window.py:1659 #, python-format msgid "Now \"%s\" will always see you as offline." msgstr "Ora \"%s\" ti vedrà sempre come offline." -#: ../src/roster_window.py:1824 +#: ../src/roster_window.py:1822 #, python-format msgid "Contact \"%s\" will be removed from your roster" msgstr "Il contatto \"%s\" sarà rimosso dalla tua lista" -#: ../src/roster_window.py:1828 +#: ../src/roster_window.py:1826 msgid "" "By removing this contact you also remove authorization resulting in him or " "her always seeing you as offline." -msgstr "Eliminando questo contatto ne verrà rimossa anche l'autorizzazione. Questi ti vedrà sempre offline." +msgstr "" +"Eliminando questo contatto ne verrà rimossa anche l'autorizzazione. Questi " +"ti vedrà sempre offline." -#: ../src/roster_window.py:1832 +#: ../src/roster_window.py:1830 msgid "" "By removing this contact you also by default remove authorization resulting " "in him or her always seeing you as offline." @@ -3865,36 +4440,36 @@ msgstr "" "Eliminando questo contatto ne rimuoverai anche l'autorizzazione. Questi ti " "vedrà sempre offline." -#: ../src/roster_window.py:1833 +#: ../src/roster_window.py:1831 msgid "I want this contact to know my status after removal" msgstr "Voglio che questo contatto conosca il mio stato dopo la rimozione" -#: ../src/roster_window.py:1901 +#: ../src/roster_window.py:1899 msgid "Passphrase Required" msgstr "Passphrase richiesta" -#: ../src/roster_window.py:1902 +#: ../src/roster_window.py:1900 #, python-format msgid "Enter GPG key passphrase for account %s." msgstr "Inserire la passphrase della chiave GPG per l'account %s." -#: ../src/roster_window.py:1907 +#: ../src/roster_window.py:1905 msgid "Save passphrase" msgstr "Memorizza passphrase" -#: ../src/roster_window.py:1915 +#: ../src/roster_window.py:1913 msgid "Wrong Passphrase" msgstr "Passphrase errata" -#: ../src/roster_window.py:1916 +#: ../src/roster_window.py:1914 msgid "Please retype your GPG passphrase or press Cancel." msgstr "Si può selezionare <" -#: ../src/roster_window.py:1964 ../src/roster_window.py:2021 +#: ../src/roster_window.py:1963 ../src/roster_window.py:2020 msgid "You are participating in one or more group chats" msgstr "Stai partecipando ad una o più chat di gruppo" -#: ../src/roster_window.py:1965 ../src/roster_window.py:2022 +#: ../src/roster_window.py:1964 ../src/roster_window.py:2021 msgid "" "Changing your status to invisible will result in disconnection from those " "group chats. Are you sure you want to go invisible?" @@ -3902,20 +4477,20 @@ msgstr "" "Impostare lo stato invisibile ti farà disconnettere da queste chat di " "gruppo. Diventare veramente invisibile?" -#: ../src/roster_window.py:1981 +#: ../src/roster_window.py:1980 msgid "No account available" msgstr "Nessun account disponibile" -#: ../src/roster_window.py:1982 +#: ../src/roster_window.py:1981 msgid "You must create an account before you can chat with other contacts." msgstr "" "È necessario creare un account prima di poter chattare con altri contatti." -#: ../src/roster_window.py:2427 ../src/roster_window.py:2433 +#: ../src/roster_window.py:2452 ../src/roster_window.py:2458 msgid "You have unread messages" msgstr "Ci sono messaggi non letti" -#: ../src/roster_window.py:2428 ../src/roster_window.py:2434 +#: ../src/roster_window.py:2453 ../src/roster_window.py:2459 msgid "" "Messages will only be available for reading them later if you have history " "enabled." @@ -3923,139 +4498,145 @@ msgstr "" "I messaggi saranno disponibili per una lettura successiva solo se la " "cronologia è abilitata" -#: ../src/roster_window.py:3184 +#: ../src/roster_window.py:3231 #, python-format msgid "Drop %s in group %s" msgstr "Sposta %s nel gruppo %s" -#: ../src/roster_window.py:3191 +#: ../src/roster_window.py:3238 #, python-format msgid "Make %s and %s metacontacts" msgstr "Rendere %s e %s metacontatti" -#: ../src/roster_window.py:3358 +#: ../src/roster_window.py:3408 msgid "Change Status Message..." msgstr "Cambia messaggio di stato..." -#: ../src/systray.py:155 +#: ../src/systray.py:154 msgid "_Change Status Message..." msgstr "_Cambia messaggio di stato..." -#: ../src/systray.py:236 +#: ../src/systray.py:231 msgid "Hide this menu" msgstr "Nascondi questo menu" -#: ../src/systraywin32.py:266 ../src/systraywin32.py:285 -#: ../src/tooltips.py:315 +#: ../src/systraywin32.py:261 ../src/systraywin32.py:280 #, python-format msgid "Gajim - %d unread message" msgid_plural "Gajim - %d unread messages" msgstr[0] "Gajim - %d messaggio non letto" msgstr[1] "Gajim - %d messaggi non letti" -#: ../src/tooltips.py:321 -#, python-format -msgid "Gajim - %d unread single message" -msgid_plural "Gajim - %d unread single messages" +#: ../src/tooltips.py:326 +#, fuzzy, python-format +msgid " %d unread message" +msgid_plural " %d unread messages" +msgstr[0] "Gajim - %d messaggio non letto" +msgstr[1] "Gajim - %d messaggi non letti" + +#: ../src/tooltips.py:332 +#, fuzzy, python-format +msgid " %d unread single message" +msgid_plural " %d unread single messages" msgstr[0] "Gajim - %d messaggio singolo non letto" msgstr[1] "Gajim - %d messaggi singoli non letti" -#: ../src/tooltips.py:327 -#, python-format -msgid "Gajim - %d unread group chat message" -msgid_plural "Gajim - %d unread group chat messages" +#: ../src/tooltips.py:338 +#, fuzzy, python-format +msgid " %d unread group chat message" +msgid_plural " %d unread group chat messages" msgstr[0] "Gajim - %d messaggio in chat di gruppo non letto" msgstr[1] "Gajim - %d messaggi in chat di gruppo non letti" -#: ../src/tooltips.py:333 -#, python-format -msgid "Gajim - %d unread private message" -msgid_plural "Gajim - %d unread private messages" +#: ../src/tooltips.py:344 +#, fuzzy, python-format +msgid " %d unread private message" +msgid_plural " %d unread private messages" msgstr[0] "Gajim - %d messaggio privato non letto" msgstr[1] "Gajim - %d messaggi privati non letti" -#: ../src/tooltips.py:348 ../src/tooltips.py:350 +#: ../src/tooltips.py:359 ../src/tooltips.py:361 #, python-format msgid "Gajim - %s" msgstr "Gajim - %s" -#: ../src/tooltips.py:383 +#: ../src/tooltips.py:395 msgid "Role: " msgstr "Ruolo: " -#: ../src/tooltips.py:384 +#: ../src/tooltips.py:396 msgid "Affiliation: " msgstr "Affiliazione: " -#: ../src/tooltips.py:386 ../src/tooltips.py:518 +#: ../src/tooltips.py:398 ../src/tooltips.py:537 msgid "Resource: " msgstr "Risorsa: " -#: ../src/tooltips.py:394 ../src/tooltips.py:521 ../src/tooltips.py:543 -#: ../src/tooltips.py:654 +#: ../src/tooltips.py:407 ../src/tooltips.py:540 ../src/tooltips.py:565 +#: ../src/tooltips.py:676 msgid "Status: " msgstr "Stato: " -#: ../src/tooltips.py:501 +#: ../src/tooltips.py:514 msgid "Subscription: " msgstr "Abbonamento: " -#: ../src/tooltips.py:510 +#: ../src/tooltips.py:523 msgid "OpenPGP: " msgstr "OpenPGP: " -#: ../src/tooltips.py:548 +#: ../src/tooltips.py:570 #, python-format msgid "Last status on %s" msgstr "Ultimo stato su %s" -#: ../src/tooltips.py:550 +#: ../src/tooltips.py:572 #, python-format msgid "Since %s" msgstr "Da %s" -#: ../src/tooltips.py:610 +#: ../src/tooltips.py:632 msgid "Download" msgstr "Scarica" -#: ../src/tooltips.py:616 +#: ../src/tooltips.py:638 msgid "Upload" msgstr "Invia" -#: ../src/tooltips.py:623 +#: ../src/tooltips.py:645 msgid "Type: " msgstr "Tipo: " -#: ../src/tooltips.py:629 +#: ../src/tooltips.py:651 msgid "Transferred: " msgstr "Trasferito: " -#: ../src/tooltips.py:632 ../src/tooltips.py:653 +#: ../src/tooltips.py:654 ../src/tooltips.py:675 msgid "Not started" msgstr "Non iniziato" -#: ../src/tooltips.py:636 +#: ../src/tooltips.py:658 msgid "Stopped" msgstr "Fermato" -#: ../src/tooltips.py:638 ../src/tooltips.py:641 +#: ../src/tooltips.py:660 ../src/tooltips.py:663 msgid "Completed" msgstr "Completato" #. stalled is not paused. it is like 'frozen' it stopped alone -#: ../src/tooltips.py:649 +#: ../src/tooltips.py:671 msgid "Stalled" msgstr "In stallo" -#: ../src/tooltips.py:651 +#: ../src/tooltips.py:673 msgid "Transferring" msgstr "Trasferimento in corso" -#: ../src/tooltips.py:683 +#: ../src/tooltips.py:705 msgid "This service has not yet responded with detailed information" msgstr "Questo servizio non ha ancora inviato informazioni dettagliate" -#: ../src/tooltips.py:686 +#: ../src/tooltips.py:708 msgid "" "This service could not respond with detailed information.\n" "It is most likely legacy or broken" @@ -4064,24 +4645,24 @@ msgstr "" "È probabilmente vecchio o malfunzionante" #. keep identation -#: ../src/vcard.py:186 +#: ../src/vcard.py:188 msgid "Could not load image" msgstr "Impossibile caricare l'immagine" -#: ../src/vcard.py:262 +#: ../src/vcard.py:289 msgid "?Client:Unknown" msgstr "?Client:Sconosciuto" -#: ../src/vcard.py:264 +#: ../src/vcard.py:291 msgid "?OS:Unknown" msgstr "Sconosciuto" -#: ../src/vcard.py:281 +#: ../src/vcard.py:308 #, python-format msgid "since %s" msgstr "da %s" -#: ../src/vcard.py:305 +#: ../src/vcard.py:332 msgid "" "This contact is interested in your presence information, but you are not " "interested in his/her presence" @@ -4089,7 +4670,7 @@ msgstr "" "Questo contatto è interessato alle informazioni sulla tua presenza, ma tu " "non sei interessato alla sua" -#: ../src/vcard.py:307 +#: ../src/vcard.py:334 msgid "" "You are interested in the contact's presence information, but he/she is not " "interested in yours" @@ -4097,14 +4678,14 @@ msgstr "" "Sei interessato alle informazioni sulla presenza di questo contatto, ma lui/" "lei non è interessato/a alla tua" -#: ../src/vcard.py:309 +#: ../src/vcard.py:336 msgid "You and the contact are interested in each other's presence information" msgstr "" "Tu ed il contatto siete reciprocamente interessati alle informazioni sulla " "presenza dell'altro" #. None -#: ../src/vcard.py:311 +#: ../src/vcard.py:338 msgid "" "You are not interested in the contact's presence, and neither he/she is " "interested in yours" @@ -4112,69 +4693,69 @@ msgstr "" "Non sei interessato alla presenza del contatto, e lui/lei non è interessato " "alla tua" -#: ../src/vcard.py:320 +#: ../src/vcard.py:347 msgid "You are waiting contact's answer about your subscription request" msgstr "" "Sei in attesa della risposta del contatto alla tua richiesta di abbonamento" -#: ../src/vcard.py:332 ../src/vcard.py:355 +#: ../src/vcard.py:359 ../src/vcard.py:382 msgid " resource with priority " msgstr " risorsa con priorità " -#: ../src/vcard.py:434 +#: ../src/vcard.py:458 msgid "Without a connection you can not publish your contact information." msgstr "Senza una connessione non è possibile pubblicare i dati personali." -#: ../src/vcard.py:463 +#: ../src/vcard.py:491 msgid "Without a connection, you can not get your contact information." msgstr "Senza una connessione, non è possibile ottenere i dati personali." -#: ../src/vcard.py:467 +#: ../src/vcard.py:495 msgid "Personal details" msgstr "Informazioni personali" -#: ../src/common/check_paths.py:39 +#: ../src/common/check_paths.py:35 msgid "creating logs database" msgstr "creazione database log" -#: ../src/common/check_paths.py:84 ../src/common/check_paths.py:95 -#: ../src/common/check_paths.py:102 +#: ../src/common/check_paths.py:82 ../src/common/check_paths.py:93 +#: ../src/common/check_paths.py:100 #, python-format msgid "%s is file but it should be a directory" msgstr "%s è un file ma dovrebbe essere una cartella" -#: ../src/common/check_paths.py:85 ../src/common/check_paths.py:96 -#: ../src/common/check_paths.py:103 ../src/common/check_paths.py:110 +#: ../src/common/check_paths.py:83 ../src/common/check_paths.py:94 +#: ../src/common/check_paths.py:101 ../src/common/check_paths.py:109 msgid "Gajim will now exit" msgstr "Gajim sta per uscire" -#: ../src/common/check_paths.py:109 +#: ../src/common/check_paths.py:108 #, python-format msgid "%s is directory but should be file" msgstr "%s è una cartella ma dovrebbe essere un file" -#: ../src/common/check_paths.py:125 +#: ../src/common/check_paths.py:124 #, python-format msgid "creating %s directory" msgstr "creazione della cartella %s" -#: ../src/common/exceptions.py:35 +#: ../src/common/exceptions.py:32 msgid "pysqlite2 (aka python-pysqlite2) dependency is missing. Exiting..." msgstr "La dipendenza pysqlite2 (o python-pysqlite2) è mancante. Uscita..." -#: ../src/common/exceptions.py:43 +#: ../src/common/exceptions.py:40 msgid "Service not available: Gajim is not running, or remote_control is False" msgstr "" "Servizio non disponibile: Gajim non è in esecuzione, o remote_control è " "Falso." -#: ../src/common/exceptions.py:51 +#: ../src/common/exceptions.py:48 msgid "D-Bus is not present on this machine or python module is missing" msgstr "" "D-Bus non è presente su questa macchina o il relativo modulo python è " "mancante" -#: ../src/common/exceptions.py:59 +#: ../src/common/exceptions.py:56 msgid "" "Session bus is not available.\n" "Try reading http://trac.gajim.org/wiki/GajimDBus" @@ -4182,37 +4763,66 @@ msgstr "" "Il bus di sessione non è disponibile.\n" "Provare a leggere http://trac.gajim.org/wiki/GajimDBus" -#: ../src/common/config.py:53 +#: ../src/common/config.py:51 msgid "Use DBus and Notification-Daemon to show notifications" msgstr "Usa DBus e Notification-Daemon per mostrare le notifiche" -#: ../src/common/config.py:57 +#: ../src/common/config.py:55 msgid "Time in minutes, after which your status changes to away." msgstr "Tempo in minuti dopo il quale lo stato diventa \"assente\"." -#: ../src/common/config.py:58 +#: ../src/common/config.py:56 msgid "Away as a result of being idle" msgstr "Assente per inattività" -#: ../src/common/config.py:60 +#: ../src/common/config.py:58 msgid "Time in minutes, after which your status changes to not available." msgstr "Tempo in minuti dopo il quale lo stato diventa \"non disponibile\"." -#: ../src/common/config.py:61 +#: ../src/common/config.py:59 msgid "Not available as a result of being idle" msgstr "Non disponibile per inattività" -#: ../src/common/config.py:88 +#: ../src/common/config.py:77 +msgid "List (space separated) of rows (accounts and groups) that are collapsed" +msgstr "" + +#: ../src/common/config.py:83 +msgid "" +"'always' - print time for every message.\n" +"'sometimes' - print time every print_ichat_every_foo_minutes minute.\n" +"'never' - never print time." +msgstr "" + +#: ../src/common/config.py:84 +msgid "" +"Value of fuzziness from 1 to 4 or 0 to disable fuzzyclock. 1 is the most " +"precise clock, 4 the less precise one." +msgstr "" + +#: ../src/common/config.py:87 msgid "Treat * / _ pairs as possible formatting characters." msgstr "Si può selezionare <" -#: ../src/common/config.py:89 +#: ../src/common/config.py:88 msgid "" "If True, do not remove */_ . So *abc* will be bold but with * * not removed." msgstr "" "Se Vero, non verranno rimossi */_. *abc* verrà mostrato in grassetto ma " "senza rimuovere * *." +#: ../src/common/config.py:98 +msgid "" +"Character to add after nickname when using nick completion (tab) in group " +"chat" +msgstr "" + +#: ../src/common/config.py:99 +msgid "" +"Character to propose to add after desired nickname when desired nickname is " +"used by someone else in group chat" +msgstr "" + #: ../src/common/config.py:131 msgid "Add * and [n] in roster title?" msgstr "Aggiungere * e [n] al titolo della lista contatti?" @@ -4256,6 +4866,12 @@ msgid "If checked, Gajim can be controlled remotely using gajim-remote." msgstr "" "Se marcato, Gajim può essere controllato da remoto usando gajim-remote." +#: ../src/common/config.py:145 +msgid "" +"When not printing time for every message (print_time==sometimes), print it " +"every x minutes" +msgstr "" + #: ../src/common/config.py:146 msgid "Ask before closing a group chat tab/window." msgstr "Chiedere prima di chiudere una finestra/scheda di chat di gruppo." @@ -4264,13 +4880,17 @@ msgstr "Chiedere prima di chiudere una finestra/scheda di chat di gruppo." msgid "" "Always ask before closing group chat tab/window in this space separated list " "of room jids." -msgstr "Chiedere sempre prima di chiudere una finestra/scheda di chat di gruppo in questa lista separata da spazi di jid di stanze." +msgstr "" +"Chiedere sempre prima di chiudere una finestra/scheda di chat di gruppo in " +"questa lista separata da spazi di jid di stanze." #: ../src/common/config.py:148 msgid "" "Never ask before closing group chat tab/window in this space separated list " "of room jids." -msgstr "Non chiedere mai prima di chiudere una scheda/finestra di chat in questa lista separata da spazi di jid di stanze." +msgstr "" +"Non chiedere mai prima di chiudere una scheda/finestra di chat in questa " +"lista separata da spazi di jid di stanze." #: ../src/common/config.py:151 msgid "" @@ -4289,7 +4909,8 @@ msgid "Show tab when only one conversation?" msgstr "Mostrare scheda quando c'è una sola conversazione?" #: ../src/common/config.py:162 -msgid "Show tab border if one conversation?" +#, fuzzy +msgid "Show tabbed notebook border in chat windows?" msgstr "Mostrare bordo per le schede quando c'è una sola conversazione?" #: ../src/common/config.py:163 @@ -4341,15 +4962,28 @@ msgstr "" "Se Vero, Gajim chiederà un avatar ad ogni contatto che non aveva un avatar " "l'ultima volta o ne ha uno troppo vecchio in cache." -#. FIXME: remove you and make it Gajim will not; and/or his or *her* status messages -#: ../src/common/config.py:184 +#: ../src/common/config.py:183 +#, fuzzy msgid "" -"If False, you will no longer see status line in chats when a contact changes " -"his or her status and/or his status message." +"If False, Gajim will no longer print status line in chats when a contact " +"changes his or her status and/or his or her status message." msgstr "" "Se Falso, non si vedrà più la linea di stato nelle chat quando un contatto " "cambia stato o messaggio di stato." +#: ../src/common/config.py:184 +msgid "" +"can be \"none\", \"all\" or \"in_and_out\". If \"none\", Gajim will no " +"longer print status line in groupchats when a member changes his or her " +"status and/or his or her status message. If \"all\" Gajim will print all " +"status messages. If \"in_and_out\", gajim will only print FOO enters/leaves " +"room" +msgstr "" + +#: ../src/common/config.py:187 +msgid "Don't show avatar for the transport itself." +msgstr "" + #: ../src/common/config.py:189 msgid "" "If True and installed GTK+ and PyGTK versions are at least 2.8, make the " @@ -4369,7 +5003,8 @@ msgstr "" "protetta da password. Impostare a Falso per smettere di inviare informazioni " "SHA nella presenza sulle chat di gruppo" -#: ../src/common/config.py:193 +#. always, never, peracct, pertype should not be translated +#: ../src/common/config.py:194 msgid "" "Controls the window where new messages are placed.\n" "'always' - All messages are sent to a single window.\n" @@ -4388,98 +5023,113 @@ msgstr "" "ad una specifica finestra. Nota, cambiare questa opzione richiede il riavvio " "di Gajim prima che le modifiche abbiano effetto" -#: ../src/common/config.py:194 +#: ../src/common/config.py:195 msgid "If False, you will no longer see the avatar in the chat window" msgstr "Se Falso, l'avatar non verrà mostrato nella finestra di chat" -#: ../src/common/config.py:195 +#: ../src/common/config.py:196 msgid "If True, pressing the escape key closes a tab/window" msgstr "Se Vero, premere il tasto Esc chiude una scheda/finestra" -#: ../src/common/config.py:196 +#: ../src/common/config.py:197 msgid "Hides the buttons in group chat window" msgstr "Nasconde i pulsanti nella finestra di chat di gruppo" -#: ../src/common/config.py:197 +#: ../src/common/config.py:198 msgid "Hides the buttons in two persons chat window" msgstr "Nasconde i pulsanti nella finestra di chat a due persone" -#: ../src/common/config.py:198 +#: ../src/common/config.py:199 msgid "Hides the banner in a group chat window" msgstr "Nasconde l'intestazione in una finestra di chat di gruppo" -#: ../src/common/config.py:199 +#: ../src/common/config.py:200 msgid "Hides the banner in two persons chat window" msgstr "Nasconde l'intestazione nella finestra di chat a due persone" -#: ../src/common/config.py:200 +#: ../src/common/config.py:201 msgid "Hides the room occupants list in groupchat window" -msgstr "Nasconde la lista dei presenti nella stanza nella finestra di chat di gruppo" +msgstr "" +"Nasconde la lista dei presenti nella stanza nella finestra di chat di gruppo" + +#: ../src/common/config.py:202 +msgid "Merge consecutive nickname in chat window" +msgstr "" + +#: ../src/common/config.py:203 +msgid "Indentation when using merge consecutive nickame" +msgstr "" + +#: ../src/common/config.py:204 +msgid "List of colors that will be used to color nicknames in groupchats" +msgstr "" #. yes, no, ask -#: ../src/common/config.py:233 +#: ../src/common/config.py:237 msgid "Jabberd2 workaround" msgstr "Workaround Jabberd2" -#: ../src/common/config.py:237 +#: ../src/common/config.py:241 msgid "" "If checked, Gajim will use your IP and proxies defined in " "file_transfer_proxies option for file transfer." -msgstr "Se marcato, Gajim userà l'IP della macchina ed i proxy definiti nell'opzione file_transfer_proxies per il trasferimento file." +msgstr "" +"Se marcato, Gajim userà l'IP della macchina ed i proxy definiti nell'opzione " +"file_transfer_proxies per il trasferimento file." -#: ../src/common/config.py:290 +#: ../src/common/config.py:297 msgid "Sleeping" msgstr "Dormo" -#: ../src/common/config.py:291 +#: ../src/common/config.py:298 msgid "Back soon" msgstr "Torno presto" -#: ../src/common/config.py:291 +#: ../src/common/config.py:298 msgid "Back in some minutes." msgstr "Di ritorno tra qualche minuto." -#: ../src/common/config.py:292 +#: ../src/common/config.py:299 msgid "Eating" msgstr "Mangio" -#: ../src/common/config.py:292 +#: ../src/common/config.py:299 msgid "I'm eating, so leave me a message." msgstr "Sto mangiando, lascia pure un messaggio" -#: ../src/common/config.py:293 +#: ../src/common/config.py:300 msgid "Movie" msgstr "Film" -#: ../src/common/config.py:293 +#: ../src/common/config.py:300 msgid "I'm watching a movie." msgstr "Sto guardando un film." -#: ../src/common/config.py:294 +#: ../src/common/config.py:301 msgid "Working" msgstr "Lavoro" -#: ../src/common/config.py:294 +#: ../src/common/config.py:301 msgid "I'm working." msgstr "Sto lavorando." -#: ../src/common/config.py:295 +#: ../src/common/config.py:302 msgid "Phone" msgstr "Telefono" -#: ../src/common/config.py:295 +#: ../src/common/config.py:302 msgid "I'm on the phone." msgstr "Sono al telefono" -#: ../src/common/config.py:296 +#: ../src/common/config.py:303 msgid "Out" msgstr "Fuori" -#: ../src/common/config.py:296 +#: ../src/common/config.py:303 msgid "I'm out enjoying life" msgstr "Sono fuori a divertirmi" -#: ../src/common/config.py:305 +#: ../src/common/config.py:312 msgid "" "Sound to play when a MUC message contains one of the words in " "muc_highlight_words, or when a MUC message contains your nickname." @@ -4487,7 +5137,7 @@ msgstr "" "Suono da riprodurre quando un messaggio MUC contiene una delle parole in " "muc_highlight_words, o quando un messaggio MUC contiene il tuo nickname." -#: ../src/common/config.py:306 +#: ../src/common/config.py:313 msgid "" "Sound to play when any MUC message arrives. (This setting is taken into " "account only if notify_on_all_muc_messages is True)" @@ -4495,97 +5145,99 @@ msgstr "" "Suono da riprodurre quando arriva un messaggio MUC (questa impostazione ha " "valore solo se notify_on_all_muc_messages è Vero)." -#: ../src/common/config.py:314 ../src/common/optparser.py:181 +#: ../src/common/config.py:321 ../src/common/optparser.py:185 msgid "green" msgstr "verde" -#: ../src/common/config.py:318 ../src/common/optparser.py:167 +#: ../src/common/config.py:325 ../src/common/optparser.py:171 msgid "grocery" msgstr "drogheria" -#: ../src/common/config.py:322 +#: ../src/common/config.py:329 msgid "human" msgstr "umano" -#: ../src/common/config.py:326 +#: ../src/common/config.py:333 msgid "marine" msgstr "marino" -#: ../src/common/connection.py:152 +#: ../src/common/connection.py:172 #, python-format msgid "Connection with account \"%s\" has been lost" msgstr "Connessione con l'account \"%s\" persa" -#: ../src/common/connection.py:153 +#: ../src/common/connection.py:173 msgid "To continue sending and receiving messages, you will need to reconnect." msgstr "" "Per continuare a mandare e ricevere messaggi, è necessario riconnettersi." -#: ../src/common/connection.py:169 ../src/common/connection.py:195 +#: ../src/common/connection.py:185 ../src/common/connection.py:211 #, python-format msgid "Transport %s answered wrongly to register request." -msgstr "Il trasporto %s ha risposto in maniera errata alla richiesta di registrazione." +msgstr "" +"Il trasporto %s ha risposto in maniera errata alla richiesta di " +"registrazione." #. wrong answer -#: ../src/common/connection.py:194 +#: ../src/common/connection.py:210 msgid "Invalid answer" msgstr "Risposta non valida" -#: ../src/common/connection.py:348 ../src/common/connection.py:384 -#: ../src/common/connection.py:754 +#: ../src/common/connection.py:397 ../src/common/connection.py:433 +#: ../src/common/connection.py:857 #, python-format msgid "Could not connect to \"%s\"" msgstr "Non ci si è potuti collegare a \"%s\"" -#: ../src/common/connection.py:362 +#: ../src/common/connection.py:411 #, python-format msgid "Connected to server %s:%s with %s" msgstr "Connesso al server %s:%s con %s" -#: ../src/common/connection.py:385 +#: ../src/common/connection.py:434 msgid "Check your connection or try again later" msgstr "Controllare la connessione o riprovare più tardi" -#: ../src/common/connection.py:410 +#: ../src/common/connection.py:459 #, python-format msgid "Authentication failed with \"%s\"" msgstr "Autenticazione con \"%s\" fallita" -#: ../src/common/connection.py:411 +#: ../src/common/connection.py:460 msgid "Please check your login and password for correctness." msgstr "Verificare la correttezza di login e password." #. We didn't set a passphrase -#: ../src/common/connection.py:487 +#: ../src/common/connection.py:573 msgid "OpenPGP passphrase was not given" msgstr "Non è stata impostata la passphrase OpenPGP" #. %s is the account name here -#: ../src/common/connection.py:489 +#: ../src/common/connection.py:575 #, python-format msgid "You will be connected to %s without OpenPGP." msgstr "Ci si connetterà a %s senza OpenPGP" #. do not show I'm invisible! -#: ../src/common/connection.py:526 +#: ../src/common/connection.py:612 msgid "invisible" msgstr "invisibile" -#: ../src/common/connection.py:527 +#: ../src/common/connection.py:613 msgid "offline" msgstr "offline" -#: ../src/common/connection.py:528 +#: ../src/common/connection.py:614 #, python-format msgid "I'm %s" msgstr "Sono %s" #. we're not english -#: ../src/common/connection.py:611 +#: ../src/common/connection.py:699 msgid "[This message is encrypted]" msgstr "[Questo messaggio è cifrato]" -#: ../src/common/connection.py:649 +#: ../src/common/connection.py:742 #, python-format msgid "" "Subject: %s\n" @@ -4594,223 +5246,310 @@ msgstr "" "Oggetto: %s\n" "%s" -#: ../src/common/connection.py:699 +#: ../src/common/connection.py:795 ../src/common/connection_handlers.py:1511 msgid "I would like to add you to my roster." msgstr "Vorrei aggiungerti ai miei contatti." -#: ../src/common/helpers.py:103 +#: ../src/common/connection_handlers.py:49 +msgid "Unable to load idle module" +msgstr "Impossibile caricare il modulo idle" + +#: ../src/common/connection_handlers.py:581 +#, python-format +msgid "Registration information for transport %s has not arrived in time" +msgstr "" +"Le informazioni di registrazione per il transport %s non sono arrivate in " +"tempo" + +#. password required to join +#. we are banned +#. room does not exist +#: ../src/common/connection_handlers.py:1450 +#: ../src/common/connection_handlers.py:1453 +#: ../src/common/connection_handlers.py:1456 +#: ../src/common/connection_handlers.py:1459 +#: ../src/common/connection_handlers.py:1462 +#: ../src/common/connection_handlers.py:1465 +#: ../src/common/connection_handlers.py:1473 +msgid "Unable to join room" +msgstr "Non è possibile entrare nella stanza" + +#: ../src/common/connection_handlers.py:1451 +msgid "A password is required to join this room." +msgstr "È necessaria una password per entrare in questa stanza." + +#: ../src/common/connection_handlers.py:1454 +msgid "You are banned from this room." +msgstr "Sei bandito da questa stanza." + +#: ../src/common/connection_handlers.py:1457 +msgid "Such room does not exist." +msgstr "Questa stanza non esiste." + +#: ../src/common/connection_handlers.py:1460 +msgid "Room creation is restricted." +msgstr "Non è permessa la creazione di stanze." + +#: ../src/common/connection_handlers.py:1463 +msgid "Your registered nickname must be used." +msgstr "È necessario usare il nickname registrato." + +#: ../src/common/connection_handlers.py:1466 +msgid "You are not in the members list." +msgstr "Non appartieni alla lista dei membri." + +#: ../src/common/connection_handlers.py:1474 +msgid "" +"Your desired nickname is in use or registered by another occupant.\n" +"Please specify another nickname below:" +msgstr "" +"Il nickname desiderato è in uso o registrato da un altro partecipante.\n" +"Specificare un altro nickname sotto:" + +#. BE CAREFUL: no con.updateRosterItem() in a callback +#: ../src/common/connection_handlers.py:1519 +#, python-format +msgid "we are now subscribed to %s" +msgstr "si è ora abbonati a %s" + +#: ../src/common/connection_handlers.py:1521 +#, python-format +msgid "unsubscribe request from %s" +msgstr "richiesta di cancellazione abbonamento da %s" + +#: ../src/common/connection_handlers.py:1523 +#, python-format +msgid "we are now unsubscribed from %s" +msgstr "è stato ora cancellato l'abbonamento a %s" + +#: ../src/common/connection_handlers.py:1680 +#, python-format +msgid "" +"JID %s is not RFC compliant. It will not be added to your roster. Use roster " +"management tools such as http://jru.jabberstudio.org/ to remove it" +msgstr "" +"Il JID %s non rispetta le RFC. Non verrà aggiunto ai contatti. Usare " +"strumenti di gestione dei contatti come http://jru.jabberstudio.org/ per " +"rimuoverlo" + +#: ../src/common/helpers.py:100 msgid "Invalid character in username." msgstr "Carattere non valido nel nome utente." -#: ../src/common/helpers.py:108 +#: ../src/common/helpers.py:105 msgid "Server address required." msgstr "Indirizzo del server richiesto." -#: ../src/common/helpers.py:113 +#: ../src/common/helpers.py:110 msgid "Invalid character in hostname." msgstr "Carattere non valido nell'hostname." -#: ../src/common/helpers.py:119 +#: ../src/common/helpers.py:116 msgid "Invalid character in resource." msgstr "Carattere non valido nella risorsa." #. GiB means gibibyte -#: ../src/common/helpers.py:159 +#: ../src/common/helpers.py:156 #, python-format msgid "%s GiB" msgstr "%s GiB" #. GB means gigabyte -#: ../src/common/helpers.py:162 +#: ../src/common/helpers.py:159 #, python-format msgid "%s GB" msgstr "%s GB" #. MiB means mibibyte -#: ../src/common/helpers.py:166 +#: ../src/common/helpers.py:163 #, python-format msgid "%s MiB" msgstr "%s MiB" #. MB means megabyte -#: ../src/common/helpers.py:169 +#: ../src/common/helpers.py:166 #, python-format msgid "%s MB" msgstr "%s MB" #. KiB means kibibyte -#: ../src/common/helpers.py:173 +#: ../src/common/helpers.py:170 #, python-format msgid "%s KiB" msgstr "%s KiB" #. KB means kilo bytes -#: ../src/common/helpers.py:176 +#: ../src/common/helpers.py:173 #, python-format msgid "%s KB" msgstr "%s KB" #. B means bytes -#: ../src/common/helpers.py:179 +#: ../src/common/helpers.py:176 #, python-format msgid "%s B" msgstr "%s B" -#: ../src/common/helpers.py:189 +#: ../src/common/helpers.py:205 msgid "_Busy" msgstr "O_ccupato" -#: ../src/common/helpers.py:191 +#: ../src/common/helpers.py:207 msgid "Busy" msgstr "Occupato" -#: ../src/common/helpers.py:194 +#: ../src/common/helpers.py:210 msgid "_Not Available" msgstr "_Non disponibile" -#: ../src/common/helpers.py:196 +#: ../src/common/helpers.py:212 msgid "Not Available" msgstr "Non disponibile" -#: ../src/common/helpers.py:199 +#: ../src/common/helpers.py:215 msgid "_Free for Chat" msgstr "_Libero per chat" -#: ../src/common/helpers.py:201 +#: ../src/common/helpers.py:217 msgid "Free for Chat" msgstr "Libero per chat" -#: ../src/common/helpers.py:204 +#: ../src/common/helpers.py:220 msgid "_Available" msgstr "_Disponibile" -#: ../src/common/helpers.py:206 +#: ../src/common/helpers.py:222 msgid "Available" msgstr "Disponibile" -#: ../src/common/helpers.py:208 +#: ../src/common/helpers.py:224 msgid "Connecting" msgstr "Connessione in corso" -#: ../src/common/helpers.py:211 +#: ../src/common/helpers.py:227 msgid "A_way" msgstr "_Assente" -#: ../src/common/helpers.py:213 +#: ../src/common/helpers.py:229 msgid "Away" msgstr "Assente" -#: ../src/common/helpers.py:216 +#: ../src/common/helpers.py:232 msgid "_Offline" msgstr "_Offline" -#: ../src/common/helpers.py:218 +#: ../src/common/helpers.py:234 msgid "Offline" msgstr "Offline" -#: ../src/common/helpers.py:221 +#: ../src/common/helpers.py:237 msgid "_Invisible" msgstr "_Invisibile" -#: ../src/common/helpers.py:223 -msgid "Invisible" -msgstr "Invisibile" - -#: ../src/common/helpers.py:227 +#: ../src/common/helpers.py:243 msgid "?contact has status:Unknown" msgstr "Sconosciuto" -#: ../src/common/helpers.py:229 +#: ../src/common/helpers.py:245 msgid "?contact has status:Has errors" msgstr "Ci sono errori" -#: ../src/common/helpers.py:234 +#: ../src/common/helpers.py:250 msgid "?Subscription we already have:None" msgstr "Nulla" -#: ../src/common/helpers.py:236 +#: ../src/common/helpers.py:252 msgid "To" msgstr "A" -#: ../src/common/helpers.py:238 +#: ../src/common/helpers.py:254 msgid "From" msgstr "Da" -#: ../src/common/helpers.py:240 +#: ../src/common/helpers.py:256 msgid "Both" msgstr "Entrambi" -#: ../src/common/helpers.py:248 +#: ../src/common/helpers.py:264 msgid "?Ask (for Subscription):None" msgstr "Nulla" -#: ../src/common/helpers.py:250 +#: ../src/common/helpers.py:266 msgid "Subscribe" msgstr "Abbonati" -#: ../src/common/helpers.py:259 +#: ../src/common/helpers.py:275 msgid "?Group Chat Contact Role:None" msgstr "Nessuno" -#: ../src/common/helpers.py:262 +#: ../src/common/helpers.py:278 msgid "Moderators" msgstr "Moderatori" -#: ../src/common/helpers.py:264 +#: ../src/common/helpers.py:280 msgid "Moderator" msgstr "Moderatore" -#: ../src/common/helpers.py:267 +#: ../src/common/helpers.py:283 msgid "Participants" msgstr "Partecipanti" -#: ../src/common/helpers.py:269 +#: ../src/common/helpers.py:285 msgid "Participant" msgstr "Participante" -#: ../src/common/helpers.py:272 +#: ../src/common/helpers.py:288 msgid "Visitors" msgstr "Visitatori" -#: ../src/common/helpers.py:274 +#: ../src/common/helpers.py:290 msgid "Visitor" msgstr "Visitatore" -#: ../src/common/helpers.py:310 +#: ../src/common/helpers.py:326 msgid "is paying attention to the conversation" msgstr "sta seguendo la conversazione" -#: ../src/common/helpers.py:312 +#: ../src/common/helpers.py:328 msgid "is doing something else" msgstr "sta facendo altro" -#: ../src/common/helpers.py:314 +#: ../src/common/helpers.py:330 msgid "is composing a message..." msgstr "sta scrivendo..." #. paused means he or she was compoing but has stopped for a while -#: ../src/common/helpers.py:317 +#: ../src/common/helpers.py:333 msgid "paused composing a message" msgstr "si è fermato mentre scriveva un messaggio" -#: ../src/common/helpers.py:319 +#: ../src/common/helpers.py:335 msgid "has closed the chat window or tab" msgstr "ha chiuso la finestra o scheda di chat" #. we talk about a file -#: ../src/common/optparser.py:62 +#: ../src/common/optparser.py:60 #, python-format msgid "error: cannot open %s for reading" msgstr "errore: impossibile aprire %s per lettura" -#: ../src/common/optparser.py:167 +#: ../src/common/optparser.py:171 msgid "gtk+" msgstr "gtk+" -#: ../src/common/optparser.py:176 ../src/common/optparser.py:177 +#: ../src/common/optparser.py:180 ../src/common/optparser.py:181 msgid "cyan" msgstr "cyan" +#~ msgid "Automatically authorize contact" +#~ msgstr "Autorizza automaticamente il contatto" + +#~ msgid "Send File" +#~ msgstr "Invia file" + +#~ msgid "Underline" +#~ msgstr "Sottolinea" + #~ msgid "Would you like to overwrite it?" #~ msgstr "Sovrascriverlo?" @@ -4894,59 +5633,6 @@ msgstr "cyan" #~ msgid "Session bus is not available" #~ msgstr "Il bus della sessione non è disponibile" -#~ msgid "Unable to load idle module" -#~ msgstr "Impossibile caricare il modulo idle" - -#~ msgid "Unable to join room" -#~ msgstr "Non è possibile entrare nella stanza" - -#~ msgid "A password is required to join this room." -#~ msgstr "È necessaria una password per entrare in questa stanza." - -#~ msgid "You are banned from this room." -#~ msgstr "Sei bandito da questa stanza." - -#~ msgid "Such room does not exist." -#~ msgstr "Questa stanza non esiste." - -#~ msgid "Room creation is restricted." -#~ msgstr "Non è permessa la creazione di stanze." - -#~ msgid "Your registered nickname must be used." -#~ msgstr "È necessario usare il nickname registrato." - -#~ msgid "You are not in the members list." -#~ msgstr "Non appartieni alla lista dei membri." - -#~ msgid "" -#~ "Your desired nickname is in use or registered by another occupant.\n" -#~ "Please specify another nickname below:" -#~ msgstr "" -#~ "Il nickname desiderato è in uso o registrato da un altro partecipante.\n" -#~ "Specificare un altro nickname sotto:" - -#~ msgid "we are now subscribed to %s" -#~ msgstr "si è ora abbonati a %s" - -#~ msgid "unsubscribe request from %s" -#~ msgstr "richiesta di cancellazione abbonamento da %s" - -#~ msgid "we are now unsubscribed from %s" -#~ msgstr "è stato ora cancellato l'abbonamento a %s" - -#~ msgid "" -#~ "JID %s is not RFC compliant. It will not be added to your roster. Use " -#~ "roster management tools such as http://jru.jabberstudio.org/ to remove it" -#~ msgstr "" -#~ "Il JID %s non rispetta le RFC. Non verrà aggiunto ai contatti. Usare " -#~ "strumenti di gestione dei contatti come http://jru.jabberstudio.org/ per " -#~ "rimuoverlo" - -#~ msgid "Registration information for transport %s has not arrived in time" -#~ msgstr "" -#~ "Le informazioni di registrazione per il transport %s non sono arrivate in " -#~ "tempo" - #~ msgid "Sound" #~ msgstr "Suono" @@ -5032,9 +5718,6 @@ msgstr "cyan" #~ msgid "Stoping selected file transfer" #~ msgstr "Interruzione del trasferimento file selezionato" -#~ msgid "Use a single chat window with _tabs" -#~ msgstr "Usa una sola finestra di chat con _schede" - #~ msgid "" #~ "If you close this tab and you have history disabled, the message will be " #~ "lost." @@ -5093,9 +5776,6 @@ msgstr "cyan" #~ msgid "(%s/s)" #~ msgstr "(%s/s)" -#~ msgid "Dbus is not supported." -#~ msgstr "Dbus non è supportato." - #~ msgid "Service not available" #~ msgstr "Servizio non disponibile" @@ -5111,9 +5791,6 @@ msgstr "cyan" #~ msgid "with account " #~ msgstr "con l'account " -#~ msgid "No such command: /%s" -#~ msgstr "Comando inesistente: /%s" - #~ msgid "Log" #~ msgstr "Log" @@ -5144,9 +5821,6 @@ msgstr "cyan" #~ msgid "as " #~ msgstr "come " -#~ msgid "Unable to write file in %s" -#~ msgstr "Impossibile scrivere il file in %s" - #~ msgid "" #~ "You can set advanced account options by pressing Advanced button,or later " #~ "by clicking in Accounts menuitem under Edit menu from the main window." @@ -5266,9 +5940,6 @@ msgstr "cyan" #~ msgid "Edit" #~ msgstr "Modifica" -#~ msgid "Account:" -#~ msgstr "Account:" - #~ msgid "Always use compact _view" #~ msgstr "Usare sempre la _vista compatta" @@ -5318,9 +5989,6 @@ msgstr "cyan" #~ msgid "_Join Group Chat" #~ msgstr "_Entrare in chat di gruppo" -#~ msgid "_Nickname:" -#~ msgstr "_Nickname:" - #~ msgid "_Refresh" #~ msgstr "_Aggiorna" diff --git a/po/nb.po b/po/nb.po index db89a0ca1..b433a1024 100644 --- a/po/nb.po +++ b/po/nb.po @@ -2,11 +2,12 @@ # This file is distributed under the same license as the Gajim package. # Stian B. Barmen , 2005. # +#: ../src/gajim-remote.py:218 ../src/gajim-remote.py:225 msgid "" msgstr "" "Project-Id-Version: Gajim 0.9\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2006-04-13 12:52+0200\n" +"POT-Creation-Date: 2006-07-04 00:03+0200\n" "PO-Revision-Date: 2006-04-26 00:29+0100\n" "Last-Translator: Stian B. Barmen \n" "Language-Team: \n" @@ -28,346 +29,2387 @@ msgstr "Gajim Instant Messenger" msgid "Jabber IM Client" msgstr "Jabber IM klient" -#: ../src/advanced.py:71 +#: ../data/glade/account_context_menu.glade.h:1 +msgid "Send Single _Message..." +msgstr "Send Enkel _Melding..." + +#: ../data/glade/account_context_menu.glade.h:2 +msgid "_Add Contact..." +msgstr "_Legg til Kontakt..." + +#: ../data/glade/account_context_menu.glade.h:3 +msgid "_Discover Services..." +msgstr "_Oppdag Tjenester..." + +#: ../data/glade/account_context_menu.glade.h:4 +#: ../data/glade/roster_window.glade.h:15 +#: ../data/glade/systray_context_menu.glade.h:5 +msgid "_Group Chat" +msgstr "_Gruppe Samtale" + +#: ../data/glade/account_context_menu.glade.h:5 +msgid "_Modify Account..." +msgstr "_Rediger Konto..." + +#: ../data/glade/account_context_menu.glade.h:6 +msgid "_Status" +msgstr "_Status" + +#: ../data/glade/account_creation_wizard_window.glade.h:1 +msgid "" +"Account is being created\n" +"\n" +"Please wait..." +msgstr "" +"Konto opprettes\n" +"\n" +"Vennligst vent..." + +#: ../data/glade/account_creation_wizard_window.glade.h:4 +msgid "Please choose one of the options below:" +msgstr "Vennligst velg ett av valgene under:" + +#: ../data/glade/account_creation_wizard_window.glade.h:5 +msgid "Please fill in the data for your new account" +msgstr "Vennligst fyll in data for din nye konto" + +#: ../data/glade/account_creation_wizard_window.glade.h:6 +msgid "Click to see features (like MSN, ICQ transports) of jabber servers" +msgstr "" +"Klikk for Ã¥ se tjenester (som MSN og ICQ transporter) pÃ¥ jabber serveren" + +#: ../data/glade/account_creation_wizard_window.glade.h:7 +msgid "Connect when I press Finish" +msgstr "Koble til nÃ¥r jeg klikker Ferdig" + +#: ../data/glade/account_creation_wizard_window.glade.h:8 +msgid "Gajim: Account Creation Wizard" +msgstr "Gajim: Konto Opprettings Veiviser" + +#: ../data/glade/account_creation_wizard_window.glade.h:9 +msgid "I already have an account I want to use" +msgstr "Jeg har allerede en konto jeg ønsker Ã¥ bruke" + +#: ../data/glade/account_creation_wizard_window.glade.h:10 +msgid "I want to _register for a new account" +msgstr "Jeg ønsker Ã¥ _registrere en ny konto" + +#: ../data/glade/account_creation_wizard_window.glade.h:11 +#: ../data/glade/account_modification_window.glade.h:18 +msgid "If checked, Gajim will remember the password for this account" +msgstr "Dersom valgt vil Gajim huske passordet for kontoen" + +#: ../data/glade/account_creation_wizard_window.glade.h:12 +#: ../data/glade/manage_proxies_window.glade.h:6 +msgid "Pass_word:" +msgstr "Pass_ord:" + +#: ../data/glade/account_creation_wizard_window.glade.h:13 +#: ../data/glade/account_modification_window.glade.h:37 +msgid "Save pass_word" +msgstr "Lagre pass_ord" + +#: ../data/glade/account_creation_wizard_window.glade.h:14 +msgid "Servers Features" +msgstr "Server Funksjonalitet" + +#: ../data/glade/account_creation_wizard_window.glade.h:15 +msgid "Set my profile when I connect" +msgstr "Klargjør profilen min nÃ¥r jeg kobler til" + +#: ../data/glade/account_creation_wizard_window.glade.h:16 +msgid "" +"You need to have an account in order to connect\n" +"to the Jabber network." +msgstr "" +"Du trenger en konto før du kan koble\n" +"til Jabber nettverket." + +#: ../data/glade/account_creation_wizard_window.glade.h:18 +msgid "Your JID:" +msgstr "Din JID:" + +#: ../data/glade/account_creation_wizard_window.glade.h:19 +#: ../data/glade/roster_window.glade.h:10 +msgid "_Advanced" +msgstr "_Avansert" + +#: ../data/glade/account_creation_wizard_window.glade.h:20 +msgid "_Finish" +msgstr "_Avslutt" + +#: ../data/glade/account_creation_wizard_window.glade.h:21 +#: ../data/glade/manage_proxies_window.glade.h:9 +msgid "_Host:" +msgstr "_Maskin:" + +#: ../data/glade/account_creation_wizard_window.glade.h:22 +#: ../data/glade/account_modification_window.glade.h:45 +msgid "_Password:" +msgstr "_Passord:" + +#: ../data/glade/account_creation_wizard_window.glade.h:23 +#: ../data/glade/manage_proxies_window.glade.h:10 +msgid "_Port:" +msgstr "_Port:" + +#: ../data/glade/account_creation_wizard_window.glade.h:24 +msgid "_Retype Password:" +msgstr "_Repeter Passord:" + +#: ../data/glade/account_creation_wizard_window.glade.h:25 +msgid "_Server:" +msgstr "_Server:" + +#: ../data/glade/account_creation_wizard_window.glade.h:26 +msgid "_Use proxy" +msgstr "_Bruk proxy" + +#: ../data/glade/account_creation_wizard_window.glade.h:27 +#: ../data/glade/manage_proxies_window.glade.h:11 +msgid "_Username:" +msgstr "_Brukernavn:" + +#: ../data/glade/account_modification_window.glade.h:1 +#: ../data/glade/preferences_window.glade.h:8 +msgid "Miscellaneous" +msgstr "Diverse" + +#: ../data/glade/account_modification_window.glade.h:2 +msgid "OpenPGP" +msgstr "OpenPGP" + +#: ../data/glade/account_modification_window.glade.h:3 +msgid "Personal Information" +msgstr "Personlig Informasjon" + +#: ../data/glade/account_modification_window.glade.h:4 +msgid "Account" +msgstr "Konto" + +#: ../data/glade/account_modification_window.glade.h:5 +msgid "Account Modification" +msgstr "Konto Endring" + +#: ../data/glade/account_modification_window.glade.h:6 +msgid "Autoreconnect when connection is lost" +msgstr "Koble til pÃ¥ nytt automatisk nÃ¥r kontakten mistes" + +#: ../data/glade/account_modification_window.glade.h:7 +msgid "C_onnect on Gajim startup" +msgstr "K_oble til nÃ¥r Gajim starter" + +#: ../data/glade/account_modification_window.glade.h:8 +msgid "Chan_ge Password" +msgstr "En_dre Passord" + +#: ../data/glade/account_modification_window.glade.h:9 +msgid "" +"Check this so Gajim will connect in port 5223 where legacy servers are " +"expected to have SSL capabilities. Note that Gajim uses TLS encryption by " +"default if broadcasted by the server, and with this option enabled TLS will " +"be disabled" +msgstr "" +"Velg denne slik at Gajim vil prøve Ã¥ koble til port 5223 som gamle servere " +"forventes Ã¥ ha SSL muligheter. Merk at Gajim bruker TLS kryptering som " +"standard dersom dette tilbys av servere, og med dette valget blir TLS " +"deaktivert." + +#: ../data/glade/account_modification_window.glade.h:10 +msgid "Choose _Key..." +msgstr "Velg _Nøkkel..." + +#: ../data/glade/account_modification_window.glade.h:11 +msgid "Click to change account's password" +msgstr "Klikk for Ã¥ forandre kontoens passord" + +#: ../data/glade/account_modification_window.glade.h:12 +msgid "Connection" +msgstr "Tilkobling" + +#: ../data/glade/account_modification_window.glade.h:13 +msgid "Edit Personal Information..." +msgstr "Rediger Personlig Informasjon..." + +#: ../data/glade/account_modification_window.glade.h:14 +#: ../data/glade/roster_window.glade.h:5 ../src/notify.py:308 +#: ../src/notify.py:330 ../src/notify.py:342 ../src/tooltips.py:350 +msgid "Gajim" +msgstr "Gajim" + +#: ../data/glade/account_modification_window.glade.h:15 +#: ../data/glade/preferences_window.glade.h:44 +#: ../data/glade/vcard_information_window.glade.h:17 +#: ../src/roster_window.py:290 ../src/roster_window.py:1184 +#: ../src/roster_window.py:1405 +msgid "General" +msgstr "Generelle" + +#: ../data/glade/account_modification_window.glade.h:16 +msgid "Hostname: " +msgstr "Maskinnavn:" + +#: ../data/glade/account_modification_window.glade.h:17 +#, fuzzy +msgid "" +"If checked, Gajim will also broadcast some more IPs except from just your " +"IP, so file transfer has higher chances of working." +msgstr "" +"Dersom valgt vil Gajim sende ut flere IPer utover din IP sÃ¥ filoverføringen " +"har større mulighet for Ã¥ fungere. " + +#: ../data/glade/account_modification_window.glade.h:19 +msgid "" +"If checked, Gajim will send keep-alive packets so it prevents connection " +"timeout which results in disconnection" +msgstr "" +"Dersom valgt vil Gajim sende hold-i-live pakker sÃ¥ man ikke fÃ¥r en " +"frakobling pÃ¥ grunn av inaktivitet" + +#: ../data/glade/account_modification_window.glade.h:20 +msgid "" +"If checked, Gajim will store the password in ~/.gajim/config with 'read' " +"permission only for you" +msgstr "" +"Dersom valgt vil Gajim lagre passord i ~/.gajim/config med 'les' rettighet " +"bare for deg" + +#: ../data/glade/account_modification_window.glade.h:21 +msgid "" +"If checked, Gajim, when launched, will automatically connect to jabber using " +"this account" +msgstr "" +"Dersom valgt, vil Gajim automatisk koble seg til jabber med denne kontoen " +"ved oppstart" + +#: ../data/glade/account_modification_window.glade.h:22 +msgid "" +"If checked, any change to the global status (handled by the combobox at the " +"bottom of the roster window) will change the status of this account " +"accordingly" +msgstr "" +"Dersom valgt vil endringer til global status (hÃ¥ndtert av kombomenyen " +"nederst i kontaktvinduet) endre status pÃ¥ denne kontoen. " + +#: ../data/glade/account_modification_window.glade.h:23 +msgid "Information about you, as stored in the server" +msgstr "Informasjon om deg, slik som den er lagret pÃ¥ serveren" + +#: ../data/glade/account_modification_window.glade.h:24 +msgid "Manage..." +msgstr "Behandle..." + +#: ../data/glade/account_modification_window.glade.h:25 ../src/config.py:1448 +msgid "No key selected" +msgstr "Ingen nøkkel valgt" + +#. None means no proxy profile selected +#: ../data/glade/account_modification_window.glade.h:27 ../src/config.py:1053 +#: ../src/config.py:1058 ../src/config.py:1230 ../src/config.py:1505 +#: ../src/config.py:1578 ../src/config.py:2282 +msgid "None" +msgstr "Ingen" + +#: ../data/glade/account_modification_window.glade.h:28 +msgid "Personal Information" +msgstr "Personlig Informasjon" + +#: ../data/glade/account_modification_window.glade.h:29 +msgid "Port: " +msgstr "Port:" + +#: ../data/glade/account_modification_window.glade.h:30 +msgid "Priori_ty:" +msgstr "Priorit_et:" + +#: ../data/glade/account_modification_window.glade.h:31 +msgid "" +"Priority is used in Jabber to determine who gets the events from the jabber " +"server when two or more clients are connected using the same account; The " +"client with the highest priority gets the events" +msgstr "" +"Prioritet brukes av Jabber for Ã¥ finne ut hvem som skal fÃ¥ hendelser fra " +"jabber serveren nÃ¥r to eller flere klienter er tilkoblet med samme konto. " +"Klienten med den høyeste prioriteten vil fÃ¥ hendelsen" + +#: ../data/glade/account_modification_window.glade.h:32 +msgid "Proxy:" +msgstr "Proxy:" + +#: ../data/glade/account_modification_window.glade.h:33 +msgid "Resour_ce: " +msgstr "Ressu_rs:" + +#: ../data/glade/account_modification_window.glade.h:34 +msgid "" +"Resource is sent to the Jabber server in order to separate the same JID in " +"two or more parts depending on the number of the clients connected in the " +"same server with the same account. So you might be connected in the same " +"account with resource 'Home' and 'Work' at the same time. The resource which " +"has the highest priority will get the events. (see below)" +msgstr "" +"Ressurs navnet blir sendt til Jabber serveren for Ã¥ separere JID'en din i to " +"eller flere deler alt etter hvor mange ganger du er tilkoblet til serveren " +"(samtidig). Dette gjør at du kan være tilkoblet med samme konto med ressurs " +"navn 'Hjeme' og 'Jobb' pÃ¥ samme tid. Ressursen med høyest prioritet vil fÃ¥ " +"hendelsene. (se under)" + +#: ../data/glade/account_modification_window.glade.h:35 +msgid "Save _passphrase (insecure)" +msgstr "Lagre _passord setning (usikkert)" + +#: ../data/glade/account_modification_window.glade.h:36 +msgid "Save conversation _logs for all contacts" +msgstr "Lagre samtale _logger for alle kontakter" + +#: ../data/glade/account_modification_window.glade.h:38 +msgid "Send keep-alive packets" +msgstr "Send hold-i-live meldinger" + +#: ../data/glade/account_modification_window.glade.h:39 +msgid "Synch_ronize account status with global status" +msgstr "Synk_roniser konto status med global status" + +#: ../data/glade/account_modification_window.glade.h:40 +msgid "Use _SSL (legacy)" +msgstr "Bruk _SSL (gammel)" + +#: ../data/glade/account_modification_window.glade.h:41 +msgid "Use custom hostname/port" +msgstr "Bruk egendefinert maskinnavn/port" + +#: ../data/glade/account_modification_window.glade.h:42 +msgid "Use file transfer proxies" +msgstr "Bruk filoverførings proxier" + +#: ../data/glade/account_modification_window.glade.h:43 +#: ../data/glade/add_new_contact_window.glade.h:6 +msgid "_Jabber ID:" +msgstr "_Jabber ID:" + +#: ../data/glade/account_modification_window.glade.h:44 +msgid "_Name: " +msgstr "_Navn:" + +#: ../data/glade/accounts_window.glade.h:1 +msgid "Accounts" +msgstr "Kontoer" + +#: ../data/glade/accounts_window.glade.h:2 +msgid "" +"If you have 2 or more accounts and it is checked, Gajim will list all " +"contacts as if you had one account" +msgstr "" +"Dersom du har 2 eller flere kontoer og denne er valgt, vil Gajim liste alle " +"kontakter som om du hadde en konto" + +#: ../data/glade/accounts_window.glade.h:3 +msgid "_Merge accounts" +msgstr "_SlÃ¥ sammen kontoer" + +#: ../data/glade/accounts_window.glade.h:4 +msgid "_Modify" +msgstr "_Endre" + +#: ../data/glade/accounts_window.glade.h:5 +#: ../data/glade/remove_account_window.glade.h:4 +msgid "_Remove" +msgstr "_Fjern" + +#: ../data/glade/add_new_contact_window.glade.h:1 +#, fuzzy +msgid "A_llow this contact to view my status" +msgstr "Tillat han/henne Ã¥ se min status" + +#: ../data/glade/add_new_contact_window.glade.h:2 +msgid "Add New Contact" +msgstr "Legg til ny Kontakt" + +#: ../data/glade/add_new_contact_window.glade.h:3 +msgid "I would like to add you to my contact list." +msgstr "Jeg vil legge deg til min kontaktliste." + +#: ../data/glade/add_new_contact_window.glade.h:4 +#, fuzzy +msgid "_Account:" +msgstr "Konto" + +#: ../data/glade/add_new_contact_window.glade.h:5 +#, fuzzy +msgid "_Group:" +msgstr "Gruppe:" + +#: ../data/glade/add_new_contact_window.glade.h:7 +#, fuzzy +msgid "_Nickname:" +msgstr "Kallenavn:" + +#: ../data/glade/add_new_contact_window.glade.h:8 +#, fuzzy +msgid "_Protocol:" +msgstr "Protokoll:" + +#: ../data/glade/add_new_contact_window.glade.h:9 +msgid "_Subscribe" +msgstr "_Abbonér" + +#: ../data/glade/add_new_contact_window.glade.h:10 +#, fuzzy +msgid "_User ID:" +msgstr "Bruker ID:" + +#: ../data/glade/advanced_configuration_window.glade.h:1 +msgid "Description" +msgstr "Beskrivelse" + +#: ../data/glade/advanced_configuration_window.glade.h:2 +msgid "NOTE: You should restart gajim for some setting to take effect" +msgstr "" +"MERK: Du mÃ¥ starte gajim pÃ¥ nytt for Ã¥ aktivere noen instillinger" + +#: ../data/glade/advanced_configuration_window.glade.h:3 +msgid "Advanced Configuration Editor" +msgstr "Avansert Konfigurasjons Editor" + +#: ../data/glade/advanced_configuration_window.glade.h:4 +msgid "Filter:" +msgstr "Filter:" + +#: ../data/glade/advanced_menuitem_menu.glade.h:1 +msgid "Delete MOTD" +msgstr "Slett MFD (MOTD)" + +#: ../data/glade/advanced_menuitem_menu.glade.h:2 +msgid "Deletes Message of the Day" +msgstr "Sletter Meling for Dagen" + +#: ../data/glade/advanced_menuitem_menu.glade.h:3 +msgid "Sends a message to currently connected users to this server" +msgstr "Sender en melding til tilkoblede brukere pÃ¥ denne serveren" + +#: ../data/glade/advanced_menuitem_menu.glade.h:4 +msgid "Set MOTD" +msgstr "Velg MFD (MOTD)" + +#: ../data/glade/advanced_menuitem_menu.glade.h:5 +msgid "Sets Message of the Day" +msgstr "Setter Melding for Dagen" + +#: ../data/glade/advanced_menuitem_menu.glade.h:6 +msgid "Show _XML Console" +msgstr "Vis _XML Konsoll" + +#: ../data/glade/advanced_menuitem_menu.glade.h:7 +msgid "Update MOTD" +msgstr "Oppdater MFD (MOTD)" + +#: ../data/glade/advanced_menuitem_menu.glade.h:8 +msgid "Updates Message of the Day" +msgstr "Uppdaterer Melding for Dagen" + +#: ../data/glade/advanced_menuitem_menu.glade.h:9 +msgid "_Administrator" +msgstr "_Administrator" + +#: ../data/glade/advanced_menuitem_menu.glade.h:10 +msgid "_Privacy Lists" +msgstr "" + +#: ../data/glade/advanced_menuitem_menu.glade.h:11 +msgid "_Send Server Message" +msgstr "_Send Server Melding" + +#: ../data/glade/advanced_menuitem_menu.glade.h:12 +msgid "_Send Single Message" +msgstr "_Send Melding" + +#: ../data/glade/advanced_notifications_window.glade.h:1 +msgid " a window/tab opened with that contact " +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:2 +#, fuzzy +msgid "Actions" +msgstr "Applikasjoner" + +#: ../data/glade/advanced_notifications_window.glade.h:3 +#, fuzzy +msgid "Conditions" +msgstr "Lyder" + +#: ../data/glade/advanced_notifications_window.glade.h:4 +#: ../data/glade/preferences_window.glade.h:10 +msgid "Sounds" +msgstr "Lyder" + +#: ../data/glade/advanced_notifications_window.glade.h:5 +#, fuzzy +msgid "Add" +msgstr "Adresse" + +#: ../data/glade/advanced_notifications_window.glade.h:6 +#, fuzzy +msgid "Advanced Actions" +msgstr "Av_anserte Handlinger" + +#: ../data/glade/advanced_notifications_window.glade.h:7 +#, fuzzy +msgid "Advanced Notifications Control" +msgstr "Avansert Konfigurasjons Editor" + +#: ../data/glade/advanced_notifications_window.glade.h:8 +#, fuzzy +msgid "All Status " +msgstr "Status: " + +#: ../data/glade/advanced_notifications_window.glade.h:9 +msgid "And I " +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:10 +#, fuzzy +msgid "Away " +msgstr "Borte" + +#: ../data/glade/advanced_notifications_window.glade.h:11 +#, fuzzy +msgid "Busy " +msgstr "Opptatt" + +#: ../data/glade/advanced_notifications_window.glade.h:12 +msgid "Don't have " +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:13 +#, fuzzy +msgid "Down" +msgstr "Last ned" + +#: ../data/glade/advanced_notifications_window.glade.h:14 +msgid "Have " +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:15 +#: ../src/common/helpers.py:239 +msgid "Invisible" +msgstr "Usynlig" + +#: ../data/glade/advanced_notifications_window.glade.h:16 +#, fuzzy +msgid "Launch a command" +msgstr "kommando" + +#: ../data/glade/advanced_notifications_window.glade.h:17 +#, fuzzy +msgid "List of special notifications settings" +msgstr "Legg til Spesiell Alarm for %s" + +#: ../data/glade/advanced_notifications_window.glade.h:18 +#, fuzzy +msgid "Not Available " +msgstr "Ikke tilgjengelig" + +#: ../data/glade/advanced_notifications_window.glade.h:19 +#, fuzzy +msgid "Online / Free For Chat" +msgstr "Ledig for Prat" + +#: ../data/glade/advanced_notifications_window.glade.h:20 +#, fuzzy +msgid "Play a sound" +msgstr "Spill av _lyder" + +#: ../data/glade/advanced_notifications_window.glade.h:21 +msgid "" +"Receive a Message\n" +"Contact Connected\n" +"Contact Disconnected\n" +"Contact Change Status\n" +"Group Chat Message Highlight\n" +"Group Chat Message Received\n" +"File Transfert Resquest\n" +"File Transfert Started\n" +"File Transfert Finished" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:30 +msgid "Some special(s) status..." +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:31 +msgid "Up" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:32 +msgid "When " +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:33 +msgid "_Activate Windows manager UrgencyHint to make chat taskbar to flash" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:34 +#, fuzzy +msgid "_Disable auto opening chat window" +msgstr "Gjemmer knappene i gruppe samtale vindu" + +#: ../data/glade/advanced_notifications_window.glade.h:35 +msgid "_Disable existing popup window" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:36 +msgid "_Disable existing sound for this event" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:37 +msgid "_Disable showing event in roster" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:38 +msgid "_Disable showing event in systray" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:39 +msgid "_Inform me with a popup window" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:40 +#, fuzzy +msgid "_Open chat window with user" +msgstr "Bruk et enkelt samtalevindu med _faner" + +#: ../data/glade/advanced_notifications_window.glade.h:41 +#, fuzzy +msgid "_Show event in roster" +msgstr "Vis bare i _kontaktliste" + +#: ../data/glade/advanced_notifications_window.glade.h:42 +#, fuzzy +msgid "_Show event in systray" +msgstr "Vis bare i _kontaktliste" + +#: ../data/glade/advanced_notifications_window.glade.h:43 +msgid "" +"contact(s)\n" +"group(s)\n" +"everybody" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:46 +#, fuzzy +msgid "for " +msgstr "Port:" + +#: ../data/glade/advanced_notifications_window.glade.h:47 +msgid "when I'm " +msgstr "" + +#: ../data/glade/change_password_dialog.glade.h:1 +msgid "Change Password" +msgstr "Endre Passord" + +#: ../data/glade/change_password_dialog.glade.h:2 +msgid "Enter it again for confirmation:" +msgstr "Skriv inn en gang til for verifisering:" + +#: ../data/glade/change_password_dialog.glade.h:3 +msgid "Enter new password:" +msgstr "Skriv inn nytt passord:" + +#: ../data/glade/change_status_message_dialog.glade.h:1 +msgid "Type your new status message" +msgstr "Skriv inn din nye status melding:" + +#: ../data/glade/change_status_message_dialog.glade.h:2 +msgid "Preset messages:" +msgstr "Forvalgte meldinger:" + +#: ../data/glade/change_status_message_dialog.glade.h:3 +msgid "Save as Preset..." +msgstr "Lagre som Forvalg..." + +#: ../data/glade/chat_context_menu.glade.h:1 +msgid "Join _Group Chat" +msgstr "Bli med i _Gruppe Samtale" + +#: ../data/glade/chat_context_menu.glade.h:2 +#: ../data/glade/chat_control_popup_menu.glade.h:4 +#: ../data/glade/gc_occupants_menu.glade.h:2 +#: ../data/glade/roster_contact_context_menu.glade.h:8 +msgid "_Add to Roster" +msgstr "_Legg til Kontaktliste" + +#: ../data/glade/chat_context_menu.glade.h:3 +msgid "_Copy JID/Email Address" +msgstr "_Kopier JID/E-post Adresse" + +#: ../data/glade/chat_context_menu.glade.h:4 +msgid "_Copy Link Location" +msgstr "_Kopier Link PLassering" + +#: ../data/glade/chat_context_menu.glade.h:5 +msgid "_Open Email Composer" +msgstr "_Ã…pne ny Epost" + +#: ../data/glade/chat_context_menu.glade.h:6 +msgid "_Open Link in Browser" +msgstr "_Ã…pne Link i Nettleser" + +#: ../data/glade/chat_context_menu.glade.h:7 +#: ../data/glade/roster_window.glade.h:19 +#: ../data/glade/systray_context_menu.glade.h:6 +msgid "_Start Chat" +msgstr "_Start Samtale" + +#: ../data/glade/chat_control_popup_menu.glade.h:1 +msgid "Click to see past conversations with this contact" +msgstr "Klikk for Ã¥ se tidligere samtaler med denne kontakten" + +#: ../data/glade/chat_control_popup_menu.glade.h:2 +#: ../data/glade/roster_contact_context_menu.glade.h:6 +msgid "Send _File" +msgstr "Send _Fil" + +#: ../data/glade/chat_control_popup_menu.glade.h:3 +msgid "Toggle Open_PGP Encryption" +msgstr "Endre Open_PGP Kryptering" + +#: ../data/glade/chat_control_popup_menu.glade.h:5 +#: ../data/glade/gc_control_popup_menu.glade.h:6 +msgid "_Compact View Alt+C" +msgstr "_Kompakt Utseende Alt+C" + +#: ../data/glade/chat_control_popup_menu.glade.h:6 +#: ../data/glade/gc_control_popup_menu.glade.h:7 +#: ../data/glade/gc_occupants_menu.glade.h:5 +#: ../data/glade/roster_contact_context_menu.glade.h:11 +msgid "_History" +msgstr "_Historie" + +#: ../data/glade/data_form_window.glade.h:1 +msgid "Room Configuration" +msgstr "Rom Instillinger" + +#: ../data/glade/edit_groups_dialog.glade.h:1 +msgid "Edit Groups" +msgstr "Rediger Grupper" + +#: ../data/glade/filetransfers.glade.h:1 +msgid "A list of active, completed and stopped file transfers" +msgstr "En liste over aktive, komplette og stoppede fil overføringer" + +#: ../data/glade/filetransfers.glade.h:2 +msgid "Cancel file transfer" +msgstr "Avbryt filoverføring" + +#: ../data/glade/filetransfers.glade.h:3 +msgid "Cancels the selected file transfer" +msgstr "Avbryter valgte filoverføring" + +#: ../data/glade/filetransfers.glade.h:4 +msgid "Cancels the selected file transfer and removes incomplete file" +msgstr "Avbryter valgte filoverføring og fjerner den uferdige filen" + +#: ../data/glade/filetransfers.glade.h:5 +msgid "Clean _up" +msgstr "Rydd _opp" + +#: ../data/glade/filetransfers.glade.h:6 +msgid "File Transfers" +msgstr "Fil Overføringer" + +#: ../data/glade/filetransfers.glade.h:7 +msgid "Hides the window" +msgstr "Lukker vinduet" + +#: ../data/glade/filetransfers.glade.h:8 +msgid "Remove file transfer from the list." +msgstr "Fjern filoverføringen fra listen" + +#: ../data/glade/filetransfers.glade.h:9 +msgid "Removes completed, canceled and failed file transfers from the list" +msgstr "Fjerner komplette, avbrutte og feilede filoverføringer fra listen" + +#: ../data/glade/filetransfers.glade.h:10 +msgid "Shows a list of file transfers between you and other" +msgstr "Viser en liste over overføringer mellom deg og andre" + +#: ../data/glade/filetransfers.glade.h:11 +msgid "" +"This action removes single file transfer from the list. If the transfer is " +"active, it is first stopped and then removed" +msgstr "" +"Dette valget fjerner en filoverføring fra listen. Dersom den er aktiv vil " +"den først bli stoppet og sÃ¥ fjernet." + +#: ../data/glade/filetransfers.glade.h:12 +msgid "When a file transfer is complete show a popup notification" +msgstr "NÃ¥r en fil overføring er komplett vis en sprettopp informasjon" + +#: ../data/glade/filetransfers.glade.h:13 ../src/filetransfers_window.py:753 +msgid "_Continue" +msgstr "_Fortsett" + +#: ../data/glade/filetransfers.glade.h:14 +msgid "_Notify me when a file transfer is complete" +msgstr "_Gi meg beskjed nÃ¥r filoverføring er komplett" + +#: ../data/glade/filetransfers.glade.h:15 ../src/filetransfers_window.py:190 +msgid "_Open Containing Folder" +msgstr "_Ã…pne Foreldre Katalog" + +#: ../data/glade/filetransfers.glade.h:16 +msgid "_Pause" +msgstr "_Pause" + +#: ../data/glade/filetransfers.glade.h:17 +msgid "file transfers list" +msgstr "fil overførings liste" + +#: ../data/glade/gajim_themes_window.glade.h:1 +msgid "Chatstate Tab Colors" +msgstr "Samtalestatus Fane Farger" + +#: ../data/glade/gajim_themes_window.glade.h:2 +msgid "" +"Account\n" +"Group\n" +"Contact\n" +"Banner" +msgstr "" +"Konto\n" +"Gruppe\n" +"Kontakt\n" +"Fane" + +#: ../data/glade/gajim_themes_window.glade.h:6 +#: ../data/glade/privacy_list_edit_window.glade.h:4 ../src/config.py:326 +msgid "Active" +msgstr "Aktiv" + +#: ../data/glade/gajim_themes_window.glade.h:7 +msgid "Bold" +msgstr "Fet" + +#: ../data/glade/gajim_themes_window.glade.h:8 +msgid "Composing" +msgstr "Skriver" + +#: ../data/glade/gajim_themes_window.glade.h:9 +msgid "Font style:" +msgstr "Font stil:" + +#: ../data/glade/gajim_themes_window.glade.h:10 +msgid "Gajim Themes Customization" +msgstr "Gajim Tema Valg" + +#: ../data/glade/gajim_themes_window.glade.h:11 +msgid "Gone" +msgstr "Borte" + +#: ../data/glade/gajim_themes_window.glade.h:12 +msgid "Inactive" +msgstr "Inaktiv" + +#: ../data/glade/gajim_themes_window.glade.h:13 +msgid "Italic" +msgstr "Kursiv" + +#: ../data/glade/gajim_themes_window.glade.h:14 +msgid "" +"MUC\n" +"Messages" +msgstr "" +"MUC\n" +"Meldinger" + +#: ../data/glade/gajim_themes_window.glade.h:16 +msgid "" +"MUC Directed\n" +"Messages" +msgstr "" +"MUC Sendte\n" +"Meldinger" + +#: ../data/glade/gajim_themes_window.glade.h:18 ../src/tooltips.py:667 +msgid "Paused" +msgstr "Pauset" + +#: ../data/glade/gajim_themes_window.glade.h:19 +msgid "Text _color:" +msgstr "Tekst _farge:" + +#: ../data/glade/gajim_themes_window.glade.h:20 +msgid "Text _font:" +msgstr "Tekst _font:" + +#: ../data/glade/gajim_themes_window.glade.h:21 +msgid "_Background:" +msgstr "_Bakgrunn:" + +#: ../data/glade/gc_control_popup_menu.glade.h:1 +msgid "Change _Nickname" +msgstr "Endre _Kallenavn" + +#: ../data/glade/gc_control_popup_menu.glade.h:2 +msgid "Change _Subject" +msgstr "Endre _Tema" + +#: ../data/glade/gc_control_popup_menu.glade.h:3 +msgid "Click to see past conversation in this room" +msgstr "Klikk for Ã¥ se tidligere samtaler i dette rommet" + +#: ../data/glade/gc_control_popup_menu.glade.h:4 +msgid "Configure _Room" +msgstr "Konfigurer _Rom" + +#: ../data/glade/gc_control_popup_menu.glade.h:5 +msgid "_Bookmark This Room" +msgstr "Lag _Bokmerke til Rommet" + +#: ../data/glade/gc_occupants_menu.glade.h:1 +msgid "Mo_derator" +msgstr "M_odererer" + +#: ../data/glade/gc_occupants_menu.glade.h:3 +msgid "_Admin" +msgstr "_Admin" + +#: ../data/glade/gc_occupants_menu.glade.h:4 +msgid "_Ban" +msgstr "_Utvis" + +#: ../data/glade/gc_occupants_menu.glade.h:6 +msgid "_Kick" +msgstr "_Kast ut" + +#: ../data/glade/gc_occupants_menu.glade.h:7 +msgid "_Member" +msgstr "_Medlem" + +#: ../data/glade/gc_occupants_menu.glade.h:8 +msgid "_Occupant Actions" +msgstr "_Beboer Handling" + +#: ../data/glade/gc_occupants_menu.glade.h:9 +msgid "_Owner" +msgstr "_Eier" + +#: ../data/glade/gc_occupants_menu.glade.h:10 +msgid "_Send Private Message" +msgstr "_Send Privat Melding" + +#: ../data/glade/gc_occupants_menu.glade.h:11 +msgid "_Voice" +msgstr "_Stemme" + +#: ../data/glade/history_manager.glade.h:1 +msgid "" +"Welcome to Gajim History Logs Manager\n" +"\n" +"You can select logs from the left and/or search database from below.\n" +"\n" +"WARNING:\n" +"If you plan to do massive deletions, please make sure Gajim is not running. " +"Generally avoid deletions with contacts you currently chat with." +msgstr "" +"Velkommen til Gajim Historiske Logg Behandler\n" +"\n" +"Du kan velge logger fra venstre og/eller søke databasen under.\n" +"\n" +"ADVARSEL:\n" +"Dersom du planlegger Ã¥ gjøre store slette operasjoner, pass pÃ¥ at Gajim ikke " +"kjører. Generelt bør man unngÃ¥ Ã¥ slette fra kontakter du er i samtale med." + +#: ../data/glade/history_manager.glade.h:7 +msgid "Delete" +msgstr "Slett" + +#: ../data/glade/history_manager.glade.h:8 +msgid "Export" +msgstr "Eksport" + +#: ../data/glade/history_manager.glade.h:9 +msgid "Gajim History Logs Manager" +msgstr "Gajim Historske Logg Behandler" + +#: ../data/glade/history_manager.glade.h:10 +msgid "_Search Database" +msgstr "_Søk Databasen" + +#: ../data/glade/history_window.glade.h:1 +msgid "Build custom query" +msgstr "Lag din egen spørring" + +#: ../data/glade/history_window.glade.h:2 +msgid "Conversation History" +msgstr "Samtale Historikk" + +#: ../data/glade/history_window.glade.h:3 +msgid "Query Builder..." +msgstr "Spørrings Bygger..." + +#: ../data/glade/history_window.glade.h:4 +msgid "Search" +msgstr "Søk" + +#: ../data/glade/history_window.glade.h:5 +msgid "_Search" +msgstr "_Søk" + +#: ../data/glade/invitation_received_dialog.glade.h:1 +msgid "Accept" +msgstr "Godkjenn" + +#: ../data/glade/invitation_received_dialog.glade.h:2 +#: ../data/glade/privacy_list_edit_window.glade.h:8 +msgid "Deny" +msgstr "Nekt" + +#: ../data/glade/invitation_received_dialog.glade.h:3 +msgid "Invitation Received" +msgstr "Invitasjon motatt" + +#: ../data/glade/join_groupchat_window.glade.h:1 ../src/dialogs.py:941 +msgid "Join Group Chat" +msgstr "Bli med i Gruppesamtale" + +#: ../data/glade/join_groupchat_window.glade.h:2 +#: ../data/glade/manage_bookmarks_window.glade.h:4 +#: ../data/glade/vcard_information_window.glade.h:28 +msgid "Nickname:" +msgstr "Kallenavn:" + +#: ../data/glade/join_groupchat_window.glade.h:3 +#: ../data/glade/manage_bookmarks_window.glade.h:5 +msgid "Password:" +msgstr "Passord:" + +#: ../data/glade/join_groupchat_window.glade.h:4 +msgid "Recently:" +msgstr "Nylig:" + +#: ../data/glade/join_groupchat_window.glade.h:5 +#: ../data/glade/manage_bookmarks_window.glade.h:7 +msgid "Room:" +msgstr "Rom:" + +#: ../data/glade/join_groupchat_window.glade.h:6 +#: ../data/glade/manage_bookmarks_window.glade.h:8 +msgid "Server:" +msgstr "Server:" + +#: ../data/glade/join_groupchat_window.glade.h:7 ../src/disco.py:1145 +#: ../src/disco.py:1507 +msgid "_Join" +msgstr "_Bli med" + +#: ../data/glade/manage_accounts_window.glade.h:1 +msgid "Manage Accounts" +msgstr "Behandle Kontoer" + +#: ../data/glade/manage_bookmarks_window.glade.h:1 +msgid "Auto join" +msgstr "Auto bli med" + +#: ../data/glade/manage_bookmarks_window.glade.h:2 +msgid "If checked, Gajim will join this group chat on startup" +msgstr "Dersom valgt vil Gajim automatisk gÃ¥ inn i gruppesamtalen ved oppstart" + +#: ../data/glade/manage_bookmarks_window.glade.h:3 +msgid "Manage Bookmarks" +msgstr "Behandle Bokmerker" + +#: ../data/glade/manage_bookmarks_window.glade.h:6 +#, fuzzy +msgid "Print status:" +msgstr "Utskrifts tid:" + +#: ../data/glade/manage_bookmarks_window.glade.h:9 +msgid "Title:" +msgstr "Tittel:" + +#: ../data/glade/manage_proxies_window.glade.h:1 +msgid "Properties" +msgstr "Egenskaper" + +#: ../data/glade/manage_proxies_window.glade.h:2 +msgid "Settings" +msgstr "Instillinger" + +#: ../data/glade/manage_proxies_window.glade.h:3 +msgid "HTTP Connect" +msgstr "HTTP Connect" + +#: ../data/glade/manage_proxies_window.glade.h:4 +msgid "Manage Proxy Profiles" +msgstr "Behandle Proxy Profiler" + +#: ../data/glade/manage_proxies_window.glade.h:5 +#: ../data/glade/vcard_information_window.glade.h:27 +msgid "Name:" +msgstr "Navn:" + +#: ../data/glade/manage_proxies_window.glade.h:7 +msgid "Type:" +msgstr "Skriv:" + +#: ../data/glade/manage_proxies_window.glade.h:8 +msgid "Use authentication" +msgstr "Bruk autentisering" + +#: ../data/glade/message_window.glade.h:1 +msgid "Click to insert an emoticon (Alt+M)" +msgstr "Klikk for Ã¥ sette inn et uttrykksikon (Alt+M)" + +#: ../data/glade/message_window.glade.h:2 ../src/chat_control.py:966 +msgid "OpenPGP Encryption" +msgstr "OpenPGP Kryptering" + +#. Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector) +#: ../data/glade/message_window.glade.h:4 +#: ../data/glade/roster_window.glade.h:9 +msgid "_Actions" +msgstr "_Handlinger" + +#. Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector) +#: ../data/glade/message_window.glade.h:6 +#: ../data/glade/xml_console_window.glade.h:11 +#: ../src/filetransfers_window.py:249 +msgid "_Send" +msgstr "_Send" + +#: ../data/glade/passphrase_dialog.glade.h:1 +msgid "Passphrase" +msgstr "Passord setning" + +#: ../data/glade/preferences_window.glade.h:1 +msgid "Advanced Configuration Editor" +msgstr "Editering av Avanserte Instillinger" + +#: ../data/glade/preferences_window.glade.h:2 +msgid "Applications" +msgstr "Applikasjoner" + +#. a header for custom browser/client/file manager. so translate sth like: Custom Settings +#: ../data/glade/preferences_window.glade.h:4 +msgid "Custom" +msgstr "Egendefinert" + +#: ../data/glade/preferences_window.glade.h:5 +msgid "Format of a line" +msgstr "Utseende pÃ¥ en linje" + +#: ../data/glade/preferences_window.glade.h:6 +#, fuzzy +msgid "GMail Options" +msgstr "Applikasjoner" + +#: ../data/glade/preferences_window.glade.h:7 +msgid "Interface Customization" +msgstr "Grensenitt valg" + +#: ../data/glade/preferences_window.glade.h:9 +msgid "Preset Status Messages" +msgstr "Forvalgt Status Melding" + +#: ../data/glade/preferences_window.glade.h:11 +msgid "Visual Notifications" +msgstr "Visuelle Alarmer" + +#: ../data/glade/preferences_window.glade.h:12 +msgid "A_fter nickname:" +msgstr "E_tter kallenavn:" + +#: ../data/glade/preferences_window.glade.h:13 +msgid "Advanced" +msgstr "Avansert" + +#: ../data/glade/preferences_window.glade.h:14 +msgid "" +"All chat states\n" +"Composing only\n" +"Disabled" +msgstr "" +"Alle samtale statuser \n" +"Bare komponering \n" +"Deaktivert" + +#: ../data/glade/preferences_window.glade.h:17 +msgid "Allow _OS information to be sent" +msgstr "Tillat _OS informasjon Ã¥ bli sendt" + +#: ../data/glade/preferences_window.glade.h:18 +msgid "Allow popup/notifications when I'm _away/na/busy/invisible" +msgstr "" +"Tillat sprettopp/melding nÃ¥r jeg er _borte/ikke tilgjengelig/opptatt/usynlig" + +#: ../data/glade/preferences_window.glade.h:19 +msgid "Also known as iChat style" +msgstr "OgsÃ¥ kjent som iChat stil" + +#: ../data/glade/preferences_window.glade.h:20 +msgid "Ask status message when I:" +msgstr "Spør etter status melding nÃ¥r jeg:" + +#: ../data/glade/preferences_window.glade.h:21 +msgid "Auto _away after:" +msgstr "Auto _borte etter:" + +#: ../data/glade/preferences_window.glade.h:22 +msgid "Auto _not available after:" +msgstr "Auto _ikke tilgjengelig etter:" + +#: ../data/glade/preferences_window.glade.h:23 +msgid "" +"Autodetect on every Gajim startup\n" +"Always use GNOME default applications\n" +"Always use KDE default applications\n" +"Custom" +msgstr "" +"Autodetekter hver gang Gajim starter\n" +"Alltid bruk GNOME standard applikasjoner\n" +"Alltid bruk KDE standard applikasjoner\n" +"Egendefinert" + +#: ../data/glade/preferences_window.glade.h:27 +msgid "B_efore nickname:" +msgstr "F_ør kallenavn:" + +#: ../data/glade/preferences_window.glade.h:28 ../src/chat_control.py:718 +msgid "Chat" +msgstr "Samtale" + +#: ../data/glade/preferences_window.glade.h:29 +msgid "Chat state noti_fications:" +msgstr "Samtale status opp_lysninger:" + +#: ../data/glade/preferences_window.glade.h:30 +msgid "" +"Check this option, only if someone you don't have in the roster spams/annoys " +"you. Use with caution, cause it blocks all messages from any contact that is " +"not in the roster" +msgstr "" +"Velg dette valget bare dersom noen i kontaktlisten spammer/irriterer deg. " +"Bruk med varsomhet, fordi det blokkerer alle meldinger fra lle kontakter som " +"ikke er i kontaktlisten" + +#: ../data/glade/preferences_window.glade.h:31 +msgid "Default status _iconset:" +msgstr "Standard status _ikonsamling:" + +#: ../data/glade/preferences_window.glade.h:32 +msgid "Display _extra email details" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:33 +msgid "Display a_vatars of contacts in roster" +msgstr "Viser _kontaktikoner for kontakter i kontaktlisten" + +#: ../data/glade/preferences_window.glade.h:34 +msgid "Display status _messages of contacts in roster" +msgstr "Viser status _meldinger for kontakter i kontaktlisten" + +#: ../data/glade/preferences_window.glade.h:35 +msgid "E_very 5 minutes" +msgstr "H_vert 5 minutt" + +#: ../data/glade/preferences_window.glade.h:36 +msgid "Emoticons:" +msgstr "Uttrykksikoner:" + +#: ../data/glade/preferences_window.glade.h:37 +msgid "Events" +msgstr "Hendelser" + +#: ../data/glade/preferences_window.glade.h:38 +msgid "" +"Gajim can send and receive meta-information related to a conversation you " +"may have with a contact. Here you can specify which chatstates you want to " +"send to the other party." +msgstr "" +"Gajim kan sende og motta meta-informasjon relatert til en samtale du kan ha " +"med en kontakt. Her kan du spesifisere hvilke samtalestatuser du ønsker Ã¥ " +"sende motparten." + +#: ../data/glade/preferences_window.glade.h:39 +msgid "" +"Gajim will automatically show new events by poping up the relative window" +msgstr "" +"Gajim vil autmatisk vise deg den nye hendelser ved Ã¥ sprette opp det " +"relative vinduet" + +#: ../data/glade/preferences_window.glade.h:40 +msgid "" +"Gajim will notify you for new events via a popup in the bottom right of the " +"screen" +msgstr "" +"Gajim vil alarmere deg med sprett-opp vindu i bunnen til høyre pÃ¥ skjermen" + +#: ../data/glade/preferences_window.glade.h:41 +msgid "" +"Gajim will notify you via a popup window in the bottom right of the screen " +"about contacts that just signed in" +msgstr "" +"Gajim vil alarmere deg med sprett-opp vindu i bunnen til høyre pÃ¥ skjermen " +"om at en kontakt har akkurat logget inn" + +#: ../data/glade/preferences_window.glade.h:42 +msgid "" +"Gajim will notify you via a popup window in the bottom right of the screen " +"about contacts that just signed out" +msgstr "" +"Gajim vil alarmere deg med sprett-opp vindu i bunnen til høyre pÃ¥ skjermen " +"om at en kontakt har akkurat logget ut" + +#: ../data/glade/preferences_window.glade.h:43 +msgid "" +"Gajim will only change the icon of the contact that triggered the new event" +msgstr "" +"Gajim vil bare endre ikonet til kontakten som har sendt den nye hendelsen" + +#: ../data/glade/preferences_window.glade.h:45 +msgid "" +"If checked, Gajim will display avatars of contacts in roster window and in " +"group chats" +msgstr "" +"Dersom valgt vil Gajim vise ikonbilder for kontakter i kontaktliste vinduet " +"og i gruppesamtaler" + +#: ../data/glade/preferences_window.glade.h:46 +msgid "" +"If checked, Gajim will display status messages of contacts under the contact " +"name in roster window and in group chats" +msgstr "" +"Dersom valg vil Gajim vise status melding til kontakter under kontakt navnet " +"i kontaktliste vinduet og i gruppesamtaler" + +#: ../data/glade/preferences_window.glade.h:47 +msgid "" +"If checked, Gajim will remember the roster and chat window positions in the " +"screen and the sizes of them next time you run it" +msgstr "" +"Dersom valgt vil Gajim huske kontaktliste og samtalevindu posisjoner pÃ¥ " +"skjermen, samt størrelsen pÃ¥ de til neste gang du Ã¥pner de" + +#: ../data/glade/preferences_window.glade.h:48 +msgid "" +"If checked, Gajim will use protocol-specific status icons. (eg. A contact " +"from MSN will have the equivalent msn icon for status online, away, busy, " +"etc...)" +msgstr "" +"Dersom valgt vil Gajim bruke protkoll-spesifikke ikoner. (En kontakt fra MSN " +"vil ha msn ikoner for status pÃ¥logget, borte, opptatt, osv...)" + +#: ../data/glade/preferences_window.glade.h:49 +msgid "" +"If not disabled, Gajim will replace ascii smilies like ':)' with equivalent " +"animated or static graphical emoticons" +msgstr "" +"Dersom ikke deaktiver, vil Gajim bytte ut ascii smil som ':)' med animerte " +"eller statiske grafiske uttrykksikoner" + +#: ../data/glade/preferences_window.glade.h:50 +msgid "Ma_nage..." +msgstr "Be_handle..." + +#: ../data/glade/preferences_window.glade.h:51 +msgid "" +"Never\n" +"Always\n" +"Per account\n" +"Per type" +msgstr "" +"Aldri\n" +"Alltid\n" +"Per konto\n" +"Per type" + +#: ../data/glade/preferences_window.glade.h:55 +msgid "Notify me about contacts that: " +msgstr "Alarmer meg om kontakter som:" + +#: ../data/glade/preferences_window.glade.h:56 +#, fuzzy +msgid "Notify on new _GMail email" +msgstr "Alarmer meg on nye _Gmail e-post" + +#: ../data/glade/preferences_window.glade.h:57 +msgid "On every _message" +msgstr "PÃ¥ hver _melding" + +#: ../data/glade/preferences_window.glade.h:58 +msgid "One message _window:" +msgstr "En melding _vindu:" + +#: ../data/glade/preferences_window.glade.h:59 +msgid "Play _sounds" +msgstr "Spill av _lyder" + +#: ../data/glade/preferences_window.glade.h:60 +msgid "Preferences" +msgstr "Tilstedeværelse" + +#: ../data/glade/preferences_window.glade.h:61 +msgid "Print time:" +msgstr "Utskrifts tid:" + +#: ../data/glade/preferences_window.glade.h:62 +msgid "Save _position and size for roster and chat windows" +msgstr "Lagre _posisjon og størrelse for kontaktliste og samtalevinduer" + +#: ../data/glade/preferences_window.glade.h:63 +msgid "Show only in _roster" +msgstr "Vis bare i _kontaktliste" + +#: ../data/glade/preferences_window.glade.h:64 +msgid "Sign _in" +msgstr "Logger _inn" + +#: ../data/glade/preferences_window.glade.h:65 +msgid "Sign _out" +msgstr "Logger _ut" + +#: ../data/glade/preferences_window.glade.h:66 +msgid "Status" +msgstr "Status" + +#: ../data/glade/preferences_window.glade.h:67 +msgid "T_heme:" +msgstr "T_ema:" + +#: ../data/glade/preferences_window.glade.h:68 +msgid "The auto away status message" +msgstr "Den automatiserte borte meldinen" + +#: ../data/glade/preferences_window.glade.h:69 +msgid "The auto not available status message" +msgstr "Den autmatiserte ikke tilgjengelig meldingen" + +#: ../data/glade/preferences_window.glade.h:70 +msgid "Use _transports iconsets" +msgstr "Bruk _transportenes ikoner" + +#: ../data/glade/preferences_window.glade.h:71 +msgid "Use system _default" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:72 +msgid "Use t_rayicon (aka. notification area icon)" +msgstr "Bruk Ikon i s_ystemstatusfelt (ogsÃ¥ kjent som systray)" + +#: ../data/glade/preferences_window.glade.h:73 +msgid "" +"When a new event (message, file transfer request etc..) is received, the " +"following methods may be used to inform you about it. Please note that " +"events about new messages only occur if it is a new message from a contact " +"you are not already chatting with" +msgstr "" +"NÃ¥r en ny hendelse (melding, fil overføring osv.) blir motatt, vil følgende " +"metoder kunne bli brukt for Ã¥ informere deg om det. Vennligst merk at ny " +"melding hendelser vil bare skje dersom du fÃ¥r en ny melding fra en kontakt " +"du ikke er i samtale med." + +#: ../data/glade/preferences_window.glade.h:74 +msgid "When new event is received" +msgstr "NÃ¥r en ny hendelse blir motatt" + +#: ../data/glade/preferences_window.glade.h:75 +#, fuzzy +msgid "_Advanced Notifications Control..." +msgstr "Avansert Konfigurasjons Editor" + +#: ../data/glade/preferences_window.glade.h:76 +msgid "_After time:" +msgstr "_Etter tid:" + +#: ../data/glade/preferences_window.glade.h:77 +msgid "_Before time:" +msgstr "_Før tid:" + +#: ../data/glade/preferences_window.glade.h:78 +msgid "_Browser:" +msgstr "_Nettleser:" + +#: ../data/glade/preferences_window.glade.h:79 +msgid "_File manager:" +msgstr "_Fil behandler:" + +#: ../data/glade/preferences_window.glade.h:80 +msgid "_Font:" +msgstr "_Font:" + +#: ../data/glade/preferences_window.glade.h:81 +msgid "_Highlight misspelled words" +msgstr "_Uthev feilstavede ord" + +#: ../data/glade/preferences_window.glade.h:82 +msgid "_Ignore events from contacts not in the roster" +msgstr "_Ignorer hendelser fra kontakter som ikke er i kontaktlisten" + +#: ../data/glade/preferences_window.glade.h:83 +msgid "_Incoming message:" +msgstr "_Innkommende melding:" + +#: ../data/glade/preferences_window.glade.h:84 +msgid "_Log status changes of contacts" +msgstr "_Logg status endringer til kontakter" + +#: ../data/glade/preferences_window.glade.h:85 +msgid "_Mail client:" +msgstr "_Post klient:" + +#: ../data/glade/preferences_window.glade.h:86 +msgid "_Never" +msgstr "_Aldri" + +#: ../data/glade/preferences_window.glade.h:87 +msgid "_Notify me about it" +msgstr "_Gi meg beskjed om det" + +#: ../data/glade/preferences_window.glade.h:88 +msgid "_Open..." +msgstr "_Ã…pne..." + +#: ../data/glade/preferences_window.glade.h:89 +msgid "_Outgoing message:" +msgstr "_UtgÃ¥ende melding:" + +#: ../data/glade/preferences_window.glade.h:90 +msgid "_Player:" +msgstr "_Spiller:" + +#: ../data/glade/preferences_window.glade.h:91 +msgid "_Pop it up" +msgstr "_Sprett opp" + +#: ../data/glade/preferences_window.glade.h:92 +msgid "_Reset to Default Colors" +msgstr "_Tilbakestill til Standard Farger" + +#: ../data/glade/preferences_window.glade.h:93 +msgid "_Sort contacts by status" +msgstr "_Sorter kontakter etter status" + +#: ../data/glade/preferences_window.glade.h:94 +msgid "_Status message:" +msgstr "_Status melding:" + +#: ../data/glade/preferences_window.glade.h:95 +msgid "_URL:" +msgstr "_URL:" + +#: ../data/glade/preferences_window.glade.h:96 +msgid "minutes" +msgstr "minutter" + +#: ../data/glade/privacy_list_edit_window.glade.h:1 +msgid "Add / Edit a rule" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:2 +#, fuzzy +msgid "List of rules" +msgstr "Utseende pÃ¥ en linje" + +#: ../data/glade/privacy_list_edit_window.glade.h:3 +msgid "Privacy List" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:5 ../src/config.py:2281 +msgid "All" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:6 +msgid "Allow" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:7 +#, fuzzy +msgid "Default" +msgstr "Slett" + +#: ../data/glade/privacy_list_edit_window.glade.h:9 +#, fuzzy +msgid "JabberID" +msgstr "Jabber ID:" + +#: ../data/glade/privacy_list_edit_window.glade.h:10 +#, fuzzy +msgid "Order:" +msgstr "Server:" + +#: ../data/glade/privacy_list_edit_window.glade.h:11 ../src/dialogs.py:1626 +#, fuzzy +msgid "Privacy List" +msgstr "Listen over Utestengte" + +#: ../data/glade/privacy_list_edit_window.glade.h:12 +#, fuzzy +msgid "all by subscription" +msgstr "_Abonement" + +#: ../data/glade/privacy_list_edit_window.glade.h:13 +#, fuzzy +msgid "all in the group" +msgstr "I gruppen" + +#: ../data/glade/privacy_list_edit_window.glade.h:14 +msgid "" +"none\n" +"both\n" +"from\n" +"to" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:18 +#, fuzzy +msgid "to send me messages" +msgstr "Send melding" + +#: ../data/glade/privacy_list_edit_window.glade.h:19 +msgid "to send me queries" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:20 +#, fuzzy +msgid "to send me status" +msgstr "Forespør hans/hennes status" + +#: ../data/glade/privacy_list_edit_window.glade.h:21 +#, fuzzy +msgid "to view my status" +msgstr "Tillat han/henne Ã¥ se min status" + +#: ../data/glade/privacy_lists_first_window.glade.h:1 +msgid "Create your own Privacy Lists" +msgstr "" + +#: ../data/glade/privacy_lists_first_window.glade.h:2 +msgid "Server-based Privacy Lists" +msgstr "" + +#: ../data/glade/remove_account_window.glade.h:1 +msgid "What do you want to do?" +msgstr "Hva ønsker du Ã¥ gjøre?" + +#: ../data/glade/remove_account_window.glade.h:2 +msgid "Remove account _only from Gajim" +msgstr "Fjern kontoe _bare fra Gajim" + +#: ../data/glade/remove_account_window.glade.h:3 +msgid "Remove account from Gajim and from _server" +msgstr "Fjern konto fra Gajim og fra _serveren" + +#: ../data/glade/roster_contact_context_menu.glade.h:1 +#, fuzzy +msgid "A_sk to see his/her status" +msgstr "Forespør hans/hennes status" + +#: ../data/glade/roster_contact_context_menu.glade.h:2 +msgid "Add Special _Notification" +msgstr "Legg til Spesiell _Alarm" + +#: ../data/glade/roster_contact_context_menu.glade.h:3 +msgid "Assign Open_PGP Key" +msgstr "Tilegn Open_PGP Nøkkel" + +#: ../data/glade/roster_contact_context_menu.glade.h:4 +msgid "Edit _Groups" +msgstr "Rediger _Grupper" + +#: ../data/glade/roster_contact_context_menu.glade.h:5 +#: ../data/glade/systray_context_menu.glade.h:1 +msgid "Send Single _Message" +msgstr "Send _Melding" + +#: ../data/glade/roster_contact_context_menu.glade.h:7 +msgid "Start _Chat" +msgstr "Start _Samtale" + +#: ../data/glade/roster_contact_context_menu.glade.h:9 +#, fuzzy +msgid "_Allow him/her to see my status" +msgstr "Tillat han/henne Ã¥ se min status" + +#: ../data/glade/roster_contact_context_menu.glade.h:10 +#, fuzzy +msgid "_Forbid him/her to see my status" +msgstr "Forby han/henne Ã¥ se min status" + +#: ../data/glade/roster_contact_context_menu.glade.h:12 +#: ../src/roster_window.py:1482 +msgid "_Remove from Roster" +msgstr "_Fjern fra Kontaktliste" + +#: ../data/glade/roster_contact_context_menu.glade.h:13 +#: ../src/roster_window.py:1470 +msgid "_Rename" +msgstr "_Gi Nytt Navn" + +#: ../data/glade/roster_contact_context_menu.glade.h:14 +msgid "_Subscription" +msgstr "_Abonement" + +#: ../data/glade/roster_window.glade.h:1 +msgid "A_ccounts" +msgstr "_Kontoer" + +#: ../data/glade/roster_window.glade.h:2 +msgid "Add _Contact" +msgstr "Ny _Kontakt" + +#: ../data/glade/roster_window.glade.h:3 +msgid "File _Transfers" +msgstr "Fil _Overføringer" + +#: ../data/glade/roster_window.glade.h:4 +msgid "Frequently Asked Questions (online)" +msgstr "Ofte Stilte SpørsmÃ¥l (online)" + +#: ../data/glade/roster_window.glade.h:6 +msgid "Help online" +msgstr "Hjelp online" + +#: ../data/glade/roster_window.glade.h:7 +msgid "Profile, Avatar" +msgstr "Profil, Bilde" + +#: ../data/glade/roster_window.glade.h:8 +msgid "Show _Offline Contacts" +msgstr "Vis _Frakoblede Kontakter" + +#: ../data/glade/roster_window.glade.h:11 +msgid "_Contents" +msgstr "_Innhold" + +#: ../data/glade/roster_window.glade.h:12 +msgid "_Discover Services" +msgstr "_Oppdag Tjenester" + +#: ../data/glade/roster_window.glade.h:13 ../src/disco.py:1252 +#: ../src/roster_window.py:1462 +msgid "_Edit" +msgstr "_Rediger" + +#: ../data/glade/roster_window.glade.h:14 +msgid "_FAQ" +msgstr "_FAQ" + +#: ../data/glade/roster_window.glade.h:16 +msgid "_Help" +msgstr "_Hjelp" + +#: ../data/glade/roster_window.glade.h:17 +msgid "_Preferences" +msgstr "_Instillinger" + +#: ../data/glade/roster_window.glade.h:18 +msgid "_Quit" +msgstr "_Avslutt" + +#: ../data/glade/service_discovery_window.glade.h:1 +msgid "G_o" +msgstr "G_Ã¥" + +#: ../data/glade/service_discovery_window.glade.h:2 +msgid "_Address:" +msgstr "_Adresse:" + +#: ../data/glade/service_discovery_window.glade.h:3 +msgid "_Filter:" +msgstr "_Filter:" + +#: ../data/glade/service_registration_window.glade.h:1 +msgid "Register to" +msgstr "Registrer til:" + +#: ../data/glade/service_registration_window.glade.h:2 +msgid "_Cancel" +msgstr "_Avbryt" + +#: ../data/glade/service_registration_window.glade.h:3 +msgid "_OK" +msgstr "_OK" + +#: ../data/glade/single_message_window.glade.h:1 +msgid "0" +msgstr "0" + +#: ../data/glade/single_message_window.glade.h:2 +msgid "From:" +msgstr "Fra:" + +#: ../data/glade/single_message_window.glade.h:3 +msgid "Reply to this message" +msgstr "Svar pÃ¥ denne meldingen" + +#: ../data/glade/single_message_window.glade.h:4 +msgid "Sen_d" +msgstr "Sen_d" + +#: ../data/glade/single_message_window.glade.h:5 +msgid "Send message" +msgstr "Send melding" + +#: ../data/glade/single_message_window.glade.h:6 +msgid "Send message and close window" +msgstr "Send melding og lukk vinduet" + +#: ../data/glade/single_message_window.glade.h:7 +msgid "Subject:" +msgstr "Tema:" + +#: ../data/glade/single_message_window.glade.h:8 +msgid "To:" +msgstr "Til:" + +#: ../data/glade/single_message_window.glade.h:9 +msgid "_Reply" +msgstr "_Svar" + +#: ../data/glade/single_message_window.glade.h:10 +msgid "_Send & Close" +msgstr "_Send & Lukk" + +#: ../data/glade/subscription_request_window.glade.h:1 +msgid "Authorize contact so he can know when you're connected" +msgstr "Godkjenn kontakt sÃ¥ han kan vite nÃ¥r du er tilkoblet" + +#: ../data/glade/subscription_request_window.glade.h:2 +msgid "Contact _Info" +msgstr "Kontakt_Info" + +#: ../data/glade/subscription_request_window.glade.h:3 +msgid "Deny authorization from contact so he cannot know when you're connected" +msgstr "AvslÃ¥ godkjenning fra kontakt sÃ¥ han ikke kan se nÃ¥r du er tilkoblet" + +#: ../data/glade/subscription_request_window.glade.h:4 +msgid "Subscription Request" +msgstr "Abbonerings Forespørsel" + +#: ../data/glade/subscription_request_window.glade.h:5 +msgid "_Authorize" +msgstr "_Godkjenn" + +#: ../data/glade/subscription_request_window.glade.h:6 +msgid "_Deny" +msgstr "_Nekt" + +#: ../data/glade/systray_context_menu.glade.h:2 +msgid "Show All Pending _Events" +msgstr "Vis Alle _Handlinger som Venter" + +#: ../data/glade/systray_context_menu.glade.h:3 +msgid "Show _Roster" +msgstr "Vis _Kontaktliste" + +#: ../data/glade/systray_context_menu.glade.h:4 +msgid "Sta_tus" +msgstr "Sta_tus" + +#. "About" is the text of a tab of vcard window +#: ../data/glade/vcard_information_window.glade.h:2 +msgid "About" +msgstr "Om" + +#: ../data/glade/vcard_information_window.glade.h:3 +msgid "Address" +msgstr "Adresse" + +#: ../data/glade/vcard_information_window.glade.h:4 +msgid "Ask:" +msgstr "Spør:" + +#: ../data/glade/vcard_information_window.glade.h:5 +msgid "Birthday:" +msgstr "Fødselsdag:" + +#: ../data/glade/vcard_information_window.glade.h:6 +msgid "City:" +msgstr "By:" + +#: ../data/glade/vcard_information_window.glade.h:7 +msgid "Client:" +msgstr "Klient:" + +#: ../data/glade/vcard_information_window.glade.h:8 +msgid "Company:" +msgstr "Bedrift:" + +#: ../data/glade/vcard_information_window.glade.h:9 +msgid "Contact Information" +msgstr "Kontaktinformasjon" + +#: ../data/glade/vcard_information_window.glade.h:10 +msgid "Country:" +msgstr "Land:" + +#: ../data/glade/vcard_information_window.glade.h:11 +msgid "Department:" +msgstr "Avdeling:" + +#: ../data/glade/vcard_information_window.glade.h:12 +msgid "E-Mail:" +msgstr "E-Post:" + +#: ../data/glade/vcard_information_window.glade.h:13 +msgid "Extra Address:" +msgstr "Ekstra Adresse:" + +#. Family Name +#: ../data/glade/vcard_information_window.glade.h:15 +msgid "Family:" +msgstr "Etternavn:" + +#: ../data/glade/vcard_information_window.glade.h:16 +msgid "Format: YYYY-MM-DD" +msgstr "Format: YYYY-MM-DD" + +#. Given Name +#: ../data/glade/vcard_information_window.glade.h:19 +msgid "Given:" +msgstr "Fornavn:" + +#: ../data/glade/vcard_information_window.glade.h:20 +msgid "Homepage:" +msgstr "Hjemmeside:" + +#: ../data/glade/vcard_information_window.glade.h:21 +msgid "Jabber" +msgstr "Jabber" + +#: ../data/glade/vcard_information_window.glade.h:22 +msgid "Jabber ID:" +msgstr "Jabber ID:" + +#: ../data/glade/vcard_information_window.glade.h:23 +msgid "Location" +msgstr "Plassering" + +#. Middle Name +#: ../data/glade/vcard_information_window.glade.h:25 +msgid "Middle:" +msgstr "Mellomnavn:" + +#: ../data/glade/vcard_information_window.glade.h:26 +msgid "More" +msgstr "Mer" + +#: ../data/glade/vcard_information_window.glade.h:29 +msgid "OS:" +msgstr "OS:" + +#: ../data/glade/vcard_information_window.glade.h:30 +msgid "Phone No.:" +msgstr "Telefon Nummer:" + +#: ../data/glade/vcard_information_window.glade.h:31 +msgid "Position:" +msgstr "Plassering:" + +#: ../data/glade/vcard_information_window.glade.h:32 +msgid "Postal Code:" +msgstr "Post Kode:" + +#. Prefix in Name +#: ../data/glade/vcard_information_window.glade.h:34 +msgid "Prefix:" +msgstr "Tittel:" + +#: ../data/glade/vcard_information_window.glade.h:35 +msgid "Resource:" +msgstr "Ressurs:" + +#: ../data/glade/vcard_information_window.glade.h:36 +msgid "Role:" +msgstr "Rolle:" + +#: ../data/glade/vcard_information_window.glade.h:37 +msgid "Set _Avatar" +msgstr "Velg _Avatar" + +#: ../data/glade/vcard_information_window.glade.h:38 +msgid "State:" +msgstr "Fylke:" + +#: ../data/glade/vcard_information_window.glade.h:39 +msgid "Status:" +msgstr "Status:" + +#: ../data/glade/vcard_information_window.glade.h:40 +msgid "Street:" +msgstr "Gate:" + +#: ../data/glade/vcard_information_window.glade.h:41 +msgid "Subscription:" +msgstr "Abbonement:" + +#. Suffix in Name +#: ../data/glade/vcard_information_window.glade.h:43 +msgid "Suffix:" +msgstr "Suffix:" + +#: ../data/glade/vcard_information_window.glade.h:44 +msgid "Work" +msgstr "Jobb" + +#: ../data/glade/vcard_information_window.glade.h:45 +msgid "_Log conversation history" +msgstr "_Logg samtale historikk" + +#: ../data/glade/vcard_information_window.glade.h:46 +msgid "_Publish" +msgstr "_Publisér" + +#: ../data/glade/vcard_information_window.glade.h:47 +msgid "_Retrieve" +msgstr "_Hent" + +#: ../data/glade/xml_console_window.glade.h:1 +msgid "Jabber Traffic" +msgstr "Jabber Trafikk" + +#: ../data/glade/xml_console_window.glade.h:2 +msgid "XML Input" +msgstr "XML Input" + +#. XML Console enable checkbutton +#: ../data/glade/xml_console_window.glade.h:4 +msgid "Enable" +msgstr "SlÃ¥ pÃ¥" + +#. Info/Query make the "IQ" initials. So translate like this 'YourLang/YourLang (Info/Query)'. Thanks (it's a tooltip so width is not a problem) +#: ../data/glade/xml_console_window.glade.h:6 +msgid "Info/Query" +msgstr "Informasjon/Spørring" + +#. Info/Query: all(?) jabber xml start with Whom do you want to ban?\n" "\n" @@ -375,11 +2417,11 @@ msgstr "" "Hvem ønsker du Ã¥ utvise?\n" "\n" -#: ../src/config.py:2023 +#: ../src/config.py:2062 msgid "Adding Member..." msgstr "Legger til Medlem..." -#: ../src/config.py:2024 +#: ../src/config.py:2063 msgid "" "Whom do you want to make a member?\n" "\n" @@ -387,11 +2429,11 @@ msgstr "" "Hvem ønsker du Ã¥ gjøre til medlem?\n" "\n" -#: ../src/config.py:2026 +#: ../src/config.py:2065 msgid "Adding Owner..." msgstr "Legger til Eier..." -#: ../src/config.py:2027 +#: ../src/config.py:2066 msgid "" "Whom do you want to make a owner?\n" "\n" @@ -399,11 +2441,11 @@ msgstr "" "Hvem ønsker du Ã¥ gjøre til eier?\n" "\n" -#: ../src/config.py:2029 +#: ../src/config.py:2068 msgid "Adding Administrator..." msgstr "Legger til Administrator..." -#: ../src/config.py:2030 +#: ../src/config.py:2069 msgid "" "Whom do you want to make an administrator?\n" "\n" @@ -411,7 +2453,7 @@ msgstr "" "Hvem ønsker du Ã¥ gjøre til administrator?\n" "\n" -#: ../src/config.py:2031 +#: ../src/config.py:2070 msgid "" "Can be one of the following:\n" "1. user@domain/resource (only that resource matches).\n" @@ -427,715 +2469,752 @@ msgstr "" "4. domene (domene selv treffer, smt treffer alle bruker@domene,\n" "domene/ressurs, eller adresser i et underdomene." -#: ../src/config.py:2127 +#: ../src/config.py:2166 #, python-format msgid "Removing %s account" msgstr "Fjerner %s kontoen" -#: ../src/config.py:2144 -#: ../src/roster_window.py:1859 +#: ../src/config.py:2183 ../src/roster_window.py:1857 msgid "Password Required" msgstr "Krever Passord" -#: ../src/config.py:2145 -#: ../src/roster_window.py:1860 +#: ../src/config.py:2184 ../src/roster_window.py:1858 #, python-format msgid "Enter your password for account %s" msgstr "Skriv inn passord for kontoen %s" -#: ../src/config.py:2146 -#: ../src/roster_window.py:1861 +#: ../src/config.py:2185 ../src/roster_window.py:1859 msgid "Save password" msgstr "Lagre passord" -#: ../src/config.py:2159 +#: ../src/config.py:2198 #, python-format msgid "Account \"%s\" is connected to the server" msgstr "Kontoen \"%s\" er tilkoblet til serveren" -#: ../src/config.py:2160 +#: ../src/config.py:2199 msgid "If you remove it, the connection will be lost." msgstr "Dersom du fjerner den vil tilkoblingen mistes." -#: ../src/config.py:2295 +#: ../src/config.py:2282 +msgid "Enter and leave only" +msgstr "" + +#: ../src/config.py:2352 msgid "New Room" msgstr "Nytt Rom" -#: ../src/config.py:2326 +#: ../src/config.py:2383 msgid "This bookmark has invalid data" msgstr "Dette bokmerket har ugyldig innhold" -#: ../src/config.py:2327 -msgid "Please be sure to fill out server and room fields or remove this bookmark." +#: ../src/config.py:2384 +msgid "" +"Please be sure to fill out server and room fields or remove this bookmark." msgstr "Vennligst fyll inn server og rom feltene for Ã¥ fjerne dette bokmerket." -#: ../src/config.py:2564 +#: ../src/config.py:2638 msgid "Invalid username" msgstr "Ugyldig brukernavn" -#: ../src/config.py:2565 +#: ../src/config.py:2639 msgid "You must provide a username to configure this account." msgstr "Du mÃ¥ oppgi et brukernavn for Ã¥ konfigurere denne kontoen." -#: ../src/config.py:2574 -#: ../src/dialogs.py:1036 +#: ../src/config.py:2648 ../src/dialogs.py:1118 msgid "Invalid password" msgstr "Ugyldig passord" -#: ../src/config.py:2575 +#: ../src/config.py:2649 msgid "You must enter a password for the new account." msgstr "Du mÃ¥ skrive inn et passord for den nye kontoen" -#: ../src/config.py:2579 -#: ../src/dialogs.py:1041 +#: ../src/config.py:2653 ../src/dialogs.py:1123 msgid "Passwords do not match" msgstr "Passordene er ikke like" -#: ../src/config.py:2580 -#: ../src/dialogs.py:1042 +#: ../src/config.py:2654 ../src/dialogs.py:1124 msgid "The passwords typed in both fields must be identical." msgstr "Passordene du skriver inn i begge felt mÃ¥ være identiske." -#: ../src/config.py:2599 +#: ../src/config.py:2673 msgid "Duplicate Jabber ID" msgstr "Duplikat Jabber ID" -#: ../src/config.py:2600 +#: ../src/config.py:2674 msgid "This account is already configured in Gajim." msgstr "Kontakten er allerede konfigurert i Gajim." -#: ../src/config.py:2617 +#: ../src/config.py:2691 msgid "Account has been added successfully" msgstr "Kontoen har blitt lagt til uten feilmeldinger" -#: ../src/config.py:2618 -#: ../src/config.py:2651 -msgid "You can set advanced account options by pressing Advanced button, or later by clicking in Accounts menuitem under Edit menu from the main window." -msgstr "Du kan sette avanserte konto instillinger ved Ã¥ trykke pÃ¥ Avansert knappen, eller senere ved Ã¥ klikke under Kontoer menyvalget, under Rediger menyen fra hovedvinduet." +#: ../src/config.py:2692 ../src/config.py:2725 +msgid "" +"You can set advanced account options by pressing Advanced button, or later " +"by clicking in Accounts menuitem under Edit menu from the main window." +msgstr "" +"Du kan sette avanserte konto instillinger ved Ã¥ trykke pÃ¥ Avansert knappen, " +"eller senere ved Ã¥ klikke under Kontoer menyvalget, under Rediger menyen fra " +"hovedvinduet." -#: ../src/config.py:2650 +#: ../src/config.py:2724 msgid "Your new account has been created successfully" msgstr "Din nye konto har blitt opprettet uten feilmeldinger" -#: ../src/config.py:2666 +#: ../src/config.py:2740 msgid "An error occured during account creation" msgstr "Det skjedde en feil ved oppretting av kontoen" -#: ../src/config.py:2723 +#: ../src/config.py:2797 msgid "Account name is in use" msgstr "Konto navnet er i bruk" -#: ../src/config.py:2724 +#: ../src/config.py:2798 msgid "You already have an account using this name." msgstr "Du har allerede en konto med dette navnet." -#: ../src/conversation_textview.py:182 -msgid "Text below this line is what has been said since the last time you paid attention to this group chat" -msgstr "Tekst under denne linjen er hva som har blitt sagt siden sist du fulgte med i denne gruppe samtalen" +#: ../src/conversation_textview.py:205 +msgid "" +"Text below this line is what has been said since the last time you paid " +"attention to this group chat" +msgstr "" +"Tekst under denne linjen er hva som har blitt sagt siden sist du fulgte med " +"i denne gruppe samtalen" -#: ../src/conversation_textview.py:239 +#: ../src/conversation_textview.py:263 #, python-format msgid "Actions for \"%s\"" msgstr "Handlinger for \"%s\"" -#: ../src/conversation_textview.py:251 +#: ../src/conversation_textview.py:275 msgid "Read _Wikipedia Article" msgstr "Les_Wikipedia Artikkel" -#: ../src/conversation_textview.py:255 +#: ../src/conversation_textview.py:280 msgid "Look it up in _Dictionary" msgstr "SlÃ¥ det opp i _Ordbok" #. we must have %s in the url if not WIKTIONARY -#: ../src/conversation_textview.py:270 +#: ../src/conversation_textview.py:296 #, python-format msgid "Dictionary URL is missing an \"%s\" and it is not WIKTIONARY" msgstr "Ordbok URL mangler en \"%s\" og den mÃ¥ ikke være WIKTIONARY" #. we must have %s in the url -#: ../src/conversation_textview.py:281 +#: ../src/conversation_textview.py:308 #, python-format msgid "Web Search URL is missing an \"%s\"" msgstr "Web Søk URL mangler en \"%s\"" -#: ../src/conversation_textview.py:284 +#: ../src/conversation_textview.py:311 msgid "Web _Search for it" msgstr "Web _Søk etter den" -#: ../src/conversation_textview.py:574 +#: ../src/conversation_textview.py:607 msgid "Yesterday" msgstr "I gÃ¥r" #. the number is >= 2 #. %i is day in year (1-365), %d (1-31) we want %i -#: ../src/conversation_textview.py:578 +#: ../src/conversation_textview.py:611 #, python-format msgid "%i days ago" msgstr "%i dager siden" #. if we have subject, show it too! -#: ../src/conversation_textview.py:634 +#: ../src/conversation_textview.py:686 #, python-format msgid "Subject: %s\n" msgstr "Tittel: %s\n" #. only say that to non Windows users -#: ../src/dbus_support.py:34 +#: ../src/dbus_support.py:32 msgid "D-Bus python bindings are missing in this computer" msgstr "D-Bus python bindinger mangler pÃ¥ denne maskinen" -#: ../src/dbus_support.py:35 +#: ../src/dbus_support.py:33 msgid "D-Bus capabilities of Gajim cannot be used" msgstr "D-Bus egenskapene til Gajim kan ikke brukes" -#: ../src/dialogs.py:64 +#: ../src/dialogs.py:55 #, python-format msgid "Contact's name: %s" msgstr "Kontaktens navn: %s" -#: ../src/dialogs.py:66 +#: ../src/dialogs.py:57 #, python-format msgid "JID: %s" msgstr "JID: %s" -#: ../src/dialogs.py:169 +#. Group name +#. In group boolean +#: ../src/dialogs.py:173 msgid "Group" msgstr "Gruppe" -#: ../src/dialogs.py:176 +#: ../src/dialogs.py:180 msgid "In the group" msgstr "I gruppen" -#: ../src/dialogs.py:226 +#: ../src/dialogs.py:230 msgid "KeyID" msgstr "NøkkelID" -#: ../src/dialogs.py:229 +#: ../src/dialogs.py:233 msgid "Contact name" msgstr "Kontakt navn" -#: ../src/dialogs.py:263 +#: ../src/dialogs.py:266 #, python-format msgid "%s Status Message" msgstr "%s Status Melding" -#: ../src/dialogs.py:265 +#: ../src/dialogs.py:268 msgid "Status Message" msgstr "Status Melding" -#: ../src/dialogs.py:340 +#: ../src/dialogs.py:343 msgid "Save as Preset Status Message" msgstr "Lagre som Forvalgt Status Melding" -#: ../src/dialogs.py:341 +#: ../src/dialogs.py:344 msgid "Please type a name for this status message" msgstr "Vennligst skriv inn et navn for denne status meldingen" -#: ../src/dialogs.py:369 +#: ../src/dialogs.py:391 #, python-format msgid "Please fill in the data of the contact you want to add in account %s" -msgstr "Vennligst fyll inn dataene til kontakten du ønsker Ã¥ legge til kontoen %s" +msgstr "" +"Vennligst fyll inn dataene til kontakten du ønsker Ã¥ legge til kontoen %s" -#: ../src/dialogs.py:371 +#: ../src/dialogs.py:393 msgid "Please fill in the data of the contact you want to add" msgstr "Vennligst fyll inn dataene til kontakten du ønsker Ã¥ legge til" -#. the user can be in mutiple groups, see in all of them -#: ../src/dialogs.py:380 -#: ../src/disco.py:118 -#: ../src/disco.py:119 -#: ../src/disco.py:1258 -#: ../src/roster_window.py:214 -#: ../src/roster_window.py:275 -#: ../src/roster_window.py:310 -#: ../src/roster_window.py:330 -#: ../src/roster_window.py:354 -#: ../src/roster_window.py:2940 -#: ../src/roster_window.py:2942 -#: ../src/systray.py:291 -#: ../src/common/helpers.py:42 +#: ../src/dialogs.py:403 ../src/disco.py:109 ../src/disco.py:110 +#: ../src/disco.py:1249 ../src/roster_window.py:207 +#: ../src/roster_window.py:273 ../src/roster_window.py:309 +#: ../src/roster_window.py:329 ../src/roster_window.py:353 +#: ../src/roster_window.py:2973 ../src/roster_window.py:2975 +#: ../src/common/helpers.py:39 msgid "Transports" msgstr "Transporter" -#: ../src/dialogs.py:452 -#: ../src/dialogs.py:458 +#: ../src/dialogs.py:493 ../src/dialogs.py:499 msgid "Invalid User ID" msgstr "Ugyldig Bruker ID" -#: ../src/dialogs.py:459 +#: ../src/dialogs.py:500 msgid "The user ID must not contain a resource." msgstr "Bruker IDen mÃ¥ ikke inneholde en ressurs." -#: ../src/dialogs.py:466 +#: ../src/dialogs.py:513 msgid "Contact already in roster" msgstr "Kontakt allerede i kontaktlisten" -#: ../src/dialogs.py:467 +#: ../src/dialogs.py:514 msgid "This contact is already listed in your roster." msgstr "Kontakten er allerede listet i din kontaktliste." -#: ../src/dialogs.py:528 +#: ../src/dialogs.py:576 msgid "A GTK+ jabber client" msgstr "En GTK+ Jabber klient" -#: ../src/dialogs.py:539 +#: ../src/dialogs.py:577 +msgid "GTK+ Version:" +msgstr "" + +#: ../src/dialogs.py:578 +msgid "PyGTK Version:" +msgstr "" + +#: ../src/dialogs.py:586 +#, fuzzy +msgid "Current Developers:" +msgstr "Tidligere Utviklere:" + +#: ../src/dialogs.py:588 msgid "Past Developers:" msgstr "Tidligere Utviklere:" -#: ../src/dialogs.py:543 +#: ../src/dialogs.py:592 msgid "THANKS:" msgstr "TUSEN TAKK:" -#. remove one english setence +#. remove one english sentence #. and add it manually as translatable -#: ../src/dialogs.py:550 +#: ../src/dialogs.py:598 msgid "Last but not least, we would like to thank all the package maintainers." -msgstr "Sist men ikke minst ønsker vi Ã¥ takke alle de som lager installasjonspakker." +msgstr "" +"Sist men ikke minst ønsker vi Ã¥ takke alle de som lager installasjonspakker." #. here you write your name in the form Name FamilyName -#: ../src/dialogs.py:564 +#: ../src/dialogs.py:612 msgid "translator-credits" msgstr "Stian B. Barmen " -#: ../src/dialogs.py:826 +#: ../src/dialogs.py:738 +#, fuzzy, python-format +msgid "Unable to bind to port %s." +msgstr "Klarer ikke Ã¥ gÃ¥ inn i gruppesamtale" + +#: ../src/dialogs.py:739 +msgid "" +"Maybe you have another running instance of Gajim. File Transfer will be " +"canceled." +msgstr "" + +#: ../src/dialogs.py:881 #, python-format msgid "Subscription request for account %s from %s" msgstr "Abbnerings ønske for konto %s fra %s" -#: ../src/dialogs.py:829 +#: ../src/dialogs.py:884 #, python-format msgid "Subscription request from %s" msgstr "Abbonerings ønske fra %s" -#: ../src/dialogs.py:872 +#: ../src/dialogs.py:926 msgid "You can not join a group chat unless you are connected." msgstr "Du kan ikke gÃ¥ inn i en gruppe samtale uten Ã¥ være tilkoblet." -#: ../src/dialogs.py:885 +#: ../src/dialogs.py:939 #, python-format msgid "Join Group Chat with account %s" msgstr "Bli med i samtalegruppe med konto %s" -#: ../src/dialogs.py:887 -#: ../src/gtkgui.glade.h:177 -msgid "Join Group Chat" -msgstr "Bli med i Gruppesamtale" - -#: ../src/dialogs.py:976 +#: ../src/dialogs.py:1030 msgid "Invalid room or server name" msgstr "Ugyldig rom eller servernavn" -#: ../src/dialogs.py:977 +#: ../src/dialogs.py:1031 msgid "The room name or server name has not allowed characters." msgstr "Rom navnet eller server navnet inneholder ulovlige symboler." -#: ../src/dialogs.py:996 +#: ../src/dialogs.py:1050 #, python-format msgid "Start Chat with account %s" msgstr "Start samtale med konto %s" -#: ../src/dialogs.py:998 +#: ../src/dialogs.py:1052 msgid "Start Chat" msgstr "Start Samtale" -#: ../src/dialogs.py:999 +#: ../src/dialogs.py:1053 +#, fuzzy msgid "" -"Fill in the contact ID of the contact you would like\n" +"Fill in the jid, or nick of the contact you would like\n" "to send a chat message to:" msgstr "" "Fyll kontakt ID til den kontakten du ønsker\n" "Ã¥ sende en melding til:" #. if offline or connecting -#: ../src/dialogs.py:1007 -#: ../src/dialogs.py:1330 -#: ../src/dialogs.py:1450 +#: ../src/dialogs.py:1078 ../src/dialogs.py:1427 ../src/dialogs.py:1551 msgid "Connection not available" msgstr "Tilbkobling ikke tilgjengelig" -#: ../src/dialogs.py:1008 -#: ../src/dialogs.py:1331 -#: ../src/dialogs.py:1451 +#: ../src/dialogs.py:1079 ../src/dialogs.py:1428 ../src/dialogs.py:1552 #, python-format msgid "Please make sure you are connected with \"%s\"." msgstr "Vennligst sjekk at du er tilkoblet med \"%s\"." -#: ../src/dialogs.py:1018 +#: ../src/dialogs.py:1088 ../src/dialogs.py:1091 +#, fuzzy +msgid "Invalid JID" +msgstr "Ugyldig Jabber ID" + +#: ../src/dialogs.py:1091 +#, python-format +msgid "Unable to parse \"%s\"." +msgstr "" + +#: ../src/dialogs.py:1100 msgid "Without a connection, you can not change your password." msgstr "Du kan ikke endre passordet ditt uten Ã¥ være tilkoblet." -#: ../src/dialogs.py:1037 +#: ../src/dialogs.py:1119 msgid "You must enter a password." msgstr "Du mÃ¥ skrive inn et passord." #. img to display #. default value -#: ../src/dialogs.py:1083 -#: ../src/gajim.py:443 -#: ../src/notify.py:129 +#: ../src/dialogs.py:1165 ../src/notify.py:126 ../src/notify.py:268 msgid "Contact Signed In" msgstr "Kontakt Logget PÃ¥" -#: ../src/dialogs.py:1085 -#: ../src/gajim.py:474 -#: ../src/notify.py:131 +#: ../src/dialogs.py:1167 ../src/notify.py:134 ../src/notify.py:270 msgid "Contact Signed Out" msgstr "Kontakt Logget Av" #. chat message -#: ../src/dialogs.py:1087 -#: ../src/gajim.py:609 -#: ../src/notify.py:133 +#: ../src/dialogs.py:1169 ../src/notify.py:154 ../src/notify.py:272 msgid "New Message" msgstr "Ny Melding" #. single message -#: ../src/dialogs.py:1087 -#: ../src/gajim.py:603 -#: ../src/notify.py:133 +#: ../src/dialogs.py:1169 ../src/notify.py:138 ../src/notify.py:272 msgid "New Single Message" msgstr "Ny Melding" -#: ../src/dialogs.py:1088 -#: ../src/gajim.py:586 -#: ../src/notify.py:134 +#. private message +#: ../src/dialogs.py:1170 ../src/notify.py:145 ../src/notify.py:273 msgid "New Private Message" msgstr "Ny Privat Melding" -#: ../src/dialogs.py:1088 -#: ../src/gajim.py:1049 -#: ../src/notify.py:142 +#: ../src/dialogs.py:1170 ../src/gajim.py:1044 ../src/notify.py:281 msgid "New E-mail" msgstr "Ny E-post" -#: ../src/dialogs.py:1090 -#: ../src/gajim.py:1187 -#: ../src/notify.py:136 +#: ../src/dialogs.py:1172 ../src/gajim.py:1187 ../src/notify.py:275 msgid "File Transfer Request" msgstr "Fil Overførings Forespørsel" -#: ../src/dialogs.py:1092 -#: ../src/gajim.py:1035 -#: ../src/gajim.py:1164 -#: ../src/notify.py:138 +#: ../src/dialogs.py:1174 ../src/gajim.py:1022 ../src/gajim.py:1164 +#: ../src/notify.py:277 msgid "File Transfer Error" msgstr "Fil Overføring Feilet" -#: ../src/dialogs.py:1094 -#: ../src/gajim.py:1222 -#: ../src/gajim.py:1244 -#: ../src/gajim.py:1261 -#: ../src/notify.py:140 +#: ../src/dialogs.py:1176 ../src/gajim.py:1222 ../src/gajim.py:1244 +#: ../src/gajim.py:1261 ../src/notify.py:279 msgid "File Transfer Completed" msgstr "Fil Overføring Komplett" -#: ../src/dialogs.py:1095 -#: ../src/gajim.py:1225 -#: ../src/notify.py:140 +#: ../src/dialogs.py:1177 ../src/gajim.py:1225 ../src/notify.py:279 msgid "File Transfer Stopped" msgstr "Fil Overføring Stoppet" -#: ../src/dialogs.py:1097 -#: ../src/gajim.py:953 -#: ../src/notify.py:144 +#: ../src/dialogs.py:1179 ../src/gajim.py:920 ../src/notify.py:283 msgid "Groupchat Invitation" msgstr "Gruppesamtale invitasjon" +#: ../src/dialogs.py:1181 ../src/notify.py:118 ../src/notify.py:285 +#, fuzzy +msgid "Contact Changed Status" +msgstr "Kontakt Logget Av" + #. FIXME: for Received with should become 'in' -#: ../src/dialogs.py:1262 +#: ../src/dialogs.py:1359 #, python-format msgid "Single Message with account %s" msgstr "Enslig Melding med konto %s" -#: ../src/dialogs.py:1264 +#: ../src/dialogs.py:1361 msgid "Single Message" msgstr "Melding" #. prepare UI for Sending -#: ../src/dialogs.py:1267 +#: ../src/dialogs.py:1364 #, python-format msgid "Send %s" msgstr "Send %s" #. prepare UI for Receiving -#: ../src/dialogs.py:1290 +#: ../src/dialogs.py:1387 #, python-format msgid "Received %s" msgstr "Motatt %s" #. we create a new blank window to send and we preset RE: and to jid -#: ../src/dialogs.py:1355 +#: ../src/dialogs.py:1454 #, python-format msgid "RE: %s" msgstr "SV: %s" -#: ../src/dialogs.py:1356 +#: ../src/dialogs.py:1455 #, python-format msgid "%s wrote:\n" msgstr "%s skrev:\n" -#: ../src/dialogs.py:1400 +#: ../src/dialogs.py:1499 #, python-format msgid "XML Console for %s" msgstr "XML Konsoll for %s" -#: ../src/dialogs.py:1402 +#: ../src/dialogs.py:1501 msgid "XML Console" msgstr "XML Konsoll" +#: ../src/dialogs.py:1620 +#, python-format +msgid "Privacy List %s" +msgstr "" + +#: ../src/dialogs.py:1624 +#, python-format +msgid "Privacy List for %s" +msgstr "" + +#: ../src/dialogs.py:1716 +#, fuzzy +msgid "Edit a rule" +msgstr "Utseende pÃ¥ en linje" + +#: ../src/dialogs.py:1801 +#, fuzzy +msgid "Add a rule" +msgstr "Utseende pÃ¥ en linje" + +#: ../src/dialogs.py:1897 +#, python-format +msgid "Privacy Lists for %s" +msgstr "" + +#: ../src/dialogs.py:1899 +#, fuzzy +msgid "Privacy Lists" +msgstr "Private Samtaler" + #. FIXME: use nickname instead of contact_jid -#: ../src/dialogs.py:1488 +#: ../src/dialogs.py:1988 #, python-format msgid "%(contact_jid)s has invited you to %(room_jid)s room" msgstr "%(contact_jid)s har invitert deg til %(room_jid)s rom" #. only if not None and not '' -#: ../src/dialogs.py:1494 +#: ../src/dialogs.py:1994 #, python-format msgid "Comment: %s" msgstr "Kommentar: %s" -#: ../src/dialogs.py:1554 +#: ../src/dialogs.py:2054 msgid "Choose Sound" msgstr "Velg Lyd" -#: ../src/dialogs.py:1564 -#: ../src/dialogs.py:1607 +#: ../src/dialogs.py:2064 ../src/dialogs.py:2107 msgid "All files" msgstr "Alle filer" -#: ../src/dialogs.py:1569 +#: ../src/dialogs.py:2069 msgid "Wav Sounds" msgstr "Wav Lyder" -#: ../src/dialogs.py:1597 +#: ../src/dialogs.py:2097 msgid "Choose Image" msgstr "Velg Bilde" -#: ../src/dialogs.py:1612 +#: ../src/dialogs.py:2112 msgid "Images" msgstr "Bilder" -#: ../src/dialogs.py:1658 +#: ../src/dialogs.py:2157 #, python-format msgid "When %s becomes:" msgstr "NÃ¥r %s blir:" -#: ../src/dialogs.py:1660 +#: ../src/dialogs.py:2159 #, python-format msgid "Adding Special Notification for %s" msgstr "Legg til Spesiell Alarm for %s" -#: ../src/disco.py:117 +#: ../src/dialogs.py:2232 +#, fuzzy +msgid "Condition" +msgstr "Tilkobling" + +#: ../src/disco.py:108 msgid "Others" msgstr "Andre" #. conference is a category for listing mostly groupchats in service discovery -#: ../src/disco.py:121 +#: ../src/disco.py:112 msgid "Conference" msgstr "Konferanse" -#: ../src/disco.py:420 +#: ../src/disco.py:411 msgid "Without a connection, you can not browse available services" msgstr "Uten en tilkobling kan du ikke liste ut tilgjengelige tjenester" -#: ../src/disco.py:499 +#: ../src/disco.py:490 #, python-format msgid "Service Discovery using account %s" msgstr "Se etter Tjenester med %s kontoen" -#: ../src/disco.py:500 +#: ../src/disco.py:491 msgid "Service Discovery" msgstr "Se etter Tjenester" -#: ../src/disco.py:637 +#: ../src/disco.py:628 msgid "The service could not be found" msgstr "Tjenesten ble ikke funnet" -#: ../src/disco.py:638 -msgid "There is no service at the address you entered, or it is not responding. Check the address and try again." -msgstr "Det er ingen tjeneste pÃ¥ adressen du oppgav, eller den svarer ikke. Sjekk adressen og prøv igjen." +#: ../src/disco.py:629 +msgid "" +"There is no service at the address you entered, or it is not responding. " +"Check the address and try again." +msgstr "" +"Det er ingen tjeneste pÃ¥ adressen du oppgav, eller den svarer ikke. Sjekk " +"adressen og prøv igjen." -#: ../src/disco.py:642 -#: ../src/disco.py:924 +#: ../src/disco.py:633 ../src/disco.py:915 msgid "The service is not browsable" msgstr "Ikke mulig Ã¥ utforske tjeneste" -#: ../src/disco.py:643 +#: ../src/disco.py:634 msgid "This type of service does not contain any items to browse." msgstr "Denne typen tjeneste inneholder ingen elementer Ã¥ utforske" -#: ../src/disco.py:723 +#: ../src/disco.py:714 #, python-format msgid "Browsing %s using account %s" msgstr "Utforsk %s med %s kontoen" -#: ../src/disco.py:762 +#: ../src/disco.py:753 msgid "_Browse" msgstr "_Utforsk" -#: ../src/disco.py:925 +#: ../src/disco.py:916 msgid "This service does not contain any items to browse." msgstr "Denne tjenesten innholer ingen elementer Ã¥ utforske." -#: ../src/disco.py:1146 -#: ../src/disco.py:1263 +#: ../src/disco.py:1137 ../src/disco.py:1254 msgid "Re_gister" msgstr "Re_gistrer" -#: ../src/disco.py:1154 -#: ../src/disco.py:1516 -#: ../src/gtkgui.glade.h:350 -msgid "_Join" -msgstr "_Bli med" - -#: ../src/disco.py:1261 -#: ../src/gtkgui.glade.h:334 -#: ../src/roster_window.py:1462 -msgid "_Edit" -msgstr "_Rediger" - -#: ../src/disco.py:1300 +#: ../src/disco.py:1291 #, python-format msgid "Scanning %d / %d.." msgstr "Skanner %d / %d.." #. Users column -#: ../src/disco.py:1482 +#: ../src/disco.py:1473 msgid "Users" msgstr "Brukere" #. Description column -#: ../src/disco.py:1489 +#: ../src/disco.py:1480 msgid "Description" msgstr "Beskrivelse" -#: ../src/filetransfers_window.py:81 +#: ../src/filetransfers_window.py:72 msgid "File" msgstr "Fil" -#: ../src/filetransfers_window.py:96 +#: ../src/filetransfers_window.py:87 msgid "Time" msgstr "Tid" -#: ../src/filetransfers_window.py:108 +#: ../src/filetransfers_window.py:99 msgid "Progress" msgstr "Fremdrift" -#: ../src/filetransfers_window.py:176 -#: ../src/filetransfers_window.py:238 +#: ../src/filetransfers_window.py:163 ../src/filetransfers_window.py:223 #, python-format msgid "Filename: %s" msgstr "Filnavn: %s" -#: ../src/filetransfers_window.py:178 -#: ../src/filetransfers_window.py:308 +#: ../src/filetransfers_window.py:164 ../src/filetransfers_window.py:291 #, python-format msgid "Size: %s" msgstr "Størrelse: %s" #. You is a reply of who sent a file #. You is a reply of who received a file -#: ../src/filetransfers_window.py:187 -#: ../src/filetransfers_window.py:197 -#: ../src/history_manager.py:452 +#: ../src/filetransfers_window.py:173 ../src/filetransfers_window.py:183 +#: ../src/history_manager.py:454 msgid "You" msgstr "Du" -#: ../src/filetransfers_window.py:188 -#: ../src/filetransfers_window.py:240 +#: ../src/filetransfers_window.py:174 ../src/filetransfers_window.py:224 #, python-format msgid "Sender: %s" msgstr "Sender: %s" -#: ../src/filetransfers_window.py:189 -#: ../src/filetransfers_window.py:555 -#: ../src/tooltips.py:617 +#: ../src/filetransfers_window.py:175 ../src/filetransfers_window.py:556 +#: ../src/tooltips.py:639 msgid "Recipient: " msgstr "Mottaker: " -#: ../src/filetransfers_window.py:200 +#: ../src/filetransfers_window.py:186 #, python-format msgid "Saved in: %s" msgstr "Lagret i: %s" -#: ../src/filetransfers_window.py:203 +#: ../src/filetransfers_window.py:188 msgid "File transfer completed" msgstr "Fil overføring komplett" -#: ../src/filetransfers_window.py:205 -#: ../src/gtkgui.glade.h:366 -msgid "_Open Containing Folder" -msgstr "_Ã…pne Foreldre Katalog" - -#: ../src/filetransfers_window.py:219 -#: ../src/filetransfers_window.py:227 +#: ../src/filetransfers_window.py:204 ../src/filetransfers_window.py:212 msgid "File transfer canceled" msgstr "Fil overføring avbrutt" -#: ../src/filetransfers_window.py:219 -#: ../src/filetransfers_window.py:228 +#: ../src/filetransfers_window.py:204 ../src/filetransfers_window.py:213 msgid "Connection with peer cannot be established." msgstr "Tilkoblingen kan ikke opprettes." -#: ../src/filetransfers_window.py:242 +#: ../src/filetransfers_window.py:225 msgid "File transfer stopped by the contact of the other side" msgstr "Fil overføringen ble stoppet av kontakten pÃ¥ den andre siden" -#: ../src/filetransfers_window.py:259 +#: ../src/filetransfers_window.py:242 msgid "Choose File to Send..." msgstr "Velg Fil for Sending..." -#. Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector) -#: ../src/filetransfers_window.py:266 -#: ../src/gtkgui.glade.h:390 -msgid "_Send" -msgstr "_Send" - -#: ../src/filetransfers_window.py:273 +#: ../src/filetransfers_window.py:256 msgid "Gajim cannot access this file" msgstr "Gajim fÃ¥r ikke tilgang til filen" -#: ../src/filetransfers_window.py:274 +#: ../src/filetransfers_window.py:257 msgid "This file is being used by another process." msgstr "Denne filen er i bruk av en annen prosess." -#: ../src/filetransfers_window.py:306 +#: ../src/filetransfers_window.py:289 #, python-format msgid "File: %s" msgstr "Fil: %s" -#: ../src/filetransfers_window.py:311 +#: ../src/filetransfers_window.py:294 #, python-format msgid "Type: %s" msgstr "Type: %s" -#: ../src/filetransfers_window.py:313 +#: ../src/filetransfers_window.py:296 #, python-format msgid "Description: %s" msgstr "Beskrivelse: %s" -#: ../src/filetransfers_window.py:314 +#: ../src/filetransfers_window.py:297 #, python-format msgid "%s wants to send you a file:" msgstr "%s ønsker Ã¥ sende deg en fil:" -#: ../src/filetransfers_window.py:329 +#: ../src/filetransfers_window.py:311 +#, python-format +msgid "Cannot overwrite existing file \"%s\"" +msgstr "" + +#: ../src/filetransfers_window.py:312 +msgid "" +"A file with this name already exists and you do not have permission to " +"overwrite it." +msgstr "" + +#: ../src/filetransfers_window.py:319 ../src/gtkgui_helpers.py:685 msgid "This file already exists" msgstr "Denne filen finnes fra før" -#: ../src/filetransfers_window.py:329 +#: ../src/filetransfers_window.py:319 ../src/gtkgui_helpers.py:685 msgid "What do you want to do?" msgstr "Hva ønsker du Ã¥ gjøre?" -#: ../src/filetransfers_window.py:344 +#: ../src/filetransfers_window.py:331 +#, python-format +msgid "Directory \"%s\" is not writable" +msgstr "" + +#: ../src/filetransfers_window.py:331 +msgid "You do not have permission to create files in this directory." +msgstr "" + +#: ../src/filetransfers_window.py:341 msgid "Save File as..." msgstr "Lagre Fil som..." #. Print remaining time in format 00:00:00 #. You can change the places of (hours), (minutes), (seconds) - #. they are not translatable. -#: ../src/filetransfers_window.py:419 +#: ../src/filetransfers_window.py:420 #, python-format msgid "%(hours)02.d:%(minutes)02.d:%(seconds)02.d" msgstr "%(hours)02.d:%(minutes)02.d:%(seconds)02.d" @@ -1143,32 +3222,29 @@ msgstr "%(hours)02.d:%(minutes)02.d:%(seconds)02.d" #. This should make the string Kb/s, #. where 'Kb' part is taken from %s. #. Only the 's' after / (which means second) should be translated. -#: ../src/filetransfers_window.py:491 +#: ../src/filetransfers_window.py:492 #, python-format msgid "(%(filesize_unit)s/s)" msgstr "(%(filesize_unit)s/s)" -#: ../src/filetransfers_window.py:527 -#: ../src/filetransfers_window.py:530 +#: ../src/filetransfers_window.py:528 ../src/filetransfers_window.py:531 msgid "Invalid File" msgstr "Ugyldig Fil" -#: ../src/filetransfers_window.py:527 +#: ../src/filetransfers_window.py:528 msgid "File: " msgstr "Fil: " -#: ../src/filetransfers_window.py:531 +#: ../src/filetransfers_window.py:532 msgid "It is not possible to send empty files" msgstr "Det er ikke mulig Ã¥ sende tomme filer" -#: ../src/filetransfers_window.py:551 -#: ../src/tooltips.py:498 -#: ../src/tooltips.py:607 +#: ../src/filetransfers_window.py:552 ../src/tooltips.py:511 +#: ../src/tooltips.py:629 msgid "Name: " msgstr "Navn: " -#: ../src/filetransfers_window.py:553 -#: ../src/tooltips.py:611 +#: ../src/filetransfers_window.py:554 ../src/tooltips.py:633 msgid "Sender: " msgstr "Avsender: " @@ -1176,213 +3252,262 @@ msgstr "Avsender: " msgid "Pause" msgstr "Pause" -#: ../src/filetransfers_window.py:753 -#: ../src/gtkgui.glade.h:328 -msgid "_Continue" -msgstr "_Fortsett" - -#: ../src/gajim-remote.py:84 +#: ../src/gajim-remote.py:82 msgid "shows a help on specific command" msgstr "vis hjelp for en spesifisert kommando" #. User gets help for the command, specified by this parameter -#: ../src/gajim-remote.py:87 +#: ../src/gajim-remote.py:85 msgid "command" msgstr "kommando" -#: ../src/gajim-remote.py:88 +#: ../src/gajim-remote.py:86 msgid "show help on command" msgstr "vis hjelp for kommando" -#: ../src/gajim-remote.py:92 +#: ../src/gajim-remote.py:90 msgid "Shows or hides the roster window" msgstr "Vis eller skjul kontaktliste vinduet" -#: ../src/gajim-remote.py:96 +#: ../src/gajim-remote.py:94 msgid "Popups a window with the next unread message" msgstr "Aktiver nytt vindu med den neste uleste melingen" -#: ../src/gajim-remote.py:100 -msgid "Prints a list of all contacts in the roster. Each contact appear on a separate line" -msgstr "Skriv ut en liste over alle kontakter i kontaklisten. Hver kontakt kommer pÃ¥ en egen linje" +#: ../src/gajim-remote.py:98 +msgid "" +"Prints a list of all contacts in the roster. Each contact appear on a " +"separate line" +msgstr "" +"Skriv ut en liste over alle kontakter i kontaklisten. Hver kontakt kommer pÃ¥ " +"en egen linje" -#: ../src/gajim-remote.py:102 -#: ../src/gajim-remote.py:115 -#: ../src/gajim-remote.py:125 -#: ../src/gajim-remote.py:138 -#: ../src/gajim-remote.py:159 -#: ../src/gajim-remote.py:189 -#: ../src/gajim-remote.py:197 -#: ../src/gajim-remote.py:204 -#: ../src/gajim-remote.py:211 +#: ../src/gajim-remote.py:100 ../src/gajim-remote.py:114 +#: ../src/gajim-remote.py:124 ../src/gajim-remote.py:137 +#: ../src/gajim-remote.py:151 ../src/gajim-remote.py:172 +#: ../src/gajim-remote.py:202 ../src/gajim-remote.py:211 +#: ../src/gajim-remote.py:218 ../src/gajim-remote.py:225 +#: ../src/gajim-remote.py:236 msgid "account" msgstr "konto" -#: ../src/gajim-remote.py:102 +#: ../src/gajim-remote.py:100 msgid "show only contacts of the given account" msgstr "vis bare kontakter for denne kontoen" -#: ../src/gajim-remote.py:107 +#: ../src/gajim-remote.py:105 msgid "Prints a list of registered accounts" msgstr "Skriv ut en liste over registrerte kontoer" -#: ../src/gajim-remote.py:111 +#: ../src/gajim-remote.py:109 msgid "Changes the status of account or accounts" msgstr "Endrer status pÃ¥ konto eller kontoer" -#: ../src/gajim-remote.py:113 +#. offline, online, chat, away, xa, dnd, invisible should not be translated +#: ../src/gajim-remote.py:112 msgid "status" msgstr "status" -#: ../src/gajim-remote.py:113 +#: ../src/gajim-remote.py:112 msgid "one of: offline, online, chat, away, xa, dnd, invisible " -msgstr "en av: frakoblet, tilkoblet, samtale, borte, mer borte, ikke forstyrr, usynlig" +msgstr "" +"en av: frakoblet, tilkoblet, samtale, borte, mer borte, ikke forstyrr, " +"usynlig" -#: ../src/gajim-remote.py:114 -#: ../src/gajim-remote.py:135 +#: ../src/gajim-remote.py:113 ../src/gajim-remote.py:134 +#: ../src/gajim-remote.py:148 msgid "message" msgstr "melding" -#: ../src/gajim-remote.py:114 +#: ../src/gajim-remote.py:113 msgid "status message" msgstr "status melding" -#: ../src/gajim-remote.py:115 -msgid "change status of account \"account\". If not specified, try to change status of all accounts that have \"sync with global status\" option set" -msgstr "endre status til konto \"konto\". Dersom uspesifisert, prøv Ã¥ endre status til alle kontoer som har \"synkroniser med global status\" valget pÃ¥slÃ¥tt" +#: ../src/gajim-remote.py:114 +msgid "" +"change status of account \"account\". If not specified, try to change status " +"of all accounts that have \"sync with global status\" option set" +msgstr "" +"endre status til konto \"konto\". Dersom uspesifisert, prøv Ã¥ endre status " +"til alle kontoer som har \"synkroniser med global status\" valget pÃ¥slÃ¥tt" -#: ../src/gajim-remote.py:121 +#: ../src/gajim-remote.py:120 msgid "Shows the chat dialog so that you can send messages to a contact" msgstr "Vis samtale vinduet sÃ¥ du kan sende meldinger til en kontakt" -#: ../src/gajim-remote.py:123 +#: ../src/gajim-remote.py:122 msgid "JID of the contact that you want to chat with" msgstr "JID til kontakten du ønsker Ã¥ snakke med" -#: ../src/gajim-remote.py:125 -#: ../src/gajim-remote.py:189 +#: ../src/gajim-remote.py:124 ../src/gajim-remote.py:202 msgid "if specified, contact is taken from the contact list of this account" msgstr "om spesifisert vil kontakten fjernes fra listen pÃ¥ denne kontoen" -#: ../src/gajim-remote.py:130 -msgid "Sends new message to a contact in the roster. Both OpenPGP key and account are optional. If you want to set only 'account', without 'OpenPGP key', just set 'OpenPGP key' to ''." -msgstr "Sender ny melding til en kontakt i kontaktlisten. BÃ¥de OpenPGP nøkkelen og konto er valgfritt. Dersom du ønsker Ã¥ sette bare 'konto', uten 'OpenPGP nøkkel', sett bare 'OpenPGP nøkkel' til ''." +#: ../src/gajim-remote.py:129 +#, fuzzy +msgid "" +"Sends new chat message to a contact in the roster. Both OpenPGP key and " +"account are optional. If you want to set only 'account', without 'OpenPGP " +"key', just set 'OpenPGP key' to ''." +msgstr "" +"Sender ny melding til en kontakt i kontaktlisten. BÃ¥de OpenPGP nøkkelen og " +"konto er valgfritt. Dersom du ønsker Ã¥ sette bare 'konto', uten 'OpenPGP " +"nøkkel', sett bare 'OpenPGP nøkkel' til ''." -#: ../src/gajim-remote.py:134 +#: ../src/gajim-remote.py:133 ../src/gajim-remote.py:146 msgid "JID of the contact that will receive the message" msgstr "JID til kontakten som vil motta meldingen" -#: ../src/gajim-remote.py:135 +#: ../src/gajim-remote.py:134 ../src/gajim-remote.py:148 msgid "message contents" msgstr "meldings innhold" -#: ../src/gajim-remote.py:136 +#: ../src/gajim-remote.py:135 ../src/gajim-remote.py:149 msgid "pgp key" msgstr "pgp nøkkel" -#: ../src/gajim-remote.py:136 +#: ../src/gajim-remote.py:135 ../src/gajim-remote.py:149 msgid "if specified, the message will be encrypted using this public key" -msgstr "dersom spesifisert vil meldingen bli kryptert med denne offentlige nøkkelen" +msgstr "" +"dersom spesifisert vil meldingen bli kryptert med denne offentlige nøkkelen" -#: ../src/gajim-remote.py:138 +#: ../src/gajim-remote.py:137 ../src/gajim-remote.py:151 msgid "if specified, the message will be sent using this account" msgstr "dersom spesifisert, vil meldingen bli sendt med denne kontoen" -#: ../src/gajim-remote.py:143 +#: ../src/gajim-remote.py:142 +#, fuzzy +msgid "" +"Sends new single message to a contact in the roster. Both OpenPGP key and " +"account are optional. If you want to set only 'account', without 'OpenPGP " +"key', just set 'OpenPGP key' to ''." +msgstr "" +"Sender ny melding til en kontakt i kontaktlisten. BÃ¥de OpenPGP nøkkelen og " +"konto er valgfritt. Dersom du ønsker Ã¥ sette bare 'konto', uten 'OpenPGP " +"nøkkel', sett bare 'OpenPGP nøkkel' til ''." + +#: ../src/gajim-remote.py:147 +#, fuzzy +msgid "subject" +msgstr "Tittel" + +#: ../src/gajim-remote.py:147 +#, fuzzy +msgid "message subject" +msgstr "Melding Sendt" + +#: ../src/gajim-remote.py:156 msgid "Gets detailed info on a contact" msgstr "Henter detaljert informasjon om en kontakt" -#: ../src/gajim-remote.py:145 -#: ../src/gajim-remote.py:158 -#: ../src/gajim-remote.py:188 +#: ../src/gajim-remote.py:158 ../src/gajim-remote.py:171 +#: ../src/gajim-remote.py:201 ../src/gajim-remote.py:210 msgid "JID of the contact" msgstr "JID til kontakten" -#: ../src/gajim-remote.py:149 +#: ../src/gajim-remote.py:162 msgid "Gets detailed info on a account" msgstr "Henter detaljert informasjon om en konto" -#: ../src/gajim-remote.py:151 +#: ../src/gajim-remote.py:164 msgid "Name of the account" msgstr "Navn pÃ¥ kontoen" -#: ../src/gajim-remote.py:155 +#: ../src/gajim-remote.py:168 msgid "Sends file to a contact" msgstr "Sender fil til en kontakt" -#: ../src/gajim-remote.py:157 +#: ../src/gajim-remote.py:170 msgid "file" msgstr "fil" -#: ../src/gajim-remote.py:157 +#: ../src/gajim-remote.py:170 msgid "File path" msgstr "Fil sti" -#: ../src/gajim-remote.py:159 +#: ../src/gajim-remote.py:172 msgid "if specified, file will be sent using this account" msgstr "dersom spesifisert, vil filen bli sendt fra denne kontoen" -#: ../src/gajim-remote.py:164 +#: ../src/gajim-remote.py:177 msgid "Lists all preferences and their values" msgstr "Viser alle instillingsmuligheter og gjeldende verdier" -#: ../src/gajim-remote.py:168 +#: ../src/gajim-remote.py:181 msgid "Sets value of 'key' to 'value'." msgstr "Setter verdien av 'nøkkel' til 'verdi'," -#: ../src/gajim-remote.py:170 +#: ../src/gajim-remote.py:183 msgid "key=value" msgstr "nøkkel=verdi" -#: ../src/gajim-remote.py:170 +#: ../src/gajim-remote.py:183 msgid "'key' is the name of the preference, 'value' is the value to set it to" msgstr "'nøkkel' er navnet pÃ¥ instillingen, 'verdi' er gjeldende instilling" -#: ../src/gajim-remote.py:175 +#: ../src/gajim-remote.py:188 msgid "Deletes a preference item" msgstr "Sletter en instilling" -#: ../src/gajim-remote.py:177 +#: ../src/gajim-remote.py:190 msgid "key" msgstr "nøkkel" -#: ../src/gajim-remote.py:177 +#: ../src/gajim-remote.py:190 msgid "name of the preference to be deleted" msgstr "navnet pÃ¥ instillingen som skal slettes" -#: ../src/gajim-remote.py:181 +#: ../src/gajim-remote.py:194 msgid "Writes the current state of Gajim preferences to the .config file" msgstr "Skriver gjeldende Gajim instillinger til .config filen" -#: ../src/gajim-remote.py:186 +#: ../src/gajim-remote.py:199 msgid "Removes contact from roster" msgstr "Fjerner kontakt fra kontaktlisten" -#: ../src/gajim-remote.py:195 +#: ../src/gajim-remote.py:208 msgid "Adds contact to roster" msgstr "Legger til kontakt til kontaktlisten" -#: ../src/gajim-remote.py:197 -msgid "Adds new contact to this account." +#: ../src/gajim-remote.py:210 +msgid "jid" +msgstr "" + +#: ../src/gajim-remote.py:211 +#, fuzzy +msgid "Adds new contact to this account" msgstr "Legger til ny kontakt til denne kontoen." -#: ../src/gajim-remote.py:202 -msgid "Returns current status (the global one unless account is specified)" -msgstr "Returnerer instillinger (globale instillinger om ikke en konto er spesifisert)" - -#: ../src/gajim-remote.py:209 -msgid "Returns current status message(the global one unless account is specified)" -msgstr "Returnerer gjeldende status melding (den globale om ikke en konto er spesifisert)" - #: ../src/gajim-remote.py:216 +msgid "Returns current status (the global one unless account is specified)" +msgstr "" +"Returnerer instillinger (globale instillinger om ikke en konto er " +"spesifisert)" + +#: ../src/gajim-remote.py:223 +msgid "" +"Returns current status message(the global one unless account is specified)" +msgstr "" +"Returnerer gjeldende status melding (den globale om ikke en konto er " +"spesifisert)" + +#: ../src/gajim-remote.py:230 msgid "Returns number of unreaded messages" msgstr "Returnerer antall uleste meldinger" +#: ../src/gajim-remote.py:234 +msgid "Open 'Start Chat' dialog" +msgstr "" + #: ../src/gajim-remote.py:236 +#, fuzzy +msgid "Starts chat, using this account" +msgstr "Start samtale med konto %s" + +#: ../src/gajim-remote.py:256 msgid "Missing argument \"contact_jid\"" msgstr "Mangler argument \"contact_jid\"" -#: ../src/gajim-remote.py:255 +#: ../src/gajim-remote.py:275 #, python-format msgid "" "'%s' is not in your roster.\n" @@ -1391,16 +3516,16 @@ msgstr "" "'%s' er ikke in kontaktlisten din.\n" "Venligst spesifiser konto for sending av meldingen." -#: ../src/gajim-remote.py:258 +#: ../src/gajim-remote.py:278 msgid "You have no active account" msgstr "Du har ingen aktiv konto" -#: ../src/gajim-remote.py:301 +#: ../src/gajim-remote.py:321 #, python-format msgid "Unknown D-Bus version: %s" msgstr "Ukjent D-Bus versjon: %s" -#: ../src/gajim-remote.py:328 +#: ../src/gajim-remote.py:348 #, python-format msgid "" "Usage: %s %s %s \n" @@ -1409,16 +3534,16 @@ msgstr "" "Bruk: %s %s %s \n" "\t %s" -#: ../src/gajim-remote.py:331 +#: ../src/gajim-remote.py:351 msgid "Arguments:" msgstr "Argumenter:" -#: ../src/gajim-remote.py:335 +#: ../src/gajim-remote.py:355 #, python-format msgid "%s not found" msgstr "%s ikke funnet" -#: ../src/gajim-remote.py:339 +#: ../src/gajim-remote.py:359 #, python-format msgid "" "Usage: %s command [arguments]\n" @@ -1427,7 +3552,7 @@ msgstr "" "Bruk: %s kommando [argumenter]\n" "Kommando er en av:\n" -#: ../src/gajim-remote.py:413 +#: ../src/gajim-remote.py:433 #, python-format msgid "" "Argument \"%s\" is not specified. \n" @@ -1462,116 +3587,108 @@ msgstr "GTK+ mangler libglade støtte" #: ../src/gajim.py:63 #, python-format -msgid "Please remove your current GTK+ runtime and install the latest stable version from %s" -msgstr "Vennligst fjern din gjeldende GTK+ installasjon og installer siste stabile versjon fra %s" +msgid "" +"Please remove your current GTK+ runtime and install the latest stable " +"version from %s" +msgstr "" +"Vennligst fjern din gjeldende GTK+ installasjon og installer siste stabile " +"versjon fra %s" #: ../src/gajim.py:65 -msgid "Please make sure that GTK+ and PyGTK have libglade support in your system." +msgid "" +"Please make sure that GTK+ and PyGTK have libglade support in your system." msgstr "Vennligst sjekk at GTK+ og PyGTK har libglade støtte pÃ¥ ditt system." #: ../src/gajim.py:70 msgid "Gajim needs PySQLite2 to run" msgstr "Gajim trenger PySQLite2 for Ã¥ kjøre" -#: ../src/gajim.py:235 +#. set the icon to all newly opened wind +#: ../src/gajim.py:151 +msgid "Gajim is already running" +msgstr "" + +#: ../src/gajim.py:152 +msgid "" +"Another instance of Gajim seems to be running\n" +"Run anyway?" +msgstr "" + +#: ../src/gajim.py:267 #, python-format msgid "HTTP (%s) Authorization for %s (id: %s)" msgstr "HTTP (%s) Autentisering for %s (id: %s)" -#: ../src/gajim.py:236 +#: ../src/gajim.py:268 msgid "Do you accept this request?" msgstr "Godtar du denne forespørselen?" -#: ../src/gajim.py:438 -#, python-format -msgid "%(nickname)s Signed In" -msgstr "%(nickname)s Logget PÃ¥" - -#: ../src/gajim.py:469 -#, python-format -msgid "%(nickname)s Signed Out" -msgstr "%(nickname)s Logget Av" - -#: ../src/gajim.py:583 -#, python-format -msgid "New Private Message from room %s" -msgstr "Ny Privat Melding fra rom %s" - -#: ../src/gajim.py:584 -#, python-format -msgid "%(nickname)s: %(message)s" -msgstr "%(nickname)s: %(message)s" - -#: ../src/gajim.py:606 -#, python-format -msgid "New Single Message from %(nickname)s" -msgstr "Ny Enkeltmelding fra %(nickname)s" - -#: ../src/gajim.py:612 -#, python-format -msgid "New Message from %(nickname)s" -msgstr "Ny Melding fra %(nickname)s" - -#: ../src/gajim.py:660 +#: ../src/gajim.py:611 #, python-format msgid "error while sending %s ( %s )" msgstr "feil ved sending %s ( %s )" -#: ../src/gajim.py:700 +#: ../src/gajim.py:651 msgid "Authorization accepted" msgstr "Godkjenningsforespørel akseptert" -#: ../src/gajim.py:701 +#: ../src/gajim.py:652 #, python-format msgid "The contact \"%s\" has authorized you to see his or her status." msgstr "Kontakten \"%s\" har godkjent at du kan se hans eller hennes status." -#: ../src/gajim.py:709 +#: ../src/gajim.py:660 #, python-format msgid "Contact \"%s\" removed subscription from you" msgstr "Kontakten \"%s\" fjernet abbonementet fra deg" -#: ../src/gajim.py:710 +#: ../src/gajim.py:661 msgid "You will always see him or her as offline." msgstr "Du vil alltid se han eller henne som frakoblet." -#: ../src/gajim.py:736 +#: ../src/gajim.py:704 #, python-format msgid "Contact with \"%s\" cannot be established" msgstr "Kontakt med \"%s\" kan ikke opprettes" -#: ../src/gajim.py:737 -#: ../src/common/connection.py:349 +#: ../src/gajim.py:705 ../src/common/connection.py:398 msgid "Check your connection or try again later." msgstr "Sjekk nettverkstilkoblingen eller prøv igjen senere." -#: ../src/gajim.py:874 -#: ../src/roster_window.py:1012 +#: ../src/gajim.py:849 ../src/roster_window.py:1025 #, python-format msgid "%s is now %s (%s)" msgstr "%s er nÃ¥ %s (%s)" -#: ../src/gajim.py:963 +#: ../src/gajim.py:930 msgid "Your passphrase is incorrect" msgstr "Passord setningen din er ikke riktig" -#: ../src/gajim.py:964 +#: ../src/gajim.py:931 msgid "You are currently connected without your OpenPGP key." msgstr "Du er nÃ¥ tilkoblet uten din OpenPGP nøkkel." #. FIXME: find a better image -#: ../src/gajim.py:1045 +#: ../src/gajim.py:1033 #, python-format msgid "New E-mail on %(gmail_mail_address)s" msgstr "Ny E-post pÃ¥ %(gmail_mail_address)s" -#: ../src/gajim.py:1047 +#: ../src/gajim.py:1035 #, python-format msgid "You have %d new E-mail message" msgid_plural "You have %d new E-mail messages" msgstr[0] "Du har %d ny E-post melding" msgstr[1] "Du har %d nye E-post meldinger" +#. each message has a 'From', 'Subject' and 'Snippet' field +#: ../src/gajim.py:1040 +#, python-format +msgid "" +"\n" +"From: %(from_address)s" +msgstr "" + #: ../src/gajim.py:1185 #, python-format msgid "%s wants to send you a file." @@ -1612,2091 +3729,626 @@ msgid "vCard publication failed" msgstr "vCard publisering feilet" #: ../src/gajim.py:1304 -msgid "There was an error while publishing your personal information, try again later." -msgstr "Det skjedde en feil med publisering av din personlige informasjon, prøv igjen senere." +msgid "" +"There was an error while publishing your personal information, try again " +"later." +msgstr "" +"Det skjedde en feil med publisering av din personlige informasjon, prøv " +"igjen senere." #. it is good to notify the user #. in case he or she cannot see the output of the console -#: ../src/gajim.py:1634 +#: ../src/gajim.py:1683 msgid "Could not save your settings and preferences" msgstr "Kan ikke lagre dine instillinger og valg" -#: ../src/gajim.py:1848 +#: ../src/gajim.py:1903 msgid "Session Management support not available (missing gnome.ui module)" -msgstr "Sesjons Administrasjons støtte ikke tilgjengelig (mangler gnome.ui modul)" +msgstr "" +"Sesjons Administrasjons støtte ikke tilgjengelig (mangler gnome.ui modul)" -#: ../src/gajim.py:1878 +#: ../src/gajim.py:1932 msgid "Migrating Logs..." msgstr "Migrerer Logger..." -#: ../src/gajim.py:1879 +#: ../src/gajim.py:1933 msgid "Please wait while logs are being migrated..." msgstr "Vennligst vent mens loggene blir migrert..." -#: ../src/gajim_themes_window.py:67 +#: ../src/gajim_themes_window.py:59 msgid "Theme" msgstr "Tema" #. don't confuse translators -#: ../src/gajim_themes_window.py:149 +#: ../src/gajim_themes_window.py:141 msgid "theme name" msgstr "tema navn" -#: ../src/gajim_themes_window.py:166 +#: ../src/gajim_themes_window.py:158 msgid "You cannot delete your current theme" msgstr "Du kan ikke slette ditt gjeldene tema" -#: ../src/gajim_themes_window.py:167 +#: ../src/gajim_themes_window.py:159 msgid "Please first choose another for your current theme." msgstr "Vennligst velg en annen for ditt gjeldende tema." -#: ../src/groupchat_control.py:68 +#: ../src/groupchat_control.py:99 msgid "Private Chat" msgstr "Privat Samtale" -#: ../src/groupchat_control.py:68 +#: ../src/groupchat_control.py:99 msgid "Private Chats" msgstr "Private Samtaler" -#: ../src/groupchat_control.py:84 +#: ../src/groupchat_control.py:115 msgid "Sending private message failed" msgstr "Sending av privat melding feilet" #. in second %s code replaces with nickname -#: ../src/groupchat_control.py:86 +#: ../src/groupchat_control.py:117 #, python-format msgid "You are no longer in room \"%s\" or \"%s\" has left." msgstr "Du er ikke lenger i rommet \"%s\" eller \"%s\" har dratt." -#: ../src/groupchat_control.py:98 +#: ../src/groupchat_control.py:129 msgid "Group Chat" msgstr "Gruppe Samtale" -#: ../src/groupchat_control.py:98 +#: ../src/groupchat_control.py:129 msgid "Group Chats" msgstr "Gruppe Samtaler" -#: ../src/groupchat_control.py:595 +#: ../src/groupchat_control.py:308 +#, fuzzy +msgid "Insert Nickname" +msgstr "Endre _Kallenavn" + +#: ../src/groupchat_control.py:702 msgid "This room has no subject" msgstr "Dette rommet har ingen tittel" #. do not print 'kicked by None' -#: ../src/groupchat_control.py:693 +#: ../src/groupchat_control.py:801 #, python-format msgid "%(nick)s has been kicked: %(reason)s" msgstr "%(nick)s har blitt utvist: %(reason)s" -#: ../src/groupchat_control.py:697 +#: ../src/groupchat_control.py:805 #, python-format msgid "%(nick)s has been kicked by %(who)s: %(reason)s" msgstr "%(nick)s har blitt utvist av %(who)s: %(reason)s" #. do not print 'banned by None' -#: ../src/groupchat_control.py:704 +#: ../src/groupchat_control.py:812 #, python-format msgid "%(nick)s has been banned: %(reason)s" msgstr "%(nick)s er blitt uønsket: %(reason)s" -#: ../src/groupchat_control.py:708 +#: ../src/groupchat_control.py:816 #, python-format msgid "%(nick)s has been banned by %(who)s: %(reason)s" msgstr "%(nick)s har blitt uønsket av %(who)s: %(reason)s" -#: ../src/groupchat_control.py:716 +#: ../src/groupchat_control.py:824 #, python-format msgid "You are now known as %s" msgstr "Du er nÃ¥ kjent som %s" -#: ../src/groupchat_control.py:718 +#: ../src/groupchat_control.py:826 #, python-format msgid "%s is now known as %s" msgstr "%s er nÃ¥ kjent som %s" -#: ../src/groupchat_control.py:757 +#: ../src/groupchat_control.py:897 #, python-format msgid "%s has left" msgstr "%s har dratt" +#: ../src/groupchat_control.py:902 +#, python-format +msgid "%s has joined the room" +msgstr "" + #. No status message -#: ../src/groupchat_control.py:759 -#: ../src/roster_window.py:1015 +#: ../src/groupchat_control.py:904 ../src/roster_window.py:1028 #, python-format msgid "%s is now %s" msgstr "%s er nÃ¥ %s" -#: ../src/groupchat_control.py:871 -#: ../src/groupchat_control.py:888 -#: ../src/groupchat_control.py:981 -#: ../src/groupchat_control.py:997 +#: ../src/groupchat_control.py:1022 ../src/groupchat_control.py:1039 +#: ../src/groupchat_control.py:1132 ../src/groupchat_control.py:1148 #, python-format msgid "Nickname not found: %s" msgstr "Kallenavn ikke funnet: %s" -#: ../src/groupchat_control.py:915 +#: ../src/groupchat_control.py:1066 #, python-format msgid "Invited %(contact_jid)s to %(room_jid)s." msgstr "Invitert %(contact_jid)s til %(room_jid)s." #. %s is something the user wrote but it is not a jid so we inform -#: ../src/groupchat_control.py:922 -#: ../src/groupchat_control.py:952 +#: ../src/groupchat_control.py:1073 ../src/groupchat_control.py:1103 #, python-format msgid "%s does not appear to be a valid JID" msgstr "%s ser ikke ut til Ã¥ være en gyldig JID" -#: ../src/groupchat_control.py:1019 +#: ../src/groupchat_control.py:1185 #, python-format msgid "No such command: /%s (if you want to send this, prefix it with /say)" -msgstr "Ingen slik kommando: /%s (dersom du ønsker Ã¥ sende dette, sÃ¥ skriv /say før teksten)" +msgstr "" +"Ingen slik kommando: /%s (dersom du ønsker Ã¥ sende dette, sÃ¥ skriv /say før " +"teksten)" -#: ../src/groupchat_control.py:1041 +#: ../src/groupchat_control.py:1207 #, python-format msgid "Commands: %s" msgstr "Kommandoer: %s" -#: ../src/groupchat_control.py:1043 +#: ../src/groupchat_control.py:1209 #, python-format -msgid "Usage: /%s [reason], bans the JID from the room. The nickname of an occupant may be substituted, but not if it contains \"@\". If the JID is currently in the room, he/she/it will also be kicked. Does NOT support spaces in nickname." -msgstr "Bruksanvisning: /%s [Ã¥rsak], utviser JIDen fra rommet. Kallenavnet til en bruker kan bli brukt, men ikke dersom det inneholder \"@\". Skulle en bruker med den JIDen være tilstede i rommet vil denne ogsÃ¥ bli kastet ut. Det støttes ikke med mellomrom i kallenavnet." +msgid "" +"Usage: /%s [reason], bans the JID from the room. The nickname " +"of an occupant may be substituted, but not if it contains \"@\". If the JID " +"is currently in the room, he/she/it will also be kicked. Does NOT support " +"spaces in nickname." +msgstr "" +"Bruksanvisning: /%s [Ã¥rsak], utviser JIDen fra rommet. " +"Kallenavnet til en bruker kan bli brukt, men ikke dersom det inneholder \"@" +"\". Skulle en bruker med den JIDen være tilstede i rommet vil denne ogsÃ¥ bli " +"kastet ut. Det støttes ikke med mellomrom i kallenavnet." -#: ../src/groupchat_control.py:1049 +#: ../src/groupchat_control.py:1215 #, python-format -msgid "Usage: /%s , opens a private chat window to the specified occupant." -msgstr "Bruksanvisning: /%s , Ã¥pner en privat samtale vindu til den spesifiserte brukeren." +msgid "" +"Usage: /%s , opens a private chat window to the specified occupant." +msgstr "" +"Bruksanvisning: /%s , Ã¥pner en privat samtale vindu til den " +"spesifiserte brukeren." -#: ../src/groupchat_control.py:1053 +#: ../src/groupchat_control.py:1219 #, python-format msgid "Usage: /%s, clears the text window." msgstr "Bruksanvisning: /%s, tømmer tekst vinduet." -#: ../src/groupchat_control.py:1055 +#: ../src/groupchat_control.py:1221 #, python-format -msgid "Usage: /%s [reason], closes the current window or tab, displaying reason if specified." -msgstr "Bruksanvisning: /%s [Ã¥rsak], lukker gjeldende vindu eller fane, viser Ã¥rsak dersom spesifisert." +msgid "" +"Usage: /%s [reason], closes the current window or tab, displaying reason if " +"specified." +msgstr "" +"Bruksanvisning: /%s [Ã¥rsak], lukker gjeldende vindu eller fane, viser Ã¥rsak " +"dersom spesifisert." -#: ../src/groupchat_control.py:1058 +#: ../src/groupchat_control.py:1224 #, python-format msgid "Usage: /%s, hide the chat buttons." msgstr "Bruk: /%s, gjemmer samtale knappene." -#: ../src/groupchat_control.py:1060 +#: ../src/groupchat_control.py:1226 #, python-format -msgid "Usage: /%s [reason], invites JID to the current room, optionally providing a reason." -msgstr "Bruksanvisning: /%s [Ã¥rsak], inviterer JID til gjeldende rom, og viser en Ã¥rsak dersom spesifisert." +msgid "" +"Usage: /%s [reason], invites JID to the current room, optionally " +"providing a reason." +msgstr "" +"Bruksanvisning: /%s [Ã¥rsak], inviterer JID til gjeldende rom, og viser " +"en Ã¥rsak dersom spesifisert." -#: ../src/groupchat_control.py:1064 +#: ../src/groupchat_control.py:1230 #, python-format -msgid "Usage: /%s @[/nickname], offers to join room@server optionally using specified nickname." -msgstr "Bruksanvisning: /%s @[/kallenavn], inviterer til rom@server og gir mulighet for Ã¥ spesifisere valgfritt kallenavn." +msgid "" +"Usage: /%s @[/nickname], offers to join room@server optionally " +"using specified nickname." +msgstr "" +"Bruksanvisning: /%s @[/kallenavn], inviterer til rom@server og " +"gir mulighet for Ã¥ spesifisere valgfritt kallenavn." -#: ../src/groupchat_control.py:1068 +#: ../src/groupchat_control.py:1234 #, python-format -msgid "Usage: /%s [reason], removes the occupant specified by nickname from the room and optionally displays a reason. Does NOT support spaces in nickname." -msgstr "Bruksanvisning: /%s [Ã¥rsak], fjerner brukeren spesifisert av kallenavn fra rommet og viser om spesifisert en Ã¥rsak. Støtter ikke mellomrom i kallenavn." +msgid "" +"Usage: /%s [reason], removes the occupant specified by nickname " +"from the room and optionally displays a reason. Does NOT support spaces in " +"nickname." +msgstr "" +"Bruksanvisning: /%s [Ã¥rsak], fjerner brukeren spesifisert av " +"kallenavn fra rommet og viser om spesifisert en Ã¥rsak. Støtter ikke " +"mellomrom i kallenavn." -#: ../src/groupchat_control.py:1073 +#: ../src/groupchat_control.py:1239 #, python-format -msgid "Usage: /%s , sends action to the current room. Use third person. (e.g. /%s explodes.)" -msgstr "Bruksanvisning: /%s , sender handling til gjeldende rom. Bruk tredje person. (f.eks. /%s eksploderer.)" +msgid "" +"Usage: /%s , sends action to the current room. Use third person. (e." +"g. /%s explodes.)" +msgstr "" +"Bruksanvisning: /%s , sender handling til gjeldende rom. Bruk " +"tredje person. (f.eks. /%s eksploderer.)" -#: ../src/groupchat_control.py:1077 +#: ../src/groupchat_control.py:1243 #, python-format -msgid "Usage: /%s [message], opens a private message windowand sends message to the occupant specified by nickname." -msgstr "Bruk: /%s [melding], Ã¥pner et privat meldingsvindu og sender meldingen til brukeren spesifisert av kallenavn." +msgid "" +"Usage: /%s [message], opens a private message windowand sends " +"message to the occupant specified by nickname." +msgstr "" +"Bruk: /%s [melding], Ã¥pner et privat meldingsvindu og sender " +"meldingen til brukeren spesifisert av kallenavn." -#: ../src/groupchat_control.py:1082 +#: ../src/groupchat_control.py:1248 #, python-format msgid "Usage: /%s , changes your nickname in current room." -msgstr "Bruksanvisning: /%s , endrer kallenavnet ditt i gjeldende rom." +msgstr "" +"Bruksanvisning: /%s , endrer kallenavnet ditt i gjeldende rom." -#: ../src/groupchat_control.py:1086 +#: ../src/groupchat_control.py:1252 +#, fuzzy, python-format +msgid "Usage: /%s , display the names of room occupants." +msgstr "" +"Bruksanvisning: /%s [tittel], viser eller oppdaterer gjeldende rom tittel." + +#: ../src/groupchat_control.py:1256 #, python-format msgid "Usage: /%s [topic], displays or updates the current room topic." -msgstr "Bruksanvisning: /%s [tittel], viser eller oppdaterer gjeldende rom tittel." +msgstr "" +"Bruksanvisning: /%s [tittel], viser eller oppdaterer gjeldende rom tittel." -#: ../src/groupchat_control.py:1089 +#: ../src/groupchat_control.py:1259 #, python-format -msgid "Usage: /%s , sends a message without looking for other commands." -msgstr "Bruksanvisning: /%s , sender en melding uten Ã¥ se etter andre kommandoer." +msgid "" +"Usage: /%s , sends a message without looking for other commands." +msgstr "" +"Bruksanvisning: /%s , sender en melding uten Ã¥ se etter andre " +"kommandoer." -#: ../src/groupchat_control.py:1092 +#: ../src/groupchat_control.py:1262 #, python-format msgid "No help info for /%s" msgstr "Ingen hjelpe informasjon for /%s" -#: ../src/groupchat_control.py:1128 +#: ../src/groupchat_control.py:1304 #, python-format msgid "Are you sure you want to leave room \"%s\"?" msgstr "Er du sikker pÃ¥ at du vil gÃ¥ ut av rommet \"%s\"?" -#: ../src/groupchat_control.py:1129 +#: ../src/groupchat_control.py:1305 msgid "If you close this window, you will be disconnected from this room." msgstr "Dersom du lukker dette vinduet, sÃ¥ vil du bli koblet fra dette rommet." -#: ../src/groupchat_control.py:1133 +#: ../src/groupchat_control.py:1309 msgid "Do _not ask me again" msgstr "_Ikke spør meg igjen" -#: ../src/groupchat_control.py:1167 +#: ../src/groupchat_control.py:1343 msgid "Changing Subject" msgstr "Endrer Tittel" -#: ../src/groupchat_control.py:1168 +#: ../src/groupchat_control.py:1344 msgid "Please specify the new subject:" msgstr "Vennlist skriv inn ny tittel:" -#: ../src/groupchat_control.py:1176 +#: ../src/groupchat_control.py:1352 msgid "Changing Nickname" msgstr "Endrer Kallenavn" -#: ../src/groupchat_control.py:1177 +#: ../src/groupchat_control.py:1353 msgid "Please specify the new nickname you want to use:" msgstr "Vennlist skriv det nye kallenavnet du ønsker Ã¥ bruke:" -#: ../src/groupchat_control.py:1202 +#: ../src/groupchat_control.py:1379 msgid "Bookmark already set" msgstr "Bokmerke allerede satt" -#: ../src/groupchat_control.py:1203 +#: ../src/groupchat_control.py:1380 #, python-format msgid "Room \"%s\" is already in your bookmarks." msgstr "Rommet \"%s\" er allerede i dine bokmerker." -#: ../src/groupchat_control.py:1212 +#: ../src/groupchat_control.py:1389 msgid "Bookmark has been added successfully" msgstr "Bokmerke har blitt lagt til" -#: ../src/groupchat_control.py:1213 +#: ../src/groupchat_control.py:1390 msgid "You can manage your bookmarks via Actions menu in your roster." msgstr "Du kan behandle bokmerkene dine fra Handlinger menyen i kontaktlisten." #. ask for reason -#: ../src/groupchat_control.py:1322 +#: ../src/groupchat_control.py:1500 #, python-format msgid "Kicking %s" msgstr "Utkasting %s" -#: ../src/groupchat_control.py:1323 -#: ../src/groupchat_control.py:1568 +#: ../src/groupchat_control.py:1501 ../src/groupchat_control.py:1779 msgid "You may specify a reason below:" msgstr "Du kan spesifisere grunn under:" #. ask for reason -#: ../src/groupchat_control.py:1567 +#: ../src/groupchat_control.py:1778 #, python-format msgid "Banning %s" msgstr "Utvis %s" -#: ../src/gtkexcepthook.py:52 +#: ../src/gtkexcepthook.py:51 msgid "A programming error has been detected" msgstr "En programmerings feil har blitt detektert" -#: ../src/gtkexcepthook.py:53 -msgid "It probably is not fatal, but should be reported to the developers nonetheless." -msgstr "Det er sannynligvis ikke kritisk, men bør rapporteres til utviklerene likevel." +#: ../src/gtkexcepthook.py:52 +msgid "" +"It probably is not fatal, but should be reported to the developers " +"nonetheless." +msgstr "" +"Det er sannynligvis ikke kritisk, men bør rapporteres til utviklerene " +"likevel." -#: ../src/gtkexcepthook.py:59 +#: ../src/gtkexcepthook.py:58 msgid "_Report Bug" msgstr "_Rapporter Feil" -#: ../src/gtkexcepthook.py:82 +#: ../src/gtkexcepthook.py:81 msgid "Details" msgstr "Detaljer" -#. this always tracebacks -#: ../src/gtkgui.glade.h:1 -msgid "0" -msgstr "0" - -#: ../src/gtkgui.glade.h:2 -msgid "" -"Account is being created\n" -"\n" -"Please wait..." -msgstr "" -"Konto opprettes\n" -"\n" -"Vennligst vent..." - -#: ../src/gtkgui.glade.h:5 -msgid "Advanced Configuration Editor" -msgstr "Editering av Avanserte Instillinger" - -#: ../src/gtkgui.glade.h:6 -msgid "Applications" -msgstr "Applikasjoner" - -#: ../src/gtkgui.glade.h:7 -msgid "Chatstate Tab Colors" -msgstr "Samtalestatus Fane Farger" - -#. a header for custom browser/client/file manager. so translate sth like: Custom Settings -#: ../src/gtkgui.glade.h:9 -msgid "Custom" -msgstr "Egendefinert" - -#: ../src/gtkgui.glade.h:10 -msgid "Description" -msgstr "Beskrivelse" - -#: ../src/gtkgui.glade.h:11 -msgid "Format of a line" -msgstr "Utseende pÃ¥ en linje" - -#: ../src/gtkgui.glade.h:12 -msgid "Interface Customization" -msgstr "Grensenitt valg" - -#: ../src/gtkgui.glade.h:13 -msgid "Jabber Traffic" -msgstr "Jabber Trafikk" - -#: ../src/gtkgui.glade.h:14 -msgid "Miscellaneous" -msgstr "Diverse" - -#: ../src/gtkgui.glade.h:15 -msgid "NOTE: You should restart gajim for some setting to take effect" -msgstr "MERK: Du mÃ¥ starte gajim pÃ¥ nytt for Ã¥ aktivere noen instillinger" - -#: ../src/gtkgui.glade.h:16 -msgid "OpenPGP" -msgstr "OpenPGP" - -#: ../src/gtkgui.glade.h:17 -msgid "Personal Information" -msgstr "Personlig Informasjon" - -#: ../src/gtkgui.glade.h:18 -msgid "Please choose one of the options below:" -msgstr "Vennligst velg ett av valgene under:" - -#: ../src/gtkgui.glade.h:19 -msgid "Please fill in the data for your new account" -msgstr "Vennligst fyll in data for din nye konto" - -#: ../src/gtkgui.glade.h:20 -msgid "Preset Status Messages" -msgstr "Forvalgt Status Melding" - -#: ../src/gtkgui.glade.h:21 -msgid "Properties" -msgstr "Egenskaper" - -#: ../src/gtkgui.glade.h:22 -msgid "Settings" -msgstr "Instillinger" - -#: ../src/gtkgui.glade.h:23 -msgid "Sounds" -msgstr "Lyder" - -#: ../src/gtkgui.glade.h:24 -msgid "Type your new status message" -msgstr "Skriv inn din nye status melding:" - -#: ../src/gtkgui.glade.h:25 -msgid "Visual Notifications" -msgstr "Visuelle Alarmer" - -#: ../src/gtkgui.glade.h:26 -msgid "What do you want to do?" -msgstr "Hva ønsker du Ã¥ gjøre?" - -#: ../src/gtkgui.glade.h:27 -msgid "XML Input" -msgstr "XML Input" - -#: ../src/gtkgui.glade.h:28 -msgid "A list of active, completed and stopped file transfers" -msgstr "En liste over aktive, komplette og stoppede fil overføringer" - -#: ../src/gtkgui.glade.h:29 -msgid "A_ccounts" -msgstr "_Kontoer" - -#: ../src/gtkgui.glade.h:30 -msgid "A_fter nickname:" -msgstr "E_tter kallenavn:" - -#. "About" is the text of a tab of vcard window -#: ../src/gtkgui.glade.h:32 -msgid "About" -msgstr "Om" - -#: ../src/gtkgui.glade.h:33 -msgid "Accept" -msgstr "Godkjenn" - -#: ../src/gtkgui.glade.h:34 -msgid "Account" -msgstr "Konto" - -#: ../src/gtkgui.glade.h:35 -msgid "" -"Account\n" -"Group\n" -"Contact\n" -"Banner" -msgstr "" -"Konto\n" -"Gruppe\n" -"Kontakt\n" -"Fane" - -#: ../src/gtkgui.glade.h:39 -msgid "Account Modification" -msgstr "Konto Endring" - -#: ../src/gtkgui.glade.h:40 -msgid "Accounts" -msgstr "Kontoer" - -#: ../src/gtkgui.glade.h:42 -msgid "Add New Contact" -msgstr "Legg til ny Kontakt" - -#: ../src/gtkgui.glade.h:43 -msgid "Add Special _Notification" -msgstr "Legg til Spesiell _Alarm" - -#: ../src/gtkgui.glade.h:44 -msgid "Add _Contact" -msgstr "Ny _Kontakt" - -#: ../src/gtkgui.glade.h:45 -msgid "Address" -msgstr "Adresse" - -#: ../src/gtkgui.glade.h:46 -msgid "Advanced" -msgstr "Avansert" - -#: ../src/gtkgui.glade.h:47 -msgid "Advanced Configuration Editor" -msgstr "Avansert Konfigurasjons Editor" - -#: ../src/gtkgui.glade.h:48 -msgid "" -"All chat states\n" -"Composing only\n" -"Disabled" -msgstr "" -"Alle samtale statuser \n" -"Bare komponering \n" -"Deaktivert" - -#: ../src/gtkgui.glade.h:51 -msgid "Allow _OS information to be sent" -msgstr "Tillat _OS informasjon Ã¥ bli sendt" - -#: ../src/gtkgui.glade.h:52 -msgid "Allow him/her to see my status" -msgstr "Tillat han/henne Ã¥ se min status" - -#: ../src/gtkgui.glade.h:53 -msgid "Allow popup/notifications when I'm _away/na/busy/invisible" -msgstr "Tillat sprettopp/melding nÃ¥r jeg er _borte/ikke tilgjengelig/opptatt/usynlig" - -#: ../src/gtkgui.glade.h:54 -msgid "Also known as iChat style" -msgstr "OgsÃ¥ kjent som iChat stil" - -#: ../src/gtkgui.glade.h:55 -msgid "Ask status message when I:" -msgstr "Spør etter status melding nÃ¥r jeg:" - -#: ../src/gtkgui.glade.h:56 -msgid "Ask to see his/her status" -msgstr "Forespør hans/hennes status" - -#: ../src/gtkgui.glade.h:57 -msgid "Ask:" -msgstr "Spør:" - -#: ../src/gtkgui.glade.h:58 -msgid "Assign Open_PGP Key" -msgstr "Tilegn Open_PGP Nøkkel" - -#: ../src/gtkgui.glade.h:59 -msgid "Authorize contact so he can know when you're connected" -msgstr "Godkjenn kontakt sÃ¥ han kan vite nÃ¥r du er tilkoblet" - -#: ../src/gtkgui.glade.h:60 -msgid "Auto _away after:" -msgstr "Auto _borte etter:" - -#: ../src/gtkgui.glade.h:61 -msgid "Auto _not available after:" -msgstr "Auto _ikke tilgjengelig etter:" - -#: ../src/gtkgui.glade.h:62 -msgid "Auto join" -msgstr "Auto bli med" - -#: ../src/gtkgui.glade.h:63 -msgid "" -"Autodetect on every Gajim startup\n" -"Always use GNOME default applications\n" -"Always use KDE default applications\n" -"Custom" -msgstr "" -"Autodetekter hver gang Gajim starter\n" -"Alltid bruk GNOME standard applikasjoner\n" -"Alltid bruk KDE standard applikasjoner\n" -"Egendefinert" - -#: ../src/gtkgui.glade.h:67 -msgid "Automatically authorize contact" -msgstr "Automatisk godkjenn kontakt" - -#: ../src/gtkgui.glade.h:68 -msgid "Autoreconnect when connection is lost" -msgstr "Koble til pÃ¥ nytt automatisk nÃ¥r kontakten mistes" - -#: ../src/gtkgui.glade.h:69 -msgid "B_efore nickname:" -msgstr "F_ør kallenavn:" - -#: ../src/gtkgui.glade.h:70 -msgid "Birthday:" -msgstr "Fødselsdag:" - -#: ../src/gtkgui.glade.h:71 -msgid "Bold" -msgstr "Fet" - -#: ../src/gtkgui.glade.h:72 -msgid "Build custom query" -msgstr "Lag din egen spørring" - -#: ../src/gtkgui.glade.h:73 -msgid "C_onnect on Gajim startup" -msgstr "K_oble til nÃ¥r Gajim starter" - -#: ../src/gtkgui.glade.h:74 -msgid "Cancel file transfer" -msgstr "Avbryt filoverføring" - -#: ../src/gtkgui.glade.h:75 -msgid "Cancels the selected file transfer" -msgstr "Avbryter valgte filoverføring" - -#: ../src/gtkgui.glade.h:76 -msgid "Cancels the selected file transfer and removes incomplete file" -msgstr "Avbryter valgte filoverføring og fjerner den uferdige filen" - -#: ../src/gtkgui.glade.h:77 -msgid "Chan_ge Password" -msgstr "En_dre Passord" - -#: ../src/gtkgui.glade.h:78 -msgid "Change Password" -msgstr "Endre Passord" - -#: ../src/gtkgui.glade.h:79 -msgid "Change _Nickname" -msgstr "Endre _Kallenavn" - -#: ../src/gtkgui.glade.h:80 -msgid "Change _Subject" -msgstr "Endre _Tema" - -#: ../src/gtkgui.glade.h:82 -msgid "Chat state noti_fications:" -msgstr "Samtale status opp_lysninger:" - -#: ../src/gtkgui.glade.h:83 -msgid "Check this option, only if someone you don't have in the roster spams/annoys you. Use with caution, cause it blocks all messages from any contact that is not in the roster" -msgstr "Velg dette valget bare dersom noen i kontaktlisten spammer/irriterer deg. Bruk med varsomhet, fordi det blokkerer alle meldinger fra lle kontakter som ikke er i kontaktlisten" - -#: ../src/gtkgui.glade.h:84 -msgid "Check this so Gajim will connect in port 5223 where legacy servers are expected to have SSL capabilities. Note that Gajim uses TLS encryption by default if broadcasted by the server, and with this option enabled TLS will be disabled" -msgstr "Velg denne slik at Gajim vil prøve Ã¥ koble til port 5223 som gamle servere forventes Ã¥ ha SSL muligheter. Merk at Gajim bruker TLS kryptering som standard dersom dette tilbys av servere, og med dette valget blir TLS deaktivert." - -#: ../src/gtkgui.glade.h:85 -msgid "Choose _Key..." -msgstr "Velg _Nøkkel..." - -#: ../src/gtkgui.glade.h:86 -msgid "City:" -msgstr "By:" - -#: ../src/gtkgui.glade.h:87 -msgid "Clean _up" -msgstr "Rydd _opp" - -#: ../src/gtkgui.glade.h:88 -msgid "Click to change account's password" -msgstr "Klikk for Ã¥ forandre kontoens passord" - -#: ../src/gtkgui.glade.h:89 -msgid "Click to insert an emoticon (Alt+M)" -msgstr "Klikk for Ã¥ sette inn et uttrykksikon (Alt+M)" - -#: ../src/gtkgui.glade.h:90 -msgid "Click to see features (like MSN, ICQ transports) of jabber servers" -msgstr "Klikk for Ã¥ se tjenester (som MSN og ICQ transporter) pÃ¥ jabber serveren" - -#: ../src/gtkgui.glade.h:91 -msgid "Click to see past conversation in this room" -msgstr "Klikk for Ã¥ se tidligere samtaler i dette rommet" - -#: ../src/gtkgui.glade.h:92 -msgid "Click to see past conversations with this contact" -msgstr "Klikk for Ã¥ se tidligere samtaler med denne kontakten" - -#: ../src/gtkgui.glade.h:93 -msgid "Client:" -msgstr "Klient:" - -#: ../src/gtkgui.glade.h:94 -msgid "Company:" -msgstr "Bedrift:" - -#: ../src/gtkgui.glade.h:95 -msgid "Composing" -msgstr "Skriver" - -#: ../src/gtkgui.glade.h:96 -msgid "Configure _Room" -msgstr "Konfigurer _Rom" - -#: ../src/gtkgui.glade.h:97 -msgid "Connect when I press Finish" -msgstr "Koble til nÃ¥r jeg klikker Ferdig" - -#: ../src/gtkgui.glade.h:98 -msgid "Connection" -msgstr "Tilkobling" - -#: ../src/gtkgui.glade.h:99 -msgid "Contact Information" -msgstr "Kontaktinformasjon" - -#: ../src/gtkgui.glade.h:100 -msgid "Contact _Info" -msgstr "Kontakt_Info" - -#: ../src/gtkgui.glade.h:101 -msgid "Conversation History" -msgstr "Samtale Historikk" - -#: ../src/gtkgui.glade.h:102 -msgid "Country:" -msgstr "Land:" - -#: ../src/gtkgui.glade.h:103 -msgid "Default status _iconset:" -msgstr "Standard status _ikonsamling:" - -#: ../src/gtkgui.glade.h:104 -msgid "Delete MOTD" -msgstr "Slett MFD (MOTD)" - -#: ../src/gtkgui.glade.h:105 -msgid "Deletes Message of the Day" -msgstr "Sletter Meling for Dagen" - -#: ../src/gtkgui.glade.h:106 -msgid "Deny" -msgstr "Nekt" - -#: ../src/gtkgui.glade.h:107 -msgid "Deny authorization from contact so he cannot know when you're connected" -msgstr "AvslÃ¥ godkjenning fra kontakt sÃ¥ han ikke kan se nÃ¥r du er tilkoblet" - -#: ../src/gtkgui.glade.h:108 -msgid "Department:" -msgstr "Avdeling:" - -#: ../src/gtkgui.glade.h:109 -msgid "Display a_vatars of contacts in roster" -msgstr "Viser _kontaktikoner for kontakter i kontaktlisten" - -#: ../src/gtkgui.glade.h:110 -msgid "Display status _messages of contacts in roster" -msgstr "Viser status _meldinger for kontakter i kontaktlisten" - -#: ../src/gtkgui.glade.h:111 -msgid "E-Mail:" -msgstr "E-Post:" - -#: ../src/gtkgui.glade.h:112 -msgid "E_very 5 minutes" -msgstr "H_vert 5 minutt" - -#: ../src/gtkgui.glade.h:113 -msgid "Edit Groups" -msgstr "Rediger Grupper" - -#: ../src/gtkgui.glade.h:114 -msgid "Edit Personal Information..." -msgstr "Rediger Personlig Informasjon..." - -#: ../src/gtkgui.glade.h:115 -msgid "Edit _Groups" -msgstr "Rediger _Grupper" - -#: ../src/gtkgui.glade.h:116 -msgid "Emoticons:" -msgstr "Uttrykksikoner:" - -#. XML Console enable checkbutton -#: ../src/gtkgui.glade.h:118 -msgid "Enable" -msgstr "SlÃ¥ pÃ¥" - -#: ../src/gtkgui.glade.h:119 -msgid "Enter it again for confirmation:" -msgstr "Skriv inn en gang til for verifisering:" - -#: ../src/gtkgui.glade.h:120 -msgid "Enter new password:" -msgstr "Skriv inn nytt passord:" - -#: ../src/gtkgui.glade.h:121 -msgid "Events" -msgstr "Hendelser" - -#: ../src/gtkgui.glade.h:122 -msgid "Extra Address:" -msgstr "Ekstra Adresse:" - -#. Family Name -#: ../src/gtkgui.glade.h:124 -msgid "Family:" -msgstr "Etternavn:" - -#: ../src/gtkgui.glade.h:125 -msgid "File Transfers" -msgstr "Fil Overføringer" - -#: ../src/gtkgui.glade.h:126 -msgid "File _Transfers" -msgstr "Fil _Overføringer" - -#: ../src/gtkgui.glade.h:127 -msgid "Filter:" -msgstr "Filter:" - -#: ../src/gtkgui.glade.h:128 -msgid "Font style:" -msgstr "Font stil:" - -#: ../src/gtkgui.glade.h:129 -msgid "Forbid him/her to see my status" -msgstr "Forby han/henne Ã¥ se min status" - -#: ../src/gtkgui.glade.h:130 -msgid "Format: YYYY-MM-DD" -msgstr "Format: YYYY-MM-DD" - -#: ../src/gtkgui.glade.h:131 -msgid "Frequently Asked Questions (online)" -msgstr "Ofte Stilte SpørsmÃ¥l (online)" - -#: ../src/gtkgui.glade.h:132 -msgid "From:" -msgstr "Fra:" - -#: ../src/gtkgui.glade.h:133 -msgid "G_o" -msgstr "G_Ã¥" - -#: ../src/gtkgui.glade.h:134 -#: ../src/notify.py:167 -#: ../src/notify.py:189 -#: ../src/notify.py:201 -#: ../src/tooltips.py:339 -msgid "Gajim" -msgstr "Gajim" - -#: ../src/gtkgui.glade.h:135 -msgid "Gajim Themes Customization" -msgstr "Gajim Tema Valg" - -#: ../src/gtkgui.glade.h:136 -msgid "Gajim can send and receive meta-information related to a conversation you may have with a contact. Here you can specify which chatstates you want to send to the other party." -msgstr "Gajim kan sende og motta meta-informasjon relatert til en samtale du kan ha med en kontakt. Her kan du spesifisere hvilke samtalestatuser du ønsker Ã¥ sende motparten." - -#: ../src/gtkgui.glade.h:137 -msgid "Gajim will automatically show new events by poping up the relative window" -msgstr "Gajim vil autmatisk vise deg den nye hendelser ved Ã¥ sprette opp det relative vinduet" - -#: ../src/gtkgui.glade.h:138 -msgid "Gajim will notify you for new events via a popup in the bottom right of the screen" -msgstr "Gajim vil alarmere deg med sprett-opp vindu i bunnen til høyre pÃ¥ skjermen" - -#: ../src/gtkgui.glade.h:139 -msgid "Gajim will notify you via a popup window in the bottom right of the screen about contacts that just signed in" -msgstr "Gajim vil alarmere deg med sprett-opp vindu i bunnen til høyre pÃ¥ skjermen om at en kontakt har akkurat logget inn" - -#: ../src/gtkgui.glade.h:140 -msgid "Gajim will notify you via a popup window in the bottom right of the screen about contacts that just signed out" -msgstr "Gajim vil alarmere deg med sprett-opp vindu i bunnen til høyre pÃ¥ skjermen om at en kontakt har akkurat logget ut" - -#: ../src/gtkgui.glade.h:141 -msgid "Gajim will only change the icon of the contact that triggered the new event" -msgstr "Gajim vil bare endre ikonet til kontakten som har sendt den nye hendelsen" - -#: ../src/gtkgui.glade.h:142 -msgid "Gajim: Account Creation Wizard" -msgstr "Gajim: Konto Opprettings Veiviser" - -#. user has no group, print him in General -#: ../src/gtkgui.glade.h:143 -#: ../src/roster_window.py:291 -#: ../src/roster_window.py:1183 -#: ../src/roster_window.py:1405 -#: ../src/systray.py:286 -msgid "General" -msgstr "Generelle" - -#. Given Name -#: ../src/gtkgui.glade.h:145 -msgid "Given:" -msgstr "Fornavn:" - -#: ../src/gtkgui.glade.h:146 -msgid "Gone" -msgstr "Borte" - -#: ../src/gtkgui.glade.h:147 -msgid "Group:" -msgstr "Gruppe:" - -#: ../src/gtkgui.glade.h:148 -msgid "HTTP Connect" -msgstr "HTTP Connect" - -#: ../src/gtkgui.glade.h:149 -msgid "Help online" -msgstr "Hjelp online" - -#: ../src/gtkgui.glade.h:150 -msgid "Hides the window" -msgstr "Lukker vinduet" - -#: ../src/gtkgui.glade.h:151 -msgid "Homepage:" -msgstr "Hjemmeside:" - -#: ../src/gtkgui.glade.h:152 -msgid "Hostname: " -msgstr "Maskinnavn:" - -#: ../src/gtkgui.glade.h:153 -msgid "I already have an account I want to use" -msgstr "Jeg har allerede en konto jeg ønsker Ã¥ bruke" - -#: ../src/gtkgui.glade.h:154 -msgid "I want to _register for a new account" -msgstr "Jeg ønsker Ã¥ _registrere en ny konto" - -#: ../src/gtkgui.glade.h:155 -msgid "I would like to add you to my contact list." -msgstr "Jeg vil legge deg til min kontaktliste." - -#: ../src/gtkgui.glade.h:156 -msgid "If checked, Gajim will also broadcast some more IPs except from just your IP, so file transfer has higher chances of working right." -msgstr "Dersom valgt vil Gajim sende ut flere IPer utover din IP sÃ¥ filoverføringen har større mulighet for Ã¥ fungere. " - -#: ../src/gtkgui.glade.h:157 -msgid "If checked, Gajim will display avatars of contacts in roster window and in group chats" -msgstr "Dersom valgt vil Gajim vise ikonbilder for kontakter i kontaktliste vinduet og i gruppesamtaler" - -#: ../src/gtkgui.glade.h:158 -msgid "If checked, Gajim will display status messages of contacts under the contact name in roster window and in group chats" -msgstr "Dersom valg vil Gajim vise status melding til kontakter under kontakt navnet i kontaktliste vinduet og i gruppesamtaler" - -#: ../src/gtkgui.glade.h:159 -msgid "If checked, Gajim will join this group chat on startup" -msgstr "Dersom valgt vil Gajim automatisk gÃ¥ inn i gruppesamtalen ved oppstart" - -#: ../src/gtkgui.glade.h:160 -msgid "If checked, Gajim will remember the password for this account" -msgstr "Dersom valgt vil Gajim huske passordet for kontoen" - -#: ../src/gtkgui.glade.h:161 -msgid "If checked, Gajim will remember the roster and chat window positions in the screen and the sizes of them next time you run it" -msgstr "Dersom valgt vil Gajim huske kontaktliste og samtalevindu posisjoner pÃ¥ skjermen, samt størrelsen pÃ¥ de til neste gang du Ã¥pner de" - -#: ../src/gtkgui.glade.h:162 -msgid "If checked, Gajim will send keep-alive packets so it prevents connection timeout which results in disconnection" -msgstr "Dersom valgt vil Gajim sende hold-i-live pakker sÃ¥ man ikke fÃ¥r en frakobling pÃ¥ grunn av inaktivitet" - -#: ../src/gtkgui.glade.h:163 -msgid "If checked, Gajim will store the password in ~/.gajim/config with 'read' permission only for you" -msgstr "Dersom valgt vil Gajim lagre passord i ~/.gajim/config med 'les' rettighet bare for deg" - -#: ../src/gtkgui.glade.h:164 -msgid "If checked, Gajim will use protocol-specific status icons. (eg. A contact from MSN will have the equivalent msn icon for status online, away, busy, etc...)" -msgstr "Dersom valgt vil Gajim bruke protkoll-spesifikke ikoner. (En kontakt fra MSN vil ha msn ikoner for status pÃ¥logget, borte, opptatt, osv...)" - -#: ../src/gtkgui.glade.h:165 -msgid "If checked, Gajim, when launched, will automatically connect to jabber using this account" -msgstr "Dersom valgt, vil Gajim automatisk koble seg til jabber med denne kontoen ved oppstart" - -#: ../src/gtkgui.glade.h:166 -msgid "If checked, any change to the global status (handled by the combobox at the bottom of the roster window) will change the status of this account accordingly" -msgstr "Dersom valgt vil endringer til global status (hÃ¥ndtert av kombomenyen nederst i kontaktvinduet) endre status pÃ¥ denne kontoen. " - -#: ../src/gtkgui.glade.h:167 -msgid "If not disabled, Gajim will replace ascii smilies like ':)' with equivalent animated or static graphical emoticons" -msgstr "Dersom ikke deaktiver, vil Gajim bytte ut ascii smil som ':)' med animerte eller statiske grafiske uttrykksikoner" - -#: ../src/gtkgui.glade.h:168 -msgid "If you have 2 or more accounts and it is checked, Gajim will list all contacts as if you had one account" -msgstr "Dersom du har 2 eller flere kontoer og denne er valgt, vil Gajim liste alle kontakter som om du hadde en konto" - -#: ../src/gtkgui.glade.h:169 -msgid "Inactive" -msgstr "Inaktiv" - -#. Info/Query make the "IQ" initials. So translate like this 'YourLang/YourLang (Info/Query)'. Thanks (it's a tooltip so width is not a problem) -#: ../src/gtkgui.glade.h:171 -msgid "Info/Query" -msgstr "Informasjon/Spørring" - -#: ../src/gtkgui.glade.h:172 -msgid "Information about you, as stored in the server" -msgstr "Informasjon om deg, slik som den er lagret pÃ¥ serveren" - -#: ../src/gtkgui.glade.h:173 -msgid "Invitation Received" -msgstr "Invitasjon motatt" - -#: ../src/gtkgui.glade.h:174 -msgid "Italic" -msgstr "Kursiv" - -#: ../src/gtkgui.glade.h:175 -msgid "Jabber" -msgstr "Jabber" - -#: ../src/gtkgui.glade.h:176 -msgid "Jabber ID:" -msgstr "Jabber ID:" - -#: ../src/gtkgui.glade.h:178 -msgid "Join _Group Chat" -msgstr "Bli med i _Gruppe Samtale" - -#: ../src/gtkgui.glade.h:179 -msgid "Location" -msgstr "Plassering" - -#: ../src/gtkgui.glade.h:180 -msgid "" -"MUC\n" -"Messages" -msgstr "" -"MUC\n" -"Meldinger" - -#: ../src/gtkgui.glade.h:182 -msgid "" -"MUC Directed\n" -"Messages" -msgstr "" -"MUC Sendte\n" -"Meldinger" - -#: ../src/gtkgui.glade.h:184 -msgid "Ma_nage..." -msgstr "Be_handle..." - -#: ../src/gtkgui.glade.h:185 -msgid "Manage Accounts" -msgstr "Behandle Kontoer" - -#: ../src/gtkgui.glade.h:186 -msgid "Manage Bookmarks" -msgstr "Behandle Bokmerker" - -#: ../src/gtkgui.glade.h:187 -msgid "Manage Proxy Profiles" -msgstr "Behandle Proxy Profiler" - -#: ../src/gtkgui.glade.h:188 -msgid "Manage..." -msgstr "Behandle..." - -#. Middle Name -#: ../src/gtkgui.glade.h:190 -msgid "Middle:" -msgstr "Mellomnavn:" - -#: ../src/gtkgui.glade.h:191 -msgid "Mo_derator" -msgstr "M_odererer" - -#: ../src/gtkgui.glade.h:192 -msgid "More" -msgstr "Mer" - -#: ../src/gtkgui.glade.h:193 -msgid "Name:" -msgstr "Navn:" - -#: ../src/gtkgui.glade.h:194 -msgid "" -"Never\n" -"Always\n" -"Per account\n" -"Per type" -msgstr "" -"Aldri\n" -"Alltid\n" -"Per konto\n" -"Per type" - -#: ../src/gtkgui.glade.h:198 -msgid "Nickname:" -msgstr "Kallenavn:" - -#. None means no proxy profile selected -#: ../src/gtkgui.glade.h:201 -msgid "None" -msgstr "Ingen" - -#: ../src/gtkgui.glade.h:202 -msgid "Notify me about contacts that: " -msgstr "Alarmer meg om kontakter som:" - -#: ../src/gtkgui.glade.h:203 -msgid "Notify on new _Gmail e-mail" -msgstr "Alarmer meg on nye _Gmail e-post" - -#: ../src/gtkgui.glade.h:204 -msgid "OS:" -msgstr "OS:" - -#: ../src/gtkgui.glade.h:205 -msgid "On every _message" -msgstr "PÃ¥ hver _melding" - -#: ../src/gtkgui.glade.h:206 -msgid "One message _window:" -msgstr "En melding _vindu:" - -#: ../src/gtkgui.glade.h:208 -msgid "Pass_word:" -msgstr "Pass_ord:" - -#: ../src/gtkgui.glade.h:209 -msgid "Passphrase" -msgstr "Passord setning" - -#: ../src/gtkgui.glade.h:210 -msgid "Password:" -msgstr "Passord:" - -#: ../src/gtkgui.glade.h:211 -#: ../src/tooltips.py:645 -msgid "Paused" -msgstr "Pauset" - -#: ../src/gtkgui.glade.h:212 -msgid "Personal Information" -msgstr "Personlig Informasjon" - -#: ../src/gtkgui.glade.h:213 -msgid "Phone No.:" -msgstr "Telefon Nummer:" - -#: ../src/gtkgui.glade.h:214 -msgid "Play _sounds" -msgstr "Spill av _lyder" - -#: ../src/gtkgui.glade.h:215 -msgid "Port: " -msgstr "Port:" - -#: ../src/gtkgui.glade.h:216 -msgid "Position:" -msgstr "Plassering:" - -#: ../src/gtkgui.glade.h:217 -msgid "Postal Code:" -msgstr "Post Kode:" - -#: ../src/gtkgui.glade.h:218 -msgid "Preferences" -msgstr "Tilstedeværelse" - -#. Prefix in Name -#: ../src/gtkgui.glade.h:220 -msgid "Prefix:" -msgstr "Tittel:" - -#: ../src/gtkgui.glade.h:221 -msgid "Preset messages:" -msgstr "Forvalgte meldinger:" - -#: ../src/gtkgui.glade.h:222 -msgid "Print time:" -msgstr "Utskrifts tid:" - -#: ../src/gtkgui.glade.h:223 -msgid "Priori_ty:" -msgstr "Priorit_et:" - -#: ../src/gtkgui.glade.h:224 -msgid "Priority is used in Jabber to determine who gets the events from the jabber server when two or more clients are connected using the same account; The client with the highest priority gets the events" -msgstr "Prioritet brukes av Jabber for Ã¥ finne ut hvem som skal fÃ¥ hendelser fra jabber serveren nÃ¥r to eller flere klienter er tilkoblet med samme konto. Klienten med den høyeste prioriteten vil fÃ¥ hendelsen" - -#: ../src/gtkgui.glade.h:225 -msgid "Profile, Avatar" -msgstr "Profil, Bilde" - -#: ../src/gtkgui.glade.h:226 -msgid "Protocol:" -msgstr "Protokoll:" - -#: ../src/gtkgui.glade.h:227 -msgid "Proxy:" -msgstr "Proxy:" - -#: ../src/gtkgui.glade.h:228 -msgid "Query Builder..." -msgstr "Spørrings Bygger..." - -#: ../src/gtkgui.glade.h:229 -msgid "Recently:" -msgstr "Nylig:" - -#: ../src/gtkgui.glade.h:230 -msgid "Register to" -msgstr "Registrer til:" - -#: ../src/gtkgui.glade.h:231 -msgid "Remove account _only from Gajim" -msgstr "Fjern kontoe _bare fra Gajim" - -#: ../src/gtkgui.glade.h:232 -msgid "Remove account from Gajim and from _server" -msgstr "Fjern konto fra Gajim og fra _serveren" - -#: ../src/gtkgui.glade.h:233 -msgid "Remove file transfer from the list." -msgstr "Fjern filoverføringen fra listen" - -#: ../src/gtkgui.glade.h:234 -msgid "Removes completed, canceled and failed file transfers from the list" -msgstr "Fjerner komplette, avbrutte og feilede filoverføringer fra listen" - -#: ../src/gtkgui.glade.h:235 -msgid "Reply to this message" -msgstr "Svar pÃ¥ denne meldingen" - -#: ../src/gtkgui.glade.h:236 -msgid "Resour_ce: " -msgstr "Ressu_rs:" - -#: ../src/gtkgui.glade.h:237 -msgid "Resource is sent to the Jabber server in order to separate the same JID in two or more parts depending on the number of the clients connected in the same server with the same account. So you might be connected in the same account with resource 'Home' and 'Work' at the same time. The resource which has the highest priority will get the events. (see below)" -msgstr "Ressurs navnet blir sendt til Jabber serveren for Ã¥ separere JID'en din i to eller flere deler alt etter hvor mange ganger du er tilkoblet til serveren (samtidig). Dette gjør at du kan være tilkoblet med samme konto med ressurs navn 'Hjeme' og 'Jobb' pÃ¥ samme tid. Ressursen med høyest prioritet vil fÃ¥ hendelsene. (se under)" - -#: ../src/gtkgui.glade.h:238 -msgid "Resource:" -msgstr "Ressurs:" - -#: ../src/gtkgui.glade.h:239 -msgid "Role:" -msgstr "Rolle:" - -#: ../src/gtkgui.glade.h:240 -msgid "Room Configuration" -msgstr "Rom Instillinger" - -#: ../src/gtkgui.glade.h:241 -msgid "Room:" -msgstr "Rom:" - -#: ../src/gtkgui.glade.h:242 -msgid "Save _passphrase (insecure)" -msgstr "Lagre _passord setning (usikkert)" - -#: ../src/gtkgui.glade.h:243 -msgid "Save _position and size for roster and chat windows" -msgstr "Lagre _posisjon og størrelse for kontaktliste og samtalevinduer" - -#: ../src/gtkgui.glade.h:244 -msgid "Save as Preset..." -msgstr "Lagre som Forvalg..." - -#: ../src/gtkgui.glade.h:245 -msgid "Save conversation _logs for all contacts" -msgstr "Lagre samtale _logger for alle kontakter" - -#: ../src/gtkgui.glade.h:246 -msgid "Save pass_word" -msgstr "Lagre pass_ord" - -#: ../src/gtkgui.glade.h:247 -msgid "Search" -msgstr "Søk" - -#: ../src/gtkgui.glade.h:248 -msgid "Sen_d" -msgstr "Sen_d" - -#: ../src/gtkgui.glade.h:249 -msgid "Send File" -msgstr "Send Fil" - -#: ../src/gtkgui.glade.h:250 -msgid "Send Single _Message" -msgstr "Send _Melding" - -#: ../src/gtkgui.glade.h:251 -msgid "Send Single _Message..." -msgstr "Send Enkel _Melding..." - -#: ../src/gtkgui.glade.h:252 -msgid "Send _File" -msgstr "Send _Fil" - -#: ../src/gtkgui.glade.h:253 -msgid "Send keep-alive packets" -msgstr "Send hold-i-live meldinger" - -#: ../src/gtkgui.glade.h:254 -msgid "Send message" -msgstr "Send melding" - -#: ../src/gtkgui.glade.h:255 -msgid "Send message and close window" -msgstr "Send melding og lukk vinduet" - -#: ../src/gtkgui.glade.h:256 -msgid "Sends a message to currently connected users to this server" -msgstr "Sender en melding til tilkoblede brukere pÃ¥ denne serveren" - -#: ../src/gtkgui.glade.h:257 -msgid "Server:" -msgstr "Server:" - -#: ../src/gtkgui.glade.h:258 -msgid "Servers Features" -msgstr "Server Funksjonalitet" - -#: ../src/gtkgui.glade.h:259 -msgid "Set MOTD" -msgstr "Velg MFD (MOTD)" - -#: ../src/gtkgui.glade.h:260 -msgid "Set _Avatar" -msgstr "Velg _Avatar" - -#: ../src/gtkgui.glade.h:261 -msgid "Set my profile when I connect" -msgstr "Klargjør profilen min nÃ¥r jeg kobler til" - -#: ../src/gtkgui.glade.h:262 -msgid "Sets Message of the Day" -msgstr "Setter Melding for Dagen" - -#: ../src/gtkgui.glade.h:263 -msgid "Show All Pending _Events" -msgstr "Vis Alle _Handlinger som Venter" - -#: ../src/gtkgui.glade.h:264 -msgid "Show _Offline Contacts" -msgstr "Vis _Frakoblede Kontakter" - -#: ../src/gtkgui.glade.h:265 -msgid "Show _Roster" -msgstr "Vis _Kontaktliste" - -#: ../src/gtkgui.glade.h:266 -msgid "Show _XML Console" -msgstr "Vis _XML Konsoll" - -#: ../src/gtkgui.glade.h:267 -msgid "Show only in _roster" -msgstr "Vis bare i _kontaktliste" - -#: ../src/gtkgui.glade.h:268 -msgid "Shows a list of file transfers between you and other" -msgstr "Viser en liste over overføringer mellom deg og andre" - -#: ../src/gtkgui.glade.h:269 -msgid "Sign _in" -msgstr "Logger _inn" - -#: ../src/gtkgui.glade.h:270 -msgid "Sign _out" -msgstr "Logger _ut" - -#: ../src/gtkgui.glade.h:271 -msgid "Sta_tus" -msgstr "Sta_tus" - -#: ../src/gtkgui.glade.h:272 -msgid "Start _Chat" -msgstr "Start _Samtale" - -#: ../src/gtkgui.glade.h:273 -msgid "State:" -msgstr "Fylke:" - -#: ../src/gtkgui.glade.h:274 -msgid "Status" -msgstr "Status" - -#: ../src/gtkgui.glade.h:275 -msgid "Status:" -msgstr "Status:" - -#: ../src/gtkgui.glade.h:276 -msgid "Street:" -msgstr "Gate:" - -#: ../src/gtkgui.glade.h:277 -msgid "Subject:" -msgstr "Tema:" - -#: ../src/gtkgui.glade.h:278 -msgid "Subscription Request" -msgstr "Abbonerings Forespørsel" - -#: ../src/gtkgui.glade.h:279 -msgid "Subscription:" -msgstr "Abbonement:" - -#. Suffix in Name -#: ../src/gtkgui.glade.h:281 -msgid "Suffix:" -msgstr "Suffix:" - -#: ../src/gtkgui.glade.h:282 -msgid "Synch_ronize account status with global status" -msgstr "Synk_roniser konto status med global status" - -#: ../src/gtkgui.glade.h:283 -msgid "T_heme:" -msgstr "T_ema:" - -#: ../src/gtkgui.glade.h:284 -msgid "Text _color:" -msgstr "Tekst _farge:" - -#: ../src/gtkgui.glade.h:285 -msgid "Text _font:" -msgstr "Tekst _font:" - -#: ../src/gtkgui.glade.h:286 -msgid "The auto away status message" -msgstr "Den automatiserte borte meldinen" - -#: ../src/gtkgui.glade.h:287 -msgid "The auto not available status message" -msgstr "Den autmatiserte ikke tilgjengelig meldingen" - -#: ../src/gtkgui.glade.h:288 -msgid "This action removes single file transfer from the list. If the transfer is active, it is first stopped and then removed" -msgstr "Dette valget fjerner en filoverføring fra listen. Dersom den er aktiv vil den først bli stoppet og sÃ¥ fjernet." - -#: ../src/gtkgui.glade.h:289 -msgid "Title:" -msgstr "Tittel:" - -#: ../src/gtkgui.glade.h:290 -msgid "To:" -msgstr "Til:" - -#: ../src/gtkgui.glade.h:291 -msgid "Toggle Open_PGP Encryption" -msgstr "Endre Open_PGP Kryptering" - -#: ../src/gtkgui.glade.h:292 -msgid "Type:" -msgstr "Skriv:" - -#: ../src/gtkgui.glade.h:293 -msgid "Underline" -msgstr "Strek Under" - -#: ../src/gtkgui.glade.h:294 -msgid "Update MOTD" -msgstr "Oppdater MFD (MOTD)" - -#: ../src/gtkgui.glade.h:295 -msgid "Updates Message of the Day" -msgstr "Uppdaterer Melding for Dagen" - -#: ../src/gtkgui.glade.h:296 -msgid "Use _SSL (legacy)" -msgstr "Bruk _SSL (gammel)" - -#: ../src/gtkgui.glade.h:297 -msgid "Use _transports iconsets" -msgstr "Bruk _transportenes ikoner" - -#: ../src/gtkgui.glade.h:298 -msgid "Use authentication" -msgstr "Bruk autentisering" - -#: ../src/gtkgui.glade.h:299 -msgid "Use custom hostname/port" -msgstr "Bruk egendefinert maskinnavn/port" - -#: ../src/gtkgui.glade.h:300 -msgid "Use file transfer proxies" -msgstr "Bruk filoverførings proxier" - -#: ../src/gtkgui.glade.h:301 -msgid "Use t_rayicon (aka. notification area icon)" -msgstr "Bruk Ikon i s_ystemstatusfelt (ogsÃ¥ kjent som systray)" - -#: ../src/gtkgui.glade.h:302 -msgid "User ID:" -msgstr "Bruker ID:" - -#: ../src/gtkgui.glade.h:303 -msgid "When a file transfer is complete show a popup notification" -msgstr "NÃ¥r en fil overføring er komplett vis en sprettopp informasjon" - -#: ../src/gtkgui.glade.h:304 -msgid "When a new event (message, file transfer request etc..) is received, the following methods may be used to inform you about it. Please note that events about new messages only occur if it is a new message from a contact you are not already chatting with" -msgstr "NÃ¥r en ny hendelse (melding, fil overføring osv.) blir motatt, vil følgende metoder kunne bli brukt for Ã¥ informere deg om det. Vennligst merk at ny melding hendelser vil bare skje dersom du fÃ¥r en ny melding fra en kontakt du ikke er i samtale med." - -#: ../src/gtkgui.glade.h:305 -msgid "When new event is received" -msgstr "NÃ¥r en ny hendelse blir motatt" - -#: ../src/gtkgui.glade.h:306 -msgid "Work" -msgstr "Jobb" - -#: ../src/gtkgui.glade.h:307 -msgid "" -"You need to have an account in order to connect\n" -"to the Jabber network." -msgstr "" -"Du trenger en konto før du kan koble\n" -"til Jabber nettverket." - -#: ../src/gtkgui.glade.h:309 -msgid "Your JID:" -msgstr "Din JID:" - -#. Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector) -#: ../src/gtkgui.glade.h:311 -msgid "_Actions" -msgstr "_Handlinger" - -#: ../src/gtkgui.glade.h:312 -msgid "_Add Contact..." -msgstr "_Legg til Kontakt..." - -#: ../src/gtkgui.glade.h:313 -msgid "_Add to Roster" -msgstr "_Legg til Kontaktliste" - -#: ../src/gtkgui.glade.h:314 -msgid "_Address:" -msgstr "_Adresse:" - -#: ../src/gtkgui.glade.h:315 -msgid "_Admin" -msgstr "_Admin" - -#: ../src/gtkgui.glade.h:316 -msgid "_Administrator" -msgstr "_Administrator" - -#: ../src/gtkgui.glade.h:317 -msgid "_Advanced" -msgstr "_Avansert" - -#: ../src/gtkgui.glade.h:318 -msgid "_After time:" -msgstr "_Etter tid:" - -#: ../src/gtkgui.glade.h:319 -msgid "_Authorize" -msgstr "_Godkjenn" - -#: ../src/gtkgui.glade.h:320 -msgid "_Background:" -msgstr "_Bakgrunn:" - -#: ../src/gtkgui.glade.h:321 -msgid "_Ban" -msgstr "_Utvis" - -#: ../src/gtkgui.glade.h:322 -msgid "_Before time:" -msgstr "_Før tid:" - -#: ../src/gtkgui.glade.h:323 -msgid "_Bookmark This Room" -msgstr "Lag _Bokmerke til Rommet" - -#: ../src/gtkgui.glade.h:324 -msgid "_Browser:" -msgstr "_Nettleser:" - -#: ../src/gtkgui.glade.h:325 -msgid "_Cancel" -msgstr "_Avbryt" - -#: ../src/gtkgui.glade.h:326 -msgid "_Compact View Alt+C" -msgstr "_Kompakt Utseende Alt+C" - -#: ../src/gtkgui.glade.h:327 -msgid "_Contents" -msgstr "_Innhold" - -#: ../src/gtkgui.glade.h:329 -msgid "_Copy JID/Email Address" -msgstr "_Kopier JID/E-post Adresse" - -#: ../src/gtkgui.glade.h:330 -msgid "_Copy Link Location" -msgstr "_Kopier Link PLassering" - -#: ../src/gtkgui.glade.h:331 -msgid "_Deny" -msgstr "_Nekt" - -#: ../src/gtkgui.glade.h:332 -msgid "_Discover Services" -msgstr "_Oppdag Tjenester" - -#: ../src/gtkgui.glade.h:333 -msgid "_Discover Services..." -msgstr "_Oppdag Tjenester..." - -#: ../src/gtkgui.glade.h:335 -msgid "_FAQ" -msgstr "_FAQ" - -#: ../src/gtkgui.glade.h:336 -msgid "_File manager:" -msgstr "_Fil behandler:" - -#: ../src/gtkgui.glade.h:337 -msgid "_Filter:" -msgstr "_Filter:" - -#: ../src/gtkgui.glade.h:338 -msgid "_Finish" -msgstr "_Avslutt" - -#: ../src/gtkgui.glade.h:339 -msgid "_Font:" -msgstr "_Font:" - -#: ../src/gtkgui.glade.h:340 -msgid "_Group Chat" -msgstr "_Gruppe Samtale" - -#: ../src/gtkgui.glade.h:341 -msgid "_Help" -msgstr "_Hjelp" - -#: ../src/gtkgui.glade.h:342 -msgid "_Highlight misspelled words" -msgstr "_Uthev feilstavede ord" - -#: ../src/gtkgui.glade.h:343 -msgid "_History" -msgstr "_Historie" - -#: ../src/gtkgui.glade.h:344 -msgid "_Host:" -msgstr "_Maskin:" - -#. Info/Query: all(?) jabber xml start with Welcome to Gajim History Logs Manager\n" -"\n" -"You can select logs from the left and/or search database from below.\n" -"\n" -"WARNING:\n" -"If you plan to do massive deletions, please make sure Gajim is not running. Generally avoid deletions with contacts you currently chat with." +#: ../src/gtkgui_helpers.py:717 +msgid "Extension not supported" msgstr "" -"Velkommen til Gajim Historiske Logg Behandler\n" -"\n" -"Du kan velge logger fra venstre og/eller søke databasen under.\n" -"\n" -"ADVARSEL:\n" -"Dersom du planlegger Ã¥ gjøre store slette operasjoner, pass pÃ¥ at Gajim ikke kjører. Generelt bør man unngÃ¥ Ã¥ slette fra kontakter du er i samtale med." -#: ../src/history_manager.glade.h:7 -msgid "Delete" -msgstr "Slett" +#: ../src/gtkgui_helpers.py:718 +#, python-format +msgid "Image cannot be saved in %(type)s format. Save as %(new_filename)s?" +msgstr "" -#: ../src/history_manager.glade.h:8 -msgid "Export" -msgstr "Eksport" +#: ../src/gtkgui_helpers.py:727 +#, fuzzy +msgid "Save Image as..." +msgstr "Lagre Fil som..." -#: ../src/history_manager.glade.h:9 -msgid "Gajim History Logs Manager" -msgstr "Gajim Historske Logg Behandler" - -#: ../src/history_manager.glade.h:10 -msgid "_Search Database" -msgstr "_Søk Databasen" - -#: ../src/history_manager.py:58 +#: ../src/history_manager.py:61 msgid "Cannot find history logs database" msgstr "Kan ikke finne historisk logg database" #. holds jid -#: ../src/history_manager.py:102 +#: ../src/history_manager.py:104 msgid "Contacts" msgstr "Kontakter" #. holds time -#: ../src/history_manager.py:115 -#: ../src/history_manager.py:155 -#: ../src/history_window.py:94 +#: ../src/history_manager.py:117 ../src/history_manager.py:157 +#: ../src/history_window.py:85 msgid "Date" msgstr "Dato" #. holds nickname -#: ../src/history_manager.py:121 -#: ../src/history_manager.py:173 +#: ../src/history_manager.py:123 ../src/history_manager.py:175 msgid "Nickname" msgstr "Kallenavn" #. holds message -#: ../src/history_manager.py:129 -#: ../src/history_manager.py:161 -#: ../src/history_window.py:102 +#: ../src/history_manager.py:131 ../src/history_manager.py:163 +#: ../src/history_window.py:93 msgid "Message" msgstr "Melding" #. holds subject -#: ../src/history_manager.py:136 -#: ../src/history_manager.py:167 +#: ../src/history_manager.py:138 ../src/history_manager.py:169 msgid "Subject" msgstr "Tittel" -#: ../src/history_manager.py:181 -msgid "Do you want to clean up the database? (STRONGLY NOT RECOMMENDED IF GAJIM IS RUNNING)" -msgstr "Ønsker du Ã¥ rengjøre databasen? (STERKT FRARÃ…DET MENS GAJIM KJØRER)" - #: ../src/history_manager.py:183 msgid "" -"Normally allocated database size will not be freed, it will just become reusable. If you really want to reduce database filesize, click YES, else click NO.\n" +"Do you want to clean up the database? (STRONGLY NOT RECOMMENDED IF GAJIM IS " +"RUNNING)" +msgstr "Ønsker du Ã¥ rengjøre databasen? (STERKT FRARÃ…DET MENS GAJIM KJØRER)" + +#: ../src/history_manager.py:185 +msgid "" +"Normally allocated database size will not be freed, it will just become " +"reusable. If you really want to reduce database filesize, click YES, else " +"click NO.\n" "\n" "In case you click YES, please wait..." msgstr "" -"Normalt vil tildelt database plass ikke frigjøres, den vil bare be merket som ledig. Dersom du virkelig ønsker Ã¥ redusere fil størrelsen klikker du JA, ellers klikker du NEI.\n" +"Normalt vil tildelt database plass ikke frigjøres, den vil bare be merket " +"som ledig. Dersom du virkelig ønsker Ã¥ redusere fil størrelsen klikker du " +"JA, ellers klikker du NEI.\n" "\n" "I tilfelle du klikker JA, vennligst vent..." -#: ../src/history_manager.py:389 +#: ../src/history_manager.py:391 msgid "Exporting History Logs..." msgstr "Eksporterer Historiske Logger..." -#: ../src/history_manager.py:465 +#: ../src/history_manager.py:467 #, python-format msgid "%(who)s on %(time)s said: %(message)s\n" msgstr "%(who)s pÃ¥ %(time)s sa: %(message)s\n" -#: ../src/history_manager.py:465 +#: ../src/history_manager.py:467 msgid "who" msgstr "hvem" -#: ../src/history_manager.py:503 +#: ../src/history_manager.py:505 msgid "Do you really want to delete logs of the selected contact?" msgid_plural "Do you really want to delete logs of the selected contacts?" msgstr[0] "Ønsker du virkelig Ã¥ slette loggene til den valgte kontakten?" msgstr[1] "Ønsker du virkelig Ã¥ slette loggene fra de valgte kontaktene?" -#: ../src/history_manager.py:507 -#: ../src/history_manager.py:543 +#: ../src/history_manager.py:509 ../src/history_manager.py:545 msgid "This is an irreversible operation." msgstr "Denne operasjonen kan ikke angres." -#: ../src/history_manager.py:540 +#: ../src/history_manager.py:542 msgid "Do you really want to delete the selected message?" msgid_plural "Do you really want to delete the selected messages?" msgstr[0] "Ønsker du virkelig Ã¥ slette den valgte meldingen?" msgstr[1] "Ønsker du virkelig Ã¥ slette de valgte meldingene?" -#: ../src/history_window.py:111 -#: ../src/history_window.py:113 +#: ../src/history_window.py:102 ../src/history_window.py:104 #, python-format msgid "Conversation History with %s" msgstr "Samtale Historikk med %s" -#: ../src/history_window.py:265 +#: ../src/history_window.py:258 #, python-format msgid "%(nick)s is now %(status)s: %(status_msg)s" msgstr "%(nick)s er nÃ¥ %(status)s: %(status_msg)s" -#: ../src/history_window.py:269 +#: ../src/history_window.py:262 ../src/notify.py:113 #, python-format msgid "%(nick)s is now %(status)s" msgstr "%(nick)s er nÃ¥ %(status)s" -#: ../src/history_window.py:275 +#: ../src/history_window.py:268 #, python-format msgid "Status is now: %(status)s: %(status_msg)s" msgstr "Status er nÃ¥: %(status)s: %(status_msg)s" -#: ../src/history_window.py:278 +#: ../src/history_window.py:271 #, python-format msgid "Status is now: %(status)s" msgstr "Status er nÃ¥: %(status)s" -#: ../src/message_window.py:233 +#: ../src/message_window.py:244 msgid "Messages" msgstr "Meldinger" -#: ../src/message_window.py:234 +#: ../src/message_window.py:245 #, python-format msgid "%s - Gajim" msgstr "%s - Gajim" -#: ../src/roster_window.py:140 +#: ../src/notify.py:111 +#, fuzzy, python-format +msgid "%(nick)s Changed Status" +msgstr "%(nick)s er nÃ¥ %(status)s" + +#: ../src/notify.py:121 +#, python-format +msgid "%(nickname)s Signed In" +msgstr "%(nickname)s Logget PÃ¥" + +#: ../src/notify.py:129 +#, python-format +msgid "%(nickname)s Signed Out" +msgstr "%(nickname)s Logget Av" + +#: ../src/notify.py:141 +#, python-format +msgid "New Single Message from %(nickname)s" +msgstr "Ny Enkeltmelding fra %(nickname)s" + +#: ../src/notify.py:150 +#, python-format +msgid "New Private Message from room %s" +msgstr "Ny Privat Melding fra rom %s" + +#: ../src/notify.py:151 +#, python-format +msgid "%(nickname)s: %(message)s" +msgstr "%(nickname)s: %(message)s" + +#: ../src/notify.py:157 +#, python-format +msgid "New Message from %(nickname)s" +msgstr "Ny Melding fra %(nickname)s" + +#: ../src/roster_window.py:131 msgid "Merged accounts" msgstr "Samlede kontoer" -#: ../src/roster_window.py:289 -#: ../src/common/helpers.py:42 +#: ../src/roster_window.py:288 ../src/common/helpers.py:39 msgid "Observers" msgstr "Observerere" -#: ../src/roster_window.py:542 +#: ../src/roster_window.py:544 #, python-format msgid "You are already in room %s" msgstr "Du er allerede i rom %s" -#: ../src/roster_window.py:546 -#: ../src/roster_window.py:2262 +#: ../src/roster_window.py:548 ../src/roster_window.py:2280 msgid "You cannot join a room while you are invisible" msgstr "Du kan ikke gÃ¥ inn i en gruppesamtale nÃ¥r du er usynlig" #. the 'manage gc bookmarks' item is showed #. below to avoid duplicate code #. add -#: ../src/roster_window.py:735 +#: ../src/roster_window.py:748 #, python-format msgid "to %s account" msgstr "til %s kontoen" #. disco -#: ../src/roster_window.py:742 +#: ../src/roster_window.py:755 #, python-format msgid "using %s account" msgstr "pÃ¥ %s kontoen" -#. new message +#. new chat #. for chat_with #. for single message -#: ../src/roster_window.py:750 -#: ../src/systray.py:194 -#: ../src/systray.py:201 +#: ../src/roster_window.py:763 ../src/systray.py:193 ../src/systray.py:198 #, python-format msgid "using account %s" msgstr "bruker kontoen %s" #. profile, avatar -#: ../src/roster_window.py:759 +#: ../src/roster_window.py:772 #, python-format msgid "of account %s" msgstr "for konto %s" -#: ../src/roster_window.py:818 +#: ../src/roster_window.py:831 msgid "Manage Bookmarks..." msgstr "Behandle Bokmerker..." -#: ../src/roster_window.py:842 +#: ../src/roster_window.py:855 #, python-format msgid "for account %s" msgstr "for kontoen %s" #. History manager -#: ../src/roster_window.py:863 +#: ../src/roster_window.py:876 msgid "History Manager" msgstr "Historikk Behandler" -#: ../src/roster_window.py:872 +#: ../src/roster_window.py:885 msgid "_Join New Room" msgstr "_Bli med i Nytt Rom" -#: ../src/roster_window.py:1158 +#: ../src/roster_window.py:1159 #, python-format msgid "Transport \"%s\" will be removed" msgstr "Transport \"%s\" vil bli fjernet" -#: ../src/roster_window.py:1158 -msgid "You will no longer be able to send and receive messages to contacts from this transport." -msgstr "Du vil ikke lenger kunne sende og motta meldinger med kontakter fra denne transporten." +#: ../src/roster_window.py:1159 +msgid "" +"You will no longer be able to send and receive messages to contacts from " +"this transport." +msgstr "" +"Du vil ikke lenger kunne sende og motta meldinger med kontakter fra denne " +"transporten." -#: ../src/roster_window.py:1200 +#: ../src/roster_window.py:1201 msgid "Assign OpenPGP Key" msgstr "Tilegn OpenPGP Nøkkel" -#: ../src/roster_window.py:1201 +#: ../src/roster_window.py:1202 msgid "Select a key to apply to the contact" msgstr "Velger en nøkkel til en kontakt" @@ -3720,239 +4372,252 @@ msgstr "Logg _av" msgid "_Change Status Message" msgstr "_Endre Status Melding" -#: ../src/roster_window.py:1617 +#: ../src/roster_window.py:1621 msgid "Authorization has been sent" msgstr "Godkjenning har blitt sendt" -#: ../src/roster_window.py:1618 +#: ../src/roster_window.py:1622 #, python-format msgid "Now \"%s\" will know your status." msgstr "NÃ¥ vil \"%s\" kunne se din status." -#: ../src/roster_window.py:1642 +#: ../src/roster_window.py:1646 msgid "Subscription request has been sent" msgstr "Abbonerings forespørsel er sendt" -#: ../src/roster_window.py:1643 +#: ../src/roster_window.py:1647 #, python-format msgid "If \"%s\" accepts this request you will know his or her status." -msgstr "Dersom \"%s\" aksepterer denne forespørselen vil du fÃ¥ vite hans eller hennes status." +msgstr "" +"Dersom \"%s\" aksepterer denne forespørselen vil du fÃ¥ vite hans eller " +"hennes status." -#: ../src/roster_window.py:1654 +#: ../src/roster_window.py:1658 msgid "Authorization has been removed" msgstr "Godkjenning har blitt fjernet" -#: ../src/roster_window.py:1655 +#: ../src/roster_window.py:1659 #, python-format msgid "Now \"%s\" will always see you as offline." msgstr "NÃ¥ vil \"%s\" alltid se deg som frakoblet." -#: ../src/roster_window.py:1824 +#: ../src/roster_window.py:1822 #, python-format msgid "Contact \"%s\" will be removed from your roster" msgstr "Kontakten \"%s\" vil fjernes fra din kontaktliste" -#: ../src/roster_window.py:1828 -msgid "By removing this contact you also remove authorization resulting in him or her always seeing you as offline." -msgstr "Ved Ã¥ fjerne denne kontakten fjerner du ogsÃ¥ godkjenningen som gjør at han eller henne alltid vil se deg som frakoblet." +#: ../src/roster_window.py:1826 +msgid "" +"By removing this contact you also remove authorization resulting in him or " +"her always seeing you as offline." +msgstr "" +"Ved Ã¥ fjerne denne kontakten fjerner du ogsÃ¥ godkjenningen som gjør at han " +"eller henne alltid vil se deg som frakoblet." -#: ../src/roster_window.py:1832 -msgid "By removing this contact you also by default remove authorization resulting in him or her always seeing you as offline." -msgstr "Ved Ã¥ fjerne denne kontakten fjerner du ogsÃ¥ godkjenningen som resulterer i at han eller henne alltid vil se deg som frakoblet." +#: ../src/roster_window.py:1830 +msgid "" +"By removing this contact you also by default remove authorization resulting " +"in him or her always seeing you as offline." +msgstr "" +"Ved Ã¥ fjerne denne kontakten fjerner du ogsÃ¥ godkjenningen som resulterer i " +"at han eller henne alltid vil se deg som frakoblet." -#: ../src/roster_window.py:1833 +#: ../src/roster_window.py:1831 msgid "I want this contact to know my status after removal" msgstr "Denne kontakten skal kunne se min status etter fjerning" -#: ../src/roster_window.py:1901 +#: ../src/roster_window.py:1899 msgid "Passphrase Required" msgstr "Passordsetning Kreves" -#: ../src/roster_window.py:1902 +#: ../src/roster_window.py:1900 #, python-format msgid "Enter GPG key passphrase for account %s." msgstr "Skriv GPG nøkkelens passordsetning for konto %s." -#: ../src/roster_window.py:1907 +#: ../src/roster_window.py:1905 msgid "Save passphrase" msgstr "Lagre passordsetning" -#: ../src/roster_window.py:1915 +#: ../src/roster_window.py:1913 msgid "Wrong Passphrase" msgstr "Feil Passordsetning" -#: ../src/roster_window.py:1916 +#: ../src/roster_window.py:1914 msgid "Please retype your GPG passphrase or press Cancel." msgstr "Vennligst skriv inn GPG passordsetningen igjen eller trykk Avbryt." -#: ../src/roster_window.py:1964 -#: ../src/roster_window.py:2021 +#: ../src/roster_window.py:1963 ../src/roster_window.py:2020 msgid "You are participating in one or more group chats" msgstr "Du er med i en eller flere gruppesamtaler" -#: ../src/roster_window.py:1965 -#: ../src/roster_window.py:2022 -msgid "Changing your status to invisible will result in disconnection from those group chats. Are you sure you want to go invisible?" -msgstr "Endring av status til usynlig vil resultere i at du forlater disse gruppe samtalene. Er du sikker pÃ¥ at du ønsker Ã¥ bli usynlig?" +#: ../src/roster_window.py:1964 ../src/roster_window.py:2021 +msgid "" +"Changing your status to invisible will result in disconnection from those " +"group chats. Are you sure you want to go invisible?" +msgstr "" +"Endring av status til usynlig vil resultere i at du forlater disse gruppe " +"samtalene. Er du sikker pÃ¥ at du ønsker Ã¥ bli usynlig?" -#: ../src/roster_window.py:1981 +#: ../src/roster_window.py:1980 msgid "No account available" msgstr "Ingen konto tilgjengelig" -#: ../src/roster_window.py:1982 +#: ../src/roster_window.py:1981 msgid "You must create an account before you can chat with other contacts." msgstr "Du mÃ¥ lage en konto før du kan snakke med andre kontakter." -#: ../src/roster_window.py:2427 -#: ../src/roster_window.py:2433 +#: ../src/roster_window.py:2452 ../src/roster_window.py:2458 msgid "You have unread messages" msgstr "Du har uleste meldinger" -#: ../src/roster_window.py:2428 -#: ../src/roster_window.py:2434 -msgid "Messages will only be available for reading them later if you have history enabled." -msgstr "Meldinger vil kun være tilgjengelig for lesing senere dersom du har historikk pÃ¥slÃ¥tt." +#: ../src/roster_window.py:2453 ../src/roster_window.py:2459 +msgid "" +"Messages will only be available for reading them later if you have history " +"enabled." +msgstr "" +"Meldinger vil kun være tilgjengelig for lesing senere dersom du har " +"historikk pÃ¥slÃ¥tt." -#: ../src/roster_window.py:3184 +#: ../src/roster_window.py:3231 #, python-format msgid "Drop %s in group %s" msgstr "Tøm %s i samtalerom %s" -#: ../src/roster_window.py:3191 +#: ../src/roster_window.py:3238 #, python-format msgid "Make %s and %s metacontacts" msgstr "Gjør %s og %s metakontakter" -#: ../src/roster_window.py:3358 +#: ../src/roster_window.py:3408 msgid "Change Status Message..." msgstr "Endre Status Melding..." -#: ../src/systray.py:155 +#: ../src/systray.py:154 msgid "_Change Status Message..." msgstr "_Endre Status Melding..." -#: ../src/systray.py:236 +#: ../src/systray.py:231 msgid "Hide this menu" msgstr "Gjem dette vinduet" -#: ../src/systraywin32.py:266 -#: ../src/systraywin32.py:285 -#: ../src/tooltips.py:315 +#: ../src/systraywin32.py:261 ../src/systraywin32.py:280 #, python-format msgid "Gajim - %d unread message" msgid_plural "Gajim - %d unread messages" msgstr[0] "Gajim - %d ulest melding" msgstr[1] "Gajim - %d uleste meldinger" -#: ../src/tooltips.py:321 -#, python-format -msgid "Gajim - %d unread single message" -msgid_plural "Gajim - %d unread single messages" +#: ../src/tooltips.py:326 +#, fuzzy, python-format +msgid " %d unread message" +msgid_plural " %d unread messages" msgstr[0] "Gajim - %d ulest melding" msgstr[1] "Gajim - %d uleste meldinger" -#: ../src/tooltips.py:327 -#, python-format -msgid "Gajim - %d unread group chat message" -msgid_plural "Gajim - %d unread group chat messages" +#: ../src/tooltips.py:332 +#, fuzzy, python-format +msgid " %d unread single message" +msgid_plural " %d unread single messages" msgstr[0] "Gajim - %d ulest melding" msgstr[1] "Gajim - %d uleste meldinger" -#: ../src/tooltips.py:333 -#, python-format -msgid "Gajim - %d unread private message" -msgid_plural "Gajim - %d unread private messages" +#: ../src/tooltips.py:338 +#, fuzzy, python-format +msgid " %d unread group chat message" +msgid_plural " %d unread group chat messages" +msgstr[0] "Gajim - %d ulest melding" +msgstr[1] "Gajim - %d uleste meldinger" + +#: ../src/tooltips.py:344 +#, fuzzy, python-format +msgid " %d unread private message" +msgid_plural " %d unread private messages" msgstr[0] "Gajim - %d ulest privat melding" msgstr[1] "Gajim - %d uleste private meldinger" -#: ../src/tooltips.py:348 -#: ../src/tooltips.py:350 +#: ../src/tooltips.py:359 ../src/tooltips.py:361 #, python-format msgid "Gajim - %s" msgstr "Gajim - %s" -#: ../src/tooltips.py:383 +#: ../src/tooltips.py:395 msgid "Role: " msgstr "Rolle: " -#: ../src/tooltips.py:384 +#: ../src/tooltips.py:396 msgid "Affiliation: " msgstr "Tilhørighet: " -#: ../src/tooltips.py:386 -#: ../src/tooltips.py:518 +#: ../src/tooltips.py:398 ../src/tooltips.py:537 msgid "Resource: " msgstr "Ressurs: " -#: ../src/tooltips.py:394 -#: ../src/tooltips.py:521 -#: ../src/tooltips.py:543 -#: ../src/tooltips.py:654 +#: ../src/tooltips.py:407 ../src/tooltips.py:540 ../src/tooltips.py:565 +#: ../src/tooltips.py:676 msgid "Status: " msgstr "Status: " -#: ../src/tooltips.py:501 +#: ../src/tooltips.py:514 msgid "Subscription: " msgstr "Abbonement: " -#: ../src/tooltips.py:510 +#: ../src/tooltips.py:523 msgid "OpenPGP: " msgstr "OpenPGP: " -#: ../src/tooltips.py:548 +#: ../src/tooltips.py:570 #, python-format msgid "Last status on %s" msgstr "Siste status pÃ¥ %s" -#: ../src/tooltips.py:550 +#: ../src/tooltips.py:572 #, python-format msgid "Since %s" msgstr "Siden %s" -#: ../src/tooltips.py:610 +#: ../src/tooltips.py:632 msgid "Download" msgstr "Last ned" -#: ../src/tooltips.py:616 +#: ../src/tooltips.py:638 msgid "Upload" msgstr "Last opp" -#: ../src/tooltips.py:623 +#: ../src/tooltips.py:645 msgid "Type: " msgstr "Type: " -#: ../src/tooltips.py:629 +#: ../src/tooltips.py:651 msgid "Transferred: " msgstr "Overført: " -#: ../src/tooltips.py:632 -#: ../src/tooltips.py:653 +#: ../src/tooltips.py:654 ../src/tooltips.py:675 msgid "Not started" msgstr "Ikke startet" -#: ../src/tooltips.py:636 +#: ../src/tooltips.py:658 msgid "Stopped" msgstr "Stoppet" -#: ../src/tooltips.py:638 -#: ../src/tooltips.py:641 +#: ../src/tooltips.py:660 ../src/tooltips.py:663 msgid "Completed" msgstr "Komplett" #. stalled is not paused. it is like 'frozen' it stopped alone -#: ../src/tooltips.py:649 +#: ../src/tooltips.py:671 msgid "Stalled" msgstr "Henger" -#: ../src/tooltips.py:651 +#: ../src/tooltips.py:673 msgid "Transferring" msgstr "Overfører" -#: ../src/tooltips.py:683 +#: ../src/tooltips.py:705 msgid "This service has not yet responded with detailed information" msgstr "Denne tjenesten har ikke enda svart med detaljert informasjon" -#: ../src/tooltips.py:686 +#: ../src/tooltips.py:708 msgid "" "This service could not respond with detailed information.\n" "It is most likely legacy or broken" @@ -3961,102 +4626,114 @@ msgstr "" "Den er sannsynligvis utdatert eller ødelagt" #. keep identation -#: ../src/vcard.py:186 +#: ../src/vcard.py:188 msgid "Could not load image" msgstr "Kunne ikke laste bilde" -#: ../src/vcard.py:262 +#: ../src/vcard.py:289 msgid "?Client:Unknown" msgstr "?Client:Ukjent" -#: ../src/vcard.py:264 +#: ../src/vcard.py:291 msgid "?OS:Unknown" msgstr "?OS:Ukjent" -#: ../src/vcard.py:281 +#: ../src/vcard.py:308 #, python-format msgid "since %s" msgstr "siden %s" -#: ../src/vcard.py:305 -msgid "This contact is interested in your presence information, but you are not interested in his/her presence" -msgstr "Denne kontakten er interessert i din tilstedeværelses informasjon, men du er ikke interessert i hans/hennes status." +#: ../src/vcard.py:332 +msgid "" +"This contact is interested in your presence information, but you are not " +"interested in his/her presence" +msgstr "" +"Denne kontakten er interessert i din tilstedeværelses informasjon, men du er " +"ikke interessert i hans/hennes status." -#: ../src/vcard.py:307 -msgid "You are interested in the contact's presence information, but he/she is not interested in yours" -msgstr "Du er interessert i denne kontaktens tilstedeværelses informasjon, men han/hun er ikke interessert i din." +#: ../src/vcard.py:334 +msgid "" +"You are interested in the contact's presence information, but he/she is not " +"interested in yours" +msgstr "" +"Du er interessert i denne kontaktens tilstedeværelses informasjon, men han/" +"hun er ikke interessert i din." -#: ../src/vcard.py:309 +#: ../src/vcard.py:336 msgid "You and the contact are interested in each other's presence information" -msgstr "Du og kontakten er interessert i hverandres tilstedeværelses informasjon" +msgstr "" +"Du og kontakten er interessert i hverandres tilstedeværelses informasjon" #. None -#: ../src/vcard.py:311 -msgid "You are not interested in the contact's presence, and neither he/she is interested in yours" -msgstr "Du er ikke interessert i kontaktens tilstedeværelses informasjon, ei heller han/hun i din." +#: ../src/vcard.py:338 +msgid "" +"You are not interested in the contact's presence, and neither he/she is " +"interested in yours" +msgstr "" +"Du er ikke interessert i kontaktens tilstedeværelses informasjon, ei heller " +"han/hun i din." -#: ../src/vcard.py:320 +#: ../src/vcard.py:347 msgid "You are waiting contact's answer about your subscription request" msgstr "Du venter pÃ¥ kontaktens svar pÃ¥ din abbonerings forespørsel" -#: ../src/vcard.py:332 -#: ../src/vcard.py:355 +#: ../src/vcard.py:359 ../src/vcard.py:382 msgid " resource with priority " msgstr " ressurs med prioritet" -#: ../src/vcard.py:434 +#: ../src/vcard.py:458 msgid "Without a connection you can not publish your contact information." msgstr "Uten en tilkobling kan du ikke publisere din kontakt informasjon." -#: ../src/vcard.py:463 +#: ../src/vcard.py:491 msgid "Without a connection, you can not get your contact information." msgstr "Uten en tilkobling kan du ikke hente din kontakt informasjon." -#: ../src/vcard.py:467 +#: ../src/vcard.py:495 msgid "Personal details" msgstr "Personlige detaljer" -#: ../src/common/check_paths.py:39 +#: ../src/common/check_paths.py:35 msgid "creating logs database" msgstr "lager logg database" -#: ../src/common/check_paths.py:84 -#: ../src/common/check_paths.py:95 -#: ../src/common/check_paths.py:102 +#: ../src/common/check_paths.py:82 ../src/common/check_paths.py:93 +#: ../src/common/check_paths.py:100 #, python-format msgid "%s is file but it should be a directory" msgstr "%s er en fil men skulle ha vært en katalog" -#: ../src/common/check_paths.py:85 -#: ../src/common/check_paths.py:96 -#: ../src/common/check_paths.py:103 -#: ../src/common/check_paths.py:110 +#: ../src/common/check_paths.py:83 ../src/common/check_paths.py:94 +#: ../src/common/check_paths.py:101 ../src/common/check_paths.py:109 msgid "Gajim will now exit" msgstr "Gajim vill nÃ¥ lukkes" -#: ../src/common/check_paths.py:109 +#: ../src/common/check_paths.py:108 #, python-format msgid "%s is directory but should be file" msgstr "%s er en katalog men skulle vært en fil" -#: ../src/common/check_paths.py:125 +#: ../src/common/check_paths.py:124 #, python-format msgid "creating %s directory" msgstr "lager %s mappe" -#: ../src/common/exceptions.py:35 +#: ../src/common/exceptions.py:32 msgid "pysqlite2 (aka python-pysqlite2) dependency is missing. Exiting..." -msgstr "pysqlite2 (ogsÃ¥ kjent som python-pysqlite2) avhengighet mangler. Avslutter..." +msgstr "" +"pysqlite2 (ogsÃ¥ kjent som python-pysqlite2) avhengighet mangler. Avslutter..." -#: ../src/common/exceptions.py:43 +#: ../src/common/exceptions.py:40 msgid "Service not available: Gajim is not running, or remote_control is False" -msgstr "Tjeneste ikke tilgjengelig: Gajim kjører ikke, eller remote_control er satt til False" +msgstr "" +"Tjeneste ikke tilgjengelig: Gajim kjører ikke, eller remote_control er satt " +"til False" -#: ../src/common/exceptions.py:51 +#: ../src/common/exceptions.py:48 msgid "D-Bus is not present on this machine or python module is missing" msgstr "D-Bus finnes ikke pÃ¥ denne maskinen eller python modulen mangler" -#: ../src/common/exceptions.py:59 +#: ../src/common/exceptions.py:56 msgid "" "Session bus is not available.\n" "Try reading http://trac.gajim.org/wiki/GajimDBus" @@ -4064,49 +4741,90 @@ msgstr "" "Sesjons bussen er ikke tilgjengelig.\n" "Prøv Ã¥ les http://trac.gajim.org/wiki/GajimDBus" -#: ../src/common/config.py:53 +#: ../src/common/config.py:51 msgid "Use DBus and Notification-Daemon to show notifications" msgstr "Bruk DBus og Hendelses-Tjenesten for Ã¥ vise hendelser" -#: ../src/common/config.py:57 +#: ../src/common/config.py:55 msgid "Time in minutes, after which your status changes to away." msgstr "Tid i minutter før status endres til borte." -#: ../src/common/config.py:58 +#: ../src/common/config.py:56 msgid "Away as a result of being idle" msgstr "Borte pÃ¥ grunn av inaktivitet" -#: ../src/common/config.py:60 +#: ../src/common/config.py:58 msgid "Time in minutes, after which your status changes to not available." msgstr "Tid i minutter før status endres til ikke tilgjengelig." -#: ../src/common/config.py:61 +#: ../src/common/config.py:59 msgid "Not available as a result of being idle" msgstr "Ikke tilgjengelig pÃ¥ grunn av inaktivitet" -#: ../src/common/config.py:88 +#: ../src/common/config.py:77 +msgid "List (space separated) of rows (accounts and groups) that are collapsed" +msgstr "" + +#: ../src/common/config.py:83 +msgid "" +"'always' - print time for every message.\n" +"'sometimes' - print time every print_ichat_every_foo_minutes minute.\n" +"'never' - never print time." +msgstr "" + +#: ../src/common/config.py:84 +msgid "" +"Value of fuzziness from 1 to 4 or 0 to disable fuzzyclock. 1 is the most " +"precise clock, 4 the less precise one." +msgstr "" + +#: ../src/common/config.py:87 msgid "Treat * / _ pairs as possible formatting characters." msgstr "Behandle * / _ par som mulige formatterings symboler." -#: ../src/common/config.py:89 -msgid "If True, do not remove */_ . So *abc* will be bold but with * * not removed." -msgstr "Dersom True, ikke fjern */_ . SÃ¥ *abc* vil bli uthevet men * * ikke vil bli fjernet." +#: ../src/common/config.py:88 +msgid "" +"If True, do not remove */_ . So *abc* will be bold but with * * not removed." +msgstr "" +"Dersom True, ikke fjern */_ . SÃ¥ *abc* vil bli uthevet men * * ikke vil bli " +"fjernet." + +#: ../src/common/config.py:98 +msgid "" +"Character to add after nickname when using nick completion (tab) in group " +"chat" +msgstr "" + +#: ../src/common/config.py:99 +msgid "" +"Character to propose to add after desired nickname when desired nickname is " +"used by someone else in group chat" +msgstr "" #: ../src/common/config.py:131 msgid "Add * and [n] in roster title?" msgstr "Legg * og [n] inn i kontaktliste tittelen?" #: ../src/common/config.py:132 -msgid "How many lines to remember from previous conversation when a chat tab/window is reopened." -msgstr "Hvor mange linjer skal huskes fra forrige samtale nÃ¥r et samtale vindu/fane blir Ã¥pnet pÃ¥ nytt." +msgid "" +"How many lines to remember from previous conversation when a chat tab/window " +"is reopened." +msgstr "" +"Hvor mange linjer skal huskes fra forrige samtale nÃ¥r et samtale vindu/fane " +"blir Ã¥pnet pÃ¥ nytt." #: ../src/common/config.py:133 msgid "How many minutes should last lines from previous conversation last." -msgstr "Hvor mange minutter skal de siste linjene fra forrige konversasjon vare." +msgstr "" +"Hvor mange minutter skal de siste linjene fra forrige konversasjon vare." #: ../src/common/config.py:134 -msgid "Send message on Ctrl+Enter and with Enter make new line (Mirabilis ICQ Client default behaviour)." -msgstr "Send meldinger med Ctrl+Enter og med Enter lag ny linje (Mirabilis ICQ Klient standard oppførsel)." +msgid "" +"Send message on Ctrl+Enter and with Enter make new line (Mirabilis ICQ " +"Client default behaviour)." +msgstr "" +"Send meldinger med Ctrl+Enter og med Enter lag ny linje (Mirabilis ICQ " +"Klient standard oppførsel)." #: ../src/common/config.py:136 msgid "How many lines to store for Ctrl+KeyUP." @@ -4114,28 +4832,50 @@ msgstr "Hvor mange linjer skal lagres for Ctrl+PilOPP." #: ../src/common/config.py:139 #, python-format -msgid "Either custom url with %s in it where %s is the word/phrase or 'WIKTIONARY' which means use wiktionary." -msgstr "Enten bruk egendefinert url med %s i seg hvor %s er ordet/frasen eller 'WIKTIONARY' som betyr bruk wiktionary." +msgid "" +"Either custom url with %s in it where %s is the word/phrase or 'WIKTIONARY' " +"which means use wiktionary." +msgstr "" +"Enten bruk egendefinert url med %s i seg hvor %s er ordet/frasen eller " +"'WIKTIONARY' som betyr bruk wiktionary." #: ../src/common/config.py:142 msgid "If checked, Gajim can be controlled remotely using gajim-remote." msgstr "Dersom valgt vil Gajim kunne bli fjernstyr med gajim-remote." +#: ../src/common/config.py:145 +msgid "" +"When not printing time for every message (print_time==sometimes), print it " +"every x minutes" +msgstr "" + #: ../src/common/config.py:146 msgid "Ask before closing a group chat tab/window." msgstr "Spør før lukking av gruppesamtale fane/vindu." #: ../src/common/config.py:147 -msgid "Always ask before closing group chat tab/window in this space separated list of room jids." -msgstr "Spør alltid før lukking av gruppesamtale fane/vindu i denne mellomrom separerte listen av rom jider." +msgid "" +"Always ask before closing group chat tab/window in this space separated list " +"of room jids." +msgstr "" +"Spør alltid før lukking av gruppesamtale fane/vindu i denne mellomrom " +"separerte listen av rom jider." #: ../src/common/config.py:148 -msgid "Never ask before closing group chat tab/window in this space separated list of room jids." -msgstr "Aldri spør før lukking av gruppesamtale fane/vindu i denne mellomroms separerte listen av rom jider." +msgid "" +"Never ask before closing group chat tab/window in this space separated list " +"of room jids." +msgstr "" +"Aldri spør før lukking av gruppesamtale fane/vindu i denne mellomroms " +"separerte listen av rom jider." #: ../src/common/config.py:151 -msgid "Overrides the host we send for File Transfer in case of address translation/port forwarding." -msgstr "Overstyrer maskinen navnet vi sender for Fil Overføring i tilfeller med adresse oversetting/port videresending." +msgid "" +"Overrides the host we send for File Transfer in case of address translation/" +"port forwarding." +msgstr "" +"Overstyrer maskinen navnet vi sender for Fil Overføring i tilfeller med " +"adresse oversetting/port videresending." #: ../src/common/config.py:153 msgid "IEC standard says KiB = 1024 bytes, KB = 1000 bytes." @@ -4146,7 +4886,8 @@ msgid "Show tab when only one conversation?" msgstr "Vis fane nÃ¥r du har bare en samtale?" #: ../src/common/config.py:162 -msgid "Show tab border if one conversation?" +#, fuzzy +msgid "Show tabbed notebook border in chat windows?" msgstr "Vis fane felt ved bare en aktiv samtale?" #: ../src/common/config.py:163 @@ -4154,247 +4895,318 @@ msgid "Show close button in tab?" msgstr "Vis lukk knapp pÃ¥ fanen?" #: ../src/common/config.py:176 -msgid "A semicolon-separated list of words that will be highlighted in multi-user chat." +msgid "" +"A semicolon-separated list of words that will be highlighted in multi-user " +"chat." msgstr "En semikolon-delt liste av ord som vil bli uthevet i gruppesamtale." #: ../src/common/config.py:177 -msgid "If True, quits Gajim when X button of Window Manager is clicked. This setting is taken into account only if trayicon is used." -msgstr "Dersom True vil Gajim avslutte nÃ¥r X knappen i Vindubehandleren blir trykket pÃ¥. Dette valget vil kun brukes dersom systemstatus ikon er i bruk. " +msgid "" +"If True, quits Gajim when X button of Window Manager is clicked. This " +"setting is taken into account only if trayicon is used." +msgstr "" +"Dersom True vil Gajim avslutte nÃ¥r X knappen i Vindubehandleren blir trykket " +"pÃ¥. Dette valget vil kun brukes dersom systemstatus ikon er i bruk. " #: ../src/common/config.py:178 msgid "If True, Gajim registers for xmpp:// on each startup." msgstr "Dersom True vil Gajim registreres for xmpp:// ved hver oppstart." #: ../src/common/config.py:179 -msgid "If True, Gajim will display an icon on each tab containing unread messages. Depending on the theme, this icon may be animated." -msgstr "Dersom True vil Gajim ise et ikon pÃ¥ hver fane som inneholder uleste meldinger. Avhengig av valgte tema kan dette ikonet være animert." +msgid "" +"If True, Gajim will display an icon on each tab containing unread messages. " +"Depending on the theme, this icon may be animated." +msgstr "" +"Dersom True vil Gajim ise et ikon pÃ¥ hver fane som inneholder uleste " +"meldinger. Avhengig av valgte tema kan dette ikonet være animert." #: ../src/common/config.py:180 -msgid "If True, Gajim will display the status message, if not empty, for every contact under the contact name in roster window" -msgstr "Dersom True vil Gajim vise status meldingen, om den ikke er tom, for hver kontakt under kontaktens navn i kontaktliste vinduet." +msgid "" +"If True, Gajim will display the status message, if not empty, for every " +"contact under the contact name in roster window" +msgstr "" +"Dersom True vil Gajim vise status meldingen, om den ikke er tom, for hver " +"kontakt under kontaktens navn i kontaktliste vinduet." #: ../src/common/config.py:182 -msgid "If True, Gajim will ask for avatar each contact that did not have an avatar last time or has one cached that is too old." -msgstr "Dersom True vil Gajim spør etter ikonbilde for hver kontakt som ikke hadde et ikonbilde sist gang eller har en lagret som er for gammel." +msgid "" +"If True, Gajim will ask for avatar each contact that did not have an avatar " +"last time or has one cached that is too old." +msgstr "" +"Dersom True vil Gajim spør etter ikonbilde for hver kontakt som ikke hadde " +"et ikonbilde sist gang eller har en lagret som er for gammel." + +#: ../src/common/config.py:183 +#, fuzzy +msgid "" +"If False, Gajim will no longer print status line in chats when a contact " +"changes his or her status and/or his or her status message." +msgstr "" +"Dersom False vil du ikke lenge kunne se status linjer i samtaler nÃ¥r en " +"kontakt endrer hans eller hennes status og/eller status melding. " -#. FIXME: remove you and make it Gajim will not; and/or his or *her* status messages #: ../src/common/config.py:184 -msgid "If False, you will no longer see status line in chats when a contact changes his or her status and/or his status message." -msgstr "Dersom False vil du ikke lenge kunne se status linjer i samtaler nÃ¥r en kontakt endrer hans eller hennes status og/eller status melding. " +msgid "" +"can be \"none\", \"all\" or \"in_and_out\". If \"none\", Gajim will no " +"longer print status line in groupchats when a member changes his or her " +"status and/or his or her status message. If \"all\" Gajim will print all " +"status messages. If \"in_and_out\", gajim will only print FOO enters/leaves " +"room" +msgstr "" + +#: ../src/common/config.py:187 +msgid "Don't show avatar for the transport itself." +msgstr "" #: ../src/common/config.py:189 -msgid "If True and installed GTK+ and PyGTK versions are at least 2.8, make the window flash (the default behaviour in most Window Managers) when holding pending events." -msgstr "Dersom True og de installerte GTK+ og PyGTK versjonene er minst 2.8, vil vindusbehandleren blinke (vanlig oppførsel i de fleste vindusbehandlere) nÃ¥r det er ventende hendelser." +msgid "" +"If True and installed GTK+ and PyGTK versions are at least 2.8, make the " +"window flash (the default behaviour in most Window Managers) when holding " +"pending events." +msgstr "" +"Dersom True og de installerte GTK+ og PyGTK versjonene er minst 2.8, vil " +"vindusbehandleren blinke (vanlig oppførsel i de fleste vindusbehandlere) nÃ¥r " +"det er ventende hendelser." #: ../src/common/config.py:191 -msgid "Jabberd1.4 does not like sha info when one join a password protected room. Turn this option to False to stop sending sha info in groupchat presences" -msgstr "Jabberd1.4 liker ikke sha informasjon nÃ¥r man gÃ¥r inn i et passord beskyttet samtalerom. Sett dette valget til False for Ã¥ slutte Ã¥ sende sha informasjon til gruppesamtaler" +msgid "" +"Jabberd1.4 does not like sha info when one join a password protected room. " +"Turn this option to False to stop sending sha info in groupchat presences" +msgstr "" +"Jabberd1.4 liker ikke sha informasjon nÃ¥r man gÃ¥r inn i et passord beskyttet " +"samtalerom. Sett dette valget til False for Ã¥ slutte Ã¥ sende sha informasjon " +"til gruppesamtaler" -#: ../src/common/config.py:193 +#. always, never, peracct, pertype should not be translated +#: ../src/common/config.py:194 msgid "" "Controls the window where new messages are placed.\n" "'always' - All messages are sent to a single window.\n" "'never' - All messages get their own window.\n" "'peracct' - Messages for each account are sent to a specific window.\n" -"'pertype' - Each message type (e.g., chats vs. groupchats) are sent to a specific window. Note, changing this option requires restarting Gajim before the changes will take effect" +"'pertype' - Each message type (e.g., chats vs. groupchats) are sent to a " +"specific window. Note, changing this option requires restarting Gajim before " +"the changes will take effect" msgstr "" "Kontrollerer vinduet hvor nye meldinger skal plasseres.\n" "'alltid' - Alle meldinger sendes til ett vindu.\n" "'aldri' - Alle meldinger fÃ¥r egne vindu.\n" "'perkonto' - Meldinger for hver konto sendes til egne vindu.\n" -"'pertype' - Hver meldingstype (f.eks., samtaler og gruppesamtaler) sendes til forskjellige vinduer. Merk, endring av dette valget krever omstart av Gajim før det aktiveres" +"'pertype' - Hver meldingstype (f.eks., samtaler og gruppesamtaler) sendes " +"til forskjellige vinduer. Merk, endring av dette valget krever omstart av " +"Gajim før det aktiveres" -#: ../src/common/config.py:194 +#: ../src/common/config.py:195 msgid "If False, you will no longer see the avatar in the chat window" msgstr "Dersom False vil du ikke lenger se bildeikoner i samtalevinduet" -#: ../src/common/config.py:195 +#: ../src/common/config.py:196 msgid "If True, pressing the escape key closes a tab/window" msgstr "Dersom True vil man kunne lukke fane/vindu med escape knappen" -#: ../src/common/config.py:196 +#: ../src/common/config.py:197 msgid "Hides the buttons in group chat window" msgstr "Gjemmer knappene i gruppe samtale vindu" -#: ../src/common/config.py:197 +#: ../src/common/config.py:198 msgid "Hides the buttons in two persons chat window" msgstr "Gjemmer knappene i to personers samtale vindu" -#: ../src/common/config.py:198 +#: ../src/common/config.py:199 msgid "Hides the banner in a group chat window" msgstr "Gjemmer tittel banneret i gruppesamtalevinduet" -#: ../src/common/config.py:199 +#: ../src/common/config.py:200 msgid "Hides the banner in two persons chat window" msgstr "Gjemmer tittel banneret i to personers samtale vindu" -#: ../src/common/config.py:200 +#: ../src/common/config.py:201 msgid "Hides the room occupants list in groupchat window" msgstr "Gjemmer rommets medlemsliste i gruppesamtale vinduet" +#: ../src/common/config.py:202 +msgid "Merge consecutive nickname in chat window" +msgstr "" + +#: ../src/common/config.py:203 +msgid "Indentation when using merge consecutive nickame" +msgstr "" + +#: ../src/common/config.py:204 +msgid "List of colors that will be used to color nicknames in groupchats" +msgstr "" + #. yes, no, ask -#: ../src/common/config.py:233 +#: ../src/common/config.py:237 msgid "Jabberd2 workaround" msgstr "Jabberd2 omvei" -#: ../src/common/config.py:237 -msgid "If checked, Gajim will use your IP and proxies defined in file_transfer_proxies option for file transfer." -msgstr "Dersom valgt vil Gajim bruke din IP og proxier definert i file_transfer_proxies valget for filoverføring." +#: ../src/common/config.py:241 +msgid "" +"If checked, Gajim will use your IP and proxies defined in " +"file_transfer_proxies option for file transfer." +msgstr "" +"Dersom valgt vil Gajim bruke din IP og proxier definert i " +"file_transfer_proxies valget for filoverføring." -#: ../src/common/config.py:290 +#: ../src/common/config.py:297 msgid "Sleeping" msgstr "Sover" -#: ../src/common/config.py:291 +#: ../src/common/config.py:298 msgid "Back soon" msgstr "Snart tilbake" -#: ../src/common/config.py:291 +#: ../src/common/config.py:298 msgid "Back in some minutes." msgstr "Tilbake om noen minutter." -#: ../src/common/config.py:292 +#: ../src/common/config.py:299 msgid "Eating" msgstr "Spiser" -#: ../src/common/config.py:292 +#: ../src/common/config.py:299 msgid "I'm eating, so leave me a message." msgstr "Jeg spiser, sÃ¥ legg igjen en beskjed" -#: ../src/common/config.py:293 +#: ../src/common/config.py:300 msgid "Movie" msgstr "Film" -#: ../src/common/config.py:293 +#: ../src/common/config.py:300 msgid "I'm watching a movie." msgstr "Jeg ser pÃ¥ en film." -#: ../src/common/config.py:294 +#: ../src/common/config.py:301 msgid "Working" msgstr "Jobber" -#: ../src/common/config.py:294 +#: ../src/common/config.py:301 msgid "I'm working." msgstr "Jeg jobber." -#: ../src/common/config.py:295 +#: ../src/common/config.py:302 msgid "Phone" msgstr "Telefon" -#: ../src/common/config.py:295 +#: ../src/common/config.py:302 msgid "I'm on the phone." msgstr "Jeg sitter i telefonen." -#: ../src/common/config.py:296 +#: ../src/common/config.py:303 msgid "Out" msgstr "Ute" -#: ../src/common/config.py:296 +#: ../src/common/config.py:303 msgid "I'm out enjoying life" msgstr "Jeg er ute og lever livet" -#: ../src/common/config.py:305 -msgid "Sound to play when a MUC message contains one of the words in muc_highlight_words, or when a MUC message contains your nickname." -msgstr "Lyd som spilles nÃ¥r en MUC melding inneholder et av ordene i muc_highlight_words, eller nÃ¥r en MUC melding inneholder ditt kallenavn." +#: ../src/common/config.py:312 +msgid "" +"Sound to play when a MUC message contains one of the words in " +"muc_highlight_words, or when a MUC message contains your nickname." +msgstr "" +"Lyd som spilles nÃ¥r en MUC melding inneholder et av ordene i " +"muc_highlight_words, eller nÃ¥r en MUC melding inneholder ditt kallenavn." -#: ../src/common/config.py:306 -msgid "Sound to play when any MUC message arrives. (This setting is taken into account only if notify_on_all_muc_messages is True)" -msgstr "Lyd som spilles nÃ¥r en ny MUC melding kommer. (Denne instillingen er kun aktiv nÃ¥r notify_on_all_muc_messages er True)" +#: ../src/common/config.py:313 +msgid "" +"Sound to play when any MUC message arrives. (This setting is taken into " +"account only if notify_on_all_muc_messages is True)" +msgstr "" +"Lyd som spilles nÃ¥r en ny MUC melding kommer. (Denne instillingen er kun " +"aktiv nÃ¥r notify_on_all_muc_messages er True)" -#: ../src/common/config.py:314 -#: ../src/common/optparser.py:181 +#: ../src/common/config.py:321 ../src/common/optparser.py:185 msgid "green" msgstr "grønn" -#: ../src/common/config.py:318 -#: ../src/common/optparser.py:167 +#: ../src/common/config.py:325 ../src/common/optparser.py:171 msgid "grocery" msgstr "varehandel" -#: ../src/common/config.py:322 +#: ../src/common/config.py:329 msgid "human" msgstr "menneskelig" -#: ../src/common/config.py:326 +#: ../src/common/config.py:333 msgid "marine" msgstr "marine" -#: ../src/common/connection.py:152 +#: ../src/common/connection.py:172 #, python-format msgid "Connection with account \"%s\" has been lost" msgstr "Tilkobling til konto \"%s\" har blitt mistet" -#: ../src/common/connection.py:153 +#: ../src/common/connection.py:173 msgid "To continue sending and receiving messages, you will need to reconnect." msgstr "For Ã¥ sende og motta meldinger mÃ¥ du koble til pÃ¥ nytt." -#: ../src/common/connection.py:169 -#: ../src/common/connection.py:195 +#: ../src/common/connection.py:185 ../src/common/connection.py:211 #, python-format msgid "Transport %s answered wrongly to register request." msgstr "Transporten %s svarte feil pÃ¥ registrerings forespørselen." #. wrong answer -#: ../src/common/connection.py:194 +#: ../src/common/connection.py:210 msgid "Invalid answer" msgstr "Ugyldig svar" -#: ../src/common/connection.py:348 -#: ../src/common/connection.py:384 -#: ../src/common/connection.py:754 +#: ../src/common/connection.py:397 ../src/common/connection.py:433 +#: ../src/common/connection.py:857 #, python-format msgid "Could not connect to \"%s\"" msgstr "Kunne ikke koble til \"%s\"" -#: ../src/common/connection.py:362 +#: ../src/common/connection.py:411 #, python-format msgid "Connected to server %s:%s with %s" msgstr "Tilkoblet til server %s:%s med %s" -#: ../src/common/connection.py:385 +#: ../src/common/connection.py:434 msgid "Check your connection or try again later" msgstr "Sjekk nettverkstilgangen din og prøv igjen senere " -#: ../src/common/connection.py:410 +#: ../src/common/connection.py:459 #, python-format msgid "Authentication failed with \"%s\"" msgstr "Autentisering feilet med \"%s\"" -#: ../src/common/connection.py:411 +#: ../src/common/connection.py:460 msgid "Please check your login and password for correctness." msgstr "Vennligst sjekk at brukernavn og passord er korrekt." #. We didn't set a passphrase -#: ../src/common/connection.py:487 +#: ../src/common/connection.py:573 msgid "OpenPGP passphrase was not given" msgstr "OpenPGP passordsetning ble ikke gitt" #. %s is the account name here -#: ../src/common/connection.py:489 +#: ../src/common/connection.py:575 #, python-format msgid "You will be connected to %s without OpenPGP." msgstr "Du vil bli tilbkoblet til %s uten OpenPGP." #. do not show I'm invisible! -#: ../src/common/connection.py:526 +#: ../src/common/connection.py:612 msgid "invisible" msgstr "usynlig" -#: ../src/common/connection.py:527 +#: ../src/common/connection.py:613 msgid "offline" msgstr "frakoblet" -#: ../src/common/connection.py:528 +#: ../src/common/connection.py:614 #, python-format msgid "I'm %s" msgstr "Jeg er %s" #. we're not english -#: ../src/common/connection.py:611 +#: ../src/common/connection.py:699 msgid "[This message is encrypted]" msgstr "[Denne meldingen er kryptert]" -#: ../src/common/connection.py:649 +#: ../src/common/connection.py:742 #, python-format msgid "" "Subject: %s\n" @@ -4403,228 +5215,316 @@ msgstr "" "Tittel: %s\n" "%s" -#: ../src/common/connection.py:699 +#: ../src/common/connection.py:795 ../src/common/connection_handlers.py:1511 msgid "I would like to add you to my roster." msgstr "Jeg vil legge deg til min kontaktliste." -#: ../src/common/helpers.py:103 +#: ../src/common/connection_handlers.py:49 +#, fuzzy +msgid "Unable to load idle module" +msgstr "Klarer ikke Ã¥ gÃ¥ inn i gruppesamtale" + +#: ../src/common/connection_handlers.py:581 +#, python-format +msgid "Registration information for transport %s has not arrived in time" +msgstr "Registrerings informasjon for transport %s har ikke kommet tidsnok" + +#. password required to join +#. we are banned +#. room does not exist +#: ../src/common/connection_handlers.py:1450 +#: ../src/common/connection_handlers.py:1453 +#: ../src/common/connection_handlers.py:1456 +#: ../src/common/connection_handlers.py:1459 +#: ../src/common/connection_handlers.py:1462 +#: ../src/common/connection_handlers.py:1465 +#: ../src/common/connection_handlers.py:1473 +msgid "Unable to join room" +msgstr "Klarer ikke Ã¥ gÃ¥ inn i gruppesamtale" + +#: ../src/common/connection_handlers.py:1451 +msgid "A password is required to join this room." +msgstr "Et passord kreves for Ã¥ bli med i dette samtalerommet." + +#: ../src/common/connection_handlers.py:1454 +msgid "You are banned from this room." +msgstr "Du er uønsket i dette rommet." + +#: ../src/common/connection_handlers.py:1457 +msgid "Such room does not exist." +msgstr "Et slikt rom finnes ikke." + +#: ../src/common/connection_handlers.py:1460 +msgid "Room creation is restricted." +msgstr "Rom oppretting er begrenset." + +#: ../src/common/connection_handlers.py:1463 +msgid "Your registered nickname must be used." +msgstr "Ditt registrerte kallenavn mÃ¥ bli brukt. " + +#: ../src/common/connection_handlers.py:1466 +msgid "You are not in the members list." +msgstr "Du er ikke medlems listen." + +#: ../src/common/connection_handlers.py:1474 +msgid "" +"Your desired nickname is in use or registered by another occupant.\n" +"Please specify another nickname below:" +msgstr "" +"Ditt ønskede kallenavn er i bruk eller er registrert av en annen " +"samtalebruker.\n" +"Vennligst skriv et annet kallenavn under:" + +#. BE CAREFUL: no con.updateRosterItem() in a callback +#: ../src/common/connection_handlers.py:1519 +#, python-format +msgid "we are now subscribed to %s" +msgstr "vi abbonerer nÃ¥ pÃ¥ %s" + +#: ../src/common/connection_handlers.py:1521 +#, python-format +msgid "unsubscribe request from %s" +msgstr "frakoblings ønske fra %s" + +#: ../src/common/connection_handlers.py:1523 +#, python-format +msgid "we are now unsubscribed from %s" +msgstr "vi abbonerer ikke lenger pÃ¥ %s" + +#: ../src/common/connection_handlers.py:1680 +#, fuzzy, python-format +msgid "" +"JID %s is not RFC compliant. It will not be added to your roster. Use roster " +"management tools such as http://jru.jabberstudio.org/ to remove it" +msgstr "" +"Jid %s er ikke RFC kompatilbel. Den vil ikke bli lagt til kontaktlisten. " +"Bruk kontaktliste administrasjons verktøy som http://jru.jabberstudio.org/ " +"for Ã¥ fjerne den" + +#: ../src/common/helpers.py:100 msgid "Invalid character in username." msgstr "Ugyldig karakter i brukernavn." -#: ../src/common/helpers.py:108 +#: ../src/common/helpers.py:105 msgid "Server address required." msgstr "Server adresse kreves." -#: ../src/common/helpers.py:113 +#: ../src/common/helpers.py:110 msgid "Invalid character in hostname." msgstr "Ugyldig karakter i domene navn." -#: ../src/common/helpers.py:119 +#: ../src/common/helpers.py:116 msgid "Invalid character in resource." msgstr "Ugyldig karakter i ressurs." #. GiB means gibibyte -#: ../src/common/helpers.py:159 +#: ../src/common/helpers.py:156 #, python-format msgid "%s GiB" msgstr "%s GiB" #. GB means gigabyte -#: ../src/common/helpers.py:162 +#: ../src/common/helpers.py:159 #, python-format msgid "%s GB" msgstr "%s GB" #. MiB means mibibyte -#: ../src/common/helpers.py:166 +#: ../src/common/helpers.py:163 #, python-format msgid "%s MiB" msgstr "%s MiB" #. MB means megabyte -#: ../src/common/helpers.py:169 +#: ../src/common/helpers.py:166 #, python-format msgid "%s MB" msgstr "%s MB" #. KiB means kibibyte -#: ../src/common/helpers.py:173 +#: ../src/common/helpers.py:170 #, python-format msgid "%s KiB" msgstr "%s KiB" #. KB means kilo bytes -#: ../src/common/helpers.py:176 +#: ../src/common/helpers.py:173 #, python-format msgid "%s KB" msgstr "%s KB" #. B means bytes -#: ../src/common/helpers.py:179 +#: ../src/common/helpers.py:176 #, python-format msgid "%s B" msgstr "%s B" -#: ../src/common/helpers.py:189 +#: ../src/common/helpers.py:205 msgid "_Busy" msgstr "_Opptatt" -#: ../src/common/helpers.py:191 +#: ../src/common/helpers.py:207 msgid "Busy" msgstr "Opptatt" -#: ../src/common/helpers.py:194 +#: ../src/common/helpers.py:210 msgid "_Not Available" msgstr "_Ikke Tilgjengelig" -#: ../src/common/helpers.py:196 +#: ../src/common/helpers.py:212 msgid "Not Available" msgstr "Ikke tilgjengelig" -#: ../src/common/helpers.py:199 +#: ../src/common/helpers.py:215 msgid "_Free for Chat" msgstr "_Ledig for Samtale" -#: ../src/common/helpers.py:201 +#: ../src/common/helpers.py:217 msgid "Free for Chat" msgstr "Ledig for Prat" -#: ../src/common/helpers.py:204 +#: ../src/common/helpers.py:220 msgid "_Available" msgstr "_Tilgjengelig" -#: ../src/common/helpers.py:206 +#: ../src/common/helpers.py:222 msgid "Available" msgstr "Tilgjengelig" -#: ../src/common/helpers.py:208 +#: ../src/common/helpers.py:224 msgid "Connecting" msgstr "Kobler til" -#: ../src/common/helpers.py:211 +#: ../src/common/helpers.py:227 msgid "A_way" msgstr "B_orte" -#: ../src/common/helpers.py:213 +#: ../src/common/helpers.py:229 msgid "Away" msgstr "Borte" -#: ../src/common/helpers.py:216 +#: ../src/common/helpers.py:232 msgid "_Offline" msgstr "_Frakoblet" -#: ../src/common/helpers.py:218 +#: ../src/common/helpers.py:234 msgid "Offline" msgstr "Frakoblet" -#: ../src/common/helpers.py:221 +#: ../src/common/helpers.py:237 msgid "_Invisible" msgstr "_Usynlig" -#: ../src/common/helpers.py:223 -msgid "Invisible" -msgstr "Usynlig" - -#: ../src/common/helpers.py:227 +#: ../src/common/helpers.py:243 msgid "?contact has status:Unknown" msgstr "?contact has status:Ukjent" -#: ../src/common/helpers.py:229 +#: ../src/common/helpers.py:245 msgid "?contact has status:Has errors" msgstr "?contact has status:Har feilmeldinger" -#: ../src/common/helpers.py:234 +#: ../src/common/helpers.py:250 msgid "?Subscription we already have:None" msgstr "?Subscription we already have:Ingen" -#: ../src/common/helpers.py:236 +#: ../src/common/helpers.py:252 msgid "To" msgstr "Til" -#: ../src/common/helpers.py:238 +#: ../src/common/helpers.py:254 msgid "From" msgstr "Fra" -#: ../src/common/helpers.py:240 +#: ../src/common/helpers.py:256 msgid "Both" msgstr "Begge" -#: ../src/common/helpers.py:248 +#: ../src/common/helpers.py:264 msgid "?Ask (for Subscription):None" msgstr "?Ask (for Subscription):Ingen" -#: ../src/common/helpers.py:250 +#: ../src/common/helpers.py:266 msgid "Subscribe" msgstr "Abbonér" -#: ../src/common/helpers.py:259 +#: ../src/common/helpers.py:275 msgid "?Group Chat Contact Role:None" msgstr "?Group Chat Contact Role:Ingen" -#: ../src/common/helpers.py:262 +#: ../src/common/helpers.py:278 msgid "Moderators" msgstr "Modererere" -#: ../src/common/helpers.py:264 +#: ../src/common/helpers.py:280 msgid "Moderator" msgstr "Modererer" -#: ../src/common/helpers.py:267 +#: ../src/common/helpers.py:283 msgid "Participants" msgstr "Deltakere" -#: ../src/common/helpers.py:269 +#: ../src/common/helpers.py:285 msgid "Participant" msgstr "Deltaker" -#: ../src/common/helpers.py:272 +#: ../src/common/helpers.py:288 msgid "Visitors" msgstr "Besøkende" -#: ../src/common/helpers.py:274 +#: ../src/common/helpers.py:290 msgid "Visitor" msgstr "Besøk" -#: ../src/common/helpers.py:310 +#: ../src/common/helpers.py:326 msgid "is paying attention to the conversation" msgstr "er fokusert pÃ¥ en annen samtale" -#: ../src/common/helpers.py:312 +#: ../src/common/helpers.py:328 msgid "is doing something else" msgstr "gjør noe annet" -#: ../src/common/helpers.py:314 +#: ../src/common/helpers.py:330 msgid "is composing a message..." msgstr "skriver en melding..." #. paused means he or she was compoing but has stopped for a while -#: ../src/common/helpers.py:317 +#: ../src/common/helpers.py:333 msgid "paused composing a message" msgstr "tok pause i skriving av en melding" -#: ../src/common/helpers.py:319 +#: ../src/common/helpers.py:335 msgid "has closed the chat window or tab" msgstr "har lukket samtalevinduet eller fanen" #. we talk about a file -#: ../src/common/optparser.py:62 +#: ../src/common/optparser.py:60 #, python-format msgid "error: cannot open %s for reading" msgstr "feil: kan ikke Ã¥pne %s for lesing" -#: ../src/common/optparser.py:167 +#: ../src/common/optparser.py:171 msgid "gtk+" msgstr "gtk+" -#: ../src/common/optparser.py:176 -#: ../src/common/optparser.py:177 +#: ../src/common/optparser.py:180 ../src/common/optparser.py:181 msgid "cyan" msgstr "turkis" +#~ msgid "Automatically authorize contact" +#~ msgstr "Automatisk godkjenn kontakt" + +#~ msgid "Send File" +#~ msgstr "Send Fil" + +#~ msgid "Underline" +#~ msgstr "Strek Under" + #~ msgid "Would you like to overwrite it?" #~ msgstr "Ønsker du Ã¥ overskrive den?" + #~ msgid "_Join New Room..." #~ msgstr "_Bli med i Nytt Rom" + #~ msgid "Usage: /%s, sets the groupchat window to compact mode." #~ msgstr "" #~ "Bruksanvisning: /%s, setter gruppesamtale vinduet til kompakt modus." @@ -4632,8 +5532,7 @@ msgstr "turkis" #, fuzzy #~ msgid "Please modify your special notification below" #~ msgstr "Vennligst velg ett av valgene under:" -#~ msgid "Ad_vanced Actions" -#~ msgstr "Av_anserte Handlinger" + #~ msgid "Delete Message of the Day" #~ msgstr "Slett Melding for Dagen" @@ -4644,147 +5543,146 @@ msgstr "turkis" #, fuzzy #~ msgid "I want to listen to:" #~ msgstr "%s ønsker Ã¥ sende deg en fil:" + #~ msgid "Send _New Message..." #~ msgstr "Send _Ny Melding..." + #~ msgid "Set Message of the Day" #~ msgstr "Velg Melding for Dagen" + #~ msgid "Update Message of the Day" #~ msgstr "Oppdater Melding for Dagen" + #~ msgid "_XML Console..." #~ msgstr "_XML Konsoll..." + #~ msgid "Choose Avatar" #~ msgstr "Velg Bilde" + #~ msgid "Use compact view when you open a chat window" #~ msgstr "Bruk kompakt utseende nÃ¥r du Ã¥pner et samtale vindu" + #~ msgid "Use compact view when you open a group chat window" #~ msgstr "Bruk kompakt utseende nÃ¥r du Ã¥pner et gruppe samtale vindu" + #~ msgid "plain" #~ msgstr "enkel" + #~ msgid "Send" #~ msgstr "Send" + #~ msgid "%(nickname)s in room %(room_name)s has sent you a new message." #~ msgstr "%(nickname)s i rom %(room_name)s har sendt deg en ny melding." + #~ msgid "%s has sent you a new message." #~ msgstr "%s har sendt deg en ny melding." #, fuzzy #~ msgid "GUI Migration failed" #~ msgstr "vCard publisering feilet" + #~ msgid "Logs have been successfully migrated to the database." #~ msgstr "Loggene ble migrert til databasen uten feil." + #~ msgid "If checked, Gajim will also have a trayicon" #~ msgstr "Dresom valgt vil Gajim ha et statusikon (trayicon)" + #~ msgid "_Online Users" #~ msgstr "_Online Brukere" #, fuzzy #~ msgid "Start Chat with Contact" #~ msgstr "Start samtale med konto %s" + #~ msgid "All contacts in this group are offline or have errors" #~ msgstr "Alle kontakter in denne gruppen er frakoblet eller har feil" + #~ msgid "Size: " #~ msgstr "Størrelse: " + #~ msgid "Session bus is not available" #~ msgstr "Sesjons buss ikke tilgjengelig" -#, fuzzy -#~ msgid "Unable to load idle module" -#~ msgstr "Klarer ikke Ã¥ gÃ¥ inn i gruppesamtale" -#~ msgid "Unable to join room" -#~ msgstr "Klarer ikke Ã¥ gÃ¥ inn i gruppesamtale" -#~ msgid "A password is required to join this room." -#~ msgstr "Et passord kreves for Ã¥ bli med i dette samtalerommet." -#~ msgid "You are banned from this room." -#~ msgstr "Du er uønsket i dette rommet." -#~ msgid "Such room does not exist." -#~ msgstr "Et slikt rom finnes ikke." -#~ msgid "Room creation is restricted." -#~ msgstr "Rom oppretting er begrenset." -#~ msgid "Your registered nickname must be used." -#~ msgstr "Ditt registrerte kallenavn mÃ¥ bli brukt. " -#~ msgid "You are not in the members list." -#~ msgstr "Du er ikke medlems listen." -#~ msgid "" -#~ "Your desired nickname is in use or registered by another occupant.\n" -#~ "Please specify another nickname below:" -#~ msgstr "" -#~ "Ditt ønskede kallenavn er i bruk eller er registrert av en annen " -#~ "samtalebruker.\n" -#~ "Vennligst skriv et annet kallenavn under:" -#~ msgid "we are now subscribed to %s" -#~ msgstr "vi abbonerer nÃ¥ pÃ¥ %s" -#~ msgid "unsubscribe request from %s" -#~ msgstr "frakoblings ønske fra %s" -#~ msgid "we are now unsubscribed from %s" -#~ msgstr "vi abbonerer ikke lenger pÃ¥ %s" - -#, fuzzy -#~ msgid "" -#~ "JID %s is not RFC compliant. It will not be added to your roster. Use " -#~ "roster management tools such as http://jru.jabberstudio.org/ to remove it" -#~ msgstr "" -#~ "Jid %s er ikke RFC kompatilbel. Den vil ikke bli lagt til kontaktlisten. " -#~ "Bruk kontaktliste administrasjons verktøy som http://jru.jabberstudio." -#~ "org/ for Ã¥ fjerne den" -#~ msgid "Registration information for transport %s has not arrived in time" -#~ msgstr "Registrerings informasjon for transport %s har ikke kommet tidsnok" #~ msgid "Sound" #~ msgstr "Lyd" + #~ msgid "Text" #~ msgstr "Tekst" + #~ msgid "Image" #~ msgstr "Bilde" + #~ msgid "From %s" #~ msgstr "Fra %s" + #~ msgid "To %s" #~ msgstr "Til %s" + #~ msgid "You have been invited to the %(room_jid)s room by %(contact_jid)s" #~ msgstr "Du har blitt invitert til %(room_jid)s rommet av %(contact_jid)s" + #~ msgid "Manage Emoticons" #~ msgstr "Behandle Uttrykksikoner" + #~ msgid "Or choose a preset message:" #~ msgstr "Eller velg en forhÃ¥ndsvalgt melding:" + #~ msgid "Use _emoticons" #~ msgstr "Bruk _uttrykksikoner" + #~ msgid "_Set Image..." #~ msgstr "_Velg Bilde..." + #~ msgid "Switch to %s" #~ msgstr "Endre til %s" + #~ msgid "using account " #~ msgstr "bruker konto" + #~ msgid "The filesize of image \"%s\" is too large" #~ msgstr "Filstørrelsen pÃ¥ bilde \"%s\" er for stor" + #~ msgid "The file must not be more than 32 kilobytes." #~ msgstr "Filen mÃ¥ ikke være mer enn 32 kilobyte." + #~ msgid "Timeout" #~ msgstr "Tidsavbrudd" + #~ msgid "A protocol error has occured:" #~ msgstr "En protokoll feil har skjedd:" + #~ msgid "account: " #~ msgstr "konto:" + #~ msgid "Are you sure you want to leave rooms \"%s\"?" #~ msgstr "Er du sikker pÃ¥ at du vil gÃ¥ ut av rommene \"%s\"?" + #~ msgid "If you close this window, you will be disconnected from these rooms." #~ msgstr "" #~ "Dersom du lukker dette vinduet, sÃ¥ vil du bli frakoblet fra disse rommene." + #~ msgid "Activate/Disable notification for when a file transfer is complete" #~ msgstr "Aktiver/Deaktiver melding om at filoverføring er komplett" + #~ msgid "Removing selected file transfer" #~ msgstr "Fjern valgte filoverføring" + #~ msgid "Stoping selected file transfer" #~ msgstr "Stopp valgte filoverføring" -#~ msgid "Use a single chat window with _tabs" -#~ msgstr "Bruk et enkelt samtalevindu med _faner" + #~ msgid "" #~ "If you close this tab and you have history disabled, the message will be " #~ "lost." #~ msgstr "" #~ "Dersom du lukke denne fanen og du har slÃ¥tt av historikk, vil meldingen " #~ "bli borte." + #~ msgid "Cannot remove last group" #~ msgstr "Kan ikke fjerne den siste gruppen" + #~ msgid "At least one contact group must be present." #~ msgstr "Du mÃ¥ ha minst en kontakt gruppe." + #~ msgid "" #~ "pysqlite2 (aka python-pysqlite2) dependency is missing. After you install " #~ "pysqlite3, if you want to migrate your logs to the new database, please " @@ -4794,12 +5692,13 @@ msgstr "turkis" #~ "installert pysqlite2, og om du ønsker Ã¥ migrere loggene dine til den nye " #~ "databasen, vennligst les:http://trac.gajim.org/wiki/MigrateLogToDot9DB " #~ "Avslutter..." + #~ msgid "Image is too big" #~ msgstr "Bilde er for stort" + #~ msgid "" #~ "Image for emoticon has to be less than or equal to 24 pixels in width and " #~ "24 in height." #~ msgstr "" #~ "Bilde for uttrykksikon mÃ¥ være mindre enn eller lik 24 piksler i bredde " #~ "og 24 i høyde." - diff --git a/po/nl.po b/po/nl.po index 5862db6be..d197e991f 100644 --- a/po/nl.po +++ b/po/nl.po @@ -5,12 +5,12 @@ # Stéphan Kochen , 2005. # # -#: ../src/gajim-remote.py:204 ../src/gajim-remote.py:211 +#: ../src/gajim-remote.py:218 ../src/gajim-remote.py:225 msgid "" msgstr "" "Project-Id-Version: gajim\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2006-04-13 12:52+0200\n" +"POT-Creation-Date: 2006-07-04 00:03+0200\n" "PO-Revision-Date: 2005-12-19 18:44+0100\n" "Last-Translator: Stéphan Kochen \n" "Language-Team: none\n" @@ -33,30 +33,2128 @@ msgstr "" msgid "Jabber IM Client" msgstr "Jabber IM Client" -#: ../src/advanced.py:71 +#: ../data/glade/account_context_menu.glade.h:1 +#, fuzzy +msgid "Send Single _Message..." +msgstr "Enkel _Bericht Verzenden" + +#: ../data/glade/account_context_menu.glade.h:2 +msgid "_Add Contact..." +msgstr "_Contact Toevoegen..." + +#: ../data/glade/account_context_menu.glade.h:3 +msgid "_Discover Services..." +msgstr "Ontdek Services..." + +#: ../data/glade/account_context_menu.glade.h:4 +#: ../data/glade/roster_window.glade.h:15 +#: ../data/glade/systray_context_menu.glade.h:5 +msgid "_Group Chat" +msgstr "_Groupsgesprek" + +#: ../data/glade/account_context_menu.glade.h:5 +msgid "_Modify Account..." +msgstr "Account Be_werken..." + +#: ../data/glade/account_context_menu.glade.h:6 +msgid "_Status" +msgstr "_Status" + +#: ../data/glade/account_creation_wizard_window.glade.h:1 +msgid "" +"Account is being created\n" +"\n" +"Please wait..." +msgstr "" +"Account wordt aangemaakt\n" +"\n" +"Een ogenblik geduld..." + +#: ../data/glade/account_creation_wizard_window.glade.h:4 +msgid "Please choose one of the options below:" +msgstr "Kies een van de volgende opties:" + +#: ../data/glade/account_creation_wizard_window.glade.h:5 +msgid "Please fill in the data for your new account" +msgstr "Vul de informatie in voor je nieuwe account" + +#: ../data/glade/account_creation_wizard_window.glade.h:6 +msgid "Click to see features (like MSN, ICQ transports) of jabber servers" +msgstr "" +"Klik om mogelijkheden (zoals MSN, ICQ transporten) van jabber servers te zien" + +#: ../data/glade/account_creation_wizard_window.glade.h:7 +msgid "Connect when I press Finish" +msgstr "Verbind zodra ik Afronden druk" + +#: ../data/glade/account_creation_wizard_window.glade.h:8 +msgid "Gajim: Account Creation Wizard" +msgstr "Gajim: Wizard Account Aanmaken" + +#: ../data/glade/account_creation_wizard_window.glade.h:9 +msgid "I already have an account I want to use" +msgstr "Ik heb al een account die ik wil gebruiken" + +#: ../data/glade/account_creation_wizard_window.glade.h:10 +msgid "I want to _register for a new account" +msgstr "Ik wil een nieuwe account _registreren" + +#: ../data/glade/account_creation_wizard_window.glade.h:11 +#: ../data/glade/account_modification_window.glade.h:18 +msgid "If checked, Gajim will remember the password for this account" +msgstr "Indien aangevinkt zal Gajim het wachtwoord onthouden voor deze account" + +#: ../data/glade/account_creation_wizard_window.glade.h:12 +#: ../data/glade/manage_proxies_window.glade.h:6 +msgid "Pass_word:" +msgstr "_Wachtwoord:" + +#: ../data/glade/account_creation_wizard_window.glade.h:13 +#: ../data/glade/account_modification_window.glade.h:37 +msgid "Save pass_word" +msgstr "Sla _wachtwoord op" + +#: ../data/glade/account_creation_wizard_window.glade.h:14 +msgid "Servers Features" +msgstr "Server Mogelijkheden" + +#: ../data/glade/account_creation_wizard_window.glade.h:15 +#, fuzzy +msgid "Set my profile when I connect" +msgstr "Stel een contactafbeelding in zodra ik verbinding maak" + +#: ../data/glade/account_creation_wizard_window.glade.h:16 +msgid "" +"You need to have an account in order to connect\n" +"to the Jabber network." +msgstr "" +"Je hebt een account nodig om verbinding te maken\n" +"met het Jabber netwerk." + +#: ../data/glade/account_creation_wizard_window.glade.h:18 +msgid "Your JID:" +msgstr "Jouw JID:" + +#: ../data/glade/account_creation_wizard_window.glade.h:19 +#: ../data/glade/roster_window.glade.h:10 +msgid "_Advanced" +msgstr "Gea_vanceerd" + +#: ../data/glade/account_creation_wizard_window.glade.h:20 +msgid "_Finish" +msgstr "_Afronden" + +#: ../data/glade/account_creation_wizard_window.glade.h:21 +#: ../data/glade/manage_proxies_window.glade.h:9 +msgid "_Host:" +msgstr "_Host:" + +#: ../data/glade/account_creation_wizard_window.glade.h:22 +#: ../data/glade/account_modification_window.glade.h:45 +msgid "_Password:" +msgstr "_Wachtwoord:" + +#: ../data/glade/account_creation_wizard_window.glade.h:23 +#: ../data/glade/manage_proxies_window.glade.h:10 +msgid "_Port:" +msgstr "_Poort:" + +#: ../data/glade/account_creation_wizard_window.glade.h:24 +#, fuzzy +msgid "_Retype Password:" +msgstr "_Wachtwoord:" + +#: ../data/glade/account_creation_wizard_window.glade.h:25 +msgid "_Server:" +msgstr "_Server:" + +#: ../data/glade/account_creation_wizard_window.glade.h:26 +msgid "_Use proxy" +msgstr "_Gebruik proxy" + +#: ../data/glade/account_creation_wizard_window.glade.h:27 +#: ../data/glade/manage_proxies_window.glade.h:11 +msgid "_Username:" +msgstr "_Gebruikersnaam:" + +#: ../data/glade/account_modification_window.glade.h:1 +#: ../data/glade/preferences_window.glade.h:8 +msgid "Miscellaneous" +msgstr "Overige" + +#: ../data/glade/account_modification_window.glade.h:2 +msgid "OpenPGP" +msgstr "OpenPGP" + +#: ../data/glade/account_modification_window.glade.h:3 +msgid "Personal Information" +msgstr "Persoonlijke Informatie" + +#: ../data/glade/account_modification_window.glade.h:4 +msgid "Account" +msgstr "Account" + +#: ../data/glade/account_modification_window.glade.h:5 +msgid "Account Modification" +msgstr "Account Wijziging" + +#: ../data/glade/account_modification_window.glade.h:6 +msgid "Autoreconnect when connection is lost" +msgstr "Automatisch verbinding herstellen als deze verbroken wordt" + +#: ../data/glade/account_modification_window.glade.h:7 +msgid "C_onnect on Gajim startup" +msgstr "Automatisch _verbinding maken als Gajim opstart" + +#: ../data/glade/account_modification_window.glade.h:8 +msgid "Chan_ge Password" +msgstr "Verander Wachtwoord" + +#: ../data/glade/account_modification_window.glade.h:9 +msgid "" +"Check this so Gajim will connect in port 5223 where legacy servers are " +"expected to have SSL capabilities. Note that Gajim uses TLS encryption by " +"default if broadcasted by the server, and with this option enabled TLS will " +"be disabled" +msgstr "" +"Vink dit aan als je wilt dat Gajim verbinding maakt met SSL over poort 5223. " +"Let op, deze functionaliteit werkt mogelijk alleen bij oudere servers. Gajim " +"gebruikt standaard al TLS waar mogelijk. Deze optie schakelt TLS echter uit." + +#: ../data/glade/account_modification_window.glade.h:10 +msgid "Choose _Key..." +msgstr "Kies _Sleutel..." + +#: ../data/glade/account_modification_window.glade.h:11 +msgid "Click to change account's password" +msgstr "Klik om het wachtwoord van de account te veranderen" + +#: ../data/glade/account_modification_window.glade.h:12 +msgid "Connection" +msgstr "Verbinding" + +#: ../data/glade/account_modification_window.glade.h:13 +msgid "Edit Personal Information..." +msgstr "Wijzig Persoonlijke Informatie..." + +#: ../data/glade/account_modification_window.glade.h:14 +#: ../data/glade/roster_window.glade.h:5 ../src/notify.py:308 +#: ../src/notify.py:330 ../src/notify.py:342 ../src/tooltips.py:350 +msgid "Gajim" +msgstr "Gajim" + +#: ../data/glade/account_modification_window.glade.h:15 +#: ../data/glade/preferences_window.glade.h:44 +#: ../data/glade/vcard_information_window.glade.h:17 +#: ../src/roster_window.py:290 ../src/roster_window.py:1184 +#: ../src/roster_window.py:1405 +msgid "General" +msgstr "Algemeen" + +#: ../data/glade/account_modification_window.glade.h:16 +msgid "Hostname: " +msgstr "Hostnaam: " + +#: ../data/glade/account_modification_window.glade.h:17 +msgid "" +"If checked, Gajim will also broadcast some more IPs except from just your " +"IP, so file transfer has higher chances of working." +msgstr "" + +#: ../data/glade/account_modification_window.glade.h:19 +msgid "" +"If checked, Gajim will send keep-alive packets so it prevents connection " +"timeout which results in disconnection" +msgstr "" +"Indien aangevinkt zal Gajim keep-alive-paketten sturen om de verbinding in " +"stand te houden" + +#: ../data/glade/account_modification_window.glade.h:20 +msgid "" +"If checked, Gajim will store the password in ~/.gajim/config with 'read' " +"permission only for you" +msgstr "" +"Indien aangevinkt zal Gajim wachtwoorden opslaan in ~/.gajim/config met " +"alleen leesrechten voor allen jou" + +#: ../data/glade/account_modification_window.glade.h:21 +msgid "" +"If checked, Gajim, when launched, will automatically connect to jabber using " +"this account" +msgstr "" +"Indien aangevinkt zal Gajim automatisch verbinding maken met deze account " +"bij het opstarten" + +#: ../data/glade/account_modification_window.glade.h:22 +msgid "" +"If checked, any change to the global status (handled by the combobox at the " +"bottom of the roster window) will change the status of this account " +"accordingly" +msgstr "" +"Indien aangevinkt zal elke verandering in globale status (bedient met de " +"lijstknop onderaan het roostervenster) de status van deze account " +"meeveranderen." + +#: ../data/glade/account_modification_window.glade.h:23 +msgid "Information about you, as stored in the server" +msgstr "Informatie over jou, zoals op de server opgeslagen" + +#: ../data/glade/account_modification_window.glade.h:24 +msgid "Manage..." +msgstr "Beheer..." + +#: ../data/glade/account_modification_window.glade.h:25 ../src/config.py:1448 +msgid "No key selected" +msgstr "Geen sleutel geselecteerd" + +#. None means no proxy profile selected +#: ../data/glade/account_modification_window.glade.h:27 ../src/config.py:1053 +#: ../src/config.py:1058 ../src/config.py:1230 ../src/config.py:1505 +#: ../src/config.py:1578 ../src/config.py:2282 +msgid "None" +msgstr "Geen" + +#: ../data/glade/account_modification_window.glade.h:28 +msgid "Personal Information" +msgstr "Persoonlijke Informatie" + +#: ../data/glade/account_modification_window.glade.h:29 +msgid "Port: " +msgstr "Poort: " + +#: ../data/glade/account_modification_window.glade.h:30 +msgid "Priori_ty:" +msgstr "Priori_teit" + +#: ../data/glade/account_modification_window.glade.h:31 +msgid "" +"Priority is used in Jabber to determine who gets the events from the jabber " +"server when two or more clients are connected using the same account; The " +"client with the highest priority gets the events" +msgstr "" +"Prioriteit wordt in Jabber gebruikt om te bepalen welke client berichten " +"ontvangt als er twee keer op dezelfde account ingelogd is; de hoogste " +"prioriteit wint." + +#: ../data/glade/account_modification_window.glade.h:32 +msgid "Proxy:" +msgstr "Proxy:" + +#: ../data/glade/account_modification_window.glade.h:33 +msgid "Resour_ce: " +msgstr "_Bron: " + +#: ../data/glade/account_modification_window.glade.h:34 +msgid "" +"Resource is sent to the Jabber server in order to separate the same JID in " +"two or more parts depending on the number of the clients connected in the " +"same server with the same account. So you might be connected in the same " +"account with resource 'Home' and 'Work' at the same time. The resource which " +"has the highest priority will get the events. (see below)" +msgstr "" +"De bron wordt verstuurd naar de Jabber server om onderscheid te maken tussen " +"twee of meer dezelfde JIDs. Op deze manier is het mogelijk om bijvoorbeeld " +"met zowel met een bron 'Thuis' als een bron 'Werk' ingelogd te zijn. De " +"prioriteit bepaald dan wie berichten ontvangt. (zie hieronder)" + +#: ../data/glade/account_modification_window.glade.h:35 +msgid "Save _passphrase (insecure)" +msgstr "Sla _wachtwoord op (onveilig)" + +#: ../data/glade/account_modification_window.glade.h:36 +msgid "Save conversation _logs for all contacts" +msgstr "Sla gespreks_logboek op voor alle contacten" + +#: ../data/glade/account_modification_window.glade.h:38 +msgid "Send keep-alive packets" +msgstr "Keep-alive-pakketten verzenden" + +#: ../data/glade/account_modification_window.glade.h:39 +msgid "Synch_ronize account status with global status" +msgstr "Synch_roniseer account status met globale status" + +#: ../data/glade/account_modification_window.glade.h:40 +msgid "Use _SSL (legacy)" +msgstr "Gebruik _SSL (verouderd)" + +#: ../data/glade/account_modification_window.glade.h:41 +msgid "Use custom hostname/port" +msgstr "Gebruik aangepaste hostnaam/poort" + +#: ../data/glade/account_modification_window.glade.h:42 +#, fuzzy +msgid "Use file transfer proxies" +msgstr "bestandsoverdrachtlijst" + +#: ../data/glade/account_modification_window.glade.h:43 +#: ../data/glade/add_new_contact_window.glade.h:6 +msgid "_Jabber ID:" +msgstr "_Jabber ID:" + +#: ../data/glade/account_modification_window.glade.h:44 +msgid "_Name: " +msgstr "_Naam: " + +#: ../data/glade/accounts_window.glade.h:1 +msgid "Accounts" +msgstr "Accounts" + +#: ../data/glade/accounts_window.glade.h:2 +msgid "" +"If you have 2 or more accounts and it is checked, Gajim will list all " +"contacts as if you had one account" +msgstr "" +"Indien aangevinkt en je twee of meer accounts hebt, zal Gajim de contacten " +"van alle accounts samenvoegen alsof ze een grote account zijn." + +#: ../data/glade/accounts_window.glade.h:3 +msgid "_Merge accounts" +msgstr "Accounts _samenvoegen" + +#: ../data/glade/accounts_window.glade.h:4 +msgid "_Modify" +msgstr "Be_werk" + +#: ../data/glade/accounts_window.glade.h:5 +#: ../data/glade/remove_account_window.glade.h:4 +msgid "_Remove" +msgstr "_Verwijder" + +#: ../data/glade/add_new_contact_window.glade.h:1 +#, fuzzy +msgid "A_llow this contact to view my status" +msgstr "Sta hem/haar toe mijn status te zien" + +#: ../data/glade/add_new_contact_window.glade.h:2 +msgid "Add New Contact" +msgstr "Nieuwe Contact Toevoegen" + +#: ../data/glade/add_new_contact_window.glade.h:3 +msgid "I would like to add you to my contact list." +msgstr "Ik wil je graag toevoegen aan mijn contactlijst" + +#: ../data/glade/add_new_contact_window.glade.h:4 +#, fuzzy +msgid "_Account:" +msgstr "Account" + +#: ../data/glade/add_new_contact_window.glade.h:5 +#, fuzzy +msgid "_Group:" +msgstr "Groep:" + +#: ../data/glade/add_new_contact_window.glade.h:7 +#, fuzzy +msgid "_Nickname:" +msgstr "Bijnaam:" + +#: ../data/glade/add_new_contact_window.glade.h:8 +#, fuzzy +msgid "_Protocol:" +msgstr "Protocol:" + +#: ../data/glade/add_new_contact_window.glade.h:9 +msgid "_Subscribe" +msgstr "_Abonneer" + +#: ../data/glade/add_new_contact_window.glade.h:10 +#, fuzzy +msgid "_User ID:" +msgstr "Gebruikers ID:" + +#: ../data/glade/advanced_configuration_window.glade.h:1 +msgid "Description" +msgstr "Beschrijving" + +#: ../data/glade/advanced_configuration_window.glade.h:2 +msgid "NOTE: You should restart gajim for some setting to take effect" +msgstr "" + +#: ../data/glade/advanced_configuration_window.glade.h:3 +msgid "Advanced Configuration Editor" +msgstr "Geavanceerde Configuratie Wijzigen" + +#: ../data/glade/advanced_configuration_window.glade.h:4 +msgid "Filter:" +msgstr "Filter:" + +#: ../data/glade/advanced_menuitem_menu.glade.h:1 +msgid "Delete MOTD" +msgstr "Wis MOTD" + +#: ../data/glade/advanced_menuitem_menu.glade.h:2 +msgid "Deletes Message of the Day" +msgstr "Zal het Bericht van de Dag wissen" + +#: ../data/glade/advanced_menuitem_menu.glade.h:3 +msgid "Sends a message to currently connected users to this server" +msgstr "Stuurt een bericht naar gebruikers momenteel verbonden met deze server" + +#: ../data/glade/advanced_menuitem_menu.glade.h:4 +msgid "Set MOTD" +msgstr "Stel MOTD in" + +#: ../data/glade/advanced_menuitem_menu.glade.h:5 +msgid "Sets Message of the Day" +msgstr "Stelt het Bericht van de Dag in" + +#: ../data/glade/advanced_menuitem_menu.glade.h:6 +msgid "Show _XML Console" +msgstr "_XML Console Weergeven" + +#: ../data/glade/advanced_menuitem_menu.glade.h:7 +msgid "Update MOTD" +msgstr "MOTD Bijwerken" + +#: ../data/glade/advanced_menuitem_menu.glade.h:8 +msgid "Updates Message of the Day" +msgstr "Werkt Bericht van de Dag bij" + +#: ../data/glade/advanced_menuitem_menu.glade.h:9 +msgid "_Administrator" +msgstr "_Administrator" + +#: ../data/glade/advanced_menuitem_menu.glade.h:10 +msgid "_Privacy Lists" +msgstr "" + +#: ../data/glade/advanced_menuitem_menu.glade.h:11 +msgid "_Send Server Message" +msgstr "Ver_stuur Server Bericht" + +#: ../data/glade/advanced_menuitem_menu.glade.h:12 +msgid "_Send Single Message" +msgstr "Ver_stuur Enkel Bericht" + +#: ../data/glade/advanced_notifications_window.glade.h:1 +msgid " a window/tab opened with that contact " +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:2 +#, fuzzy +msgid "Actions" +msgstr "Toepassingen" + +#: ../data/glade/advanced_notifications_window.glade.h:3 +#, fuzzy +msgid "Conditions" +msgstr "Geluiden" + +#: ../data/glade/advanced_notifications_window.glade.h:4 +#: ../data/glade/preferences_window.glade.h:10 +msgid "Sounds" +msgstr "Geluiden" + +#: ../data/glade/advanced_notifications_window.glade.h:5 +#, fuzzy +msgid "Add" +msgstr "Adres" + +#: ../data/glade/advanced_notifications_window.glade.h:6 +#, fuzzy +msgid "Advanced Actions" +msgstr "Gea_vanceerde Acties" + +#: ../data/glade/advanced_notifications_window.glade.h:7 +#, fuzzy +msgid "Advanced Notifications Control" +msgstr "Geavanceerde Configuratie Wijzigen" + +#: ../data/glade/advanced_notifications_window.glade.h:8 +#, fuzzy +msgid "All Status " +msgstr "Status: " + +#: ../data/glade/advanced_notifications_window.glade.h:9 +msgid "And I " +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:10 +#, fuzzy +msgid "Away " +msgstr "Afwezig" + +#: ../data/glade/advanced_notifications_window.glade.h:11 +#, fuzzy +msgid "Busy " +msgstr "Bezig" + +#: ../data/glade/advanced_notifications_window.glade.h:12 +msgid "Don't have " +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:13 +#, fuzzy +msgid "Down" +msgstr "Download" + +#: ../data/glade/advanced_notifications_window.glade.h:14 +msgid "Have " +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:15 +#: ../src/common/helpers.py:239 +msgid "Invisible" +msgstr "Onzichtbaar" + +#: ../data/glade/advanced_notifications_window.glade.h:16 +#, fuzzy +msgid "Launch a command" +msgstr "commando" + +#: ../data/glade/advanced_notifications_window.glade.h:17 +#, fuzzy +msgid "List of special notifications settings" +msgstr "Visuele Meldingen" + +#: ../data/glade/advanced_notifications_window.glade.h:18 +#, fuzzy +msgid "Not Available " +msgstr "Niet Beschikbaar" + +#: ../data/glade/advanced_notifications_window.glade.h:19 +#, fuzzy +msgid "Online / Free For Chat" +msgstr "Open voor Gesprek" + +#: ../data/glade/advanced_notifications_window.glade.h:20 +#, fuzzy +msgid "Play a sound" +msgstr "Speel _geluiden af" + +#: ../data/glade/advanced_notifications_window.glade.h:21 +msgid "" +"Receive a Message\n" +"Contact Connected\n" +"Contact Disconnected\n" +"Contact Change Status\n" +"Group Chat Message Highlight\n" +"Group Chat Message Received\n" +"File Transfert Resquest\n" +"File Transfert Started\n" +"File Transfert Finished" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:30 +msgid "Some special(s) status..." +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:31 +msgid "Up" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:32 +msgid "When " +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:33 +msgid "_Activate Windows manager UrgencyHint to make chat taskbar to flash" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:34 +#, fuzzy +msgid "_Disable auto opening chat window" +msgstr "" +"Vraag bevestiging voor het sluiten van een groepsgespreksvenster of -tab." + +#: ../data/glade/advanced_notifications_window.glade.h:35 +msgid "_Disable existing popup window" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:36 +msgid "_Disable existing sound for this event" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:37 +msgid "_Disable showing event in roster" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:38 +msgid "_Disable showing event in systray" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:39 +msgid "_Inform me with a popup window" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:40 +#, fuzzy +msgid "_Open chat window with user" +msgstr "Gebruik enkel gespreksvenster met _tabs" + +#: ../data/glade/advanced_notifications_window.glade.h:41 +#, fuzzy +msgid "_Show event in roster" +msgstr "Alleen in _rooster weergeven" + +#: ../data/glade/advanced_notifications_window.glade.h:42 +#, fuzzy +msgid "_Show event in systray" +msgstr "Alleen in _rooster weergeven" + +#: ../data/glade/advanced_notifications_window.glade.h:43 +msgid "" +"contact(s)\n" +"group(s)\n" +"everybody" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:46 +#, fuzzy +msgid "for " +msgstr "Poort: " + +#: ../data/glade/advanced_notifications_window.glade.h:47 +msgid "when I'm " +msgstr "" + +#: ../data/glade/change_password_dialog.glade.h:1 +msgid "Change Password" +msgstr "Verander Wachtwoord" + +#: ../data/glade/change_password_dialog.glade.h:2 +msgid "Enter it again for confirmation:" +msgstr "Geef opnieuw op ter bevestiging:" + +#: ../data/glade/change_password_dialog.glade.h:3 +msgid "Enter new password:" +msgstr "Geef nieuw wachtwoord op:" + +#: ../data/glade/change_status_message_dialog.glade.h:1 +#, fuzzy +msgid "Type your new status message" +msgstr "Typ je nieuwr statusbericht:" + +#: ../data/glade/change_status_message_dialog.glade.h:2 +#, fuzzy +msgid "Preset messages:" +msgstr "statusbericht" + +#: ../data/glade/change_status_message_dialog.glade.h:3 +#, fuzzy +msgid "Save as Preset..." +msgstr "Sla Bestand op als..." + +#: ../data/glade/chat_context_menu.glade.h:1 +msgid "Join _Group Chat" +msgstr "Neem deel aan _Groepsgesprek" + +#: ../data/glade/chat_context_menu.glade.h:2 +#: ../data/glade/chat_control_popup_menu.glade.h:4 +#: ../data/glade/gc_occupants_menu.glade.h:2 +#: ../data/glade/roster_contact_context_menu.glade.h:8 +msgid "_Add to Roster" +msgstr "_Toevoegen aan Roster" + +#: ../data/glade/chat_context_menu.glade.h:3 +msgid "_Copy JID/Email Address" +msgstr "_Kopieer JID/Email Adres" + +#: ../data/glade/chat_context_menu.glade.h:4 +msgid "_Copy Link Location" +msgstr "_Kopieer Link Lokatie" + +#: ../data/glade/chat_context_menu.glade.h:5 +msgid "_Open Email Composer" +msgstr "_Open Email Samensteller" + +#: ../data/glade/chat_context_menu.glade.h:6 +msgid "_Open Link in Browser" +msgstr "_Open Link in Browser" + +#: ../data/glade/chat_context_menu.glade.h:7 +#: ../data/glade/roster_window.glade.h:19 +#: ../data/glade/systray_context_menu.glade.h:6 +msgid "_Start Chat" +msgstr "_Start Gesprek" + +#: ../data/glade/chat_control_popup_menu.glade.h:1 +msgid "Click to see past conversations with this contact" +msgstr "Klik om de gespreksgeschiedenis van deze contact te bekijken" + +#: ../data/glade/chat_control_popup_menu.glade.h:2 +#: ../data/glade/roster_contact_context_menu.glade.h:6 +msgid "Send _File" +msgstr "_Bestand Verzenden" + +#: ../data/glade/chat_control_popup_menu.glade.h:3 +msgid "Toggle Open_PGP Encryption" +msgstr "Schakel Open_PGP Codering om" + +#: ../data/glade/chat_control_popup_menu.glade.h:5 +#: ../data/glade/gc_control_popup_menu.glade.h:6 +msgid "_Compact View Alt+C" +msgstr "_Compacte Weergave Alt+C" + +#: ../data/glade/chat_control_popup_menu.glade.h:6 +#: ../data/glade/gc_control_popup_menu.glade.h:7 +#: ../data/glade/gc_occupants_menu.glade.h:5 +#: ../data/glade/roster_contact_context_menu.glade.h:11 +msgid "_History" +msgstr "_Geschiedenis" + +#: ../data/glade/data_form_window.glade.h:1 +msgid "Room Configuration" +msgstr "Ruimte Configuratie" + +#: ../data/glade/edit_groups_dialog.glade.h:1 +msgid "Edit Groups" +msgstr "Wijzig Groepen" + +#: ../data/glade/filetransfers.glade.h:1 +msgid "A list of active, completed and stopped file transfers" +msgstr "Een lijst van actieve, afgeronde en gestopte bestandsoverdrachten" + +#: ../data/glade/filetransfers.glade.h:2 +msgid "Cancel file transfer" +msgstr "Bestandsoverdracht annuleren" + +#: ../data/glade/filetransfers.glade.h:3 +msgid "Cancels the selected file transfer" +msgstr "Annuleert de geselecteerde bestandsoverdracht" + +#: ../data/glade/filetransfers.glade.h:4 +msgid "Cancels the selected file transfer and removes incomplete file" +msgstr "" +"Annuleert de geselecteerde bestandsoverdracht en verwijdert het onvolledige " +"bestand" + +#: ../data/glade/filetransfers.glade.h:5 +msgid "Clean _up" +msgstr "Ruim _op" + +#: ../data/glade/filetransfers.glade.h:6 +msgid "File Transfers" +msgstr "Bestandsoverdrachten" + +#: ../data/glade/filetransfers.glade.h:7 +msgid "Hides the window" +msgstr "Verbergt het venster" + +#: ../data/glade/filetransfers.glade.h:8 +msgid "Remove file transfer from the list." +msgstr "Verwijder bestandsoverdracht van de lijst." + +#: ../data/glade/filetransfers.glade.h:9 +msgid "Removes completed, canceled and failed file transfers from the list" +msgstr "" +"Verwijdert afgeronde, geannuleerde en mislukte bestandsoverdrachten van de " +"lijst" + +#: ../data/glade/filetransfers.glade.h:10 +msgid "Shows a list of file transfers between you and other" +msgstr "Laat een lijst met bestandsoverdrachten zien tussen jou en ander" + +#: ../data/glade/filetransfers.glade.h:11 +msgid "" +"This action removes single file transfer from the list. If the transfer is " +"active, it is first stopped and then removed" +msgstr "" +"Deze actie verwijdert een enkele bestandsoverdracht van de lijst. Als de " +"overdracht actief is, wordt hij eerst gestopt en dan verwijdert" + +#: ../data/glade/filetransfers.glade.h:12 +msgid "When a file transfer is complete show a popup notification" +msgstr "Laat een popup zien als een bestandsoverdracht voltooid is" + +#: ../data/glade/filetransfers.glade.h:13 ../src/filetransfers_window.py:753 +msgid "_Continue" +msgstr "_Verder" + +#: ../data/glade/filetransfers.glade.h:14 +msgid "_Notify me when a file transfer is complete" +msgstr "_Stel mij op de hoogte als een bestandsoverdracht voltooid is" + +#: ../data/glade/filetransfers.glade.h:15 ../src/filetransfers_window.py:190 +msgid "_Open Containing Folder" +msgstr "_Open Bovenliggende Map" + +#: ../data/glade/filetransfers.glade.h:16 +msgid "_Pause" +msgstr "_Pauze" + +#: ../data/glade/filetransfers.glade.h:17 +msgid "file transfers list" +msgstr "bestandsoverdrachtlijst" + +#: ../data/glade/gajim_themes_window.glade.h:1 +msgid "Chatstate Tab Colors" +msgstr "" + +#: ../data/glade/gajim_themes_window.glade.h:2 +msgid "" +"Account\n" +"Group\n" +"Contact\n" +"Banner" +msgstr "" +"Account\n" +"Groep\n" +"Contact\n" +"Vaandel" + +#: ../data/glade/gajim_themes_window.glade.h:6 +#: ../data/glade/privacy_list_edit_window.glade.h:4 ../src/config.py:326 +msgid "Active" +msgstr "Actief" + +#: ../data/glade/gajim_themes_window.glade.h:7 +msgid "Bold" +msgstr "Vetgedrukt" + +#: ../data/glade/gajim_themes_window.glade.h:8 +msgid "Composing" +msgstr "" + +#: ../data/glade/gajim_themes_window.glade.h:9 +msgid "Font style:" +msgstr "Letterstijl:" + +#: ../data/glade/gajim_themes_window.glade.h:10 +msgid "Gajim Themes Customization" +msgstr "Gajim Themas Aanpassen" + +#: ../data/glade/gajim_themes_window.glade.h:11 +#, fuzzy +msgid "Gone" +msgstr "Geen" + +#: ../data/glade/gajim_themes_window.glade.h:12 +#, fuzzy +msgid "Inactive" +msgstr "Actief" + +#: ../data/glade/gajim_themes_window.glade.h:13 +msgid "Italic" +msgstr "Schuingedrukt" + +#: ../data/glade/gajim_themes_window.glade.h:14 +#, fuzzy +msgid "" +"MUC\n" +"Messages" +msgstr "_Bericht" + +#: ../data/glade/gajim_themes_window.glade.h:16 +msgid "" +"MUC Directed\n" +"Messages" +msgstr "" + +#: ../data/glade/gajim_themes_window.glade.h:18 ../src/tooltips.py:667 +msgid "Paused" +msgstr "Gepauzeerd" + +#: ../data/glade/gajim_themes_window.glade.h:19 +msgid "Text _color:" +msgstr "Tekst_kleur" + +#: ../data/glade/gajim_themes_window.glade.h:20 +msgid "Text _font:" +msgstr "Letter_type" + +#: ../data/glade/gajim_themes_window.glade.h:21 +msgid "_Background:" +msgstr "_Achtergrond:" + +#: ../data/glade/gc_control_popup_menu.glade.h:1 +msgid "Change _Nickname" +msgstr "Verander Bij_naam" + +#: ../data/glade/gc_control_popup_menu.glade.h:2 +msgid "Change _Subject" +msgstr "Verander _Onderwerp" + +#: ../data/glade/gc_control_popup_menu.glade.h:3 +msgid "Click to see past conversation in this room" +msgstr "Klik om de gespreksgeschiedenis van deze ruimte te bekijken" + +#: ../data/glade/gc_control_popup_menu.glade.h:4 +msgid "Configure _Room" +msgstr "Configureer _Ruimte" + +#: ../data/glade/gc_control_popup_menu.glade.h:5 +msgid "_Bookmark This Room" +msgstr "Maak _Bladwijzer Voor Deze Ruimte" + +#: ../data/glade/gc_occupants_menu.glade.h:1 +msgid "Mo_derator" +msgstr "_Beheerder" + +#: ../data/glade/gc_occupants_menu.glade.h:3 +msgid "_Admin" +msgstr "_Admin" + +#: ../data/glade/gc_occupants_menu.glade.h:4 +msgid "_Ban" +msgstr "Ver_bannen" + +#: ../data/glade/gc_occupants_menu.glade.h:6 +msgid "_Kick" +msgstr "Uit_schoppen" + +#: ../data/glade/gc_occupants_menu.glade.h:7 +msgid "_Member" +msgstr "_Lid" + +#: ../data/glade/gc_occupants_menu.glade.h:8 +msgid "_Occupant Actions" +msgstr "_Gebruiker Acties" + +#: ../data/glade/gc_occupants_menu.glade.h:9 +msgid "_Owner" +msgstr "_Eigenaar" + +#: ../data/glade/gc_occupants_menu.glade.h:10 +msgid "_Send Private Message" +msgstr "Ver_stuur Privé Bericht" + +#: ../data/glade/gc_occupants_menu.glade.h:11 +msgid "_Voice" +msgstr "_Stem" + +#: ../data/glade/history_manager.glade.h:1 +msgid "" +"Welcome to Gajim History Logs Manager\n" +"\n" +"You can select logs from the left and/or search database from below.\n" +"\n" +"WARNING:\n" +"If you plan to do massive deletions, please make sure Gajim is not running. " +"Generally avoid deletions with contacts you currently chat with." +msgstr "" + +#: ../data/glade/history_manager.glade.h:7 +#, fuzzy +msgid "Delete" +msgstr "Wis MOTD" + +#: ../data/glade/history_manager.glade.h:8 +msgid "Export" +msgstr "" + +#: ../data/glade/history_manager.glade.h:9 +msgid "Gajim History Logs Manager" +msgstr "" + +#: ../data/glade/history_manager.glade.h:10 +#, fuzzy +msgid "_Search Database" +msgstr "_Zoek" + +#: ../data/glade/history_window.glade.h:1 +msgid "Build custom query" +msgstr "Bouw aangepaste query" + +#: ../data/glade/history_window.glade.h:2 +msgid "Conversation History" +msgstr "Gespreksgeschiedenis" + +#: ../data/glade/history_window.glade.h:3 +msgid "Query Builder..." +msgstr "Query Bouwer..." + +#: ../data/glade/history_window.glade.h:4 +#, fuzzy +msgid "Search" +msgstr "_Zoek" + +#: ../data/glade/history_window.glade.h:5 +msgid "_Search" +msgstr "_Zoek" + +#: ../data/glade/invitation_received_dialog.glade.h:1 +msgid "Accept" +msgstr "Accepteer" + +#: ../data/glade/invitation_received_dialog.glade.h:2 +#: ../data/glade/privacy_list_edit_window.glade.h:8 +msgid "Deny" +msgstr "Weigeren" + +#: ../data/glade/invitation_received_dialog.glade.h:3 +msgid "Invitation Received" +msgstr "Uitnodiging Ontvangen" + +#: ../data/glade/join_groupchat_window.glade.h:1 ../src/dialogs.py:941 +msgid "Join Group Chat" +msgstr "Neem deel aan Groepsgesprek" + +#: ../data/glade/join_groupchat_window.glade.h:2 +#: ../data/glade/manage_bookmarks_window.glade.h:4 +#: ../data/glade/vcard_information_window.glade.h:28 +msgid "Nickname:" +msgstr "Bijnaam:" + +#: ../data/glade/join_groupchat_window.glade.h:3 +#: ../data/glade/manage_bookmarks_window.glade.h:5 +msgid "Password:" +msgstr "Wachtwoord:" + +#: ../data/glade/join_groupchat_window.glade.h:4 +msgid "Recently:" +msgstr "Recent:" + +#: ../data/glade/join_groupchat_window.glade.h:5 +#: ../data/glade/manage_bookmarks_window.glade.h:7 +msgid "Room:" +msgstr "Ruimte:" + +#: ../data/glade/join_groupchat_window.glade.h:6 +#: ../data/glade/manage_bookmarks_window.glade.h:8 +msgid "Server:" +msgstr "Server:" + +#: ../data/glade/join_groupchat_window.glade.h:7 ../src/disco.py:1145 +#: ../src/disco.py:1507 +msgid "_Join" +msgstr "_Binnengaan" + +#: ../data/glade/manage_accounts_window.glade.h:1 +msgid "Manage Accounts" +msgstr "Beheer Accounts" + +#: ../data/glade/manage_bookmarks_window.glade.h:1 +msgid "Auto join" +msgstr "Automatisch binnengaan" + +#: ../data/glade/manage_bookmarks_window.glade.h:2 +msgid "If checked, Gajim will join this group chat on startup" +msgstr "" +"Indien aangevinkt zal Gajim zich automatisch aanmelden bij dit groepsgesprek " +"tijdens het opstarten" + +#: ../data/glade/manage_bookmarks_window.glade.h:3 +msgid "Manage Bookmarks" +msgstr "Beheer Bladwijzers" + +#: ../data/glade/manage_bookmarks_window.glade.h:6 +#, fuzzy +msgid "Print status:" +msgstr "Print tijd:" + +#: ../data/glade/manage_bookmarks_window.glade.h:9 +msgid "Title:" +msgstr "Titel:" + +#: ../data/glade/manage_proxies_window.glade.h:1 +msgid "Properties" +msgstr "Eigenschappen" + +#: ../data/glade/manage_proxies_window.glade.h:2 +msgid "Settings" +msgstr "Instellingen" + +#: ../data/glade/manage_proxies_window.glade.h:3 +msgid "HTTP Connect" +msgstr "HTTP Verbinden" + +#: ../data/glade/manage_proxies_window.glade.h:4 +msgid "Manage Proxy Profiles" +msgstr "Beheer Proxy Profielen" + +#: ../data/glade/manage_proxies_window.glade.h:5 +#: ../data/glade/vcard_information_window.glade.h:27 +msgid "Name:" +msgstr "Naam:" + +#: ../data/glade/manage_proxies_window.glade.h:7 +msgid "Type:" +msgstr "Type:" + +#: ../data/glade/manage_proxies_window.glade.h:8 +msgid "Use authentication" +msgstr "Gebruik aanmelding" + +#: ../data/glade/message_window.glade.h:1 +#, fuzzy +msgid "Click to insert an emoticon (Alt+M)" +msgstr "Klik om een emoticon in te voegen (Alt+E)" + +#: ../data/glade/message_window.glade.h:2 ../src/chat_control.py:966 +msgid "OpenPGP Encryption" +msgstr "OpenPGP Versleuteling" + +#. Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector) +#: ../data/glade/message_window.glade.h:4 +#: ../data/glade/roster_window.glade.h:9 +msgid "_Actions" +msgstr "_Acties" + +#. Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector) +#: ../data/glade/message_window.glade.h:6 +#: ../data/glade/xml_console_window.glade.h:11 +#: ../src/filetransfers_window.py:249 +msgid "_Send" +msgstr "Ver_stuur" + +#: ../data/glade/passphrase_dialog.glade.h:1 +msgid "Passphrase" +msgstr "Wachtwoord" + +#: ../data/glade/preferences_window.glade.h:1 +msgid "Advanced Configuration Editor" +msgstr "Geavanceerde Instellingen Wijzigen" + +#: ../data/glade/preferences_window.glade.h:2 +msgid "Applications" +msgstr "Toepassingen" + +#. a header for custom browser/client/file manager. so translate sth like: Custom Settings +#: ../data/glade/preferences_window.glade.h:4 +msgid "Custom" +msgstr "Aangepast" + +#: ../data/glade/preferences_window.glade.h:5 +msgid "Format of a line" +msgstr "Formatteer een gespreksregel" + +#: ../data/glade/preferences_window.glade.h:6 +#, fuzzy +msgid "GMail Options" +msgstr "Toepassingen" + +#: ../data/glade/preferences_window.glade.h:7 +msgid "Interface Customization" +msgstr "Interface Aanpassingen" + +#: ../data/glade/preferences_window.glade.h:9 +msgid "Preset Status Messages" +msgstr "Vooraf Ingestelde Status Berichten" + +#: ../data/glade/preferences_window.glade.h:11 +msgid "Visual Notifications" +msgstr "Visuele Meldingen" + +#: ../data/glade/preferences_window.glade.h:12 +#, fuzzy +msgid "A_fter nickname:" +msgstr "Na bijnaam:" + +#: ../data/glade/preferences_window.glade.h:13 +msgid "Advanced" +msgstr "Geavanceerd" + +#: ../data/glade/preferences_window.glade.h:14 +msgid "" +"All chat states\n" +"Composing only\n" +"Disabled" +msgstr "" +"Alle typen toestanden\n" +"Alleen bij typen van bericht\n" +"Uitgeschakeld" + +#: ../data/glade/preferences_window.glade.h:17 +msgid "Allow _OS information to be sent" +msgstr "Sta toe informatie over _besturingssysteem te verzenden" + +#: ../data/glade/preferences_window.glade.h:18 +msgid "Allow popup/notifications when I'm _away/na/busy/invisible" +msgstr "" +"Laat popups/mededelingen zien als ik _afwezig/niet beschikbaar/bezig/" +"onzichtbaar ben" + +#: ../data/glade/preferences_window.glade.h:19 +msgid "Also known as iChat style" +msgstr "Ook bekend als iChat-stijl" + +#: ../data/glade/preferences_window.glade.h:20 +msgid "Ask status message when I:" +msgstr "Vraag om status bericht als ik:" + +#: ../data/glade/preferences_window.glade.h:21 +msgid "Auto _away after:" +msgstr "Automatisch _afwezig na:" + +#: ../data/glade/preferences_window.glade.h:22 +msgid "Auto _not available after:" +msgstr "Automatisch _niet beschikbaar na:" + +# deelnemen? +#: ../data/glade/preferences_window.glade.h:23 +msgid "" +"Autodetect on every Gajim startup\n" +"Always use GNOME default applications\n" +"Always use KDE default applications\n" +"Custom" +msgstr "" +"Herken automatisch als Gajim opstart\n" +"Gebruik altijd standaard GNOME toepassingen\n" +"Gebruik altijd standaard KDE toepassingen\n" +"Aangepast" + +#: ../data/glade/preferences_window.glade.h:27 +#, fuzzy +msgid "B_efore nickname:" +msgstr "Voor bijnaam:" + +#: ../data/glade/preferences_window.glade.h:28 ../src/chat_control.py:718 +msgid "Chat" +msgstr "Gesprek" + +#: ../data/glade/preferences_window.glade.h:29 +msgid "Chat state noti_fications:" +msgstr "Gesprekstoestands _mededelingen:" + +#: ../data/glade/preferences_window.glade.h:30 +msgid "" +"Check this option, only if someone you don't have in the roster spams/annoys " +"you. Use with caution, cause it blocks all messages from any contact that is " +"not in the roster" +msgstr "" +"Vink deze optie alleen aan als iemand niet op je rooster je spamt of " +"lastigvalt. Wees voorzichtig, met deze optie worden all berichten van " +"contacten niet op je rooster geblokkeerd" + +#: ../data/glade/preferences_window.glade.h:31 +#, fuzzy +msgid "Default status _iconset:" +msgstr "Standaard _status iconenset:" + +#: ../data/glade/preferences_window.glade.h:32 +msgid "Display _extra email details" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:33 +#, fuzzy +msgid "Display a_vatars of contacts in roster" +msgstr "Negeer gebeurtenissen van contacten die niet op mijn rooster staan" + +#: ../data/glade/preferences_window.glade.h:34 +#, fuzzy +msgid "Display status _messages of contacts in roster" +msgstr "Statusberichten van contacten weergeven in het rooster" + +#: ../data/glade/preferences_window.glade.h:35 +#, fuzzy +msgid "E_very 5 minutes" +msgstr "Elke 5 _minuten" + +#: ../data/glade/preferences_window.glade.h:36 +#, fuzzy +msgid "Emoticons:" +msgstr "Beheer Emoticons" + +#: ../data/glade/preferences_window.glade.h:37 +msgid "Events" +msgstr "Gebeurtenissen" + +#: ../data/glade/preferences_window.glade.h:38 +#, fuzzy +msgid "" +"Gajim can send and receive meta-information related to a conversation you " +"may have with a contact. Here you can specify which chatstates you want to " +"send to the other party." +msgstr "Gajim kan de gesprekstoestanden versturen en ontvangen" + +#: ../data/glade/preferences_window.glade.h:39 +#, fuzzy +msgid "" +"Gajim will automatically show new events by poping up the relative window" +msgstr "" +"Gajim zal automatisch nieuwe berichten in een nieuw venster of tab in een " +"bestaand venster laten zien" + +#: ../data/glade/preferences_window.glade.h:40 +#, fuzzy +msgid "" +"Gajim will notify you for new events via a popup in the bottom right of the " +"screen" +msgstr "" +"Gajim zal nieuwe berichten mededelen m.b.v. een popup rechtsonder in beeld" + +#: ../data/glade/preferences_window.glade.h:41 +msgid "" +"Gajim will notify you via a popup window in the bottom right of the screen " +"about contacts that just signed in" +msgstr "" +"Gajim zal contacten die zich aanmelden mededelen m.b.v. een popup " +"rechtsonder in beeld" + +#: ../data/glade/preferences_window.glade.h:42 +msgid "" +"Gajim will notify you via a popup window in the bottom right of the screen " +"about contacts that just signed out" +msgstr "" +"Gajim zal contacten die zich afmelden mededelen m.b.v. een popup rechtsonder " +"in beeld" + +#: ../data/glade/preferences_window.glade.h:43 +#, fuzzy +msgid "" +"Gajim will only change the icon of the contact that triggered the new event" +msgstr "Gajim zal alleen het contacticoon veranderen bij nieuwe berichten" + +#: ../data/glade/preferences_window.glade.h:45 +#, fuzzy +msgid "" +"If checked, Gajim will display avatars of contacts in roster window and in " +"group chats" +msgstr "" +"Indien aangevinkt zal Gajim contactafbeeldingen in het roostervenster laten " +"zien" + +#: ../data/glade/preferences_window.glade.h:46 +#, fuzzy +msgid "" +"If checked, Gajim will display status messages of contacts under the contact " +"name in roster window and in group chats" +msgstr "" +"Indien aangevinkt zal Gajim statusberichten van contacten onder de " +"contactnaam in het roostervenster laten zien." + +#: ../data/glade/preferences_window.glade.h:47 +msgid "" +"If checked, Gajim will remember the roster and chat window positions in the " +"screen and the sizes of them next time you run it" +msgstr "" +"Indien aangevinkt zal Gajim de positie en grootte van vensters onthouden " +"voor de volgende keer dat ze geopend worden" + +#: ../data/glade/preferences_window.glade.h:48 +msgid "" +"If checked, Gajim will use protocol-specific status icons. (eg. A contact " +"from MSN will have the equivalent msn icon for status online, away, busy, " +"etc...)" +msgstr "" +"Indien aangevinkt zal Gajim iconen gebruiken die bij het protocol horen. " +"(Bijv. contacten van MSN zullen met msn iconen weergegeven worden voor " +"status online, afwezig, bezig, enz...)" + +#: ../data/glade/preferences_window.glade.h:49 +#, fuzzy +msgid "" +"If not disabled, Gajim will replace ascii smilies like ':)' with equivalent " +"animated or static graphical emoticons" +msgstr "" +"Indien aangevinkt zal Gajim tekst smilies, zoals ':)', vervangen met " +"bijpassende grafische emoticons" + +#: ../data/glade/preferences_window.glade.h:50 +#, fuzzy +msgid "Ma_nage..." +msgstr "Beheer..." + +#: ../data/glade/preferences_window.glade.h:51 +msgid "" +"Never\n" +"Always\n" +"Per account\n" +"Per type" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:55 +msgid "Notify me about contacts that: " +msgstr "Geef mij bericht over contacten die: " + +#: ../data/glade/preferences_window.glade.h:56 +msgid "Notify on new _GMail email" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:57 +msgid "On every _message" +msgstr "Bij elk _bericht" + +#: ../data/glade/preferences_window.glade.h:58 +#, fuzzy +msgid "One message _window:" +msgstr "Bericht verzenden en venster sluiten" + +#: ../data/glade/preferences_window.glade.h:59 +msgid "Play _sounds" +msgstr "Speel _geluiden af" + +#: ../data/glade/preferences_window.glade.h:60 +msgid "Preferences" +msgstr "Voorkeuren" + +#: ../data/glade/preferences_window.glade.h:61 +msgid "Print time:" +msgstr "Print tijd:" + +#: ../data/glade/preferences_window.glade.h:62 +msgid "Save _position and size for roster and chat windows" +msgstr "Sla _positie en grootte op voor rooster- en gespreksvensters" + +#: ../data/glade/preferences_window.glade.h:63 +msgid "Show only in _roster" +msgstr "Alleen in _rooster weergeven" + +#: ../data/glade/preferences_window.glade.h:64 +msgid "Sign _in" +msgstr "_Inloggen" + +#: ../data/glade/preferences_window.glade.h:65 +msgid "Sign _out" +msgstr "_Uitloggen" + +#: ../data/glade/preferences_window.glade.h:66 +msgid "Status" +msgstr "Status" + +#: ../data/glade/preferences_window.glade.h:67 +#, fuzzy +msgid "T_heme:" +msgstr "Thema:" + +#: ../data/glade/preferences_window.glade.h:68 +msgid "The auto away status message" +msgstr "Het statusbericht voor automatische afwezigheid" + +#: ../data/glade/preferences_window.glade.h:69 +msgid "The auto not available status message" +msgstr "Het statusbericht voor automatisch niet beschikbaar" + +#: ../data/glade/preferences_window.glade.h:70 +msgid "Use _transports iconsets" +msgstr "Gebruik _transport iconensets" + +#: ../data/glade/preferences_window.glade.h:71 +msgid "Use system _default" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:72 +#, fuzzy +msgid "Use t_rayicon (aka. notification area icon)" +msgstr "_Icoon in mededelingsgebied" + +#: ../data/glade/preferences_window.glade.h:73 +#, fuzzy +msgid "" +"When a new event (message, file transfer request etc..) is received, the " +"following methods may be used to inform you about it. Please note that " +"events about new messages only occur if it is a new message from a contact " +"you are not already chatting with" +msgstr "" +"Als een nieuwe gebeurtenis (bericht, bestandsoverdracht, enz.) ontvangen is, " +"kunnen de volgende methoden gebruikt worden om je te informeren. LET OP: " +"Nieuwe bericht-gebeurtenissen treden alleen op als het een nieuw bericht is " +"van een contact waar je nog geen gesprek mee hebt" + +#: ../data/glade/preferences_window.glade.h:74 +msgid "When new event is received" +msgstr "Als een nieuwe gebeurtenis ontvangen is" + +#: ../data/glade/preferences_window.glade.h:75 +#, fuzzy +msgid "_Advanced Notifications Control..." +msgstr "Geavanceerde Configuratie Wijzigen" + +#: ../data/glade/preferences_window.glade.h:76 +#, fuzzy +msgid "_After time:" +msgstr "Na tijdsstempel:" + +#: ../data/glade/preferences_window.glade.h:77 +#, fuzzy +msgid "_Before time:" +msgstr "Voor tijdsstempel:" + +#: ../data/glade/preferences_window.glade.h:78 +msgid "_Browser:" +msgstr "_Browser:" + +#: ../data/glade/preferences_window.glade.h:79 +#, fuzzy +msgid "_File manager:" +msgstr "Bestandsbeheerder:" + +#: ../data/glade/preferences_window.glade.h:80 +#, fuzzy +msgid "_Font:" +msgstr "Lettertype:" + +#: ../data/glade/preferences_window.glade.h:81 +msgid "_Highlight misspelled words" +msgstr "Verkeerd gespelde woorden _markeren" + +#: ../data/glade/preferences_window.glade.h:82 +msgid "_Ignore events from contacts not in the roster" +msgstr "_Negeer gebeurtenissen van contacten die niet op mijn rooster staan" + +#: ../data/glade/preferences_window.glade.h:83 +#, fuzzy +msgid "_Incoming message:" +msgstr "Binnenkomend bericht:" + +#: ../data/glade/preferences_window.glade.h:84 +msgid "_Log status changes of contacts" +msgstr "Houdt status veranderingen van contacten bij in het logboek" + +#: ../data/glade/preferences_window.glade.h:85 +msgid "_Mail client:" +msgstr "_Mail client:" + +#: ../data/glade/preferences_window.glade.h:86 +msgid "_Never" +msgstr "_Nooit" + +#: ../data/glade/preferences_window.glade.h:87 +msgid "_Notify me about it" +msgstr "_Stel mij ervan op de hoogte" + +#: ../data/glade/preferences_window.glade.h:88 +#, fuzzy +msgid "_Open..." +msgstr "Open..." + +#: ../data/glade/preferences_window.glade.h:89 +#, fuzzy +msgid "_Outgoing message:" +msgstr "Uitgaand bericht:" + +#: ../data/glade/preferences_window.glade.h:90 +msgid "_Player:" +msgstr "_Speler:" + +#: ../data/glade/preferences_window.glade.h:91 +msgid "_Pop it up" +msgstr "_Opduiken" + +#: ../data/glade/preferences_window.glade.h:92 +#, fuzzy +msgid "_Reset to Default Colors" +msgstr "Herstel naar Standaard Kleuren" + +#: ../data/glade/preferences_window.glade.h:93 +#, fuzzy +msgid "_Sort contacts by status" +msgstr "Sorteer contacten op status" + +#: ../data/glade/preferences_window.glade.h:94 +#, fuzzy +msgid "_Status message:" +msgstr "Status bericht:" + +#: ../data/glade/preferences_window.glade.h:95 +msgid "_URL:" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:96 +msgid "minutes" +msgstr "minuten" + +#: ../data/glade/privacy_list_edit_window.glade.h:1 +msgid "Add / Edit a rule" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:2 +#, fuzzy +msgid "List of rules" +msgstr "Formatteer een gespreksregel" + +#: ../data/glade/privacy_list_edit_window.glade.h:3 +msgid "Privacy List" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:5 ../src/config.py:2281 +msgid "All" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:6 +msgid "Allow" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:7 +#, fuzzy +msgid "Default" +msgstr "Wis MOTD" + +#: ../data/glade/privacy_list_edit_window.glade.h:9 +#, fuzzy +msgid "JabberID" +msgstr "Jabber ID:" + +#: ../data/glade/privacy_list_edit_window.glade.h:10 +#, fuzzy +msgid "Order:" +msgstr "Server:" + +#: ../data/glade/privacy_list_edit_window.glade.h:11 ../src/dialogs.py:1626 +msgid "Privacy List" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:12 +#, fuzzy +msgid "all by subscription" +msgstr "_Abonnement" + +#: ../data/glade/privacy_list_edit_window.glade.h:13 +#, fuzzy +msgid "all in the group" +msgstr "In de groep" + +#: ../data/glade/privacy_list_edit_window.glade.h:14 +msgid "" +"none\n" +"both\n" +"from\n" +"to" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:18 +#, fuzzy +msgid "to send me messages" +msgstr "Bericht verzenden" + +#: ../data/glade/privacy_list_edit_window.glade.h:19 +msgid "to send me queries" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:20 +#, fuzzy +msgid "to send me status" +msgstr "Vraag hem/haar toestemming zijn/haar status te zien" + +#: ../data/glade/privacy_list_edit_window.glade.h:21 +#, fuzzy +msgid "to view my status" +msgstr "Sta hem/haar toe mijn status te zien" + +#: ../data/glade/privacy_lists_first_window.glade.h:1 +msgid "Create your own Privacy Lists" +msgstr "" + +#: ../data/glade/privacy_lists_first_window.glade.h:2 +msgid "Server-based Privacy Lists" +msgstr "" + +#: ../data/glade/remove_account_window.glade.h:1 +msgid "What do you want to do?" +msgstr "Wat wil je doen?" + +#: ../data/glade/remove_account_window.glade.h:2 +msgid "Remove account _only from Gajim" +msgstr "Verwijder account alleen van Gajim" + +#: ../data/glade/remove_account_window.glade.h:3 +msgid "Remove account from Gajim and from _server" +msgstr "Verwijder account van Gajim en van de server" + +#: ../data/glade/roster_contact_context_menu.glade.h:1 +#, fuzzy +msgid "A_sk to see his/her status" +msgstr "Vraag hem/haar toestemming zijn/haar status te zien" + +#: ../data/glade/roster_contact_context_menu.glade.h:2 +#, fuzzy +msgid "Add Special _Notification" +msgstr "Visuele Meldingen" + +#: ../data/glade/roster_contact_context_menu.glade.h:3 +msgid "Assign Open_PGP Key" +msgstr "Wijs Open_PGP Sleutel toe" + +#: ../data/glade/roster_contact_context_menu.glade.h:4 +msgid "Edit _Groups" +msgstr "Wijzig _Groepen" + +#: ../data/glade/roster_contact_context_menu.glade.h:5 +#: ../data/glade/systray_context_menu.glade.h:1 +msgid "Send Single _Message" +msgstr "Enkel _Bericht Verzenden" + +#: ../data/glade/roster_contact_context_menu.glade.h:7 +msgid "Start _Chat" +msgstr "Start _Gesprek" + +#: ../data/glade/roster_contact_context_menu.glade.h:9 +#, fuzzy +msgid "_Allow him/her to see my status" +msgstr "Sta hem/haar toe mijn status te zien" + +#: ../data/glade/roster_contact_context_menu.glade.h:10 +#, fuzzy +msgid "_Forbid him/her to see my status" +msgstr "Verbiedt hem/haar mijn status te zien" + +#: ../data/glade/roster_contact_context_menu.glade.h:12 +#: ../src/roster_window.py:1482 +msgid "_Remove from Roster" +msgstr "_Verwijder van Rooster" + +#: ../data/glade/roster_contact_context_menu.glade.h:13 +#: ../src/roster_window.py:1470 +msgid "_Rename" +msgstr "_Hernoem" + +#: ../data/glade/roster_contact_context_menu.glade.h:14 +msgid "_Subscription" +msgstr "_Abonnement" + +#: ../data/glade/roster_window.glade.h:1 +msgid "A_ccounts" +msgstr "A_ccounts" + +#: ../data/glade/roster_window.glade.h:2 +msgid "Add _Contact" +msgstr "_Contact Toevoegen" + +#: ../data/glade/roster_window.glade.h:3 +msgid "File _Transfers" +msgstr "Bestands_overdrachten" + +#: ../data/glade/roster_window.glade.h:4 +msgid "Frequently Asked Questions (online)" +msgstr "Veel Gestelde Vragen (online)" + +#: ../data/glade/roster_window.glade.h:6 +msgid "Help online" +msgstr "Hulp online" + +#: ../data/glade/roster_window.glade.h:7 +msgid "Profile, Avatar" +msgstr "Profiel, Contactafbeelding" + +#: ../data/glade/roster_window.glade.h:8 +msgid "Show _Offline Contacts" +msgstr "_Offline Contacten Weergeven" + +#: ../data/glade/roster_window.glade.h:11 +msgid "_Contents" +msgstr "_Inhoud" + +#: ../data/glade/roster_window.glade.h:12 +msgid "_Discover Services" +msgstr "Ontdek Services" + +#: ../data/glade/roster_window.glade.h:13 ../src/disco.py:1252 +#: ../src/roster_window.py:1462 +msgid "_Edit" +msgstr "Be_werken" + +#: ../data/glade/roster_window.glade.h:14 +msgid "_FAQ" +msgstr "_FAQ" + +#: ../data/glade/roster_window.glade.h:16 +msgid "_Help" +msgstr "_Hulp" + +#: ../data/glade/roster_window.glade.h:17 +msgid "_Preferences" +msgstr "_Voorkeuren" + +#: ../data/glade/roster_window.glade.h:18 +msgid "_Quit" +msgstr "A_fsluiten" + +#: ../data/glade/service_discovery_window.glade.h:1 +msgid "G_o" +msgstr "Ga" + +#: ../data/glade/service_discovery_window.glade.h:2 +msgid "_Address:" +msgstr "_Adres:" + +#: ../data/glade/service_discovery_window.glade.h:3 +msgid "_Filter:" +msgstr "_Filter:" + +#: ../data/glade/service_registration_window.glade.h:1 +msgid "Register to" +msgstr "Registreer naar" + +#: ../data/glade/service_registration_window.glade.h:2 +msgid "_Cancel" +msgstr "_Annulerem" + +#: ../data/glade/service_registration_window.glade.h:3 +msgid "_OK" +msgstr "_OK" + +#: ../data/glade/single_message_window.glade.h:1 +msgid "0" +msgstr "0" + +#: ../data/glade/single_message_window.glade.h:2 +msgid "From:" +msgstr "Van:" + +#: ../data/glade/single_message_window.glade.h:3 +msgid "Reply to this message" +msgstr "Beantwoord dit bericht" + +#: ../data/glade/single_message_window.glade.h:4 +msgid "Sen_d" +msgstr "Verzen_d" + +#: ../data/glade/single_message_window.glade.h:5 +msgid "Send message" +msgstr "Bericht verzenden" + +#: ../data/glade/single_message_window.glade.h:6 +msgid "Send message and close window" +msgstr "Bericht verzenden en venster sluiten" + +#: ../data/glade/single_message_window.glade.h:7 +msgid "Subject:" +msgstr "Onderwerp:" + +#: ../data/glade/single_message_window.glade.h:8 +msgid "To:" +msgstr "Aan:" + +#: ../data/glade/single_message_window.glade.h:9 +msgid "_Reply" +msgstr "Be_antwoord" + +#: ../data/glade/single_message_window.glade.h:10 +msgid "_Send & Close" +msgstr "Ver_stuur & Sluit" + +#: ../data/glade/subscription_request_window.glade.h:1 +msgid "Authorize contact so he can know when you're connected" +msgstr "" +"Geef contact toestemming mijn status op te halen, zodat hij weet wanneer ik " +"online ben" + +#: ../data/glade/subscription_request_window.glade.h:2 +msgid "Contact _Info" +msgstr "Contact _Info" + +#: ../data/glade/subscription_request_window.glade.h:3 +msgid "Deny authorization from contact so he cannot know when you're connected" +msgstr "Geef contact geen toestemming om te zien of je online bent" + +#: ../data/glade/subscription_request_window.glade.h:4 +msgid "Subscription Request" +msgstr "Abonneringsverzoek" + +#: ../data/glade/subscription_request_window.glade.h:5 +msgid "_Authorize" +msgstr "_Toestemmen" + +#: ../data/glade/subscription_request_window.glade.h:6 +msgid "_Deny" +msgstr "_Weigeren" + +#: ../data/glade/systray_context_menu.glade.h:2 +msgid "Show All Pending _Events" +msgstr "Laat Alle Wachtende Gebeurtenissen Zien" + +#: ../data/glade/systray_context_menu.glade.h:3 +msgid "Show _Roster" +msgstr "_Rooster Weergeven" + +#: ../data/glade/systray_context_menu.glade.h:4 +msgid "Sta_tus" +msgstr "Sta_tus" + +#. "About" is the text of a tab of vcard window +#: ../data/glade/vcard_information_window.glade.h:2 +msgid "About" +msgstr "Info" + +#: ../data/glade/vcard_information_window.glade.h:3 +msgid "Address" +msgstr "Adres" + +#: ../data/glade/vcard_information_window.glade.h:4 +msgid "Ask:" +msgstr "Vraag:" + +#: ../data/glade/vcard_information_window.glade.h:5 +msgid "Birthday:" +msgstr "Verjaardag:" + +#: ../data/glade/vcard_information_window.glade.h:6 +msgid "City:" +msgstr "Stad:" + +#: ../data/glade/vcard_information_window.glade.h:7 +msgid "Client:" +msgstr "Client:" + +#: ../data/glade/vcard_information_window.glade.h:8 +msgid "Company:" +msgstr "Bedrijf:" + +#: ../data/glade/vcard_information_window.glade.h:9 +msgid "Contact Information" +msgstr "Contact Informatie" + +#: ../data/glade/vcard_information_window.glade.h:10 +msgid "Country:" +msgstr "Land:" + +#: ../data/glade/vcard_information_window.glade.h:11 +msgid "Department:" +msgstr "Afdeling:" + +#: ../data/glade/vcard_information_window.glade.h:12 +msgid "E-Mail:" +msgstr "E-Mail:" + +#: ../data/glade/vcard_information_window.glade.h:13 +msgid "Extra Address:" +msgstr "Extra Adres:" + +#. Family Name +#: ../data/glade/vcard_information_window.glade.h:15 +msgid "Family:" +msgstr "Familie:" + +#: ../data/glade/vcard_information_window.glade.h:16 +msgid "Format: YYYY-MM-DD" +msgstr "Formaat: YYYY-MM-DD" + +#. Given Name +#: ../data/glade/vcard_information_window.glade.h:19 +msgid "Given:" +msgstr "Voornaam:" + +#: ../data/glade/vcard_information_window.glade.h:20 +msgid "Homepage:" +msgstr "Homepage:" + +#: ../data/glade/vcard_information_window.glade.h:21 +msgid "Jabber" +msgstr "Jabber" + +#: ../data/glade/vcard_information_window.glade.h:22 +msgid "Jabber ID:" +msgstr "Jabber ID:" + +#: ../data/glade/vcard_information_window.glade.h:23 +msgid "Location" +msgstr "Locatie" + +#. Middle Name +#: ../data/glade/vcard_information_window.glade.h:25 +msgid "Middle:" +msgstr "Middelste naam:" + +#: ../data/glade/vcard_information_window.glade.h:26 +msgid "More" +msgstr "Meer" + +#: ../data/glade/vcard_information_window.glade.h:29 +msgid "OS:" +msgstr "Besturingssysteem:" + +#: ../data/glade/vcard_information_window.glade.h:30 +msgid "Phone No.:" +msgstr "Telefoonnummer:" + +#: ../data/glade/vcard_information_window.glade.h:31 +msgid "Position:" +msgstr "Positie:" + +#: ../data/glade/vcard_information_window.glade.h:32 +msgid "Postal Code:" +msgstr "Postcode:" + +#. Prefix in Name +#: ../data/glade/vcard_information_window.glade.h:34 +msgid "Prefix:" +msgstr "Voorvoegsel:" + +#: ../data/glade/vcard_information_window.glade.h:35 +msgid "Resource:" +msgstr "Bron:" + +#: ../data/glade/vcard_information_window.glade.h:36 +msgid "Role:" +msgstr "Rol:" + +#: ../data/glade/vcard_information_window.glade.h:37 +msgid "Set _Avatar" +msgstr "Stel Contact_afbeelding in" + +#: ../data/glade/vcard_information_window.glade.h:38 +msgid "State:" +msgstr "Staat:" + +#: ../data/glade/vcard_information_window.glade.h:39 +msgid "Status:" +msgstr "Status:" + +#: ../data/glade/vcard_information_window.glade.h:40 +msgid "Street:" +msgstr "Straat:" + +#: ../data/glade/vcard_information_window.glade.h:41 +msgid "Subscription:" +msgstr "Abonnement:" + +#. Suffix in Name +#: ../data/glade/vcard_information_window.glade.h:43 +msgid "Suffix:" +msgstr "Achtervoegsel:" + +#: ../data/glade/vcard_information_window.glade.h:44 +msgid "Work" +msgstr "Werk" + +#: ../data/glade/vcard_information_window.glade.h:45 +msgid "_Log conversation history" +msgstr "Gespreksgeschiedenis" + +#: ../data/glade/vcard_information_window.glade.h:46 +msgid "_Publish" +msgstr "_Publiceren" + +#: ../data/glade/vcard_information_window.glade.h:47 +msgid "_Retrieve" +msgstr "_Haal op" + +#: ../data/glade/xml_console_window.glade.h:1 +msgid "Jabber Traffic" +msgstr "Jabber Verkeer" + +#: ../data/glade/xml_console_window.glade.h:2 +msgid "XML Input" +msgstr "XML Invoer" + +#. XML Console enable checkbutton +#: ../data/glade/xml_console_window.glade.h:4 +msgid "Enable" +msgstr "Inschakelen" + +#. Info/Query make the "IQ" initials. So translate like this 'YourLang/YourLang (Info/Query)'. Thanks (it's a tooltip so width is not a problem) +#: ../data/glade/xml_console_window.glade.h:6 +msgid "Info/Query" +msgstr "Info/Vraag (Info/Query)" + +#. Info/Query: all(?) jabber xml start with Whom do you want to ban?\n" "\n" msgstr "Wat wil je doen?" -#: ../src/config.py:2023 +#: ../src/config.py:2062 msgid "Adding Member..." msgstr "" -#: ../src/config.py:2024 +#: ../src/config.py:2063 #, fuzzy msgid "" "Whom do you want to make a member?\n" "\n" msgstr "Wat wil je doen?" -#: ../src/config.py:2026 +#: ../src/config.py:2065 msgid "Adding Owner..." msgstr "" -#: ../src/config.py:2027 +#: ../src/config.py:2066 #, fuzzy msgid "" "Whom do you want to make a owner?\n" "\n" msgstr "Wat wil je doen?" -#: ../src/config.py:2029 +#: ../src/config.py:2068 #, fuzzy msgid "Adding Administrator..." msgstr "_Administrator" -#: ../src/config.py:2030 +#: ../src/config.py:2069 #, fuzzy msgid "" "Whom do you want to make an administrator?\n" "\n" msgstr "Wat wil je doen?" -#: ../src/config.py:2031 +#: ../src/config.py:2070 msgid "" "Can be one of the following:\n" "1. user@domain/resource (only that resource matches).\n" @@ -427,87 +2509,91 @@ msgid "" "domain/resource, or address containing a subdomain." msgstr "" -#: ../src/config.py:2127 +#: ../src/config.py:2166 #, python-format msgid "Removing %s account" msgstr "Account %s wordt verwijdert" -#: ../src/config.py:2144 ../src/roster_window.py:1859 +#: ../src/config.py:2183 ../src/roster_window.py:1857 msgid "Password Required" msgstr "Wachtwoord Vereist" -#: ../src/config.py:2145 ../src/roster_window.py:1860 +#: ../src/config.py:2184 ../src/roster_window.py:1858 #, python-format msgid "Enter your password for account %s" msgstr "Geef je wachtwoord op voor account %s" -#: ../src/config.py:2146 ../src/roster_window.py:1861 +#: ../src/config.py:2185 ../src/roster_window.py:1859 msgid "Save password" msgstr "Sla wachtwoord op" -#: ../src/config.py:2159 +#: ../src/config.py:2198 #, python-format msgid "Account \"%s\" is connected to the server" msgstr "Account \"%s\" heeft verbinding met de server" -#: ../src/config.py:2160 +#: ../src/config.py:2199 msgid "If you remove it, the connection will be lost." msgstr "Als je het verwijdert, wordt de verbinding verbroken." -#: ../src/config.py:2295 +#: ../src/config.py:2282 +msgid "Enter and leave only" +msgstr "" + +#: ../src/config.py:2352 msgid "New Room" msgstr "Nieuwe Ruimte" -#: ../src/config.py:2326 +#: ../src/config.py:2383 msgid "This bookmark has invalid data" msgstr "Deze bladwijzer bevat ongeldige informatie" -#: ../src/config.py:2327 +#: ../src/config.py:2384 msgid "" "Please be sure to fill out server and room fields or remove this bookmark." msgstr "" "Zorg ervoor dat de server- en ruimtevelden ingevuld zijn, of verwijder deze " "bladwijzer." -#: ../src/config.py:2564 +#: ../src/config.py:2638 msgid "Invalid username" msgstr "Ongeldige gebruikersnaam" -#: ../src/config.py:2565 +#: ../src/config.py:2639 msgid "You must provide a username to configure this account." msgstr "Je moet een gebruikersnaam invullen om deze account te configureren." -#: ../src/config.py:2574 ../src/dialogs.py:1036 +#: ../src/config.py:2648 ../src/dialogs.py:1118 msgid "Invalid password" msgstr "Ongeldig wachtwoord" -#: ../src/config.py:2575 +#: ../src/config.py:2649 msgid "You must enter a password for the new account." msgstr "Je moet een wachtwoord invullen voor de nieuwe account" -#: ../src/config.py:2579 ../src/dialogs.py:1041 +#: ../src/config.py:2653 ../src/dialogs.py:1123 msgid "Passwords do not match" msgstr "Wachtwoord komt niet overeen" -#: ../src/config.py:2580 ../src/dialogs.py:1042 +#: ../src/config.py:2654 ../src/dialogs.py:1124 msgid "The passwords typed in both fields must be identical." msgstr "De wachtwoorden in beide velden moeten identiek zijn" -#: ../src/config.py:2599 +#: ../src/config.py:2673 #, fuzzy msgid "Duplicate Jabber ID" msgstr "Ongeldige Jabber ID" -#: ../src/config.py:2600 +#: ../src/config.py:2674 #, fuzzy msgid "This account is already configured in Gajim." msgstr "Deze contact staat al op je rooster" -#: ../src/config.py:2617 +#: ../src/config.py:2691 msgid "Account has been added successfully" msgstr "Account is met succes toegevoegd" -#: ../src/config.py:2618 ../src/config.py:2651 +#: ../src/config.py:2692 ../src/config.py:2725 msgid "" "You can set advanced account options by pressing Advanced button, or later " "by clicking in Accounts menuitem under Edit menu from the main window." @@ -515,23 +2601,23 @@ msgstr "" "Je kunt geavanceerde accountopties instellen door op de Geavanceerd knop te " "drukken, of later via Accounts in het Bewerken menu van het hoofdvenster." -#: ../src/config.py:2650 +#: ../src/config.py:2724 msgid "Your new account has been created successfully" msgstr "Je nieuwe account is met succes aangemaakt" -#: ../src/config.py:2666 +#: ../src/config.py:2740 msgid "An error occured during account creation" msgstr "Er is een gout opgetreden bij het aanmaken van de account" -#: ../src/config.py:2723 +#: ../src/config.py:2797 msgid "Account name is in use" msgstr "Account naam is al in gebruik" -#: ../src/config.py:2724 +#: ../src/config.py:2798 msgid "You already have an account using this name." msgstr "Je hebt al een account met deze naam." -#: ../src/conversation_textview.py:182 +#: ../src/conversation_textview.py:205 msgid "" "Text below this line is what has been said since the last time you paid " "attention to this group chat" @@ -539,400 +2625,472 @@ msgstr "" "Tekst onder deze streep is gezegd nadat je laatst op dit groepsgesprek gelet " "hebt." -#: ../src/conversation_textview.py:239 +#: ../src/conversation_textview.py:263 #, python-format msgid "Actions for \"%s\"" msgstr "Acties voor \"%s\"" -#: ../src/conversation_textview.py:251 +#: ../src/conversation_textview.py:275 msgid "Read _Wikipedia Article" msgstr "Lees _Wikipedia Artikel" -#: ../src/conversation_textview.py:255 +#: ../src/conversation_textview.py:280 msgid "Look it up in _Dictionary" msgstr "Zoek op in het _Woordenboek" #. we must have %s in the url if not WIKTIONARY -#: ../src/conversation_textview.py:270 +#: ../src/conversation_textview.py:296 #, python-format msgid "Dictionary URL is missing an \"%s\" and it is not WIKTIONARY" msgstr "" "\"%s\" ontbreekt in de URL van het woordenboek en het is geen WIKTIONARY" #. we must have %s in the url -#: ../src/conversation_textview.py:281 +#: ../src/conversation_textview.py:308 #, python-format msgid "Web Search URL is missing an \"%s\"" msgstr "\"%s\" ontbreekt in de URL van de Web Zoekmachine" -#: ../src/conversation_textview.py:284 +#: ../src/conversation_textview.py:311 msgid "Web _Search for it" msgstr "_Zoek op het Web" -#: ../src/conversation_textview.py:574 +#: ../src/conversation_textview.py:607 msgid "Yesterday" msgstr "Gisteren" #. the number is >= 2 #. %i is day in year (1-365), %d (1-31) we want %i -#: ../src/conversation_textview.py:578 +#: ../src/conversation_textview.py:611 #, python-format msgid "%i days ago" msgstr "%i dagen geleden" #. if we have subject, show it too! -#: ../src/conversation_textview.py:634 +#: ../src/conversation_textview.py:686 #, python-format msgid "Subject: %s\n" msgstr "Onderwerp: %s\n" #. only say that to non Windows users -#: ../src/dbus_support.py:34 +#: ../src/dbus_support.py:32 msgid "D-Bus python bindings are missing in this computer" msgstr "D-Bus python koppeling ontbreekt op deze computer" -#: ../src/dbus_support.py:35 +#: ../src/dbus_support.py:33 msgid "D-Bus capabilities of Gajim cannot be used" msgstr "D-Bus mogelijkheden van Gajim kunnen niet worden gebruikt" -#: ../src/dialogs.py:64 +#: ../src/dialogs.py:55 #, python-format msgid "Contact's name: %s" msgstr "Contactnaam: %s" -#: ../src/dialogs.py:66 +#: ../src/dialogs.py:57 #, python-format msgid "JID: %s" msgstr "JID: %s" -#: ../src/dialogs.py:169 +#. Group name +#. In group boolean +#: ../src/dialogs.py:173 msgid "Group" msgstr "Groep" -#: ../src/dialogs.py:176 +#: ../src/dialogs.py:180 msgid "In the group" msgstr "In de groep" -#: ../src/dialogs.py:226 +#: ../src/dialogs.py:230 msgid "KeyID" msgstr "SleutelID" -#: ../src/dialogs.py:229 +#: ../src/dialogs.py:233 msgid "Contact name" msgstr "Contactnaam" -#: ../src/dialogs.py:263 +#: ../src/dialogs.py:266 #, python-format msgid "%s Status Message" msgstr "%s Statusbericht" -#: ../src/dialogs.py:265 +#: ../src/dialogs.py:268 msgid "Status Message" msgstr "Statusbericht" -#: ../src/dialogs.py:340 +#: ../src/dialogs.py:343 #, fuzzy msgid "Save as Preset Status Message" msgstr "Vooraf Ingestelde Status Berichten" -#: ../src/dialogs.py:341 +#: ../src/dialogs.py:344 #, fuzzy msgid "Please type a name for this status message" msgstr "Typ je nieuwr statusbericht:" -#: ../src/dialogs.py:369 +#: ../src/dialogs.py:391 #, python-format msgid "Please fill in the data of the contact you want to add in account %s" msgstr "" "Vul de informatie van de contactpersoon in die je aan account %s toe wilt " "voegen" -#: ../src/dialogs.py:371 +#: ../src/dialogs.py:393 msgid "Please fill in the data of the contact you want to add" msgstr "Vul de informatie in van de contactpersoon die je toe wilt voegen" -#. the user can be in mutiple groups, see in all of them -#: ../src/dialogs.py:380 ../src/disco.py:118 ../src/disco.py:119 -#: ../src/disco.py:1258 ../src/roster_window.py:214 -#: ../src/roster_window.py:275 ../src/roster_window.py:310 -#: ../src/roster_window.py:330 ../src/roster_window.py:354 -#: ../src/roster_window.py:2940 ../src/roster_window.py:2942 -#: ../src/systray.py:291 ../src/common/helpers.py:42 +#: ../src/dialogs.py:403 ../src/disco.py:109 ../src/disco.py:110 +#: ../src/disco.py:1249 ../src/roster_window.py:207 +#: ../src/roster_window.py:273 ../src/roster_window.py:309 +#: ../src/roster_window.py:329 ../src/roster_window.py:353 +#: ../src/roster_window.py:2973 ../src/roster_window.py:2975 +#: ../src/common/helpers.py:39 msgid "Transports" msgstr "Transporten" -#: ../src/dialogs.py:452 ../src/dialogs.py:458 +#: ../src/dialogs.py:493 ../src/dialogs.py:499 msgid "Invalid User ID" msgstr "Ongeldige Gebruikers ID" -#: ../src/dialogs.py:459 +#: ../src/dialogs.py:500 #, fuzzy msgid "The user ID must not contain a resource." msgstr "Deze service heeft geen onderdelen om te doorbladeren." -#: ../src/dialogs.py:466 +#: ../src/dialogs.py:513 msgid "Contact already in roster" msgstr "Contact staat al in het rooster" -#: ../src/dialogs.py:467 +#: ../src/dialogs.py:514 msgid "This contact is already listed in your roster." msgstr "Deze contact staat al op je rooster" -#: ../src/dialogs.py:528 +#: ../src/dialogs.py:576 msgid "A GTK+ jabber client" msgstr "Een GTK+ jabber client" -#: ../src/dialogs.py:539 +#: ../src/dialogs.py:577 +msgid "GTK+ Version:" +msgstr "" + +#: ../src/dialogs.py:578 +msgid "PyGTK Version:" +msgstr "" + +#: ../src/dialogs.py:586 +msgid "Current Developers:" +msgstr "" + +#: ../src/dialogs.py:588 msgid "Past Developers:" msgstr "" -#: ../src/dialogs.py:543 +#: ../src/dialogs.py:592 msgid "THANKS:" msgstr "" -#. remove one english setence +#. remove one english sentence #. and add it manually as translatable -#: ../src/dialogs.py:550 +#: ../src/dialogs.py:598 msgid "Last but not least, we would like to thank all the package maintainers." msgstr "" #. here you write your name in the form Name FamilyName -#: ../src/dialogs.py:564 +#: ../src/dialogs.py:612 msgid "translator-credits" msgstr "Stéphan Kochen " -#: ../src/dialogs.py:826 +#: ../src/dialogs.py:738 +#, fuzzy, python-format +msgid "Unable to bind to port %s." +msgstr "Niet in staat de ruimte binnen te gaan" + +#: ../src/dialogs.py:739 +msgid "" +"Maybe you have another running instance of Gajim. File Transfer will be " +"canceled." +msgstr "" + +#: ../src/dialogs.py:881 #, python-format msgid "Subscription request for account %s from %s" msgstr "Abonnerings aanvraag voor account %s van %s" -#: ../src/dialogs.py:829 +#: ../src/dialogs.py:884 #, python-format msgid "Subscription request from %s" msgstr "Abonnering aangevraagd van %s" -#: ../src/dialogs.py:872 +#: ../src/dialogs.py:926 msgid "You can not join a group chat unless you are connected." msgstr "" "Het is niet mogelijk aan een groepsgesprek deel te nemen zonder verbonden te " "zijn." -#: ../src/dialogs.py:885 +#: ../src/dialogs.py:939 #, python-format msgid "Join Group Chat with account %s" msgstr "Neem deel aan Groepsgesprek met account %s" -#: ../src/dialogs.py:887 ../src/gtkgui.glade.h:177 -msgid "Join Group Chat" -msgstr "Neem deel aan Groepsgesprek" - -#: ../src/dialogs.py:976 +#: ../src/dialogs.py:1030 #, fuzzy msgid "Invalid room or server name" msgstr "Ongeldige gebruikersnaam" -#: ../src/dialogs.py:977 +#: ../src/dialogs.py:1031 msgid "The room name or server name has not allowed characters." msgstr "" -#: ../src/dialogs.py:996 +#: ../src/dialogs.py:1050 #, python-format msgid "Start Chat with account %s" msgstr "Start Gesprek met account %s" -#: ../src/dialogs.py:998 +#: ../src/dialogs.py:1052 msgid "Start Chat" msgstr "Start Gesprek" -#: ../src/dialogs.py:999 +#: ../src/dialogs.py:1053 +#, fuzzy msgid "" -"Fill in the contact ID of the contact you would like\n" +"Fill in the jid, or nick of the contact you would like\n" "to send a chat message to:" msgstr "" "Vul de contact ID in van de persoon waaraan het bericht verstuurd moet " "worden:" #. if offline or connecting -#: ../src/dialogs.py:1007 ../src/dialogs.py:1330 ../src/dialogs.py:1450 +#: ../src/dialogs.py:1078 ../src/dialogs.py:1427 ../src/dialogs.py:1551 msgid "Connection not available" msgstr "Verbinding niet beschikbaar" -#: ../src/dialogs.py:1008 ../src/dialogs.py:1331 ../src/dialogs.py:1451 +#: ../src/dialogs.py:1079 ../src/dialogs.py:1428 ../src/dialogs.py:1552 #, python-format msgid "Please make sure you are connected with \"%s\"." msgstr "Zorg ervoor dat je verbinding hebt met \"%s\"." -#: ../src/dialogs.py:1018 +#: ../src/dialogs.py:1088 ../src/dialogs.py:1091 +#, fuzzy +msgid "Invalid JID" +msgstr "Ongeldige Jabber ID" + +#: ../src/dialogs.py:1091 +#, python-format +msgid "Unable to parse \"%s\"." +msgstr "" + +#: ../src/dialogs.py:1100 msgid "Without a connection, you can not change your password." msgstr "Zonder verbinding is het niet mogelijk je wachtwoord te veranderen." -#: ../src/dialogs.py:1037 +#: ../src/dialogs.py:1119 msgid "You must enter a password." msgstr "Je moet een wachtwoord opgeven." #. img to display #. default value -#: ../src/dialogs.py:1083 ../src/gajim.py:443 ../src/notify.py:129 +#: ../src/dialogs.py:1165 ../src/notify.py:126 ../src/notify.py:268 msgid "Contact Signed In" msgstr "Contact is Ingelogd" -#: ../src/dialogs.py:1085 ../src/gajim.py:474 ../src/notify.py:131 +#: ../src/dialogs.py:1167 ../src/notify.py:134 ../src/notify.py:270 msgid "Contact Signed Out" msgstr "Contact is Uitgelogd" #. chat message -#: ../src/dialogs.py:1087 ../src/gajim.py:609 ../src/notify.py:133 +#: ../src/dialogs.py:1169 ../src/notify.py:154 ../src/notify.py:272 msgid "New Message" msgstr "Nieuw Bericht" #. single message -#: ../src/dialogs.py:1087 ../src/gajim.py:603 ../src/notify.py:133 +#: ../src/dialogs.py:1169 ../src/notify.py:138 ../src/notify.py:272 msgid "New Single Message" msgstr "Nieuw Enkel Bericht" -#: ../src/dialogs.py:1088 ../src/gajim.py:586 ../src/notify.py:134 +#. private message +#: ../src/dialogs.py:1170 ../src/notify.py:145 ../src/notify.py:273 msgid "New Private Message" msgstr "Nieuw Privé Bericht" -#: ../src/dialogs.py:1088 ../src/gajim.py:1049 ../src/notify.py:142 +#: ../src/dialogs.py:1170 ../src/gajim.py:1044 ../src/notify.py:281 msgid "New E-mail" msgstr "" -#: ../src/dialogs.py:1090 ../src/gajim.py:1187 ../src/notify.py:136 +#: ../src/dialogs.py:1172 ../src/gajim.py:1187 ../src/notify.py:275 msgid "File Transfer Request" msgstr "Bestandsoverdracht Verzoek" -#: ../src/dialogs.py:1092 ../src/gajim.py:1035 ../src/gajim.py:1164 -#: ../src/notify.py:138 +#: ../src/dialogs.py:1174 ../src/gajim.py:1022 ../src/gajim.py:1164 +#: ../src/notify.py:277 msgid "File Transfer Error" msgstr "Bestandsoverdracht Fout" -#: ../src/dialogs.py:1094 ../src/gajim.py:1222 ../src/gajim.py:1244 -#: ../src/gajim.py:1261 ../src/notify.py:140 +#: ../src/dialogs.py:1176 ../src/gajim.py:1222 ../src/gajim.py:1244 +#: ../src/gajim.py:1261 ../src/notify.py:279 msgid "File Transfer Completed" msgstr "Bestandsoverdracht Voltooid" -#: ../src/dialogs.py:1095 ../src/gajim.py:1225 ../src/notify.py:140 +#: ../src/dialogs.py:1177 ../src/gajim.py:1225 ../src/notify.py:279 msgid "File Transfer Stopped" msgstr "Bestandsoverdracht Gestopt" -#: ../src/dialogs.py:1097 ../src/gajim.py:953 ../src/notify.py:144 +#: ../src/dialogs.py:1179 ../src/gajim.py:920 ../src/notify.py:283 #, fuzzy msgid "Groupchat Invitation" msgstr "?Group Chat Contact Role:Geen" +#: ../src/dialogs.py:1181 ../src/notify.py:118 ../src/notify.py:285 +#, fuzzy +msgid "Contact Changed Status" +msgstr "Contact is Uitgelogd" + #. FIXME: for Received with should become 'in' -#: ../src/dialogs.py:1262 +#: ../src/dialogs.py:1359 #, python-format msgid "Single Message with account %s" msgstr "Enkel Bericht met account %s" -#: ../src/dialogs.py:1264 +#: ../src/dialogs.py:1361 msgid "Single Message" msgstr "Enkel Bericht" #. prepare UI for Sending -#: ../src/dialogs.py:1267 +#: ../src/dialogs.py:1364 #, python-format msgid "Send %s" msgstr "Stuur %s" #. prepare UI for Receiving -#: ../src/dialogs.py:1290 +#: ../src/dialogs.py:1387 #, python-format msgid "Received %s" msgstr "Ontvangen %s" #. we create a new blank window to send and we preset RE: and to jid -#: ../src/dialogs.py:1355 +#: ../src/dialogs.py:1454 #, python-format msgid "RE: %s" msgstr "RE: %s" -#: ../src/dialogs.py:1356 +#: ../src/dialogs.py:1455 #, python-format msgid "%s wrote:\n" msgstr "%s schreef:\n" -#: ../src/dialogs.py:1400 +#: ../src/dialogs.py:1499 #, python-format msgid "XML Console for %s" msgstr "XML Console voor %s" -#: ../src/dialogs.py:1402 +#: ../src/dialogs.py:1501 msgid "XML Console" msgstr "XML Console" +#: ../src/dialogs.py:1620 +#, python-format +msgid "Privacy List %s" +msgstr "" + +#: ../src/dialogs.py:1624 +#, python-format +msgid "Privacy List for %s" +msgstr "" + +#: ../src/dialogs.py:1716 +#, fuzzy +msgid "Edit a rule" +msgstr "Formatteer een gespreksregel" + +#: ../src/dialogs.py:1801 +#, fuzzy +msgid "Add a rule" +msgstr "Formatteer een gespreksregel" + +#: ../src/dialogs.py:1897 +#, python-format +msgid "Privacy Lists for %s" +msgstr "" + +#: ../src/dialogs.py:1899 +#, fuzzy +msgid "Privacy Lists" +msgstr "Start Gesprek" + #. FIXME: use nickname instead of contact_jid -#: ../src/dialogs.py:1488 +#: ../src/dialogs.py:1988 #, fuzzy, python-format msgid "%(contact_jid)s has invited you to %(room_jid)s room" msgstr "%(contact_jid)s is uitgenodigd %(room_jid)s binnen te komen." #. only if not None and not '' -#: ../src/dialogs.py:1494 +#: ../src/dialogs.py:1994 #, python-format msgid "Comment: %s" msgstr "Commentaar: %s" -#: ../src/dialogs.py:1554 +#: ../src/dialogs.py:2054 msgid "Choose Sound" msgstr "Kies Geluid" -#: ../src/dialogs.py:1564 ../src/dialogs.py:1607 +#: ../src/dialogs.py:2064 ../src/dialogs.py:2107 msgid "All files" msgstr "Alle bestanden" -#: ../src/dialogs.py:1569 +#: ../src/dialogs.py:2069 msgid "Wav Sounds" msgstr "Wav Geluiden" -#: ../src/dialogs.py:1597 +#: ../src/dialogs.py:2097 msgid "Choose Image" msgstr "Kies Afbeelding" -#: ../src/dialogs.py:1612 +#: ../src/dialogs.py:2112 msgid "Images" msgstr "Afbeeldingen" -#: ../src/dialogs.py:1658 +#: ../src/dialogs.py:2157 #, python-format msgid "When %s becomes:" msgstr "" -#: ../src/dialogs.py:1660 +#: ../src/dialogs.py:2159 #, python-format msgid "Adding Special Notification for %s" msgstr "" -#: ../src/disco.py:117 +#: ../src/dialogs.py:2232 +#, fuzzy +msgid "Condition" +msgstr "Verbinding" + +#: ../src/disco.py:108 msgid "Others" msgstr "Overigen" #. conference is a category for listing mostly groupchats in service discovery -#: ../src/disco.py:121 +#: ../src/disco.py:112 msgid "Conference" msgstr "Conferentie" -#: ../src/disco.py:420 +#: ../src/disco.py:411 msgid "Without a connection, you can not browse available services" msgstr "" "Zonder verbinding is het niet mogelijk te bladeren door aangebode services" -#: ../src/disco.py:499 +#: ../src/disco.py:490 #, fuzzy, python-format msgid "Service Discovery using account %s" msgstr "Service Ontdekking" -#: ../src/disco.py:500 +#: ../src/disco.py:491 msgid "Service Discovery" msgstr "Service Ontdekking" -#: ../src/disco.py:637 +#: ../src/disco.py:628 msgid "The service could not be found" msgstr "De service kon niet worden gevonden" -#: ../src/disco.py:638 +#: ../src/disco.py:629 msgid "" "There is no service at the address you entered, or it is not responding. " "Check the address and try again." @@ -940,172 +3098,175 @@ msgstr "" "Er bestaat geen service op het opgegeven adres, of de service geeft geen " "antwoord. Controleer het adres en probeer nogmaals." -#: ../src/disco.py:642 ../src/disco.py:924 +#: ../src/disco.py:633 ../src/disco.py:915 msgid "The service is not browsable" msgstr "De service kan niet worden doorbladerd" -#: ../src/disco.py:643 +#: ../src/disco.py:634 msgid "This type of service does not contain any items to browse." msgstr "Dit soort service heeft geen onderdelen om te doorbladeren." -#: ../src/disco.py:723 +#: ../src/disco.py:714 #, fuzzy, python-format msgid "Browsing %s using account %s" msgstr "via account %s" -#: ../src/disco.py:762 +#: ../src/disco.py:753 msgid "_Browse" msgstr "_Bladeren" -#: ../src/disco.py:925 +#: ../src/disco.py:916 msgid "This service does not contain any items to browse." msgstr "Deze service heeft geen onderdelen om te doorbladeren." -#: ../src/disco.py:1146 ../src/disco.py:1263 +#: ../src/disco.py:1137 ../src/disco.py:1254 msgid "Re_gister" msgstr "Re_gistreer" -#: ../src/disco.py:1154 ../src/disco.py:1516 ../src/gtkgui.glade.h:350 -msgid "_Join" -msgstr "_Binnengaan" - -#: ../src/disco.py:1261 ../src/gtkgui.glade.h:334 ../src/roster_window.py:1462 -msgid "_Edit" -msgstr "Be_werken" - -#: ../src/disco.py:1300 +#: ../src/disco.py:1291 #, python-format msgid "Scanning %d / %d.." msgstr "Onderzoeken %d / %d.." #. Users column -#: ../src/disco.py:1482 +#: ../src/disco.py:1473 msgid "Users" msgstr "Gebruikers" #. Description column -#: ../src/disco.py:1489 +#: ../src/disco.py:1480 msgid "Description" msgstr "Beschrijving" -#: ../src/filetransfers_window.py:81 +#: ../src/filetransfers_window.py:72 msgid "File" msgstr "Bestand" -#: ../src/filetransfers_window.py:96 +#: ../src/filetransfers_window.py:87 msgid "Time" msgstr "Tijd" -#: ../src/filetransfers_window.py:108 +#: ../src/filetransfers_window.py:99 msgid "Progress" msgstr "Voortgang" -#: ../src/filetransfers_window.py:176 ../src/filetransfers_window.py:238 +#: ../src/filetransfers_window.py:163 ../src/filetransfers_window.py:223 #, python-format msgid "Filename: %s" msgstr "Bestandsnaam: %s" -#: ../src/filetransfers_window.py:178 ../src/filetransfers_window.py:308 +#: ../src/filetransfers_window.py:164 ../src/filetransfers_window.py:291 #, python-format msgid "Size: %s" msgstr "Grootte: %s" #. You is a reply of who sent a file #. You is a reply of who received a file -#: ../src/filetransfers_window.py:187 ../src/filetransfers_window.py:197 -#: ../src/history_manager.py:452 +#: ../src/filetransfers_window.py:173 ../src/filetransfers_window.py:183 +#: ../src/history_manager.py:454 msgid "You" msgstr "Jij" -#: ../src/filetransfers_window.py:188 ../src/filetransfers_window.py:240 +#: ../src/filetransfers_window.py:174 ../src/filetransfers_window.py:224 #, python-format msgid "Sender: %s" msgstr "Afzender: %s" -#: ../src/filetransfers_window.py:189 ../src/filetransfers_window.py:555 -#: ../src/tooltips.py:617 +#: ../src/filetransfers_window.py:175 ../src/filetransfers_window.py:556 +#: ../src/tooltips.py:639 msgid "Recipient: " msgstr "Ontvanger: " -#: ../src/filetransfers_window.py:200 +#: ../src/filetransfers_window.py:186 #, python-format msgid "Saved in: %s" msgstr "Opgeslagen in: %s" -#: ../src/filetransfers_window.py:203 +#: ../src/filetransfers_window.py:188 msgid "File transfer completed" msgstr "Bestandsoverdracht afgerond" -#: ../src/filetransfers_window.py:205 ../src/gtkgui.glade.h:366 -msgid "_Open Containing Folder" -msgstr "_Open Bovenliggende Map" - -#: ../src/filetransfers_window.py:219 ../src/filetransfers_window.py:227 +#: ../src/filetransfers_window.py:204 ../src/filetransfers_window.py:212 msgid "File transfer canceled" msgstr "Bestandsoverdracht geannuleerd" -#: ../src/filetransfers_window.py:219 ../src/filetransfers_window.py:228 +#: ../src/filetransfers_window.py:204 ../src/filetransfers_window.py:213 msgid "Connection with peer cannot be established." msgstr "Kon geen verbinding maken met gebruiker." -#: ../src/filetransfers_window.py:242 +#: ../src/filetransfers_window.py:225 msgid "File transfer stopped by the contact of the other side" msgstr "Bestandsoverdracht gestopt door andere gebruiker" -#: ../src/filetransfers_window.py:259 +#: ../src/filetransfers_window.py:242 msgid "Choose File to Send..." msgstr "Kies het Bestand om te Sturen" -#. Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector) -#: ../src/filetransfers_window.py:266 ../src/gtkgui.glade.h:390 -msgid "_Send" -msgstr "Ver_stuur" - -#: ../src/filetransfers_window.py:273 +#: ../src/filetransfers_window.py:256 msgid "Gajim cannot access this file" msgstr "Gajim heeft geen toegang tot dit bestand" -#: ../src/filetransfers_window.py:274 +#: ../src/filetransfers_window.py:257 msgid "This file is being used by another process." msgstr "Dit bestand is in gebruik door een ander proces." -#: ../src/filetransfers_window.py:306 +#: ../src/filetransfers_window.py:289 #, python-format msgid "File: %s" msgstr "Bestand: %s" -#: ../src/filetransfers_window.py:311 +#: ../src/filetransfers_window.py:294 #, python-format msgid "Type: %s" msgstr "Type: %s" -#: ../src/filetransfers_window.py:313 +#: ../src/filetransfers_window.py:296 #, python-format msgid "Description: %s" msgstr "Beschrijving: %s" -#: ../src/filetransfers_window.py:314 +#: ../src/filetransfers_window.py:297 #, python-format msgid "%s wants to send you a file:" msgstr "%s wil je een bestand sturen:" -#: ../src/filetransfers_window.py:329 +#: ../src/filetransfers_window.py:311 +#, python-format +msgid "Cannot overwrite existing file \"%s\"" +msgstr "" + +#: ../src/filetransfers_window.py:312 +msgid "" +"A file with this name already exists and you do not have permission to " +"overwrite it." +msgstr "" + +#: ../src/filetransfers_window.py:319 ../src/gtkgui_helpers.py:685 msgid "This file already exists" msgstr "Dit bestands bestaat al" -#: ../src/filetransfers_window.py:329 +#: ../src/filetransfers_window.py:319 ../src/gtkgui_helpers.py:685 #, fuzzy msgid "What do you want to do?" msgstr "Wat wil je doen?" -#: ../src/filetransfers_window.py:344 +#: ../src/filetransfers_window.py:331 +#, python-format +msgid "Directory \"%s\" is not writable" +msgstr "" + +#: ../src/filetransfers_window.py:331 +msgid "You do not have permission to create files in this directory." +msgstr "" + +#: ../src/filetransfers_window.py:341 msgid "Save File as..." msgstr "Sla Bestand op als..." #. Print remaining time in format 00:00:00 #. You can change the places of (hours), (minutes), (seconds) - #. they are not translatable. -#: ../src/filetransfers_window.py:419 +#: ../src/filetransfers_window.py:420 #, python-format msgid "%(hours)02.d:%(minutes)02.d:%(seconds)02.d" msgstr "%(hours)02.d:%(minutes)02.d:%(seconds)02.d" @@ -1113,29 +3274,29 @@ msgstr "%(hours)02.d:%(minutes)02.d:%(seconds)02.d" #. This should make the string Kb/s, #. where 'Kb' part is taken from %s. #. Only the 's' after / (which means second) should be translated. -#: ../src/filetransfers_window.py:491 +#: ../src/filetransfers_window.py:492 #, python-format msgid "(%(filesize_unit)s/s)" msgstr "(%(filesize_unit)s/s)" -#: ../src/filetransfers_window.py:527 ../src/filetransfers_window.py:530 +#: ../src/filetransfers_window.py:528 ../src/filetransfers_window.py:531 msgid "Invalid File" msgstr "Ongeldig Bestand" -#: ../src/filetransfers_window.py:527 +#: ../src/filetransfers_window.py:528 msgid "File: " msgstr "Bestand: " -#: ../src/filetransfers_window.py:531 +#: ../src/filetransfers_window.py:532 msgid "It is not possible to send empty files" msgstr "Het is onmogelijk lege bestanden te sturen" -#: ../src/filetransfers_window.py:551 ../src/tooltips.py:498 -#: ../src/tooltips.py:607 +#: ../src/filetransfers_window.py:552 ../src/tooltips.py:511 +#: ../src/tooltips.py:629 msgid "Name: " msgstr "Naam: " -#: ../src/filetransfers_window.py:553 ../src/tooltips.py:611 +#: ../src/filetransfers_window.py:554 ../src/tooltips.py:633 msgid "Sender: " msgstr "Afzender: " @@ -1143,32 +3304,28 @@ msgstr "Afzender: " msgid "Pause" msgstr "Pauze" -#: ../src/filetransfers_window.py:753 ../src/gtkgui.glade.h:328 -msgid "_Continue" -msgstr "_Verder" - -#: ../src/gajim-remote.py:84 +#: ../src/gajim-remote.py:82 msgid "shows a help on specific command" msgstr "laat hulp zien voor een specifiek commando" #. User gets help for the command, specified by this parameter -#: ../src/gajim-remote.py:87 +#: ../src/gajim-remote.py:85 msgid "command" msgstr "commando" -#: ../src/gajim-remote.py:88 +#: ../src/gajim-remote.py:86 msgid "show help on command" msgstr "laat hulp zien op commando" -#: ../src/gajim-remote.py:92 +#: ../src/gajim-remote.py:90 msgid "Shows or hides the roster window" msgstr "Laat roostervenster zien of verbergt het" -#: ../src/gajim-remote.py:96 +#: ../src/gajim-remote.py:94 msgid "Popups a window with the next unread message" msgstr "Laat een venster opduiken met het volgende ongelezen bericht" -#: ../src/gajim-remote.py:100 +#: ../src/gajim-remote.py:98 msgid "" "Prints a list of all contacts in the roster. Each contact appear on a " "separate line" @@ -1176,43 +3333,46 @@ msgstr "" "Drukt een lijst af van contacten in het rooster. Elke contact komt op een " "aparte regel" -#: ../src/gajim-remote.py:102 ../src/gajim-remote.py:115 -#: ../src/gajim-remote.py:125 ../src/gajim-remote.py:138 -#: ../src/gajim-remote.py:159 ../src/gajim-remote.py:189 -#: ../src/gajim-remote.py:197 ../src/gajim-remote.py:204 -#: ../src/gajim-remote.py:211 +#: ../src/gajim-remote.py:100 ../src/gajim-remote.py:114 +#: ../src/gajim-remote.py:124 ../src/gajim-remote.py:137 +#: ../src/gajim-remote.py:151 ../src/gajim-remote.py:172 +#: ../src/gajim-remote.py:202 ../src/gajim-remote.py:211 +#: ../src/gajim-remote.py:218 ../src/gajim-remote.py:225 +#: ../src/gajim-remote.py:236 msgid "account" msgstr "account" -#: ../src/gajim-remote.py:102 +#: ../src/gajim-remote.py:100 msgid "show only contacts of the given account" msgstr "geef alleen contacten weer van de gegeven account" -#: ../src/gajim-remote.py:107 +#: ../src/gajim-remote.py:105 msgid "Prints a list of registered accounts" msgstr "Drukt een lijst van geregistreerde accounts af" -#: ../src/gajim-remote.py:111 +#: ../src/gajim-remote.py:109 msgid "Changes the status of account or accounts" msgstr "Verander de status van de account of accounts" -#: ../src/gajim-remote.py:113 +#. offline, online, chat, away, xa, dnd, invisible should not be translated +#: ../src/gajim-remote.py:112 msgid "status" msgstr "status" -#: ../src/gajim-remote.py:113 +#: ../src/gajim-remote.py:112 msgid "one of: offline, online, chat, away, xa, dnd, invisible " msgstr "een van: offline, online, chat, away, xa, dnd, invisible" -#: ../src/gajim-remote.py:114 ../src/gajim-remote.py:135 +#: ../src/gajim-remote.py:113 ../src/gajim-remote.py:134 +#: ../src/gajim-remote.py:148 msgid "message" msgstr "bericht" -#: ../src/gajim-remote.py:114 +#: ../src/gajim-remote.py:113 msgid "status message" msgstr "statusbericht" -#: ../src/gajim-remote.py:115 +#: ../src/gajim-remote.py:114 msgid "" "change status of account \"account\". If not specified, try to change status " "of all accounts that have \"sync with global status\" option set" @@ -1221,143 +3381,170 @@ msgstr "" "status van alle accounts te veranderen die synchroniseren met de globale " "status" -#: ../src/gajim-remote.py:121 +#: ../src/gajim-remote.py:120 msgid "Shows the chat dialog so that you can send messages to a contact" msgstr "" "Laat het gespreksvenster zien zodat je berichten kunt versturen aan een " "contact" -#: ../src/gajim-remote.py:123 +#: ../src/gajim-remote.py:122 msgid "JID of the contact that you want to chat with" msgstr "JID van de contact waar je me in gesprek wilt gaan" -#: ../src/gajim-remote.py:125 ../src/gajim-remote.py:189 +#: ../src/gajim-remote.py:124 ../src/gajim-remote.py:202 msgid "if specified, contact is taken from the contact list of this account" msgstr "" "Indien opgegeven zal contact van de contactlijst van deze account gehaald " "worden" -#: ../src/gajim-remote.py:130 +#: ../src/gajim-remote.py:129 +#, fuzzy msgid "" -"Sends new message to a contact in the roster. Both OpenPGP key and account " -"are optional. If you want to set only 'account', without 'OpenPGP key', just " -"set 'OpenPGP key' to ''." +"Sends new chat message to a contact in the roster. Both OpenPGP key and " +"account are optional. If you want to set only 'account', without 'OpenPGP " +"key', just set 'OpenPGP key' to ''." msgstr "" "Stuurt een nieuw bericht aan een contact in het rooster. Zowel OpenPGP " "sleutel als account zijn optioneel. Als je alleen 'account' wilt opgeven " "zonder 'OpenPGP sleutel', zet 'OpenPGP sleutel' dan op ''." -#: ../src/gajim-remote.py:134 +#: ../src/gajim-remote.py:133 ../src/gajim-remote.py:146 msgid "JID of the contact that will receive the message" msgstr "JID of contact die het bericht zal ontvangen" -#: ../src/gajim-remote.py:135 +#: ../src/gajim-remote.py:134 ../src/gajim-remote.py:148 msgid "message contents" msgstr "inhoud bericht" -#: ../src/gajim-remote.py:136 +#: ../src/gajim-remote.py:135 ../src/gajim-remote.py:149 msgid "pgp key" msgstr "pgp sleutel" -#: ../src/gajim-remote.py:136 +#: ../src/gajim-remote.py:135 ../src/gajim-remote.py:149 msgid "if specified, the message will be encrypted using this public key" msgstr "" "indien opgegeven zal het bericht versleuteld worden met deze publieke sleutel" -#: ../src/gajim-remote.py:138 +#: ../src/gajim-remote.py:137 ../src/gajim-remote.py:151 msgid "if specified, the message will be sent using this account" msgstr "indien opgegeven zal het bericht verstuurd worden met deze account" -#: ../src/gajim-remote.py:143 +#: ../src/gajim-remote.py:142 +#, fuzzy +msgid "" +"Sends new single message to a contact in the roster. Both OpenPGP key and " +"account are optional. If you want to set only 'account', without 'OpenPGP " +"key', just set 'OpenPGP key' to ''." +msgstr "" +"Stuurt een nieuw bericht aan een contact in het rooster. Zowel OpenPGP " +"sleutel als account zijn optioneel. Als je alleen 'account' wilt opgeven " +"zonder 'OpenPGP sleutel', zet 'OpenPGP sleutel' dan op ''." + +#: ../src/gajim-remote.py:147 +#, fuzzy +msgid "subject" +msgstr "Onderwerp:" + +#: ../src/gajim-remote.py:147 +#, fuzzy +msgid "message subject" +msgstr "_Bericht" + +#: ../src/gajim-remote.py:156 msgid "Gets detailed info on a contact" msgstr "Haal gedetaileerde informatie op over een contact" -#: ../src/gajim-remote.py:145 ../src/gajim-remote.py:158 -#: ../src/gajim-remote.py:188 +#: ../src/gajim-remote.py:158 ../src/gajim-remote.py:171 +#: ../src/gajim-remote.py:201 ../src/gajim-remote.py:210 msgid "JID of the contact" msgstr "JID van contact" -#: ../src/gajim-remote.py:149 +#: ../src/gajim-remote.py:162 #, fuzzy msgid "Gets detailed info on a account" msgstr "Haal gedetaileerde informatie op over een contact" -#: ../src/gajim-remote.py:151 +#: ../src/gajim-remote.py:164 #, fuzzy msgid "Name of the account" msgstr "Je hebt geen actieve account" -#: ../src/gajim-remote.py:155 +#: ../src/gajim-remote.py:168 msgid "Sends file to a contact" msgstr "Stuurt een bestand aan contact" -#: ../src/gajim-remote.py:157 +#: ../src/gajim-remote.py:170 msgid "file" msgstr "bestand" -#: ../src/gajim-remote.py:157 +#: ../src/gajim-remote.py:170 msgid "File path" msgstr "Bestandspad" -#: ../src/gajim-remote.py:159 +#: ../src/gajim-remote.py:172 msgid "if specified, file will be sent using this account" msgstr "indien opgegeven zal bestand verstuurd worden met deze account" -#: ../src/gajim-remote.py:164 +#: ../src/gajim-remote.py:177 msgid "Lists all preferences and their values" msgstr "Laat alle voorkeuren zien en hun waarden" -#: ../src/gajim-remote.py:168 +#: ../src/gajim-remote.py:181 msgid "Sets value of 'key' to 'value'." msgstr "Zet waarde van 'sleutel' op 'waarde'." -#: ../src/gajim-remote.py:170 +#: ../src/gajim-remote.py:183 msgid "key=value" msgstr "sleutel=waarde" -#: ../src/gajim-remote.py:170 +#: ../src/gajim-remote.py:183 msgid "'key' is the name of the preference, 'value' is the value to set it to" msgstr "" "'key' is de naam van de voorkeur, 'waarde' is de waarde die zal worden " "ingesteld" -#: ../src/gajim-remote.py:175 +#: ../src/gajim-remote.py:188 msgid "Deletes a preference item" msgstr "Verwijdert een voorkeur onderdeel" -#: ../src/gajim-remote.py:177 +#: ../src/gajim-remote.py:190 msgid "key" msgstr "sleutel" -#: ../src/gajim-remote.py:177 +#: ../src/gajim-remote.py:190 msgid "name of the preference to be deleted" msgstr "naam van de voorkeur die verwijderd zal worden" -#: ../src/gajim-remote.py:181 +#: ../src/gajim-remote.py:194 msgid "Writes the current state of Gajim preferences to the .config file" msgstr "" "Schrijft de huidige staat van de Gajim voorkeuren weg naar het .config " "bestand" -#: ../src/gajim-remote.py:186 +#: ../src/gajim-remote.py:199 msgid "Removes contact from roster" msgstr "Verwijdert contact van rooster" -#: ../src/gajim-remote.py:195 +#: ../src/gajim-remote.py:208 msgid "Adds contact to roster" msgstr "Voegt contact toe aan rooster" -#: ../src/gajim-remote.py:197 -msgid "Adds new contact to this account." +#: ../src/gajim-remote.py:210 +msgid "jid" +msgstr "" + +#: ../src/gajim-remote.py:211 +#, fuzzy +msgid "Adds new contact to this account" msgstr "Voegt een nieuwe contact toe aan deze account" -#: ../src/gajim-remote.py:202 +#: ../src/gajim-remote.py:216 msgid "Returns current status (the global one unless account is specified)" msgstr "" "Retourneert huidige status (de globale status, tenzij een account is " "opgegeven)" -#: ../src/gajim-remote.py:209 +#: ../src/gajim-remote.py:223 #, fuzzy msgid "" "Returns current status message(the global one unless account is specified)" @@ -1365,16 +3552,25 @@ msgstr "" "Retourneert huidige status (de globale status, tenzij een account is " "opgegeven)" -#: ../src/gajim-remote.py:216 +#: ../src/gajim-remote.py:230 #, fuzzy msgid "Returns number of unreaded messages" msgstr "Je hebt ongelezen berichten" +#: ../src/gajim-remote.py:234 +msgid "Open 'Start Chat' dialog" +msgstr "" + #: ../src/gajim-remote.py:236 +#, fuzzy +msgid "Starts chat, using this account" +msgstr "Start Gesprek met account %s" + +#: ../src/gajim-remote.py:256 msgid "Missing argument \"contact_jid\"" msgstr "Argument \"contact_jid\" ontbreekt" -#: ../src/gajim-remote.py:255 +#: ../src/gajim-remote.py:275 #, python-format msgid "" "'%s' is not in your roster.\n" @@ -1383,16 +3579,16 @@ msgstr "" "'%s' staat niet op je rooster.\n" "Geef een account op om het bericht mee te sturen." -#: ../src/gajim-remote.py:258 +#: ../src/gajim-remote.py:278 msgid "You have no active account" msgstr "Je hebt geen actieve account" -#: ../src/gajim-remote.py:301 +#: ../src/gajim-remote.py:321 #, python-format msgid "Unknown D-Bus version: %s" msgstr "Onbekende D-Bus versie: %s" -#: ../src/gajim-remote.py:328 +#: ../src/gajim-remote.py:348 #, fuzzy, python-format msgid "" "Usage: %s %s %s \n" @@ -1401,16 +3597,16 @@ msgstr "" "Gebruik: %s %s %s \n" "\t" -#: ../src/gajim-remote.py:331 +#: ../src/gajim-remote.py:351 msgid "Arguments:" msgstr "Argumenten:" -#: ../src/gajim-remote.py:335 +#: ../src/gajim-remote.py:355 #, python-format msgid "%s not found" msgstr "%s niet gevonden" -#: ../src/gajim-remote.py:339 +#: ../src/gajim-remote.py:359 #, python-format msgid "" "Usage: %s command [arguments]\n" @@ -1419,7 +3615,7 @@ msgstr "" "Gebruik: %s commando [argumenten]\n" "Commando is een van:\n" -#: ../src/gajim-remote.py:413 +#: ../src/gajim-remote.py:433 #, python-format msgid "" "Argument \"%s\" is not specified. \n" @@ -1471,103 +3667,92 @@ msgstr "" msgid "Gajim needs PySQLite2 to run" msgstr "Gajim vereist PySQLite2" -#: ../src/gajim.py:235 +#. set the icon to all newly opened wind +#: ../src/gajim.py:151 +msgid "Gajim is already running" +msgstr "" + +#: ../src/gajim.py:152 +msgid "" +"Another instance of Gajim seems to be running\n" +"Run anyway?" +msgstr "" + +#: ../src/gajim.py:267 #, python-format msgid "HTTP (%s) Authorization for %s (id: %s)" msgstr "HTTP (%s) Machtiging voor %s (id: %s)" -#: ../src/gajim.py:236 +#: ../src/gajim.py:268 msgid "Do you accept this request?" msgstr "Neem je dit verzoek aan?" -#: ../src/gajim.py:438 -#, fuzzy, python-format -msgid "%(nickname)s Signed In" -msgstr "Contact is Ingelogd" - -#: ../src/gajim.py:469 -#, fuzzy, python-format -msgid "%(nickname)s Signed Out" -msgstr "Contact is Uitgelogd" - -#: ../src/gajim.py:583 -#, fuzzy, python-format -msgid "New Private Message from room %s" -msgstr "Nieuw Privé Bericht" - -#: ../src/gajim.py:584 -#, python-format -msgid "%(nickname)s: %(message)s" -msgstr "" - -#: ../src/gajim.py:606 -#, fuzzy, python-format -msgid "New Single Message from %(nickname)s" -msgstr "Nieuw Enkel Bericht" - -#: ../src/gajim.py:612 -#, python-format -msgid "New Message from %(nickname)s" -msgstr "" - -#: ../src/gajim.py:660 +#: ../src/gajim.py:611 #, fuzzy, python-format msgid "error while sending %s ( %s )" msgstr "fout tijdens versturen" -#: ../src/gajim.py:700 +#: ../src/gajim.py:651 msgid "Authorization accepted" msgstr "Machtiging geaccepteerd" -#: ../src/gajim.py:701 +#: ../src/gajim.py:652 #, python-format msgid "The contact \"%s\" has authorized you to see his or her status." msgstr "Contact \"%s\" heeft je toestemming gegeven zijn status te zien." -#: ../src/gajim.py:709 +#: ../src/gajim.py:660 #, python-format msgid "Contact \"%s\" removed subscription from you" msgstr "Contact \"%s\" heeft het abonnement op jou opgezegd" -#: ../src/gajim.py:710 +#: ../src/gajim.py:661 msgid "You will always see him or her as offline." msgstr "Je zult hem altijd als offline zien." -#: ../src/gajim.py:736 +#: ../src/gajim.py:704 #, python-format msgid "Contact with \"%s\" cannot be established" msgstr "Kan geen contact maken met \"%s\"" -#: ../src/gajim.py:737 ../src/common/connection.py:349 +#: ../src/gajim.py:705 ../src/common/connection.py:398 msgid "Check your connection or try again later." msgstr "Controleer de verbinding of probeer later nogmaals." -#: ../src/gajim.py:874 ../src/roster_window.py:1012 +#: ../src/gajim.py:849 ../src/roster_window.py:1025 #, python-format msgid "%s is now %s (%s)" msgstr "%s is nu %s (%s)" -#: ../src/gajim.py:963 +#: ../src/gajim.py:930 msgid "Your passphrase is incorrect" msgstr "Je wachtwoord is incorrect" -#: ../src/gajim.py:964 +#: ../src/gajim.py:931 msgid "You are currently connected without your OpenPGP key." msgstr "Je bent momenteel verbonden zonder OpenPGP sleutel." #. FIXME: find a better image -#: ../src/gajim.py:1045 +#: ../src/gajim.py:1033 #, python-format msgid "New E-mail on %(gmail_mail_address)s" msgstr "" -#: ../src/gajim.py:1047 +#: ../src/gajim.py:1035 #, fuzzy, python-format msgid "You have %d new E-mail message" msgid_plural "You have %d new E-mail messages" msgstr[0] "Je hebt ongelezen berichten" msgstr[1] "Je hebt ongelezen berichten" +#. each message has a 'From', 'Subject' and 'Snippet' field +#: ../src/gajim.py:1040 +#, python-format +msgid "" +"\n" +"From: %(from_address)s" +msgstr "" + #: ../src/gajim.py:1185 #, python-format msgid "%s wants to send you a file." @@ -1617,145 +3802,155 @@ msgstr "" #. it is good to notify the user #. in case he or she cannot see the output of the console -#: ../src/gajim.py:1634 +#: ../src/gajim.py:1683 msgid "Could not save your settings and preferences" msgstr "Kan je instellingen en voorkeuren niet opslaan" -#: ../src/gajim.py:1848 +#: ../src/gajim.py:1903 msgid "Session Management support not available (missing gnome.ui module)" msgstr "" "Sessiebeheer ondersteuning is niet beschikbaar (gnome.ui module ontbreekt)" -#: ../src/gajim.py:1878 +#: ../src/gajim.py:1932 msgid "Migrating Logs..." msgstr "Logboeken worden omgezet..." -#: ../src/gajim.py:1879 +#: ../src/gajim.py:1933 msgid "Please wait while logs are being migrated..." msgstr "Een ogenblik geduld terwijl je logboeken omgezet worden..." -#: ../src/gajim_themes_window.py:67 +#: ../src/gajim_themes_window.py:59 msgid "Theme" msgstr "Thema" #. don't confuse translators -#: ../src/gajim_themes_window.py:149 +#: ../src/gajim_themes_window.py:141 msgid "theme name" msgstr "thema naam" -#: ../src/gajim_themes_window.py:166 +#: ../src/gajim_themes_window.py:158 msgid "You cannot delete your current theme" msgstr "Je kunt je huidige thema niet verwijderen" -#: ../src/gajim_themes_window.py:167 +#: ../src/gajim_themes_window.py:159 msgid "Please first choose another for your current theme." msgstr "Kies eerst een ander thema." -#: ../src/groupchat_control.py:68 +#: ../src/groupchat_control.py:99 #, fuzzy msgid "Private Chat" msgstr "Start Gesprek" -#: ../src/groupchat_control.py:68 +#: ../src/groupchat_control.py:99 #, fuzzy msgid "Private Chats" msgstr "Start Gesprek" -#: ../src/groupchat_control.py:84 +#: ../src/groupchat_control.py:115 msgid "Sending private message failed" msgstr "Sturen van privé bericht mislukt" #. in second %s code replaces with nickname -#: ../src/groupchat_control.py:86 +#: ../src/groupchat_control.py:117 #, python-format msgid "You are no longer in room \"%s\" or \"%s\" has left." msgstr "Je bent niet meer in ruimte \"%s\" of \"%s\" heeft de ruimte verlaten." -#: ../src/groupchat_control.py:98 +#: ../src/groupchat_control.py:129 msgid "Group Chat" msgstr "Groupsgesprek" -#: ../src/groupchat_control.py:98 +#: ../src/groupchat_control.py:129 #, fuzzy msgid "Group Chats" msgstr "Groupsgesprek" -#: ../src/groupchat_control.py:595 +#: ../src/groupchat_control.py:308 +#, fuzzy +msgid "Insert Nickname" +msgstr "Verander Bij_naam" + +#: ../src/groupchat_control.py:702 msgid "This room has no subject" msgstr "Deze ruimte heeft geen onderwerp" #. do not print 'kicked by None' -#: ../src/groupchat_control.py:693 +#: ../src/groupchat_control.py:801 #, python-format msgid "%(nick)s has been kicked: %(reason)s" msgstr "%(nick)s is uit de ruimte geschopt: %(reason)s" -#: ../src/groupchat_control.py:697 +#: ../src/groupchat_control.py:805 #, python-format msgid "%(nick)s has been kicked by %(who)s: %(reason)s" msgstr "%(nick)s is uit de ruimte geschopt door %(who)s: %(reason)s" #. do not print 'banned by None' -#: ../src/groupchat_control.py:704 +#: ../src/groupchat_control.py:812 #, python-format msgid "%(nick)s has been banned: %(reason)s" msgstr "%(nick)s is uit de ruimte verbannen: %(reason)s" -#: ../src/groupchat_control.py:708 +#: ../src/groupchat_control.py:816 #, python-format msgid "%(nick)s has been banned by %(who)s: %(reason)s" msgstr "%(nick)s is uit de ruimte verbannen door %(who)s: %(reason)s" -#: ../src/groupchat_control.py:716 +#: ../src/groupchat_control.py:824 #, python-format msgid "You are now known as %s" msgstr "Je staat nu bekend als %s" -#: ../src/groupchat_control.py:718 +#: ../src/groupchat_control.py:826 #, python-format msgid "%s is now known as %s" msgstr "%s is nu bekend als %s" -#: ../src/groupchat_control.py:757 +#: ../src/groupchat_control.py:897 #, python-format msgid "%s has left" msgstr "%s heeft de ruimte verlaten" +#: ../src/groupchat_control.py:902 +#, python-format +msgid "%s has joined the room" +msgstr "" + #. No status message -#: ../src/groupchat_control.py:759 ../src/roster_window.py:1015 +#: ../src/groupchat_control.py:904 ../src/roster_window.py:1028 #, python-format msgid "%s is now %s" msgstr "%s is nu %s" -#: ../src/groupchat_control.py:871 ../src/groupchat_control.py:888 -#: ../src/groupchat_control.py:981 ../src/groupchat_control.py:997 +#: ../src/groupchat_control.py:1022 ../src/groupchat_control.py:1039 +#: ../src/groupchat_control.py:1132 ../src/groupchat_control.py:1148 #, python-format msgid "Nickname not found: %s" msgstr "Bijnaam niet gevonden: %s" -#: ../src/groupchat_control.py:915 +#: ../src/groupchat_control.py:1066 #, python-format msgid "Invited %(contact_jid)s to %(room_jid)s." msgstr "%(contact_jid)s is uitgenodigd %(room_jid)s binnen te komen." #. %s is something the user wrote but it is not a jid so we inform -#: ../src/groupchat_control.py:922 ../src/groupchat_control.py:952 +#: ../src/groupchat_control.py:1073 ../src/groupchat_control.py:1103 #, python-format msgid "%s does not appear to be a valid JID" msgstr "%s blijkt geen geldige JID te zijn" -#: ../src/groupchat_control.py:1019 +#: ../src/groupchat_control.py:1185 #, fuzzy, python-format msgid "No such command: /%s (if you want to send this, prefix it with /say)" msgstr "" "Onbekend commando: /%s (als je deze tekst wil sturen, begin dan met /say)" -#: ../src/groupchat_control.py:1041 +#: ../src/groupchat_control.py:1207 #, python-format msgid "Commands: %s" msgstr "Commando's: %s" -#: ../src/groupchat_control.py:1043 +#: ../src/groupchat_control.py:1209 #, python-format msgid "" "Usage: /%s [reason], bans the JID from the room. The nickname " @@ -1768,7 +3963,7 @@ msgstr "" "\" bevat. Als de JID zich momenteel in de ruimte bevindt, zal hij eruit " "geschopt worden. Ondersteunt GEEN spaties in de bijnaam." -#: ../src/groupchat_control.py:1049 +#: ../src/groupchat_control.py:1215 #, python-format msgid "" "Usage: /%s , opens a private chat window to the specified occupant." @@ -1776,12 +3971,12 @@ msgstr "" "Gebruik: /%s , opent een privé gespreksvenster met de opgegeven " "gebruiker." -#: ../src/groupchat_control.py:1053 +#: ../src/groupchat_control.py:1219 #, python-format msgid "Usage: /%s, clears the text window." msgstr "Gebruik: /%s, leegt het tekst venster." -#: ../src/groupchat_control.py:1055 +#: ../src/groupchat_control.py:1221 #, python-format msgid "" "Usage: /%s [reason], closes the current window or tab, displaying reason if " @@ -1790,12 +3985,12 @@ msgstr "" "Gebruik: /%s [reden], sluit de huidige tab of venster, en laat reden achter " "indien opgegeven." -#: ../src/groupchat_control.py:1058 +#: ../src/groupchat_control.py:1224 #, fuzzy, python-format msgid "Usage: /%s, hide the chat buttons." msgstr "Gebruik: /%s, leegt het tekst venster." -#: ../src/groupchat_control.py:1060 +#: ../src/groupchat_control.py:1226 #, python-format msgid "" "Usage: /%s [reason], invites JID to the current room, optionally " @@ -1804,7 +3999,7 @@ msgstr "" "Gebruik: /%s [reden], nodigt JID uit de huidige ruimte binnen te " "komen, met optioneel de opgegeven reden." -#: ../src/groupchat_control.py:1064 +#: ../src/groupchat_control.py:1230 #, python-format msgid "" "Usage: /%s @[/nickname], offers to join room@server optionally " @@ -1813,7 +4008,7 @@ msgstr "" "Gebruik: /%s @[/bijnaam], biedt aan ruimte@server binnen te " "gaan, optioneel met de opgegeven bijnaam." -#: ../src/groupchat_control.py:1068 +#: ../src/groupchat_control.py:1234 #, python-format msgid "" "Usage: /%s [reason], removes the occupant specified by nickname " @@ -1824,7 +4019,7 @@ msgstr "" "bijnaam van de ruimte, optioneel met de opgegeven reden. Ondersteunt GEEN " "spaties in de bijnaam." -#: ../src/groupchat_control.py:1073 +#: ../src/groupchat_control.py:1239 #, python-format msgid "" "Usage: /%s , sends action to the current room. Use third person. (e." @@ -1833,7 +4028,7 @@ msgstr "" "Gebruik: /%s , stuurt actie naar de huidige ruimte. Hij-vorm " "gebruiken. (bijv. /%s loopt...)" -#: ../src/groupchat_control.py:1077 +#: ../src/groupchat_control.py:1243 #, fuzzy, python-format msgid "" "Usage: /%s [message], opens a private message windowand sends " @@ -1842,99 +4037,106 @@ msgstr "" "Gebruik: /%s [bericht], opent een privé gespreksvenster en stuurt " "bericht naar de gebruiker met de opgegeven bijnaam." -#: ../src/groupchat_control.py:1082 +#: ../src/groupchat_control.py:1248 #, python-format msgid "Usage: /%s , changes your nickname in current room." msgstr "Gebruik: /%s , verandert je bijnaam in de huidige ruimte." -#: ../src/groupchat_control.py:1086 +#: ../src/groupchat_control.py:1252 +#, fuzzy, python-format +msgid "Usage: /%s , display the names of room occupants." +msgstr "" +"Gebruik: /%s [onderwerp], geeft het huidige onderwerp weer, of werkt het " +"onderwerp bij naar de opgegeven tekst." + +#: ../src/groupchat_control.py:1256 #, python-format msgid "Usage: /%s [topic], displays or updates the current room topic." msgstr "" "Gebruik: /%s [onderwerp], geeft het huidige onderwerp weer, of werkt het " "onderwerp bij naar de opgegeven tekst." -#: ../src/groupchat_control.py:1089 +#: ../src/groupchat_control.py:1259 #, python-format msgid "" "Usage: /%s , sends a message without looking for other commands." msgstr "" "Gebruik: /%s , stuurt een bericht zonder naar commando's te zoeken." -#: ../src/groupchat_control.py:1092 +#: ../src/groupchat_control.py:1262 #, python-format msgid "No help info for /%s" msgstr "Geen hulp beschikbaar voor /%s" -#: ../src/groupchat_control.py:1128 +#: ../src/groupchat_control.py:1304 #, python-format msgid "Are you sure you want to leave room \"%s\"?" msgstr "Weet je zeker dat je de ruimte \"%s\" wilt verlaten?" -#: ../src/groupchat_control.py:1129 +#: ../src/groupchat_control.py:1305 msgid "If you close this window, you will be disconnected from this room." msgstr "" "Als je dit venster sluit zal de verbinding verbroken worden met deze ruimte." -#: ../src/groupchat_control.py:1133 +#: ../src/groupchat_control.py:1309 #, fuzzy msgid "Do _not ask me again" msgstr "Vraag mij dit niet nogmaals" -#: ../src/groupchat_control.py:1167 +#: ../src/groupchat_control.py:1343 msgid "Changing Subject" msgstr "Onderwerp Veranderen" -#: ../src/groupchat_control.py:1168 +#: ../src/groupchat_control.py:1344 msgid "Please specify the new subject:" msgstr "Geef het nieuwe onderwerp op:" -#: ../src/groupchat_control.py:1176 +#: ../src/groupchat_control.py:1352 msgid "Changing Nickname" msgstr "Bijnaam Veranderen" -#: ../src/groupchat_control.py:1177 +#: ../src/groupchat_control.py:1353 msgid "Please specify the new nickname you want to use:" msgstr "Geef de nieuwe bijnaam op die je wilt gebruiken:" -#: ../src/groupchat_control.py:1202 +#: ../src/groupchat_control.py:1379 msgid "Bookmark already set" msgstr "Bladwijzer bestaat al" -#: ../src/groupchat_control.py:1203 +#: ../src/groupchat_control.py:1380 #, python-format msgid "Room \"%s\" is already in your bookmarks." msgstr "Ruimte \"%s\" heeft al een bladwijzer." -#: ../src/groupchat_control.py:1212 +#: ../src/groupchat_control.py:1389 msgid "Bookmark has been added successfully" msgstr "Bladwijzer is met succes toegevoegd" -#: ../src/groupchat_control.py:1213 +#: ../src/groupchat_control.py:1390 msgid "You can manage your bookmarks via Actions menu in your roster." msgstr "Je kunt bladwijzers beheren via het Acties menu in je rooster." #. ask for reason -#: ../src/groupchat_control.py:1322 +#: ../src/groupchat_control.py:1500 #, python-format msgid "Kicking %s" msgstr "%s uit de ruimte schoppen" -#: ../src/groupchat_control.py:1323 ../src/groupchat_control.py:1568 +#: ../src/groupchat_control.py:1501 ../src/groupchat_control.py:1779 msgid "You may specify a reason below:" msgstr "Je kunt hieronder een reden opgeven:" #. ask for reason -#: ../src/groupchat_control.py:1567 +#: ../src/groupchat_control.py:1778 #, python-format msgid "Banning %s" msgstr "%s verbannen" -#: ../src/gtkexcepthook.py:52 +#: ../src/gtkexcepthook.py:51 msgid "A programming error has been detected" msgstr "Een programmeerfout is ontdekt" -#: ../src/gtkexcepthook.py:53 +#: ../src/gtkexcepthook.py:52 msgid "" "It probably is not fatal, but should be reported to the developers " "nonetheless." @@ -1942,1794 +4144,92 @@ msgstr "" "Het is waarschijnlijk niet fataal, maar het is een goed idee toch de " "ontwikkelaars op de hoogte te stellen." -#: ../src/gtkexcepthook.py:59 +#: ../src/gtkexcepthook.py:58 msgid "_Report Bug" msgstr "_Rapporteer Fout" -#: ../src/gtkexcepthook.py:82 +#: ../src/gtkexcepthook.py:81 msgid "Details" msgstr "Details" -#. this always tracebacks -#: ../src/gtkgui.glade.h:1 -msgid "0" -msgstr "0" - -#: ../src/gtkgui.glade.h:2 -msgid "" -"Account is being created\n" -"\n" -"Please wait..." -msgstr "" -"Account wordt aangemaakt\n" -"\n" -"Een ogenblik geduld..." - -#: ../src/gtkgui.glade.h:5 -msgid "Advanced Configuration Editor" -msgstr "Geavanceerde Instellingen Wijzigen" - -#: ../src/gtkgui.glade.h:6 -msgid "Applications" -msgstr "Toepassingen" - -#: ../src/gtkgui.glade.h:7 -msgid "Chatstate Tab Colors" -msgstr "" - -#. a header for custom browser/client/file manager. so translate sth like: Custom Settings -#: ../src/gtkgui.glade.h:9 -msgid "Custom" -msgstr "Aangepast" - -#: ../src/gtkgui.glade.h:10 -msgid "Description" -msgstr "Beschrijving" - -#: ../src/gtkgui.glade.h:11 -msgid "Format of a line" -msgstr "Formatteer een gespreksregel" - -#: ../src/gtkgui.glade.h:12 -msgid "Interface Customization" -msgstr "Interface Aanpassingen" - -#: ../src/gtkgui.glade.h:13 -msgid "Jabber Traffic" -msgstr "Jabber Verkeer" - -#: ../src/gtkgui.glade.h:14 -msgid "Miscellaneous" -msgstr "Overige" - -#: ../src/gtkgui.glade.h:15 -msgid "NOTE: You should restart gajim for some setting to take effect" -msgstr "" - -#: ../src/gtkgui.glade.h:16 -msgid "OpenPGP" -msgstr "OpenPGP" - -#: ../src/gtkgui.glade.h:17 -msgid "Personal Information" -msgstr "Persoonlijke Informatie" - -#: ../src/gtkgui.glade.h:18 -msgid "Please choose one of the options below:" -msgstr "Kies een van de volgende opties:" - -#: ../src/gtkgui.glade.h:19 -msgid "Please fill in the data for your new account" -msgstr "Vul de informatie in voor je nieuwe account" - -#: ../src/gtkgui.glade.h:20 -msgid "Preset Status Messages" -msgstr "Vooraf Ingestelde Status Berichten" - -#: ../src/gtkgui.glade.h:21 -msgid "Properties" -msgstr "Eigenschappen" - -#: ../src/gtkgui.glade.h:22 -msgid "Settings" -msgstr "Instellingen" - -#: ../src/gtkgui.glade.h:23 -msgid "Sounds" -msgstr "Geluiden" - -#: ../src/gtkgui.glade.h:24 -#, fuzzy -msgid "Type your new status message" -msgstr "Typ je nieuwr statusbericht:" - -#: ../src/gtkgui.glade.h:25 -msgid "Visual Notifications" -msgstr "Visuele Meldingen" - -#: ../src/gtkgui.glade.h:26 -msgid "What do you want to do?" -msgstr "Wat wil je doen?" - -#: ../src/gtkgui.glade.h:27 -msgid "XML Input" -msgstr "XML Invoer" - -#: ../src/gtkgui.glade.h:28 -msgid "A list of active, completed and stopped file transfers" -msgstr "Een lijst van actieve, afgeronde en gestopte bestandsoverdrachten" - -#: ../src/gtkgui.glade.h:29 -msgid "A_ccounts" -msgstr "A_ccounts" - -#: ../src/gtkgui.glade.h:30 -#, fuzzy -msgid "A_fter nickname:" -msgstr "Na bijnaam:" - -#. "About" is the text of a tab of vcard window -#: ../src/gtkgui.glade.h:32 -msgid "About" -msgstr "Info" - -#: ../src/gtkgui.glade.h:33 -msgid "Accept" -msgstr "Accepteer" - -#: ../src/gtkgui.glade.h:34 -msgid "Account" -msgstr "Account" - -#: ../src/gtkgui.glade.h:35 -msgid "" -"Account\n" -"Group\n" -"Contact\n" -"Banner" -msgstr "" -"Account\n" -"Groep\n" -"Contact\n" -"Vaandel" - -#: ../src/gtkgui.glade.h:39 -msgid "Account Modification" -msgstr "Account Wijziging" - -#: ../src/gtkgui.glade.h:40 -msgid "Accounts" -msgstr "Accounts" - -#: ../src/gtkgui.glade.h:42 -msgid "Add New Contact" -msgstr "Nieuwe Contact Toevoegen" - -#: ../src/gtkgui.glade.h:43 -#, fuzzy -msgid "Add Special _Notification" -msgstr "Visuele Meldingen" - -#: ../src/gtkgui.glade.h:44 -msgid "Add _Contact" -msgstr "_Contact Toevoegen" - -#: ../src/gtkgui.glade.h:45 -msgid "Address" -msgstr "Adres" - -#: ../src/gtkgui.glade.h:46 -msgid "Advanced" -msgstr "Geavanceerd" - -#: ../src/gtkgui.glade.h:47 -msgid "Advanced Configuration Editor" -msgstr "Geavanceerde Configuratie Wijzigen" - -#: ../src/gtkgui.glade.h:48 -msgid "" -"All chat states\n" -"Composing only\n" -"Disabled" -msgstr "" -"Alle typen toestanden\n" -"Alleen bij typen van bericht\n" -"Uitgeschakeld" - -#: ../src/gtkgui.glade.h:51 -msgid "Allow _OS information to be sent" -msgstr "Sta toe informatie over _besturingssysteem te verzenden" - -#: ../src/gtkgui.glade.h:52 -msgid "Allow him/her to see my status" -msgstr "Sta hem/haar toe mijn status te zien" - -#: ../src/gtkgui.glade.h:53 -msgid "Allow popup/notifications when I'm _away/na/busy/invisible" -msgstr "" -"Laat popups/mededelingen zien als ik _afwezig/niet beschikbaar/bezig/" -"onzichtbaar ben" - -#: ../src/gtkgui.glade.h:54 -msgid "Also known as iChat style" -msgstr "Ook bekend als iChat-stijl" - -#: ../src/gtkgui.glade.h:55 -msgid "Ask status message when I:" -msgstr "Vraag om status bericht als ik:" - -#: ../src/gtkgui.glade.h:56 -msgid "Ask to see his/her status" -msgstr "Vraag hem/haar toestemming zijn/haar status te zien" - -#: ../src/gtkgui.glade.h:57 -msgid "Ask:" -msgstr "Vraag:" - -#: ../src/gtkgui.glade.h:58 -msgid "Assign Open_PGP Key" -msgstr "Wijs Open_PGP Sleutel toe" - -#: ../src/gtkgui.glade.h:59 -msgid "Authorize contact so he can know when you're connected" -msgstr "" -"Geef contact toestemming mijn status op te halen, zodat hij weet wanneer ik " -"online ben" - -#: ../src/gtkgui.glade.h:60 -msgid "Auto _away after:" -msgstr "Automatisch _afwezig na:" - -#: ../src/gtkgui.glade.h:61 -msgid "Auto _not available after:" -msgstr "Automatisch _niet beschikbaar na:" - -#: ../src/gtkgui.glade.h:62 -msgid "Auto join" -msgstr "Automatisch binnengaan" - -# deelnemen? -#: ../src/gtkgui.glade.h:63 -msgid "" -"Autodetect on every Gajim startup\n" -"Always use GNOME default applications\n" -"Always use KDE default applications\n" -"Custom" -msgstr "" -"Herken automatisch als Gajim opstart\n" -"Gebruik altijd standaard GNOME toepassingen\n" -"Gebruik altijd standaard KDE toepassingen\n" -"Aangepast" - -#: ../src/gtkgui.glade.h:67 -msgid "Automatically authorize contact" -msgstr "Automatisch contacten toestemming geven" - -#: ../src/gtkgui.glade.h:68 -msgid "Autoreconnect when connection is lost" -msgstr "Automatisch verbinding herstellen als deze verbroken wordt" - -#: ../src/gtkgui.glade.h:69 -#, fuzzy -msgid "B_efore nickname:" -msgstr "Voor bijnaam:" - -#: ../src/gtkgui.glade.h:70 -msgid "Birthday:" -msgstr "Verjaardag:" - -#: ../src/gtkgui.glade.h:71 -msgid "Bold" -msgstr "Vetgedrukt" - -#: ../src/gtkgui.glade.h:72 -msgid "Build custom query" -msgstr "Bouw aangepaste query" - -#: ../src/gtkgui.glade.h:73 -msgid "C_onnect on Gajim startup" -msgstr "Automatisch _verbinding maken als Gajim opstart" - -#: ../src/gtkgui.glade.h:74 -msgid "Cancel file transfer" -msgstr "Bestandsoverdracht annuleren" - -#: ../src/gtkgui.glade.h:75 -msgid "Cancels the selected file transfer" -msgstr "Annuleert de geselecteerde bestandsoverdracht" - -#: ../src/gtkgui.glade.h:76 -msgid "Cancels the selected file transfer and removes incomplete file" -msgstr "" -"Annuleert de geselecteerde bestandsoverdracht en verwijdert het onvolledige " -"bestand" - -#: ../src/gtkgui.glade.h:77 -msgid "Chan_ge Password" -msgstr "Verander Wachtwoord" - -#: ../src/gtkgui.glade.h:78 -msgid "Change Password" -msgstr "Verander Wachtwoord" - -#: ../src/gtkgui.glade.h:79 -msgid "Change _Nickname" -msgstr "Verander Bij_naam" - -#: ../src/gtkgui.glade.h:80 -msgid "Change _Subject" -msgstr "Verander _Onderwerp" - -#: ../src/gtkgui.glade.h:82 -msgid "Chat state noti_fications:" -msgstr "Gesprekstoestands _mededelingen:" - -#: ../src/gtkgui.glade.h:83 -msgid "" -"Check this option, only if someone you don't have in the roster spams/annoys " -"you. Use with caution, cause it blocks all messages from any contact that is " -"not in the roster" -msgstr "" -"Vink deze optie alleen aan als iemand niet op je rooster je spamt of " -"lastigvalt. Wees voorzichtig, met deze optie worden all berichten van " -"contacten niet op je rooster geblokkeerd" - -#: ../src/gtkgui.glade.h:84 -msgid "" -"Check this so Gajim will connect in port 5223 where legacy servers are " -"expected to have SSL capabilities. Note that Gajim uses TLS encryption by " -"default if broadcasted by the server, and with this option enabled TLS will " -"be disabled" -msgstr "" -"Vink dit aan als je wilt dat Gajim verbinding maakt met SSL over poort 5223. " -"Let op, deze functionaliteit werkt mogelijk alleen bij oudere servers. Gajim " -"gebruikt standaard al TLS waar mogelijk. Deze optie schakelt TLS echter uit." - -#: ../src/gtkgui.glade.h:85 -msgid "Choose _Key..." -msgstr "Kies _Sleutel..." - -#: ../src/gtkgui.glade.h:86 -msgid "City:" -msgstr "Stad:" - -#: ../src/gtkgui.glade.h:87 -msgid "Clean _up" -msgstr "Ruim _op" - -#: ../src/gtkgui.glade.h:88 -msgid "Click to change account's password" -msgstr "Klik om het wachtwoord van de account te veranderen" - -#: ../src/gtkgui.glade.h:89 -#, fuzzy -msgid "Click to insert an emoticon (Alt+M)" -msgstr "Klik om een emoticon in te voegen (Alt+E)" - -#: ../src/gtkgui.glade.h:90 -msgid "Click to see features (like MSN, ICQ transports) of jabber servers" -msgstr "" -"Klik om mogelijkheden (zoals MSN, ICQ transporten) van jabber servers te zien" - -#: ../src/gtkgui.glade.h:91 -msgid "Click to see past conversation in this room" -msgstr "Klik om de gespreksgeschiedenis van deze ruimte te bekijken" - -#: ../src/gtkgui.glade.h:92 -msgid "Click to see past conversations with this contact" -msgstr "Klik om de gespreksgeschiedenis van deze contact te bekijken" - -#: ../src/gtkgui.glade.h:93 -msgid "Client:" -msgstr "Client:" - -#: ../src/gtkgui.glade.h:94 -msgid "Company:" -msgstr "Bedrijf:" - -#: ../src/gtkgui.glade.h:95 -msgid "Composing" -msgstr "" - -#: ../src/gtkgui.glade.h:96 -msgid "Configure _Room" -msgstr "Configureer _Ruimte" - -#: ../src/gtkgui.glade.h:97 -msgid "Connect when I press Finish" -msgstr "Verbind zodra ik Afronden druk" - -#: ../src/gtkgui.glade.h:98 -msgid "Connection" -msgstr "Verbinding" - -#: ../src/gtkgui.glade.h:99 -msgid "Contact Information" -msgstr "Contact Informatie" - -#: ../src/gtkgui.glade.h:100 -msgid "Contact _Info" -msgstr "Contact _Info" - -#: ../src/gtkgui.glade.h:101 -msgid "Conversation History" -msgstr "Gespreksgeschiedenis" - -#: ../src/gtkgui.glade.h:102 -msgid "Country:" -msgstr "Land:" - -#: ../src/gtkgui.glade.h:103 -#, fuzzy -msgid "Default status _iconset:" -msgstr "Standaard _status iconenset:" - -#: ../src/gtkgui.glade.h:104 -msgid "Delete MOTD" -msgstr "Wis MOTD" - -#: ../src/gtkgui.glade.h:105 -msgid "Deletes Message of the Day" -msgstr "Zal het Bericht van de Dag wissen" - -#: ../src/gtkgui.glade.h:106 -msgid "Deny" -msgstr "Weigeren" - -#: ../src/gtkgui.glade.h:107 -msgid "Deny authorization from contact so he cannot know when you're connected" -msgstr "Geef contact geen toestemming om te zien of je online bent" - -#: ../src/gtkgui.glade.h:108 -msgid "Department:" -msgstr "Afdeling:" - -#: ../src/gtkgui.glade.h:109 -#, fuzzy -msgid "Display a_vatars of contacts in roster" -msgstr "Negeer gebeurtenissen van contacten die niet op mijn rooster staan" - -#: ../src/gtkgui.glade.h:110 -#, fuzzy -msgid "Display status _messages of contacts in roster" -msgstr "Statusberichten van contacten weergeven in het rooster" - -#: ../src/gtkgui.glade.h:111 -msgid "E-Mail:" -msgstr "E-Mail:" - -#: ../src/gtkgui.glade.h:112 -#, fuzzy -msgid "E_very 5 minutes" -msgstr "Elke 5 _minuten" - -#: ../src/gtkgui.glade.h:113 -msgid "Edit Groups" -msgstr "Wijzig Groepen" - -#: ../src/gtkgui.glade.h:114 -msgid "Edit Personal Information..." -msgstr "Wijzig Persoonlijke Informatie..." - -#: ../src/gtkgui.glade.h:115 -msgid "Edit _Groups" -msgstr "Wijzig _Groepen" - -#: ../src/gtkgui.glade.h:116 -#, fuzzy -msgid "Emoticons:" -msgstr "Beheer Emoticons" - -#. XML Console enable checkbutton -#: ../src/gtkgui.glade.h:118 -msgid "Enable" -msgstr "Inschakelen" - -#: ../src/gtkgui.glade.h:119 -msgid "Enter it again for confirmation:" -msgstr "Geef opnieuw op ter bevestiging:" - -#: ../src/gtkgui.glade.h:120 -msgid "Enter new password:" -msgstr "Geef nieuw wachtwoord op:" - -#: ../src/gtkgui.glade.h:121 -msgid "Events" -msgstr "Gebeurtenissen" - -#: ../src/gtkgui.glade.h:122 -msgid "Extra Address:" -msgstr "Extra Adres:" - -#. Family Name -#: ../src/gtkgui.glade.h:124 -msgid "Family:" -msgstr "Familie:" - -#: ../src/gtkgui.glade.h:125 -msgid "File Transfers" -msgstr "Bestandsoverdrachten" - -#: ../src/gtkgui.glade.h:126 -msgid "File _Transfers" -msgstr "Bestands_overdrachten" - -#: ../src/gtkgui.glade.h:127 -msgid "Filter:" -msgstr "Filter:" - -#: ../src/gtkgui.glade.h:128 -msgid "Font style:" -msgstr "Letterstijl:" - -#: ../src/gtkgui.glade.h:129 -msgid "Forbid him/her to see my status" -msgstr "Verbiedt hem/haar mijn status te zien" - -#: ../src/gtkgui.glade.h:130 -msgid "Format: YYYY-MM-DD" -msgstr "Formaat: YYYY-MM-DD" - -#: ../src/gtkgui.glade.h:131 -msgid "Frequently Asked Questions (online)" -msgstr "Veel Gestelde Vragen (online)" - -#: ../src/gtkgui.glade.h:132 -msgid "From:" -msgstr "Van:" - -#: ../src/gtkgui.glade.h:133 -msgid "G_o" -msgstr "Ga" - -#: ../src/gtkgui.glade.h:134 ../src/notify.py:167 ../src/notify.py:189 -#: ../src/notify.py:201 ../src/tooltips.py:339 -msgid "Gajim" -msgstr "Gajim" - -#: ../src/gtkgui.glade.h:135 -msgid "Gajim Themes Customization" -msgstr "Gajim Themas Aanpassen" - -#: ../src/gtkgui.glade.h:136 -#, fuzzy -msgid "" -"Gajim can send and receive meta-information related to a conversation you " -"may have with a contact. Here you can specify which chatstates you want to " -"send to the other party." -msgstr "Gajim kan de gesprekstoestanden versturen en ontvangen" - -#: ../src/gtkgui.glade.h:137 -#, fuzzy -msgid "" -"Gajim will automatically show new events by poping up the relative window" -msgstr "" -"Gajim zal automatisch nieuwe berichten in een nieuw venster of tab in een " -"bestaand venster laten zien" - -#: ../src/gtkgui.glade.h:138 -#, fuzzy -msgid "" -"Gajim will notify you for new events via a popup in the bottom right of the " -"screen" -msgstr "" -"Gajim zal nieuwe berichten mededelen m.b.v. een popup rechtsonder in beeld" - -#: ../src/gtkgui.glade.h:139 -msgid "" -"Gajim will notify you via a popup window in the bottom right of the screen " -"about contacts that just signed in" -msgstr "" -"Gajim zal contacten die zich aanmelden mededelen m.b.v. een popup " -"rechtsonder in beeld" - -#: ../src/gtkgui.glade.h:140 -msgid "" -"Gajim will notify you via a popup window in the bottom right of the screen " -"about contacts that just signed out" -msgstr "" -"Gajim zal contacten die zich afmelden mededelen m.b.v. een popup rechtsonder " -"in beeld" - -#: ../src/gtkgui.glade.h:141 -#, fuzzy -msgid "" -"Gajim will only change the icon of the contact that triggered the new event" -msgstr "Gajim zal alleen het contacticoon veranderen bij nieuwe berichten" - -#: ../src/gtkgui.glade.h:142 -msgid "Gajim: Account Creation Wizard" -msgstr "Gajim: Wizard Account Aanmaken" - -#. user has no group, print him in General -#: ../src/gtkgui.glade.h:143 ../src/roster_window.py:291 -#: ../src/roster_window.py:1183 ../src/roster_window.py:1405 -#: ../src/systray.py:286 -msgid "General" -msgstr "Algemeen" - -#. Given Name -#: ../src/gtkgui.glade.h:145 -msgid "Given:" -msgstr "Voornaam:" - -#: ../src/gtkgui.glade.h:146 -#, fuzzy -msgid "Gone" -msgstr "Geen" - -#: ../src/gtkgui.glade.h:147 -msgid "Group:" -msgstr "Groep:" - -#: ../src/gtkgui.glade.h:148 -msgid "HTTP Connect" -msgstr "HTTP Verbinden" - -#: ../src/gtkgui.glade.h:149 -msgid "Help online" -msgstr "Hulp online" - -#: ../src/gtkgui.glade.h:150 -msgid "Hides the window" -msgstr "Verbergt het venster" - -#: ../src/gtkgui.glade.h:151 -msgid "Homepage:" -msgstr "Homepage:" - -#: ../src/gtkgui.glade.h:152 -msgid "Hostname: " -msgstr "Hostnaam: " - -#: ../src/gtkgui.glade.h:153 -msgid "I already have an account I want to use" -msgstr "Ik heb al een account die ik wil gebruiken" - -#: ../src/gtkgui.glade.h:154 -msgid "I want to _register for a new account" -msgstr "Ik wil een nieuwe account _registreren" - -#: ../src/gtkgui.glade.h:155 -msgid "I would like to add you to my contact list." -msgstr "Ik wil je graag toevoegen aan mijn contactlijst" - -#: ../src/gtkgui.glade.h:156 -msgid "" -"If checked, Gajim will also broadcast some more IPs except from just your " -"IP, so file transfer has higher chances of working right." -msgstr "" - -#: ../src/gtkgui.glade.h:157 -#, fuzzy -msgid "" -"If checked, Gajim will display avatars of contacts in roster window and in " -"group chats" -msgstr "" -"Indien aangevinkt zal Gajim contactafbeeldingen in het roostervenster laten " -"zien" - -#: ../src/gtkgui.glade.h:158 -#, fuzzy -msgid "" -"If checked, Gajim will display status messages of contacts under the contact " -"name in roster window and in group chats" -msgstr "" -"Indien aangevinkt zal Gajim statusberichten van contacten onder de " -"contactnaam in het roostervenster laten zien." - -#: ../src/gtkgui.glade.h:159 -msgid "If checked, Gajim will join this group chat on startup" -msgstr "" -"Indien aangevinkt zal Gajim zich automatisch aanmelden bij dit groepsgesprek " -"tijdens het opstarten" - -#: ../src/gtkgui.glade.h:160 -msgid "If checked, Gajim will remember the password for this account" -msgstr "Indien aangevinkt zal Gajim het wachtwoord onthouden voor deze account" - -#: ../src/gtkgui.glade.h:161 -msgid "" -"If checked, Gajim will remember the roster and chat window positions in the " -"screen and the sizes of them next time you run it" -msgstr "" -"Indien aangevinkt zal Gajim de positie en grootte van vensters onthouden " -"voor de volgende keer dat ze geopend worden" - -#: ../src/gtkgui.glade.h:162 -msgid "" -"If checked, Gajim will send keep-alive packets so it prevents connection " -"timeout which results in disconnection" -msgstr "" -"Indien aangevinkt zal Gajim keep-alive-paketten sturen om de verbinding in " -"stand te houden" - -#: ../src/gtkgui.glade.h:163 -msgid "" -"If checked, Gajim will store the password in ~/.gajim/config with 'read' " -"permission only for you" -msgstr "" -"Indien aangevinkt zal Gajim wachtwoorden opslaan in ~/.gajim/config met " -"alleen leesrechten voor allen jou" - -#: ../src/gtkgui.glade.h:164 -msgid "" -"If checked, Gajim will use protocol-specific status icons. (eg. A contact " -"from MSN will have the equivalent msn icon for status online, away, busy, " -"etc...)" -msgstr "" -"Indien aangevinkt zal Gajim iconen gebruiken die bij het protocol horen. " -"(Bijv. contacten van MSN zullen met msn iconen weergegeven worden voor " -"status online, afwezig, bezig, enz...)" - -#: ../src/gtkgui.glade.h:165 -msgid "" -"If checked, Gajim, when launched, will automatically connect to jabber using " -"this account" -msgstr "" -"Indien aangevinkt zal Gajim automatisch verbinding maken met deze account " -"bij het opstarten" - -#: ../src/gtkgui.glade.h:166 -msgid "" -"If checked, any change to the global status (handled by the combobox at the " -"bottom of the roster window) will change the status of this account " -"accordingly" -msgstr "" -"Indien aangevinkt zal elke verandering in globale status (bedient met de " -"lijstknop onderaan het roostervenster) de status van deze account " -"meeveranderen." - -#: ../src/gtkgui.glade.h:167 -#, fuzzy -msgid "" -"If not disabled, Gajim will replace ascii smilies like ':)' with equivalent " -"animated or static graphical emoticons" -msgstr "" -"Indien aangevinkt zal Gajim tekst smilies, zoals ':)', vervangen met " -"bijpassende grafische emoticons" - -#: ../src/gtkgui.glade.h:168 -msgid "" -"If you have 2 or more accounts and it is checked, Gajim will list all " -"contacts as if you had one account" -msgstr "" -"Indien aangevinkt en je twee of meer accounts hebt, zal Gajim de contacten " -"van alle accounts samenvoegen alsof ze een grote account zijn." - -#: ../src/gtkgui.glade.h:169 -#, fuzzy -msgid "Inactive" -msgstr "Actief" - -#. Info/Query make the "IQ" initials. So translate like this 'YourLang/YourLang (Info/Query)'. Thanks (it's a tooltip so width is not a problem) -#: ../src/gtkgui.glade.h:171 -msgid "Info/Query" -msgstr "Info/Vraag (Info/Query)" - -#: ../src/gtkgui.glade.h:172 -msgid "Information about you, as stored in the server" -msgstr "Informatie over jou, zoals op de server opgeslagen" - -#: ../src/gtkgui.glade.h:173 -msgid "Invitation Received" -msgstr "Uitnodiging Ontvangen" - -#: ../src/gtkgui.glade.h:174 -msgid "Italic" -msgstr "Schuingedrukt" - -#: ../src/gtkgui.glade.h:175 -msgid "Jabber" -msgstr "Jabber" - -#: ../src/gtkgui.glade.h:176 -msgid "Jabber ID:" -msgstr "Jabber ID:" - -#: ../src/gtkgui.glade.h:178 -msgid "Join _Group Chat" -msgstr "Neem deel aan _Groepsgesprek" - -#: ../src/gtkgui.glade.h:179 -msgid "Location" -msgstr "Locatie" - -#: ../src/gtkgui.glade.h:180 -#, fuzzy -msgid "" -"MUC\n" -"Messages" -msgstr "_Bericht" - -#: ../src/gtkgui.glade.h:182 -msgid "" -"MUC Directed\n" -"Messages" -msgstr "" - -#: ../src/gtkgui.glade.h:184 -#, fuzzy -msgid "Ma_nage..." -msgstr "Beheer..." - -#: ../src/gtkgui.glade.h:185 -msgid "Manage Accounts" -msgstr "Beheer Accounts" - -#: ../src/gtkgui.glade.h:186 -msgid "Manage Bookmarks" -msgstr "Beheer Bladwijzers" - -#: ../src/gtkgui.glade.h:187 -msgid "Manage Proxy Profiles" -msgstr "Beheer Proxy Profielen" - -#: ../src/gtkgui.glade.h:188 -msgid "Manage..." -msgstr "Beheer..." - -#. Middle Name -#: ../src/gtkgui.glade.h:190 -msgid "Middle:" -msgstr "Middelste naam:" - -#: ../src/gtkgui.glade.h:191 -msgid "Mo_derator" -msgstr "_Beheerder" - -#: ../src/gtkgui.glade.h:192 -msgid "More" -msgstr "Meer" - -#: ../src/gtkgui.glade.h:193 -msgid "Name:" -msgstr "Naam:" - -#: ../src/gtkgui.glade.h:194 -msgid "" -"Never\n" -"Always\n" -"Per account\n" -"Per type" -msgstr "" - -#: ../src/gtkgui.glade.h:198 -msgid "Nickname:" -msgstr "Bijnaam:" - -#. None means no proxy profile selected -#: ../src/gtkgui.glade.h:201 -msgid "None" -msgstr "Geen" - -#: ../src/gtkgui.glade.h:202 -msgid "Notify me about contacts that: " -msgstr "Geef mij bericht over contacten die: " - -#: ../src/gtkgui.glade.h:203 -msgid "Notify on new _Gmail e-mail" -msgstr "" - -#: ../src/gtkgui.glade.h:204 -msgid "OS:" -msgstr "Besturingssysteem:" - -#: ../src/gtkgui.glade.h:205 -msgid "On every _message" -msgstr "Bij elk _bericht" - -#: ../src/gtkgui.glade.h:206 -#, fuzzy -msgid "One message _window:" -msgstr "Bericht verzenden en venster sluiten" - -#: ../src/gtkgui.glade.h:208 -msgid "Pass_word:" -msgstr "_Wachtwoord:" - -#: ../src/gtkgui.glade.h:209 -msgid "Passphrase" -msgstr "Wachtwoord" - -#: ../src/gtkgui.glade.h:210 -msgid "Password:" -msgstr "Wachtwoord:" - -#: ../src/gtkgui.glade.h:211 ../src/tooltips.py:645 -msgid "Paused" -msgstr "Gepauzeerd" - -#: ../src/gtkgui.glade.h:212 -msgid "Personal Information" -msgstr "Persoonlijke Informatie" - -#: ../src/gtkgui.glade.h:213 -msgid "Phone No.:" -msgstr "Telefoonnummer:" - -#: ../src/gtkgui.glade.h:214 -msgid "Play _sounds" -msgstr "Speel _geluiden af" - -#: ../src/gtkgui.glade.h:215 -msgid "Port: " -msgstr "Poort: " - -#: ../src/gtkgui.glade.h:216 -msgid "Position:" -msgstr "Positie:" - -#: ../src/gtkgui.glade.h:217 -msgid "Postal Code:" -msgstr "Postcode:" - -#: ../src/gtkgui.glade.h:218 -msgid "Preferences" -msgstr "Voorkeuren" - -#. Prefix in Name -#: ../src/gtkgui.glade.h:220 -msgid "Prefix:" -msgstr "Voorvoegsel:" - -#: ../src/gtkgui.glade.h:221 -#, fuzzy -msgid "Preset messages:" -msgstr "statusbericht" - -#: ../src/gtkgui.glade.h:222 -msgid "Print time:" -msgstr "Print tijd:" - -#: ../src/gtkgui.glade.h:223 -msgid "Priori_ty:" -msgstr "Priori_teit" - -#: ../src/gtkgui.glade.h:224 -msgid "" -"Priority is used in Jabber to determine who gets the events from the jabber " -"server when two or more clients are connected using the same account; The " -"client with the highest priority gets the events" -msgstr "" -"Prioriteit wordt in Jabber gebruikt om te bepalen welke client berichten " -"ontvangt als er twee keer op dezelfde account ingelogd is; de hoogste " -"prioriteit wint." - -#: ../src/gtkgui.glade.h:225 -msgid "Profile, Avatar" -msgstr "Profiel, Contactafbeelding" - -#: ../src/gtkgui.glade.h:226 -msgid "Protocol:" -msgstr "Protocol:" - -#: ../src/gtkgui.glade.h:227 -msgid "Proxy:" -msgstr "Proxy:" - -#: ../src/gtkgui.glade.h:228 -msgid "Query Builder..." -msgstr "Query Bouwer..." - -#: ../src/gtkgui.glade.h:229 -msgid "Recently:" -msgstr "Recent:" - -#: ../src/gtkgui.glade.h:230 -msgid "Register to" -msgstr "Registreer naar" - -#: ../src/gtkgui.glade.h:231 -msgid "Remove account _only from Gajim" -msgstr "Verwijder account alleen van Gajim" - -#: ../src/gtkgui.glade.h:232 -msgid "Remove account from Gajim and from _server" -msgstr "Verwijder account van Gajim en van de server" - -#: ../src/gtkgui.glade.h:233 -msgid "Remove file transfer from the list." -msgstr "Verwijder bestandsoverdracht van de lijst." - -#: ../src/gtkgui.glade.h:234 -msgid "Removes completed, canceled and failed file transfers from the list" -msgstr "" -"Verwijdert afgeronde, geannuleerde en mislukte bestandsoverdrachten van de " -"lijst" - -#: ../src/gtkgui.glade.h:235 -msgid "Reply to this message" -msgstr "Beantwoord dit bericht" - -#: ../src/gtkgui.glade.h:236 -msgid "Resour_ce: " -msgstr "_Bron: " - -#: ../src/gtkgui.glade.h:237 -msgid "" -"Resource is sent to the Jabber server in order to separate the same JID in " -"two or more parts depending on the number of the clients connected in the " -"same server with the same account. So you might be connected in the same " -"account with resource 'Home' and 'Work' at the same time. The resource which " -"has the highest priority will get the events. (see below)" -msgstr "" -"De bron wordt verstuurd naar de Jabber server om onderscheid te maken tussen " -"twee of meer dezelfde JIDs. Op deze manier is het mogelijk om bijvoorbeeld " -"met zowel met een bron 'Thuis' als een bron 'Werk' ingelogd te zijn. De " -"prioriteit bepaald dan wie berichten ontvangt. (zie hieronder)" - -#: ../src/gtkgui.glade.h:238 -msgid "Resource:" -msgstr "Bron:" - -#: ../src/gtkgui.glade.h:239 -msgid "Role:" -msgstr "Rol:" - -#: ../src/gtkgui.glade.h:240 -msgid "Room Configuration" -msgstr "Ruimte Configuratie" - -#: ../src/gtkgui.glade.h:241 -msgid "Room:" -msgstr "Ruimte:" - -#: ../src/gtkgui.glade.h:242 -msgid "Save _passphrase (insecure)" -msgstr "Sla _wachtwoord op (onveilig)" - -#: ../src/gtkgui.glade.h:243 -msgid "Save _position and size for roster and chat windows" -msgstr "Sla _positie en grootte op voor rooster- en gespreksvensters" - -#: ../src/gtkgui.glade.h:244 -#, fuzzy -msgid "Save as Preset..." -msgstr "Sla Bestand op als..." - -#: ../src/gtkgui.glade.h:245 -msgid "Save conversation _logs for all contacts" -msgstr "Sla gespreks_logboek op voor alle contacten" - -#: ../src/gtkgui.glade.h:246 -msgid "Save pass_word" -msgstr "Sla _wachtwoord op" - -#: ../src/gtkgui.glade.h:247 -#, fuzzy -msgid "Search" -msgstr "_Zoek" - -#: ../src/gtkgui.glade.h:248 -msgid "Sen_d" -msgstr "Verzen_d" - -#: ../src/gtkgui.glade.h:249 -msgid "Send File" -msgstr "Bestand Verzenden" - -#: ../src/gtkgui.glade.h:250 -msgid "Send Single _Message" -msgstr "Enkel _Bericht Verzenden" - -#: ../src/gtkgui.glade.h:251 -#, fuzzy -msgid "Send Single _Message..." -msgstr "Enkel _Bericht Verzenden" - -#: ../src/gtkgui.glade.h:252 -msgid "Send _File" -msgstr "_Bestand Verzenden" - -#: ../src/gtkgui.glade.h:253 -msgid "Send keep-alive packets" -msgstr "Keep-alive-pakketten verzenden" - -#: ../src/gtkgui.glade.h:254 -msgid "Send message" -msgstr "Bericht verzenden" - -#: ../src/gtkgui.glade.h:255 -msgid "Send message and close window" -msgstr "Bericht verzenden en venster sluiten" - -#: ../src/gtkgui.glade.h:256 -msgid "Sends a message to currently connected users to this server" -msgstr "Stuurt een bericht naar gebruikers momenteel verbonden met deze server" - -#: ../src/gtkgui.glade.h:257 -msgid "Server:" -msgstr "Server:" - -#: ../src/gtkgui.glade.h:258 -msgid "Servers Features" -msgstr "Server Mogelijkheden" - -#: ../src/gtkgui.glade.h:259 -msgid "Set MOTD" -msgstr "Stel MOTD in" - -#: ../src/gtkgui.glade.h:260 -msgid "Set _Avatar" -msgstr "Stel Contact_afbeelding in" - -#: ../src/gtkgui.glade.h:261 -#, fuzzy -msgid "Set my profile when I connect" -msgstr "Stel een contactafbeelding in zodra ik verbinding maak" - -#: ../src/gtkgui.glade.h:262 -msgid "Sets Message of the Day" -msgstr "Stelt het Bericht van de Dag in" - -#: ../src/gtkgui.glade.h:263 -msgid "Show All Pending _Events" -msgstr "Laat Alle Wachtende Gebeurtenissen Zien" - -#: ../src/gtkgui.glade.h:264 -msgid "Show _Offline Contacts" -msgstr "_Offline Contacten Weergeven" - -#: ../src/gtkgui.glade.h:265 -msgid "Show _Roster" -msgstr "_Rooster Weergeven" - -#: ../src/gtkgui.glade.h:266 -msgid "Show _XML Console" -msgstr "_XML Console Weergeven" - -#: ../src/gtkgui.glade.h:267 -msgid "Show only in _roster" -msgstr "Alleen in _rooster weergeven" - -#: ../src/gtkgui.glade.h:268 -msgid "Shows a list of file transfers between you and other" -msgstr "Laat een lijst met bestandsoverdrachten zien tussen jou en ander" - -#: ../src/gtkgui.glade.h:269 -msgid "Sign _in" -msgstr "_Inloggen" - -#: ../src/gtkgui.glade.h:270 -msgid "Sign _out" -msgstr "_Uitloggen" - -#: ../src/gtkgui.glade.h:271 -msgid "Sta_tus" -msgstr "Sta_tus" - -#: ../src/gtkgui.glade.h:272 -msgid "Start _Chat" -msgstr "Start _Gesprek" - -#: ../src/gtkgui.glade.h:273 -msgid "State:" -msgstr "Staat:" - -#: ../src/gtkgui.glade.h:274 -msgid "Status" -msgstr "Status" - -#: ../src/gtkgui.glade.h:275 -msgid "Status:" -msgstr "Status:" - -#: ../src/gtkgui.glade.h:276 -msgid "Street:" -msgstr "Straat:" - -#: ../src/gtkgui.glade.h:277 -msgid "Subject:" -msgstr "Onderwerp:" - -#: ../src/gtkgui.glade.h:278 -msgid "Subscription Request" -msgstr "Abonneringsverzoek" - -#: ../src/gtkgui.glade.h:279 -msgid "Subscription:" -msgstr "Abonnement:" - -#. Suffix in Name -#: ../src/gtkgui.glade.h:281 -msgid "Suffix:" -msgstr "Achtervoegsel:" - -#: ../src/gtkgui.glade.h:282 -msgid "Synch_ronize account status with global status" -msgstr "Synch_roniseer account status met globale status" - -#: ../src/gtkgui.glade.h:283 -#, fuzzy -msgid "T_heme:" -msgstr "Thema:" - -#: ../src/gtkgui.glade.h:284 -msgid "Text _color:" -msgstr "Tekst_kleur" - -#: ../src/gtkgui.glade.h:285 -msgid "Text _font:" -msgstr "Letter_type" - -#: ../src/gtkgui.glade.h:286 -msgid "The auto away status message" -msgstr "Het statusbericht voor automatische afwezigheid" - -#: ../src/gtkgui.glade.h:287 -msgid "The auto not available status message" -msgstr "Het statusbericht voor automatisch niet beschikbaar" - -#: ../src/gtkgui.glade.h:288 -msgid "" -"This action removes single file transfer from the list. If the transfer is " -"active, it is first stopped and then removed" -msgstr "" -"Deze actie verwijdert een enkele bestandsoverdracht van de lijst. Als de " -"overdracht actief is, wordt hij eerst gestopt en dan verwijdert" - -#: ../src/gtkgui.glade.h:289 -msgid "Title:" -msgstr "Titel:" - -#: ../src/gtkgui.glade.h:290 -msgid "To:" -msgstr "Aan:" - -#: ../src/gtkgui.glade.h:291 -msgid "Toggle Open_PGP Encryption" -msgstr "Schakel Open_PGP Codering om" - -#: ../src/gtkgui.glade.h:292 -msgid "Type:" -msgstr "Type:" - -#: ../src/gtkgui.glade.h:293 -msgid "Underline" -msgstr "Onderstreept" - -#: ../src/gtkgui.glade.h:294 -msgid "Update MOTD" -msgstr "MOTD Bijwerken" - -#: ../src/gtkgui.glade.h:295 -msgid "Updates Message of the Day" -msgstr "Werkt Bericht van de Dag bij" - -#: ../src/gtkgui.glade.h:296 -msgid "Use _SSL (legacy)" -msgstr "Gebruik _SSL (verouderd)" - -#: ../src/gtkgui.glade.h:297 -msgid "Use _transports iconsets" -msgstr "Gebruik _transport iconensets" - -#: ../src/gtkgui.glade.h:298 -msgid "Use authentication" -msgstr "Gebruik aanmelding" - -#: ../src/gtkgui.glade.h:299 -msgid "Use custom hostname/port" -msgstr "Gebruik aangepaste hostnaam/poort" - -#: ../src/gtkgui.glade.h:300 -#, fuzzy -msgid "Use file transfer proxies" -msgstr "bestandsoverdrachtlijst" - -#: ../src/gtkgui.glade.h:301 -#, fuzzy -msgid "Use t_rayicon (aka. notification area icon)" -msgstr "_Icoon in mededelingsgebied" - -#: ../src/gtkgui.glade.h:302 -msgid "User ID:" -msgstr "Gebruikers ID:" - -#: ../src/gtkgui.glade.h:303 -msgid "When a file transfer is complete show a popup notification" -msgstr "Laat een popup zien als een bestandsoverdracht voltooid is" - -#: ../src/gtkgui.glade.h:304 -#, fuzzy -msgid "" -"When a new event (message, file transfer request etc..) is received, the " -"following methods may be used to inform you about it. Please note that " -"events about new messages only occur if it is a new message from a contact " -"you are not already chatting with" -msgstr "" -"Als een nieuwe gebeurtenis (bericht, bestandsoverdracht, enz.) ontvangen is, " -"kunnen de volgende methoden gebruikt worden om je te informeren. LET OP: " -"Nieuwe bericht-gebeurtenissen treden alleen op als het een nieuw bericht is " -"van een contact waar je nog geen gesprek mee hebt" - -#: ../src/gtkgui.glade.h:305 -msgid "When new event is received" -msgstr "Als een nieuwe gebeurtenis ontvangen is" - -#: ../src/gtkgui.glade.h:306 -msgid "Work" -msgstr "Werk" - -#: ../src/gtkgui.glade.h:307 -msgid "" -"You need to have an account in order to connect\n" -"to the Jabber network." -msgstr "" -"Je hebt een account nodig om verbinding te maken\n" -"met het Jabber netwerk." - -#: ../src/gtkgui.glade.h:309 -msgid "Your JID:" -msgstr "Jouw JID:" - -#. Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector) -#: ../src/gtkgui.glade.h:311 -msgid "_Actions" -msgstr "_Acties" - -#: ../src/gtkgui.glade.h:312 -msgid "_Add Contact..." -msgstr "_Contact Toevoegen..." - -#: ../src/gtkgui.glade.h:313 -msgid "_Add to Roster" -msgstr "_Toevoegen aan Roster" - -#: ../src/gtkgui.glade.h:314 -msgid "_Address:" -msgstr "_Adres:" - -#: ../src/gtkgui.glade.h:315 -msgid "_Admin" -msgstr "_Admin" - -#: ../src/gtkgui.glade.h:316 -msgid "_Administrator" -msgstr "_Administrator" - -#: ../src/gtkgui.glade.h:317 -msgid "_Advanced" -msgstr "Gea_vanceerd" - -#: ../src/gtkgui.glade.h:318 -#, fuzzy -msgid "_After time:" -msgstr "Na tijdsstempel:" - -#: ../src/gtkgui.glade.h:319 -msgid "_Authorize" -msgstr "_Toestemmen" - -#: ../src/gtkgui.glade.h:320 -msgid "_Background:" -msgstr "_Achtergrond:" - -#: ../src/gtkgui.glade.h:321 -msgid "_Ban" -msgstr "Ver_bannen" - -#: ../src/gtkgui.glade.h:322 -#, fuzzy -msgid "_Before time:" -msgstr "Voor tijdsstempel:" - -#: ../src/gtkgui.glade.h:323 -msgid "_Bookmark This Room" -msgstr "Maak _Bladwijzer Voor Deze Ruimte" - -#: ../src/gtkgui.glade.h:324 -msgid "_Browser:" -msgstr "_Browser:" - -#: ../src/gtkgui.glade.h:325 -msgid "_Cancel" -msgstr "_Annulerem" - -#: ../src/gtkgui.glade.h:326 -msgid "_Compact View Alt+C" -msgstr "_Compacte Weergave Alt+C" - -#: ../src/gtkgui.glade.h:327 -msgid "_Contents" -msgstr "_Inhoud" - -#: ../src/gtkgui.glade.h:329 -msgid "_Copy JID/Email Address" -msgstr "_Kopieer JID/Email Adres" - -#: ../src/gtkgui.glade.h:330 -msgid "_Copy Link Location" -msgstr "_Kopieer Link Lokatie" - -#: ../src/gtkgui.glade.h:331 -msgid "_Deny" -msgstr "_Weigeren" - -#: ../src/gtkgui.glade.h:332 -msgid "_Discover Services" -msgstr "Ontdek Services" - -#: ../src/gtkgui.glade.h:333 -msgid "_Discover Services..." -msgstr "Ontdek Services..." - -#: ../src/gtkgui.glade.h:335 -msgid "_FAQ" -msgstr "_FAQ" - -#: ../src/gtkgui.glade.h:336 -#, fuzzy -msgid "_File manager:" -msgstr "Bestandsbeheerder:" - -#: ../src/gtkgui.glade.h:337 -msgid "_Filter:" -msgstr "_Filter:" - -#: ../src/gtkgui.glade.h:338 -msgid "_Finish" -msgstr "_Afronden" - -#: ../src/gtkgui.glade.h:339 -#, fuzzy -msgid "_Font:" -msgstr "Lettertype:" - -#: ../src/gtkgui.glade.h:340 -msgid "_Group Chat" -msgstr "_Groupsgesprek" - -#: ../src/gtkgui.glade.h:341 -msgid "_Help" -msgstr "_Hulp" - -#: ../src/gtkgui.glade.h:342 -msgid "_Highlight misspelled words" -msgstr "Verkeerd gespelde woorden _markeren" - -#: ../src/gtkgui.glade.h:343 -msgid "_History" -msgstr "_Geschiedenis" - -#: ../src/gtkgui.glade.h:344 -msgid "_Host:" -msgstr "_Host:" - -#. Info/Query: all(?) jabber xml start with Welcome to Gajim History Logs Manager\n" -"\n" -"You can select logs from the left and/or search database from below.\n" -"\n" -"WARNING:\n" -"If you plan to do massive deletions, please make sure Gajim is not running. " -"Generally avoid deletions with contacts you currently chat with." +#: ../src/gtkgui_helpers.py:717 +msgid "Extension not supported" msgstr "" -#: ../src/history_manager.glade.h:7 +#: ../src/gtkgui_helpers.py:718 +#, python-format +msgid "Image cannot be saved in %(type)s format. Save as %(new_filename)s?" +msgstr "" + +#: ../src/gtkgui_helpers.py:727 #, fuzzy -msgid "Delete" -msgstr "Wis MOTD" +msgid "Save Image as..." +msgstr "Sla Bestand op als..." -#: ../src/history_manager.glade.h:8 -msgid "Export" -msgstr "" - -#: ../src/history_manager.glade.h:9 -msgid "Gajim History Logs Manager" -msgstr "" - -#: ../src/history_manager.glade.h:10 -#, fuzzy -msgid "_Search Database" -msgstr "_Zoek" - -#: ../src/history_manager.py:58 +#: ../src/history_manager.py:61 #, fuzzy msgid "Cannot find history logs database" msgstr "logboek database wordt aangemaakt" #. holds jid -#: ../src/history_manager.py:102 +#: ../src/history_manager.py:104 #, fuzzy msgid "Contacts" msgstr "_Inhoud" #. holds time -#: ../src/history_manager.py:115 ../src/history_manager.py:155 -#: ../src/history_window.py:94 +#: ../src/history_manager.py:117 ../src/history_manager.py:157 +#: ../src/history_window.py:85 msgid "Date" msgstr "Datum:" #. holds nickname -#: ../src/history_manager.py:121 ../src/history_manager.py:173 +#: ../src/history_manager.py:123 ../src/history_manager.py:175 #, fuzzy msgid "Nickname" msgstr "Bijnaam:" #. holds message -#: ../src/history_manager.py:129 ../src/history_manager.py:161 -#: ../src/history_window.py:102 +#: ../src/history_manager.py:131 ../src/history_manager.py:163 +#: ../src/history_window.py:93 msgid "Message" msgstr "_Bericht" #. holds subject -#: ../src/history_manager.py:136 ../src/history_manager.py:167 +#: ../src/history_manager.py:138 ../src/history_manager.py:169 #, fuzzy msgid "Subject" msgstr "Onderwerp:" -#: ../src/history_manager.py:181 +#: ../src/history_manager.py:183 msgid "" "Do you want to clean up the database? (STRONGLY NOT RECOMMENDED IF GAJIM IS " "RUNNING)" msgstr "" -#: ../src/history_manager.py:183 +#: ../src/history_manager.py:185 msgid "" "Normally allocated database size will not be freed, it will just become " "reusable. If you really want to reduce database filesize, click YES, else " @@ -3738,142 +4238,177 @@ msgid "" "In case you click YES, please wait..." msgstr "" -#: ../src/history_manager.py:389 +#: ../src/history_manager.py:391 #, fuzzy msgid "Exporting History Logs..." msgstr "Logboeken worden omgezet..." -#: ../src/history_manager.py:465 +#: ../src/history_manager.py:467 #, python-format msgid "%(who)s on %(time)s said: %(message)s\n" msgstr "" -#: ../src/history_manager.py:465 +#: ../src/history_manager.py:467 msgid "who" msgstr "" -#: ../src/history_manager.py:503 +#: ../src/history_manager.py:505 msgid "Do you really want to delete logs of the selected contact?" msgid_plural "Do you really want to delete logs of the selected contacts?" msgstr[0] "" msgstr[1] "" -#: ../src/history_manager.py:507 ../src/history_manager.py:543 +#: ../src/history_manager.py:509 ../src/history_manager.py:545 msgid "This is an irreversible operation." msgstr "" -#: ../src/history_manager.py:540 +#: ../src/history_manager.py:542 msgid "Do you really want to delete the selected message?" msgid_plural "Do you really want to delete the selected messages?" msgstr[0] "" msgstr[1] "" -#: ../src/history_window.py:111 ../src/history_window.py:113 +#: ../src/history_window.py:102 ../src/history_window.py:104 #, python-format msgid "Conversation History with %s" msgstr "Gespreksgeschiedenis van %s" -#: ../src/history_window.py:265 +#: ../src/history_window.py:258 #, python-format msgid "%(nick)s is now %(status)s: %(status_msg)s" msgstr "%(nick)s is nu %(status)s: %(status_msg)s" -#: ../src/history_window.py:269 +#: ../src/history_window.py:262 ../src/notify.py:113 #, python-format msgid "%(nick)s is now %(status)s" msgstr "%(nick)s is nu %(status)s" -#: ../src/history_window.py:275 +#: ../src/history_window.py:268 #, python-format msgid "Status is now: %(status)s: %(status_msg)s" msgstr "Status is nu: %(status)s: %(status_msg)s" -#: ../src/history_window.py:278 +#: ../src/history_window.py:271 #, python-format msgid "Status is now: %(status)s" msgstr "Status is nu: %(status)s" -#: ../src/message_window.py:233 +#: ../src/message_window.py:244 #, fuzzy msgid "Messages" msgstr "_Bericht" -#: ../src/message_window.py:234 +#: ../src/message_window.py:245 #, fuzzy, python-format msgid "%s - Gajim" msgstr "Gajim" -#: ../src/roster_window.py:140 +#: ../src/notify.py:111 +#, fuzzy, python-format +msgid "%(nick)s Changed Status" +msgstr "%(nick)s is nu %(status)s" + +#: ../src/notify.py:121 +#, fuzzy, python-format +msgid "%(nickname)s Signed In" +msgstr "Contact is Ingelogd" + +#: ../src/notify.py:129 +#, fuzzy, python-format +msgid "%(nickname)s Signed Out" +msgstr "Contact is Uitgelogd" + +#: ../src/notify.py:141 +#, fuzzy, python-format +msgid "New Single Message from %(nickname)s" +msgstr "Nieuw Enkel Bericht" + +#: ../src/notify.py:150 +#, fuzzy, python-format +msgid "New Private Message from room %s" +msgstr "Nieuw Privé Bericht" + +#: ../src/notify.py:151 +#, python-format +msgid "%(nickname)s: %(message)s" +msgstr "" + +#: ../src/notify.py:157 +#, python-format +msgid "New Message from %(nickname)s" +msgstr "" + +#: ../src/roster_window.py:131 msgid "Merged accounts" msgstr "Samengevoegde accounts" -#: ../src/roster_window.py:289 ../src/common/helpers.py:42 +#: ../src/roster_window.py:288 ../src/common/helpers.py:39 #, fuzzy msgid "Observers" msgstr "Server" -#: ../src/roster_window.py:542 +#: ../src/roster_window.py:544 #, python-format msgid "You are already in room %s" msgstr "Je bent al in ruimte %s" -#: ../src/roster_window.py:546 ../src/roster_window.py:2262 +#: ../src/roster_window.py:548 ../src/roster_window.py:2280 msgid "You cannot join a room while you are invisible" msgstr "Je kunt een ruimte niet binnengaan terwijl je onzichtbaar bent" #. the 'manage gc bookmarks' item is showed #. below to avoid duplicate code #. add -#: ../src/roster_window.py:735 +#: ../src/roster_window.py:748 #, python-format msgid "to %s account" msgstr "aan %s account" #. disco -#: ../src/roster_window.py:742 +#: ../src/roster_window.py:755 #, python-format msgid "using %s account" msgstr "via %s account" -#. new message +#. new chat #. for chat_with #. for single message -#: ../src/roster_window.py:750 ../src/systray.py:194 ../src/systray.py:201 +#: ../src/roster_window.py:763 ../src/systray.py:193 ../src/systray.py:198 #, python-format msgid "using account %s" msgstr "via account %s" #. profile, avatar -#: ../src/roster_window.py:759 +#: ../src/roster_window.py:772 #, fuzzy, python-format msgid "of account %s" msgstr "voor account %s" -#: ../src/roster_window.py:818 +#: ../src/roster_window.py:831 msgid "Manage Bookmarks..." msgstr "Beheer Bladwijzers..." -#: ../src/roster_window.py:842 +#: ../src/roster_window.py:855 #, python-format msgid "for account %s" msgstr "voor account %s" #. History manager -#: ../src/roster_window.py:863 +#: ../src/roster_window.py:876 #, fuzzy msgid "History Manager" msgstr "_Geschiedenis" -#: ../src/roster_window.py:872 +#: ../src/roster_window.py:885 msgid "_Join New Room" msgstr "Nieuwe Ruimte _Binnengaan" -#: ../src/roster_window.py:1158 +#: ../src/roster_window.py:1159 #, python-format msgid "Transport \"%s\" will be removed" msgstr "Transport \"%s\" zal worden verwijderd" -#: ../src/roster_window.py:1158 +#: ../src/roster_window.py:1159 msgid "" "You will no longer be able to send and receive messages to contacts from " "this transport." @@ -3881,11 +4416,11 @@ msgstr "" "Het zal niet meer mogelijk zijn berichten te sturen en ontvangen van " "contacten via deze transport" -#: ../src/roster_window.py:1200 +#: ../src/roster_window.py:1201 msgid "Assign OpenPGP Key" msgstr "Wijs een OpenPGP sleutel toe" -#: ../src/roster_window.py:1201 +#: ../src/roster_window.py:1202 msgid "Select a key to apply to the contact" msgstr "Selecteer een sleutel om aan de contact toe te wijzen" @@ -3909,39 +4444,39 @@ msgstr "Log _uit" msgid "_Change Status Message" msgstr "_Wijzig Statusbericht" -#: ../src/roster_window.py:1617 +#: ../src/roster_window.py:1621 msgid "Authorization has been sent" msgstr "Machtiging is verzonden" -#: ../src/roster_window.py:1618 +#: ../src/roster_window.py:1622 #, python-format msgid "Now \"%s\" will know your status." msgstr "\"%s\" zal nu je status ontvangen." -#: ../src/roster_window.py:1642 +#: ../src/roster_window.py:1646 msgid "Subscription request has been sent" msgstr "Abonneringsverzoek is verzonden" -#: ../src/roster_window.py:1643 +#: ../src/roster_window.py:1647 #, python-format msgid "If \"%s\" accepts this request you will know his or her status." msgstr "Als \"%s\" dit verzoek aanneemt zal je zijn status kunnen ontvangen." -#: ../src/roster_window.py:1654 +#: ../src/roster_window.py:1658 msgid "Authorization has been removed" msgstr "Machtiging is verwijdert" -#: ../src/roster_window.py:1655 +#: ../src/roster_window.py:1659 #, python-format msgid "Now \"%s\" will always see you as offline." msgstr "\"%s\" zal je nu altijd als offline zien." -#: ../src/roster_window.py:1824 +#: ../src/roster_window.py:1822 #, python-format msgid "Contact \"%s\" will be removed from your roster" msgstr "Contact \"%s\" zal van je rooster verwijdert worden" -#: ../src/roster_window.py:1828 +#: ../src/roster_window.py:1826 #, fuzzy msgid "" "By removing this contact you also remove authorization resulting in him or " @@ -3950,7 +4485,7 @@ msgstr "" "Door deze contact te verwijderen zal je ook zijn toestemming opzeggen om jou " "status te zien. Hij/Zij zal jou altijd als offline zien." -#: ../src/roster_window.py:1832 +#: ../src/roster_window.py:1830 msgid "" "By removing this contact you also by default remove authorization resulting " "in him or her always seeing you as offline." @@ -3958,37 +4493,37 @@ msgstr "" "Door deze contact te verwijderen zal je ook zijn toestemming opzeggen om jou " "status te zien. Hij/Zij zal jou altijd als offline zien." -#: ../src/roster_window.py:1833 +#: ../src/roster_window.py:1831 msgid "I want this contact to know my status after removal" msgstr "Ik wil dat deze contact mijn status blijf zien na verwijdering" -#: ../src/roster_window.py:1901 +#: ../src/roster_window.py:1899 msgid "Passphrase Required" msgstr "Wachtwoord Vereist" -#: ../src/roster_window.py:1902 +#: ../src/roster_window.py:1900 #, fuzzy, python-format msgid "Enter GPG key passphrase for account %s." msgstr "Geef het wachtwoord op van de GPG sleutel voor account %s" -#: ../src/roster_window.py:1907 +#: ../src/roster_window.py:1905 msgid "Save passphrase" msgstr "Sla wachtwoord op" -#: ../src/roster_window.py:1915 +#: ../src/roster_window.py:1913 #, fuzzy msgid "Wrong Passphrase" msgstr "Wachtwoord" -#: ../src/roster_window.py:1916 +#: ../src/roster_window.py:1914 msgid "Please retype your GPG passphrase or press Cancel." msgstr "" -#: ../src/roster_window.py:1964 ../src/roster_window.py:2021 +#: ../src/roster_window.py:1963 ../src/roster_window.py:2020 msgid "You are participating in one or more group chats" msgstr "Je neem deel aan een of meerdere groepsgesprekken" -#: ../src/roster_window.py:1965 ../src/roster_window.py:2022 +#: ../src/roster_window.py:1964 ../src/roster_window.py:2021 msgid "" "Changing your status to invisible will result in disconnection from those " "group chats. Are you sure you want to go invisible?" @@ -3997,21 +4532,21 @@ msgstr "" "groepsgesprekken verbroken worden. Weet je zeker dat je naar onzichtbaar " "wilt gaan?" -#: ../src/roster_window.py:1981 +#: ../src/roster_window.py:1980 msgid "No account available" msgstr "Geen account beschikbaar" -#: ../src/roster_window.py:1982 +#: ../src/roster_window.py:1981 msgid "You must create an account before you can chat with other contacts." msgstr "" "Je moet een account aanmaken voor je gesprekken kunt voeren met andere " "contacten." -#: ../src/roster_window.py:2427 ../src/roster_window.py:2433 +#: ../src/roster_window.py:2452 ../src/roster_window.py:2458 msgid "You have unread messages" msgstr "Je hebt ongelezen berichten" -#: ../src/roster_window.py:2428 ../src/roster_window.py:2434 +#: ../src/roster_window.py:2453 ../src/roster_window.py:2459 msgid "" "Messages will only be available for reading them later if you have history " "enabled." @@ -4019,139 +4554,145 @@ msgstr "" "Berichten zullen alleen voor later beschikbaar zijn als de geschiedenis " "ingeschakeld is." -#: ../src/roster_window.py:3184 +#: ../src/roster_window.py:3231 #, fuzzy, python-format msgid "Drop %s in group %s" msgstr "Van %s in ruimte %s" -#: ../src/roster_window.py:3191 +#: ../src/roster_window.py:3238 #, fuzzy, python-format msgid "Make %s and %s metacontacts" msgstr "Stuurt een bestand aan contact" -#: ../src/roster_window.py:3358 +#: ../src/roster_window.py:3408 msgid "Change Status Message..." msgstr "Wijzig Statusbericht..." -#: ../src/systray.py:155 +#: ../src/systray.py:154 msgid "_Change Status Message..." msgstr "_Wijzig Statusbericht..." -#: ../src/systray.py:236 +#: ../src/systray.py:231 msgid "Hide this menu" msgstr "Verberg dit menu" -#: ../src/systraywin32.py:266 ../src/systraywin32.py:285 -#: ../src/tooltips.py:315 +#: ../src/systraywin32.py:261 ../src/systraywin32.py:280 #, python-format msgid "Gajim - %d unread message" msgid_plural "Gajim - %d unread messages" msgstr[0] "Gajim - één ongelezen bericht" msgstr[1] "Gajim - %d ongelezen berichten" -#: ../src/tooltips.py:321 -#, python-format -msgid "Gajim - %d unread single message" -msgid_plural "Gajim - %d unread single messages" +#: ../src/tooltips.py:326 +#, fuzzy, python-format +msgid " %d unread message" +msgid_plural " %d unread messages" +msgstr[0] "Gajim - één ongelezen bericht" +msgstr[1] "Gajim - %d ongelezen berichten" + +#: ../src/tooltips.py:332 +#, fuzzy, python-format +msgid " %d unread single message" +msgid_plural " %d unread single messages" msgstr[0] "Gajim - één los ongelezen bericht" msgstr[1] "Gajim - %d ongelezen losse berichten" -#: ../src/tooltips.py:327 -#, python-format -msgid "Gajim - %d unread group chat message" -msgid_plural "Gajim - %d unread group chat messages" +#: ../src/tooltips.py:338 +#, fuzzy, python-format +msgid " %d unread group chat message" +msgid_plural " %d unread group chat messages" msgstr[0] "Gajim - één ongelezen groepgesprek bericht" msgstr[1] "Gajim - %d ongelezen groepgesprek berichten" -#: ../src/tooltips.py:333 -#, python-format -msgid "Gajim - %d unread private message" -msgid_plural "Gajim - %d unread private messages" +#: ../src/tooltips.py:344 +#, fuzzy, python-format +msgid " %d unread private message" +msgid_plural " %d unread private messages" msgstr[0] "Gajim - één ongelezen privé bericht" msgstr[1] "Gajim - %d ongelezen privé berichten" -#: ../src/tooltips.py:348 ../src/tooltips.py:350 +#: ../src/tooltips.py:359 ../src/tooltips.py:361 #, python-format msgid "Gajim - %s" msgstr "Gajim - %s" -#: ../src/tooltips.py:383 +#: ../src/tooltips.py:395 msgid "Role: " msgstr "Rol: " -#: ../src/tooltips.py:384 +#: ../src/tooltips.py:396 msgid "Affiliation: " msgstr "Aansluiting: " -#: ../src/tooltips.py:386 ../src/tooltips.py:518 +#: ../src/tooltips.py:398 ../src/tooltips.py:537 msgid "Resource: " msgstr "Bron: " -#: ../src/tooltips.py:394 ../src/tooltips.py:521 ../src/tooltips.py:543 -#: ../src/tooltips.py:654 +#: ../src/tooltips.py:407 ../src/tooltips.py:540 ../src/tooltips.py:565 +#: ../src/tooltips.py:676 msgid "Status: " msgstr "Status: " -#: ../src/tooltips.py:501 +#: ../src/tooltips.py:514 msgid "Subscription: " msgstr "Abonnement: " -#: ../src/tooltips.py:510 +#: ../src/tooltips.py:523 msgid "OpenPGP: " msgstr "OpenPGP: " -#: ../src/tooltips.py:548 +#: ../src/tooltips.py:570 #, fuzzy, python-format msgid "Last status on %s" msgstr "Standaard _status iconenset:" -#: ../src/tooltips.py:550 +#: ../src/tooltips.py:572 #, fuzzy, python-format msgid "Since %s" msgstr "Grootte: %s" -#: ../src/tooltips.py:610 +#: ../src/tooltips.py:632 msgid "Download" msgstr "Download" -#: ../src/tooltips.py:616 +#: ../src/tooltips.py:638 msgid "Upload" msgstr "Upload" -#: ../src/tooltips.py:623 +#: ../src/tooltips.py:645 msgid "Type: " msgstr "Type: " -#: ../src/tooltips.py:629 +#: ../src/tooltips.py:651 msgid "Transferred: " msgstr "Verzonden: " -#: ../src/tooltips.py:632 ../src/tooltips.py:653 +#: ../src/tooltips.py:654 ../src/tooltips.py:675 msgid "Not started" msgstr "Niet gestart" -#: ../src/tooltips.py:636 +#: ../src/tooltips.py:658 msgid "Stopped" msgstr "Gestopt" -#: ../src/tooltips.py:638 ../src/tooltips.py:641 +#: ../src/tooltips.py:660 ../src/tooltips.py:663 msgid "Completed" msgstr "Afgerond" #. stalled is not paused. it is like 'frozen' it stopped alone -#: ../src/tooltips.py:649 +#: ../src/tooltips.py:671 msgid "Stalled" msgstr "Vastgelopen" -#: ../src/tooltips.py:651 +#: ../src/tooltips.py:673 msgid "Transferring" msgstr "Verzenden" -#: ../src/tooltips.py:683 +#: ../src/tooltips.py:705 msgid "This service has not yet responded with detailed information" msgstr "Deze service heeft nog niet geantwoord met gedetaileerde informatie" -#: ../src/tooltips.py:686 +#: ../src/tooltips.py:708 msgid "" "This service could not respond with detailed information.\n" "It is most likely legacy or broken" @@ -4160,24 +4701,24 @@ msgstr "" "Het is waarschijnlijk veroudert of kapot" #. keep identation -#: ../src/vcard.py:186 +#: ../src/vcard.py:188 msgid "Could not load image" msgstr "" -#: ../src/vcard.py:262 +#: ../src/vcard.py:289 msgid "?Client:Unknown" msgstr "?Client:Onbekend" -#: ../src/vcard.py:264 +#: ../src/vcard.py:291 msgid "?OS:Unknown" msgstr "?OS:Onbekend" -#: ../src/vcard.py:281 +#: ../src/vcard.py:308 #, fuzzy, python-format msgid "since %s" msgstr "Doorbladeren van %s" -#: ../src/vcard.py:305 +#: ../src/vcard.py:332 msgid "" "This contact is interested in your presence information, but you are not " "interested in his/her presence" @@ -4185,7 +4726,7 @@ msgstr "" "Deze contact is geïnteresseert in jou aanwezigheid, maar jij niet in zijn/" "haar aanwezigheid" -#: ../src/vcard.py:307 +#: ../src/vcard.py:334 msgid "" "You are interested in the contact's presence information, but he/she is not " "interested in yours" @@ -4193,118 +4734,147 @@ msgstr "" "Je bent geïnteresseert in de contact z'n aanwezigheid, maar hij/zij niet in " "jouw aanwezigheid" -#: ../src/vcard.py:309 +#: ../src/vcard.py:336 msgid "You and the contact are interested in each other's presence information" msgstr "Jij en de contact zijn beide geïnteresseert in elkaars aanwezigheid" #. None -#: ../src/vcard.py:311 +#: ../src/vcard.py:338 msgid "" "You are not interested in the contact's presence, and neither he/she is " "interested in yours" msgstr "" "Jij en de contact zijn beide niet geïnteresseert in elkaars aanwezigheid" -#: ../src/vcard.py:320 +#: ../src/vcard.py:347 msgid "You are waiting contact's answer about your subscription request" msgstr "" "Je bent aan het wachten op bevestiging van jou op abonnement op deze contact" -#: ../src/vcard.py:332 ../src/vcard.py:355 +#: ../src/vcard.py:359 ../src/vcard.py:382 msgid " resource with priority " msgstr " bron met prioriteit" -#: ../src/vcard.py:434 +#: ../src/vcard.py:458 msgid "Without a connection you can not publish your contact information." msgstr "" "Het is niet mogelijk je contact informatie te publiceren zonder verbinding." -#: ../src/vcard.py:463 +#: ../src/vcard.py:491 msgid "Without a connection, you can not get your contact information." msgstr "" "Het is niet mogelijk je contact informatie op te halen zonder verbinding." -#: ../src/vcard.py:467 +#: ../src/vcard.py:495 #, fuzzy msgid "Personal details" msgstr "Persoonlijke Informatie" -#: ../src/common/check_paths.py:39 +#: ../src/common/check_paths.py:35 msgid "creating logs database" msgstr "logboek database wordt aangemaakt" -#: ../src/common/check_paths.py:84 ../src/common/check_paths.py:95 -#: ../src/common/check_paths.py:102 +#: ../src/common/check_paths.py:82 ../src/common/check_paths.py:93 +#: ../src/common/check_paths.py:100 #, python-format msgid "%s is file but it should be a directory" msgstr "%s is een bestand, maar een map werd verwacht" -#: ../src/common/check_paths.py:85 ../src/common/check_paths.py:96 -#: ../src/common/check_paths.py:103 ../src/common/check_paths.py:110 +#: ../src/common/check_paths.py:83 ../src/common/check_paths.py:94 +#: ../src/common/check_paths.py:101 ../src/common/check_paths.py:109 msgid "Gajim will now exit" msgstr "Gajim sluit nu af" -#: ../src/common/check_paths.py:109 +#: ../src/common/check_paths.py:108 #, python-format msgid "%s is directory but should be file" msgstr "%s is een map, maar een bestand werd verwacht" -#: ../src/common/check_paths.py:125 +#: ../src/common/check_paths.py:124 #, python-format msgid "creating %s directory" msgstr "map %s wordt aangemaakt" -#: ../src/common/exceptions.py:35 +#: ../src/common/exceptions.py:32 msgid "pysqlite2 (aka python-pysqlite2) dependency is missing. Exiting..." msgstr "" -#: ../src/common/exceptions.py:43 +#: ../src/common/exceptions.py:40 msgid "Service not available: Gajim is not running, or remote_control is False" msgstr "" "Service niet beschikbaar: Gajim is niet open of remote_control staat uit" -#: ../src/common/exceptions.py:51 +#: ../src/common/exceptions.py:48 msgid "D-Bus is not present on this machine or python module is missing" msgstr "D-Bus bevindt zich niet op deze machine of de python module ontbreekt" -#: ../src/common/exceptions.py:59 +#: ../src/common/exceptions.py:56 msgid "" "Session bus is not available.\n" "Try reading http://trac.gajim.org/wiki/GajimDBus" msgstr "" -#: ../src/common/config.py:53 +#: ../src/common/config.py:51 msgid "Use DBus and Notification-Daemon to show notifications" msgstr "Gebruik DBus en Notification-Daemon om notificaties weer te geven" -#: ../src/common/config.py:57 +#: ../src/common/config.py:55 msgid "Time in minutes, after which your status changes to away." msgstr "Tijd in minuten waarna je statusbericht op afwezig ingesteld wordt" -#: ../src/common/config.py:58 +#: ../src/common/config.py:56 msgid "Away as a result of being idle" msgstr "Afwezig vanwege inactiviteit" -#: ../src/common/config.py:60 +#: ../src/common/config.py:58 msgid "Time in minutes, after which your status changes to not available." msgstr "" "Tijd in minuten waarna je statusbericht op niet beschikbaar ingesteld wordt." -#: ../src/common/config.py:61 +#: ../src/common/config.py:59 msgid "Not available as a result of being idle" msgstr "Niet beschikbaar vanwege inactiviteit" -#: ../src/common/config.py:88 +#: ../src/common/config.py:77 +msgid "List (space separated) of rows (accounts and groups) that are collapsed" +msgstr "" + +#: ../src/common/config.py:83 +msgid "" +"'always' - print time for every message.\n" +"'sometimes' - print time every print_ichat_every_foo_minutes minute.\n" +"'never' - never print time." +msgstr "" + +#: ../src/common/config.py:84 +msgid "" +"Value of fuzziness from 1 to 4 or 0 to disable fuzzyclock. 1 is the most " +"precise clock, 4 the less precise one." +msgstr "" + +#: ../src/common/config.py:87 msgid "Treat * / _ pairs as possible formatting characters." msgstr "" -#: ../src/common/config.py:89 +#: ../src/common/config.py:88 msgid "" "If True, do not remove */_ . So *abc* will be bold but with * * not removed." msgstr "" "Indien Aan, verwijder niet */_ . Zodat *abc* vetgedrukt wordt, maar zonder " "dat * * verwijdert wordt." +#: ../src/common/config.py:98 +msgid "" +"Character to add after nickname when using nick completion (tab) in group " +"chat" +msgstr "" + +#: ../src/common/config.py:99 +msgid "" +"Character to propose to add after desired nickname when desired nickname is " +"used by someone else in group chat" +msgstr "" + #: ../src/common/config.py:131 msgid "Add * and [n] in roster title?" msgstr "Voeg * en [n] toe aan roster titel?" @@ -4347,6 +4917,12 @@ msgstr "" msgid "If checked, Gajim can be controlled remotely using gajim-remote." msgstr "Indien aangevinkt zal Gajim bestuurd kunnen worden met gajim-remote." +#: ../src/common/config.py:145 +msgid "" +"When not printing time for every message (print_time==sometimes), print it " +"every x minutes" +msgstr "" + #: ../src/common/config.py:146 msgid "Ask before closing a group chat tab/window." msgstr "" @@ -4385,7 +4961,8 @@ msgid "Show tab when only one conversation?" msgstr "Laat tabs zien bij slechts één gesprek?" #: ../src/common/config.py:162 -msgid "Show tab border if one conversation?" +#, fuzzy +msgid "Show tabbed notebook border in chat windows?" msgstr "Laat tab rand zien bij slechts één gesprek?" #: ../src/common/config.py:163 @@ -4436,15 +5013,28 @@ msgstr "" "Indien Aan zal Gajim contactafbeeldingen ophalen voor elk contact waarvan " "geen bekend is, of de laatste afbeelding te oud is." -#. FIXME: remove you and make it Gajim will not; and/or his or *her* status messages -#: ../src/common/config.py:184 +#: ../src/common/config.py:183 +#, fuzzy msgid "" -"If False, you will no longer see status line in chats when a contact changes " -"his or her status and/or his status message." +"If False, Gajim will no longer print status line in chats when a contact " +"changes his or her status and/or his or her status message." msgstr "" "Indien Uit zullen geen statusberichten weergeven worden in gesprekken " "wanneer een contact zijn/haar status aanpassen." +#: ../src/common/config.py:184 +msgid "" +"can be \"none\", \"all\" or \"in_and_out\". If \"none\", Gajim will no " +"longer print status line in groupchats when a member changes his or her " +"status and/or his or her status message. If \"all\" Gajim will print all " +"status messages. If \"in_and_out\", gajim will only print FOO enters/leaves " +"room" +msgstr "" + +#: ../src/common/config.py:187 +msgid "Don't show avatar for the transport itself." +msgstr "" + #: ../src/common/config.py:189 msgid "" "If True and installed GTK+ and PyGTK versions are at least 2.8, make the " @@ -4458,7 +5048,8 @@ msgid "" "Turn this option to False to stop sending sha info in groupchat presences" msgstr "" -#: ../src/common/config.py:193 +#. always, never, peracct, pertype should not be translated +#: ../src/common/config.py:194 msgid "" "Controls the window where new messages are placed.\n" "'always' - All messages are sent to a single window.\n" @@ -4469,102 +5060,114 @@ msgid "" "the changes will take effect" msgstr "" -#: ../src/common/config.py:194 +#: ../src/common/config.py:195 msgid "If False, you will no longer see the avatar in the chat window" msgstr "" -#: ../src/common/config.py:195 +#: ../src/common/config.py:196 msgid "If True, pressing the escape key closes a tab/window" msgstr "" -#: ../src/common/config.py:196 +#: ../src/common/config.py:197 #, fuzzy msgid "Hides the buttons in group chat window" msgstr "" "Vraag bevestiging voor het sluiten van een groepsgespreksvenster of -tab." -#: ../src/common/config.py:197 +#: ../src/common/config.py:198 msgid "Hides the buttons in two persons chat window" msgstr "" -#: ../src/common/config.py:198 +#: ../src/common/config.py:199 #, fuzzy msgid "Hides the banner in a group chat window" msgstr "" "Vraag bevestiging voor het sluiten van een groepsgespreksvenster of -tab." -#: ../src/common/config.py:199 +#: ../src/common/config.py:200 msgid "Hides the banner in two persons chat window" msgstr "" -#: ../src/common/config.py:200 +#: ../src/common/config.py:201 msgid "Hides the room occupants list in groupchat window" msgstr "" +#: ../src/common/config.py:202 +msgid "Merge consecutive nickname in chat window" +msgstr "" + +#: ../src/common/config.py:203 +msgid "Indentation when using merge consecutive nickame" +msgstr "" + +#: ../src/common/config.py:204 +msgid "List of colors that will be used to color nicknames in groupchats" +msgstr "" + #. yes, no, ask -#: ../src/common/config.py:233 +#: ../src/common/config.py:237 msgid "Jabberd2 workaround" msgstr "" -#: ../src/common/config.py:237 +#: ../src/common/config.py:241 msgid "" "If checked, Gajim will use your IP and proxies defined in " "file_transfer_proxies option for file transfer." msgstr "" -#: ../src/common/config.py:290 +#: ../src/common/config.py:297 msgid "Sleeping" msgstr "Slapen" -#: ../src/common/config.py:291 +#: ../src/common/config.py:298 msgid "Back soon" msgstr "Zo terug" -#: ../src/common/config.py:291 +#: ../src/common/config.py:298 msgid "Back in some minutes." msgstr "In een paar minuten terug." -#: ../src/common/config.py:292 +#: ../src/common/config.py:299 msgid "Eating" msgstr "Eten" -#: ../src/common/config.py:292 +#: ../src/common/config.py:299 msgid "I'm eating, so leave me a message." msgstr "Ik ben aan het eten, laat een bericht achter." -#: ../src/common/config.py:293 +#: ../src/common/config.py:300 msgid "Movie" msgstr "Film" -#: ../src/common/config.py:293 +#: ../src/common/config.py:300 msgid "I'm watching a movie." msgstr "Ik been een film aan het kijken." -#: ../src/common/config.py:294 +#: ../src/common/config.py:301 msgid "Working" msgstr "Werken" -#: ../src/common/config.py:294 +#: ../src/common/config.py:301 msgid "I'm working." msgstr "Ik ben aan het werk." -#: ../src/common/config.py:295 +#: ../src/common/config.py:302 msgid "Phone" msgstr "Telefoon" -#: ../src/common/config.py:295 +#: ../src/common/config.py:302 msgid "I'm on the phone." msgstr "Ik ben aan het telefoneren." -#: ../src/common/config.py:296 +#: ../src/common/config.py:303 msgid "Out" msgstr "Uit" -#: ../src/common/config.py:296 +#: ../src/common/config.py:303 msgid "I'm out enjoying life" msgstr "Ik ben uit van het leven genieten" -#: ../src/common/config.py:305 +#: ../src/common/config.py:312 msgid "" "Sound to play when a MUC message contains one of the words in " "muc_highlight_words, or when a MUC message contains your nickname." @@ -4572,7 +5175,7 @@ msgstr "" "Geluid om af te spelen wanneer een MUC bericht je bijnaam of een van de " "woorden in much_highlight_words bevat." -#: ../src/common/config.py:306 +#: ../src/common/config.py:313 msgid "" "Sound to play when any MUC message arrives. (This setting is taken into " "account only if notify_on_all_muc_messages is True)" @@ -4580,99 +5183,99 @@ msgstr "" "Geluid om af te spelen bij elk MUC bericht. (Deze instelling is alleen " "geldig als notify_on_all_muc_messages aan staat)" -#: ../src/common/config.py:314 ../src/common/optparser.py:181 +#: ../src/common/config.py:321 ../src/common/optparser.py:185 msgid "green" msgstr "groen" -#: ../src/common/config.py:318 ../src/common/optparser.py:167 +#: ../src/common/config.py:325 ../src/common/optparser.py:171 msgid "grocery" msgstr "kruidenier" -#: ../src/common/config.py:322 +#: ../src/common/config.py:329 msgid "human" msgstr "menselijk" -#: ../src/common/config.py:326 +#: ../src/common/config.py:333 msgid "marine" msgstr "marine" -#: ../src/common/connection.py:152 +#: ../src/common/connection.py:172 #, python-format msgid "Connection with account \"%s\" has been lost" msgstr "Verbinding met account \"%s\" verbroken" -#: ../src/common/connection.py:153 +#: ../src/common/connection.py:173 msgid "To continue sending and receiving messages, you will need to reconnect." msgstr "" "Om verdere berichten te versturen en ontvangen, moet je de verbinding " "opnieuw in stand brengen." -#: ../src/common/connection.py:169 ../src/common/connection.py:195 +#: ../src/common/connection.py:185 ../src/common/connection.py:211 #, python-format msgid "Transport %s answered wrongly to register request." msgstr "" #. wrong answer -#: ../src/common/connection.py:194 +#: ../src/common/connection.py:210 #, fuzzy msgid "Invalid answer" msgstr "Ongeldig wachtwoord" -#: ../src/common/connection.py:348 ../src/common/connection.py:384 -#: ../src/common/connection.py:754 +#: ../src/common/connection.py:397 ../src/common/connection.py:433 +#: ../src/common/connection.py:857 #, python-format msgid "Could not connect to \"%s\"" msgstr "Kon geen verbinding maken met \"%s\"" -#: ../src/common/connection.py:362 +#: ../src/common/connection.py:411 #, python-format msgid "Connected to server %s:%s with %s" msgstr "Verbonden met server %s:%s met %s" -#: ../src/common/connection.py:385 +#: ../src/common/connection.py:434 msgid "Check your connection or try again later" msgstr "Controleer je verbinding of probeer later nogmaals" -#: ../src/common/connection.py:410 +#: ../src/common/connection.py:459 #, python-format msgid "Authentication failed with \"%s\"" msgstr "Inloggen mislukt met \"%s\"" -#: ../src/common/connection.py:411 +#: ../src/common/connection.py:460 msgid "Please check your login and password for correctness." msgstr "Controleer gebruikersnaam en wachtwoord." #. We didn't set a passphrase -#: ../src/common/connection.py:487 +#: ../src/common/connection.py:573 msgid "OpenPGP passphrase was not given" msgstr "OpenPGP wachtwoord niet opgegeven" #. %s is the account name here -#: ../src/common/connection.py:489 +#: ../src/common/connection.py:575 #, python-format msgid "You will be connected to %s without OpenPGP." msgstr "Je zult verbonden worden met %s zonder OpenPGP." #. do not show I'm invisible! -#: ../src/common/connection.py:526 +#: ../src/common/connection.py:612 msgid "invisible" msgstr "onzichtbaar" -#: ../src/common/connection.py:527 +#: ../src/common/connection.py:613 msgid "offline" msgstr "offline" -#: ../src/common/connection.py:528 +#: ../src/common/connection.py:614 #, python-format msgid "I'm %s" msgstr "Ik ben %s" #. we're not english -#: ../src/common/connection.py:611 +#: ../src/common/connection.py:699 msgid "[This message is encrypted]" msgstr "[Dit bericht is versleuteld]" -#: ../src/common/connection.py:649 +#: ../src/common/connection.py:742 #, python-format msgid "" "Subject: %s\n" @@ -4681,223 +5284,310 @@ msgstr "" "Onderwerp: %s\n" "%s" -#: ../src/common/connection.py:699 +#: ../src/common/connection.py:795 ../src/common/connection_handlers.py:1511 msgid "I would like to add you to my roster." msgstr "Ik zou je graag aan mijn rooster willen toevoegen." -#: ../src/common/helpers.py:103 +#: ../src/common/connection_handlers.py:49 +#, fuzzy +msgid "Unable to load idle module" +msgstr "Niet in staat de ruimte binnen te gaan" + +#: ../src/common/connection_handlers.py:581 +#, python-format +msgid "Registration information for transport %s has not arrived in time" +msgstr "Transport %s heeft niet op tijd geantwoord met registratie informatie" + +#. password required to join +#. we are banned +#. room does not exist +#: ../src/common/connection_handlers.py:1450 +#: ../src/common/connection_handlers.py:1453 +#: ../src/common/connection_handlers.py:1456 +#: ../src/common/connection_handlers.py:1459 +#: ../src/common/connection_handlers.py:1462 +#: ../src/common/connection_handlers.py:1465 +#: ../src/common/connection_handlers.py:1473 +msgid "Unable to join room" +msgstr "Niet in staat de ruimte binnen te gaan" + +#: ../src/common/connection_handlers.py:1451 +msgid "A password is required to join this room." +msgstr "Een wachtwoord is vereist om deze ruimte binnen te komen." + +#: ../src/common/connection_handlers.py:1454 +msgid "You are banned from this room." +msgstr "Je bent uit deze ruimte verbannen." + +#: ../src/common/connection_handlers.py:1457 +msgid "Such room does not exist." +msgstr "Die ruimte bestaat niet." + +#: ../src/common/connection_handlers.py:1460 +msgid "Room creation is restricted." +msgstr "Ruimte creatie is beperkt." + +#: ../src/common/connection_handlers.py:1463 +msgid "Your registered nickname must be used." +msgstr "Je geregistreerde bijnaam moet gebruikt worden." + +#: ../src/common/connection_handlers.py:1466 +msgid "You are not in the members list." +msgstr "Je staat niet in de ledenlijst" + +#: ../src/common/connection_handlers.py:1474 +msgid "" +"Your desired nickname is in use or registered by another occupant.\n" +"Please specify another nickname below:" +msgstr "" +"De gewenste bijnaam is in gebruikt of geregistreerd door een andere " +"gebruiker.\n" +"Geef een andere bijnaam op:" + +#. BE CAREFUL: no con.updateRosterItem() in a callback +#: ../src/common/connection_handlers.py:1519 +#, python-format +msgid "we are now subscribed to %s" +msgstr "we zijn nu op %s geabonneert" + +#: ../src/common/connection_handlers.py:1521 +#, python-format +msgid "unsubscribe request from %s" +msgstr "afmelding verzocht van %s" + +#: ../src/common/connection_handlers.py:1523 +#, python-format +msgid "we are now unsubscribed from %s" +msgstr "we zijn nu van %s afgemeld" + +#: ../src/common/connection_handlers.py:1680 +#, fuzzy, python-format +msgid "" +"JID %s is not RFC compliant. It will not be added to your roster. Use roster " +"management tools such as http://jru.jabberstudio.org/ to remove it" +msgstr "" +"Jid %s is niet in lijn met de RFC. Het zal niet toegevoegd worden aan jouw " +"rooster. Gebruik een roostermanagement applicatie zoals http://jru." +"jabberstudio.org/ om het te verwijderen" + +#: ../src/common/helpers.py:100 msgid "Invalid character in username." msgstr "Ongeldig character in gebruikersnaam." -#: ../src/common/helpers.py:108 +#: ../src/common/helpers.py:105 msgid "Server address required." msgstr "Server adres vereist." -#: ../src/common/helpers.py:113 +#: ../src/common/helpers.py:110 msgid "Invalid character in hostname." msgstr "Ongeldig character in hostnaam." -#: ../src/common/helpers.py:119 +#: ../src/common/helpers.py:116 msgid "Invalid character in resource." msgstr "Ongeldig character in bron." #. GiB means gibibyte -#: ../src/common/helpers.py:159 +#: ../src/common/helpers.py:156 #, python-format msgid "%s GiB" msgstr "%s GiB" #. GB means gigabyte -#: ../src/common/helpers.py:162 +#: ../src/common/helpers.py:159 #, python-format msgid "%s GB" msgstr "%s GB" #. MiB means mibibyte -#: ../src/common/helpers.py:166 +#: ../src/common/helpers.py:163 #, python-format msgid "%s MiB" msgstr "%s MiB" #. MB means megabyte -#: ../src/common/helpers.py:169 +#: ../src/common/helpers.py:166 #, python-format msgid "%s MB" msgstr "%s MB" #. KiB means kibibyte -#: ../src/common/helpers.py:173 +#: ../src/common/helpers.py:170 #, python-format msgid "%s KiB" msgstr "%s KiB" #. KB means kilo bytes -#: ../src/common/helpers.py:176 +#: ../src/common/helpers.py:173 #, python-format msgid "%s KB" msgstr "%s KB" #. B means bytes -#: ../src/common/helpers.py:179 +#: ../src/common/helpers.py:176 #, python-format msgid "%s B" msgstr "%s B" -#: ../src/common/helpers.py:189 +#: ../src/common/helpers.py:205 msgid "_Busy" msgstr "_Bezig" -#: ../src/common/helpers.py:191 +#: ../src/common/helpers.py:207 msgid "Busy" msgstr "Bezig" -#: ../src/common/helpers.py:194 +#: ../src/common/helpers.py:210 msgid "_Not Available" msgstr "_Niet Beschikbaar" -#: ../src/common/helpers.py:196 +#: ../src/common/helpers.py:212 msgid "Not Available" msgstr "Niet Beschikbaar" -#: ../src/common/helpers.py:199 +#: ../src/common/helpers.py:215 msgid "_Free for Chat" msgstr "Open voor _Gesprek" -#: ../src/common/helpers.py:201 +#: ../src/common/helpers.py:217 msgid "Free for Chat" msgstr "Open voor Gesprek" -#: ../src/common/helpers.py:204 +#: ../src/common/helpers.py:220 msgid "_Available" msgstr "_Aanwezig" -#: ../src/common/helpers.py:206 +#: ../src/common/helpers.py:222 msgid "Available" msgstr "Aanwezig" -#: ../src/common/helpers.py:208 +#: ../src/common/helpers.py:224 msgid "Connecting" msgstr "Bezig met verbinden" -#: ../src/common/helpers.py:211 +#: ../src/common/helpers.py:227 msgid "A_way" msgstr "Af_wezig" -#: ../src/common/helpers.py:213 +#: ../src/common/helpers.py:229 msgid "Away" msgstr "Afwezig" -#: ../src/common/helpers.py:216 +#: ../src/common/helpers.py:232 msgid "_Offline" msgstr "_Offline" -#: ../src/common/helpers.py:218 +#: ../src/common/helpers.py:234 msgid "Offline" msgstr "Offline" -#: ../src/common/helpers.py:221 +#: ../src/common/helpers.py:237 msgid "_Invisible" msgstr "Onz_ichtbaar" -#: ../src/common/helpers.py:223 -msgid "Invisible" -msgstr "Onzichtbaar" - -#: ../src/common/helpers.py:227 +#: ../src/common/helpers.py:243 msgid "?contact has status:Unknown" msgstr "?contact has status:Onbekend" -#: ../src/common/helpers.py:229 +#: ../src/common/helpers.py:245 msgid "?contact has status:Has errors" msgstr "?contact has status:Heeft fouten" -#: ../src/common/helpers.py:234 +#: ../src/common/helpers.py:250 msgid "?Subscription we already have:None" msgstr "?Subscription we already have:Geen" -#: ../src/common/helpers.py:236 +#: ../src/common/helpers.py:252 msgid "To" msgstr "Aan" -#: ../src/common/helpers.py:238 +#: ../src/common/helpers.py:254 msgid "From" msgstr "Van" -#: ../src/common/helpers.py:240 +#: ../src/common/helpers.py:256 msgid "Both" msgstr "Beide" -#: ../src/common/helpers.py:248 +#: ../src/common/helpers.py:264 msgid "?Ask (for Subscription):None" msgstr "?Ask (for Subscription):Geen" -#: ../src/common/helpers.py:250 +#: ../src/common/helpers.py:266 msgid "Subscribe" msgstr "Abonneren" -#: ../src/common/helpers.py:259 +#: ../src/common/helpers.py:275 msgid "?Group Chat Contact Role:None" msgstr "?Group Chat Contact Role:Geen" -#: ../src/common/helpers.py:262 +#: ../src/common/helpers.py:278 msgid "Moderators" msgstr "Beheerders" -#: ../src/common/helpers.py:264 +#: ../src/common/helpers.py:280 msgid "Moderator" msgstr "Beheerder" -#: ../src/common/helpers.py:267 +#: ../src/common/helpers.py:283 msgid "Participants" msgstr "Deelnemers" -#: ../src/common/helpers.py:269 +#: ../src/common/helpers.py:285 msgid "Participant" msgstr "Deelnemer" -#: ../src/common/helpers.py:272 +#: ../src/common/helpers.py:288 msgid "Visitors" msgstr "Bezoekers" -#: ../src/common/helpers.py:274 +#: ../src/common/helpers.py:290 msgid "Visitor" msgstr "Bezoeker" -#: ../src/common/helpers.py:310 +#: ../src/common/helpers.py:326 msgid "is paying attention to the conversation" msgstr "let op deze conversatie" -#: ../src/common/helpers.py:312 +#: ../src/common/helpers.py:328 msgid "is doing something else" msgstr "is met iets anders bezig" -#: ../src/common/helpers.py:314 +#: ../src/common/helpers.py:330 msgid "is composing a message..." msgstr "is een bericht aan het typen..." #. paused means he or she was compoing but has stopped for a while -#: ../src/common/helpers.py:317 +#: ../src/common/helpers.py:333 msgid "paused composing a message" msgstr "pauzeert tijdens het typen van een bericht" -#: ../src/common/helpers.py:319 +#: ../src/common/helpers.py:335 msgid "has closed the chat window or tab" msgstr "heeft het gespreksvenster of -tab gesloten" #. we talk about a file -#: ../src/common/optparser.py:62 +#: ../src/common/optparser.py:60 #, python-format msgid "error: cannot open %s for reading" msgstr "fout: kan %s niet voor lezen openen" -#: ../src/common/optparser.py:167 +#: ../src/common/optparser.py:171 msgid "gtk+" msgstr "" -#: ../src/common/optparser.py:176 ../src/common/optparser.py:177 +#: ../src/common/optparser.py:180 ../src/common/optparser.py:181 msgid "cyan" msgstr "cyaan" +#~ msgid "Automatically authorize contact" +#~ msgstr "Automatisch contacten toestemming geven" + +#~ msgid "Send File" +#~ msgstr "Bestand Verzenden" + +#~ msgid "Underline" +#~ msgstr "Onderstreept" + #~ msgid "Would you like to overwrite it?" #~ msgstr "Wil je het overschrijven?" @@ -4911,9 +5601,6 @@ msgstr "cyaan" #~ msgid "Please modify your special notification below" #~ msgstr "Kies een van de volgende opties:" -#~ msgid "Ad_vanced Actions" -#~ msgstr "Gea_vanceerde Acties" - #~ msgid "Delete Message of the Day" #~ msgstr "Wis het Bericht van de Dag" @@ -4987,61 +5674,6 @@ msgstr "cyaan" #~ msgid "Session bus is not available" #~ msgstr "Sessiebus is niet beschikbaar" -#, fuzzy -#~ msgid "Unable to load idle module" -#~ msgstr "Niet in staat de ruimte binnen te gaan" - -#~ msgid "Unable to join room" -#~ msgstr "Niet in staat de ruimte binnen te gaan" - -#~ msgid "A password is required to join this room." -#~ msgstr "Een wachtwoord is vereist om deze ruimte binnen te komen." - -#~ msgid "You are banned from this room." -#~ msgstr "Je bent uit deze ruimte verbannen." - -#~ msgid "Such room does not exist." -#~ msgstr "Die ruimte bestaat niet." - -#~ msgid "Room creation is restricted." -#~ msgstr "Ruimte creatie is beperkt." - -#~ msgid "Your registered nickname must be used." -#~ msgstr "Je geregistreerde bijnaam moet gebruikt worden." - -#~ msgid "You are not in the members list." -#~ msgstr "Je staat niet in de ledenlijst" - -#~ msgid "" -#~ "Your desired nickname is in use or registered by another occupant.\n" -#~ "Please specify another nickname below:" -#~ msgstr "" -#~ "De gewenste bijnaam is in gebruikt of geregistreerd door een andere " -#~ "gebruiker.\n" -#~ "Geef een andere bijnaam op:" - -#~ msgid "we are now subscribed to %s" -#~ msgstr "we zijn nu op %s geabonneert" - -#~ msgid "unsubscribe request from %s" -#~ msgstr "afmelding verzocht van %s" - -#~ msgid "we are now unsubscribed from %s" -#~ msgstr "we zijn nu van %s afgemeld" - -#, fuzzy -#~ msgid "" -#~ "JID %s is not RFC compliant. It will not be added to your roster. Use " -#~ "roster management tools such as http://jru.jabberstudio.org/ to remove it" -#~ msgstr "" -#~ "Jid %s is niet in lijn met de RFC. Het zal niet toegevoegd worden aan " -#~ "jouw rooster. Gebruik een roostermanagement applicatie zoals http://jru." -#~ "jabberstudio.org/ om het te verwijderen" - -#~ msgid "Registration information for transport %s has not arrived in time" -#~ msgstr "" -#~ "Transport %s heeft niet op tijd geantwoord met registratie informatie" - #~ msgid "Sound" #~ msgstr "Geluid" @@ -5111,9 +5743,6 @@ msgstr "cyaan" #~ msgid "Stoping selected file transfer" #~ msgstr "Stopt geselecteerde bestandsoverdracht" -#~ msgid "Use a single chat window with _tabs" -#~ msgstr "Gebruik enkel gespreksvenster met _tabs" - #~ msgid "" #~ "If you close this tab and you have history disabled, the message will be " #~ "lost." diff --git a/po/no.po b/po/no.po index db89a0ca1..b433a1024 100644 --- a/po/no.po +++ b/po/no.po @@ -2,11 +2,12 @@ # This file is distributed under the same license as the Gajim package. # Stian B. Barmen , 2005. # +#: ../src/gajim-remote.py:218 ../src/gajim-remote.py:225 msgid "" msgstr "" "Project-Id-Version: Gajim 0.9\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2006-04-13 12:52+0200\n" +"POT-Creation-Date: 2006-07-04 00:03+0200\n" "PO-Revision-Date: 2006-04-26 00:29+0100\n" "Last-Translator: Stian B. Barmen \n" "Language-Team: \n" @@ -28,346 +29,2387 @@ msgstr "Gajim Instant Messenger" msgid "Jabber IM Client" msgstr "Jabber IM klient" -#: ../src/advanced.py:71 +#: ../data/glade/account_context_menu.glade.h:1 +msgid "Send Single _Message..." +msgstr "Send Enkel _Melding..." + +#: ../data/glade/account_context_menu.glade.h:2 +msgid "_Add Contact..." +msgstr "_Legg til Kontakt..." + +#: ../data/glade/account_context_menu.glade.h:3 +msgid "_Discover Services..." +msgstr "_Oppdag Tjenester..." + +#: ../data/glade/account_context_menu.glade.h:4 +#: ../data/glade/roster_window.glade.h:15 +#: ../data/glade/systray_context_menu.glade.h:5 +msgid "_Group Chat" +msgstr "_Gruppe Samtale" + +#: ../data/glade/account_context_menu.glade.h:5 +msgid "_Modify Account..." +msgstr "_Rediger Konto..." + +#: ../data/glade/account_context_menu.glade.h:6 +msgid "_Status" +msgstr "_Status" + +#: ../data/glade/account_creation_wizard_window.glade.h:1 +msgid "" +"Account is being created\n" +"\n" +"Please wait..." +msgstr "" +"Konto opprettes\n" +"\n" +"Vennligst vent..." + +#: ../data/glade/account_creation_wizard_window.glade.h:4 +msgid "Please choose one of the options below:" +msgstr "Vennligst velg ett av valgene under:" + +#: ../data/glade/account_creation_wizard_window.glade.h:5 +msgid "Please fill in the data for your new account" +msgstr "Vennligst fyll in data for din nye konto" + +#: ../data/glade/account_creation_wizard_window.glade.h:6 +msgid "Click to see features (like MSN, ICQ transports) of jabber servers" +msgstr "" +"Klikk for Ã¥ se tjenester (som MSN og ICQ transporter) pÃ¥ jabber serveren" + +#: ../data/glade/account_creation_wizard_window.glade.h:7 +msgid "Connect when I press Finish" +msgstr "Koble til nÃ¥r jeg klikker Ferdig" + +#: ../data/glade/account_creation_wizard_window.glade.h:8 +msgid "Gajim: Account Creation Wizard" +msgstr "Gajim: Konto Opprettings Veiviser" + +#: ../data/glade/account_creation_wizard_window.glade.h:9 +msgid "I already have an account I want to use" +msgstr "Jeg har allerede en konto jeg ønsker Ã¥ bruke" + +#: ../data/glade/account_creation_wizard_window.glade.h:10 +msgid "I want to _register for a new account" +msgstr "Jeg ønsker Ã¥ _registrere en ny konto" + +#: ../data/glade/account_creation_wizard_window.glade.h:11 +#: ../data/glade/account_modification_window.glade.h:18 +msgid "If checked, Gajim will remember the password for this account" +msgstr "Dersom valgt vil Gajim huske passordet for kontoen" + +#: ../data/glade/account_creation_wizard_window.glade.h:12 +#: ../data/glade/manage_proxies_window.glade.h:6 +msgid "Pass_word:" +msgstr "Pass_ord:" + +#: ../data/glade/account_creation_wizard_window.glade.h:13 +#: ../data/glade/account_modification_window.glade.h:37 +msgid "Save pass_word" +msgstr "Lagre pass_ord" + +#: ../data/glade/account_creation_wizard_window.glade.h:14 +msgid "Servers Features" +msgstr "Server Funksjonalitet" + +#: ../data/glade/account_creation_wizard_window.glade.h:15 +msgid "Set my profile when I connect" +msgstr "Klargjør profilen min nÃ¥r jeg kobler til" + +#: ../data/glade/account_creation_wizard_window.glade.h:16 +msgid "" +"You need to have an account in order to connect\n" +"to the Jabber network." +msgstr "" +"Du trenger en konto før du kan koble\n" +"til Jabber nettverket." + +#: ../data/glade/account_creation_wizard_window.glade.h:18 +msgid "Your JID:" +msgstr "Din JID:" + +#: ../data/glade/account_creation_wizard_window.glade.h:19 +#: ../data/glade/roster_window.glade.h:10 +msgid "_Advanced" +msgstr "_Avansert" + +#: ../data/glade/account_creation_wizard_window.glade.h:20 +msgid "_Finish" +msgstr "_Avslutt" + +#: ../data/glade/account_creation_wizard_window.glade.h:21 +#: ../data/glade/manage_proxies_window.glade.h:9 +msgid "_Host:" +msgstr "_Maskin:" + +#: ../data/glade/account_creation_wizard_window.glade.h:22 +#: ../data/glade/account_modification_window.glade.h:45 +msgid "_Password:" +msgstr "_Passord:" + +#: ../data/glade/account_creation_wizard_window.glade.h:23 +#: ../data/glade/manage_proxies_window.glade.h:10 +msgid "_Port:" +msgstr "_Port:" + +#: ../data/glade/account_creation_wizard_window.glade.h:24 +msgid "_Retype Password:" +msgstr "_Repeter Passord:" + +#: ../data/glade/account_creation_wizard_window.glade.h:25 +msgid "_Server:" +msgstr "_Server:" + +#: ../data/glade/account_creation_wizard_window.glade.h:26 +msgid "_Use proxy" +msgstr "_Bruk proxy" + +#: ../data/glade/account_creation_wizard_window.glade.h:27 +#: ../data/glade/manage_proxies_window.glade.h:11 +msgid "_Username:" +msgstr "_Brukernavn:" + +#: ../data/glade/account_modification_window.glade.h:1 +#: ../data/glade/preferences_window.glade.h:8 +msgid "Miscellaneous" +msgstr "Diverse" + +#: ../data/glade/account_modification_window.glade.h:2 +msgid "OpenPGP" +msgstr "OpenPGP" + +#: ../data/glade/account_modification_window.glade.h:3 +msgid "Personal Information" +msgstr "Personlig Informasjon" + +#: ../data/glade/account_modification_window.glade.h:4 +msgid "Account" +msgstr "Konto" + +#: ../data/glade/account_modification_window.glade.h:5 +msgid "Account Modification" +msgstr "Konto Endring" + +#: ../data/glade/account_modification_window.glade.h:6 +msgid "Autoreconnect when connection is lost" +msgstr "Koble til pÃ¥ nytt automatisk nÃ¥r kontakten mistes" + +#: ../data/glade/account_modification_window.glade.h:7 +msgid "C_onnect on Gajim startup" +msgstr "K_oble til nÃ¥r Gajim starter" + +#: ../data/glade/account_modification_window.glade.h:8 +msgid "Chan_ge Password" +msgstr "En_dre Passord" + +#: ../data/glade/account_modification_window.glade.h:9 +msgid "" +"Check this so Gajim will connect in port 5223 where legacy servers are " +"expected to have SSL capabilities. Note that Gajim uses TLS encryption by " +"default if broadcasted by the server, and with this option enabled TLS will " +"be disabled" +msgstr "" +"Velg denne slik at Gajim vil prøve Ã¥ koble til port 5223 som gamle servere " +"forventes Ã¥ ha SSL muligheter. Merk at Gajim bruker TLS kryptering som " +"standard dersom dette tilbys av servere, og med dette valget blir TLS " +"deaktivert." + +#: ../data/glade/account_modification_window.glade.h:10 +msgid "Choose _Key..." +msgstr "Velg _Nøkkel..." + +#: ../data/glade/account_modification_window.glade.h:11 +msgid "Click to change account's password" +msgstr "Klikk for Ã¥ forandre kontoens passord" + +#: ../data/glade/account_modification_window.glade.h:12 +msgid "Connection" +msgstr "Tilkobling" + +#: ../data/glade/account_modification_window.glade.h:13 +msgid "Edit Personal Information..." +msgstr "Rediger Personlig Informasjon..." + +#: ../data/glade/account_modification_window.glade.h:14 +#: ../data/glade/roster_window.glade.h:5 ../src/notify.py:308 +#: ../src/notify.py:330 ../src/notify.py:342 ../src/tooltips.py:350 +msgid "Gajim" +msgstr "Gajim" + +#: ../data/glade/account_modification_window.glade.h:15 +#: ../data/glade/preferences_window.glade.h:44 +#: ../data/glade/vcard_information_window.glade.h:17 +#: ../src/roster_window.py:290 ../src/roster_window.py:1184 +#: ../src/roster_window.py:1405 +msgid "General" +msgstr "Generelle" + +#: ../data/glade/account_modification_window.glade.h:16 +msgid "Hostname: " +msgstr "Maskinnavn:" + +#: ../data/glade/account_modification_window.glade.h:17 +#, fuzzy +msgid "" +"If checked, Gajim will also broadcast some more IPs except from just your " +"IP, so file transfer has higher chances of working." +msgstr "" +"Dersom valgt vil Gajim sende ut flere IPer utover din IP sÃ¥ filoverføringen " +"har større mulighet for Ã¥ fungere. " + +#: ../data/glade/account_modification_window.glade.h:19 +msgid "" +"If checked, Gajim will send keep-alive packets so it prevents connection " +"timeout which results in disconnection" +msgstr "" +"Dersom valgt vil Gajim sende hold-i-live pakker sÃ¥ man ikke fÃ¥r en " +"frakobling pÃ¥ grunn av inaktivitet" + +#: ../data/glade/account_modification_window.glade.h:20 +msgid "" +"If checked, Gajim will store the password in ~/.gajim/config with 'read' " +"permission only for you" +msgstr "" +"Dersom valgt vil Gajim lagre passord i ~/.gajim/config med 'les' rettighet " +"bare for deg" + +#: ../data/glade/account_modification_window.glade.h:21 +msgid "" +"If checked, Gajim, when launched, will automatically connect to jabber using " +"this account" +msgstr "" +"Dersom valgt, vil Gajim automatisk koble seg til jabber med denne kontoen " +"ved oppstart" + +#: ../data/glade/account_modification_window.glade.h:22 +msgid "" +"If checked, any change to the global status (handled by the combobox at the " +"bottom of the roster window) will change the status of this account " +"accordingly" +msgstr "" +"Dersom valgt vil endringer til global status (hÃ¥ndtert av kombomenyen " +"nederst i kontaktvinduet) endre status pÃ¥ denne kontoen. " + +#: ../data/glade/account_modification_window.glade.h:23 +msgid "Information about you, as stored in the server" +msgstr "Informasjon om deg, slik som den er lagret pÃ¥ serveren" + +#: ../data/glade/account_modification_window.glade.h:24 +msgid "Manage..." +msgstr "Behandle..." + +#: ../data/glade/account_modification_window.glade.h:25 ../src/config.py:1448 +msgid "No key selected" +msgstr "Ingen nøkkel valgt" + +#. None means no proxy profile selected +#: ../data/glade/account_modification_window.glade.h:27 ../src/config.py:1053 +#: ../src/config.py:1058 ../src/config.py:1230 ../src/config.py:1505 +#: ../src/config.py:1578 ../src/config.py:2282 +msgid "None" +msgstr "Ingen" + +#: ../data/glade/account_modification_window.glade.h:28 +msgid "Personal Information" +msgstr "Personlig Informasjon" + +#: ../data/glade/account_modification_window.glade.h:29 +msgid "Port: " +msgstr "Port:" + +#: ../data/glade/account_modification_window.glade.h:30 +msgid "Priori_ty:" +msgstr "Priorit_et:" + +#: ../data/glade/account_modification_window.glade.h:31 +msgid "" +"Priority is used in Jabber to determine who gets the events from the jabber " +"server when two or more clients are connected using the same account; The " +"client with the highest priority gets the events" +msgstr "" +"Prioritet brukes av Jabber for Ã¥ finne ut hvem som skal fÃ¥ hendelser fra " +"jabber serveren nÃ¥r to eller flere klienter er tilkoblet med samme konto. " +"Klienten med den høyeste prioriteten vil fÃ¥ hendelsen" + +#: ../data/glade/account_modification_window.glade.h:32 +msgid "Proxy:" +msgstr "Proxy:" + +#: ../data/glade/account_modification_window.glade.h:33 +msgid "Resour_ce: " +msgstr "Ressu_rs:" + +#: ../data/glade/account_modification_window.glade.h:34 +msgid "" +"Resource is sent to the Jabber server in order to separate the same JID in " +"two or more parts depending on the number of the clients connected in the " +"same server with the same account. So you might be connected in the same " +"account with resource 'Home' and 'Work' at the same time. The resource which " +"has the highest priority will get the events. (see below)" +msgstr "" +"Ressurs navnet blir sendt til Jabber serveren for Ã¥ separere JID'en din i to " +"eller flere deler alt etter hvor mange ganger du er tilkoblet til serveren " +"(samtidig). Dette gjør at du kan være tilkoblet med samme konto med ressurs " +"navn 'Hjeme' og 'Jobb' pÃ¥ samme tid. Ressursen med høyest prioritet vil fÃ¥ " +"hendelsene. (se under)" + +#: ../data/glade/account_modification_window.glade.h:35 +msgid "Save _passphrase (insecure)" +msgstr "Lagre _passord setning (usikkert)" + +#: ../data/glade/account_modification_window.glade.h:36 +msgid "Save conversation _logs for all contacts" +msgstr "Lagre samtale _logger for alle kontakter" + +#: ../data/glade/account_modification_window.glade.h:38 +msgid "Send keep-alive packets" +msgstr "Send hold-i-live meldinger" + +#: ../data/glade/account_modification_window.glade.h:39 +msgid "Synch_ronize account status with global status" +msgstr "Synk_roniser konto status med global status" + +#: ../data/glade/account_modification_window.glade.h:40 +msgid "Use _SSL (legacy)" +msgstr "Bruk _SSL (gammel)" + +#: ../data/glade/account_modification_window.glade.h:41 +msgid "Use custom hostname/port" +msgstr "Bruk egendefinert maskinnavn/port" + +#: ../data/glade/account_modification_window.glade.h:42 +msgid "Use file transfer proxies" +msgstr "Bruk filoverførings proxier" + +#: ../data/glade/account_modification_window.glade.h:43 +#: ../data/glade/add_new_contact_window.glade.h:6 +msgid "_Jabber ID:" +msgstr "_Jabber ID:" + +#: ../data/glade/account_modification_window.glade.h:44 +msgid "_Name: " +msgstr "_Navn:" + +#: ../data/glade/accounts_window.glade.h:1 +msgid "Accounts" +msgstr "Kontoer" + +#: ../data/glade/accounts_window.glade.h:2 +msgid "" +"If you have 2 or more accounts and it is checked, Gajim will list all " +"contacts as if you had one account" +msgstr "" +"Dersom du har 2 eller flere kontoer og denne er valgt, vil Gajim liste alle " +"kontakter som om du hadde en konto" + +#: ../data/glade/accounts_window.glade.h:3 +msgid "_Merge accounts" +msgstr "_SlÃ¥ sammen kontoer" + +#: ../data/glade/accounts_window.glade.h:4 +msgid "_Modify" +msgstr "_Endre" + +#: ../data/glade/accounts_window.glade.h:5 +#: ../data/glade/remove_account_window.glade.h:4 +msgid "_Remove" +msgstr "_Fjern" + +#: ../data/glade/add_new_contact_window.glade.h:1 +#, fuzzy +msgid "A_llow this contact to view my status" +msgstr "Tillat han/henne Ã¥ se min status" + +#: ../data/glade/add_new_contact_window.glade.h:2 +msgid "Add New Contact" +msgstr "Legg til ny Kontakt" + +#: ../data/glade/add_new_contact_window.glade.h:3 +msgid "I would like to add you to my contact list." +msgstr "Jeg vil legge deg til min kontaktliste." + +#: ../data/glade/add_new_contact_window.glade.h:4 +#, fuzzy +msgid "_Account:" +msgstr "Konto" + +#: ../data/glade/add_new_contact_window.glade.h:5 +#, fuzzy +msgid "_Group:" +msgstr "Gruppe:" + +#: ../data/glade/add_new_contact_window.glade.h:7 +#, fuzzy +msgid "_Nickname:" +msgstr "Kallenavn:" + +#: ../data/glade/add_new_contact_window.glade.h:8 +#, fuzzy +msgid "_Protocol:" +msgstr "Protokoll:" + +#: ../data/glade/add_new_contact_window.glade.h:9 +msgid "_Subscribe" +msgstr "_Abbonér" + +#: ../data/glade/add_new_contact_window.glade.h:10 +#, fuzzy +msgid "_User ID:" +msgstr "Bruker ID:" + +#: ../data/glade/advanced_configuration_window.glade.h:1 +msgid "Description" +msgstr "Beskrivelse" + +#: ../data/glade/advanced_configuration_window.glade.h:2 +msgid "NOTE: You should restart gajim for some setting to take effect" +msgstr "" +"MERK: Du mÃ¥ starte gajim pÃ¥ nytt for Ã¥ aktivere noen instillinger" + +#: ../data/glade/advanced_configuration_window.glade.h:3 +msgid "Advanced Configuration Editor" +msgstr "Avansert Konfigurasjons Editor" + +#: ../data/glade/advanced_configuration_window.glade.h:4 +msgid "Filter:" +msgstr "Filter:" + +#: ../data/glade/advanced_menuitem_menu.glade.h:1 +msgid "Delete MOTD" +msgstr "Slett MFD (MOTD)" + +#: ../data/glade/advanced_menuitem_menu.glade.h:2 +msgid "Deletes Message of the Day" +msgstr "Sletter Meling for Dagen" + +#: ../data/glade/advanced_menuitem_menu.glade.h:3 +msgid "Sends a message to currently connected users to this server" +msgstr "Sender en melding til tilkoblede brukere pÃ¥ denne serveren" + +#: ../data/glade/advanced_menuitem_menu.glade.h:4 +msgid "Set MOTD" +msgstr "Velg MFD (MOTD)" + +#: ../data/glade/advanced_menuitem_menu.glade.h:5 +msgid "Sets Message of the Day" +msgstr "Setter Melding for Dagen" + +#: ../data/glade/advanced_menuitem_menu.glade.h:6 +msgid "Show _XML Console" +msgstr "Vis _XML Konsoll" + +#: ../data/glade/advanced_menuitem_menu.glade.h:7 +msgid "Update MOTD" +msgstr "Oppdater MFD (MOTD)" + +#: ../data/glade/advanced_menuitem_menu.glade.h:8 +msgid "Updates Message of the Day" +msgstr "Uppdaterer Melding for Dagen" + +#: ../data/glade/advanced_menuitem_menu.glade.h:9 +msgid "_Administrator" +msgstr "_Administrator" + +#: ../data/glade/advanced_menuitem_menu.glade.h:10 +msgid "_Privacy Lists" +msgstr "" + +#: ../data/glade/advanced_menuitem_menu.glade.h:11 +msgid "_Send Server Message" +msgstr "_Send Server Melding" + +#: ../data/glade/advanced_menuitem_menu.glade.h:12 +msgid "_Send Single Message" +msgstr "_Send Melding" + +#: ../data/glade/advanced_notifications_window.glade.h:1 +msgid " a window/tab opened with that contact " +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:2 +#, fuzzy +msgid "Actions" +msgstr "Applikasjoner" + +#: ../data/glade/advanced_notifications_window.glade.h:3 +#, fuzzy +msgid "Conditions" +msgstr "Lyder" + +#: ../data/glade/advanced_notifications_window.glade.h:4 +#: ../data/glade/preferences_window.glade.h:10 +msgid "Sounds" +msgstr "Lyder" + +#: ../data/glade/advanced_notifications_window.glade.h:5 +#, fuzzy +msgid "Add" +msgstr "Adresse" + +#: ../data/glade/advanced_notifications_window.glade.h:6 +#, fuzzy +msgid "Advanced Actions" +msgstr "Av_anserte Handlinger" + +#: ../data/glade/advanced_notifications_window.glade.h:7 +#, fuzzy +msgid "Advanced Notifications Control" +msgstr "Avansert Konfigurasjons Editor" + +#: ../data/glade/advanced_notifications_window.glade.h:8 +#, fuzzy +msgid "All Status " +msgstr "Status: " + +#: ../data/glade/advanced_notifications_window.glade.h:9 +msgid "And I " +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:10 +#, fuzzy +msgid "Away " +msgstr "Borte" + +#: ../data/glade/advanced_notifications_window.glade.h:11 +#, fuzzy +msgid "Busy " +msgstr "Opptatt" + +#: ../data/glade/advanced_notifications_window.glade.h:12 +msgid "Don't have " +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:13 +#, fuzzy +msgid "Down" +msgstr "Last ned" + +#: ../data/glade/advanced_notifications_window.glade.h:14 +msgid "Have " +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:15 +#: ../src/common/helpers.py:239 +msgid "Invisible" +msgstr "Usynlig" + +#: ../data/glade/advanced_notifications_window.glade.h:16 +#, fuzzy +msgid "Launch a command" +msgstr "kommando" + +#: ../data/glade/advanced_notifications_window.glade.h:17 +#, fuzzy +msgid "List of special notifications settings" +msgstr "Legg til Spesiell Alarm for %s" + +#: ../data/glade/advanced_notifications_window.glade.h:18 +#, fuzzy +msgid "Not Available " +msgstr "Ikke tilgjengelig" + +#: ../data/glade/advanced_notifications_window.glade.h:19 +#, fuzzy +msgid "Online / Free For Chat" +msgstr "Ledig for Prat" + +#: ../data/glade/advanced_notifications_window.glade.h:20 +#, fuzzy +msgid "Play a sound" +msgstr "Spill av _lyder" + +#: ../data/glade/advanced_notifications_window.glade.h:21 +msgid "" +"Receive a Message\n" +"Contact Connected\n" +"Contact Disconnected\n" +"Contact Change Status\n" +"Group Chat Message Highlight\n" +"Group Chat Message Received\n" +"File Transfert Resquest\n" +"File Transfert Started\n" +"File Transfert Finished" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:30 +msgid "Some special(s) status..." +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:31 +msgid "Up" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:32 +msgid "When " +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:33 +msgid "_Activate Windows manager UrgencyHint to make chat taskbar to flash" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:34 +#, fuzzy +msgid "_Disable auto opening chat window" +msgstr "Gjemmer knappene i gruppe samtale vindu" + +#: ../data/glade/advanced_notifications_window.glade.h:35 +msgid "_Disable existing popup window" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:36 +msgid "_Disable existing sound for this event" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:37 +msgid "_Disable showing event in roster" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:38 +msgid "_Disable showing event in systray" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:39 +msgid "_Inform me with a popup window" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:40 +#, fuzzy +msgid "_Open chat window with user" +msgstr "Bruk et enkelt samtalevindu med _faner" + +#: ../data/glade/advanced_notifications_window.glade.h:41 +#, fuzzy +msgid "_Show event in roster" +msgstr "Vis bare i _kontaktliste" + +#: ../data/glade/advanced_notifications_window.glade.h:42 +#, fuzzy +msgid "_Show event in systray" +msgstr "Vis bare i _kontaktliste" + +#: ../data/glade/advanced_notifications_window.glade.h:43 +msgid "" +"contact(s)\n" +"group(s)\n" +"everybody" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:46 +#, fuzzy +msgid "for " +msgstr "Port:" + +#: ../data/glade/advanced_notifications_window.glade.h:47 +msgid "when I'm " +msgstr "" + +#: ../data/glade/change_password_dialog.glade.h:1 +msgid "Change Password" +msgstr "Endre Passord" + +#: ../data/glade/change_password_dialog.glade.h:2 +msgid "Enter it again for confirmation:" +msgstr "Skriv inn en gang til for verifisering:" + +#: ../data/glade/change_password_dialog.glade.h:3 +msgid "Enter new password:" +msgstr "Skriv inn nytt passord:" + +#: ../data/glade/change_status_message_dialog.glade.h:1 +msgid "Type your new status message" +msgstr "Skriv inn din nye status melding:" + +#: ../data/glade/change_status_message_dialog.glade.h:2 +msgid "Preset messages:" +msgstr "Forvalgte meldinger:" + +#: ../data/glade/change_status_message_dialog.glade.h:3 +msgid "Save as Preset..." +msgstr "Lagre som Forvalg..." + +#: ../data/glade/chat_context_menu.glade.h:1 +msgid "Join _Group Chat" +msgstr "Bli med i _Gruppe Samtale" + +#: ../data/glade/chat_context_menu.glade.h:2 +#: ../data/glade/chat_control_popup_menu.glade.h:4 +#: ../data/glade/gc_occupants_menu.glade.h:2 +#: ../data/glade/roster_contact_context_menu.glade.h:8 +msgid "_Add to Roster" +msgstr "_Legg til Kontaktliste" + +#: ../data/glade/chat_context_menu.glade.h:3 +msgid "_Copy JID/Email Address" +msgstr "_Kopier JID/E-post Adresse" + +#: ../data/glade/chat_context_menu.glade.h:4 +msgid "_Copy Link Location" +msgstr "_Kopier Link PLassering" + +#: ../data/glade/chat_context_menu.glade.h:5 +msgid "_Open Email Composer" +msgstr "_Ã…pne ny Epost" + +#: ../data/glade/chat_context_menu.glade.h:6 +msgid "_Open Link in Browser" +msgstr "_Ã…pne Link i Nettleser" + +#: ../data/glade/chat_context_menu.glade.h:7 +#: ../data/glade/roster_window.glade.h:19 +#: ../data/glade/systray_context_menu.glade.h:6 +msgid "_Start Chat" +msgstr "_Start Samtale" + +#: ../data/glade/chat_control_popup_menu.glade.h:1 +msgid "Click to see past conversations with this contact" +msgstr "Klikk for Ã¥ se tidligere samtaler med denne kontakten" + +#: ../data/glade/chat_control_popup_menu.glade.h:2 +#: ../data/glade/roster_contact_context_menu.glade.h:6 +msgid "Send _File" +msgstr "Send _Fil" + +#: ../data/glade/chat_control_popup_menu.glade.h:3 +msgid "Toggle Open_PGP Encryption" +msgstr "Endre Open_PGP Kryptering" + +#: ../data/glade/chat_control_popup_menu.glade.h:5 +#: ../data/glade/gc_control_popup_menu.glade.h:6 +msgid "_Compact View Alt+C" +msgstr "_Kompakt Utseende Alt+C" + +#: ../data/glade/chat_control_popup_menu.glade.h:6 +#: ../data/glade/gc_control_popup_menu.glade.h:7 +#: ../data/glade/gc_occupants_menu.glade.h:5 +#: ../data/glade/roster_contact_context_menu.glade.h:11 +msgid "_History" +msgstr "_Historie" + +#: ../data/glade/data_form_window.glade.h:1 +msgid "Room Configuration" +msgstr "Rom Instillinger" + +#: ../data/glade/edit_groups_dialog.glade.h:1 +msgid "Edit Groups" +msgstr "Rediger Grupper" + +#: ../data/glade/filetransfers.glade.h:1 +msgid "A list of active, completed and stopped file transfers" +msgstr "En liste over aktive, komplette og stoppede fil overføringer" + +#: ../data/glade/filetransfers.glade.h:2 +msgid "Cancel file transfer" +msgstr "Avbryt filoverføring" + +#: ../data/glade/filetransfers.glade.h:3 +msgid "Cancels the selected file transfer" +msgstr "Avbryter valgte filoverføring" + +#: ../data/glade/filetransfers.glade.h:4 +msgid "Cancels the selected file transfer and removes incomplete file" +msgstr "Avbryter valgte filoverføring og fjerner den uferdige filen" + +#: ../data/glade/filetransfers.glade.h:5 +msgid "Clean _up" +msgstr "Rydd _opp" + +#: ../data/glade/filetransfers.glade.h:6 +msgid "File Transfers" +msgstr "Fil Overføringer" + +#: ../data/glade/filetransfers.glade.h:7 +msgid "Hides the window" +msgstr "Lukker vinduet" + +#: ../data/glade/filetransfers.glade.h:8 +msgid "Remove file transfer from the list." +msgstr "Fjern filoverføringen fra listen" + +#: ../data/glade/filetransfers.glade.h:9 +msgid "Removes completed, canceled and failed file transfers from the list" +msgstr "Fjerner komplette, avbrutte og feilede filoverføringer fra listen" + +#: ../data/glade/filetransfers.glade.h:10 +msgid "Shows a list of file transfers between you and other" +msgstr "Viser en liste over overføringer mellom deg og andre" + +#: ../data/glade/filetransfers.glade.h:11 +msgid "" +"This action removes single file transfer from the list. If the transfer is " +"active, it is first stopped and then removed" +msgstr "" +"Dette valget fjerner en filoverføring fra listen. Dersom den er aktiv vil " +"den først bli stoppet og sÃ¥ fjernet." + +#: ../data/glade/filetransfers.glade.h:12 +msgid "When a file transfer is complete show a popup notification" +msgstr "NÃ¥r en fil overføring er komplett vis en sprettopp informasjon" + +#: ../data/glade/filetransfers.glade.h:13 ../src/filetransfers_window.py:753 +msgid "_Continue" +msgstr "_Fortsett" + +#: ../data/glade/filetransfers.glade.h:14 +msgid "_Notify me when a file transfer is complete" +msgstr "_Gi meg beskjed nÃ¥r filoverføring er komplett" + +#: ../data/glade/filetransfers.glade.h:15 ../src/filetransfers_window.py:190 +msgid "_Open Containing Folder" +msgstr "_Ã…pne Foreldre Katalog" + +#: ../data/glade/filetransfers.glade.h:16 +msgid "_Pause" +msgstr "_Pause" + +#: ../data/glade/filetransfers.glade.h:17 +msgid "file transfers list" +msgstr "fil overførings liste" + +#: ../data/glade/gajim_themes_window.glade.h:1 +msgid "Chatstate Tab Colors" +msgstr "Samtalestatus Fane Farger" + +#: ../data/glade/gajim_themes_window.glade.h:2 +msgid "" +"Account\n" +"Group\n" +"Contact\n" +"Banner" +msgstr "" +"Konto\n" +"Gruppe\n" +"Kontakt\n" +"Fane" + +#: ../data/glade/gajim_themes_window.glade.h:6 +#: ../data/glade/privacy_list_edit_window.glade.h:4 ../src/config.py:326 +msgid "Active" +msgstr "Aktiv" + +#: ../data/glade/gajim_themes_window.glade.h:7 +msgid "Bold" +msgstr "Fet" + +#: ../data/glade/gajim_themes_window.glade.h:8 +msgid "Composing" +msgstr "Skriver" + +#: ../data/glade/gajim_themes_window.glade.h:9 +msgid "Font style:" +msgstr "Font stil:" + +#: ../data/glade/gajim_themes_window.glade.h:10 +msgid "Gajim Themes Customization" +msgstr "Gajim Tema Valg" + +#: ../data/glade/gajim_themes_window.glade.h:11 +msgid "Gone" +msgstr "Borte" + +#: ../data/glade/gajim_themes_window.glade.h:12 +msgid "Inactive" +msgstr "Inaktiv" + +#: ../data/glade/gajim_themes_window.glade.h:13 +msgid "Italic" +msgstr "Kursiv" + +#: ../data/glade/gajim_themes_window.glade.h:14 +msgid "" +"MUC\n" +"Messages" +msgstr "" +"MUC\n" +"Meldinger" + +#: ../data/glade/gajim_themes_window.glade.h:16 +msgid "" +"MUC Directed\n" +"Messages" +msgstr "" +"MUC Sendte\n" +"Meldinger" + +#: ../data/glade/gajim_themes_window.glade.h:18 ../src/tooltips.py:667 +msgid "Paused" +msgstr "Pauset" + +#: ../data/glade/gajim_themes_window.glade.h:19 +msgid "Text _color:" +msgstr "Tekst _farge:" + +#: ../data/glade/gajim_themes_window.glade.h:20 +msgid "Text _font:" +msgstr "Tekst _font:" + +#: ../data/glade/gajim_themes_window.glade.h:21 +msgid "_Background:" +msgstr "_Bakgrunn:" + +#: ../data/glade/gc_control_popup_menu.glade.h:1 +msgid "Change _Nickname" +msgstr "Endre _Kallenavn" + +#: ../data/glade/gc_control_popup_menu.glade.h:2 +msgid "Change _Subject" +msgstr "Endre _Tema" + +#: ../data/glade/gc_control_popup_menu.glade.h:3 +msgid "Click to see past conversation in this room" +msgstr "Klikk for Ã¥ se tidligere samtaler i dette rommet" + +#: ../data/glade/gc_control_popup_menu.glade.h:4 +msgid "Configure _Room" +msgstr "Konfigurer _Rom" + +#: ../data/glade/gc_control_popup_menu.glade.h:5 +msgid "_Bookmark This Room" +msgstr "Lag _Bokmerke til Rommet" + +#: ../data/glade/gc_occupants_menu.glade.h:1 +msgid "Mo_derator" +msgstr "M_odererer" + +#: ../data/glade/gc_occupants_menu.glade.h:3 +msgid "_Admin" +msgstr "_Admin" + +#: ../data/glade/gc_occupants_menu.glade.h:4 +msgid "_Ban" +msgstr "_Utvis" + +#: ../data/glade/gc_occupants_menu.glade.h:6 +msgid "_Kick" +msgstr "_Kast ut" + +#: ../data/glade/gc_occupants_menu.glade.h:7 +msgid "_Member" +msgstr "_Medlem" + +#: ../data/glade/gc_occupants_menu.glade.h:8 +msgid "_Occupant Actions" +msgstr "_Beboer Handling" + +#: ../data/glade/gc_occupants_menu.glade.h:9 +msgid "_Owner" +msgstr "_Eier" + +#: ../data/glade/gc_occupants_menu.glade.h:10 +msgid "_Send Private Message" +msgstr "_Send Privat Melding" + +#: ../data/glade/gc_occupants_menu.glade.h:11 +msgid "_Voice" +msgstr "_Stemme" + +#: ../data/glade/history_manager.glade.h:1 +msgid "" +"Welcome to Gajim History Logs Manager\n" +"\n" +"You can select logs from the left and/or search database from below.\n" +"\n" +"WARNING:\n" +"If you plan to do massive deletions, please make sure Gajim is not running. " +"Generally avoid deletions with contacts you currently chat with." +msgstr "" +"Velkommen til Gajim Historiske Logg Behandler\n" +"\n" +"Du kan velge logger fra venstre og/eller søke databasen under.\n" +"\n" +"ADVARSEL:\n" +"Dersom du planlegger Ã¥ gjøre store slette operasjoner, pass pÃ¥ at Gajim ikke " +"kjører. Generelt bør man unngÃ¥ Ã¥ slette fra kontakter du er i samtale med." + +#: ../data/glade/history_manager.glade.h:7 +msgid "Delete" +msgstr "Slett" + +#: ../data/glade/history_manager.glade.h:8 +msgid "Export" +msgstr "Eksport" + +#: ../data/glade/history_manager.glade.h:9 +msgid "Gajim History Logs Manager" +msgstr "Gajim Historske Logg Behandler" + +#: ../data/glade/history_manager.glade.h:10 +msgid "_Search Database" +msgstr "_Søk Databasen" + +#: ../data/glade/history_window.glade.h:1 +msgid "Build custom query" +msgstr "Lag din egen spørring" + +#: ../data/glade/history_window.glade.h:2 +msgid "Conversation History" +msgstr "Samtale Historikk" + +#: ../data/glade/history_window.glade.h:3 +msgid "Query Builder..." +msgstr "Spørrings Bygger..." + +#: ../data/glade/history_window.glade.h:4 +msgid "Search" +msgstr "Søk" + +#: ../data/glade/history_window.glade.h:5 +msgid "_Search" +msgstr "_Søk" + +#: ../data/glade/invitation_received_dialog.glade.h:1 +msgid "Accept" +msgstr "Godkjenn" + +#: ../data/glade/invitation_received_dialog.glade.h:2 +#: ../data/glade/privacy_list_edit_window.glade.h:8 +msgid "Deny" +msgstr "Nekt" + +#: ../data/glade/invitation_received_dialog.glade.h:3 +msgid "Invitation Received" +msgstr "Invitasjon motatt" + +#: ../data/glade/join_groupchat_window.glade.h:1 ../src/dialogs.py:941 +msgid "Join Group Chat" +msgstr "Bli med i Gruppesamtale" + +#: ../data/glade/join_groupchat_window.glade.h:2 +#: ../data/glade/manage_bookmarks_window.glade.h:4 +#: ../data/glade/vcard_information_window.glade.h:28 +msgid "Nickname:" +msgstr "Kallenavn:" + +#: ../data/glade/join_groupchat_window.glade.h:3 +#: ../data/glade/manage_bookmarks_window.glade.h:5 +msgid "Password:" +msgstr "Passord:" + +#: ../data/glade/join_groupchat_window.glade.h:4 +msgid "Recently:" +msgstr "Nylig:" + +#: ../data/glade/join_groupchat_window.glade.h:5 +#: ../data/glade/manage_bookmarks_window.glade.h:7 +msgid "Room:" +msgstr "Rom:" + +#: ../data/glade/join_groupchat_window.glade.h:6 +#: ../data/glade/manage_bookmarks_window.glade.h:8 +msgid "Server:" +msgstr "Server:" + +#: ../data/glade/join_groupchat_window.glade.h:7 ../src/disco.py:1145 +#: ../src/disco.py:1507 +msgid "_Join" +msgstr "_Bli med" + +#: ../data/glade/manage_accounts_window.glade.h:1 +msgid "Manage Accounts" +msgstr "Behandle Kontoer" + +#: ../data/glade/manage_bookmarks_window.glade.h:1 +msgid "Auto join" +msgstr "Auto bli med" + +#: ../data/glade/manage_bookmarks_window.glade.h:2 +msgid "If checked, Gajim will join this group chat on startup" +msgstr "Dersom valgt vil Gajim automatisk gÃ¥ inn i gruppesamtalen ved oppstart" + +#: ../data/glade/manage_bookmarks_window.glade.h:3 +msgid "Manage Bookmarks" +msgstr "Behandle Bokmerker" + +#: ../data/glade/manage_bookmarks_window.glade.h:6 +#, fuzzy +msgid "Print status:" +msgstr "Utskrifts tid:" + +#: ../data/glade/manage_bookmarks_window.glade.h:9 +msgid "Title:" +msgstr "Tittel:" + +#: ../data/glade/manage_proxies_window.glade.h:1 +msgid "Properties" +msgstr "Egenskaper" + +#: ../data/glade/manage_proxies_window.glade.h:2 +msgid "Settings" +msgstr "Instillinger" + +#: ../data/glade/manage_proxies_window.glade.h:3 +msgid "HTTP Connect" +msgstr "HTTP Connect" + +#: ../data/glade/manage_proxies_window.glade.h:4 +msgid "Manage Proxy Profiles" +msgstr "Behandle Proxy Profiler" + +#: ../data/glade/manage_proxies_window.glade.h:5 +#: ../data/glade/vcard_information_window.glade.h:27 +msgid "Name:" +msgstr "Navn:" + +#: ../data/glade/manage_proxies_window.glade.h:7 +msgid "Type:" +msgstr "Skriv:" + +#: ../data/glade/manage_proxies_window.glade.h:8 +msgid "Use authentication" +msgstr "Bruk autentisering" + +#: ../data/glade/message_window.glade.h:1 +msgid "Click to insert an emoticon (Alt+M)" +msgstr "Klikk for Ã¥ sette inn et uttrykksikon (Alt+M)" + +#: ../data/glade/message_window.glade.h:2 ../src/chat_control.py:966 +msgid "OpenPGP Encryption" +msgstr "OpenPGP Kryptering" + +#. Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector) +#: ../data/glade/message_window.glade.h:4 +#: ../data/glade/roster_window.glade.h:9 +msgid "_Actions" +msgstr "_Handlinger" + +#. Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector) +#: ../data/glade/message_window.glade.h:6 +#: ../data/glade/xml_console_window.glade.h:11 +#: ../src/filetransfers_window.py:249 +msgid "_Send" +msgstr "_Send" + +#: ../data/glade/passphrase_dialog.glade.h:1 +msgid "Passphrase" +msgstr "Passord setning" + +#: ../data/glade/preferences_window.glade.h:1 +msgid "Advanced Configuration Editor" +msgstr "Editering av Avanserte Instillinger" + +#: ../data/glade/preferences_window.glade.h:2 +msgid "Applications" +msgstr "Applikasjoner" + +#. a header for custom browser/client/file manager. so translate sth like: Custom Settings +#: ../data/glade/preferences_window.glade.h:4 +msgid "Custom" +msgstr "Egendefinert" + +#: ../data/glade/preferences_window.glade.h:5 +msgid "Format of a line" +msgstr "Utseende pÃ¥ en linje" + +#: ../data/glade/preferences_window.glade.h:6 +#, fuzzy +msgid "GMail Options" +msgstr "Applikasjoner" + +#: ../data/glade/preferences_window.glade.h:7 +msgid "Interface Customization" +msgstr "Grensenitt valg" + +#: ../data/glade/preferences_window.glade.h:9 +msgid "Preset Status Messages" +msgstr "Forvalgt Status Melding" + +#: ../data/glade/preferences_window.glade.h:11 +msgid "Visual Notifications" +msgstr "Visuelle Alarmer" + +#: ../data/glade/preferences_window.glade.h:12 +msgid "A_fter nickname:" +msgstr "E_tter kallenavn:" + +#: ../data/glade/preferences_window.glade.h:13 +msgid "Advanced" +msgstr "Avansert" + +#: ../data/glade/preferences_window.glade.h:14 +msgid "" +"All chat states\n" +"Composing only\n" +"Disabled" +msgstr "" +"Alle samtale statuser \n" +"Bare komponering \n" +"Deaktivert" + +#: ../data/glade/preferences_window.glade.h:17 +msgid "Allow _OS information to be sent" +msgstr "Tillat _OS informasjon Ã¥ bli sendt" + +#: ../data/glade/preferences_window.glade.h:18 +msgid "Allow popup/notifications when I'm _away/na/busy/invisible" +msgstr "" +"Tillat sprettopp/melding nÃ¥r jeg er _borte/ikke tilgjengelig/opptatt/usynlig" + +#: ../data/glade/preferences_window.glade.h:19 +msgid "Also known as iChat style" +msgstr "OgsÃ¥ kjent som iChat stil" + +#: ../data/glade/preferences_window.glade.h:20 +msgid "Ask status message when I:" +msgstr "Spør etter status melding nÃ¥r jeg:" + +#: ../data/glade/preferences_window.glade.h:21 +msgid "Auto _away after:" +msgstr "Auto _borte etter:" + +#: ../data/glade/preferences_window.glade.h:22 +msgid "Auto _not available after:" +msgstr "Auto _ikke tilgjengelig etter:" + +#: ../data/glade/preferences_window.glade.h:23 +msgid "" +"Autodetect on every Gajim startup\n" +"Always use GNOME default applications\n" +"Always use KDE default applications\n" +"Custom" +msgstr "" +"Autodetekter hver gang Gajim starter\n" +"Alltid bruk GNOME standard applikasjoner\n" +"Alltid bruk KDE standard applikasjoner\n" +"Egendefinert" + +#: ../data/glade/preferences_window.glade.h:27 +msgid "B_efore nickname:" +msgstr "F_ør kallenavn:" + +#: ../data/glade/preferences_window.glade.h:28 ../src/chat_control.py:718 +msgid "Chat" +msgstr "Samtale" + +#: ../data/glade/preferences_window.glade.h:29 +msgid "Chat state noti_fications:" +msgstr "Samtale status opp_lysninger:" + +#: ../data/glade/preferences_window.glade.h:30 +msgid "" +"Check this option, only if someone you don't have in the roster spams/annoys " +"you. Use with caution, cause it blocks all messages from any contact that is " +"not in the roster" +msgstr "" +"Velg dette valget bare dersom noen i kontaktlisten spammer/irriterer deg. " +"Bruk med varsomhet, fordi det blokkerer alle meldinger fra lle kontakter som " +"ikke er i kontaktlisten" + +#: ../data/glade/preferences_window.glade.h:31 +msgid "Default status _iconset:" +msgstr "Standard status _ikonsamling:" + +#: ../data/glade/preferences_window.glade.h:32 +msgid "Display _extra email details" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:33 +msgid "Display a_vatars of contacts in roster" +msgstr "Viser _kontaktikoner for kontakter i kontaktlisten" + +#: ../data/glade/preferences_window.glade.h:34 +msgid "Display status _messages of contacts in roster" +msgstr "Viser status _meldinger for kontakter i kontaktlisten" + +#: ../data/glade/preferences_window.glade.h:35 +msgid "E_very 5 minutes" +msgstr "H_vert 5 minutt" + +#: ../data/glade/preferences_window.glade.h:36 +msgid "Emoticons:" +msgstr "Uttrykksikoner:" + +#: ../data/glade/preferences_window.glade.h:37 +msgid "Events" +msgstr "Hendelser" + +#: ../data/glade/preferences_window.glade.h:38 +msgid "" +"Gajim can send and receive meta-information related to a conversation you " +"may have with a contact. Here you can specify which chatstates you want to " +"send to the other party." +msgstr "" +"Gajim kan sende og motta meta-informasjon relatert til en samtale du kan ha " +"med en kontakt. Her kan du spesifisere hvilke samtalestatuser du ønsker Ã¥ " +"sende motparten." + +#: ../data/glade/preferences_window.glade.h:39 +msgid "" +"Gajim will automatically show new events by poping up the relative window" +msgstr "" +"Gajim vil autmatisk vise deg den nye hendelser ved Ã¥ sprette opp det " +"relative vinduet" + +#: ../data/glade/preferences_window.glade.h:40 +msgid "" +"Gajim will notify you for new events via a popup in the bottom right of the " +"screen" +msgstr "" +"Gajim vil alarmere deg med sprett-opp vindu i bunnen til høyre pÃ¥ skjermen" + +#: ../data/glade/preferences_window.glade.h:41 +msgid "" +"Gajim will notify you via a popup window in the bottom right of the screen " +"about contacts that just signed in" +msgstr "" +"Gajim vil alarmere deg med sprett-opp vindu i bunnen til høyre pÃ¥ skjermen " +"om at en kontakt har akkurat logget inn" + +#: ../data/glade/preferences_window.glade.h:42 +msgid "" +"Gajim will notify you via a popup window in the bottom right of the screen " +"about contacts that just signed out" +msgstr "" +"Gajim vil alarmere deg med sprett-opp vindu i bunnen til høyre pÃ¥ skjermen " +"om at en kontakt har akkurat logget ut" + +#: ../data/glade/preferences_window.glade.h:43 +msgid "" +"Gajim will only change the icon of the contact that triggered the new event" +msgstr "" +"Gajim vil bare endre ikonet til kontakten som har sendt den nye hendelsen" + +#: ../data/glade/preferences_window.glade.h:45 +msgid "" +"If checked, Gajim will display avatars of contacts in roster window and in " +"group chats" +msgstr "" +"Dersom valgt vil Gajim vise ikonbilder for kontakter i kontaktliste vinduet " +"og i gruppesamtaler" + +#: ../data/glade/preferences_window.glade.h:46 +msgid "" +"If checked, Gajim will display status messages of contacts under the contact " +"name in roster window and in group chats" +msgstr "" +"Dersom valg vil Gajim vise status melding til kontakter under kontakt navnet " +"i kontaktliste vinduet og i gruppesamtaler" + +#: ../data/glade/preferences_window.glade.h:47 +msgid "" +"If checked, Gajim will remember the roster and chat window positions in the " +"screen and the sizes of them next time you run it" +msgstr "" +"Dersom valgt vil Gajim huske kontaktliste og samtalevindu posisjoner pÃ¥ " +"skjermen, samt størrelsen pÃ¥ de til neste gang du Ã¥pner de" + +#: ../data/glade/preferences_window.glade.h:48 +msgid "" +"If checked, Gajim will use protocol-specific status icons. (eg. A contact " +"from MSN will have the equivalent msn icon for status online, away, busy, " +"etc...)" +msgstr "" +"Dersom valgt vil Gajim bruke protkoll-spesifikke ikoner. (En kontakt fra MSN " +"vil ha msn ikoner for status pÃ¥logget, borte, opptatt, osv...)" + +#: ../data/glade/preferences_window.glade.h:49 +msgid "" +"If not disabled, Gajim will replace ascii smilies like ':)' with equivalent " +"animated or static graphical emoticons" +msgstr "" +"Dersom ikke deaktiver, vil Gajim bytte ut ascii smil som ':)' med animerte " +"eller statiske grafiske uttrykksikoner" + +#: ../data/glade/preferences_window.glade.h:50 +msgid "Ma_nage..." +msgstr "Be_handle..." + +#: ../data/glade/preferences_window.glade.h:51 +msgid "" +"Never\n" +"Always\n" +"Per account\n" +"Per type" +msgstr "" +"Aldri\n" +"Alltid\n" +"Per konto\n" +"Per type" + +#: ../data/glade/preferences_window.glade.h:55 +msgid "Notify me about contacts that: " +msgstr "Alarmer meg om kontakter som:" + +#: ../data/glade/preferences_window.glade.h:56 +#, fuzzy +msgid "Notify on new _GMail email" +msgstr "Alarmer meg on nye _Gmail e-post" + +#: ../data/glade/preferences_window.glade.h:57 +msgid "On every _message" +msgstr "PÃ¥ hver _melding" + +#: ../data/glade/preferences_window.glade.h:58 +msgid "One message _window:" +msgstr "En melding _vindu:" + +#: ../data/glade/preferences_window.glade.h:59 +msgid "Play _sounds" +msgstr "Spill av _lyder" + +#: ../data/glade/preferences_window.glade.h:60 +msgid "Preferences" +msgstr "Tilstedeværelse" + +#: ../data/glade/preferences_window.glade.h:61 +msgid "Print time:" +msgstr "Utskrifts tid:" + +#: ../data/glade/preferences_window.glade.h:62 +msgid "Save _position and size for roster and chat windows" +msgstr "Lagre _posisjon og størrelse for kontaktliste og samtalevinduer" + +#: ../data/glade/preferences_window.glade.h:63 +msgid "Show only in _roster" +msgstr "Vis bare i _kontaktliste" + +#: ../data/glade/preferences_window.glade.h:64 +msgid "Sign _in" +msgstr "Logger _inn" + +#: ../data/glade/preferences_window.glade.h:65 +msgid "Sign _out" +msgstr "Logger _ut" + +#: ../data/glade/preferences_window.glade.h:66 +msgid "Status" +msgstr "Status" + +#: ../data/glade/preferences_window.glade.h:67 +msgid "T_heme:" +msgstr "T_ema:" + +#: ../data/glade/preferences_window.glade.h:68 +msgid "The auto away status message" +msgstr "Den automatiserte borte meldinen" + +#: ../data/glade/preferences_window.glade.h:69 +msgid "The auto not available status message" +msgstr "Den autmatiserte ikke tilgjengelig meldingen" + +#: ../data/glade/preferences_window.glade.h:70 +msgid "Use _transports iconsets" +msgstr "Bruk _transportenes ikoner" + +#: ../data/glade/preferences_window.glade.h:71 +msgid "Use system _default" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:72 +msgid "Use t_rayicon (aka. notification area icon)" +msgstr "Bruk Ikon i s_ystemstatusfelt (ogsÃ¥ kjent som systray)" + +#: ../data/glade/preferences_window.glade.h:73 +msgid "" +"When a new event (message, file transfer request etc..) is received, the " +"following methods may be used to inform you about it. Please note that " +"events about new messages only occur if it is a new message from a contact " +"you are not already chatting with" +msgstr "" +"NÃ¥r en ny hendelse (melding, fil overføring osv.) blir motatt, vil følgende " +"metoder kunne bli brukt for Ã¥ informere deg om det. Vennligst merk at ny " +"melding hendelser vil bare skje dersom du fÃ¥r en ny melding fra en kontakt " +"du ikke er i samtale med." + +#: ../data/glade/preferences_window.glade.h:74 +msgid "When new event is received" +msgstr "NÃ¥r en ny hendelse blir motatt" + +#: ../data/glade/preferences_window.glade.h:75 +#, fuzzy +msgid "_Advanced Notifications Control..." +msgstr "Avansert Konfigurasjons Editor" + +#: ../data/glade/preferences_window.glade.h:76 +msgid "_After time:" +msgstr "_Etter tid:" + +#: ../data/glade/preferences_window.glade.h:77 +msgid "_Before time:" +msgstr "_Før tid:" + +#: ../data/glade/preferences_window.glade.h:78 +msgid "_Browser:" +msgstr "_Nettleser:" + +#: ../data/glade/preferences_window.glade.h:79 +msgid "_File manager:" +msgstr "_Fil behandler:" + +#: ../data/glade/preferences_window.glade.h:80 +msgid "_Font:" +msgstr "_Font:" + +#: ../data/glade/preferences_window.glade.h:81 +msgid "_Highlight misspelled words" +msgstr "_Uthev feilstavede ord" + +#: ../data/glade/preferences_window.glade.h:82 +msgid "_Ignore events from contacts not in the roster" +msgstr "_Ignorer hendelser fra kontakter som ikke er i kontaktlisten" + +#: ../data/glade/preferences_window.glade.h:83 +msgid "_Incoming message:" +msgstr "_Innkommende melding:" + +#: ../data/glade/preferences_window.glade.h:84 +msgid "_Log status changes of contacts" +msgstr "_Logg status endringer til kontakter" + +#: ../data/glade/preferences_window.glade.h:85 +msgid "_Mail client:" +msgstr "_Post klient:" + +#: ../data/glade/preferences_window.glade.h:86 +msgid "_Never" +msgstr "_Aldri" + +#: ../data/glade/preferences_window.glade.h:87 +msgid "_Notify me about it" +msgstr "_Gi meg beskjed om det" + +#: ../data/glade/preferences_window.glade.h:88 +msgid "_Open..." +msgstr "_Ã…pne..." + +#: ../data/glade/preferences_window.glade.h:89 +msgid "_Outgoing message:" +msgstr "_UtgÃ¥ende melding:" + +#: ../data/glade/preferences_window.glade.h:90 +msgid "_Player:" +msgstr "_Spiller:" + +#: ../data/glade/preferences_window.glade.h:91 +msgid "_Pop it up" +msgstr "_Sprett opp" + +#: ../data/glade/preferences_window.glade.h:92 +msgid "_Reset to Default Colors" +msgstr "_Tilbakestill til Standard Farger" + +#: ../data/glade/preferences_window.glade.h:93 +msgid "_Sort contacts by status" +msgstr "_Sorter kontakter etter status" + +#: ../data/glade/preferences_window.glade.h:94 +msgid "_Status message:" +msgstr "_Status melding:" + +#: ../data/glade/preferences_window.glade.h:95 +msgid "_URL:" +msgstr "_URL:" + +#: ../data/glade/preferences_window.glade.h:96 +msgid "minutes" +msgstr "minutter" + +#: ../data/glade/privacy_list_edit_window.glade.h:1 +msgid "Add / Edit a rule" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:2 +#, fuzzy +msgid "List of rules" +msgstr "Utseende pÃ¥ en linje" + +#: ../data/glade/privacy_list_edit_window.glade.h:3 +msgid "Privacy List" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:5 ../src/config.py:2281 +msgid "All" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:6 +msgid "Allow" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:7 +#, fuzzy +msgid "Default" +msgstr "Slett" + +#: ../data/glade/privacy_list_edit_window.glade.h:9 +#, fuzzy +msgid "JabberID" +msgstr "Jabber ID:" + +#: ../data/glade/privacy_list_edit_window.glade.h:10 +#, fuzzy +msgid "Order:" +msgstr "Server:" + +#: ../data/glade/privacy_list_edit_window.glade.h:11 ../src/dialogs.py:1626 +#, fuzzy +msgid "Privacy List" +msgstr "Listen over Utestengte" + +#: ../data/glade/privacy_list_edit_window.glade.h:12 +#, fuzzy +msgid "all by subscription" +msgstr "_Abonement" + +#: ../data/glade/privacy_list_edit_window.glade.h:13 +#, fuzzy +msgid "all in the group" +msgstr "I gruppen" + +#: ../data/glade/privacy_list_edit_window.glade.h:14 +msgid "" +"none\n" +"both\n" +"from\n" +"to" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:18 +#, fuzzy +msgid "to send me messages" +msgstr "Send melding" + +#: ../data/glade/privacy_list_edit_window.glade.h:19 +msgid "to send me queries" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:20 +#, fuzzy +msgid "to send me status" +msgstr "Forespør hans/hennes status" + +#: ../data/glade/privacy_list_edit_window.glade.h:21 +#, fuzzy +msgid "to view my status" +msgstr "Tillat han/henne Ã¥ se min status" + +#: ../data/glade/privacy_lists_first_window.glade.h:1 +msgid "Create your own Privacy Lists" +msgstr "" + +#: ../data/glade/privacy_lists_first_window.glade.h:2 +msgid "Server-based Privacy Lists" +msgstr "" + +#: ../data/glade/remove_account_window.glade.h:1 +msgid "What do you want to do?" +msgstr "Hva ønsker du Ã¥ gjøre?" + +#: ../data/glade/remove_account_window.glade.h:2 +msgid "Remove account _only from Gajim" +msgstr "Fjern kontoe _bare fra Gajim" + +#: ../data/glade/remove_account_window.glade.h:3 +msgid "Remove account from Gajim and from _server" +msgstr "Fjern konto fra Gajim og fra _serveren" + +#: ../data/glade/roster_contact_context_menu.glade.h:1 +#, fuzzy +msgid "A_sk to see his/her status" +msgstr "Forespør hans/hennes status" + +#: ../data/glade/roster_contact_context_menu.glade.h:2 +msgid "Add Special _Notification" +msgstr "Legg til Spesiell _Alarm" + +#: ../data/glade/roster_contact_context_menu.glade.h:3 +msgid "Assign Open_PGP Key" +msgstr "Tilegn Open_PGP Nøkkel" + +#: ../data/glade/roster_contact_context_menu.glade.h:4 +msgid "Edit _Groups" +msgstr "Rediger _Grupper" + +#: ../data/glade/roster_contact_context_menu.glade.h:5 +#: ../data/glade/systray_context_menu.glade.h:1 +msgid "Send Single _Message" +msgstr "Send _Melding" + +#: ../data/glade/roster_contact_context_menu.glade.h:7 +msgid "Start _Chat" +msgstr "Start _Samtale" + +#: ../data/glade/roster_contact_context_menu.glade.h:9 +#, fuzzy +msgid "_Allow him/her to see my status" +msgstr "Tillat han/henne Ã¥ se min status" + +#: ../data/glade/roster_contact_context_menu.glade.h:10 +#, fuzzy +msgid "_Forbid him/her to see my status" +msgstr "Forby han/henne Ã¥ se min status" + +#: ../data/glade/roster_contact_context_menu.glade.h:12 +#: ../src/roster_window.py:1482 +msgid "_Remove from Roster" +msgstr "_Fjern fra Kontaktliste" + +#: ../data/glade/roster_contact_context_menu.glade.h:13 +#: ../src/roster_window.py:1470 +msgid "_Rename" +msgstr "_Gi Nytt Navn" + +#: ../data/glade/roster_contact_context_menu.glade.h:14 +msgid "_Subscription" +msgstr "_Abonement" + +#: ../data/glade/roster_window.glade.h:1 +msgid "A_ccounts" +msgstr "_Kontoer" + +#: ../data/glade/roster_window.glade.h:2 +msgid "Add _Contact" +msgstr "Ny _Kontakt" + +#: ../data/glade/roster_window.glade.h:3 +msgid "File _Transfers" +msgstr "Fil _Overføringer" + +#: ../data/glade/roster_window.glade.h:4 +msgid "Frequently Asked Questions (online)" +msgstr "Ofte Stilte SpørsmÃ¥l (online)" + +#: ../data/glade/roster_window.glade.h:6 +msgid "Help online" +msgstr "Hjelp online" + +#: ../data/glade/roster_window.glade.h:7 +msgid "Profile, Avatar" +msgstr "Profil, Bilde" + +#: ../data/glade/roster_window.glade.h:8 +msgid "Show _Offline Contacts" +msgstr "Vis _Frakoblede Kontakter" + +#: ../data/glade/roster_window.glade.h:11 +msgid "_Contents" +msgstr "_Innhold" + +#: ../data/glade/roster_window.glade.h:12 +msgid "_Discover Services" +msgstr "_Oppdag Tjenester" + +#: ../data/glade/roster_window.glade.h:13 ../src/disco.py:1252 +#: ../src/roster_window.py:1462 +msgid "_Edit" +msgstr "_Rediger" + +#: ../data/glade/roster_window.glade.h:14 +msgid "_FAQ" +msgstr "_FAQ" + +#: ../data/glade/roster_window.glade.h:16 +msgid "_Help" +msgstr "_Hjelp" + +#: ../data/glade/roster_window.glade.h:17 +msgid "_Preferences" +msgstr "_Instillinger" + +#: ../data/glade/roster_window.glade.h:18 +msgid "_Quit" +msgstr "_Avslutt" + +#: ../data/glade/service_discovery_window.glade.h:1 +msgid "G_o" +msgstr "G_Ã¥" + +#: ../data/glade/service_discovery_window.glade.h:2 +msgid "_Address:" +msgstr "_Adresse:" + +#: ../data/glade/service_discovery_window.glade.h:3 +msgid "_Filter:" +msgstr "_Filter:" + +#: ../data/glade/service_registration_window.glade.h:1 +msgid "Register to" +msgstr "Registrer til:" + +#: ../data/glade/service_registration_window.glade.h:2 +msgid "_Cancel" +msgstr "_Avbryt" + +#: ../data/glade/service_registration_window.glade.h:3 +msgid "_OK" +msgstr "_OK" + +#: ../data/glade/single_message_window.glade.h:1 +msgid "0" +msgstr "0" + +#: ../data/glade/single_message_window.glade.h:2 +msgid "From:" +msgstr "Fra:" + +#: ../data/glade/single_message_window.glade.h:3 +msgid "Reply to this message" +msgstr "Svar pÃ¥ denne meldingen" + +#: ../data/glade/single_message_window.glade.h:4 +msgid "Sen_d" +msgstr "Sen_d" + +#: ../data/glade/single_message_window.glade.h:5 +msgid "Send message" +msgstr "Send melding" + +#: ../data/glade/single_message_window.glade.h:6 +msgid "Send message and close window" +msgstr "Send melding og lukk vinduet" + +#: ../data/glade/single_message_window.glade.h:7 +msgid "Subject:" +msgstr "Tema:" + +#: ../data/glade/single_message_window.glade.h:8 +msgid "To:" +msgstr "Til:" + +#: ../data/glade/single_message_window.glade.h:9 +msgid "_Reply" +msgstr "_Svar" + +#: ../data/glade/single_message_window.glade.h:10 +msgid "_Send & Close" +msgstr "_Send & Lukk" + +#: ../data/glade/subscription_request_window.glade.h:1 +msgid "Authorize contact so he can know when you're connected" +msgstr "Godkjenn kontakt sÃ¥ han kan vite nÃ¥r du er tilkoblet" + +#: ../data/glade/subscription_request_window.glade.h:2 +msgid "Contact _Info" +msgstr "Kontakt_Info" + +#: ../data/glade/subscription_request_window.glade.h:3 +msgid "Deny authorization from contact so he cannot know when you're connected" +msgstr "AvslÃ¥ godkjenning fra kontakt sÃ¥ han ikke kan se nÃ¥r du er tilkoblet" + +#: ../data/glade/subscription_request_window.glade.h:4 +msgid "Subscription Request" +msgstr "Abbonerings Forespørsel" + +#: ../data/glade/subscription_request_window.glade.h:5 +msgid "_Authorize" +msgstr "_Godkjenn" + +#: ../data/glade/subscription_request_window.glade.h:6 +msgid "_Deny" +msgstr "_Nekt" + +#: ../data/glade/systray_context_menu.glade.h:2 +msgid "Show All Pending _Events" +msgstr "Vis Alle _Handlinger som Venter" + +#: ../data/glade/systray_context_menu.glade.h:3 +msgid "Show _Roster" +msgstr "Vis _Kontaktliste" + +#: ../data/glade/systray_context_menu.glade.h:4 +msgid "Sta_tus" +msgstr "Sta_tus" + +#. "About" is the text of a tab of vcard window +#: ../data/glade/vcard_information_window.glade.h:2 +msgid "About" +msgstr "Om" + +#: ../data/glade/vcard_information_window.glade.h:3 +msgid "Address" +msgstr "Adresse" + +#: ../data/glade/vcard_information_window.glade.h:4 +msgid "Ask:" +msgstr "Spør:" + +#: ../data/glade/vcard_information_window.glade.h:5 +msgid "Birthday:" +msgstr "Fødselsdag:" + +#: ../data/glade/vcard_information_window.glade.h:6 +msgid "City:" +msgstr "By:" + +#: ../data/glade/vcard_information_window.glade.h:7 +msgid "Client:" +msgstr "Klient:" + +#: ../data/glade/vcard_information_window.glade.h:8 +msgid "Company:" +msgstr "Bedrift:" + +#: ../data/glade/vcard_information_window.glade.h:9 +msgid "Contact Information" +msgstr "Kontaktinformasjon" + +#: ../data/glade/vcard_information_window.glade.h:10 +msgid "Country:" +msgstr "Land:" + +#: ../data/glade/vcard_information_window.glade.h:11 +msgid "Department:" +msgstr "Avdeling:" + +#: ../data/glade/vcard_information_window.glade.h:12 +msgid "E-Mail:" +msgstr "E-Post:" + +#: ../data/glade/vcard_information_window.glade.h:13 +msgid "Extra Address:" +msgstr "Ekstra Adresse:" + +#. Family Name +#: ../data/glade/vcard_information_window.glade.h:15 +msgid "Family:" +msgstr "Etternavn:" + +#: ../data/glade/vcard_information_window.glade.h:16 +msgid "Format: YYYY-MM-DD" +msgstr "Format: YYYY-MM-DD" + +#. Given Name +#: ../data/glade/vcard_information_window.glade.h:19 +msgid "Given:" +msgstr "Fornavn:" + +#: ../data/glade/vcard_information_window.glade.h:20 +msgid "Homepage:" +msgstr "Hjemmeside:" + +#: ../data/glade/vcard_information_window.glade.h:21 +msgid "Jabber" +msgstr "Jabber" + +#: ../data/glade/vcard_information_window.glade.h:22 +msgid "Jabber ID:" +msgstr "Jabber ID:" + +#: ../data/glade/vcard_information_window.glade.h:23 +msgid "Location" +msgstr "Plassering" + +#. Middle Name +#: ../data/glade/vcard_information_window.glade.h:25 +msgid "Middle:" +msgstr "Mellomnavn:" + +#: ../data/glade/vcard_information_window.glade.h:26 +msgid "More" +msgstr "Mer" + +#: ../data/glade/vcard_information_window.glade.h:29 +msgid "OS:" +msgstr "OS:" + +#: ../data/glade/vcard_information_window.glade.h:30 +msgid "Phone No.:" +msgstr "Telefon Nummer:" + +#: ../data/glade/vcard_information_window.glade.h:31 +msgid "Position:" +msgstr "Plassering:" + +#: ../data/glade/vcard_information_window.glade.h:32 +msgid "Postal Code:" +msgstr "Post Kode:" + +#. Prefix in Name +#: ../data/glade/vcard_information_window.glade.h:34 +msgid "Prefix:" +msgstr "Tittel:" + +#: ../data/glade/vcard_information_window.glade.h:35 +msgid "Resource:" +msgstr "Ressurs:" + +#: ../data/glade/vcard_information_window.glade.h:36 +msgid "Role:" +msgstr "Rolle:" + +#: ../data/glade/vcard_information_window.glade.h:37 +msgid "Set _Avatar" +msgstr "Velg _Avatar" + +#: ../data/glade/vcard_information_window.glade.h:38 +msgid "State:" +msgstr "Fylke:" + +#: ../data/glade/vcard_information_window.glade.h:39 +msgid "Status:" +msgstr "Status:" + +#: ../data/glade/vcard_information_window.glade.h:40 +msgid "Street:" +msgstr "Gate:" + +#: ../data/glade/vcard_information_window.glade.h:41 +msgid "Subscription:" +msgstr "Abbonement:" + +#. Suffix in Name +#: ../data/glade/vcard_information_window.glade.h:43 +msgid "Suffix:" +msgstr "Suffix:" + +#: ../data/glade/vcard_information_window.glade.h:44 +msgid "Work" +msgstr "Jobb" + +#: ../data/glade/vcard_information_window.glade.h:45 +msgid "_Log conversation history" +msgstr "_Logg samtale historikk" + +#: ../data/glade/vcard_information_window.glade.h:46 +msgid "_Publish" +msgstr "_Publisér" + +#: ../data/glade/vcard_information_window.glade.h:47 +msgid "_Retrieve" +msgstr "_Hent" + +#: ../data/glade/xml_console_window.glade.h:1 +msgid "Jabber Traffic" +msgstr "Jabber Trafikk" + +#: ../data/glade/xml_console_window.glade.h:2 +msgid "XML Input" +msgstr "XML Input" + +#. XML Console enable checkbutton +#: ../data/glade/xml_console_window.glade.h:4 +msgid "Enable" +msgstr "SlÃ¥ pÃ¥" + +#. Info/Query make the "IQ" initials. So translate like this 'YourLang/YourLang (Info/Query)'. Thanks (it's a tooltip so width is not a problem) +#: ../data/glade/xml_console_window.glade.h:6 +msgid "Info/Query" +msgstr "Informasjon/Spørring" + +#. Info/Query: all(?) jabber xml start with Whom do you want to ban?\n" "\n" @@ -375,11 +2417,11 @@ msgstr "" "Hvem ønsker du Ã¥ utvise?\n" "\n" -#: ../src/config.py:2023 +#: ../src/config.py:2062 msgid "Adding Member..." msgstr "Legger til Medlem..." -#: ../src/config.py:2024 +#: ../src/config.py:2063 msgid "" "Whom do you want to make a member?\n" "\n" @@ -387,11 +2429,11 @@ msgstr "" "Hvem ønsker du Ã¥ gjøre til medlem?\n" "\n" -#: ../src/config.py:2026 +#: ../src/config.py:2065 msgid "Adding Owner..." msgstr "Legger til Eier..." -#: ../src/config.py:2027 +#: ../src/config.py:2066 msgid "" "Whom do you want to make a owner?\n" "\n" @@ -399,11 +2441,11 @@ msgstr "" "Hvem ønsker du Ã¥ gjøre til eier?\n" "\n" -#: ../src/config.py:2029 +#: ../src/config.py:2068 msgid "Adding Administrator..." msgstr "Legger til Administrator..." -#: ../src/config.py:2030 +#: ../src/config.py:2069 msgid "" "Whom do you want to make an administrator?\n" "\n" @@ -411,7 +2453,7 @@ msgstr "" "Hvem ønsker du Ã¥ gjøre til administrator?\n" "\n" -#: ../src/config.py:2031 +#: ../src/config.py:2070 msgid "" "Can be one of the following:\n" "1. user@domain/resource (only that resource matches).\n" @@ -427,715 +2469,752 @@ msgstr "" "4. domene (domene selv treffer, smt treffer alle bruker@domene,\n" "domene/ressurs, eller adresser i et underdomene." -#: ../src/config.py:2127 +#: ../src/config.py:2166 #, python-format msgid "Removing %s account" msgstr "Fjerner %s kontoen" -#: ../src/config.py:2144 -#: ../src/roster_window.py:1859 +#: ../src/config.py:2183 ../src/roster_window.py:1857 msgid "Password Required" msgstr "Krever Passord" -#: ../src/config.py:2145 -#: ../src/roster_window.py:1860 +#: ../src/config.py:2184 ../src/roster_window.py:1858 #, python-format msgid "Enter your password for account %s" msgstr "Skriv inn passord for kontoen %s" -#: ../src/config.py:2146 -#: ../src/roster_window.py:1861 +#: ../src/config.py:2185 ../src/roster_window.py:1859 msgid "Save password" msgstr "Lagre passord" -#: ../src/config.py:2159 +#: ../src/config.py:2198 #, python-format msgid "Account \"%s\" is connected to the server" msgstr "Kontoen \"%s\" er tilkoblet til serveren" -#: ../src/config.py:2160 +#: ../src/config.py:2199 msgid "If you remove it, the connection will be lost." msgstr "Dersom du fjerner den vil tilkoblingen mistes." -#: ../src/config.py:2295 +#: ../src/config.py:2282 +msgid "Enter and leave only" +msgstr "" + +#: ../src/config.py:2352 msgid "New Room" msgstr "Nytt Rom" -#: ../src/config.py:2326 +#: ../src/config.py:2383 msgid "This bookmark has invalid data" msgstr "Dette bokmerket har ugyldig innhold" -#: ../src/config.py:2327 -msgid "Please be sure to fill out server and room fields or remove this bookmark." +#: ../src/config.py:2384 +msgid "" +"Please be sure to fill out server and room fields or remove this bookmark." msgstr "Vennligst fyll inn server og rom feltene for Ã¥ fjerne dette bokmerket." -#: ../src/config.py:2564 +#: ../src/config.py:2638 msgid "Invalid username" msgstr "Ugyldig brukernavn" -#: ../src/config.py:2565 +#: ../src/config.py:2639 msgid "You must provide a username to configure this account." msgstr "Du mÃ¥ oppgi et brukernavn for Ã¥ konfigurere denne kontoen." -#: ../src/config.py:2574 -#: ../src/dialogs.py:1036 +#: ../src/config.py:2648 ../src/dialogs.py:1118 msgid "Invalid password" msgstr "Ugyldig passord" -#: ../src/config.py:2575 +#: ../src/config.py:2649 msgid "You must enter a password for the new account." msgstr "Du mÃ¥ skrive inn et passord for den nye kontoen" -#: ../src/config.py:2579 -#: ../src/dialogs.py:1041 +#: ../src/config.py:2653 ../src/dialogs.py:1123 msgid "Passwords do not match" msgstr "Passordene er ikke like" -#: ../src/config.py:2580 -#: ../src/dialogs.py:1042 +#: ../src/config.py:2654 ../src/dialogs.py:1124 msgid "The passwords typed in both fields must be identical." msgstr "Passordene du skriver inn i begge felt mÃ¥ være identiske." -#: ../src/config.py:2599 +#: ../src/config.py:2673 msgid "Duplicate Jabber ID" msgstr "Duplikat Jabber ID" -#: ../src/config.py:2600 +#: ../src/config.py:2674 msgid "This account is already configured in Gajim." msgstr "Kontakten er allerede konfigurert i Gajim." -#: ../src/config.py:2617 +#: ../src/config.py:2691 msgid "Account has been added successfully" msgstr "Kontoen har blitt lagt til uten feilmeldinger" -#: ../src/config.py:2618 -#: ../src/config.py:2651 -msgid "You can set advanced account options by pressing Advanced button, or later by clicking in Accounts menuitem under Edit menu from the main window." -msgstr "Du kan sette avanserte konto instillinger ved Ã¥ trykke pÃ¥ Avansert knappen, eller senere ved Ã¥ klikke under Kontoer menyvalget, under Rediger menyen fra hovedvinduet." +#: ../src/config.py:2692 ../src/config.py:2725 +msgid "" +"You can set advanced account options by pressing Advanced button, or later " +"by clicking in Accounts menuitem under Edit menu from the main window." +msgstr "" +"Du kan sette avanserte konto instillinger ved Ã¥ trykke pÃ¥ Avansert knappen, " +"eller senere ved Ã¥ klikke under Kontoer menyvalget, under Rediger menyen fra " +"hovedvinduet." -#: ../src/config.py:2650 +#: ../src/config.py:2724 msgid "Your new account has been created successfully" msgstr "Din nye konto har blitt opprettet uten feilmeldinger" -#: ../src/config.py:2666 +#: ../src/config.py:2740 msgid "An error occured during account creation" msgstr "Det skjedde en feil ved oppretting av kontoen" -#: ../src/config.py:2723 +#: ../src/config.py:2797 msgid "Account name is in use" msgstr "Konto navnet er i bruk" -#: ../src/config.py:2724 +#: ../src/config.py:2798 msgid "You already have an account using this name." msgstr "Du har allerede en konto med dette navnet." -#: ../src/conversation_textview.py:182 -msgid "Text below this line is what has been said since the last time you paid attention to this group chat" -msgstr "Tekst under denne linjen er hva som har blitt sagt siden sist du fulgte med i denne gruppe samtalen" +#: ../src/conversation_textview.py:205 +msgid "" +"Text below this line is what has been said since the last time you paid " +"attention to this group chat" +msgstr "" +"Tekst under denne linjen er hva som har blitt sagt siden sist du fulgte med " +"i denne gruppe samtalen" -#: ../src/conversation_textview.py:239 +#: ../src/conversation_textview.py:263 #, python-format msgid "Actions for \"%s\"" msgstr "Handlinger for \"%s\"" -#: ../src/conversation_textview.py:251 +#: ../src/conversation_textview.py:275 msgid "Read _Wikipedia Article" msgstr "Les_Wikipedia Artikkel" -#: ../src/conversation_textview.py:255 +#: ../src/conversation_textview.py:280 msgid "Look it up in _Dictionary" msgstr "SlÃ¥ det opp i _Ordbok" #. we must have %s in the url if not WIKTIONARY -#: ../src/conversation_textview.py:270 +#: ../src/conversation_textview.py:296 #, python-format msgid "Dictionary URL is missing an \"%s\" and it is not WIKTIONARY" msgstr "Ordbok URL mangler en \"%s\" og den mÃ¥ ikke være WIKTIONARY" #. we must have %s in the url -#: ../src/conversation_textview.py:281 +#: ../src/conversation_textview.py:308 #, python-format msgid "Web Search URL is missing an \"%s\"" msgstr "Web Søk URL mangler en \"%s\"" -#: ../src/conversation_textview.py:284 +#: ../src/conversation_textview.py:311 msgid "Web _Search for it" msgstr "Web _Søk etter den" -#: ../src/conversation_textview.py:574 +#: ../src/conversation_textview.py:607 msgid "Yesterday" msgstr "I gÃ¥r" #. the number is >= 2 #. %i is day in year (1-365), %d (1-31) we want %i -#: ../src/conversation_textview.py:578 +#: ../src/conversation_textview.py:611 #, python-format msgid "%i days ago" msgstr "%i dager siden" #. if we have subject, show it too! -#: ../src/conversation_textview.py:634 +#: ../src/conversation_textview.py:686 #, python-format msgid "Subject: %s\n" msgstr "Tittel: %s\n" #. only say that to non Windows users -#: ../src/dbus_support.py:34 +#: ../src/dbus_support.py:32 msgid "D-Bus python bindings are missing in this computer" msgstr "D-Bus python bindinger mangler pÃ¥ denne maskinen" -#: ../src/dbus_support.py:35 +#: ../src/dbus_support.py:33 msgid "D-Bus capabilities of Gajim cannot be used" msgstr "D-Bus egenskapene til Gajim kan ikke brukes" -#: ../src/dialogs.py:64 +#: ../src/dialogs.py:55 #, python-format msgid "Contact's name: %s" msgstr "Kontaktens navn: %s" -#: ../src/dialogs.py:66 +#: ../src/dialogs.py:57 #, python-format msgid "JID: %s" msgstr "JID: %s" -#: ../src/dialogs.py:169 +#. Group name +#. In group boolean +#: ../src/dialogs.py:173 msgid "Group" msgstr "Gruppe" -#: ../src/dialogs.py:176 +#: ../src/dialogs.py:180 msgid "In the group" msgstr "I gruppen" -#: ../src/dialogs.py:226 +#: ../src/dialogs.py:230 msgid "KeyID" msgstr "NøkkelID" -#: ../src/dialogs.py:229 +#: ../src/dialogs.py:233 msgid "Contact name" msgstr "Kontakt navn" -#: ../src/dialogs.py:263 +#: ../src/dialogs.py:266 #, python-format msgid "%s Status Message" msgstr "%s Status Melding" -#: ../src/dialogs.py:265 +#: ../src/dialogs.py:268 msgid "Status Message" msgstr "Status Melding" -#: ../src/dialogs.py:340 +#: ../src/dialogs.py:343 msgid "Save as Preset Status Message" msgstr "Lagre som Forvalgt Status Melding" -#: ../src/dialogs.py:341 +#: ../src/dialogs.py:344 msgid "Please type a name for this status message" msgstr "Vennligst skriv inn et navn for denne status meldingen" -#: ../src/dialogs.py:369 +#: ../src/dialogs.py:391 #, python-format msgid "Please fill in the data of the contact you want to add in account %s" -msgstr "Vennligst fyll inn dataene til kontakten du ønsker Ã¥ legge til kontoen %s" +msgstr "" +"Vennligst fyll inn dataene til kontakten du ønsker Ã¥ legge til kontoen %s" -#: ../src/dialogs.py:371 +#: ../src/dialogs.py:393 msgid "Please fill in the data of the contact you want to add" msgstr "Vennligst fyll inn dataene til kontakten du ønsker Ã¥ legge til" -#. the user can be in mutiple groups, see in all of them -#: ../src/dialogs.py:380 -#: ../src/disco.py:118 -#: ../src/disco.py:119 -#: ../src/disco.py:1258 -#: ../src/roster_window.py:214 -#: ../src/roster_window.py:275 -#: ../src/roster_window.py:310 -#: ../src/roster_window.py:330 -#: ../src/roster_window.py:354 -#: ../src/roster_window.py:2940 -#: ../src/roster_window.py:2942 -#: ../src/systray.py:291 -#: ../src/common/helpers.py:42 +#: ../src/dialogs.py:403 ../src/disco.py:109 ../src/disco.py:110 +#: ../src/disco.py:1249 ../src/roster_window.py:207 +#: ../src/roster_window.py:273 ../src/roster_window.py:309 +#: ../src/roster_window.py:329 ../src/roster_window.py:353 +#: ../src/roster_window.py:2973 ../src/roster_window.py:2975 +#: ../src/common/helpers.py:39 msgid "Transports" msgstr "Transporter" -#: ../src/dialogs.py:452 -#: ../src/dialogs.py:458 +#: ../src/dialogs.py:493 ../src/dialogs.py:499 msgid "Invalid User ID" msgstr "Ugyldig Bruker ID" -#: ../src/dialogs.py:459 +#: ../src/dialogs.py:500 msgid "The user ID must not contain a resource." msgstr "Bruker IDen mÃ¥ ikke inneholde en ressurs." -#: ../src/dialogs.py:466 +#: ../src/dialogs.py:513 msgid "Contact already in roster" msgstr "Kontakt allerede i kontaktlisten" -#: ../src/dialogs.py:467 +#: ../src/dialogs.py:514 msgid "This contact is already listed in your roster." msgstr "Kontakten er allerede listet i din kontaktliste." -#: ../src/dialogs.py:528 +#: ../src/dialogs.py:576 msgid "A GTK+ jabber client" msgstr "En GTK+ Jabber klient" -#: ../src/dialogs.py:539 +#: ../src/dialogs.py:577 +msgid "GTK+ Version:" +msgstr "" + +#: ../src/dialogs.py:578 +msgid "PyGTK Version:" +msgstr "" + +#: ../src/dialogs.py:586 +#, fuzzy +msgid "Current Developers:" +msgstr "Tidligere Utviklere:" + +#: ../src/dialogs.py:588 msgid "Past Developers:" msgstr "Tidligere Utviklere:" -#: ../src/dialogs.py:543 +#: ../src/dialogs.py:592 msgid "THANKS:" msgstr "TUSEN TAKK:" -#. remove one english setence +#. remove one english sentence #. and add it manually as translatable -#: ../src/dialogs.py:550 +#: ../src/dialogs.py:598 msgid "Last but not least, we would like to thank all the package maintainers." -msgstr "Sist men ikke minst ønsker vi Ã¥ takke alle de som lager installasjonspakker." +msgstr "" +"Sist men ikke minst ønsker vi Ã¥ takke alle de som lager installasjonspakker." #. here you write your name in the form Name FamilyName -#: ../src/dialogs.py:564 +#: ../src/dialogs.py:612 msgid "translator-credits" msgstr "Stian B. Barmen " -#: ../src/dialogs.py:826 +#: ../src/dialogs.py:738 +#, fuzzy, python-format +msgid "Unable to bind to port %s." +msgstr "Klarer ikke Ã¥ gÃ¥ inn i gruppesamtale" + +#: ../src/dialogs.py:739 +msgid "" +"Maybe you have another running instance of Gajim. File Transfer will be " +"canceled." +msgstr "" + +#: ../src/dialogs.py:881 #, python-format msgid "Subscription request for account %s from %s" msgstr "Abbnerings ønske for konto %s fra %s" -#: ../src/dialogs.py:829 +#: ../src/dialogs.py:884 #, python-format msgid "Subscription request from %s" msgstr "Abbonerings ønske fra %s" -#: ../src/dialogs.py:872 +#: ../src/dialogs.py:926 msgid "You can not join a group chat unless you are connected." msgstr "Du kan ikke gÃ¥ inn i en gruppe samtale uten Ã¥ være tilkoblet." -#: ../src/dialogs.py:885 +#: ../src/dialogs.py:939 #, python-format msgid "Join Group Chat with account %s" msgstr "Bli med i samtalegruppe med konto %s" -#: ../src/dialogs.py:887 -#: ../src/gtkgui.glade.h:177 -msgid "Join Group Chat" -msgstr "Bli med i Gruppesamtale" - -#: ../src/dialogs.py:976 +#: ../src/dialogs.py:1030 msgid "Invalid room or server name" msgstr "Ugyldig rom eller servernavn" -#: ../src/dialogs.py:977 +#: ../src/dialogs.py:1031 msgid "The room name or server name has not allowed characters." msgstr "Rom navnet eller server navnet inneholder ulovlige symboler." -#: ../src/dialogs.py:996 +#: ../src/dialogs.py:1050 #, python-format msgid "Start Chat with account %s" msgstr "Start samtale med konto %s" -#: ../src/dialogs.py:998 +#: ../src/dialogs.py:1052 msgid "Start Chat" msgstr "Start Samtale" -#: ../src/dialogs.py:999 +#: ../src/dialogs.py:1053 +#, fuzzy msgid "" -"Fill in the contact ID of the contact you would like\n" +"Fill in the jid, or nick of the contact you would like\n" "to send a chat message to:" msgstr "" "Fyll kontakt ID til den kontakten du ønsker\n" "Ã¥ sende en melding til:" #. if offline or connecting -#: ../src/dialogs.py:1007 -#: ../src/dialogs.py:1330 -#: ../src/dialogs.py:1450 +#: ../src/dialogs.py:1078 ../src/dialogs.py:1427 ../src/dialogs.py:1551 msgid "Connection not available" msgstr "Tilbkobling ikke tilgjengelig" -#: ../src/dialogs.py:1008 -#: ../src/dialogs.py:1331 -#: ../src/dialogs.py:1451 +#: ../src/dialogs.py:1079 ../src/dialogs.py:1428 ../src/dialogs.py:1552 #, python-format msgid "Please make sure you are connected with \"%s\"." msgstr "Vennligst sjekk at du er tilkoblet med \"%s\"." -#: ../src/dialogs.py:1018 +#: ../src/dialogs.py:1088 ../src/dialogs.py:1091 +#, fuzzy +msgid "Invalid JID" +msgstr "Ugyldig Jabber ID" + +#: ../src/dialogs.py:1091 +#, python-format +msgid "Unable to parse \"%s\"." +msgstr "" + +#: ../src/dialogs.py:1100 msgid "Without a connection, you can not change your password." msgstr "Du kan ikke endre passordet ditt uten Ã¥ være tilkoblet." -#: ../src/dialogs.py:1037 +#: ../src/dialogs.py:1119 msgid "You must enter a password." msgstr "Du mÃ¥ skrive inn et passord." #. img to display #. default value -#: ../src/dialogs.py:1083 -#: ../src/gajim.py:443 -#: ../src/notify.py:129 +#: ../src/dialogs.py:1165 ../src/notify.py:126 ../src/notify.py:268 msgid "Contact Signed In" msgstr "Kontakt Logget PÃ¥" -#: ../src/dialogs.py:1085 -#: ../src/gajim.py:474 -#: ../src/notify.py:131 +#: ../src/dialogs.py:1167 ../src/notify.py:134 ../src/notify.py:270 msgid "Contact Signed Out" msgstr "Kontakt Logget Av" #. chat message -#: ../src/dialogs.py:1087 -#: ../src/gajim.py:609 -#: ../src/notify.py:133 +#: ../src/dialogs.py:1169 ../src/notify.py:154 ../src/notify.py:272 msgid "New Message" msgstr "Ny Melding" #. single message -#: ../src/dialogs.py:1087 -#: ../src/gajim.py:603 -#: ../src/notify.py:133 +#: ../src/dialogs.py:1169 ../src/notify.py:138 ../src/notify.py:272 msgid "New Single Message" msgstr "Ny Melding" -#: ../src/dialogs.py:1088 -#: ../src/gajim.py:586 -#: ../src/notify.py:134 +#. private message +#: ../src/dialogs.py:1170 ../src/notify.py:145 ../src/notify.py:273 msgid "New Private Message" msgstr "Ny Privat Melding" -#: ../src/dialogs.py:1088 -#: ../src/gajim.py:1049 -#: ../src/notify.py:142 +#: ../src/dialogs.py:1170 ../src/gajim.py:1044 ../src/notify.py:281 msgid "New E-mail" msgstr "Ny E-post" -#: ../src/dialogs.py:1090 -#: ../src/gajim.py:1187 -#: ../src/notify.py:136 +#: ../src/dialogs.py:1172 ../src/gajim.py:1187 ../src/notify.py:275 msgid "File Transfer Request" msgstr "Fil Overførings Forespørsel" -#: ../src/dialogs.py:1092 -#: ../src/gajim.py:1035 -#: ../src/gajim.py:1164 -#: ../src/notify.py:138 +#: ../src/dialogs.py:1174 ../src/gajim.py:1022 ../src/gajim.py:1164 +#: ../src/notify.py:277 msgid "File Transfer Error" msgstr "Fil Overføring Feilet" -#: ../src/dialogs.py:1094 -#: ../src/gajim.py:1222 -#: ../src/gajim.py:1244 -#: ../src/gajim.py:1261 -#: ../src/notify.py:140 +#: ../src/dialogs.py:1176 ../src/gajim.py:1222 ../src/gajim.py:1244 +#: ../src/gajim.py:1261 ../src/notify.py:279 msgid "File Transfer Completed" msgstr "Fil Overføring Komplett" -#: ../src/dialogs.py:1095 -#: ../src/gajim.py:1225 -#: ../src/notify.py:140 +#: ../src/dialogs.py:1177 ../src/gajim.py:1225 ../src/notify.py:279 msgid "File Transfer Stopped" msgstr "Fil Overføring Stoppet" -#: ../src/dialogs.py:1097 -#: ../src/gajim.py:953 -#: ../src/notify.py:144 +#: ../src/dialogs.py:1179 ../src/gajim.py:920 ../src/notify.py:283 msgid "Groupchat Invitation" msgstr "Gruppesamtale invitasjon" +#: ../src/dialogs.py:1181 ../src/notify.py:118 ../src/notify.py:285 +#, fuzzy +msgid "Contact Changed Status" +msgstr "Kontakt Logget Av" + #. FIXME: for Received with should become 'in' -#: ../src/dialogs.py:1262 +#: ../src/dialogs.py:1359 #, python-format msgid "Single Message with account %s" msgstr "Enslig Melding med konto %s" -#: ../src/dialogs.py:1264 +#: ../src/dialogs.py:1361 msgid "Single Message" msgstr "Melding" #. prepare UI for Sending -#: ../src/dialogs.py:1267 +#: ../src/dialogs.py:1364 #, python-format msgid "Send %s" msgstr "Send %s" #. prepare UI for Receiving -#: ../src/dialogs.py:1290 +#: ../src/dialogs.py:1387 #, python-format msgid "Received %s" msgstr "Motatt %s" #. we create a new blank window to send and we preset RE: and to jid -#: ../src/dialogs.py:1355 +#: ../src/dialogs.py:1454 #, python-format msgid "RE: %s" msgstr "SV: %s" -#: ../src/dialogs.py:1356 +#: ../src/dialogs.py:1455 #, python-format msgid "%s wrote:\n" msgstr "%s skrev:\n" -#: ../src/dialogs.py:1400 +#: ../src/dialogs.py:1499 #, python-format msgid "XML Console for %s" msgstr "XML Konsoll for %s" -#: ../src/dialogs.py:1402 +#: ../src/dialogs.py:1501 msgid "XML Console" msgstr "XML Konsoll" +#: ../src/dialogs.py:1620 +#, python-format +msgid "Privacy List %s" +msgstr "" + +#: ../src/dialogs.py:1624 +#, python-format +msgid "Privacy List for %s" +msgstr "" + +#: ../src/dialogs.py:1716 +#, fuzzy +msgid "Edit a rule" +msgstr "Utseende pÃ¥ en linje" + +#: ../src/dialogs.py:1801 +#, fuzzy +msgid "Add a rule" +msgstr "Utseende pÃ¥ en linje" + +#: ../src/dialogs.py:1897 +#, python-format +msgid "Privacy Lists for %s" +msgstr "" + +#: ../src/dialogs.py:1899 +#, fuzzy +msgid "Privacy Lists" +msgstr "Private Samtaler" + #. FIXME: use nickname instead of contact_jid -#: ../src/dialogs.py:1488 +#: ../src/dialogs.py:1988 #, python-format msgid "%(contact_jid)s has invited you to %(room_jid)s room" msgstr "%(contact_jid)s har invitert deg til %(room_jid)s rom" #. only if not None and not '' -#: ../src/dialogs.py:1494 +#: ../src/dialogs.py:1994 #, python-format msgid "Comment: %s" msgstr "Kommentar: %s" -#: ../src/dialogs.py:1554 +#: ../src/dialogs.py:2054 msgid "Choose Sound" msgstr "Velg Lyd" -#: ../src/dialogs.py:1564 -#: ../src/dialogs.py:1607 +#: ../src/dialogs.py:2064 ../src/dialogs.py:2107 msgid "All files" msgstr "Alle filer" -#: ../src/dialogs.py:1569 +#: ../src/dialogs.py:2069 msgid "Wav Sounds" msgstr "Wav Lyder" -#: ../src/dialogs.py:1597 +#: ../src/dialogs.py:2097 msgid "Choose Image" msgstr "Velg Bilde" -#: ../src/dialogs.py:1612 +#: ../src/dialogs.py:2112 msgid "Images" msgstr "Bilder" -#: ../src/dialogs.py:1658 +#: ../src/dialogs.py:2157 #, python-format msgid "When %s becomes:" msgstr "NÃ¥r %s blir:" -#: ../src/dialogs.py:1660 +#: ../src/dialogs.py:2159 #, python-format msgid "Adding Special Notification for %s" msgstr "Legg til Spesiell Alarm for %s" -#: ../src/disco.py:117 +#: ../src/dialogs.py:2232 +#, fuzzy +msgid "Condition" +msgstr "Tilkobling" + +#: ../src/disco.py:108 msgid "Others" msgstr "Andre" #. conference is a category for listing mostly groupchats in service discovery -#: ../src/disco.py:121 +#: ../src/disco.py:112 msgid "Conference" msgstr "Konferanse" -#: ../src/disco.py:420 +#: ../src/disco.py:411 msgid "Without a connection, you can not browse available services" msgstr "Uten en tilkobling kan du ikke liste ut tilgjengelige tjenester" -#: ../src/disco.py:499 +#: ../src/disco.py:490 #, python-format msgid "Service Discovery using account %s" msgstr "Se etter Tjenester med %s kontoen" -#: ../src/disco.py:500 +#: ../src/disco.py:491 msgid "Service Discovery" msgstr "Se etter Tjenester" -#: ../src/disco.py:637 +#: ../src/disco.py:628 msgid "The service could not be found" msgstr "Tjenesten ble ikke funnet" -#: ../src/disco.py:638 -msgid "There is no service at the address you entered, or it is not responding. Check the address and try again." -msgstr "Det er ingen tjeneste pÃ¥ adressen du oppgav, eller den svarer ikke. Sjekk adressen og prøv igjen." +#: ../src/disco.py:629 +msgid "" +"There is no service at the address you entered, or it is not responding. " +"Check the address and try again." +msgstr "" +"Det er ingen tjeneste pÃ¥ adressen du oppgav, eller den svarer ikke. Sjekk " +"adressen og prøv igjen." -#: ../src/disco.py:642 -#: ../src/disco.py:924 +#: ../src/disco.py:633 ../src/disco.py:915 msgid "The service is not browsable" msgstr "Ikke mulig Ã¥ utforske tjeneste" -#: ../src/disco.py:643 +#: ../src/disco.py:634 msgid "This type of service does not contain any items to browse." msgstr "Denne typen tjeneste inneholder ingen elementer Ã¥ utforske" -#: ../src/disco.py:723 +#: ../src/disco.py:714 #, python-format msgid "Browsing %s using account %s" msgstr "Utforsk %s med %s kontoen" -#: ../src/disco.py:762 +#: ../src/disco.py:753 msgid "_Browse" msgstr "_Utforsk" -#: ../src/disco.py:925 +#: ../src/disco.py:916 msgid "This service does not contain any items to browse." msgstr "Denne tjenesten innholer ingen elementer Ã¥ utforske." -#: ../src/disco.py:1146 -#: ../src/disco.py:1263 +#: ../src/disco.py:1137 ../src/disco.py:1254 msgid "Re_gister" msgstr "Re_gistrer" -#: ../src/disco.py:1154 -#: ../src/disco.py:1516 -#: ../src/gtkgui.glade.h:350 -msgid "_Join" -msgstr "_Bli med" - -#: ../src/disco.py:1261 -#: ../src/gtkgui.glade.h:334 -#: ../src/roster_window.py:1462 -msgid "_Edit" -msgstr "_Rediger" - -#: ../src/disco.py:1300 +#: ../src/disco.py:1291 #, python-format msgid "Scanning %d / %d.." msgstr "Skanner %d / %d.." #. Users column -#: ../src/disco.py:1482 +#: ../src/disco.py:1473 msgid "Users" msgstr "Brukere" #. Description column -#: ../src/disco.py:1489 +#: ../src/disco.py:1480 msgid "Description" msgstr "Beskrivelse" -#: ../src/filetransfers_window.py:81 +#: ../src/filetransfers_window.py:72 msgid "File" msgstr "Fil" -#: ../src/filetransfers_window.py:96 +#: ../src/filetransfers_window.py:87 msgid "Time" msgstr "Tid" -#: ../src/filetransfers_window.py:108 +#: ../src/filetransfers_window.py:99 msgid "Progress" msgstr "Fremdrift" -#: ../src/filetransfers_window.py:176 -#: ../src/filetransfers_window.py:238 +#: ../src/filetransfers_window.py:163 ../src/filetransfers_window.py:223 #, python-format msgid "Filename: %s" msgstr "Filnavn: %s" -#: ../src/filetransfers_window.py:178 -#: ../src/filetransfers_window.py:308 +#: ../src/filetransfers_window.py:164 ../src/filetransfers_window.py:291 #, python-format msgid "Size: %s" msgstr "Størrelse: %s" #. You is a reply of who sent a file #. You is a reply of who received a file -#: ../src/filetransfers_window.py:187 -#: ../src/filetransfers_window.py:197 -#: ../src/history_manager.py:452 +#: ../src/filetransfers_window.py:173 ../src/filetransfers_window.py:183 +#: ../src/history_manager.py:454 msgid "You" msgstr "Du" -#: ../src/filetransfers_window.py:188 -#: ../src/filetransfers_window.py:240 +#: ../src/filetransfers_window.py:174 ../src/filetransfers_window.py:224 #, python-format msgid "Sender: %s" msgstr "Sender: %s" -#: ../src/filetransfers_window.py:189 -#: ../src/filetransfers_window.py:555 -#: ../src/tooltips.py:617 +#: ../src/filetransfers_window.py:175 ../src/filetransfers_window.py:556 +#: ../src/tooltips.py:639 msgid "Recipient: " msgstr "Mottaker: " -#: ../src/filetransfers_window.py:200 +#: ../src/filetransfers_window.py:186 #, python-format msgid "Saved in: %s" msgstr "Lagret i: %s" -#: ../src/filetransfers_window.py:203 +#: ../src/filetransfers_window.py:188 msgid "File transfer completed" msgstr "Fil overføring komplett" -#: ../src/filetransfers_window.py:205 -#: ../src/gtkgui.glade.h:366 -msgid "_Open Containing Folder" -msgstr "_Ã…pne Foreldre Katalog" - -#: ../src/filetransfers_window.py:219 -#: ../src/filetransfers_window.py:227 +#: ../src/filetransfers_window.py:204 ../src/filetransfers_window.py:212 msgid "File transfer canceled" msgstr "Fil overføring avbrutt" -#: ../src/filetransfers_window.py:219 -#: ../src/filetransfers_window.py:228 +#: ../src/filetransfers_window.py:204 ../src/filetransfers_window.py:213 msgid "Connection with peer cannot be established." msgstr "Tilkoblingen kan ikke opprettes." -#: ../src/filetransfers_window.py:242 +#: ../src/filetransfers_window.py:225 msgid "File transfer stopped by the contact of the other side" msgstr "Fil overføringen ble stoppet av kontakten pÃ¥ den andre siden" -#: ../src/filetransfers_window.py:259 +#: ../src/filetransfers_window.py:242 msgid "Choose File to Send..." msgstr "Velg Fil for Sending..." -#. Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector) -#: ../src/filetransfers_window.py:266 -#: ../src/gtkgui.glade.h:390 -msgid "_Send" -msgstr "_Send" - -#: ../src/filetransfers_window.py:273 +#: ../src/filetransfers_window.py:256 msgid "Gajim cannot access this file" msgstr "Gajim fÃ¥r ikke tilgang til filen" -#: ../src/filetransfers_window.py:274 +#: ../src/filetransfers_window.py:257 msgid "This file is being used by another process." msgstr "Denne filen er i bruk av en annen prosess." -#: ../src/filetransfers_window.py:306 +#: ../src/filetransfers_window.py:289 #, python-format msgid "File: %s" msgstr "Fil: %s" -#: ../src/filetransfers_window.py:311 +#: ../src/filetransfers_window.py:294 #, python-format msgid "Type: %s" msgstr "Type: %s" -#: ../src/filetransfers_window.py:313 +#: ../src/filetransfers_window.py:296 #, python-format msgid "Description: %s" msgstr "Beskrivelse: %s" -#: ../src/filetransfers_window.py:314 +#: ../src/filetransfers_window.py:297 #, python-format msgid "%s wants to send you a file:" msgstr "%s ønsker Ã¥ sende deg en fil:" -#: ../src/filetransfers_window.py:329 +#: ../src/filetransfers_window.py:311 +#, python-format +msgid "Cannot overwrite existing file \"%s\"" +msgstr "" + +#: ../src/filetransfers_window.py:312 +msgid "" +"A file with this name already exists and you do not have permission to " +"overwrite it." +msgstr "" + +#: ../src/filetransfers_window.py:319 ../src/gtkgui_helpers.py:685 msgid "This file already exists" msgstr "Denne filen finnes fra før" -#: ../src/filetransfers_window.py:329 +#: ../src/filetransfers_window.py:319 ../src/gtkgui_helpers.py:685 msgid "What do you want to do?" msgstr "Hva ønsker du Ã¥ gjøre?" -#: ../src/filetransfers_window.py:344 +#: ../src/filetransfers_window.py:331 +#, python-format +msgid "Directory \"%s\" is not writable" +msgstr "" + +#: ../src/filetransfers_window.py:331 +msgid "You do not have permission to create files in this directory." +msgstr "" + +#: ../src/filetransfers_window.py:341 msgid "Save File as..." msgstr "Lagre Fil som..." #. Print remaining time in format 00:00:00 #. You can change the places of (hours), (minutes), (seconds) - #. they are not translatable. -#: ../src/filetransfers_window.py:419 +#: ../src/filetransfers_window.py:420 #, python-format msgid "%(hours)02.d:%(minutes)02.d:%(seconds)02.d" msgstr "%(hours)02.d:%(minutes)02.d:%(seconds)02.d" @@ -1143,32 +3222,29 @@ msgstr "%(hours)02.d:%(minutes)02.d:%(seconds)02.d" #. This should make the string Kb/s, #. where 'Kb' part is taken from %s. #. Only the 's' after / (which means second) should be translated. -#: ../src/filetransfers_window.py:491 +#: ../src/filetransfers_window.py:492 #, python-format msgid "(%(filesize_unit)s/s)" msgstr "(%(filesize_unit)s/s)" -#: ../src/filetransfers_window.py:527 -#: ../src/filetransfers_window.py:530 +#: ../src/filetransfers_window.py:528 ../src/filetransfers_window.py:531 msgid "Invalid File" msgstr "Ugyldig Fil" -#: ../src/filetransfers_window.py:527 +#: ../src/filetransfers_window.py:528 msgid "File: " msgstr "Fil: " -#: ../src/filetransfers_window.py:531 +#: ../src/filetransfers_window.py:532 msgid "It is not possible to send empty files" msgstr "Det er ikke mulig Ã¥ sende tomme filer" -#: ../src/filetransfers_window.py:551 -#: ../src/tooltips.py:498 -#: ../src/tooltips.py:607 +#: ../src/filetransfers_window.py:552 ../src/tooltips.py:511 +#: ../src/tooltips.py:629 msgid "Name: " msgstr "Navn: " -#: ../src/filetransfers_window.py:553 -#: ../src/tooltips.py:611 +#: ../src/filetransfers_window.py:554 ../src/tooltips.py:633 msgid "Sender: " msgstr "Avsender: " @@ -1176,213 +3252,262 @@ msgstr "Avsender: " msgid "Pause" msgstr "Pause" -#: ../src/filetransfers_window.py:753 -#: ../src/gtkgui.glade.h:328 -msgid "_Continue" -msgstr "_Fortsett" - -#: ../src/gajim-remote.py:84 +#: ../src/gajim-remote.py:82 msgid "shows a help on specific command" msgstr "vis hjelp for en spesifisert kommando" #. User gets help for the command, specified by this parameter -#: ../src/gajim-remote.py:87 +#: ../src/gajim-remote.py:85 msgid "command" msgstr "kommando" -#: ../src/gajim-remote.py:88 +#: ../src/gajim-remote.py:86 msgid "show help on command" msgstr "vis hjelp for kommando" -#: ../src/gajim-remote.py:92 +#: ../src/gajim-remote.py:90 msgid "Shows or hides the roster window" msgstr "Vis eller skjul kontaktliste vinduet" -#: ../src/gajim-remote.py:96 +#: ../src/gajim-remote.py:94 msgid "Popups a window with the next unread message" msgstr "Aktiver nytt vindu med den neste uleste melingen" -#: ../src/gajim-remote.py:100 -msgid "Prints a list of all contacts in the roster. Each contact appear on a separate line" -msgstr "Skriv ut en liste over alle kontakter i kontaklisten. Hver kontakt kommer pÃ¥ en egen linje" +#: ../src/gajim-remote.py:98 +msgid "" +"Prints a list of all contacts in the roster. Each contact appear on a " +"separate line" +msgstr "" +"Skriv ut en liste over alle kontakter i kontaklisten. Hver kontakt kommer pÃ¥ " +"en egen linje" -#: ../src/gajim-remote.py:102 -#: ../src/gajim-remote.py:115 -#: ../src/gajim-remote.py:125 -#: ../src/gajim-remote.py:138 -#: ../src/gajim-remote.py:159 -#: ../src/gajim-remote.py:189 -#: ../src/gajim-remote.py:197 -#: ../src/gajim-remote.py:204 -#: ../src/gajim-remote.py:211 +#: ../src/gajim-remote.py:100 ../src/gajim-remote.py:114 +#: ../src/gajim-remote.py:124 ../src/gajim-remote.py:137 +#: ../src/gajim-remote.py:151 ../src/gajim-remote.py:172 +#: ../src/gajim-remote.py:202 ../src/gajim-remote.py:211 +#: ../src/gajim-remote.py:218 ../src/gajim-remote.py:225 +#: ../src/gajim-remote.py:236 msgid "account" msgstr "konto" -#: ../src/gajim-remote.py:102 +#: ../src/gajim-remote.py:100 msgid "show only contacts of the given account" msgstr "vis bare kontakter for denne kontoen" -#: ../src/gajim-remote.py:107 +#: ../src/gajim-remote.py:105 msgid "Prints a list of registered accounts" msgstr "Skriv ut en liste over registrerte kontoer" -#: ../src/gajim-remote.py:111 +#: ../src/gajim-remote.py:109 msgid "Changes the status of account or accounts" msgstr "Endrer status pÃ¥ konto eller kontoer" -#: ../src/gajim-remote.py:113 +#. offline, online, chat, away, xa, dnd, invisible should not be translated +#: ../src/gajim-remote.py:112 msgid "status" msgstr "status" -#: ../src/gajim-remote.py:113 +#: ../src/gajim-remote.py:112 msgid "one of: offline, online, chat, away, xa, dnd, invisible " -msgstr "en av: frakoblet, tilkoblet, samtale, borte, mer borte, ikke forstyrr, usynlig" +msgstr "" +"en av: frakoblet, tilkoblet, samtale, borte, mer borte, ikke forstyrr, " +"usynlig" -#: ../src/gajim-remote.py:114 -#: ../src/gajim-remote.py:135 +#: ../src/gajim-remote.py:113 ../src/gajim-remote.py:134 +#: ../src/gajim-remote.py:148 msgid "message" msgstr "melding" -#: ../src/gajim-remote.py:114 +#: ../src/gajim-remote.py:113 msgid "status message" msgstr "status melding" -#: ../src/gajim-remote.py:115 -msgid "change status of account \"account\". If not specified, try to change status of all accounts that have \"sync with global status\" option set" -msgstr "endre status til konto \"konto\". Dersom uspesifisert, prøv Ã¥ endre status til alle kontoer som har \"synkroniser med global status\" valget pÃ¥slÃ¥tt" +#: ../src/gajim-remote.py:114 +msgid "" +"change status of account \"account\". If not specified, try to change status " +"of all accounts that have \"sync with global status\" option set" +msgstr "" +"endre status til konto \"konto\". Dersom uspesifisert, prøv Ã¥ endre status " +"til alle kontoer som har \"synkroniser med global status\" valget pÃ¥slÃ¥tt" -#: ../src/gajim-remote.py:121 +#: ../src/gajim-remote.py:120 msgid "Shows the chat dialog so that you can send messages to a contact" msgstr "Vis samtale vinduet sÃ¥ du kan sende meldinger til en kontakt" -#: ../src/gajim-remote.py:123 +#: ../src/gajim-remote.py:122 msgid "JID of the contact that you want to chat with" msgstr "JID til kontakten du ønsker Ã¥ snakke med" -#: ../src/gajim-remote.py:125 -#: ../src/gajim-remote.py:189 +#: ../src/gajim-remote.py:124 ../src/gajim-remote.py:202 msgid "if specified, contact is taken from the contact list of this account" msgstr "om spesifisert vil kontakten fjernes fra listen pÃ¥ denne kontoen" -#: ../src/gajim-remote.py:130 -msgid "Sends new message to a contact in the roster. Both OpenPGP key and account are optional. If you want to set only 'account', without 'OpenPGP key', just set 'OpenPGP key' to ''." -msgstr "Sender ny melding til en kontakt i kontaktlisten. BÃ¥de OpenPGP nøkkelen og konto er valgfritt. Dersom du ønsker Ã¥ sette bare 'konto', uten 'OpenPGP nøkkel', sett bare 'OpenPGP nøkkel' til ''." +#: ../src/gajim-remote.py:129 +#, fuzzy +msgid "" +"Sends new chat message to a contact in the roster. Both OpenPGP key and " +"account are optional. If you want to set only 'account', without 'OpenPGP " +"key', just set 'OpenPGP key' to ''." +msgstr "" +"Sender ny melding til en kontakt i kontaktlisten. BÃ¥de OpenPGP nøkkelen og " +"konto er valgfritt. Dersom du ønsker Ã¥ sette bare 'konto', uten 'OpenPGP " +"nøkkel', sett bare 'OpenPGP nøkkel' til ''." -#: ../src/gajim-remote.py:134 +#: ../src/gajim-remote.py:133 ../src/gajim-remote.py:146 msgid "JID of the contact that will receive the message" msgstr "JID til kontakten som vil motta meldingen" -#: ../src/gajim-remote.py:135 +#: ../src/gajim-remote.py:134 ../src/gajim-remote.py:148 msgid "message contents" msgstr "meldings innhold" -#: ../src/gajim-remote.py:136 +#: ../src/gajim-remote.py:135 ../src/gajim-remote.py:149 msgid "pgp key" msgstr "pgp nøkkel" -#: ../src/gajim-remote.py:136 +#: ../src/gajim-remote.py:135 ../src/gajim-remote.py:149 msgid "if specified, the message will be encrypted using this public key" -msgstr "dersom spesifisert vil meldingen bli kryptert med denne offentlige nøkkelen" +msgstr "" +"dersom spesifisert vil meldingen bli kryptert med denne offentlige nøkkelen" -#: ../src/gajim-remote.py:138 +#: ../src/gajim-remote.py:137 ../src/gajim-remote.py:151 msgid "if specified, the message will be sent using this account" msgstr "dersom spesifisert, vil meldingen bli sendt med denne kontoen" -#: ../src/gajim-remote.py:143 +#: ../src/gajim-remote.py:142 +#, fuzzy +msgid "" +"Sends new single message to a contact in the roster. Both OpenPGP key and " +"account are optional. If you want to set only 'account', without 'OpenPGP " +"key', just set 'OpenPGP key' to ''." +msgstr "" +"Sender ny melding til en kontakt i kontaktlisten. BÃ¥de OpenPGP nøkkelen og " +"konto er valgfritt. Dersom du ønsker Ã¥ sette bare 'konto', uten 'OpenPGP " +"nøkkel', sett bare 'OpenPGP nøkkel' til ''." + +#: ../src/gajim-remote.py:147 +#, fuzzy +msgid "subject" +msgstr "Tittel" + +#: ../src/gajim-remote.py:147 +#, fuzzy +msgid "message subject" +msgstr "Melding Sendt" + +#: ../src/gajim-remote.py:156 msgid "Gets detailed info on a contact" msgstr "Henter detaljert informasjon om en kontakt" -#: ../src/gajim-remote.py:145 -#: ../src/gajim-remote.py:158 -#: ../src/gajim-remote.py:188 +#: ../src/gajim-remote.py:158 ../src/gajim-remote.py:171 +#: ../src/gajim-remote.py:201 ../src/gajim-remote.py:210 msgid "JID of the contact" msgstr "JID til kontakten" -#: ../src/gajim-remote.py:149 +#: ../src/gajim-remote.py:162 msgid "Gets detailed info on a account" msgstr "Henter detaljert informasjon om en konto" -#: ../src/gajim-remote.py:151 +#: ../src/gajim-remote.py:164 msgid "Name of the account" msgstr "Navn pÃ¥ kontoen" -#: ../src/gajim-remote.py:155 +#: ../src/gajim-remote.py:168 msgid "Sends file to a contact" msgstr "Sender fil til en kontakt" -#: ../src/gajim-remote.py:157 +#: ../src/gajim-remote.py:170 msgid "file" msgstr "fil" -#: ../src/gajim-remote.py:157 +#: ../src/gajim-remote.py:170 msgid "File path" msgstr "Fil sti" -#: ../src/gajim-remote.py:159 +#: ../src/gajim-remote.py:172 msgid "if specified, file will be sent using this account" msgstr "dersom spesifisert, vil filen bli sendt fra denne kontoen" -#: ../src/gajim-remote.py:164 +#: ../src/gajim-remote.py:177 msgid "Lists all preferences and their values" msgstr "Viser alle instillingsmuligheter og gjeldende verdier" -#: ../src/gajim-remote.py:168 +#: ../src/gajim-remote.py:181 msgid "Sets value of 'key' to 'value'." msgstr "Setter verdien av 'nøkkel' til 'verdi'," -#: ../src/gajim-remote.py:170 +#: ../src/gajim-remote.py:183 msgid "key=value" msgstr "nøkkel=verdi" -#: ../src/gajim-remote.py:170 +#: ../src/gajim-remote.py:183 msgid "'key' is the name of the preference, 'value' is the value to set it to" msgstr "'nøkkel' er navnet pÃ¥ instillingen, 'verdi' er gjeldende instilling" -#: ../src/gajim-remote.py:175 +#: ../src/gajim-remote.py:188 msgid "Deletes a preference item" msgstr "Sletter en instilling" -#: ../src/gajim-remote.py:177 +#: ../src/gajim-remote.py:190 msgid "key" msgstr "nøkkel" -#: ../src/gajim-remote.py:177 +#: ../src/gajim-remote.py:190 msgid "name of the preference to be deleted" msgstr "navnet pÃ¥ instillingen som skal slettes" -#: ../src/gajim-remote.py:181 +#: ../src/gajim-remote.py:194 msgid "Writes the current state of Gajim preferences to the .config file" msgstr "Skriver gjeldende Gajim instillinger til .config filen" -#: ../src/gajim-remote.py:186 +#: ../src/gajim-remote.py:199 msgid "Removes contact from roster" msgstr "Fjerner kontakt fra kontaktlisten" -#: ../src/gajim-remote.py:195 +#: ../src/gajim-remote.py:208 msgid "Adds contact to roster" msgstr "Legger til kontakt til kontaktlisten" -#: ../src/gajim-remote.py:197 -msgid "Adds new contact to this account." +#: ../src/gajim-remote.py:210 +msgid "jid" +msgstr "" + +#: ../src/gajim-remote.py:211 +#, fuzzy +msgid "Adds new contact to this account" msgstr "Legger til ny kontakt til denne kontoen." -#: ../src/gajim-remote.py:202 -msgid "Returns current status (the global one unless account is specified)" -msgstr "Returnerer instillinger (globale instillinger om ikke en konto er spesifisert)" - -#: ../src/gajim-remote.py:209 -msgid "Returns current status message(the global one unless account is specified)" -msgstr "Returnerer gjeldende status melding (den globale om ikke en konto er spesifisert)" - #: ../src/gajim-remote.py:216 +msgid "Returns current status (the global one unless account is specified)" +msgstr "" +"Returnerer instillinger (globale instillinger om ikke en konto er " +"spesifisert)" + +#: ../src/gajim-remote.py:223 +msgid "" +"Returns current status message(the global one unless account is specified)" +msgstr "" +"Returnerer gjeldende status melding (den globale om ikke en konto er " +"spesifisert)" + +#: ../src/gajim-remote.py:230 msgid "Returns number of unreaded messages" msgstr "Returnerer antall uleste meldinger" +#: ../src/gajim-remote.py:234 +msgid "Open 'Start Chat' dialog" +msgstr "" + #: ../src/gajim-remote.py:236 +#, fuzzy +msgid "Starts chat, using this account" +msgstr "Start samtale med konto %s" + +#: ../src/gajim-remote.py:256 msgid "Missing argument \"contact_jid\"" msgstr "Mangler argument \"contact_jid\"" -#: ../src/gajim-remote.py:255 +#: ../src/gajim-remote.py:275 #, python-format msgid "" "'%s' is not in your roster.\n" @@ -1391,16 +3516,16 @@ msgstr "" "'%s' er ikke in kontaktlisten din.\n" "Venligst spesifiser konto for sending av meldingen." -#: ../src/gajim-remote.py:258 +#: ../src/gajim-remote.py:278 msgid "You have no active account" msgstr "Du har ingen aktiv konto" -#: ../src/gajim-remote.py:301 +#: ../src/gajim-remote.py:321 #, python-format msgid "Unknown D-Bus version: %s" msgstr "Ukjent D-Bus versjon: %s" -#: ../src/gajim-remote.py:328 +#: ../src/gajim-remote.py:348 #, python-format msgid "" "Usage: %s %s %s \n" @@ -1409,16 +3534,16 @@ msgstr "" "Bruk: %s %s %s \n" "\t %s" -#: ../src/gajim-remote.py:331 +#: ../src/gajim-remote.py:351 msgid "Arguments:" msgstr "Argumenter:" -#: ../src/gajim-remote.py:335 +#: ../src/gajim-remote.py:355 #, python-format msgid "%s not found" msgstr "%s ikke funnet" -#: ../src/gajim-remote.py:339 +#: ../src/gajim-remote.py:359 #, python-format msgid "" "Usage: %s command [arguments]\n" @@ -1427,7 +3552,7 @@ msgstr "" "Bruk: %s kommando [argumenter]\n" "Kommando er en av:\n" -#: ../src/gajim-remote.py:413 +#: ../src/gajim-remote.py:433 #, python-format msgid "" "Argument \"%s\" is not specified. \n" @@ -1462,116 +3587,108 @@ msgstr "GTK+ mangler libglade støtte" #: ../src/gajim.py:63 #, python-format -msgid "Please remove your current GTK+ runtime and install the latest stable version from %s" -msgstr "Vennligst fjern din gjeldende GTK+ installasjon og installer siste stabile versjon fra %s" +msgid "" +"Please remove your current GTK+ runtime and install the latest stable " +"version from %s" +msgstr "" +"Vennligst fjern din gjeldende GTK+ installasjon og installer siste stabile " +"versjon fra %s" #: ../src/gajim.py:65 -msgid "Please make sure that GTK+ and PyGTK have libglade support in your system." +msgid "" +"Please make sure that GTK+ and PyGTK have libglade support in your system." msgstr "Vennligst sjekk at GTK+ og PyGTK har libglade støtte pÃ¥ ditt system." #: ../src/gajim.py:70 msgid "Gajim needs PySQLite2 to run" msgstr "Gajim trenger PySQLite2 for Ã¥ kjøre" -#: ../src/gajim.py:235 +#. set the icon to all newly opened wind +#: ../src/gajim.py:151 +msgid "Gajim is already running" +msgstr "" + +#: ../src/gajim.py:152 +msgid "" +"Another instance of Gajim seems to be running\n" +"Run anyway?" +msgstr "" + +#: ../src/gajim.py:267 #, python-format msgid "HTTP (%s) Authorization for %s (id: %s)" msgstr "HTTP (%s) Autentisering for %s (id: %s)" -#: ../src/gajim.py:236 +#: ../src/gajim.py:268 msgid "Do you accept this request?" msgstr "Godtar du denne forespørselen?" -#: ../src/gajim.py:438 -#, python-format -msgid "%(nickname)s Signed In" -msgstr "%(nickname)s Logget PÃ¥" - -#: ../src/gajim.py:469 -#, python-format -msgid "%(nickname)s Signed Out" -msgstr "%(nickname)s Logget Av" - -#: ../src/gajim.py:583 -#, python-format -msgid "New Private Message from room %s" -msgstr "Ny Privat Melding fra rom %s" - -#: ../src/gajim.py:584 -#, python-format -msgid "%(nickname)s: %(message)s" -msgstr "%(nickname)s: %(message)s" - -#: ../src/gajim.py:606 -#, python-format -msgid "New Single Message from %(nickname)s" -msgstr "Ny Enkeltmelding fra %(nickname)s" - -#: ../src/gajim.py:612 -#, python-format -msgid "New Message from %(nickname)s" -msgstr "Ny Melding fra %(nickname)s" - -#: ../src/gajim.py:660 +#: ../src/gajim.py:611 #, python-format msgid "error while sending %s ( %s )" msgstr "feil ved sending %s ( %s )" -#: ../src/gajim.py:700 +#: ../src/gajim.py:651 msgid "Authorization accepted" msgstr "Godkjenningsforespørel akseptert" -#: ../src/gajim.py:701 +#: ../src/gajim.py:652 #, python-format msgid "The contact \"%s\" has authorized you to see his or her status." msgstr "Kontakten \"%s\" har godkjent at du kan se hans eller hennes status." -#: ../src/gajim.py:709 +#: ../src/gajim.py:660 #, python-format msgid "Contact \"%s\" removed subscription from you" msgstr "Kontakten \"%s\" fjernet abbonementet fra deg" -#: ../src/gajim.py:710 +#: ../src/gajim.py:661 msgid "You will always see him or her as offline." msgstr "Du vil alltid se han eller henne som frakoblet." -#: ../src/gajim.py:736 +#: ../src/gajim.py:704 #, python-format msgid "Contact with \"%s\" cannot be established" msgstr "Kontakt med \"%s\" kan ikke opprettes" -#: ../src/gajim.py:737 -#: ../src/common/connection.py:349 +#: ../src/gajim.py:705 ../src/common/connection.py:398 msgid "Check your connection or try again later." msgstr "Sjekk nettverkstilkoblingen eller prøv igjen senere." -#: ../src/gajim.py:874 -#: ../src/roster_window.py:1012 +#: ../src/gajim.py:849 ../src/roster_window.py:1025 #, python-format msgid "%s is now %s (%s)" msgstr "%s er nÃ¥ %s (%s)" -#: ../src/gajim.py:963 +#: ../src/gajim.py:930 msgid "Your passphrase is incorrect" msgstr "Passord setningen din er ikke riktig" -#: ../src/gajim.py:964 +#: ../src/gajim.py:931 msgid "You are currently connected without your OpenPGP key." msgstr "Du er nÃ¥ tilkoblet uten din OpenPGP nøkkel." #. FIXME: find a better image -#: ../src/gajim.py:1045 +#: ../src/gajim.py:1033 #, python-format msgid "New E-mail on %(gmail_mail_address)s" msgstr "Ny E-post pÃ¥ %(gmail_mail_address)s" -#: ../src/gajim.py:1047 +#: ../src/gajim.py:1035 #, python-format msgid "You have %d new E-mail message" msgid_plural "You have %d new E-mail messages" msgstr[0] "Du har %d ny E-post melding" msgstr[1] "Du har %d nye E-post meldinger" +#. each message has a 'From', 'Subject' and 'Snippet' field +#: ../src/gajim.py:1040 +#, python-format +msgid "" +"\n" +"From: %(from_address)s" +msgstr "" + #: ../src/gajim.py:1185 #, python-format msgid "%s wants to send you a file." @@ -1612,2091 +3729,626 @@ msgid "vCard publication failed" msgstr "vCard publisering feilet" #: ../src/gajim.py:1304 -msgid "There was an error while publishing your personal information, try again later." -msgstr "Det skjedde en feil med publisering av din personlige informasjon, prøv igjen senere." +msgid "" +"There was an error while publishing your personal information, try again " +"later." +msgstr "" +"Det skjedde en feil med publisering av din personlige informasjon, prøv " +"igjen senere." #. it is good to notify the user #. in case he or she cannot see the output of the console -#: ../src/gajim.py:1634 +#: ../src/gajim.py:1683 msgid "Could not save your settings and preferences" msgstr "Kan ikke lagre dine instillinger og valg" -#: ../src/gajim.py:1848 +#: ../src/gajim.py:1903 msgid "Session Management support not available (missing gnome.ui module)" -msgstr "Sesjons Administrasjons støtte ikke tilgjengelig (mangler gnome.ui modul)" +msgstr "" +"Sesjons Administrasjons støtte ikke tilgjengelig (mangler gnome.ui modul)" -#: ../src/gajim.py:1878 +#: ../src/gajim.py:1932 msgid "Migrating Logs..." msgstr "Migrerer Logger..." -#: ../src/gajim.py:1879 +#: ../src/gajim.py:1933 msgid "Please wait while logs are being migrated..." msgstr "Vennligst vent mens loggene blir migrert..." -#: ../src/gajim_themes_window.py:67 +#: ../src/gajim_themes_window.py:59 msgid "Theme" msgstr "Tema" #. don't confuse translators -#: ../src/gajim_themes_window.py:149 +#: ../src/gajim_themes_window.py:141 msgid "theme name" msgstr "tema navn" -#: ../src/gajim_themes_window.py:166 +#: ../src/gajim_themes_window.py:158 msgid "You cannot delete your current theme" msgstr "Du kan ikke slette ditt gjeldene tema" -#: ../src/gajim_themes_window.py:167 +#: ../src/gajim_themes_window.py:159 msgid "Please first choose another for your current theme." msgstr "Vennligst velg en annen for ditt gjeldende tema." -#: ../src/groupchat_control.py:68 +#: ../src/groupchat_control.py:99 msgid "Private Chat" msgstr "Privat Samtale" -#: ../src/groupchat_control.py:68 +#: ../src/groupchat_control.py:99 msgid "Private Chats" msgstr "Private Samtaler" -#: ../src/groupchat_control.py:84 +#: ../src/groupchat_control.py:115 msgid "Sending private message failed" msgstr "Sending av privat melding feilet" #. in second %s code replaces with nickname -#: ../src/groupchat_control.py:86 +#: ../src/groupchat_control.py:117 #, python-format msgid "You are no longer in room \"%s\" or \"%s\" has left." msgstr "Du er ikke lenger i rommet \"%s\" eller \"%s\" har dratt." -#: ../src/groupchat_control.py:98 +#: ../src/groupchat_control.py:129 msgid "Group Chat" msgstr "Gruppe Samtale" -#: ../src/groupchat_control.py:98 +#: ../src/groupchat_control.py:129 msgid "Group Chats" msgstr "Gruppe Samtaler" -#: ../src/groupchat_control.py:595 +#: ../src/groupchat_control.py:308 +#, fuzzy +msgid "Insert Nickname" +msgstr "Endre _Kallenavn" + +#: ../src/groupchat_control.py:702 msgid "This room has no subject" msgstr "Dette rommet har ingen tittel" #. do not print 'kicked by None' -#: ../src/groupchat_control.py:693 +#: ../src/groupchat_control.py:801 #, python-format msgid "%(nick)s has been kicked: %(reason)s" msgstr "%(nick)s har blitt utvist: %(reason)s" -#: ../src/groupchat_control.py:697 +#: ../src/groupchat_control.py:805 #, python-format msgid "%(nick)s has been kicked by %(who)s: %(reason)s" msgstr "%(nick)s har blitt utvist av %(who)s: %(reason)s" #. do not print 'banned by None' -#: ../src/groupchat_control.py:704 +#: ../src/groupchat_control.py:812 #, python-format msgid "%(nick)s has been banned: %(reason)s" msgstr "%(nick)s er blitt uønsket: %(reason)s" -#: ../src/groupchat_control.py:708 +#: ../src/groupchat_control.py:816 #, python-format msgid "%(nick)s has been banned by %(who)s: %(reason)s" msgstr "%(nick)s har blitt uønsket av %(who)s: %(reason)s" -#: ../src/groupchat_control.py:716 +#: ../src/groupchat_control.py:824 #, python-format msgid "You are now known as %s" msgstr "Du er nÃ¥ kjent som %s" -#: ../src/groupchat_control.py:718 +#: ../src/groupchat_control.py:826 #, python-format msgid "%s is now known as %s" msgstr "%s er nÃ¥ kjent som %s" -#: ../src/groupchat_control.py:757 +#: ../src/groupchat_control.py:897 #, python-format msgid "%s has left" msgstr "%s har dratt" +#: ../src/groupchat_control.py:902 +#, python-format +msgid "%s has joined the room" +msgstr "" + #. No status message -#: ../src/groupchat_control.py:759 -#: ../src/roster_window.py:1015 +#: ../src/groupchat_control.py:904 ../src/roster_window.py:1028 #, python-format msgid "%s is now %s" msgstr "%s er nÃ¥ %s" -#: ../src/groupchat_control.py:871 -#: ../src/groupchat_control.py:888 -#: ../src/groupchat_control.py:981 -#: ../src/groupchat_control.py:997 +#: ../src/groupchat_control.py:1022 ../src/groupchat_control.py:1039 +#: ../src/groupchat_control.py:1132 ../src/groupchat_control.py:1148 #, python-format msgid "Nickname not found: %s" msgstr "Kallenavn ikke funnet: %s" -#: ../src/groupchat_control.py:915 +#: ../src/groupchat_control.py:1066 #, python-format msgid "Invited %(contact_jid)s to %(room_jid)s." msgstr "Invitert %(contact_jid)s til %(room_jid)s." #. %s is something the user wrote but it is not a jid so we inform -#: ../src/groupchat_control.py:922 -#: ../src/groupchat_control.py:952 +#: ../src/groupchat_control.py:1073 ../src/groupchat_control.py:1103 #, python-format msgid "%s does not appear to be a valid JID" msgstr "%s ser ikke ut til Ã¥ være en gyldig JID" -#: ../src/groupchat_control.py:1019 +#: ../src/groupchat_control.py:1185 #, python-format msgid "No such command: /%s (if you want to send this, prefix it with /say)" -msgstr "Ingen slik kommando: /%s (dersom du ønsker Ã¥ sende dette, sÃ¥ skriv /say før teksten)" +msgstr "" +"Ingen slik kommando: /%s (dersom du ønsker Ã¥ sende dette, sÃ¥ skriv /say før " +"teksten)" -#: ../src/groupchat_control.py:1041 +#: ../src/groupchat_control.py:1207 #, python-format msgid "Commands: %s" msgstr "Kommandoer: %s" -#: ../src/groupchat_control.py:1043 +#: ../src/groupchat_control.py:1209 #, python-format -msgid "Usage: /%s [reason], bans the JID from the room. The nickname of an occupant may be substituted, but not if it contains \"@\". If the JID is currently in the room, he/she/it will also be kicked. Does NOT support spaces in nickname." -msgstr "Bruksanvisning: /%s [Ã¥rsak], utviser JIDen fra rommet. Kallenavnet til en bruker kan bli brukt, men ikke dersom det inneholder \"@\". Skulle en bruker med den JIDen være tilstede i rommet vil denne ogsÃ¥ bli kastet ut. Det støttes ikke med mellomrom i kallenavnet." +msgid "" +"Usage: /%s [reason], bans the JID from the room. The nickname " +"of an occupant may be substituted, but not if it contains \"@\". If the JID " +"is currently in the room, he/she/it will also be kicked. Does NOT support " +"spaces in nickname." +msgstr "" +"Bruksanvisning: /%s [Ã¥rsak], utviser JIDen fra rommet. " +"Kallenavnet til en bruker kan bli brukt, men ikke dersom det inneholder \"@" +"\". Skulle en bruker med den JIDen være tilstede i rommet vil denne ogsÃ¥ bli " +"kastet ut. Det støttes ikke med mellomrom i kallenavnet." -#: ../src/groupchat_control.py:1049 +#: ../src/groupchat_control.py:1215 #, python-format -msgid "Usage: /%s , opens a private chat window to the specified occupant." -msgstr "Bruksanvisning: /%s , Ã¥pner en privat samtale vindu til den spesifiserte brukeren." +msgid "" +"Usage: /%s , opens a private chat window to the specified occupant." +msgstr "" +"Bruksanvisning: /%s , Ã¥pner en privat samtale vindu til den " +"spesifiserte brukeren." -#: ../src/groupchat_control.py:1053 +#: ../src/groupchat_control.py:1219 #, python-format msgid "Usage: /%s, clears the text window." msgstr "Bruksanvisning: /%s, tømmer tekst vinduet." -#: ../src/groupchat_control.py:1055 +#: ../src/groupchat_control.py:1221 #, python-format -msgid "Usage: /%s [reason], closes the current window or tab, displaying reason if specified." -msgstr "Bruksanvisning: /%s [Ã¥rsak], lukker gjeldende vindu eller fane, viser Ã¥rsak dersom spesifisert." +msgid "" +"Usage: /%s [reason], closes the current window or tab, displaying reason if " +"specified." +msgstr "" +"Bruksanvisning: /%s [Ã¥rsak], lukker gjeldende vindu eller fane, viser Ã¥rsak " +"dersom spesifisert." -#: ../src/groupchat_control.py:1058 +#: ../src/groupchat_control.py:1224 #, python-format msgid "Usage: /%s, hide the chat buttons." msgstr "Bruk: /%s, gjemmer samtale knappene." -#: ../src/groupchat_control.py:1060 +#: ../src/groupchat_control.py:1226 #, python-format -msgid "Usage: /%s [reason], invites JID to the current room, optionally providing a reason." -msgstr "Bruksanvisning: /%s [Ã¥rsak], inviterer JID til gjeldende rom, og viser en Ã¥rsak dersom spesifisert." +msgid "" +"Usage: /%s [reason], invites JID to the current room, optionally " +"providing a reason." +msgstr "" +"Bruksanvisning: /%s [Ã¥rsak], inviterer JID til gjeldende rom, og viser " +"en Ã¥rsak dersom spesifisert." -#: ../src/groupchat_control.py:1064 +#: ../src/groupchat_control.py:1230 #, python-format -msgid "Usage: /%s @[/nickname], offers to join room@server optionally using specified nickname." -msgstr "Bruksanvisning: /%s @[/kallenavn], inviterer til rom@server og gir mulighet for Ã¥ spesifisere valgfritt kallenavn." +msgid "" +"Usage: /%s @[/nickname], offers to join room@server optionally " +"using specified nickname." +msgstr "" +"Bruksanvisning: /%s @[/kallenavn], inviterer til rom@server og " +"gir mulighet for Ã¥ spesifisere valgfritt kallenavn." -#: ../src/groupchat_control.py:1068 +#: ../src/groupchat_control.py:1234 #, python-format -msgid "Usage: /%s [reason], removes the occupant specified by nickname from the room and optionally displays a reason. Does NOT support spaces in nickname." -msgstr "Bruksanvisning: /%s [Ã¥rsak], fjerner brukeren spesifisert av kallenavn fra rommet og viser om spesifisert en Ã¥rsak. Støtter ikke mellomrom i kallenavn." +msgid "" +"Usage: /%s [reason], removes the occupant specified by nickname " +"from the room and optionally displays a reason. Does NOT support spaces in " +"nickname." +msgstr "" +"Bruksanvisning: /%s [Ã¥rsak], fjerner brukeren spesifisert av " +"kallenavn fra rommet og viser om spesifisert en Ã¥rsak. Støtter ikke " +"mellomrom i kallenavn." -#: ../src/groupchat_control.py:1073 +#: ../src/groupchat_control.py:1239 #, python-format -msgid "Usage: /%s , sends action to the current room. Use third person. (e.g. /%s explodes.)" -msgstr "Bruksanvisning: /%s , sender handling til gjeldende rom. Bruk tredje person. (f.eks. /%s eksploderer.)" +msgid "" +"Usage: /%s , sends action to the current room. Use third person. (e." +"g. /%s explodes.)" +msgstr "" +"Bruksanvisning: /%s , sender handling til gjeldende rom. Bruk " +"tredje person. (f.eks. /%s eksploderer.)" -#: ../src/groupchat_control.py:1077 +#: ../src/groupchat_control.py:1243 #, python-format -msgid "Usage: /%s [message], opens a private message windowand sends message to the occupant specified by nickname." -msgstr "Bruk: /%s [melding], Ã¥pner et privat meldingsvindu og sender meldingen til brukeren spesifisert av kallenavn." +msgid "" +"Usage: /%s [message], opens a private message windowand sends " +"message to the occupant specified by nickname." +msgstr "" +"Bruk: /%s [melding], Ã¥pner et privat meldingsvindu og sender " +"meldingen til brukeren spesifisert av kallenavn." -#: ../src/groupchat_control.py:1082 +#: ../src/groupchat_control.py:1248 #, python-format msgid "Usage: /%s , changes your nickname in current room." -msgstr "Bruksanvisning: /%s , endrer kallenavnet ditt i gjeldende rom." +msgstr "" +"Bruksanvisning: /%s , endrer kallenavnet ditt i gjeldende rom." -#: ../src/groupchat_control.py:1086 +#: ../src/groupchat_control.py:1252 +#, fuzzy, python-format +msgid "Usage: /%s , display the names of room occupants." +msgstr "" +"Bruksanvisning: /%s [tittel], viser eller oppdaterer gjeldende rom tittel." + +#: ../src/groupchat_control.py:1256 #, python-format msgid "Usage: /%s [topic], displays or updates the current room topic." -msgstr "Bruksanvisning: /%s [tittel], viser eller oppdaterer gjeldende rom tittel." +msgstr "" +"Bruksanvisning: /%s [tittel], viser eller oppdaterer gjeldende rom tittel." -#: ../src/groupchat_control.py:1089 +#: ../src/groupchat_control.py:1259 #, python-format -msgid "Usage: /%s , sends a message without looking for other commands." -msgstr "Bruksanvisning: /%s , sender en melding uten Ã¥ se etter andre kommandoer." +msgid "" +"Usage: /%s , sends a message without looking for other commands." +msgstr "" +"Bruksanvisning: /%s , sender en melding uten Ã¥ se etter andre " +"kommandoer." -#: ../src/groupchat_control.py:1092 +#: ../src/groupchat_control.py:1262 #, python-format msgid "No help info for /%s" msgstr "Ingen hjelpe informasjon for /%s" -#: ../src/groupchat_control.py:1128 +#: ../src/groupchat_control.py:1304 #, python-format msgid "Are you sure you want to leave room \"%s\"?" msgstr "Er du sikker pÃ¥ at du vil gÃ¥ ut av rommet \"%s\"?" -#: ../src/groupchat_control.py:1129 +#: ../src/groupchat_control.py:1305 msgid "If you close this window, you will be disconnected from this room." msgstr "Dersom du lukker dette vinduet, sÃ¥ vil du bli koblet fra dette rommet." -#: ../src/groupchat_control.py:1133 +#: ../src/groupchat_control.py:1309 msgid "Do _not ask me again" msgstr "_Ikke spør meg igjen" -#: ../src/groupchat_control.py:1167 +#: ../src/groupchat_control.py:1343 msgid "Changing Subject" msgstr "Endrer Tittel" -#: ../src/groupchat_control.py:1168 +#: ../src/groupchat_control.py:1344 msgid "Please specify the new subject:" msgstr "Vennlist skriv inn ny tittel:" -#: ../src/groupchat_control.py:1176 +#: ../src/groupchat_control.py:1352 msgid "Changing Nickname" msgstr "Endrer Kallenavn" -#: ../src/groupchat_control.py:1177 +#: ../src/groupchat_control.py:1353 msgid "Please specify the new nickname you want to use:" msgstr "Vennlist skriv det nye kallenavnet du ønsker Ã¥ bruke:" -#: ../src/groupchat_control.py:1202 +#: ../src/groupchat_control.py:1379 msgid "Bookmark already set" msgstr "Bokmerke allerede satt" -#: ../src/groupchat_control.py:1203 +#: ../src/groupchat_control.py:1380 #, python-format msgid "Room \"%s\" is already in your bookmarks." msgstr "Rommet \"%s\" er allerede i dine bokmerker." -#: ../src/groupchat_control.py:1212 +#: ../src/groupchat_control.py:1389 msgid "Bookmark has been added successfully" msgstr "Bokmerke har blitt lagt til" -#: ../src/groupchat_control.py:1213 +#: ../src/groupchat_control.py:1390 msgid "You can manage your bookmarks via Actions menu in your roster." msgstr "Du kan behandle bokmerkene dine fra Handlinger menyen i kontaktlisten." #. ask for reason -#: ../src/groupchat_control.py:1322 +#: ../src/groupchat_control.py:1500 #, python-format msgid "Kicking %s" msgstr "Utkasting %s" -#: ../src/groupchat_control.py:1323 -#: ../src/groupchat_control.py:1568 +#: ../src/groupchat_control.py:1501 ../src/groupchat_control.py:1779 msgid "You may specify a reason below:" msgstr "Du kan spesifisere grunn under:" #. ask for reason -#: ../src/groupchat_control.py:1567 +#: ../src/groupchat_control.py:1778 #, python-format msgid "Banning %s" msgstr "Utvis %s" -#: ../src/gtkexcepthook.py:52 +#: ../src/gtkexcepthook.py:51 msgid "A programming error has been detected" msgstr "En programmerings feil har blitt detektert" -#: ../src/gtkexcepthook.py:53 -msgid "It probably is not fatal, but should be reported to the developers nonetheless." -msgstr "Det er sannynligvis ikke kritisk, men bør rapporteres til utviklerene likevel." +#: ../src/gtkexcepthook.py:52 +msgid "" +"It probably is not fatal, but should be reported to the developers " +"nonetheless." +msgstr "" +"Det er sannynligvis ikke kritisk, men bør rapporteres til utviklerene " +"likevel." -#: ../src/gtkexcepthook.py:59 +#: ../src/gtkexcepthook.py:58 msgid "_Report Bug" msgstr "_Rapporter Feil" -#: ../src/gtkexcepthook.py:82 +#: ../src/gtkexcepthook.py:81 msgid "Details" msgstr "Detaljer" -#. this always tracebacks -#: ../src/gtkgui.glade.h:1 -msgid "0" -msgstr "0" - -#: ../src/gtkgui.glade.h:2 -msgid "" -"Account is being created\n" -"\n" -"Please wait..." -msgstr "" -"Konto opprettes\n" -"\n" -"Vennligst vent..." - -#: ../src/gtkgui.glade.h:5 -msgid "Advanced Configuration Editor" -msgstr "Editering av Avanserte Instillinger" - -#: ../src/gtkgui.glade.h:6 -msgid "Applications" -msgstr "Applikasjoner" - -#: ../src/gtkgui.glade.h:7 -msgid "Chatstate Tab Colors" -msgstr "Samtalestatus Fane Farger" - -#. a header for custom browser/client/file manager. so translate sth like: Custom Settings -#: ../src/gtkgui.glade.h:9 -msgid "Custom" -msgstr "Egendefinert" - -#: ../src/gtkgui.glade.h:10 -msgid "Description" -msgstr "Beskrivelse" - -#: ../src/gtkgui.glade.h:11 -msgid "Format of a line" -msgstr "Utseende pÃ¥ en linje" - -#: ../src/gtkgui.glade.h:12 -msgid "Interface Customization" -msgstr "Grensenitt valg" - -#: ../src/gtkgui.glade.h:13 -msgid "Jabber Traffic" -msgstr "Jabber Trafikk" - -#: ../src/gtkgui.glade.h:14 -msgid "Miscellaneous" -msgstr "Diverse" - -#: ../src/gtkgui.glade.h:15 -msgid "NOTE: You should restart gajim for some setting to take effect" -msgstr "MERK: Du mÃ¥ starte gajim pÃ¥ nytt for Ã¥ aktivere noen instillinger" - -#: ../src/gtkgui.glade.h:16 -msgid "OpenPGP" -msgstr "OpenPGP" - -#: ../src/gtkgui.glade.h:17 -msgid "Personal Information" -msgstr "Personlig Informasjon" - -#: ../src/gtkgui.glade.h:18 -msgid "Please choose one of the options below:" -msgstr "Vennligst velg ett av valgene under:" - -#: ../src/gtkgui.glade.h:19 -msgid "Please fill in the data for your new account" -msgstr "Vennligst fyll in data for din nye konto" - -#: ../src/gtkgui.glade.h:20 -msgid "Preset Status Messages" -msgstr "Forvalgt Status Melding" - -#: ../src/gtkgui.glade.h:21 -msgid "Properties" -msgstr "Egenskaper" - -#: ../src/gtkgui.glade.h:22 -msgid "Settings" -msgstr "Instillinger" - -#: ../src/gtkgui.glade.h:23 -msgid "Sounds" -msgstr "Lyder" - -#: ../src/gtkgui.glade.h:24 -msgid "Type your new status message" -msgstr "Skriv inn din nye status melding:" - -#: ../src/gtkgui.glade.h:25 -msgid "Visual Notifications" -msgstr "Visuelle Alarmer" - -#: ../src/gtkgui.glade.h:26 -msgid "What do you want to do?" -msgstr "Hva ønsker du Ã¥ gjøre?" - -#: ../src/gtkgui.glade.h:27 -msgid "XML Input" -msgstr "XML Input" - -#: ../src/gtkgui.glade.h:28 -msgid "A list of active, completed and stopped file transfers" -msgstr "En liste over aktive, komplette og stoppede fil overføringer" - -#: ../src/gtkgui.glade.h:29 -msgid "A_ccounts" -msgstr "_Kontoer" - -#: ../src/gtkgui.glade.h:30 -msgid "A_fter nickname:" -msgstr "E_tter kallenavn:" - -#. "About" is the text of a tab of vcard window -#: ../src/gtkgui.glade.h:32 -msgid "About" -msgstr "Om" - -#: ../src/gtkgui.glade.h:33 -msgid "Accept" -msgstr "Godkjenn" - -#: ../src/gtkgui.glade.h:34 -msgid "Account" -msgstr "Konto" - -#: ../src/gtkgui.glade.h:35 -msgid "" -"Account\n" -"Group\n" -"Contact\n" -"Banner" -msgstr "" -"Konto\n" -"Gruppe\n" -"Kontakt\n" -"Fane" - -#: ../src/gtkgui.glade.h:39 -msgid "Account Modification" -msgstr "Konto Endring" - -#: ../src/gtkgui.glade.h:40 -msgid "Accounts" -msgstr "Kontoer" - -#: ../src/gtkgui.glade.h:42 -msgid "Add New Contact" -msgstr "Legg til ny Kontakt" - -#: ../src/gtkgui.glade.h:43 -msgid "Add Special _Notification" -msgstr "Legg til Spesiell _Alarm" - -#: ../src/gtkgui.glade.h:44 -msgid "Add _Contact" -msgstr "Ny _Kontakt" - -#: ../src/gtkgui.glade.h:45 -msgid "Address" -msgstr "Adresse" - -#: ../src/gtkgui.glade.h:46 -msgid "Advanced" -msgstr "Avansert" - -#: ../src/gtkgui.glade.h:47 -msgid "Advanced Configuration Editor" -msgstr "Avansert Konfigurasjons Editor" - -#: ../src/gtkgui.glade.h:48 -msgid "" -"All chat states\n" -"Composing only\n" -"Disabled" -msgstr "" -"Alle samtale statuser \n" -"Bare komponering \n" -"Deaktivert" - -#: ../src/gtkgui.glade.h:51 -msgid "Allow _OS information to be sent" -msgstr "Tillat _OS informasjon Ã¥ bli sendt" - -#: ../src/gtkgui.glade.h:52 -msgid "Allow him/her to see my status" -msgstr "Tillat han/henne Ã¥ se min status" - -#: ../src/gtkgui.glade.h:53 -msgid "Allow popup/notifications when I'm _away/na/busy/invisible" -msgstr "Tillat sprettopp/melding nÃ¥r jeg er _borte/ikke tilgjengelig/opptatt/usynlig" - -#: ../src/gtkgui.glade.h:54 -msgid "Also known as iChat style" -msgstr "OgsÃ¥ kjent som iChat stil" - -#: ../src/gtkgui.glade.h:55 -msgid "Ask status message when I:" -msgstr "Spør etter status melding nÃ¥r jeg:" - -#: ../src/gtkgui.glade.h:56 -msgid "Ask to see his/her status" -msgstr "Forespør hans/hennes status" - -#: ../src/gtkgui.glade.h:57 -msgid "Ask:" -msgstr "Spør:" - -#: ../src/gtkgui.glade.h:58 -msgid "Assign Open_PGP Key" -msgstr "Tilegn Open_PGP Nøkkel" - -#: ../src/gtkgui.glade.h:59 -msgid "Authorize contact so he can know when you're connected" -msgstr "Godkjenn kontakt sÃ¥ han kan vite nÃ¥r du er tilkoblet" - -#: ../src/gtkgui.glade.h:60 -msgid "Auto _away after:" -msgstr "Auto _borte etter:" - -#: ../src/gtkgui.glade.h:61 -msgid "Auto _not available after:" -msgstr "Auto _ikke tilgjengelig etter:" - -#: ../src/gtkgui.glade.h:62 -msgid "Auto join" -msgstr "Auto bli med" - -#: ../src/gtkgui.glade.h:63 -msgid "" -"Autodetect on every Gajim startup\n" -"Always use GNOME default applications\n" -"Always use KDE default applications\n" -"Custom" -msgstr "" -"Autodetekter hver gang Gajim starter\n" -"Alltid bruk GNOME standard applikasjoner\n" -"Alltid bruk KDE standard applikasjoner\n" -"Egendefinert" - -#: ../src/gtkgui.glade.h:67 -msgid "Automatically authorize contact" -msgstr "Automatisk godkjenn kontakt" - -#: ../src/gtkgui.glade.h:68 -msgid "Autoreconnect when connection is lost" -msgstr "Koble til pÃ¥ nytt automatisk nÃ¥r kontakten mistes" - -#: ../src/gtkgui.glade.h:69 -msgid "B_efore nickname:" -msgstr "F_ør kallenavn:" - -#: ../src/gtkgui.glade.h:70 -msgid "Birthday:" -msgstr "Fødselsdag:" - -#: ../src/gtkgui.glade.h:71 -msgid "Bold" -msgstr "Fet" - -#: ../src/gtkgui.glade.h:72 -msgid "Build custom query" -msgstr "Lag din egen spørring" - -#: ../src/gtkgui.glade.h:73 -msgid "C_onnect on Gajim startup" -msgstr "K_oble til nÃ¥r Gajim starter" - -#: ../src/gtkgui.glade.h:74 -msgid "Cancel file transfer" -msgstr "Avbryt filoverføring" - -#: ../src/gtkgui.glade.h:75 -msgid "Cancels the selected file transfer" -msgstr "Avbryter valgte filoverføring" - -#: ../src/gtkgui.glade.h:76 -msgid "Cancels the selected file transfer and removes incomplete file" -msgstr "Avbryter valgte filoverføring og fjerner den uferdige filen" - -#: ../src/gtkgui.glade.h:77 -msgid "Chan_ge Password" -msgstr "En_dre Passord" - -#: ../src/gtkgui.glade.h:78 -msgid "Change Password" -msgstr "Endre Passord" - -#: ../src/gtkgui.glade.h:79 -msgid "Change _Nickname" -msgstr "Endre _Kallenavn" - -#: ../src/gtkgui.glade.h:80 -msgid "Change _Subject" -msgstr "Endre _Tema" - -#: ../src/gtkgui.glade.h:82 -msgid "Chat state noti_fications:" -msgstr "Samtale status opp_lysninger:" - -#: ../src/gtkgui.glade.h:83 -msgid "Check this option, only if someone you don't have in the roster spams/annoys you. Use with caution, cause it blocks all messages from any contact that is not in the roster" -msgstr "Velg dette valget bare dersom noen i kontaktlisten spammer/irriterer deg. Bruk med varsomhet, fordi det blokkerer alle meldinger fra lle kontakter som ikke er i kontaktlisten" - -#: ../src/gtkgui.glade.h:84 -msgid "Check this so Gajim will connect in port 5223 where legacy servers are expected to have SSL capabilities. Note that Gajim uses TLS encryption by default if broadcasted by the server, and with this option enabled TLS will be disabled" -msgstr "Velg denne slik at Gajim vil prøve Ã¥ koble til port 5223 som gamle servere forventes Ã¥ ha SSL muligheter. Merk at Gajim bruker TLS kryptering som standard dersom dette tilbys av servere, og med dette valget blir TLS deaktivert." - -#: ../src/gtkgui.glade.h:85 -msgid "Choose _Key..." -msgstr "Velg _Nøkkel..." - -#: ../src/gtkgui.glade.h:86 -msgid "City:" -msgstr "By:" - -#: ../src/gtkgui.glade.h:87 -msgid "Clean _up" -msgstr "Rydd _opp" - -#: ../src/gtkgui.glade.h:88 -msgid "Click to change account's password" -msgstr "Klikk for Ã¥ forandre kontoens passord" - -#: ../src/gtkgui.glade.h:89 -msgid "Click to insert an emoticon (Alt+M)" -msgstr "Klikk for Ã¥ sette inn et uttrykksikon (Alt+M)" - -#: ../src/gtkgui.glade.h:90 -msgid "Click to see features (like MSN, ICQ transports) of jabber servers" -msgstr "Klikk for Ã¥ se tjenester (som MSN og ICQ transporter) pÃ¥ jabber serveren" - -#: ../src/gtkgui.glade.h:91 -msgid "Click to see past conversation in this room" -msgstr "Klikk for Ã¥ se tidligere samtaler i dette rommet" - -#: ../src/gtkgui.glade.h:92 -msgid "Click to see past conversations with this contact" -msgstr "Klikk for Ã¥ se tidligere samtaler med denne kontakten" - -#: ../src/gtkgui.glade.h:93 -msgid "Client:" -msgstr "Klient:" - -#: ../src/gtkgui.glade.h:94 -msgid "Company:" -msgstr "Bedrift:" - -#: ../src/gtkgui.glade.h:95 -msgid "Composing" -msgstr "Skriver" - -#: ../src/gtkgui.glade.h:96 -msgid "Configure _Room" -msgstr "Konfigurer _Rom" - -#: ../src/gtkgui.glade.h:97 -msgid "Connect when I press Finish" -msgstr "Koble til nÃ¥r jeg klikker Ferdig" - -#: ../src/gtkgui.glade.h:98 -msgid "Connection" -msgstr "Tilkobling" - -#: ../src/gtkgui.glade.h:99 -msgid "Contact Information" -msgstr "Kontaktinformasjon" - -#: ../src/gtkgui.glade.h:100 -msgid "Contact _Info" -msgstr "Kontakt_Info" - -#: ../src/gtkgui.glade.h:101 -msgid "Conversation History" -msgstr "Samtale Historikk" - -#: ../src/gtkgui.glade.h:102 -msgid "Country:" -msgstr "Land:" - -#: ../src/gtkgui.glade.h:103 -msgid "Default status _iconset:" -msgstr "Standard status _ikonsamling:" - -#: ../src/gtkgui.glade.h:104 -msgid "Delete MOTD" -msgstr "Slett MFD (MOTD)" - -#: ../src/gtkgui.glade.h:105 -msgid "Deletes Message of the Day" -msgstr "Sletter Meling for Dagen" - -#: ../src/gtkgui.glade.h:106 -msgid "Deny" -msgstr "Nekt" - -#: ../src/gtkgui.glade.h:107 -msgid "Deny authorization from contact so he cannot know when you're connected" -msgstr "AvslÃ¥ godkjenning fra kontakt sÃ¥ han ikke kan se nÃ¥r du er tilkoblet" - -#: ../src/gtkgui.glade.h:108 -msgid "Department:" -msgstr "Avdeling:" - -#: ../src/gtkgui.glade.h:109 -msgid "Display a_vatars of contacts in roster" -msgstr "Viser _kontaktikoner for kontakter i kontaktlisten" - -#: ../src/gtkgui.glade.h:110 -msgid "Display status _messages of contacts in roster" -msgstr "Viser status _meldinger for kontakter i kontaktlisten" - -#: ../src/gtkgui.glade.h:111 -msgid "E-Mail:" -msgstr "E-Post:" - -#: ../src/gtkgui.glade.h:112 -msgid "E_very 5 minutes" -msgstr "H_vert 5 minutt" - -#: ../src/gtkgui.glade.h:113 -msgid "Edit Groups" -msgstr "Rediger Grupper" - -#: ../src/gtkgui.glade.h:114 -msgid "Edit Personal Information..." -msgstr "Rediger Personlig Informasjon..." - -#: ../src/gtkgui.glade.h:115 -msgid "Edit _Groups" -msgstr "Rediger _Grupper" - -#: ../src/gtkgui.glade.h:116 -msgid "Emoticons:" -msgstr "Uttrykksikoner:" - -#. XML Console enable checkbutton -#: ../src/gtkgui.glade.h:118 -msgid "Enable" -msgstr "SlÃ¥ pÃ¥" - -#: ../src/gtkgui.glade.h:119 -msgid "Enter it again for confirmation:" -msgstr "Skriv inn en gang til for verifisering:" - -#: ../src/gtkgui.glade.h:120 -msgid "Enter new password:" -msgstr "Skriv inn nytt passord:" - -#: ../src/gtkgui.glade.h:121 -msgid "Events" -msgstr "Hendelser" - -#: ../src/gtkgui.glade.h:122 -msgid "Extra Address:" -msgstr "Ekstra Adresse:" - -#. Family Name -#: ../src/gtkgui.glade.h:124 -msgid "Family:" -msgstr "Etternavn:" - -#: ../src/gtkgui.glade.h:125 -msgid "File Transfers" -msgstr "Fil Overføringer" - -#: ../src/gtkgui.glade.h:126 -msgid "File _Transfers" -msgstr "Fil _Overføringer" - -#: ../src/gtkgui.glade.h:127 -msgid "Filter:" -msgstr "Filter:" - -#: ../src/gtkgui.glade.h:128 -msgid "Font style:" -msgstr "Font stil:" - -#: ../src/gtkgui.glade.h:129 -msgid "Forbid him/her to see my status" -msgstr "Forby han/henne Ã¥ se min status" - -#: ../src/gtkgui.glade.h:130 -msgid "Format: YYYY-MM-DD" -msgstr "Format: YYYY-MM-DD" - -#: ../src/gtkgui.glade.h:131 -msgid "Frequently Asked Questions (online)" -msgstr "Ofte Stilte SpørsmÃ¥l (online)" - -#: ../src/gtkgui.glade.h:132 -msgid "From:" -msgstr "Fra:" - -#: ../src/gtkgui.glade.h:133 -msgid "G_o" -msgstr "G_Ã¥" - -#: ../src/gtkgui.glade.h:134 -#: ../src/notify.py:167 -#: ../src/notify.py:189 -#: ../src/notify.py:201 -#: ../src/tooltips.py:339 -msgid "Gajim" -msgstr "Gajim" - -#: ../src/gtkgui.glade.h:135 -msgid "Gajim Themes Customization" -msgstr "Gajim Tema Valg" - -#: ../src/gtkgui.glade.h:136 -msgid "Gajim can send and receive meta-information related to a conversation you may have with a contact. Here you can specify which chatstates you want to send to the other party." -msgstr "Gajim kan sende og motta meta-informasjon relatert til en samtale du kan ha med en kontakt. Her kan du spesifisere hvilke samtalestatuser du ønsker Ã¥ sende motparten." - -#: ../src/gtkgui.glade.h:137 -msgid "Gajim will automatically show new events by poping up the relative window" -msgstr "Gajim vil autmatisk vise deg den nye hendelser ved Ã¥ sprette opp det relative vinduet" - -#: ../src/gtkgui.glade.h:138 -msgid "Gajim will notify you for new events via a popup in the bottom right of the screen" -msgstr "Gajim vil alarmere deg med sprett-opp vindu i bunnen til høyre pÃ¥ skjermen" - -#: ../src/gtkgui.glade.h:139 -msgid "Gajim will notify you via a popup window in the bottom right of the screen about contacts that just signed in" -msgstr "Gajim vil alarmere deg med sprett-opp vindu i bunnen til høyre pÃ¥ skjermen om at en kontakt har akkurat logget inn" - -#: ../src/gtkgui.glade.h:140 -msgid "Gajim will notify you via a popup window in the bottom right of the screen about contacts that just signed out" -msgstr "Gajim vil alarmere deg med sprett-opp vindu i bunnen til høyre pÃ¥ skjermen om at en kontakt har akkurat logget ut" - -#: ../src/gtkgui.glade.h:141 -msgid "Gajim will only change the icon of the contact that triggered the new event" -msgstr "Gajim vil bare endre ikonet til kontakten som har sendt den nye hendelsen" - -#: ../src/gtkgui.glade.h:142 -msgid "Gajim: Account Creation Wizard" -msgstr "Gajim: Konto Opprettings Veiviser" - -#. user has no group, print him in General -#: ../src/gtkgui.glade.h:143 -#: ../src/roster_window.py:291 -#: ../src/roster_window.py:1183 -#: ../src/roster_window.py:1405 -#: ../src/systray.py:286 -msgid "General" -msgstr "Generelle" - -#. Given Name -#: ../src/gtkgui.glade.h:145 -msgid "Given:" -msgstr "Fornavn:" - -#: ../src/gtkgui.glade.h:146 -msgid "Gone" -msgstr "Borte" - -#: ../src/gtkgui.glade.h:147 -msgid "Group:" -msgstr "Gruppe:" - -#: ../src/gtkgui.glade.h:148 -msgid "HTTP Connect" -msgstr "HTTP Connect" - -#: ../src/gtkgui.glade.h:149 -msgid "Help online" -msgstr "Hjelp online" - -#: ../src/gtkgui.glade.h:150 -msgid "Hides the window" -msgstr "Lukker vinduet" - -#: ../src/gtkgui.glade.h:151 -msgid "Homepage:" -msgstr "Hjemmeside:" - -#: ../src/gtkgui.glade.h:152 -msgid "Hostname: " -msgstr "Maskinnavn:" - -#: ../src/gtkgui.glade.h:153 -msgid "I already have an account I want to use" -msgstr "Jeg har allerede en konto jeg ønsker Ã¥ bruke" - -#: ../src/gtkgui.glade.h:154 -msgid "I want to _register for a new account" -msgstr "Jeg ønsker Ã¥ _registrere en ny konto" - -#: ../src/gtkgui.glade.h:155 -msgid "I would like to add you to my contact list." -msgstr "Jeg vil legge deg til min kontaktliste." - -#: ../src/gtkgui.glade.h:156 -msgid "If checked, Gajim will also broadcast some more IPs except from just your IP, so file transfer has higher chances of working right." -msgstr "Dersom valgt vil Gajim sende ut flere IPer utover din IP sÃ¥ filoverføringen har større mulighet for Ã¥ fungere. " - -#: ../src/gtkgui.glade.h:157 -msgid "If checked, Gajim will display avatars of contacts in roster window and in group chats" -msgstr "Dersom valgt vil Gajim vise ikonbilder for kontakter i kontaktliste vinduet og i gruppesamtaler" - -#: ../src/gtkgui.glade.h:158 -msgid "If checked, Gajim will display status messages of contacts under the contact name in roster window and in group chats" -msgstr "Dersom valg vil Gajim vise status melding til kontakter under kontakt navnet i kontaktliste vinduet og i gruppesamtaler" - -#: ../src/gtkgui.glade.h:159 -msgid "If checked, Gajim will join this group chat on startup" -msgstr "Dersom valgt vil Gajim automatisk gÃ¥ inn i gruppesamtalen ved oppstart" - -#: ../src/gtkgui.glade.h:160 -msgid "If checked, Gajim will remember the password for this account" -msgstr "Dersom valgt vil Gajim huske passordet for kontoen" - -#: ../src/gtkgui.glade.h:161 -msgid "If checked, Gajim will remember the roster and chat window positions in the screen and the sizes of them next time you run it" -msgstr "Dersom valgt vil Gajim huske kontaktliste og samtalevindu posisjoner pÃ¥ skjermen, samt størrelsen pÃ¥ de til neste gang du Ã¥pner de" - -#: ../src/gtkgui.glade.h:162 -msgid "If checked, Gajim will send keep-alive packets so it prevents connection timeout which results in disconnection" -msgstr "Dersom valgt vil Gajim sende hold-i-live pakker sÃ¥ man ikke fÃ¥r en frakobling pÃ¥ grunn av inaktivitet" - -#: ../src/gtkgui.glade.h:163 -msgid "If checked, Gajim will store the password in ~/.gajim/config with 'read' permission only for you" -msgstr "Dersom valgt vil Gajim lagre passord i ~/.gajim/config med 'les' rettighet bare for deg" - -#: ../src/gtkgui.glade.h:164 -msgid "If checked, Gajim will use protocol-specific status icons. (eg. A contact from MSN will have the equivalent msn icon for status online, away, busy, etc...)" -msgstr "Dersom valgt vil Gajim bruke protkoll-spesifikke ikoner. (En kontakt fra MSN vil ha msn ikoner for status pÃ¥logget, borte, opptatt, osv...)" - -#: ../src/gtkgui.glade.h:165 -msgid "If checked, Gajim, when launched, will automatically connect to jabber using this account" -msgstr "Dersom valgt, vil Gajim automatisk koble seg til jabber med denne kontoen ved oppstart" - -#: ../src/gtkgui.glade.h:166 -msgid "If checked, any change to the global status (handled by the combobox at the bottom of the roster window) will change the status of this account accordingly" -msgstr "Dersom valgt vil endringer til global status (hÃ¥ndtert av kombomenyen nederst i kontaktvinduet) endre status pÃ¥ denne kontoen. " - -#: ../src/gtkgui.glade.h:167 -msgid "If not disabled, Gajim will replace ascii smilies like ':)' with equivalent animated or static graphical emoticons" -msgstr "Dersom ikke deaktiver, vil Gajim bytte ut ascii smil som ':)' med animerte eller statiske grafiske uttrykksikoner" - -#: ../src/gtkgui.glade.h:168 -msgid "If you have 2 or more accounts and it is checked, Gajim will list all contacts as if you had one account" -msgstr "Dersom du har 2 eller flere kontoer og denne er valgt, vil Gajim liste alle kontakter som om du hadde en konto" - -#: ../src/gtkgui.glade.h:169 -msgid "Inactive" -msgstr "Inaktiv" - -#. Info/Query make the "IQ" initials. So translate like this 'YourLang/YourLang (Info/Query)'. Thanks (it's a tooltip so width is not a problem) -#: ../src/gtkgui.glade.h:171 -msgid "Info/Query" -msgstr "Informasjon/Spørring" - -#: ../src/gtkgui.glade.h:172 -msgid "Information about you, as stored in the server" -msgstr "Informasjon om deg, slik som den er lagret pÃ¥ serveren" - -#: ../src/gtkgui.glade.h:173 -msgid "Invitation Received" -msgstr "Invitasjon motatt" - -#: ../src/gtkgui.glade.h:174 -msgid "Italic" -msgstr "Kursiv" - -#: ../src/gtkgui.glade.h:175 -msgid "Jabber" -msgstr "Jabber" - -#: ../src/gtkgui.glade.h:176 -msgid "Jabber ID:" -msgstr "Jabber ID:" - -#: ../src/gtkgui.glade.h:178 -msgid "Join _Group Chat" -msgstr "Bli med i _Gruppe Samtale" - -#: ../src/gtkgui.glade.h:179 -msgid "Location" -msgstr "Plassering" - -#: ../src/gtkgui.glade.h:180 -msgid "" -"MUC\n" -"Messages" -msgstr "" -"MUC\n" -"Meldinger" - -#: ../src/gtkgui.glade.h:182 -msgid "" -"MUC Directed\n" -"Messages" -msgstr "" -"MUC Sendte\n" -"Meldinger" - -#: ../src/gtkgui.glade.h:184 -msgid "Ma_nage..." -msgstr "Be_handle..." - -#: ../src/gtkgui.glade.h:185 -msgid "Manage Accounts" -msgstr "Behandle Kontoer" - -#: ../src/gtkgui.glade.h:186 -msgid "Manage Bookmarks" -msgstr "Behandle Bokmerker" - -#: ../src/gtkgui.glade.h:187 -msgid "Manage Proxy Profiles" -msgstr "Behandle Proxy Profiler" - -#: ../src/gtkgui.glade.h:188 -msgid "Manage..." -msgstr "Behandle..." - -#. Middle Name -#: ../src/gtkgui.glade.h:190 -msgid "Middle:" -msgstr "Mellomnavn:" - -#: ../src/gtkgui.glade.h:191 -msgid "Mo_derator" -msgstr "M_odererer" - -#: ../src/gtkgui.glade.h:192 -msgid "More" -msgstr "Mer" - -#: ../src/gtkgui.glade.h:193 -msgid "Name:" -msgstr "Navn:" - -#: ../src/gtkgui.glade.h:194 -msgid "" -"Never\n" -"Always\n" -"Per account\n" -"Per type" -msgstr "" -"Aldri\n" -"Alltid\n" -"Per konto\n" -"Per type" - -#: ../src/gtkgui.glade.h:198 -msgid "Nickname:" -msgstr "Kallenavn:" - -#. None means no proxy profile selected -#: ../src/gtkgui.glade.h:201 -msgid "None" -msgstr "Ingen" - -#: ../src/gtkgui.glade.h:202 -msgid "Notify me about contacts that: " -msgstr "Alarmer meg om kontakter som:" - -#: ../src/gtkgui.glade.h:203 -msgid "Notify on new _Gmail e-mail" -msgstr "Alarmer meg on nye _Gmail e-post" - -#: ../src/gtkgui.glade.h:204 -msgid "OS:" -msgstr "OS:" - -#: ../src/gtkgui.glade.h:205 -msgid "On every _message" -msgstr "PÃ¥ hver _melding" - -#: ../src/gtkgui.glade.h:206 -msgid "One message _window:" -msgstr "En melding _vindu:" - -#: ../src/gtkgui.glade.h:208 -msgid "Pass_word:" -msgstr "Pass_ord:" - -#: ../src/gtkgui.glade.h:209 -msgid "Passphrase" -msgstr "Passord setning" - -#: ../src/gtkgui.glade.h:210 -msgid "Password:" -msgstr "Passord:" - -#: ../src/gtkgui.glade.h:211 -#: ../src/tooltips.py:645 -msgid "Paused" -msgstr "Pauset" - -#: ../src/gtkgui.glade.h:212 -msgid "Personal Information" -msgstr "Personlig Informasjon" - -#: ../src/gtkgui.glade.h:213 -msgid "Phone No.:" -msgstr "Telefon Nummer:" - -#: ../src/gtkgui.glade.h:214 -msgid "Play _sounds" -msgstr "Spill av _lyder" - -#: ../src/gtkgui.glade.h:215 -msgid "Port: " -msgstr "Port:" - -#: ../src/gtkgui.glade.h:216 -msgid "Position:" -msgstr "Plassering:" - -#: ../src/gtkgui.glade.h:217 -msgid "Postal Code:" -msgstr "Post Kode:" - -#: ../src/gtkgui.glade.h:218 -msgid "Preferences" -msgstr "Tilstedeværelse" - -#. Prefix in Name -#: ../src/gtkgui.glade.h:220 -msgid "Prefix:" -msgstr "Tittel:" - -#: ../src/gtkgui.glade.h:221 -msgid "Preset messages:" -msgstr "Forvalgte meldinger:" - -#: ../src/gtkgui.glade.h:222 -msgid "Print time:" -msgstr "Utskrifts tid:" - -#: ../src/gtkgui.glade.h:223 -msgid "Priori_ty:" -msgstr "Priorit_et:" - -#: ../src/gtkgui.glade.h:224 -msgid "Priority is used in Jabber to determine who gets the events from the jabber server when two or more clients are connected using the same account; The client with the highest priority gets the events" -msgstr "Prioritet brukes av Jabber for Ã¥ finne ut hvem som skal fÃ¥ hendelser fra jabber serveren nÃ¥r to eller flere klienter er tilkoblet med samme konto. Klienten med den høyeste prioriteten vil fÃ¥ hendelsen" - -#: ../src/gtkgui.glade.h:225 -msgid "Profile, Avatar" -msgstr "Profil, Bilde" - -#: ../src/gtkgui.glade.h:226 -msgid "Protocol:" -msgstr "Protokoll:" - -#: ../src/gtkgui.glade.h:227 -msgid "Proxy:" -msgstr "Proxy:" - -#: ../src/gtkgui.glade.h:228 -msgid "Query Builder..." -msgstr "Spørrings Bygger..." - -#: ../src/gtkgui.glade.h:229 -msgid "Recently:" -msgstr "Nylig:" - -#: ../src/gtkgui.glade.h:230 -msgid "Register to" -msgstr "Registrer til:" - -#: ../src/gtkgui.glade.h:231 -msgid "Remove account _only from Gajim" -msgstr "Fjern kontoe _bare fra Gajim" - -#: ../src/gtkgui.glade.h:232 -msgid "Remove account from Gajim and from _server" -msgstr "Fjern konto fra Gajim og fra _serveren" - -#: ../src/gtkgui.glade.h:233 -msgid "Remove file transfer from the list." -msgstr "Fjern filoverføringen fra listen" - -#: ../src/gtkgui.glade.h:234 -msgid "Removes completed, canceled and failed file transfers from the list" -msgstr "Fjerner komplette, avbrutte og feilede filoverføringer fra listen" - -#: ../src/gtkgui.glade.h:235 -msgid "Reply to this message" -msgstr "Svar pÃ¥ denne meldingen" - -#: ../src/gtkgui.glade.h:236 -msgid "Resour_ce: " -msgstr "Ressu_rs:" - -#: ../src/gtkgui.glade.h:237 -msgid "Resource is sent to the Jabber server in order to separate the same JID in two or more parts depending on the number of the clients connected in the same server with the same account. So you might be connected in the same account with resource 'Home' and 'Work' at the same time. The resource which has the highest priority will get the events. (see below)" -msgstr "Ressurs navnet blir sendt til Jabber serveren for Ã¥ separere JID'en din i to eller flere deler alt etter hvor mange ganger du er tilkoblet til serveren (samtidig). Dette gjør at du kan være tilkoblet med samme konto med ressurs navn 'Hjeme' og 'Jobb' pÃ¥ samme tid. Ressursen med høyest prioritet vil fÃ¥ hendelsene. (se under)" - -#: ../src/gtkgui.glade.h:238 -msgid "Resource:" -msgstr "Ressurs:" - -#: ../src/gtkgui.glade.h:239 -msgid "Role:" -msgstr "Rolle:" - -#: ../src/gtkgui.glade.h:240 -msgid "Room Configuration" -msgstr "Rom Instillinger" - -#: ../src/gtkgui.glade.h:241 -msgid "Room:" -msgstr "Rom:" - -#: ../src/gtkgui.glade.h:242 -msgid "Save _passphrase (insecure)" -msgstr "Lagre _passord setning (usikkert)" - -#: ../src/gtkgui.glade.h:243 -msgid "Save _position and size for roster and chat windows" -msgstr "Lagre _posisjon og størrelse for kontaktliste og samtalevinduer" - -#: ../src/gtkgui.glade.h:244 -msgid "Save as Preset..." -msgstr "Lagre som Forvalg..." - -#: ../src/gtkgui.glade.h:245 -msgid "Save conversation _logs for all contacts" -msgstr "Lagre samtale _logger for alle kontakter" - -#: ../src/gtkgui.glade.h:246 -msgid "Save pass_word" -msgstr "Lagre pass_ord" - -#: ../src/gtkgui.glade.h:247 -msgid "Search" -msgstr "Søk" - -#: ../src/gtkgui.glade.h:248 -msgid "Sen_d" -msgstr "Sen_d" - -#: ../src/gtkgui.glade.h:249 -msgid "Send File" -msgstr "Send Fil" - -#: ../src/gtkgui.glade.h:250 -msgid "Send Single _Message" -msgstr "Send _Melding" - -#: ../src/gtkgui.glade.h:251 -msgid "Send Single _Message..." -msgstr "Send Enkel _Melding..." - -#: ../src/gtkgui.glade.h:252 -msgid "Send _File" -msgstr "Send _Fil" - -#: ../src/gtkgui.glade.h:253 -msgid "Send keep-alive packets" -msgstr "Send hold-i-live meldinger" - -#: ../src/gtkgui.glade.h:254 -msgid "Send message" -msgstr "Send melding" - -#: ../src/gtkgui.glade.h:255 -msgid "Send message and close window" -msgstr "Send melding og lukk vinduet" - -#: ../src/gtkgui.glade.h:256 -msgid "Sends a message to currently connected users to this server" -msgstr "Sender en melding til tilkoblede brukere pÃ¥ denne serveren" - -#: ../src/gtkgui.glade.h:257 -msgid "Server:" -msgstr "Server:" - -#: ../src/gtkgui.glade.h:258 -msgid "Servers Features" -msgstr "Server Funksjonalitet" - -#: ../src/gtkgui.glade.h:259 -msgid "Set MOTD" -msgstr "Velg MFD (MOTD)" - -#: ../src/gtkgui.glade.h:260 -msgid "Set _Avatar" -msgstr "Velg _Avatar" - -#: ../src/gtkgui.glade.h:261 -msgid "Set my profile when I connect" -msgstr "Klargjør profilen min nÃ¥r jeg kobler til" - -#: ../src/gtkgui.glade.h:262 -msgid "Sets Message of the Day" -msgstr "Setter Melding for Dagen" - -#: ../src/gtkgui.glade.h:263 -msgid "Show All Pending _Events" -msgstr "Vis Alle _Handlinger som Venter" - -#: ../src/gtkgui.glade.h:264 -msgid "Show _Offline Contacts" -msgstr "Vis _Frakoblede Kontakter" - -#: ../src/gtkgui.glade.h:265 -msgid "Show _Roster" -msgstr "Vis _Kontaktliste" - -#: ../src/gtkgui.glade.h:266 -msgid "Show _XML Console" -msgstr "Vis _XML Konsoll" - -#: ../src/gtkgui.glade.h:267 -msgid "Show only in _roster" -msgstr "Vis bare i _kontaktliste" - -#: ../src/gtkgui.glade.h:268 -msgid "Shows a list of file transfers between you and other" -msgstr "Viser en liste over overføringer mellom deg og andre" - -#: ../src/gtkgui.glade.h:269 -msgid "Sign _in" -msgstr "Logger _inn" - -#: ../src/gtkgui.glade.h:270 -msgid "Sign _out" -msgstr "Logger _ut" - -#: ../src/gtkgui.glade.h:271 -msgid "Sta_tus" -msgstr "Sta_tus" - -#: ../src/gtkgui.glade.h:272 -msgid "Start _Chat" -msgstr "Start _Samtale" - -#: ../src/gtkgui.glade.h:273 -msgid "State:" -msgstr "Fylke:" - -#: ../src/gtkgui.glade.h:274 -msgid "Status" -msgstr "Status" - -#: ../src/gtkgui.glade.h:275 -msgid "Status:" -msgstr "Status:" - -#: ../src/gtkgui.glade.h:276 -msgid "Street:" -msgstr "Gate:" - -#: ../src/gtkgui.glade.h:277 -msgid "Subject:" -msgstr "Tema:" - -#: ../src/gtkgui.glade.h:278 -msgid "Subscription Request" -msgstr "Abbonerings Forespørsel" - -#: ../src/gtkgui.glade.h:279 -msgid "Subscription:" -msgstr "Abbonement:" - -#. Suffix in Name -#: ../src/gtkgui.glade.h:281 -msgid "Suffix:" -msgstr "Suffix:" - -#: ../src/gtkgui.glade.h:282 -msgid "Synch_ronize account status with global status" -msgstr "Synk_roniser konto status med global status" - -#: ../src/gtkgui.glade.h:283 -msgid "T_heme:" -msgstr "T_ema:" - -#: ../src/gtkgui.glade.h:284 -msgid "Text _color:" -msgstr "Tekst _farge:" - -#: ../src/gtkgui.glade.h:285 -msgid "Text _font:" -msgstr "Tekst _font:" - -#: ../src/gtkgui.glade.h:286 -msgid "The auto away status message" -msgstr "Den automatiserte borte meldinen" - -#: ../src/gtkgui.glade.h:287 -msgid "The auto not available status message" -msgstr "Den autmatiserte ikke tilgjengelig meldingen" - -#: ../src/gtkgui.glade.h:288 -msgid "This action removes single file transfer from the list. If the transfer is active, it is first stopped and then removed" -msgstr "Dette valget fjerner en filoverføring fra listen. Dersom den er aktiv vil den først bli stoppet og sÃ¥ fjernet." - -#: ../src/gtkgui.glade.h:289 -msgid "Title:" -msgstr "Tittel:" - -#: ../src/gtkgui.glade.h:290 -msgid "To:" -msgstr "Til:" - -#: ../src/gtkgui.glade.h:291 -msgid "Toggle Open_PGP Encryption" -msgstr "Endre Open_PGP Kryptering" - -#: ../src/gtkgui.glade.h:292 -msgid "Type:" -msgstr "Skriv:" - -#: ../src/gtkgui.glade.h:293 -msgid "Underline" -msgstr "Strek Under" - -#: ../src/gtkgui.glade.h:294 -msgid "Update MOTD" -msgstr "Oppdater MFD (MOTD)" - -#: ../src/gtkgui.glade.h:295 -msgid "Updates Message of the Day" -msgstr "Uppdaterer Melding for Dagen" - -#: ../src/gtkgui.glade.h:296 -msgid "Use _SSL (legacy)" -msgstr "Bruk _SSL (gammel)" - -#: ../src/gtkgui.glade.h:297 -msgid "Use _transports iconsets" -msgstr "Bruk _transportenes ikoner" - -#: ../src/gtkgui.glade.h:298 -msgid "Use authentication" -msgstr "Bruk autentisering" - -#: ../src/gtkgui.glade.h:299 -msgid "Use custom hostname/port" -msgstr "Bruk egendefinert maskinnavn/port" - -#: ../src/gtkgui.glade.h:300 -msgid "Use file transfer proxies" -msgstr "Bruk filoverførings proxier" - -#: ../src/gtkgui.glade.h:301 -msgid "Use t_rayicon (aka. notification area icon)" -msgstr "Bruk Ikon i s_ystemstatusfelt (ogsÃ¥ kjent som systray)" - -#: ../src/gtkgui.glade.h:302 -msgid "User ID:" -msgstr "Bruker ID:" - -#: ../src/gtkgui.glade.h:303 -msgid "When a file transfer is complete show a popup notification" -msgstr "NÃ¥r en fil overføring er komplett vis en sprettopp informasjon" - -#: ../src/gtkgui.glade.h:304 -msgid "When a new event (message, file transfer request etc..) is received, the following methods may be used to inform you about it. Please note that events about new messages only occur if it is a new message from a contact you are not already chatting with" -msgstr "NÃ¥r en ny hendelse (melding, fil overføring osv.) blir motatt, vil følgende metoder kunne bli brukt for Ã¥ informere deg om det. Vennligst merk at ny melding hendelser vil bare skje dersom du fÃ¥r en ny melding fra en kontakt du ikke er i samtale med." - -#: ../src/gtkgui.glade.h:305 -msgid "When new event is received" -msgstr "NÃ¥r en ny hendelse blir motatt" - -#: ../src/gtkgui.glade.h:306 -msgid "Work" -msgstr "Jobb" - -#: ../src/gtkgui.glade.h:307 -msgid "" -"You need to have an account in order to connect\n" -"to the Jabber network." -msgstr "" -"Du trenger en konto før du kan koble\n" -"til Jabber nettverket." - -#: ../src/gtkgui.glade.h:309 -msgid "Your JID:" -msgstr "Din JID:" - -#. Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector) -#: ../src/gtkgui.glade.h:311 -msgid "_Actions" -msgstr "_Handlinger" - -#: ../src/gtkgui.glade.h:312 -msgid "_Add Contact..." -msgstr "_Legg til Kontakt..." - -#: ../src/gtkgui.glade.h:313 -msgid "_Add to Roster" -msgstr "_Legg til Kontaktliste" - -#: ../src/gtkgui.glade.h:314 -msgid "_Address:" -msgstr "_Adresse:" - -#: ../src/gtkgui.glade.h:315 -msgid "_Admin" -msgstr "_Admin" - -#: ../src/gtkgui.glade.h:316 -msgid "_Administrator" -msgstr "_Administrator" - -#: ../src/gtkgui.glade.h:317 -msgid "_Advanced" -msgstr "_Avansert" - -#: ../src/gtkgui.glade.h:318 -msgid "_After time:" -msgstr "_Etter tid:" - -#: ../src/gtkgui.glade.h:319 -msgid "_Authorize" -msgstr "_Godkjenn" - -#: ../src/gtkgui.glade.h:320 -msgid "_Background:" -msgstr "_Bakgrunn:" - -#: ../src/gtkgui.glade.h:321 -msgid "_Ban" -msgstr "_Utvis" - -#: ../src/gtkgui.glade.h:322 -msgid "_Before time:" -msgstr "_Før tid:" - -#: ../src/gtkgui.glade.h:323 -msgid "_Bookmark This Room" -msgstr "Lag _Bokmerke til Rommet" - -#: ../src/gtkgui.glade.h:324 -msgid "_Browser:" -msgstr "_Nettleser:" - -#: ../src/gtkgui.glade.h:325 -msgid "_Cancel" -msgstr "_Avbryt" - -#: ../src/gtkgui.glade.h:326 -msgid "_Compact View Alt+C" -msgstr "_Kompakt Utseende Alt+C" - -#: ../src/gtkgui.glade.h:327 -msgid "_Contents" -msgstr "_Innhold" - -#: ../src/gtkgui.glade.h:329 -msgid "_Copy JID/Email Address" -msgstr "_Kopier JID/E-post Adresse" - -#: ../src/gtkgui.glade.h:330 -msgid "_Copy Link Location" -msgstr "_Kopier Link PLassering" - -#: ../src/gtkgui.glade.h:331 -msgid "_Deny" -msgstr "_Nekt" - -#: ../src/gtkgui.glade.h:332 -msgid "_Discover Services" -msgstr "_Oppdag Tjenester" - -#: ../src/gtkgui.glade.h:333 -msgid "_Discover Services..." -msgstr "_Oppdag Tjenester..." - -#: ../src/gtkgui.glade.h:335 -msgid "_FAQ" -msgstr "_FAQ" - -#: ../src/gtkgui.glade.h:336 -msgid "_File manager:" -msgstr "_Fil behandler:" - -#: ../src/gtkgui.glade.h:337 -msgid "_Filter:" -msgstr "_Filter:" - -#: ../src/gtkgui.glade.h:338 -msgid "_Finish" -msgstr "_Avslutt" - -#: ../src/gtkgui.glade.h:339 -msgid "_Font:" -msgstr "_Font:" - -#: ../src/gtkgui.glade.h:340 -msgid "_Group Chat" -msgstr "_Gruppe Samtale" - -#: ../src/gtkgui.glade.h:341 -msgid "_Help" -msgstr "_Hjelp" - -#: ../src/gtkgui.glade.h:342 -msgid "_Highlight misspelled words" -msgstr "_Uthev feilstavede ord" - -#: ../src/gtkgui.glade.h:343 -msgid "_History" -msgstr "_Historie" - -#: ../src/gtkgui.glade.h:344 -msgid "_Host:" -msgstr "_Maskin:" - -#. Info/Query: all(?) jabber xml start with Welcome to Gajim History Logs Manager\n" -"\n" -"You can select logs from the left and/or search database from below.\n" -"\n" -"WARNING:\n" -"If you plan to do massive deletions, please make sure Gajim is not running. Generally avoid deletions with contacts you currently chat with." +#: ../src/gtkgui_helpers.py:717 +msgid "Extension not supported" msgstr "" -"Velkommen til Gajim Historiske Logg Behandler\n" -"\n" -"Du kan velge logger fra venstre og/eller søke databasen under.\n" -"\n" -"ADVARSEL:\n" -"Dersom du planlegger Ã¥ gjøre store slette operasjoner, pass pÃ¥ at Gajim ikke kjører. Generelt bør man unngÃ¥ Ã¥ slette fra kontakter du er i samtale med." -#: ../src/history_manager.glade.h:7 -msgid "Delete" -msgstr "Slett" +#: ../src/gtkgui_helpers.py:718 +#, python-format +msgid "Image cannot be saved in %(type)s format. Save as %(new_filename)s?" +msgstr "" -#: ../src/history_manager.glade.h:8 -msgid "Export" -msgstr "Eksport" +#: ../src/gtkgui_helpers.py:727 +#, fuzzy +msgid "Save Image as..." +msgstr "Lagre Fil som..." -#: ../src/history_manager.glade.h:9 -msgid "Gajim History Logs Manager" -msgstr "Gajim Historske Logg Behandler" - -#: ../src/history_manager.glade.h:10 -msgid "_Search Database" -msgstr "_Søk Databasen" - -#: ../src/history_manager.py:58 +#: ../src/history_manager.py:61 msgid "Cannot find history logs database" msgstr "Kan ikke finne historisk logg database" #. holds jid -#: ../src/history_manager.py:102 +#: ../src/history_manager.py:104 msgid "Contacts" msgstr "Kontakter" #. holds time -#: ../src/history_manager.py:115 -#: ../src/history_manager.py:155 -#: ../src/history_window.py:94 +#: ../src/history_manager.py:117 ../src/history_manager.py:157 +#: ../src/history_window.py:85 msgid "Date" msgstr "Dato" #. holds nickname -#: ../src/history_manager.py:121 -#: ../src/history_manager.py:173 +#: ../src/history_manager.py:123 ../src/history_manager.py:175 msgid "Nickname" msgstr "Kallenavn" #. holds message -#: ../src/history_manager.py:129 -#: ../src/history_manager.py:161 -#: ../src/history_window.py:102 +#: ../src/history_manager.py:131 ../src/history_manager.py:163 +#: ../src/history_window.py:93 msgid "Message" msgstr "Melding" #. holds subject -#: ../src/history_manager.py:136 -#: ../src/history_manager.py:167 +#: ../src/history_manager.py:138 ../src/history_manager.py:169 msgid "Subject" msgstr "Tittel" -#: ../src/history_manager.py:181 -msgid "Do you want to clean up the database? (STRONGLY NOT RECOMMENDED IF GAJIM IS RUNNING)" -msgstr "Ønsker du Ã¥ rengjøre databasen? (STERKT FRARÃ…DET MENS GAJIM KJØRER)" - #: ../src/history_manager.py:183 msgid "" -"Normally allocated database size will not be freed, it will just become reusable. If you really want to reduce database filesize, click YES, else click NO.\n" +"Do you want to clean up the database? (STRONGLY NOT RECOMMENDED IF GAJIM IS " +"RUNNING)" +msgstr "Ønsker du Ã¥ rengjøre databasen? (STERKT FRARÃ…DET MENS GAJIM KJØRER)" + +#: ../src/history_manager.py:185 +msgid "" +"Normally allocated database size will not be freed, it will just become " +"reusable. If you really want to reduce database filesize, click YES, else " +"click NO.\n" "\n" "In case you click YES, please wait..." msgstr "" -"Normalt vil tildelt database plass ikke frigjøres, den vil bare be merket som ledig. Dersom du virkelig ønsker Ã¥ redusere fil størrelsen klikker du JA, ellers klikker du NEI.\n" +"Normalt vil tildelt database plass ikke frigjøres, den vil bare be merket " +"som ledig. Dersom du virkelig ønsker Ã¥ redusere fil størrelsen klikker du " +"JA, ellers klikker du NEI.\n" "\n" "I tilfelle du klikker JA, vennligst vent..." -#: ../src/history_manager.py:389 +#: ../src/history_manager.py:391 msgid "Exporting History Logs..." msgstr "Eksporterer Historiske Logger..." -#: ../src/history_manager.py:465 +#: ../src/history_manager.py:467 #, python-format msgid "%(who)s on %(time)s said: %(message)s\n" msgstr "%(who)s pÃ¥ %(time)s sa: %(message)s\n" -#: ../src/history_manager.py:465 +#: ../src/history_manager.py:467 msgid "who" msgstr "hvem" -#: ../src/history_manager.py:503 +#: ../src/history_manager.py:505 msgid "Do you really want to delete logs of the selected contact?" msgid_plural "Do you really want to delete logs of the selected contacts?" msgstr[0] "Ønsker du virkelig Ã¥ slette loggene til den valgte kontakten?" msgstr[1] "Ønsker du virkelig Ã¥ slette loggene fra de valgte kontaktene?" -#: ../src/history_manager.py:507 -#: ../src/history_manager.py:543 +#: ../src/history_manager.py:509 ../src/history_manager.py:545 msgid "This is an irreversible operation." msgstr "Denne operasjonen kan ikke angres." -#: ../src/history_manager.py:540 +#: ../src/history_manager.py:542 msgid "Do you really want to delete the selected message?" msgid_plural "Do you really want to delete the selected messages?" msgstr[0] "Ønsker du virkelig Ã¥ slette den valgte meldingen?" msgstr[1] "Ønsker du virkelig Ã¥ slette de valgte meldingene?" -#: ../src/history_window.py:111 -#: ../src/history_window.py:113 +#: ../src/history_window.py:102 ../src/history_window.py:104 #, python-format msgid "Conversation History with %s" msgstr "Samtale Historikk med %s" -#: ../src/history_window.py:265 +#: ../src/history_window.py:258 #, python-format msgid "%(nick)s is now %(status)s: %(status_msg)s" msgstr "%(nick)s er nÃ¥ %(status)s: %(status_msg)s" -#: ../src/history_window.py:269 +#: ../src/history_window.py:262 ../src/notify.py:113 #, python-format msgid "%(nick)s is now %(status)s" msgstr "%(nick)s er nÃ¥ %(status)s" -#: ../src/history_window.py:275 +#: ../src/history_window.py:268 #, python-format msgid "Status is now: %(status)s: %(status_msg)s" msgstr "Status er nÃ¥: %(status)s: %(status_msg)s" -#: ../src/history_window.py:278 +#: ../src/history_window.py:271 #, python-format msgid "Status is now: %(status)s" msgstr "Status er nÃ¥: %(status)s" -#: ../src/message_window.py:233 +#: ../src/message_window.py:244 msgid "Messages" msgstr "Meldinger" -#: ../src/message_window.py:234 +#: ../src/message_window.py:245 #, python-format msgid "%s - Gajim" msgstr "%s - Gajim" -#: ../src/roster_window.py:140 +#: ../src/notify.py:111 +#, fuzzy, python-format +msgid "%(nick)s Changed Status" +msgstr "%(nick)s er nÃ¥ %(status)s" + +#: ../src/notify.py:121 +#, python-format +msgid "%(nickname)s Signed In" +msgstr "%(nickname)s Logget PÃ¥" + +#: ../src/notify.py:129 +#, python-format +msgid "%(nickname)s Signed Out" +msgstr "%(nickname)s Logget Av" + +#: ../src/notify.py:141 +#, python-format +msgid "New Single Message from %(nickname)s" +msgstr "Ny Enkeltmelding fra %(nickname)s" + +#: ../src/notify.py:150 +#, python-format +msgid "New Private Message from room %s" +msgstr "Ny Privat Melding fra rom %s" + +#: ../src/notify.py:151 +#, python-format +msgid "%(nickname)s: %(message)s" +msgstr "%(nickname)s: %(message)s" + +#: ../src/notify.py:157 +#, python-format +msgid "New Message from %(nickname)s" +msgstr "Ny Melding fra %(nickname)s" + +#: ../src/roster_window.py:131 msgid "Merged accounts" msgstr "Samlede kontoer" -#: ../src/roster_window.py:289 -#: ../src/common/helpers.py:42 +#: ../src/roster_window.py:288 ../src/common/helpers.py:39 msgid "Observers" msgstr "Observerere" -#: ../src/roster_window.py:542 +#: ../src/roster_window.py:544 #, python-format msgid "You are already in room %s" msgstr "Du er allerede i rom %s" -#: ../src/roster_window.py:546 -#: ../src/roster_window.py:2262 +#: ../src/roster_window.py:548 ../src/roster_window.py:2280 msgid "You cannot join a room while you are invisible" msgstr "Du kan ikke gÃ¥ inn i en gruppesamtale nÃ¥r du er usynlig" #. the 'manage gc bookmarks' item is showed #. below to avoid duplicate code #. add -#: ../src/roster_window.py:735 +#: ../src/roster_window.py:748 #, python-format msgid "to %s account" msgstr "til %s kontoen" #. disco -#: ../src/roster_window.py:742 +#: ../src/roster_window.py:755 #, python-format msgid "using %s account" msgstr "pÃ¥ %s kontoen" -#. new message +#. new chat #. for chat_with #. for single message -#: ../src/roster_window.py:750 -#: ../src/systray.py:194 -#: ../src/systray.py:201 +#: ../src/roster_window.py:763 ../src/systray.py:193 ../src/systray.py:198 #, python-format msgid "using account %s" msgstr "bruker kontoen %s" #. profile, avatar -#: ../src/roster_window.py:759 +#: ../src/roster_window.py:772 #, python-format msgid "of account %s" msgstr "for konto %s" -#: ../src/roster_window.py:818 +#: ../src/roster_window.py:831 msgid "Manage Bookmarks..." msgstr "Behandle Bokmerker..." -#: ../src/roster_window.py:842 +#: ../src/roster_window.py:855 #, python-format msgid "for account %s" msgstr "for kontoen %s" #. History manager -#: ../src/roster_window.py:863 +#: ../src/roster_window.py:876 msgid "History Manager" msgstr "Historikk Behandler" -#: ../src/roster_window.py:872 +#: ../src/roster_window.py:885 msgid "_Join New Room" msgstr "_Bli med i Nytt Rom" -#: ../src/roster_window.py:1158 +#: ../src/roster_window.py:1159 #, python-format msgid "Transport \"%s\" will be removed" msgstr "Transport \"%s\" vil bli fjernet" -#: ../src/roster_window.py:1158 -msgid "You will no longer be able to send and receive messages to contacts from this transport." -msgstr "Du vil ikke lenger kunne sende og motta meldinger med kontakter fra denne transporten." +#: ../src/roster_window.py:1159 +msgid "" +"You will no longer be able to send and receive messages to contacts from " +"this transport." +msgstr "" +"Du vil ikke lenger kunne sende og motta meldinger med kontakter fra denne " +"transporten." -#: ../src/roster_window.py:1200 +#: ../src/roster_window.py:1201 msgid "Assign OpenPGP Key" msgstr "Tilegn OpenPGP Nøkkel" -#: ../src/roster_window.py:1201 +#: ../src/roster_window.py:1202 msgid "Select a key to apply to the contact" msgstr "Velger en nøkkel til en kontakt" @@ -3720,239 +4372,252 @@ msgstr "Logg _av" msgid "_Change Status Message" msgstr "_Endre Status Melding" -#: ../src/roster_window.py:1617 +#: ../src/roster_window.py:1621 msgid "Authorization has been sent" msgstr "Godkjenning har blitt sendt" -#: ../src/roster_window.py:1618 +#: ../src/roster_window.py:1622 #, python-format msgid "Now \"%s\" will know your status." msgstr "NÃ¥ vil \"%s\" kunne se din status." -#: ../src/roster_window.py:1642 +#: ../src/roster_window.py:1646 msgid "Subscription request has been sent" msgstr "Abbonerings forespørsel er sendt" -#: ../src/roster_window.py:1643 +#: ../src/roster_window.py:1647 #, python-format msgid "If \"%s\" accepts this request you will know his or her status." -msgstr "Dersom \"%s\" aksepterer denne forespørselen vil du fÃ¥ vite hans eller hennes status." +msgstr "" +"Dersom \"%s\" aksepterer denne forespørselen vil du fÃ¥ vite hans eller " +"hennes status." -#: ../src/roster_window.py:1654 +#: ../src/roster_window.py:1658 msgid "Authorization has been removed" msgstr "Godkjenning har blitt fjernet" -#: ../src/roster_window.py:1655 +#: ../src/roster_window.py:1659 #, python-format msgid "Now \"%s\" will always see you as offline." msgstr "NÃ¥ vil \"%s\" alltid se deg som frakoblet." -#: ../src/roster_window.py:1824 +#: ../src/roster_window.py:1822 #, python-format msgid "Contact \"%s\" will be removed from your roster" msgstr "Kontakten \"%s\" vil fjernes fra din kontaktliste" -#: ../src/roster_window.py:1828 -msgid "By removing this contact you also remove authorization resulting in him or her always seeing you as offline." -msgstr "Ved Ã¥ fjerne denne kontakten fjerner du ogsÃ¥ godkjenningen som gjør at han eller henne alltid vil se deg som frakoblet." +#: ../src/roster_window.py:1826 +msgid "" +"By removing this contact you also remove authorization resulting in him or " +"her always seeing you as offline." +msgstr "" +"Ved Ã¥ fjerne denne kontakten fjerner du ogsÃ¥ godkjenningen som gjør at han " +"eller henne alltid vil se deg som frakoblet." -#: ../src/roster_window.py:1832 -msgid "By removing this contact you also by default remove authorization resulting in him or her always seeing you as offline." -msgstr "Ved Ã¥ fjerne denne kontakten fjerner du ogsÃ¥ godkjenningen som resulterer i at han eller henne alltid vil se deg som frakoblet." +#: ../src/roster_window.py:1830 +msgid "" +"By removing this contact you also by default remove authorization resulting " +"in him or her always seeing you as offline." +msgstr "" +"Ved Ã¥ fjerne denne kontakten fjerner du ogsÃ¥ godkjenningen som resulterer i " +"at han eller henne alltid vil se deg som frakoblet." -#: ../src/roster_window.py:1833 +#: ../src/roster_window.py:1831 msgid "I want this contact to know my status after removal" msgstr "Denne kontakten skal kunne se min status etter fjerning" -#: ../src/roster_window.py:1901 +#: ../src/roster_window.py:1899 msgid "Passphrase Required" msgstr "Passordsetning Kreves" -#: ../src/roster_window.py:1902 +#: ../src/roster_window.py:1900 #, python-format msgid "Enter GPG key passphrase for account %s." msgstr "Skriv GPG nøkkelens passordsetning for konto %s." -#: ../src/roster_window.py:1907 +#: ../src/roster_window.py:1905 msgid "Save passphrase" msgstr "Lagre passordsetning" -#: ../src/roster_window.py:1915 +#: ../src/roster_window.py:1913 msgid "Wrong Passphrase" msgstr "Feil Passordsetning" -#: ../src/roster_window.py:1916 +#: ../src/roster_window.py:1914 msgid "Please retype your GPG passphrase or press Cancel." msgstr "Vennligst skriv inn GPG passordsetningen igjen eller trykk Avbryt." -#: ../src/roster_window.py:1964 -#: ../src/roster_window.py:2021 +#: ../src/roster_window.py:1963 ../src/roster_window.py:2020 msgid "You are participating in one or more group chats" msgstr "Du er med i en eller flere gruppesamtaler" -#: ../src/roster_window.py:1965 -#: ../src/roster_window.py:2022 -msgid "Changing your status to invisible will result in disconnection from those group chats. Are you sure you want to go invisible?" -msgstr "Endring av status til usynlig vil resultere i at du forlater disse gruppe samtalene. Er du sikker pÃ¥ at du ønsker Ã¥ bli usynlig?" +#: ../src/roster_window.py:1964 ../src/roster_window.py:2021 +msgid "" +"Changing your status to invisible will result in disconnection from those " +"group chats. Are you sure you want to go invisible?" +msgstr "" +"Endring av status til usynlig vil resultere i at du forlater disse gruppe " +"samtalene. Er du sikker pÃ¥ at du ønsker Ã¥ bli usynlig?" -#: ../src/roster_window.py:1981 +#: ../src/roster_window.py:1980 msgid "No account available" msgstr "Ingen konto tilgjengelig" -#: ../src/roster_window.py:1982 +#: ../src/roster_window.py:1981 msgid "You must create an account before you can chat with other contacts." msgstr "Du mÃ¥ lage en konto før du kan snakke med andre kontakter." -#: ../src/roster_window.py:2427 -#: ../src/roster_window.py:2433 +#: ../src/roster_window.py:2452 ../src/roster_window.py:2458 msgid "You have unread messages" msgstr "Du har uleste meldinger" -#: ../src/roster_window.py:2428 -#: ../src/roster_window.py:2434 -msgid "Messages will only be available for reading them later if you have history enabled." -msgstr "Meldinger vil kun være tilgjengelig for lesing senere dersom du har historikk pÃ¥slÃ¥tt." +#: ../src/roster_window.py:2453 ../src/roster_window.py:2459 +msgid "" +"Messages will only be available for reading them later if you have history " +"enabled." +msgstr "" +"Meldinger vil kun være tilgjengelig for lesing senere dersom du har " +"historikk pÃ¥slÃ¥tt." -#: ../src/roster_window.py:3184 +#: ../src/roster_window.py:3231 #, python-format msgid "Drop %s in group %s" msgstr "Tøm %s i samtalerom %s" -#: ../src/roster_window.py:3191 +#: ../src/roster_window.py:3238 #, python-format msgid "Make %s and %s metacontacts" msgstr "Gjør %s og %s metakontakter" -#: ../src/roster_window.py:3358 +#: ../src/roster_window.py:3408 msgid "Change Status Message..." msgstr "Endre Status Melding..." -#: ../src/systray.py:155 +#: ../src/systray.py:154 msgid "_Change Status Message..." msgstr "_Endre Status Melding..." -#: ../src/systray.py:236 +#: ../src/systray.py:231 msgid "Hide this menu" msgstr "Gjem dette vinduet" -#: ../src/systraywin32.py:266 -#: ../src/systraywin32.py:285 -#: ../src/tooltips.py:315 +#: ../src/systraywin32.py:261 ../src/systraywin32.py:280 #, python-format msgid "Gajim - %d unread message" msgid_plural "Gajim - %d unread messages" msgstr[0] "Gajim - %d ulest melding" msgstr[1] "Gajim - %d uleste meldinger" -#: ../src/tooltips.py:321 -#, python-format -msgid "Gajim - %d unread single message" -msgid_plural "Gajim - %d unread single messages" +#: ../src/tooltips.py:326 +#, fuzzy, python-format +msgid " %d unread message" +msgid_plural " %d unread messages" msgstr[0] "Gajim - %d ulest melding" msgstr[1] "Gajim - %d uleste meldinger" -#: ../src/tooltips.py:327 -#, python-format -msgid "Gajim - %d unread group chat message" -msgid_plural "Gajim - %d unread group chat messages" +#: ../src/tooltips.py:332 +#, fuzzy, python-format +msgid " %d unread single message" +msgid_plural " %d unread single messages" msgstr[0] "Gajim - %d ulest melding" msgstr[1] "Gajim - %d uleste meldinger" -#: ../src/tooltips.py:333 -#, python-format -msgid "Gajim - %d unread private message" -msgid_plural "Gajim - %d unread private messages" +#: ../src/tooltips.py:338 +#, fuzzy, python-format +msgid " %d unread group chat message" +msgid_plural " %d unread group chat messages" +msgstr[0] "Gajim - %d ulest melding" +msgstr[1] "Gajim - %d uleste meldinger" + +#: ../src/tooltips.py:344 +#, fuzzy, python-format +msgid " %d unread private message" +msgid_plural " %d unread private messages" msgstr[0] "Gajim - %d ulest privat melding" msgstr[1] "Gajim - %d uleste private meldinger" -#: ../src/tooltips.py:348 -#: ../src/tooltips.py:350 +#: ../src/tooltips.py:359 ../src/tooltips.py:361 #, python-format msgid "Gajim - %s" msgstr "Gajim - %s" -#: ../src/tooltips.py:383 +#: ../src/tooltips.py:395 msgid "Role: " msgstr "Rolle: " -#: ../src/tooltips.py:384 +#: ../src/tooltips.py:396 msgid "Affiliation: " msgstr "Tilhørighet: " -#: ../src/tooltips.py:386 -#: ../src/tooltips.py:518 +#: ../src/tooltips.py:398 ../src/tooltips.py:537 msgid "Resource: " msgstr "Ressurs: " -#: ../src/tooltips.py:394 -#: ../src/tooltips.py:521 -#: ../src/tooltips.py:543 -#: ../src/tooltips.py:654 +#: ../src/tooltips.py:407 ../src/tooltips.py:540 ../src/tooltips.py:565 +#: ../src/tooltips.py:676 msgid "Status: " msgstr "Status: " -#: ../src/tooltips.py:501 +#: ../src/tooltips.py:514 msgid "Subscription: " msgstr "Abbonement: " -#: ../src/tooltips.py:510 +#: ../src/tooltips.py:523 msgid "OpenPGP: " msgstr "OpenPGP: " -#: ../src/tooltips.py:548 +#: ../src/tooltips.py:570 #, python-format msgid "Last status on %s" msgstr "Siste status pÃ¥ %s" -#: ../src/tooltips.py:550 +#: ../src/tooltips.py:572 #, python-format msgid "Since %s" msgstr "Siden %s" -#: ../src/tooltips.py:610 +#: ../src/tooltips.py:632 msgid "Download" msgstr "Last ned" -#: ../src/tooltips.py:616 +#: ../src/tooltips.py:638 msgid "Upload" msgstr "Last opp" -#: ../src/tooltips.py:623 +#: ../src/tooltips.py:645 msgid "Type: " msgstr "Type: " -#: ../src/tooltips.py:629 +#: ../src/tooltips.py:651 msgid "Transferred: " msgstr "Overført: " -#: ../src/tooltips.py:632 -#: ../src/tooltips.py:653 +#: ../src/tooltips.py:654 ../src/tooltips.py:675 msgid "Not started" msgstr "Ikke startet" -#: ../src/tooltips.py:636 +#: ../src/tooltips.py:658 msgid "Stopped" msgstr "Stoppet" -#: ../src/tooltips.py:638 -#: ../src/tooltips.py:641 +#: ../src/tooltips.py:660 ../src/tooltips.py:663 msgid "Completed" msgstr "Komplett" #. stalled is not paused. it is like 'frozen' it stopped alone -#: ../src/tooltips.py:649 +#: ../src/tooltips.py:671 msgid "Stalled" msgstr "Henger" -#: ../src/tooltips.py:651 +#: ../src/tooltips.py:673 msgid "Transferring" msgstr "Overfører" -#: ../src/tooltips.py:683 +#: ../src/tooltips.py:705 msgid "This service has not yet responded with detailed information" msgstr "Denne tjenesten har ikke enda svart med detaljert informasjon" -#: ../src/tooltips.py:686 +#: ../src/tooltips.py:708 msgid "" "This service could not respond with detailed information.\n" "It is most likely legacy or broken" @@ -3961,102 +4626,114 @@ msgstr "" "Den er sannsynligvis utdatert eller ødelagt" #. keep identation -#: ../src/vcard.py:186 +#: ../src/vcard.py:188 msgid "Could not load image" msgstr "Kunne ikke laste bilde" -#: ../src/vcard.py:262 +#: ../src/vcard.py:289 msgid "?Client:Unknown" msgstr "?Client:Ukjent" -#: ../src/vcard.py:264 +#: ../src/vcard.py:291 msgid "?OS:Unknown" msgstr "?OS:Ukjent" -#: ../src/vcard.py:281 +#: ../src/vcard.py:308 #, python-format msgid "since %s" msgstr "siden %s" -#: ../src/vcard.py:305 -msgid "This contact is interested in your presence information, but you are not interested in his/her presence" -msgstr "Denne kontakten er interessert i din tilstedeværelses informasjon, men du er ikke interessert i hans/hennes status." +#: ../src/vcard.py:332 +msgid "" +"This contact is interested in your presence information, but you are not " +"interested in his/her presence" +msgstr "" +"Denne kontakten er interessert i din tilstedeværelses informasjon, men du er " +"ikke interessert i hans/hennes status." -#: ../src/vcard.py:307 -msgid "You are interested in the contact's presence information, but he/she is not interested in yours" -msgstr "Du er interessert i denne kontaktens tilstedeværelses informasjon, men han/hun er ikke interessert i din." +#: ../src/vcard.py:334 +msgid "" +"You are interested in the contact's presence information, but he/she is not " +"interested in yours" +msgstr "" +"Du er interessert i denne kontaktens tilstedeværelses informasjon, men han/" +"hun er ikke interessert i din." -#: ../src/vcard.py:309 +#: ../src/vcard.py:336 msgid "You and the contact are interested in each other's presence information" -msgstr "Du og kontakten er interessert i hverandres tilstedeværelses informasjon" +msgstr "" +"Du og kontakten er interessert i hverandres tilstedeværelses informasjon" #. None -#: ../src/vcard.py:311 -msgid "You are not interested in the contact's presence, and neither he/she is interested in yours" -msgstr "Du er ikke interessert i kontaktens tilstedeværelses informasjon, ei heller han/hun i din." +#: ../src/vcard.py:338 +msgid "" +"You are not interested in the contact's presence, and neither he/she is " +"interested in yours" +msgstr "" +"Du er ikke interessert i kontaktens tilstedeværelses informasjon, ei heller " +"han/hun i din." -#: ../src/vcard.py:320 +#: ../src/vcard.py:347 msgid "You are waiting contact's answer about your subscription request" msgstr "Du venter pÃ¥ kontaktens svar pÃ¥ din abbonerings forespørsel" -#: ../src/vcard.py:332 -#: ../src/vcard.py:355 +#: ../src/vcard.py:359 ../src/vcard.py:382 msgid " resource with priority " msgstr " ressurs med prioritet" -#: ../src/vcard.py:434 +#: ../src/vcard.py:458 msgid "Without a connection you can not publish your contact information." msgstr "Uten en tilkobling kan du ikke publisere din kontakt informasjon." -#: ../src/vcard.py:463 +#: ../src/vcard.py:491 msgid "Without a connection, you can not get your contact information." msgstr "Uten en tilkobling kan du ikke hente din kontakt informasjon." -#: ../src/vcard.py:467 +#: ../src/vcard.py:495 msgid "Personal details" msgstr "Personlige detaljer" -#: ../src/common/check_paths.py:39 +#: ../src/common/check_paths.py:35 msgid "creating logs database" msgstr "lager logg database" -#: ../src/common/check_paths.py:84 -#: ../src/common/check_paths.py:95 -#: ../src/common/check_paths.py:102 +#: ../src/common/check_paths.py:82 ../src/common/check_paths.py:93 +#: ../src/common/check_paths.py:100 #, python-format msgid "%s is file but it should be a directory" msgstr "%s er en fil men skulle ha vært en katalog" -#: ../src/common/check_paths.py:85 -#: ../src/common/check_paths.py:96 -#: ../src/common/check_paths.py:103 -#: ../src/common/check_paths.py:110 +#: ../src/common/check_paths.py:83 ../src/common/check_paths.py:94 +#: ../src/common/check_paths.py:101 ../src/common/check_paths.py:109 msgid "Gajim will now exit" msgstr "Gajim vill nÃ¥ lukkes" -#: ../src/common/check_paths.py:109 +#: ../src/common/check_paths.py:108 #, python-format msgid "%s is directory but should be file" msgstr "%s er en katalog men skulle vært en fil" -#: ../src/common/check_paths.py:125 +#: ../src/common/check_paths.py:124 #, python-format msgid "creating %s directory" msgstr "lager %s mappe" -#: ../src/common/exceptions.py:35 +#: ../src/common/exceptions.py:32 msgid "pysqlite2 (aka python-pysqlite2) dependency is missing. Exiting..." -msgstr "pysqlite2 (ogsÃ¥ kjent som python-pysqlite2) avhengighet mangler. Avslutter..." +msgstr "" +"pysqlite2 (ogsÃ¥ kjent som python-pysqlite2) avhengighet mangler. Avslutter..." -#: ../src/common/exceptions.py:43 +#: ../src/common/exceptions.py:40 msgid "Service not available: Gajim is not running, or remote_control is False" -msgstr "Tjeneste ikke tilgjengelig: Gajim kjører ikke, eller remote_control er satt til False" +msgstr "" +"Tjeneste ikke tilgjengelig: Gajim kjører ikke, eller remote_control er satt " +"til False" -#: ../src/common/exceptions.py:51 +#: ../src/common/exceptions.py:48 msgid "D-Bus is not present on this machine or python module is missing" msgstr "D-Bus finnes ikke pÃ¥ denne maskinen eller python modulen mangler" -#: ../src/common/exceptions.py:59 +#: ../src/common/exceptions.py:56 msgid "" "Session bus is not available.\n" "Try reading http://trac.gajim.org/wiki/GajimDBus" @@ -4064,49 +4741,90 @@ msgstr "" "Sesjons bussen er ikke tilgjengelig.\n" "Prøv Ã¥ les http://trac.gajim.org/wiki/GajimDBus" -#: ../src/common/config.py:53 +#: ../src/common/config.py:51 msgid "Use DBus and Notification-Daemon to show notifications" msgstr "Bruk DBus og Hendelses-Tjenesten for Ã¥ vise hendelser" -#: ../src/common/config.py:57 +#: ../src/common/config.py:55 msgid "Time in minutes, after which your status changes to away." msgstr "Tid i minutter før status endres til borte." -#: ../src/common/config.py:58 +#: ../src/common/config.py:56 msgid "Away as a result of being idle" msgstr "Borte pÃ¥ grunn av inaktivitet" -#: ../src/common/config.py:60 +#: ../src/common/config.py:58 msgid "Time in minutes, after which your status changes to not available." msgstr "Tid i minutter før status endres til ikke tilgjengelig." -#: ../src/common/config.py:61 +#: ../src/common/config.py:59 msgid "Not available as a result of being idle" msgstr "Ikke tilgjengelig pÃ¥ grunn av inaktivitet" -#: ../src/common/config.py:88 +#: ../src/common/config.py:77 +msgid "List (space separated) of rows (accounts and groups) that are collapsed" +msgstr "" + +#: ../src/common/config.py:83 +msgid "" +"'always' - print time for every message.\n" +"'sometimes' - print time every print_ichat_every_foo_minutes minute.\n" +"'never' - never print time." +msgstr "" + +#: ../src/common/config.py:84 +msgid "" +"Value of fuzziness from 1 to 4 or 0 to disable fuzzyclock. 1 is the most " +"precise clock, 4 the less precise one." +msgstr "" + +#: ../src/common/config.py:87 msgid "Treat * / _ pairs as possible formatting characters." msgstr "Behandle * / _ par som mulige formatterings symboler." -#: ../src/common/config.py:89 -msgid "If True, do not remove */_ . So *abc* will be bold but with * * not removed." -msgstr "Dersom True, ikke fjern */_ . SÃ¥ *abc* vil bli uthevet men * * ikke vil bli fjernet." +#: ../src/common/config.py:88 +msgid "" +"If True, do not remove */_ . So *abc* will be bold but with * * not removed." +msgstr "" +"Dersom True, ikke fjern */_ . SÃ¥ *abc* vil bli uthevet men * * ikke vil bli " +"fjernet." + +#: ../src/common/config.py:98 +msgid "" +"Character to add after nickname when using nick completion (tab) in group " +"chat" +msgstr "" + +#: ../src/common/config.py:99 +msgid "" +"Character to propose to add after desired nickname when desired nickname is " +"used by someone else in group chat" +msgstr "" #: ../src/common/config.py:131 msgid "Add * and [n] in roster title?" msgstr "Legg * og [n] inn i kontaktliste tittelen?" #: ../src/common/config.py:132 -msgid "How many lines to remember from previous conversation when a chat tab/window is reopened." -msgstr "Hvor mange linjer skal huskes fra forrige samtale nÃ¥r et samtale vindu/fane blir Ã¥pnet pÃ¥ nytt." +msgid "" +"How many lines to remember from previous conversation when a chat tab/window " +"is reopened." +msgstr "" +"Hvor mange linjer skal huskes fra forrige samtale nÃ¥r et samtale vindu/fane " +"blir Ã¥pnet pÃ¥ nytt." #: ../src/common/config.py:133 msgid "How many minutes should last lines from previous conversation last." -msgstr "Hvor mange minutter skal de siste linjene fra forrige konversasjon vare." +msgstr "" +"Hvor mange minutter skal de siste linjene fra forrige konversasjon vare." #: ../src/common/config.py:134 -msgid "Send message on Ctrl+Enter and with Enter make new line (Mirabilis ICQ Client default behaviour)." -msgstr "Send meldinger med Ctrl+Enter og med Enter lag ny linje (Mirabilis ICQ Klient standard oppførsel)." +msgid "" +"Send message on Ctrl+Enter and with Enter make new line (Mirabilis ICQ " +"Client default behaviour)." +msgstr "" +"Send meldinger med Ctrl+Enter og med Enter lag ny linje (Mirabilis ICQ " +"Klient standard oppførsel)." #: ../src/common/config.py:136 msgid "How many lines to store for Ctrl+KeyUP." @@ -4114,28 +4832,50 @@ msgstr "Hvor mange linjer skal lagres for Ctrl+PilOPP." #: ../src/common/config.py:139 #, python-format -msgid "Either custom url with %s in it where %s is the word/phrase or 'WIKTIONARY' which means use wiktionary." -msgstr "Enten bruk egendefinert url med %s i seg hvor %s er ordet/frasen eller 'WIKTIONARY' som betyr bruk wiktionary." +msgid "" +"Either custom url with %s in it where %s is the word/phrase or 'WIKTIONARY' " +"which means use wiktionary." +msgstr "" +"Enten bruk egendefinert url med %s i seg hvor %s er ordet/frasen eller " +"'WIKTIONARY' som betyr bruk wiktionary." #: ../src/common/config.py:142 msgid "If checked, Gajim can be controlled remotely using gajim-remote." msgstr "Dersom valgt vil Gajim kunne bli fjernstyr med gajim-remote." +#: ../src/common/config.py:145 +msgid "" +"When not printing time for every message (print_time==sometimes), print it " +"every x minutes" +msgstr "" + #: ../src/common/config.py:146 msgid "Ask before closing a group chat tab/window." msgstr "Spør før lukking av gruppesamtale fane/vindu." #: ../src/common/config.py:147 -msgid "Always ask before closing group chat tab/window in this space separated list of room jids." -msgstr "Spør alltid før lukking av gruppesamtale fane/vindu i denne mellomrom separerte listen av rom jider." +msgid "" +"Always ask before closing group chat tab/window in this space separated list " +"of room jids." +msgstr "" +"Spør alltid før lukking av gruppesamtale fane/vindu i denne mellomrom " +"separerte listen av rom jider." #: ../src/common/config.py:148 -msgid "Never ask before closing group chat tab/window in this space separated list of room jids." -msgstr "Aldri spør før lukking av gruppesamtale fane/vindu i denne mellomroms separerte listen av rom jider." +msgid "" +"Never ask before closing group chat tab/window in this space separated list " +"of room jids." +msgstr "" +"Aldri spør før lukking av gruppesamtale fane/vindu i denne mellomroms " +"separerte listen av rom jider." #: ../src/common/config.py:151 -msgid "Overrides the host we send for File Transfer in case of address translation/port forwarding." -msgstr "Overstyrer maskinen navnet vi sender for Fil Overføring i tilfeller med adresse oversetting/port videresending." +msgid "" +"Overrides the host we send for File Transfer in case of address translation/" +"port forwarding." +msgstr "" +"Overstyrer maskinen navnet vi sender for Fil Overføring i tilfeller med " +"adresse oversetting/port videresending." #: ../src/common/config.py:153 msgid "IEC standard says KiB = 1024 bytes, KB = 1000 bytes." @@ -4146,7 +4886,8 @@ msgid "Show tab when only one conversation?" msgstr "Vis fane nÃ¥r du har bare en samtale?" #: ../src/common/config.py:162 -msgid "Show tab border if one conversation?" +#, fuzzy +msgid "Show tabbed notebook border in chat windows?" msgstr "Vis fane felt ved bare en aktiv samtale?" #: ../src/common/config.py:163 @@ -4154,247 +4895,318 @@ msgid "Show close button in tab?" msgstr "Vis lukk knapp pÃ¥ fanen?" #: ../src/common/config.py:176 -msgid "A semicolon-separated list of words that will be highlighted in multi-user chat." +msgid "" +"A semicolon-separated list of words that will be highlighted in multi-user " +"chat." msgstr "En semikolon-delt liste av ord som vil bli uthevet i gruppesamtale." #: ../src/common/config.py:177 -msgid "If True, quits Gajim when X button of Window Manager is clicked. This setting is taken into account only if trayicon is used." -msgstr "Dersom True vil Gajim avslutte nÃ¥r X knappen i Vindubehandleren blir trykket pÃ¥. Dette valget vil kun brukes dersom systemstatus ikon er i bruk. " +msgid "" +"If True, quits Gajim when X button of Window Manager is clicked. This " +"setting is taken into account only if trayicon is used." +msgstr "" +"Dersom True vil Gajim avslutte nÃ¥r X knappen i Vindubehandleren blir trykket " +"pÃ¥. Dette valget vil kun brukes dersom systemstatus ikon er i bruk. " #: ../src/common/config.py:178 msgid "If True, Gajim registers for xmpp:// on each startup." msgstr "Dersom True vil Gajim registreres for xmpp:// ved hver oppstart." #: ../src/common/config.py:179 -msgid "If True, Gajim will display an icon on each tab containing unread messages. Depending on the theme, this icon may be animated." -msgstr "Dersom True vil Gajim ise et ikon pÃ¥ hver fane som inneholder uleste meldinger. Avhengig av valgte tema kan dette ikonet være animert." +msgid "" +"If True, Gajim will display an icon on each tab containing unread messages. " +"Depending on the theme, this icon may be animated." +msgstr "" +"Dersom True vil Gajim ise et ikon pÃ¥ hver fane som inneholder uleste " +"meldinger. Avhengig av valgte tema kan dette ikonet være animert." #: ../src/common/config.py:180 -msgid "If True, Gajim will display the status message, if not empty, for every contact under the contact name in roster window" -msgstr "Dersom True vil Gajim vise status meldingen, om den ikke er tom, for hver kontakt under kontaktens navn i kontaktliste vinduet." +msgid "" +"If True, Gajim will display the status message, if not empty, for every " +"contact under the contact name in roster window" +msgstr "" +"Dersom True vil Gajim vise status meldingen, om den ikke er tom, for hver " +"kontakt under kontaktens navn i kontaktliste vinduet." #: ../src/common/config.py:182 -msgid "If True, Gajim will ask for avatar each contact that did not have an avatar last time or has one cached that is too old." -msgstr "Dersom True vil Gajim spør etter ikonbilde for hver kontakt som ikke hadde et ikonbilde sist gang eller har en lagret som er for gammel." +msgid "" +"If True, Gajim will ask for avatar each contact that did not have an avatar " +"last time or has one cached that is too old." +msgstr "" +"Dersom True vil Gajim spør etter ikonbilde for hver kontakt som ikke hadde " +"et ikonbilde sist gang eller har en lagret som er for gammel." + +#: ../src/common/config.py:183 +#, fuzzy +msgid "" +"If False, Gajim will no longer print status line in chats when a contact " +"changes his or her status and/or his or her status message." +msgstr "" +"Dersom False vil du ikke lenge kunne se status linjer i samtaler nÃ¥r en " +"kontakt endrer hans eller hennes status og/eller status melding. " -#. FIXME: remove you and make it Gajim will not; and/or his or *her* status messages #: ../src/common/config.py:184 -msgid "If False, you will no longer see status line in chats when a contact changes his or her status and/or his status message." -msgstr "Dersom False vil du ikke lenge kunne se status linjer i samtaler nÃ¥r en kontakt endrer hans eller hennes status og/eller status melding. " +msgid "" +"can be \"none\", \"all\" or \"in_and_out\". If \"none\", Gajim will no " +"longer print status line in groupchats when a member changes his or her " +"status and/or his or her status message. If \"all\" Gajim will print all " +"status messages. If \"in_and_out\", gajim will only print FOO enters/leaves " +"room" +msgstr "" + +#: ../src/common/config.py:187 +msgid "Don't show avatar for the transport itself." +msgstr "" #: ../src/common/config.py:189 -msgid "If True and installed GTK+ and PyGTK versions are at least 2.8, make the window flash (the default behaviour in most Window Managers) when holding pending events." -msgstr "Dersom True og de installerte GTK+ og PyGTK versjonene er minst 2.8, vil vindusbehandleren blinke (vanlig oppførsel i de fleste vindusbehandlere) nÃ¥r det er ventende hendelser." +msgid "" +"If True and installed GTK+ and PyGTK versions are at least 2.8, make the " +"window flash (the default behaviour in most Window Managers) when holding " +"pending events." +msgstr "" +"Dersom True og de installerte GTK+ og PyGTK versjonene er minst 2.8, vil " +"vindusbehandleren blinke (vanlig oppførsel i de fleste vindusbehandlere) nÃ¥r " +"det er ventende hendelser." #: ../src/common/config.py:191 -msgid "Jabberd1.4 does not like sha info when one join a password protected room. Turn this option to False to stop sending sha info in groupchat presences" -msgstr "Jabberd1.4 liker ikke sha informasjon nÃ¥r man gÃ¥r inn i et passord beskyttet samtalerom. Sett dette valget til False for Ã¥ slutte Ã¥ sende sha informasjon til gruppesamtaler" +msgid "" +"Jabberd1.4 does not like sha info when one join a password protected room. " +"Turn this option to False to stop sending sha info in groupchat presences" +msgstr "" +"Jabberd1.4 liker ikke sha informasjon nÃ¥r man gÃ¥r inn i et passord beskyttet " +"samtalerom. Sett dette valget til False for Ã¥ slutte Ã¥ sende sha informasjon " +"til gruppesamtaler" -#: ../src/common/config.py:193 +#. always, never, peracct, pertype should not be translated +#: ../src/common/config.py:194 msgid "" "Controls the window where new messages are placed.\n" "'always' - All messages are sent to a single window.\n" "'never' - All messages get their own window.\n" "'peracct' - Messages for each account are sent to a specific window.\n" -"'pertype' - Each message type (e.g., chats vs. groupchats) are sent to a specific window. Note, changing this option requires restarting Gajim before the changes will take effect" +"'pertype' - Each message type (e.g., chats vs. groupchats) are sent to a " +"specific window. Note, changing this option requires restarting Gajim before " +"the changes will take effect" msgstr "" "Kontrollerer vinduet hvor nye meldinger skal plasseres.\n" "'alltid' - Alle meldinger sendes til ett vindu.\n" "'aldri' - Alle meldinger fÃ¥r egne vindu.\n" "'perkonto' - Meldinger for hver konto sendes til egne vindu.\n" -"'pertype' - Hver meldingstype (f.eks., samtaler og gruppesamtaler) sendes til forskjellige vinduer. Merk, endring av dette valget krever omstart av Gajim før det aktiveres" +"'pertype' - Hver meldingstype (f.eks., samtaler og gruppesamtaler) sendes " +"til forskjellige vinduer. Merk, endring av dette valget krever omstart av " +"Gajim før det aktiveres" -#: ../src/common/config.py:194 +#: ../src/common/config.py:195 msgid "If False, you will no longer see the avatar in the chat window" msgstr "Dersom False vil du ikke lenger se bildeikoner i samtalevinduet" -#: ../src/common/config.py:195 +#: ../src/common/config.py:196 msgid "If True, pressing the escape key closes a tab/window" msgstr "Dersom True vil man kunne lukke fane/vindu med escape knappen" -#: ../src/common/config.py:196 +#: ../src/common/config.py:197 msgid "Hides the buttons in group chat window" msgstr "Gjemmer knappene i gruppe samtale vindu" -#: ../src/common/config.py:197 +#: ../src/common/config.py:198 msgid "Hides the buttons in two persons chat window" msgstr "Gjemmer knappene i to personers samtale vindu" -#: ../src/common/config.py:198 +#: ../src/common/config.py:199 msgid "Hides the banner in a group chat window" msgstr "Gjemmer tittel banneret i gruppesamtalevinduet" -#: ../src/common/config.py:199 +#: ../src/common/config.py:200 msgid "Hides the banner in two persons chat window" msgstr "Gjemmer tittel banneret i to personers samtale vindu" -#: ../src/common/config.py:200 +#: ../src/common/config.py:201 msgid "Hides the room occupants list in groupchat window" msgstr "Gjemmer rommets medlemsliste i gruppesamtale vinduet" +#: ../src/common/config.py:202 +msgid "Merge consecutive nickname in chat window" +msgstr "" + +#: ../src/common/config.py:203 +msgid "Indentation when using merge consecutive nickame" +msgstr "" + +#: ../src/common/config.py:204 +msgid "List of colors that will be used to color nicknames in groupchats" +msgstr "" + #. yes, no, ask -#: ../src/common/config.py:233 +#: ../src/common/config.py:237 msgid "Jabberd2 workaround" msgstr "Jabberd2 omvei" -#: ../src/common/config.py:237 -msgid "If checked, Gajim will use your IP and proxies defined in file_transfer_proxies option for file transfer." -msgstr "Dersom valgt vil Gajim bruke din IP og proxier definert i file_transfer_proxies valget for filoverføring." +#: ../src/common/config.py:241 +msgid "" +"If checked, Gajim will use your IP and proxies defined in " +"file_transfer_proxies option for file transfer." +msgstr "" +"Dersom valgt vil Gajim bruke din IP og proxier definert i " +"file_transfer_proxies valget for filoverføring." -#: ../src/common/config.py:290 +#: ../src/common/config.py:297 msgid "Sleeping" msgstr "Sover" -#: ../src/common/config.py:291 +#: ../src/common/config.py:298 msgid "Back soon" msgstr "Snart tilbake" -#: ../src/common/config.py:291 +#: ../src/common/config.py:298 msgid "Back in some minutes." msgstr "Tilbake om noen minutter." -#: ../src/common/config.py:292 +#: ../src/common/config.py:299 msgid "Eating" msgstr "Spiser" -#: ../src/common/config.py:292 +#: ../src/common/config.py:299 msgid "I'm eating, so leave me a message." msgstr "Jeg spiser, sÃ¥ legg igjen en beskjed" -#: ../src/common/config.py:293 +#: ../src/common/config.py:300 msgid "Movie" msgstr "Film" -#: ../src/common/config.py:293 +#: ../src/common/config.py:300 msgid "I'm watching a movie." msgstr "Jeg ser pÃ¥ en film." -#: ../src/common/config.py:294 +#: ../src/common/config.py:301 msgid "Working" msgstr "Jobber" -#: ../src/common/config.py:294 +#: ../src/common/config.py:301 msgid "I'm working." msgstr "Jeg jobber." -#: ../src/common/config.py:295 +#: ../src/common/config.py:302 msgid "Phone" msgstr "Telefon" -#: ../src/common/config.py:295 +#: ../src/common/config.py:302 msgid "I'm on the phone." msgstr "Jeg sitter i telefonen." -#: ../src/common/config.py:296 +#: ../src/common/config.py:303 msgid "Out" msgstr "Ute" -#: ../src/common/config.py:296 +#: ../src/common/config.py:303 msgid "I'm out enjoying life" msgstr "Jeg er ute og lever livet" -#: ../src/common/config.py:305 -msgid "Sound to play when a MUC message contains one of the words in muc_highlight_words, or when a MUC message contains your nickname." -msgstr "Lyd som spilles nÃ¥r en MUC melding inneholder et av ordene i muc_highlight_words, eller nÃ¥r en MUC melding inneholder ditt kallenavn." +#: ../src/common/config.py:312 +msgid "" +"Sound to play when a MUC message contains one of the words in " +"muc_highlight_words, or when a MUC message contains your nickname." +msgstr "" +"Lyd som spilles nÃ¥r en MUC melding inneholder et av ordene i " +"muc_highlight_words, eller nÃ¥r en MUC melding inneholder ditt kallenavn." -#: ../src/common/config.py:306 -msgid "Sound to play when any MUC message arrives. (This setting is taken into account only if notify_on_all_muc_messages is True)" -msgstr "Lyd som spilles nÃ¥r en ny MUC melding kommer. (Denne instillingen er kun aktiv nÃ¥r notify_on_all_muc_messages er True)" +#: ../src/common/config.py:313 +msgid "" +"Sound to play when any MUC message arrives. (This setting is taken into " +"account only if notify_on_all_muc_messages is True)" +msgstr "" +"Lyd som spilles nÃ¥r en ny MUC melding kommer. (Denne instillingen er kun " +"aktiv nÃ¥r notify_on_all_muc_messages er True)" -#: ../src/common/config.py:314 -#: ../src/common/optparser.py:181 +#: ../src/common/config.py:321 ../src/common/optparser.py:185 msgid "green" msgstr "grønn" -#: ../src/common/config.py:318 -#: ../src/common/optparser.py:167 +#: ../src/common/config.py:325 ../src/common/optparser.py:171 msgid "grocery" msgstr "varehandel" -#: ../src/common/config.py:322 +#: ../src/common/config.py:329 msgid "human" msgstr "menneskelig" -#: ../src/common/config.py:326 +#: ../src/common/config.py:333 msgid "marine" msgstr "marine" -#: ../src/common/connection.py:152 +#: ../src/common/connection.py:172 #, python-format msgid "Connection with account \"%s\" has been lost" msgstr "Tilkobling til konto \"%s\" har blitt mistet" -#: ../src/common/connection.py:153 +#: ../src/common/connection.py:173 msgid "To continue sending and receiving messages, you will need to reconnect." msgstr "For Ã¥ sende og motta meldinger mÃ¥ du koble til pÃ¥ nytt." -#: ../src/common/connection.py:169 -#: ../src/common/connection.py:195 +#: ../src/common/connection.py:185 ../src/common/connection.py:211 #, python-format msgid "Transport %s answered wrongly to register request." msgstr "Transporten %s svarte feil pÃ¥ registrerings forespørselen." #. wrong answer -#: ../src/common/connection.py:194 +#: ../src/common/connection.py:210 msgid "Invalid answer" msgstr "Ugyldig svar" -#: ../src/common/connection.py:348 -#: ../src/common/connection.py:384 -#: ../src/common/connection.py:754 +#: ../src/common/connection.py:397 ../src/common/connection.py:433 +#: ../src/common/connection.py:857 #, python-format msgid "Could not connect to \"%s\"" msgstr "Kunne ikke koble til \"%s\"" -#: ../src/common/connection.py:362 +#: ../src/common/connection.py:411 #, python-format msgid "Connected to server %s:%s with %s" msgstr "Tilkoblet til server %s:%s med %s" -#: ../src/common/connection.py:385 +#: ../src/common/connection.py:434 msgid "Check your connection or try again later" msgstr "Sjekk nettverkstilgangen din og prøv igjen senere " -#: ../src/common/connection.py:410 +#: ../src/common/connection.py:459 #, python-format msgid "Authentication failed with \"%s\"" msgstr "Autentisering feilet med \"%s\"" -#: ../src/common/connection.py:411 +#: ../src/common/connection.py:460 msgid "Please check your login and password for correctness." msgstr "Vennligst sjekk at brukernavn og passord er korrekt." #. We didn't set a passphrase -#: ../src/common/connection.py:487 +#: ../src/common/connection.py:573 msgid "OpenPGP passphrase was not given" msgstr "OpenPGP passordsetning ble ikke gitt" #. %s is the account name here -#: ../src/common/connection.py:489 +#: ../src/common/connection.py:575 #, python-format msgid "You will be connected to %s without OpenPGP." msgstr "Du vil bli tilbkoblet til %s uten OpenPGP." #. do not show I'm invisible! -#: ../src/common/connection.py:526 +#: ../src/common/connection.py:612 msgid "invisible" msgstr "usynlig" -#: ../src/common/connection.py:527 +#: ../src/common/connection.py:613 msgid "offline" msgstr "frakoblet" -#: ../src/common/connection.py:528 +#: ../src/common/connection.py:614 #, python-format msgid "I'm %s" msgstr "Jeg er %s" #. we're not english -#: ../src/common/connection.py:611 +#: ../src/common/connection.py:699 msgid "[This message is encrypted]" msgstr "[Denne meldingen er kryptert]" -#: ../src/common/connection.py:649 +#: ../src/common/connection.py:742 #, python-format msgid "" "Subject: %s\n" @@ -4403,228 +5215,316 @@ msgstr "" "Tittel: %s\n" "%s" -#: ../src/common/connection.py:699 +#: ../src/common/connection.py:795 ../src/common/connection_handlers.py:1511 msgid "I would like to add you to my roster." msgstr "Jeg vil legge deg til min kontaktliste." -#: ../src/common/helpers.py:103 +#: ../src/common/connection_handlers.py:49 +#, fuzzy +msgid "Unable to load idle module" +msgstr "Klarer ikke Ã¥ gÃ¥ inn i gruppesamtale" + +#: ../src/common/connection_handlers.py:581 +#, python-format +msgid "Registration information for transport %s has not arrived in time" +msgstr "Registrerings informasjon for transport %s har ikke kommet tidsnok" + +#. password required to join +#. we are banned +#. room does not exist +#: ../src/common/connection_handlers.py:1450 +#: ../src/common/connection_handlers.py:1453 +#: ../src/common/connection_handlers.py:1456 +#: ../src/common/connection_handlers.py:1459 +#: ../src/common/connection_handlers.py:1462 +#: ../src/common/connection_handlers.py:1465 +#: ../src/common/connection_handlers.py:1473 +msgid "Unable to join room" +msgstr "Klarer ikke Ã¥ gÃ¥ inn i gruppesamtale" + +#: ../src/common/connection_handlers.py:1451 +msgid "A password is required to join this room." +msgstr "Et passord kreves for Ã¥ bli med i dette samtalerommet." + +#: ../src/common/connection_handlers.py:1454 +msgid "You are banned from this room." +msgstr "Du er uønsket i dette rommet." + +#: ../src/common/connection_handlers.py:1457 +msgid "Such room does not exist." +msgstr "Et slikt rom finnes ikke." + +#: ../src/common/connection_handlers.py:1460 +msgid "Room creation is restricted." +msgstr "Rom oppretting er begrenset." + +#: ../src/common/connection_handlers.py:1463 +msgid "Your registered nickname must be used." +msgstr "Ditt registrerte kallenavn mÃ¥ bli brukt. " + +#: ../src/common/connection_handlers.py:1466 +msgid "You are not in the members list." +msgstr "Du er ikke medlems listen." + +#: ../src/common/connection_handlers.py:1474 +msgid "" +"Your desired nickname is in use or registered by another occupant.\n" +"Please specify another nickname below:" +msgstr "" +"Ditt ønskede kallenavn er i bruk eller er registrert av en annen " +"samtalebruker.\n" +"Vennligst skriv et annet kallenavn under:" + +#. BE CAREFUL: no con.updateRosterItem() in a callback +#: ../src/common/connection_handlers.py:1519 +#, python-format +msgid "we are now subscribed to %s" +msgstr "vi abbonerer nÃ¥ pÃ¥ %s" + +#: ../src/common/connection_handlers.py:1521 +#, python-format +msgid "unsubscribe request from %s" +msgstr "frakoblings ønske fra %s" + +#: ../src/common/connection_handlers.py:1523 +#, python-format +msgid "we are now unsubscribed from %s" +msgstr "vi abbonerer ikke lenger pÃ¥ %s" + +#: ../src/common/connection_handlers.py:1680 +#, fuzzy, python-format +msgid "" +"JID %s is not RFC compliant. It will not be added to your roster. Use roster " +"management tools such as http://jru.jabberstudio.org/ to remove it" +msgstr "" +"Jid %s er ikke RFC kompatilbel. Den vil ikke bli lagt til kontaktlisten. " +"Bruk kontaktliste administrasjons verktøy som http://jru.jabberstudio.org/ " +"for Ã¥ fjerne den" + +#: ../src/common/helpers.py:100 msgid "Invalid character in username." msgstr "Ugyldig karakter i brukernavn." -#: ../src/common/helpers.py:108 +#: ../src/common/helpers.py:105 msgid "Server address required." msgstr "Server adresse kreves." -#: ../src/common/helpers.py:113 +#: ../src/common/helpers.py:110 msgid "Invalid character in hostname." msgstr "Ugyldig karakter i domene navn." -#: ../src/common/helpers.py:119 +#: ../src/common/helpers.py:116 msgid "Invalid character in resource." msgstr "Ugyldig karakter i ressurs." #. GiB means gibibyte -#: ../src/common/helpers.py:159 +#: ../src/common/helpers.py:156 #, python-format msgid "%s GiB" msgstr "%s GiB" #. GB means gigabyte -#: ../src/common/helpers.py:162 +#: ../src/common/helpers.py:159 #, python-format msgid "%s GB" msgstr "%s GB" #. MiB means mibibyte -#: ../src/common/helpers.py:166 +#: ../src/common/helpers.py:163 #, python-format msgid "%s MiB" msgstr "%s MiB" #. MB means megabyte -#: ../src/common/helpers.py:169 +#: ../src/common/helpers.py:166 #, python-format msgid "%s MB" msgstr "%s MB" #. KiB means kibibyte -#: ../src/common/helpers.py:173 +#: ../src/common/helpers.py:170 #, python-format msgid "%s KiB" msgstr "%s KiB" #. KB means kilo bytes -#: ../src/common/helpers.py:176 +#: ../src/common/helpers.py:173 #, python-format msgid "%s KB" msgstr "%s KB" #. B means bytes -#: ../src/common/helpers.py:179 +#: ../src/common/helpers.py:176 #, python-format msgid "%s B" msgstr "%s B" -#: ../src/common/helpers.py:189 +#: ../src/common/helpers.py:205 msgid "_Busy" msgstr "_Opptatt" -#: ../src/common/helpers.py:191 +#: ../src/common/helpers.py:207 msgid "Busy" msgstr "Opptatt" -#: ../src/common/helpers.py:194 +#: ../src/common/helpers.py:210 msgid "_Not Available" msgstr "_Ikke Tilgjengelig" -#: ../src/common/helpers.py:196 +#: ../src/common/helpers.py:212 msgid "Not Available" msgstr "Ikke tilgjengelig" -#: ../src/common/helpers.py:199 +#: ../src/common/helpers.py:215 msgid "_Free for Chat" msgstr "_Ledig for Samtale" -#: ../src/common/helpers.py:201 +#: ../src/common/helpers.py:217 msgid "Free for Chat" msgstr "Ledig for Prat" -#: ../src/common/helpers.py:204 +#: ../src/common/helpers.py:220 msgid "_Available" msgstr "_Tilgjengelig" -#: ../src/common/helpers.py:206 +#: ../src/common/helpers.py:222 msgid "Available" msgstr "Tilgjengelig" -#: ../src/common/helpers.py:208 +#: ../src/common/helpers.py:224 msgid "Connecting" msgstr "Kobler til" -#: ../src/common/helpers.py:211 +#: ../src/common/helpers.py:227 msgid "A_way" msgstr "B_orte" -#: ../src/common/helpers.py:213 +#: ../src/common/helpers.py:229 msgid "Away" msgstr "Borte" -#: ../src/common/helpers.py:216 +#: ../src/common/helpers.py:232 msgid "_Offline" msgstr "_Frakoblet" -#: ../src/common/helpers.py:218 +#: ../src/common/helpers.py:234 msgid "Offline" msgstr "Frakoblet" -#: ../src/common/helpers.py:221 +#: ../src/common/helpers.py:237 msgid "_Invisible" msgstr "_Usynlig" -#: ../src/common/helpers.py:223 -msgid "Invisible" -msgstr "Usynlig" - -#: ../src/common/helpers.py:227 +#: ../src/common/helpers.py:243 msgid "?contact has status:Unknown" msgstr "?contact has status:Ukjent" -#: ../src/common/helpers.py:229 +#: ../src/common/helpers.py:245 msgid "?contact has status:Has errors" msgstr "?contact has status:Har feilmeldinger" -#: ../src/common/helpers.py:234 +#: ../src/common/helpers.py:250 msgid "?Subscription we already have:None" msgstr "?Subscription we already have:Ingen" -#: ../src/common/helpers.py:236 +#: ../src/common/helpers.py:252 msgid "To" msgstr "Til" -#: ../src/common/helpers.py:238 +#: ../src/common/helpers.py:254 msgid "From" msgstr "Fra" -#: ../src/common/helpers.py:240 +#: ../src/common/helpers.py:256 msgid "Both" msgstr "Begge" -#: ../src/common/helpers.py:248 +#: ../src/common/helpers.py:264 msgid "?Ask (for Subscription):None" msgstr "?Ask (for Subscription):Ingen" -#: ../src/common/helpers.py:250 +#: ../src/common/helpers.py:266 msgid "Subscribe" msgstr "Abbonér" -#: ../src/common/helpers.py:259 +#: ../src/common/helpers.py:275 msgid "?Group Chat Contact Role:None" msgstr "?Group Chat Contact Role:Ingen" -#: ../src/common/helpers.py:262 +#: ../src/common/helpers.py:278 msgid "Moderators" msgstr "Modererere" -#: ../src/common/helpers.py:264 +#: ../src/common/helpers.py:280 msgid "Moderator" msgstr "Modererer" -#: ../src/common/helpers.py:267 +#: ../src/common/helpers.py:283 msgid "Participants" msgstr "Deltakere" -#: ../src/common/helpers.py:269 +#: ../src/common/helpers.py:285 msgid "Participant" msgstr "Deltaker" -#: ../src/common/helpers.py:272 +#: ../src/common/helpers.py:288 msgid "Visitors" msgstr "Besøkende" -#: ../src/common/helpers.py:274 +#: ../src/common/helpers.py:290 msgid "Visitor" msgstr "Besøk" -#: ../src/common/helpers.py:310 +#: ../src/common/helpers.py:326 msgid "is paying attention to the conversation" msgstr "er fokusert pÃ¥ en annen samtale" -#: ../src/common/helpers.py:312 +#: ../src/common/helpers.py:328 msgid "is doing something else" msgstr "gjør noe annet" -#: ../src/common/helpers.py:314 +#: ../src/common/helpers.py:330 msgid "is composing a message..." msgstr "skriver en melding..." #. paused means he or she was compoing but has stopped for a while -#: ../src/common/helpers.py:317 +#: ../src/common/helpers.py:333 msgid "paused composing a message" msgstr "tok pause i skriving av en melding" -#: ../src/common/helpers.py:319 +#: ../src/common/helpers.py:335 msgid "has closed the chat window or tab" msgstr "har lukket samtalevinduet eller fanen" #. we talk about a file -#: ../src/common/optparser.py:62 +#: ../src/common/optparser.py:60 #, python-format msgid "error: cannot open %s for reading" msgstr "feil: kan ikke Ã¥pne %s for lesing" -#: ../src/common/optparser.py:167 +#: ../src/common/optparser.py:171 msgid "gtk+" msgstr "gtk+" -#: ../src/common/optparser.py:176 -#: ../src/common/optparser.py:177 +#: ../src/common/optparser.py:180 ../src/common/optparser.py:181 msgid "cyan" msgstr "turkis" +#~ msgid "Automatically authorize contact" +#~ msgstr "Automatisk godkjenn kontakt" + +#~ msgid "Send File" +#~ msgstr "Send Fil" + +#~ msgid "Underline" +#~ msgstr "Strek Under" + #~ msgid "Would you like to overwrite it?" #~ msgstr "Ønsker du Ã¥ overskrive den?" + #~ msgid "_Join New Room..." #~ msgstr "_Bli med i Nytt Rom" + #~ msgid "Usage: /%s, sets the groupchat window to compact mode." #~ msgstr "" #~ "Bruksanvisning: /%s, setter gruppesamtale vinduet til kompakt modus." @@ -4632,8 +5532,7 @@ msgstr "turkis" #, fuzzy #~ msgid "Please modify your special notification below" #~ msgstr "Vennligst velg ett av valgene under:" -#~ msgid "Ad_vanced Actions" -#~ msgstr "Av_anserte Handlinger" + #~ msgid "Delete Message of the Day" #~ msgstr "Slett Melding for Dagen" @@ -4644,147 +5543,146 @@ msgstr "turkis" #, fuzzy #~ msgid "I want to listen to:" #~ msgstr "%s ønsker Ã¥ sende deg en fil:" + #~ msgid "Send _New Message..." #~ msgstr "Send _Ny Melding..." + #~ msgid "Set Message of the Day" #~ msgstr "Velg Melding for Dagen" + #~ msgid "Update Message of the Day" #~ msgstr "Oppdater Melding for Dagen" + #~ msgid "_XML Console..." #~ msgstr "_XML Konsoll..." + #~ msgid "Choose Avatar" #~ msgstr "Velg Bilde" + #~ msgid "Use compact view when you open a chat window" #~ msgstr "Bruk kompakt utseende nÃ¥r du Ã¥pner et samtale vindu" + #~ msgid "Use compact view when you open a group chat window" #~ msgstr "Bruk kompakt utseende nÃ¥r du Ã¥pner et gruppe samtale vindu" + #~ msgid "plain" #~ msgstr "enkel" + #~ msgid "Send" #~ msgstr "Send" + #~ msgid "%(nickname)s in room %(room_name)s has sent you a new message." #~ msgstr "%(nickname)s i rom %(room_name)s har sendt deg en ny melding." + #~ msgid "%s has sent you a new message." #~ msgstr "%s har sendt deg en ny melding." #, fuzzy #~ msgid "GUI Migration failed" #~ msgstr "vCard publisering feilet" + #~ msgid "Logs have been successfully migrated to the database." #~ msgstr "Loggene ble migrert til databasen uten feil." + #~ msgid "If checked, Gajim will also have a trayicon" #~ msgstr "Dresom valgt vil Gajim ha et statusikon (trayicon)" + #~ msgid "_Online Users" #~ msgstr "_Online Brukere" #, fuzzy #~ msgid "Start Chat with Contact" #~ msgstr "Start samtale med konto %s" + #~ msgid "All contacts in this group are offline or have errors" #~ msgstr "Alle kontakter in denne gruppen er frakoblet eller har feil" + #~ msgid "Size: " #~ msgstr "Størrelse: " + #~ msgid "Session bus is not available" #~ msgstr "Sesjons buss ikke tilgjengelig" -#, fuzzy -#~ msgid "Unable to load idle module" -#~ msgstr "Klarer ikke Ã¥ gÃ¥ inn i gruppesamtale" -#~ msgid "Unable to join room" -#~ msgstr "Klarer ikke Ã¥ gÃ¥ inn i gruppesamtale" -#~ msgid "A password is required to join this room." -#~ msgstr "Et passord kreves for Ã¥ bli med i dette samtalerommet." -#~ msgid "You are banned from this room." -#~ msgstr "Du er uønsket i dette rommet." -#~ msgid "Such room does not exist." -#~ msgstr "Et slikt rom finnes ikke." -#~ msgid "Room creation is restricted." -#~ msgstr "Rom oppretting er begrenset." -#~ msgid "Your registered nickname must be used." -#~ msgstr "Ditt registrerte kallenavn mÃ¥ bli brukt. " -#~ msgid "You are not in the members list." -#~ msgstr "Du er ikke medlems listen." -#~ msgid "" -#~ "Your desired nickname is in use or registered by another occupant.\n" -#~ "Please specify another nickname below:" -#~ msgstr "" -#~ "Ditt ønskede kallenavn er i bruk eller er registrert av en annen " -#~ "samtalebruker.\n" -#~ "Vennligst skriv et annet kallenavn under:" -#~ msgid "we are now subscribed to %s" -#~ msgstr "vi abbonerer nÃ¥ pÃ¥ %s" -#~ msgid "unsubscribe request from %s" -#~ msgstr "frakoblings ønske fra %s" -#~ msgid "we are now unsubscribed from %s" -#~ msgstr "vi abbonerer ikke lenger pÃ¥ %s" - -#, fuzzy -#~ msgid "" -#~ "JID %s is not RFC compliant. It will not be added to your roster. Use " -#~ "roster management tools such as http://jru.jabberstudio.org/ to remove it" -#~ msgstr "" -#~ "Jid %s er ikke RFC kompatilbel. Den vil ikke bli lagt til kontaktlisten. " -#~ "Bruk kontaktliste administrasjons verktøy som http://jru.jabberstudio." -#~ "org/ for Ã¥ fjerne den" -#~ msgid "Registration information for transport %s has not arrived in time" -#~ msgstr "Registrerings informasjon for transport %s har ikke kommet tidsnok" #~ msgid "Sound" #~ msgstr "Lyd" + #~ msgid "Text" #~ msgstr "Tekst" + #~ msgid "Image" #~ msgstr "Bilde" + #~ msgid "From %s" #~ msgstr "Fra %s" + #~ msgid "To %s" #~ msgstr "Til %s" + #~ msgid "You have been invited to the %(room_jid)s room by %(contact_jid)s" #~ msgstr "Du har blitt invitert til %(room_jid)s rommet av %(contact_jid)s" + #~ msgid "Manage Emoticons" #~ msgstr "Behandle Uttrykksikoner" + #~ msgid "Or choose a preset message:" #~ msgstr "Eller velg en forhÃ¥ndsvalgt melding:" + #~ msgid "Use _emoticons" #~ msgstr "Bruk _uttrykksikoner" + #~ msgid "_Set Image..." #~ msgstr "_Velg Bilde..." + #~ msgid "Switch to %s" #~ msgstr "Endre til %s" + #~ msgid "using account " #~ msgstr "bruker konto" + #~ msgid "The filesize of image \"%s\" is too large" #~ msgstr "Filstørrelsen pÃ¥ bilde \"%s\" er for stor" + #~ msgid "The file must not be more than 32 kilobytes." #~ msgstr "Filen mÃ¥ ikke være mer enn 32 kilobyte." + #~ msgid "Timeout" #~ msgstr "Tidsavbrudd" + #~ msgid "A protocol error has occured:" #~ msgstr "En protokoll feil har skjedd:" + #~ msgid "account: " #~ msgstr "konto:" + #~ msgid "Are you sure you want to leave rooms \"%s\"?" #~ msgstr "Er du sikker pÃ¥ at du vil gÃ¥ ut av rommene \"%s\"?" + #~ msgid "If you close this window, you will be disconnected from these rooms." #~ msgstr "" #~ "Dersom du lukker dette vinduet, sÃ¥ vil du bli frakoblet fra disse rommene." + #~ msgid "Activate/Disable notification for when a file transfer is complete" #~ msgstr "Aktiver/Deaktiver melding om at filoverføring er komplett" + #~ msgid "Removing selected file transfer" #~ msgstr "Fjern valgte filoverføring" + #~ msgid "Stoping selected file transfer" #~ msgstr "Stopp valgte filoverføring" -#~ msgid "Use a single chat window with _tabs" -#~ msgstr "Bruk et enkelt samtalevindu med _faner" + #~ msgid "" #~ "If you close this tab and you have history disabled, the message will be " #~ "lost." #~ msgstr "" #~ "Dersom du lukke denne fanen og du har slÃ¥tt av historikk, vil meldingen " #~ "bli borte." + #~ msgid "Cannot remove last group" #~ msgstr "Kan ikke fjerne den siste gruppen" + #~ msgid "At least one contact group must be present." #~ msgstr "Du mÃ¥ ha minst en kontakt gruppe." + #~ msgid "" #~ "pysqlite2 (aka python-pysqlite2) dependency is missing. After you install " #~ "pysqlite3, if you want to migrate your logs to the new database, please " @@ -4794,12 +5692,13 @@ msgstr "turkis" #~ "installert pysqlite2, og om du ønsker Ã¥ migrere loggene dine til den nye " #~ "databasen, vennligst les:http://trac.gajim.org/wiki/MigrateLogToDot9DB " #~ "Avslutter..." + #~ msgid "Image is too big" #~ msgstr "Bilde er for stort" + #~ msgid "" #~ "Image for emoticon has to be less than or equal to 24 pixels in width and " #~ "24 in height." #~ msgstr "" #~ "Bilde for uttrykksikon mÃ¥ være mindre enn eller lik 24 piksler i bredde " #~ "og 24 i høyde." - diff --git a/po/pl.po b/po/pl.po index 199562f2a..54bdb4a3b 100644 --- a/po/pl.po +++ b/po/pl.po @@ -10,13 +10,13 @@ msgstr "" "Project-Id-Version: gajim 2\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2006-04-13 12:52+0200\n" -"PO-Revision-Date: 2006-05-02 20:41+0100\n" +"PO-Revision-Date: 2006-07-04 23:31+0200\n" "Last-Translator: Maciej Chojnacki \n" "Language-Team: Polish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;" #: ../gajim.desktop.in.h:1 msgid "A GTK+ Jabber client" @@ -30,31 +30,1977 @@ msgstr "Komunikator Gajim" msgid "Jabber IM Client" msgstr "Klient komunikatora Jabber" -#: ../src/advanced.py:71 +#: ../data/glade/account_context_menu.glade.h:1 +msgid "Send Single _Message..." +msgstr "WyÅ›lij _wiadomość" + +#: ../data/glade/account_context_menu.glade.h:2 +msgid "_Add Contact..." +msgstr "Dod_aj kontakt..." + +#: ../data/glade/account_context_menu.glade.h:3 +msgid "_Discover Services..." +msgstr "_Wyszukuj usÅ‚ugi..." + +#: ../data/glade/account_context_menu.glade.h:4 +#: ../data/glade/roster_window.glade.h:15 +#: ../data/glade/systray_context_menu.glade.h:5 +msgid "_Group Chat" +msgstr "_Pokój" + +#: ../data/glade/account_context_menu.glade.h:5 +msgid "_Modify Account..." +msgstr "_Modyfikuj Konto..." + +#: ../data/glade/account_context_menu.glade.h:6 +msgid "_Status" +msgstr "_Status" + +#: ../data/glade/account_creation_wizard_window.glade.h:1 +msgid "" +"Account is being created\n" +"\n" +"Please wait..." +msgstr "" +"Konto jest tworzone\n" +"\n" +"proszÄ™ czekać..." + +#: ../data/glade/account_creation_wizard_window.glade.h:4 +msgid "Please choose one of the options below:" +msgstr "Wybierz jednÄ… z poniższych opcji:" + +#: ../data/glade/account_creation_wizard_window.glade.h:5 +msgid "Please fill in the data for your new account" +msgstr "Wpisz dane do swojego nowego konta" + +#: ../data/glade/account_creation_wizard_window.glade.h:6 +msgid "Click to see features (like MSN, ICQ transports) of jabber servers" +msgstr "Kliknij by zobaczyć możliwoÅ›ci serwerów jabbera (np. transporty MSN czy ICQ)" + +#: ../data/glade/account_creation_wizard_window.glade.h:7 +msgid "Connect when I press Finish" +msgstr "PoÅ‚Ä…cz po wciÅ›niÄ™ciu przycisku ZakoÅ„cz" + +#: ../data/glade/account_creation_wizard_window.glade.h:8 +msgid "Gajim: Account Creation Wizard" +msgstr "Gajim: Kreator Konta" + +#: ../data/glade/account_creation_wizard_window.glade.h:9 +msgid "I already have an account I want to use" +msgstr "Mam już konto i chcÄ™ z niego korzystać." + +#: ../data/glade/account_creation_wizard_window.glade.h:10 +msgid "I want to _register for a new account" +msgstr "ChcÄ™ za_rejestrować nowe konto Jabbera." + +#: ../data/glade/account_creation_wizard_window.glade.h:11 +#: ../data/glade/account_modification_window.glade.h:18 +msgid "If checked, Gajim will remember the password for this account" +msgstr "WÅ‚Ä…czenie tej opcji spowoduje zapamiÄ™tanie hasÅ‚a dla tego konta." + +#: ../data/glade/account_creation_wizard_window.glade.h:12 +#: ../data/glade/manage_proxies_window.glade.h:6 +msgid "Pass_word:" +msgstr "_HasÅ‚o:" + +#: ../data/glade/account_creation_wizard_window.glade.h:13 +#: ../data/glade/account_modification_window.glade.h:37 +msgid "Save pass_word" +msgstr "Zapisz _hasÅ‚o" + +#: ../data/glade/account_creation_wizard_window.glade.h:14 +msgid "Servers Features" +msgstr "MożliwoÅ›ci serwerów" + +#: ../data/glade/account_creation_wizard_window.glade.h:15 +msgid "Set my profile when I connect" +msgstr "Ustaw profil po poÅ‚Ä…czeniu" + +#: ../data/glade/account_creation_wizard_window.glade.h:16 +msgid "" +"You need to have an account in order to connect\n" +"to the Jabber network." +msgstr "" +"Musisz posiadać konto aby poÅ‚Ä…czyć siÄ™\n" +" z sieciÄ… Jabber." + +#: ../data/glade/account_creation_wizard_window.glade.h:18 +msgid "Your JID:" +msgstr "Twój JID:" + +#: ../data/glade/account_creation_wizard_window.glade.h:19 +#: ../data/glade/roster_window.glade.h:10 +msgid "_Advanced" +msgstr "Z_aawansowane" + +#: ../data/glade/account_creation_wizard_window.glade.h:20 +msgid "_Finish" +msgstr "_ZakoÅ„cz" + +#: ../data/glade/account_creation_wizard_window.glade.h:21 +#: ../data/glade/manage_proxies_window.glade.h:9 +msgid "_Host:" +msgstr "_Host:" + +#: ../data/glade/account_creation_wizard_window.glade.h:22 +#: ../data/glade/account_modification_window.glade.h:45 +msgid "_Password:" +msgstr "_HasÅ‚o:" + +#: ../data/glade/account_creation_wizard_window.glade.h:23 +#: ../data/glade/manage_proxies_window.glade.h:10 +msgid "_Port:" +msgstr "_Port:" + +#: ../data/glade/account_creation_wizard_window.glade.h:24 +msgid "_Retype Password:" +msgstr "_Powtórz hasÅ‚o:" + +#: ../data/glade/account_creation_wizard_window.glade.h:25 +msgid "_Server:" +msgstr "_Serwer:" + +#: ../data/glade/account_creation_wizard_window.glade.h:26 +msgid "_Use proxy" +msgstr "_Korzystaj z poÅ›rednika" + +#: ../data/glade/account_creation_wizard_window.glade.h:27 +#: ../data/glade/manage_proxies_window.glade.h:11 +msgid "_Username:" +msgstr "_Nazwa użytkownika:" + +#: ../data/glade/account_modification_window.glade.h:1 +#: ../data/glade/preferences_window.glade.h:8 +msgid "Miscellaneous" +msgstr "Różne" + +#: ../data/glade/account_modification_window.glade.h:2 +msgid "OpenPGP" +msgstr "OpenPGP" + +#: ../data/glade/account_modification_window.glade.h:3 +msgid "Personal Information" +msgstr "Informacje o sobie" + +#: ../data/glade/account_modification_window.glade.h:4 +msgid "Account" +msgstr "Konto" + +#: ../data/glade/account_modification_window.glade.h:5 +msgid "Account Modification" +msgstr "Modyfikacja konta" + +#: ../data/glade/account_modification_window.glade.h:6 +msgid "Autoreconnect when connection is lost" +msgstr "Automatyczne poÅ‚Ä…czenie po utracie Å‚Ä…cznoÅ›ci" + +#: ../data/glade/account_modification_window.glade.h:7 +msgid "C_onnect on Gajim startup" +msgstr "P_oÅ‚Ä…cz przy starcie programu" + +#: ../data/glade/account_modification_window.glade.h:8 +msgid "Chan_ge Password" +msgstr "Z_mieÅ„ hasÅ‚o" + +#: ../data/glade/account_modification_window.glade.h:9 +msgid "Check this so Gajim will connect in port 5223 where legacy servers are expected to have SSL capabilities. Note that Gajim uses TLS encryption by default if broadcasted by the server, and with this option enabled TLS will be disabled" +msgstr "Zaznaczenie tej opcji spowoduje Å‚Ä…czenia na porcie 5223 gdzie wiÄ™kszość serwerów udostÄ™pnia usÅ‚ugÄ™ SSL. Gajim używa szyfrowania TLS domyÅ›lnie, jeÅ›li tylko serwer daje takÄ… możliwość. Ta opcja wyÅ‚Ä…cza TLS." + +#: ../data/glade/account_modification_window.glade.h:10 +msgid "Choose _Key..." +msgstr "Wybierz _Klucz..." + +#: ../data/glade/account_modification_window.glade.h:11 +msgid "Click to change account's password" +msgstr "Kliknij, aby zmienić hasÅ‚o dla konta" + +#: ../data/glade/account_modification_window.glade.h:12 +msgid "Connection" +msgstr "PoÅ‚Ä…czenie" + +#: ../data/glade/account_modification_window.glade.h:13 +msgid "Edit Personal Information..." +msgstr "ZmieÅ„ informacje o sobie..." + +#: ../data/glade/account_modification_window.glade.h:14 +#: ../data/glade/roster_window.glade.h:5 +#: ../src/notify.py:308 +#: ../src/notify.py:330 +#: ../src/notify.py:342 +#: ../src/tooltips.py:350 +msgid "Gajim" +msgstr "Gajim" + +#: ../data/glade/account_modification_window.glade.h:15 +#: ../data/glade/preferences_window.glade.h:44 +#: ../data/glade/vcard_information_window.glade.h:17 +#: ../src/roster_window.py:290 +#: ../src/roster_window.py:1184 +#: ../src/roster_window.py:1405 +msgid "General" +msgstr "Ogólne" + +#: ../data/glade/account_modification_window.glade.h:16 +msgid "Hostname: " +msgstr "Nazwa hosta: " + +#: ../data/glade/account_modification_window.glade.h:17 +msgid "If checked, Gajim will also broadcast some more IPs except from just your IP, so file transfer has higher chances of working." +msgstr "Jeżeli opcja jest aktywna, Gajim rozeÅ›le kilka dodatkowych adresów IP poza Twoim, tak aby przesyÅ‚anie plików przebiegaÅ‚o sprawniej." + +#: ../data/glade/account_modification_window.glade.h:19 +msgid "If checked, Gajim will send keep-alive packets so it prevents connection timeout which results in disconnection" +msgstr "Zaznaczenie tej opcji spowoduje wysyÅ‚anie pakietów podtrzymujÄ…cych poÅ‚Ä…czenie, co zapobiega rozÅ‚Ä…czaniu." + +#: ../data/glade/account_modification_window.glade.h:20 +msgid "If checked, Gajim will store the password in ~/.gajim/config with 'read' permission only for you" +msgstr "Zaznaczanie tej opcji spowoduje przechowywanie hasÅ‚a w pliku ~/.gajim/config z prawem do odczytu tylko dla ciebie." + +#: ../data/glade/account_modification_window.glade.h:21 +msgid "If checked, Gajim, when launched, will automatically connect to jabber using this account" +msgstr "Zaznaczanie tej opcji spowoduje automatyczne Å‚Ä…czenie z sieciÄ… Jabber z wykorzystaniem tego konta." + +#: ../data/glade/account_modification_window.glade.h:22 +msgid "If checked, any change to the global status (handled by the combobox at the bottom of the roster window) will change the status of this account accordingly" +msgstr "JeÅ›li jest zaznaczone, to każda zmiana statusu globalnego (ustawianego z menu na dole okna listy kontaktów) wpÅ‚ynie odpowiednio na stutus tego konta." + +#: ../data/glade/account_modification_window.glade.h:23 +msgid "Information about you, as stored in the server" +msgstr "Informacje o Tobie, takie jakie sÄ… przechowywane na serwerze" + +#: ../data/glade/account_modification_window.glade.h:24 +msgid "Manage..." +msgstr "ZarzÄ…dzaj..." + +#: ../data/glade/account_modification_window.glade.h:25 +#: ../src/config.py:1448 +msgid "No key selected" +msgstr "Nie wybrano żadnego klucza" + +#. None means no proxy profile selected +#: ../data/glade/account_modification_window.glade.h:27 +#: ../src/config.py:1053 +#: ../src/config.py:1058 +#: ../src/config.py:1230 +#: ../src/config.py:1505 +#: ../src/config.py:1578 +#: ../src/config.py:2282 +msgid "None" +msgstr "Å»aden" + +#: ../data/glade/account_modification_window.glade.h:28 +msgid "Personal Information" +msgstr "Informacje osobiste" + +#: ../data/glade/account_modification_window.glade.h:29 +msgid "Port: " +msgstr "Port: " + +#: ../data/glade/account_modification_window.glade.h:30 +msgid "Priori_ty:" +msgstr "Priory_tet:" + +#: ../data/glade/account_modification_window.glade.h:31 +msgid "Priority is used in Jabber to determine who gets the events from the jabber server when two or more clients are connected using the same account; The client with the highest priority gets the events" +msgstr "Priorytet sÅ‚uży do okreÅ›lenia, który program ma odbierać wiadomoÅ›ci z serwera gdy dwa klienty (lub wiÄ™cej) sÄ… poÅ‚Ä…czone z tym samym kontem. Ten który ma wyższy priorytet, bÄ™dzie odbieraÅ‚ wiadomoÅ›ci." + +#: ../data/glade/account_modification_window.glade.h:32 +msgid "Proxy:" +msgstr "PoÅ›rednik:" + +#: ../data/glade/account_modification_window.glade.h:33 +msgid "Resour_ce: " +msgstr "Za_soby: " + +#: ../data/glade/account_modification_window.glade.h:34 +msgid "Resource is sent to the Jabber server in order to separate the same JID in two or more parts depending on the number of the clients connected in the same server with the same account. So you might be connected in the same account with resource 'Home' and 'Work' at the same time. The resource which has the highest priority will get the events. (see below)" +msgstr "InformacjÄ™ wysÅ‚ano do serwera w celu rozdzielenia tego samego JID na dwie lub wiÄ™cej części, w zależnoÅ›ci od liczby klientów poÅ‚Ä…czonych z serwerem z tego samego konta. Możesz być poÅ‚Ä…czony z z tym samym kontem z informacjami 'Dom' i 'Praca' w tym samym czasie. Klient o najwyższym bÄ™dzie odbieraÅ‚ wiadomoÅ›ci (patrz niżej)." + +#: ../data/glade/account_modification_window.glade.h:35 +msgid "Save _passphrase (insecure)" +msgstr "Zapisz _hasÅ‚o (nie jest to bezpieczne)" + +#: ../data/glade/account_modification_window.glade.h:36 +msgid "Save conversation _logs for all contacts" +msgstr "Zapisz _logi rozmów dla wszystkich kontaktów" + +#: ../data/glade/account_modification_window.glade.h:38 +msgid "Send keep-alive packets" +msgstr "WysyÅ‚aj pakiety podtrzymujÄ…ce" + +#: ../data/glade/account_modification_window.glade.h:39 +msgid "Synch_ronize account status with global status" +msgstr "Synch_ronizuj status konta z globalnym statusem" + +#: ../data/glade/account_modification_window.glade.h:40 +msgid "Use _SSL (legacy)" +msgstr "Korzystaj z _SSL" + +#: ../data/glade/account_modification_window.glade.h:41 +msgid "Use custom hostname/port" +msgstr "Użyj wÅ‚asnej nazwy hosta/portu" + +#: ../data/glade/account_modification_window.glade.h:42 +msgid "Use file transfer proxies" +msgstr "Używaj serwerów proxy do przesyÅ‚ania plików" + +#: ../data/glade/account_modification_window.glade.h:43 +#: ../data/glade/add_new_contact_window.glade.h:6 +msgid "_Jabber ID:" +msgstr "_Jabber ID:" + +#: ../data/glade/account_modification_window.glade.h:44 +msgid "_Name: " +msgstr "_Nazwa: " + +#: ../data/glade/accounts_window.glade.h:1 +msgid "Accounts" +msgstr "Konta" + +#: ../data/glade/accounts_window.glade.h:2 +msgid "If you have 2 or more accounts and it is checked, Gajim will list all contacts as if you had one account" +msgstr "JeÅ›li masz dwa konta lub wiÄ™cej, to dziÄ™ki tej opcji Gajim pokaże wszystkie kontakty w taki sposób, jakby byÅ‚o to jedno konto." + +#: ../data/glade/accounts_window.glade.h:3 +msgid "_Merge accounts" +msgstr "_PoÅ‚Ä…cz konta" + +#: ../data/glade/accounts_window.glade.h:4 +msgid "_Modify" +msgstr "_Edytuj" + +#: ../data/glade/accounts_window.glade.h:5 +#: ../data/glade/remove_account_window.glade.h:4 +msgid "_Remove" +msgstr "_UsuÅ„" + +#: ../data/glade/add_new_contact_window.glade.h:1 +msgid "A_llow this contact to view my status" +msgstr "Pozwól mu/jej widzieć Twój status" + +#: ../data/glade/add_new_contact_window.glade.h:2 +msgid "Add New Contact" +msgstr "Dodaj nowy kontakt" + +#: ../data/glade/add_new_contact_window.glade.h:3 +msgid "I would like to add you to my contact list." +msgstr "ChciaÅ‚bym dodać CiÄ™ do listy kontaktów." + +#: ../data/glade/add_new_contact_window.glade.h:4 +msgid "_Account:" +msgstr "_Konto:" + +#: ../data/glade/add_new_contact_window.glade.h:5 +msgid "_Group:" +msgstr "_Grupa:" + +#: ../data/glade/add_new_contact_window.glade.h:7 +msgid "_Nickname:" +msgstr "_Pseudonim:" + +#: ../data/glade/add_new_contact_window.glade.h:8 +msgid "_Protocol:" +msgstr "P_rotokół:" + +#: ../data/glade/add_new_contact_window.glade.h:9 +msgid "_Subscribe" +msgstr "_Autoryzuj" + +#: ../data/glade/add_new_contact_window.glade.h:10 +msgid "_User ID:" +msgstr "_Identyfikator użytkownika:" + +#: ../data/glade/advanced_configuration_window.glade.h:1 +msgid "Description" +msgstr "Opis" + +#: ../data/glade/advanced_configuration_window.glade.h:2 +msgid "NOTE: You should restart gajim for some setting to take effect" +msgstr "UWAGA: powienieneÅ› ponownie uruchomić program by zastosować ostatnie ustawienia" + +#: ../data/glade/advanced_configuration_window.glade.h:3 +msgid "Advanced Configuration Editor" +msgstr "Edytor zaawansowanych ustawieÅ„" + +#: ../data/glade/advanced_configuration_window.glade.h:4 +msgid "Filter:" +msgstr "Filtr:" + +#: ../data/glade/advanced_menuitem_menu.glade.h:1 +msgid "Delete MOTD" +msgstr "UsuÅ„ MOTD" + +#: ../data/glade/advanced_menuitem_menu.glade.h:2 +msgid "Deletes Message of the Day" +msgstr "Usuwa Wiadomość Dnia" + +#: ../data/glade/advanced_menuitem_menu.glade.h:3 +msgid "Sends a message to currently connected users to this server" +msgstr "WyÅ›lij wiadomość do użytkowników aktualnie poÅ‚Ä…czonych z tym serwerem" + +#: ../data/glade/advanced_menuitem_menu.glade.h:4 +msgid "Set MOTD" +msgstr "Ustaw MOTD" + +#: ../data/glade/advanced_menuitem_menu.glade.h:5 +msgid "Sets Message of the Day" +msgstr "Ustawia Wiadomość Dnia" + +#: ../data/glade/advanced_menuitem_menu.glade.h:6 +msgid "Show _XML Console" +msgstr "Pokaż KonsolÄ™ _XML" + +#: ../data/glade/advanced_menuitem_menu.glade.h:7 +msgid "Update MOTD" +msgstr "Ukatualnij MOTD" + +#: ../data/glade/advanced_menuitem_menu.glade.h:8 +msgid "Updates Message of the Day" +msgstr "Uaktualnia Wiadomość Dnia" + +#: ../data/glade/advanced_menuitem_menu.glade.h:9 +msgid "_Administrator" +msgstr "_Administrator" + +#: ../data/glade/advanced_menuitem_menu.glade.h:10 +msgid "_Privacy Lists" +msgstr "_Listy prywatnoÅ›ci" + +#: ../data/glade/advanced_menuitem_menu.glade.h:11 +msgid "_Send Server Message" +msgstr "_WyÅ›lij wiadomość do serwera" + +#: ../data/glade/advanced_menuitem_menu.glade.h:12 +msgid "_Send Single Message" +msgstr "_WyÅ›lij wiadomość" + +#: ../data/glade/advanced_notifications_window.glade.h:1 +msgid " a window/tab opened with that contact " +msgstr "z tym kontaktem " + +#: ../data/glade/advanced_notifications_window.glade.h:2 +msgid "Actions" +msgstr "Akcje" + +#: ../data/glade/advanced_notifications_window.glade.h:3 +msgid "Conditions" +msgstr "Warunki" + +#: ../data/glade/advanced_notifications_window.glade.h:4 +#: ../data/glade/preferences_window.glade.h:10 +msgid "Sounds" +msgstr "DźwiÄ™ki" + +#: ../data/glade/advanced_notifications_window.glade.h:5 +msgid "Add" +msgstr "Dodaj" + +#: ../data/glade/advanced_notifications_window.glade.h:6 +msgid "Advanced Actions" +msgstr "Opcje zaawansowane" + +#: ../data/glade/advanced_notifications_window.glade.h:7 +msgid "Advanced Notifications Control" +msgstr "Edytor ustawieÅ„ zaawansowanych" + +#: ../data/glade/advanced_notifications_window.glade.h:8 +msgid "All Status " +msgstr "dowolny status " + +#: ../data/glade/advanced_notifications_window.glade.h:9 +msgid "And I " +msgstr "podczas, gdy " + +#: ../data/glade/advanced_notifications_window.glade.h:10 +msgid "Away " +msgstr "Zaraz wracam " + +#: ../data/glade/advanced_notifications_window.glade.h:11 +msgid "Busy " +msgstr "ZajÄ™ty " + +#: ../data/glade/advanced_notifications_window.glade.h:12 +msgid "Don't have " +msgstr "nie rozmawiam " + +#: ../data/glade/advanced_notifications_window.glade.h:13 +msgid "Down" +msgstr "W dół" + +#: ../data/glade/advanced_notifications_window.glade.h:14 +msgid "Have " +msgstr "rozmawiam " + +#: ../data/glade/advanced_notifications_window.glade.h:15 +#: ../src/common/helpers.py:239 +msgid "Invisible" +msgstr "Niewidoczny" + +#: ../data/glade/advanced_notifications_window.glade.h:16 +msgid "Launch a command" +msgstr "Wykonaj komendÄ™" + +#: ../data/glade/advanced_notifications_window.glade.h:17 +msgid "List of special notifications settings" +msgstr "Lista akcji dla powiadomieÅ„" + +#: ../data/glade/advanced_notifications_window.glade.h:18 +msgid "Not Available " +msgstr "Nieobecny " + +#: ../data/glade/advanced_notifications_window.glade.h:19 +msgid "Online / Free For Chat" +msgstr "DostÄ™pny / ChÄ™tny do rozmowy" + +#: ../data/glade/advanced_notifications_window.glade.h:20 +msgid "Play a sound" +msgstr "Odtwórz dźwiÄ™k" + +#: ../data/glade/advanced_notifications_window.glade.h:21 +msgid "" +"Receive a Message\n" +"Contact Connected\n" +"Contact Disconnected\n" +"Contact Change Status\n" +"Group Chat Message Highlight\n" +"Group Chat Message Received\n" +"File Transfert Resquest\n" +"File Transfert Started\n" +"File Transfert Finished" +msgstr "" +"otrzymam wiadomość\n" +"poÅ‚Ä…czy siÄ™ kontakt\n" +"kontakt siÄ™ rozÅ‚Ä…czy\n" +"kontakt zmieni status\n" +"na czacie pojawi siÄ™ sÅ‚owo kluczowe\n" +"otrzymam wiadomość na czacie\n" +"pojawi siÄ™ żądanie przesÅ‚ania pliku\n" +"rozpocznie siÄ™ transfer pliku\n" +"zakoÅ„czy siÄ™ transfer pliku" + +#: ../data/glade/advanced_notifications_window.glade.h:30 +msgid "Some special(s) status..." +msgstr "okreÅ›lony status..." + +#: ../data/glade/advanced_notifications_window.glade.h:31 +msgid "Up" +msgstr "Do góry" + +#: ../data/glade/advanced_notifications_window.glade.h:32 +msgid "When " +msgstr "Jeżeli " + +#: ../data/glade/advanced_notifications_window.glade.h:33 +msgid "_Activate Windows manager UrgencyHint to make chat taskbar to flash" +msgstr "_Migaj obramowaniem okna rozmowy" + +#: ../data/glade/advanced_notifications_window.glade.h:34 +msgid "_Disable auto opening chat window" +msgstr "WyÅ‚Ä…cz _automatyczne otwieranie okna czatu" + +#: ../data/glade/advanced_notifications_window.glade.h:35 +msgid "_Disable existing popup window" +msgstr "_WyÅ‚Ä…cz wyskakujÄ…ce okienka" + +#: ../data/glade/advanced_notifications_window.glade.h:36 +msgid "_Disable existing sound for this event" +msgstr "_WyÅ‚Ä…cz dźwiÄ™ki dla tego zdarzenia" + +#: ../data/glade/advanced_notifications_window.glade.h:37 +msgid "_Disable showing event in roster" +msgstr "WyÅ‚Ä…cz _pokazywanie zdarzenia na liÅ›cie kontaktów" + +#: ../data/glade/advanced_notifications_window.glade.h:38 +msgid "_Disable showing event in systray" +msgstr "WyÅ‚Ä…cz pokazywanie _zdarzenia w obszarze powiadamiania" + +#: ../data/glade/advanced_notifications_window.glade.h:39 +msgid "_Inform me with a popup window" +msgstr "_Powiadom mnie wyskakujÄ…cym okienkiem" + +#: ../data/glade/advanced_notifications_window.glade.h:40 +msgid "_Open chat window with user" +msgstr "_Otwórz okno rozmowy z kontaktem" + +#: ../data/glade/advanced_notifications_window.glade.h:41 +msgid "_Show event in roster" +msgstr "_Pokaż zdarzenie na liÅ›cie kontaktów" + +#: ../data/glade/advanced_notifications_window.glade.h:42 +msgid "_Show event in systray" +msgstr "Pokaż _zdarzenie w obszarze powiadamiania" + +#: ../data/glade/advanced_notifications_window.glade.h:43 +msgid "" +"contact(s)\n" +"group(s)\n" +"everybody" +msgstr "" +"kontaktu(-ów)\n" +"grupy(grup)\n" +"wszystkich" + +#: ../data/glade/advanced_notifications_window.glade.h:46 +msgid "for " +msgstr "dla " + +#: ../data/glade/advanced_notifications_window.glade.h:47 +msgid "when I'm " +msgstr "kiedy mam " + +#: ../data/glade/change_password_dialog.glade.h:1 +msgid "Change Password" +msgstr "ZmieÅ„ hasÅ‚o" + +#: ../data/glade/change_password_dialog.glade.h:2 +msgid "Enter it again for confirmation:" +msgstr "Wpisz ponownie nowe hasÅ‚o:" + +#: ../data/glade/change_password_dialog.glade.h:3 +msgid "Enter new password:" +msgstr "Wpisz nowe hasÅ‚o:" + +#: ../data/glade/change_status_message_dialog.glade.h:1 +msgid "Type your new status message" +msgstr "Wpisz nowy opis statusu:" + +#: ../data/glade/change_status_message_dialog.glade.h:2 +msgid "Preset messages:" +msgstr "Szablony opisów:" + +#: ../data/glade/change_status_message_dialog.glade.h:3 +msgid "Save as Preset..." +msgstr "Zapisz jako szablon..." + +#: ../data/glade/chat_context_menu.glade.h:1 +msgid "Join _Group Chat" +msgstr "DoÅ‚Ä…cz do _pokoju" + +#: ../data/glade/chat_context_menu.glade.h:2 +#: ../data/glade/chat_control_popup_menu.glade.h:4 +#: ../data/glade/gc_occupants_menu.glade.h:2 +#: ../data/glade/roster_contact_context_menu.glade.h:8 +msgid "_Add to Roster" +msgstr "Dod_aj do listy kontaktów" + +#: ../data/glade/chat_context_menu.glade.h:3 +msgid "_Copy JID/Email Address" +msgstr "_Kopiuj JID/Adres e-mail" + +#: ../data/glade/chat_context_menu.glade.h:4 +msgid "_Copy Link Location" +msgstr "_Kopiuj adres odnoÅ›nika" + +#: ../data/glade/chat_context_menu.glade.h:5 +msgid "_Open Email Composer" +msgstr "_Otwórz Klienta Poczty" + +#: ../data/glade/chat_context_menu.glade.h:6 +msgid "_Open Link in Browser" +msgstr "_Otwórz Link w przeglÄ…darce" + +#: ../data/glade/chat_context_menu.glade.h:7 +#: ../data/glade/roster_window.glade.h:19 +#: ../data/glade/systray_context_menu.glade.h:6 +msgid "_Start Chat" +msgstr "_Rozpocznij rozmowÄ™" + +#: ../data/glade/chat_control_popup_menu.glade.h:1 +msgid "Click to see past conversations with this contact" +msgstr "Kliknij by zobaczyć poprzednie rozmowy z tym kontaktem" + +#: ../data/glade/chat_control_popup_menu.glade.h:2 +#: ../data/glade/roster_contact_context_menu.glade.h:6 +msgid "Send _File" +msgstr "WyÅ›lij _plik" + +#: ../data/glade/chat_control_popup_menu.glade.h:3 +msgid "Toggle Open_PGP Encryption" +msgstr "WÅ‚Ä…cz/wyÅ‚Ä…cz szyfrowanie Open_PGP" + +#: ../data/glade/chat_control_popup_menu.glade.h:5 +#: ../data/glade/gc_control_popup_menu.glade.h:6 +msgid "_Compact View Alt+C" +msgstr "Widok _zwarty Alt+C" + +#: ../data/glade/chat_control_popup_menu.glade.h:6 +#: ../data/glade/gc_control_popup_menu.glade.h:7 +#: ../data/glade/gc_occupants_menu.glade.h:5 +#: ../data/glade/roster_contact_context_menu.glade.h:11 +msgid "_History" +msgstr "_Historia" + +#: ../data/glade/data_form_window.glade.h:1 +msgid "Room Configuration" +msgstr "Konfiguracja pokoju" + +#: ../data/glade/edit_groups_dialog.glade.h:1 +msgid "Edit Groups" +msgstr "Edytuj Grupy" + +#: ../data/glade/filetransfers.glade.h:1 +msgid "A list of active, completed and stopped file transfers" +msgstr "Lista aktywnych, ukoÅ„czonych i zatrzymanych transferów plików." + +#: ../data/glade/filetransfers.glade.h:2 +msgid "Cancel file transfer" +msgstr "Usuwa transfer pliku" + +#: ../data/glade/filetransfers.glade.h:3 +msgid "Cancels the selected file transfer" +msgstr "Usuwa wybrany transfer pliku" + +#: ../data/glade/filetransfers.glade.h:4 +msgid "Cancels the selected file transfer and removes incomplete file" +msgstr "Usuwa wybrany transfer pliku i usuwa niedokoÅ„czony plik" + +#: ../data/glade/filetransfers.glade.h:5 +msgid "Clean _up" +msgstr "P_osprzÄ…taj" + +#: ../data/glade/filetransfers.glade.h:6 +msgid "File Transfers" +msgstr "PrzesyÅ‚ane pliki." + +#: ../data/glade/filetransfers.glade.h:7 +msgid "Hides the window" +msgstr "Ukrywa okno" + +#: ../data/glade/filetransfers.glade.h:8 +msgid "Remove file transfer from the list." +msgstr "UsuÅ„ przesyÅ‚anie tego pliku z listy." + +#: ../data/glade/filetransfers.glade.h:9 +msgid "Removes completed, canceled and failed file transfers from the list" +msgstr "Usuwa zakoÅ„czone, przerwane i nieudane transfery plików z listy" + +#: ../data/glade/filetransfers.glade.h:10 +msgid "Shows a list of file transfers between you and other" +msgstr "Pokaż listÄ™ przesÅ‚anych plików pomiÄ™dzy tobÄ… a innymi" + +#: ../data/glade/filetransfers.glade.h:11 +msgid "This action removes single file transfer from the list. If the transfer is active, it is first stopped and then removed" +msgstr "To dziaÅ‚anie spowoduje usuniÄ™cie przesyÅ‚u pliku z listy. JeÅ›li jest on aktywnyto najpierw zostanie zatrzymany a dopiero potem usuniÄ™ty." + +#: ../data/glade/filetransfers.glade.h:12 +msgid "When a file transfer is complete show a popup notification" +msgstr "Gdy plik w caÅ‚oÅ›ci zostanie przesÅ‚any, wyÅ›wietl okno powiadomienia" + +#: ../data/glade/filetransfers.glade.h:13 +#: ../src/filetransfers_window.py:753 +msgid "_Continue" +msgstr "_Kontynuuj" + +#: ../data/glade/filetransfers.glade.h:14 +msgid "_Notify me when a file transfer is complete" +msgstr "_Powiadom mnie gdy przesyÅ‚anie pliku dobiegnie koÅ„ca." + +#: ../data/glade/filetransfers.glade.h:15 +#: ../src/filetransfers_window.py:190 +msgid "_Open Containing Folder" +msgstr "_Otwórz katalog zawierajÄ…cy ten plik." + +#: ../data/glade/filetransfers.glade.h:16 +msgid "_Pause" +msgstr "_Zatrzymaj" + +#: ../data/glade/filetransfers.glade.h:17 +msgid "file transfers list" +msgstr "Lista przesyÅ‚anych plików" + +#: ../data/glade/gajim_themes_window.glade.h:1 +msgid "Chatstate Tab Colors" +msgstr "Kolory kart w oknie czatu" + +#: ../data/glade/gajim_themes_window.glade.h:2 +msgid "" +"Account\n" +"Group\n" +"Contact\n" +"Banner" +msgstr "" +"Konto\n" +"Grupa\n" +"Kontakt\n" +"Banner" + +#: ../data/glade/gajim_themes_window.glade.h:6 +#: ../data/glade/privacy_list_edit_window.glade.h:4 +#: ../src/config.py:326 +msgid "Active" +msgstr "Aktywny" + +#: ../data/glade/gajim_themes_window.glade.h:7 +msgid "Bold" +msgstr "WytÅ‚uszczone" + +#: ../data/glade/gajim_themes_window.glade.h:8 +msgid "Composing" +msgstr "Tworzenie wiadomoÅ›ci" + +#: ../data/glade/gajim_themes_window.glade.h:9 +msgid "Font style:" +msgstr "Styl czcionki:" + +#: ../data/glade/gajim_themes_window.glade.h:10 +msgid "Gajim Themes Customization" +msgstr "Wybieranie motywów dla Gajim" + +#: ../data/glade/gajim_themes_window.glade.h:11 +msgid "Gone" +msgstr "ZniknÄ…Å‚" + +#: ../data/glade/gajim_themes_window.glade.h:12 +msgid "Inactive" +msgstr "Nieaktywny" + +#: ../data/glade/gajim_themes_window.glade.h:13 +msgid "Italic" +msgstr "Kursywa" + +#: ../data/glade/gajim_themes_window.glade.h:14 +msgid "" +"MUC\n" +"Messages" +msgstr "" +"MUC\n" +"WiadomoÅ›ci" + +#: ../data/glade/gajim_themes_window.glade.h:16 +msgid "" +"MUC Directed\n" +"Messages" +msgstr "" +"Czat\n" +"WiadomoÅ›ci" + +#: ../data/glade/gajim_themes_window.glade.h:18 +#: ../src/tooltips.py:667 +msgid "Paused" +msgstr "Zatrzymany" + +#: ../data/glade/gajim_themes_window.glade.h:19 +msgid "Text _color:" +msgstr "_Kolor tekstu:" + +#: ../data/glade/gajim_themes_window.glade.h:20 +msgid "Text _font:" +msgstr "_Czcionka tekstu:" + +#: ../data/glade/gajim_themes_window.glade.h:21 +msgid "_Background:" +msgstr "_TÅ‚o:" + +#: ../data/glade/gc_control_popup_menu.glade.h:1 +msgid "Change _Nickname" +msgstr "ZmieÅ„ pseudo_nim" + +#: ../data/glade/gc_control_popup_menu.glade.h:2 +msgid "Change _Subject" +msgstr "ZmieÅ„ _temat" + +#: ../data/glade/gc_control_popup_menu.glade.h:3 +msgid "Click to see past conversation in this room" +msgstr "Kliknij by zobaczyć poprzednie rozmowy w tym pokoju" + +#: ../data/glade/gc_control_popup_menu.glade.h:4 +msgid "Configure _Room" +msgstr "Konfiguruj _pokój" + +#: ../data/glade/gc_control_popup_menu.glade.h:5 +msgid "_Bookmark This Room" +msgstr "Dodaj _zakÅ‚adkÄ™ dla tego pokoju" + +#: ../data/glade/gc_occupants_menu.glade.h:1 +msgid "Mo_derator" +msgstr "Mo_derator" + +#: ../data/glade/gc_occupants_menu.glade.h:3 +msgid "_Admin" +msgstr "_Administrator" + +#: ../data/glade/gc_occupants_menu.glade.h:4 +msgid "_Ban" +msgstr "Za_banuj" + +#: ../data/glade/gc_occupants_menu.glade.h:6 +msgid "_Kick" +msgstr "Wy_rzuć" + +#: ../data/glade/gc_occupants_menu.glade.h:7 +msgid "_Member" +msgstr "_Uczestnik" + +#: ../data/glade/gc_occupants_menu.glade.h:8 +msgid "_Occupant Actions" +msgstr "DziaÅ‚ania użytk_ownika" + +#: ../data/glade/gc_occupants_menu.glade.h:9 +msgid "_Owner" +msgstr "_WÅ‚aÅ›ciciel" + +#: ../data/glade/gc_occupants_menu.glade.h:10 +msgid "_Send Private Message" +msgstr "_WyÅ›lij prywatnÄ… wiadomość" + +#: ../data/glade/gc_occupants_menu.glade.h:11 +msgid "_Voice" +msgstr "_GÅ‚os" + +#: ../data/glade/history_manager.glade.h:1 +msgid "" +"Welcome to Gajim History Logs Manager\n" +"\n" +"You can select logs from the left and/or search database from below.\n" +"\n" +"WARNING:\n" +"If you plan to do massive deletions, please make sure Gajim is not running. Generally avoid deletions with contacts you currently chat with." +msgstr "" +"Witamy w Menedżerze historii rozmów Gajima\n" +"\n" +"Z lewej strony znajduje siÄ™ lista logów z historiÄ… rozmów, za pomocÄ… poniższego pola możesz bezpoÅ›rednio przeszukiwać bazÄ™ danych.\n" +"\n" +"UWAGA:\n" +"Jeżeli chcesz usuwać wiele danych, upewnij siÄ™ najpierw że Gajim nie jest uruchomiony. Unikaj też usuwania historii rozmów kontaktów, z którymi wÅ‚aÅ›nie rozmawiasz." + +#: ../data/glade/history_manager.glade.h:7 +msgid "Delete" +msgstr "UsuÅ„" + +#: ../data/glade/history_manager.glade.h:8 +msgid "Export" +msgstr "Eksport" + +#: ../data/glade/history_manager.glade.h:9 +msgid "Gajim History Logs Manager" +msgstr "Menedżer historii rozmów Gajima" + +#: ../data/glade/history_manager.glade.h:10 +msgid "_Search Database" +msgstr "_Szukaj w bazie" + +#: ../data/glade/history_window.glade.h:1 +msgid "Build custom query" +msgstr "Stwórz wÅ‚asne zapytanie" + +#: ../data/glade/history_window.glade.h:2 +msgid "Conversation History" +msgstr "Historia rozmowy" + +#: ../data/glade/history_window.glade.h:3 +msgid "Query Builder..." +msgstr "Kreator zapytaÅ„..." + +#: ../data/glade/history_window.glade.h:4 +msgid "Search" +msgstr "Szukaj" + +#: ../data/glade/history_window.glade.h:5 +msgid "_Search" +msgstr "_Szukaj" + +#: ../data/glade/invitation_received_dialog.glade.h:1 +msgid "Accept" +msgstr "Akceptuj" + +#: ../data/glade/invitation_received_dialog.glade.h:2 +#: ../data/glade/privacy_list_edit_window.glade.h:8 +msgid "Deny" +msgstr "Odmów" + +#: ../data/glade/invitation_received_dialog.glade.h:3 +msgid "Invitation Received" +msgstr "Zaproszenie Odebrane" + +#: ../data/glade/join_groupchat_window.glade.h:1 +#: ../src/dialogs.py:941 +msgid "Join Group Chat" +msgstr "DoÅ‚Ä…cz do pokoju" + +#: ../data/glade/join_groupchat_window.glade.h:2 +#: ../data/glade/manage_bookmarks_window.glade.h:4 +#: ../data/glade/vcard_information_window.glade.h:28 +msgid "Nickname:" +msgstr "Pseudonim:" + +#: ../data/glade/join_groupchat_window.glade.h:3 +#: ../data/glade/manage_bookmarks_window.glade.h:5 +msgid "Password:" +msgstr "HasÅ‚o:" + +#: ../data/glade/join_groupchat_window.glade.h:4 +msgid "Recently:" +msgstr "Ostatnio:" + +#: ../data/glade/join_groupchat_window.glade.h:5 +#: ../data/glade/manage_bookmarks_window.glade.h:7 +msgid "Room:" +msgstr "Pokój:" + +#: ../data/glade/join_groupchat_window.glade.h:6 +#: ../data/glade/manage_bookmarks_window.glade.h:8 +msgid "Server:" +msgstr "Serwer:" + +#: ../data/glade/join_groupchat_window.glade.h:7 +#: ../src/disco.py:1145 +#: ../src/disco.py:1507 +msgid "_Join" +msgstr "_DoÅ‚Ä…cz" + +#: ../data/glade/manage_accounts_window.glade.h:1 +msgid "Manage Accounts" +msgstr "ZarzÄ…dzaj kontami" + +#: ../data/glade/manage_bookmarks_window.glade.h:1 +msgid "Auto join" +msgstr "PoÅ‚Ä…cz automatycznie" + +#: ../data/glade/manage_bookmarks_window.glade.h:2 +msgid "If checked, Gajim will join this group chat on startup" +msgstr "Zaznaczenie spowoduje Å‚Ä…czenie z tym pokojem przy starcie programu." + +#: ../data/glade/manage_bookmarks_window.glade.h:3 +msgid "Manage Bookmarks" +msgstr "ZarzÄ…dzaj zakÅ‚adkami" + +#: ../data/glade/manage_bookmarks_window.glade.h:6 +msgid "Print status:" +msgstr "WyÅ›wietlaj status:" + +#: ../data/glade/manage_bookmarks_window.glade.h:9 +msgid "Title:" +msgstr "TytuÅ‚:" + +#: ../data/glade/manage_proxies_window.glade.h:1 +msgid "Properties" +msgstr "WÅ‚aÅ›ciwoÅ›ci" + +#: ../data/glade/manage_proxies_window.glade.h:2 +msgid "Settings" +msgstr "Ustawienia" + +#: ../data/glade/manage_proxies_window.glade.h:3 +msgid "HTTP Connect" +msgstr "PoÅ‚Ä…czenie HTTP" + +#: ../data/glade/manage_proxies_window.glade.h:4 +msgid "Manage Proxy Profiles" +msgstr "ZarzÄ…dzaj profilami poÅ›rednika" + +#: ../data/glade/manage_proxies_window.glade.h:5 +#: ../data/glade/vcard_information_window.glade.h:27 +msgid "Name:" +msgstr "Nazwa:" + +#: ../data/glade/manage_proxies_window.glade.h:7 +msgid "Type:" +msgstr "Typ:" + +#: ../data/glade/manage_proxies_window.glade.h:8 +msgid "Use authentication" +msgstr "Używaj autoryzacji" + +#: ../data/glade/message_window.glade.h:1 +msgid "Click to insert an emoticon (Alt+M)" +msgstr "Kliknij by wstawić emotikon (Alt+E)" + +#: ../data/glade/message_window.glade.h:2 +#: ../src/chat_control.py:966 +msgid "OpenPGP Encryption" +msgstr "Szyfrowanie OpenPGP" + +#. Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector) +#: ../data/glade/message_window.glade.h:4 +#: ../data/glade/roster_window.glade.h:9 +msgid "_Actions" +msgstr "Dzi_aÅ‚ania" + +#. Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector) +#: ../data/glade/message_window.glade.h:6 +#: ../data/glade/xml_console_window.glade.h:11 +#: ../src/filetransfers_window.py:249 +msgid "_Send" +msgstr "_WyÅ›lij" + +#: ../data/glade/passphrase_dialog.glade.h:1 +msgid "Passphrase" +msgstr "HasÅ‚o" + +#: ../data/glade/preferences_window.glade.h:1 +msgid "Advanced Configuration Editor" +msgstr "Edytor zaawansowanych konfiguracji" + +#: ../data/glade/preferences_window.glade.h:2 +msgid "Applications" +msgstr "Aplikacje" + +#. a header for custom browser/client/file manager. so translate sth like: Custom Settings +#: ../data/glade/preferences_window.glade.h:4 +msgid "Custom" +msgstr "WÅ‚asne" + +#: ../data/glade/preferences_window.glade.h:5 +msgid "Format of a line" +msgstr "Format linii" + +#: ../data/glade/preferences_window.glade.h:6 +msgid "GMail Options" +msgstr "Opcje konta GMail" + +#: ../data/glade/preferences_window.glade.h:7 +msgid "Interface Customization" +msgstr "WÅ‚asne ustawienia interfejsu" + +#: ../data/glade/preferences_window.glade.h:9 +msgid "Preset Status Messages" +msgstr "Zapisane opisy" + +#: ../data/glade/preferences_window.glade.h:11 +msgid "Visual Notifications" +msgstr "Powiadomienia wizualne" + +#: ../data/glade/preferences_window.glade.h:12 +msgid "A_fter nickname:" +msgstr "_Za pseudonimem:" + +#: ../data/glade/preferences_window.glade.h:13 +msgid "Advanced" +msgstr "Zaawansowane" + +#: ../data/glade/preferences_window.glade.h:14 +msgid "" +"All chat states\n" +"Composing only\n" +"Disabled" +msgstr "" +"Wszystkie stany rozmowy\n" +"Tylko dotyczÄ…ce pisania\n" +"WyÅ‚Ä…czone" + +#: ../data/glade/preferences_window.glade.h:17 +msgid "Allow _OS information to be sent" +msgstr "Zezwól na wysyÅ‚anie informacji o systemie _operacyjnym" + +#: ../data/glade/preferences_window.glade.h:18 +msgid "Allow popup/notifications when I'm _away/na/busy/invisible" +msgstr "Pokazuj powiadomienia gdy mam status _zaraz wracam/nieobecny/zajÄ™ty/niewidoczny." + +#: ../data/glade/preferences_window.glade.h:19 +msgid "Also known as iChat style" +msgstr "Znany także jako styl iChat" + +#: ../data/glade/preferences_window.glade.h:20 +msgid "Ask status message when I:" +msgstr "Pytaj o opis przy zmianie statusu na:" + +#: ../data/glade/preferences_window.glade.h:21 +msgid "Auto _away after:" +msgstr "Automatyczny status '_Zaraz wracam' po:" + +#: ../data/glade/preferences_window.glade.h:22 +msgid "Auto _not available after:" +msgstr "Automatyczny status '_Nieobecny' po:" + +#: ../data/glade/preferences_window.glade.h:23 +msgid "" +"Autodetect on every Gajim startup\n" +"Always use GNOME default applications\n" +"Always use KDE default applications\n" +"Custom" +msgstr "" +"Automatyczne wykrywanie przy każdym uruchomieniu Gajima\n" +"Zawsze używaj domyÅ›lnych aplikacji GNOME\n" +"Zawsze używaj domyÅ›lnych aplikacji KDE\n" +"WÅ‚asne" + +#: ../data/glade/preferences_window.glade.h:27 +msgid "B_efore nickname:" +msgstr "_Przed pseudonimem:" + +#: ../data/glade/preferences_window.glade.h:28 +#: ../src/chat_control.py:718 +msgid "Chat" +msgstr "Rozmowa" + +#: ../data/glade/preferences_window.glade.h:29 +msgid "Chat state noti_fications:" +msgstr "Powiadomienia o stanie _rozmowy:" + +#: ../data/glade/preferences_window.glade.h:30 +msgid "Check this option, only if someone you don't have in the roster spams/annoys you. Use with caution, cause it blocks all messages from any contact that is not in the roster" +msgstr "Zaznacz tÄ™ opcjÄ™ tylko jeÅ›li ktoÅ› spoza listy kontaktów nÄ™ka CiÄ™ wiadomoÅ›ciami. Stosuj jÄ… ostrożnie, ponieważ powoduje ona blokowanie wszystkich wiadomoÅ›ci osób, których nie masz na liÅ›cie kontaktów." + +#: ../data/glade/preferences_window.glade.h:31 +msgid "Default status _iconset:" +msgstr "DomyÅ›lny zestaw ikon _statusu:" + +#: ../data/glade/preferences_window.glade.h:32 +msgid "Display _extra email details" +msgstr "WyÅ›wietlaj _dodatkowe informacje o poczcie e-mail" + +#: ../data/glade/preferences_window.glade.h:33 +msgid "Display a_vatars of contacts in roster" +msgstr "WyÅ›wietlaj awatary kontaktów z listy" + +#: ../data/glade/preferences_window.glade.h:34 +msgid "Display status _messages of contacts in roster" +msgstr "WyÅ›wietlaj _opisy statusu kontaktu na liÅ›cie kontaktów" + +#: ../data/glade/preferences_window.glade.h:35 +msgid "E_very 5 minutes" +msgstr "Co 5 _minut" + +#: ../data/glade/preferences_window.glade.h:36 +msgid "Emoticons:" +msgstr "Emotikony:" + +#: ../data/glade/preferences_window.glade.h:37 +msgid "Events" +msgstr "Zdarzenia" + +#: ../data/glade/preferences_window.glade.h:38 +msgid "Gajim can send and receive meta-information related to a conversation you may have with a contact. Here you can specify which chatstates you want to send to the other party." +msgstr "Gajim może wysyÅ‚ać i odbierać meta-infomacje zwiÄ…zane z prowadzonÄ… rozmowÄ…. W tym miejscu możesz zdecydować, jakie dane chcesz wysyÅ‚ać do rozmówcy." + +#: ../data/glade/preferences_window.glade.h:39 +msgid "Gajim will automatically show new events by poping up the relative window" +msgstr "Gajim automatycznie wyÅ›wietli nowÄ… wiadomość w nowym oknie lub w nowej karcie otwartego okna rozmowy." + +#: ../data/glade/preferences_window.glade.h:40 +msgid "Gajim will notify you for new events via a popup in the bottom right of the screen" +msgstr "Gajim powiadomi CiÄ™ o nadejÅ›ciu nowej wiadomoÅ›ci wyÅ›wietlajÄ…c okienko w prawym dolnym rogu ekranu." + +#: ../data/glade/preferences_window.glade.h:41 +msgid "Gajim will notify you via a popup window in the bottom right of the screen about contacts that just signed in" +msgstr "Gajim powiadomi automatycznie przy pomocy okna w prawym dolnym rogu o kontaktach, które zmieniajÄ… status na DostÄ™pny." + +#: ../data/glade/preferences_window.glade.h:42 +msgid "Gajim will notify you via a popup window in the bottom right of the screen about contacts that just signed out" +msgstr "Gajim powiadomi automatycznie przy pomocy okna w prawym dolnym rogu o kontaktach które zmieniajÄ… status na RozÅ‚Ä…czony." + +#: ../data/glade/preferences_window.glade.h:43 +msgid "Gajim will only change the icon of the contact that triggered the new event" +msgstr "Gajim zmieni jedynie ikonÄ™ kontaktu, który przysÅ‚aÅ‚ nowÄ… wiadomość." + +#: ../data/glade/preferences_window.glade.h:45 +msgid "If checked, Gajim will display avatars of contacts in roster window and in group chats" +msgstr "Zaznaczenie tej opcji spowoduje wyÅ›wietlanie awatarów w oknie listy kontaktów (roster oraz okno czatu)." + +#: ../data/glade/preferences_window.glade.h:46 +msgid "If checked, Gajim will display status messages of contacts under the contact name in roster window and in group chats" +msgstr "JeÅ›li jest zaznaczone, Gajim bÄ™dzie wyÅ›wietlaÅ‚ opis statusu kontaktu pod jego nazwÄ… na liÅ›cie kontaktów." + +#: ../data/glade/preferences_window.glade.h:47 +msgid "If checked, Gajim will remember the roster and chat window positions in the screen and the sizes of them next time you run it" +msgstr "Zaznaczenie tej opcji spowoduje zapamiÄ™tanie poÅ‚ożenia głównego okna programu na ekranie oraz jego rozmiaru." + +#: ../data/glade/preferences_window.glade.h:48 +msgid "If checked, Gajim will use protocol-specific status icons. (eg. A contact from MSN will have the equivalent msn icon for status online, away, busy, etc...)" +msgstr "DziÄ™ki tej opcji Gajim bÄ™dzie używaÅ‚ zestawów ikon charakterystycznych dla transportu, np. kontakt z MSN bÄ™dzie miaÅ‚ odpowiednie ikony statusu dostÄ™pny, zaraz wracam, zajÄ™ty, itd." + +#: ../data/glade/preferences_window.glade.h:49 +msgid "If not disabled, Gajim will replace ascii smilies like ':)' with equivalent animated or static graphical emoticons" +msgstr "Zaznaczenie tej opcji spowoduje zastÄ…pienie emotikon tekstowych jak ':)' emotikonami graficznymi." + +#: ../data/glade/preferences_window.glade.h:50 +msgid "Ma_nage..." +msgstr "Za_rzÄ…dzaj..." + +#: ../data/glade/preferences_window.glade.h:51 +msgid "" +"Never\n" +"Always\n" +"Per account\n" +"Per type" +msgstr "" +"Nigdy\n" +"Zawsze\n" +"WedÅ‚ug konta\n" +"WedÅ‚ug typu" + +#: ../data/glade/preferences_window.glade.h:55 +msgid "Notify me about contacts that: " +msgstr "Powiadom mnie o kontaktach zmieniajÄ…cych status na: " + +#: ../data/glade/preferences_window.glade.h:56 +msgid "Notify on new _GMail email" +msgstr "Powiadamiaj o nowej poczcie na koncie _GMail" + +#: ../data/glade/preferences_window.glade.h:57 +msgid "On every _message" +msgstr "W każdej _wiadomoÅ›ci" + +#: ../data/glade/preferences_window.glade.h:58 +msgid "One message _window:" +msgstr "WyÅ›lij wiadomość i _zamknij okno" + +#: ../data/glade/preferences_window.glade.h:59 +msgid "Play _sounds" +msgstr "Odtwórz _dźwiÄ™k" + +#: ../data/glade/preferences_window.glade.h:60 +msgid "Preferences" +msgstr "Ustawienia" + +#: ../data/glade/preferences_window.glade.h:61 +msgid "Print time:" +msgstr "WyÅ›wietlaj czas:" + +#: ../data/glade/preferences_window.glade.h:62 +msgid "Save _position and size for roster and chat windows" +msgstr "Zapisz _pozycjÄ™ i rozmiar okna kontaktów i okna rozmowy" + +#: ../data/glade/preferences_window.glade.h:63 +msgid "Show only in _roster" +msgstr "Pokaż tylko _listÄ™ kontaktów" + +#: ../data/glade/preferences_window.glade.h:64 +msgid "Sign _in" +msgstr "_PoÅ‚Ä…czony" + +#: ../data/glade/preferences_window.glade.h:65 +msgid "Sign _out" +msgstr "R_ozÅ‚Ä…czony" + +#: ../data/glade/preferences_window.glade.h:66 +msgid "Status" +msgstr "Status" + +#: ../data/glade/preferences_window.glade.h:67 +msgid "T_heme:" +msgstr "_Motyw:" + +#: ../data/glade/preferences_window.glade.h:68 +msgid "The auto away status message" +msgstr "Automatyczny status \"Zaraz wracam\"" + +#: ../data/glade/preferences_window.glade.h:69 +msgid "The auto not available status message" +msgstr "Automatyczny status \"Nieobecny\"." + +#: ../data/glade/preferences_window.glade.h:70 +msgid "Use _transports iconsets" +msgstr "Używaj zestawów ikon _transportów" + +#: ../data/glade/preferences_window.glade.h:71 +msgid "Use system _default" +msgstr "Użyj _domyÅ›lnej dla systemu" + +#: ../data/glade/preferences_window.glade.h:72 +msgid "Use t_rayicon (aka. notification area icon)" +msgstr "_Ikona w obszarze powiadamiania" + +#: ../data/glade/preferences_window.glade.h:73 +msgid "When a new event (message, file transfer request etc..) is received, the following methods may be used to inform you about it. Please note that events about new messages only occur if it is a new message from a contact you are not already chatting with" +msgstr "Kiedy pojawi siÄ™ nowe zdarzenie (wiadomość, proÅ›ba o przesÅ‚anie pliku itp.), możesz zostać o tym powiadomiony na takie sposoby. UWAGA: Nowa wiadomość pojawia siÄ™ jeÅ›li nie pochodzi od osoby, z którÄ… aktualnie rozmawiasz." + +#: ../data/glade/preferences_window.glade.h:74 +msgid "When new event is received" +msgstr "Gdy odebrane zostanie nowe zdarzenie" + +#: ../data/glade/preferences_window.glade.h:75 +msgid "_Advanced Notifications Control..." +msgstr "_Edytor zaawansowanych ustawieÅ„" + +#: ../data/glade/preferences_window.glade.h:76 +msgid "_After time:" +msgstr "_Po czasie:" + +#: ../data/glade/preferences_window.glade.h:77 +msgid "_Before time:" +msgstr "P_rzed czasem:" + +#: ../data/glade/preferences_window.glade.h:78 +msgid "_Browser:" +msgstr "Prze_glÄ…darka:" + +#: ../data/glade/preferences_window.glade.h:79 +msgid "_File manager:" +msgstr "Menadżer _plików:" + +#: ../data/glade/preferences_window.glade.h:80 +msgid "_Font:" +msgstr "_Czcionka:" + +#: ../data/glade/preferences_window.glade.h:81 +msgid "_Highlight misspelled words" +msgstr "PodÅ›_wietlaj bÅ‚Ä™dy w pisowni" + +#: ../data/glade/preferences_window.glade.h:82 +msgid "_Ignore events from contacts not in the roster" +msgstr "_Ignoruj wiadomoÅ›ci od osób spoza listy kontaktów" + +#: ../data/glade/preferences_window.glade.h:83 +msgid "_Incoming message:" +msgstr "Wiadomość _otrzymana:" + +#: ../data/glade/preferences_window.glade.h:84 +msgid "_Log status changes of contacts" +msgstr "_Zapisuj w logach zmiany statusów kontaktów" + +#: ../data/glade/preferences_window.glade.h:85 +msgid "_Mail client:" +msgstr "Klient _poczty:" + +#: ../data/glade/preferences_window.glade.h:86 +msgid "_Never" +msgstr "_Nigdy" + +#: ../data/glade/preferences_window.glade.h:87 +msgid "_Notify me about it" +msgstr "Powia_dom mnie o tym" + +#: ../data/glade/preferences_window.glade.h:88 +msgid "_Open..." +msgstr "_Otwórz..." + +#: ../data/glade/preferences_window.glade.h:89 +msgid "_Outgoing message:" +msgstr "WysÅ‚ana wiadomość :" + +#: ../data/glade/preferences_window.glade.h:90 +msgid "_Player:" +msgstr "_Program odtwarzajÄ…cy dźwiÄ™k:" + +#: ../data/glade/preferences_window.glade.h:91 +msgid "_Pop it up" +msgstr "_WyÅ›wietl" + +#: ../data/glade/preferences_window.glade.h:92 +msgid "_Reset to Default Colors" +msgstr "Wróć do kolorów _domyÅ›lnych" + +#: ../data/glade/preferences_window.glade.h:93 +msgid "_Sort contacts by status" +msgstr "Sortuj kontakty wedÅ‚ug statusu" + +#: ../data/glade/preferences_window.glade.h:94 +msgid "_Status message:" +msgstr "_Informacja o statusie:" + +#: ../data/glade/preferences_window.glade.h:95 +msgid "_URL:" +msgstr "_URL" + +#: ../data/glade/preferences_window.glade.h:96 +msgid "minutes" +msgstr "minutach" + +#: ../data/glade/privacy_list_edit_window.glade.h:1 +msgid "Add / Edit a rule" +msgstr "Dodaj / Edytuj reguÅ‚Ä™" + +#: ../data/glade/privacy_list_edit_window.glade.h:2 +msgid "List of rules" +msgstr "Lista reguÅ‚" + +#: ../data/glade/privacy_list_edit_window.glade.h:3 +msgid "Privacy List" +msgstr "

Lista prywatnoÅ›ci" + +#: ../data/glade/privacy_list_edit_window.glade.h:5 +#: ../src/config.py:2281 +msgid "All" +msgstr "wszystkim" + +#: ../data/glade/privacy_list_edit_window.glade.h:6 +msgid "Allow" +msgstr "Zezwól" + +#: ../data/glade/privacy_list_edit_window.glade.h:7 +msgid "Default" +msgstr "DomyÅ›lny" + +#: ../data/glade/privacy_list_edit_window.glade.h:9 +msgid "JabberID" +msgstr "Jabber ID" + +#: ../data/glade/privacy_list_edit_window.glade.h:10 +msgid "Order:" +msgstr "Kolejność:" + +#: ../data/glade/privacy_list_edit_window.glade.h:11 +#: ../src/dialogs.py:1626 +msgid "Privacy List" +msgstr "Lista prywatnoÅ›ci" + +#: ../data/glade/privacy_list_edit_window.glade.h:12 +msgid "all by subscription" +msgstr "wedÅ‚ug autoryzacji" + +#: ../data/glade/privacy_list_edit_window.glade.h:13 +msgid "all in the group" +msgstr "wedÅ‚ug grupy" + +#: ../data/glade/privacy_list_edit_window.glade.h:14 +msgid "" +"none\n" +"both\n" +"from\n" +"to" +msgstr "" +"brak\n" +"obie\n" +"od\n" +"do" + +#: ../data/glade/privacy_list_edit_window.glade.h:18 +msgid "to send me messages" +msgstr "wysyÅ‚ać mi wiadomoÅ›ci" + +#: ../data/glade/privacy_list_edit_window.glade.h:19 +msgid "to send me queries" +msgstr "wysyÅ‚ać kwerendy" + +#: ../data/glade/privacy_list_edit_window.glade.h:20 +msgid "to send me status" +msgstr "wysyÅ‚ać mi status" + +#: ../data/glade/privacy_list_edit_window.glade.h:21 +msgid "to view my status" +msgstr "widzieć mój status" + +#: ../data/glade/privacy_lists_first_window.glade.h:1 +msgid "Create your own Privacy Lists" +msgstr "Stwórz wÅ‚asnÄ… listÄ™ prywatnoÅ›ci" + +#: ../data/glade/privacy_lists_first_window.glade.h:2 +msgid "Server-based Privacy Lists" +msgstr "Listy prywatnoÅ›ci po stronie serwera" + +#: ../data/glade/remove_account_window.glade.h:1 +msgid "What do you want to do?" +msgstr "Co chcesz zrobić?" + +#: ../data/glade/remove_account_window.glade.h:2 +msgid "Remove account _only from Gajim" +msgstr "UsuÅ„ konto _tylko z Gajima" + +#: ../data/glade/remove_account_window.glade.h:3 +msgid "Remove account from Gajim and from _server" +msgstr "UsuÅ„ konto z Gajima i z _serwera" + +#: ../data/glade/roster_contact_context_menu.glade.h:1 +msgid "A_sk to see his/her status" +msgstr "PoproÅ› o to, żeby móc widzieć jego/jej _status" + +#: ../data/glade/roster_contact_context_menu.glade.h:2 +msgid "Add Special _Notification" +msgstr "Dodaj powiadomienia _specjalne" + +#: ../data/glade/roster_contact_context_menu.glade.h:3 +msgid "Assign Open_PGP Key" +msgstr "Przypisz klucz Open_PGP" + +#: ../data/glade/roster_contact_context_menu.glade.h:4 +msgid "Edit _Groups" +msgstr "Modyfikuj _grupy" + +#: ../data/glade/roster_contact_context_menu.glade.h:5 +#: ../data/glade/systray_context_menu.glade.h:1 +msgid "Send Single _Message" +msgstr "WyÅ›lij _wiadomość" + +#: ../data/glade/roster_contact_context_menu.glade.h:7 +msgid "Start _Chat" +msgstr "Rozpocznij _rozmowÄ™" + +#: ../data/glade/roster_contact_context_menu.glade.h:9 +msgid "_Allow him/her to see my status" +msgstr "_Pozwól mu/jej widzieć swój status" + +#: ../data/glade/roster_contact_context_menu.glade.h:10 +msgid "_Forbid him/her to see my status" +msgstr "_ZabroÅ„ mu/jej widzieć twój status" + +#: ../data/glade/roster_contact_context_menu.glade.h:12 +#: ../src/roster_window.py:1482 +msgid "_Remove from Roster" +msgstr "_UsuÅ„ z listy kontaktów" + +#: ../data/glade/roster_contact_context_menu.glade.h:13 +#: ../src/roster_window.py:1470 +msgid "_Rename" +msgstr "_ZmieÅ„ nazwÄ™" + +#: ../data/glade/roster_contact_context_menu.glade.h:14 +msgid "_Subscription" +msgstr "_Autoryzacja" + +#: ../data/glade/roster_window.glade.h:1 +msgid "A_ccounts" +msgstr "_Konta" + +#: ../data/glade/roster_window.glade.h:2 +msgid "Add _Contact" +msgstr "Dodaj _kontakt" + +#: ../data/glade/roster_window.glade.h:3 +msgid "File _Transfers" +msgstr "_PrzesyÅ‚anie plików" + +#: ../data/glade/roster_window.glade.h:4 +msgid "Frequently Asked Questions (online)" +msgstr "Najczęściej Zadawane Pytania (w sieci)" + +#: ../data/glade/roster_window.glade.h:6 +msgid "Help online" +msgstr "Pomoc w sieci" + +#: ../data/glade/roster_window.glade.h:7 +msgid "Profile, Avatar" +msgstr "Profil, Awatar" + +#: ../data/glade/roster_window.glade.h:8 +msgid "Show _Offline Contacts" +msgstr "Pokaż kontakty niep_oÅ‚Ä…czone" + +#: ../data/glade/roster_window.glade.h:11 +msgid "_Contents" +msgstr "_Zawartość" + +#: ../data/glade/roster_window.glade.h:12 +msgid "_Discover Services" +msgstr "_Wyszukuj usÅ‚ugi" + +#: ../data/glade/roster_window.glade.h:13 +#: ../src/disco.py:1252 +#: ../src/roster_window.py:1462 +msgid "_Edit" +msgstr "_Edycja" + +#: ../data/glade/roster_window.glade.h:14 +msgid "_FAQ" +msgstr "_FAQ" + +#: ../data/glade/roster_window.glade.h:16 +msgid "_Help" +msgstr "_Pomoc" + +#: ../data/glade/roster_window.glade.h:17 +msgid "_Preferences" +msgstr "_Ustawienia" + +#: ../data/glade/roster_window.glade.h:18 +msgid "_Quit" +msgstr "_ZakoÅ„cz" + +#: ../data/glade/service_discovery_window.glade.h:1 +msgid "G_o" +msgstr "I_dź" + +#: ../data/glade/service_discovery_window.glade.h:2 +msgid "_Address:" +msgstr "_Adres:" + +#: ../data/glade/service_discovery_window.glade.h:3 +msgid "_Filter:" +msgstr "_Filtr:" + +#: ../data/glade/service_registration_window.glade.h:1 +msgid "Register to" +msgstr "Zarejestruj w" + +#: ../data/glade/service_registration_window.glade.h:2 +msgid "_Cancel" +msgstr "_Anuluj" + +#: ../data/glade/service_registration_window.glade.h:3 +msgid "_OK" +msgstr "_OK" + +#: ../data/glade/single_message_window.glade.h:1 +msgid "0" +msgstr "0" + +#: ../data/glade/single_message_window.glade.h:2 +msgid "From:" +msgstr "Od:" + +#: ../data/glade/single_message_window.glade.h:3 +msgid "Reply to this message" +msgstr "Odpowiedz na tÄ™ wiadomość" + +#: ../data/glade/single_message_window.glade.h:4 +msgid "Sen_d" +msgstr "_WyÅ›lij" + +#: ../data/glade/single_message_window.glade.h:5 +msgid "Send message" +msgstr "WyÅ›lij wiadomość" + +#: ../data/glade/single_message_window.glade.h:6 +msgid "Send message and close window" +msgstr "WyÅ›lij wiadomość i zamknij okno" + +#: ../data/glade/single_message_window.glade.h:7 +msgid "Subject:" +msgstr "Temat:" + +#: ../data/glade/single_message_window.glade.h:8 +msgid "To:" +msgstr "Do:" + +#: ../data/glade/single_message_window.glade.h:9 +msgid "_Reply" +msgstr "_Odpowiedz" + +#: ../data/glade/single_message_window.glade.h:10 +msgid "_Send & Close" +msgstr "_WyÅ›lij i zzamknij" + +#: ../data/glade/subscription_request_window.glade.h:1 +msgid "Authorize contact so he can know when you're connected" +msgstr "Autoryzuj kontakt - bÄ™dzie wówczas wiedziaÅ‚, kiedy jesteÅ› poÅ‚Ä…czony" + +#: ../data/glade/subscription_request_window.glade.h:2 +msgid "Contact _Info" +msgstr "_Informacje o kontakcie" + +#: ../data/glade/subscription_request_window.glade.h:3 +msgid "Deny authorization from contact so he cannot know when you're connected" +msgstr "Odmów autoryzacji kontaktowi, nie bÄ™dzie on wówczas wiedziaÅ‚ kiedy jesteÅ› poÅ‚Ä…czony." + +#: ../data/glade/subscription_request_window.glade.h:4 +msgid "Subscription Request" +msgstr "ProÅ›ba o autoryzacjÄ™" + +#: ../data/glade/subscription_request_window.glade.h:5 +msgid "_Authorize" +msgstr "_Autoryzuj" + +#: ../data/glade/subscription_request_window.glade.h:6 +msgid "_Deny" +msgstr "O_dmów" + +#: ../data/glade/systray_context_menu.glade.h:2 +msgid "Show All Pending _Events" +msgstr "Pokaż wszystkie oczekujÄ…ce _zdarzenia" + +#: ../data/glade/systray_context_menu.glade.h:3 +msgid "Show _Roster" +msgstr "Pokaż _listÄ™ kontaktów" + +#: ../data/glade/systray_context_menu.glade.h:4 +msgid "Sta_tus" +msgstr "Sta_tus" + +#. "About" is the text of a tab of vcard window +#: ../data/glade/vcard_information_window.glade.h:2 +msgid "About" +msgstr "Informacje" + +#: ../data/glade/vcard_information_window.glade.h:3 +msgid "Address" +msgstr "Adres" + +#: ../data/glade/vcard_information_window.glade.h:4 +msgid "Ask:" +msgstr "Pytaj:" + +#: ../data/glade/vcard_information_window.glade.h:5 +msgid "Birthday:" +msgstr "Urodziny:" + +#: ../data/glade/vcard_information_window.glade.h:6 +msgid "City:" +msgstr "Miasto:" + +#: ../data/glade/vcard_information_window.glade.h:7 +msgid "Client:" +msgstr "Klient:" + +#: ../data/glade/vcard_information_window.glade.h:8 +msgid "Company:" +msgstr "Firma:" + +#: ../data/glade/vcard_information_window.glade.h:9 +msgid "Contact Information" +msgstr "Informacje o kontakcie" + +#: ../data/glade/vcard_information_window.glade.h:10 +msgid "Country:" +msgstr "Kraj:" + +#: ../data/glade/vcard_information_window.glade.h:11 +msgid "Department:" +msgstr "DziaÅ‚:" + +#: ../data/glade/vcard_information_window.glade.h:12 +msgid "E-Mail:" +msgstr "Adres e-mail:" + +#: ../data/glade/vcard_information_window.glade.h:13 +msgid "Extra Address:" +msgstr "Dodatkowy adres:" + +#. Family Name +#: ../data/glade/vcard_information_window.glade.h:15 +msgid "Family:" +msgstr "Nazwisko:" + +#: ../data/glade/vcard_information_window.glade.h:16 +msgid "Format: YYYY-MM-DD" +msgstr "Format: RRRR-MM-DD" + +#. Given Name +#: ../data/glade/vcard_information_window.glade.h:19 +msgid "Given:" +msgstr "ImiÄ™:" + +#: ../data/glade/vcard_information_window.glade.h:20 +msgid "Homepage:" +msgstr "Strona domowa:" + +#: ../data/glade/vcard_information_window.glade.h:21 +msgid "Jabber" +msgstr "Jabber" + +#: ../data/glade/vcard_information_window.glade.h:22 +msgid "Jabber ID:" +msgstr "Jabber ID:" + +#: ../data/glade/vcard_information_window.glade.h:23 +msgid "Location" +msgstr "Miejsce" + +#. Middle Name +#: ../data/glade/vcard_information_window.glade.h:25 +msgid "Middle:" +msgstr "Drugie imiÄ™:" + +#: ../data/glade/vcard_information_window.glade.h:26 +msgid "More" +msgstr "WiÄ™cej" + +#: ../data/glade/vcard_information_window.glade.h:29 +msgid "OS:" +msgstr "System operacyjny:" + +#: ../data/glade/vcard_information_window.glade.h:30 +msgid "Phone No.:" +msgstr "Telefon:" + +#: ../data/glade/vcard_information_window.glade.h:31 +msgid "Position:" +msgstr "Stanowisko:" + +#: ../data/glade/vcard_information_window.glade.h:32 +msgid "Postal Code:" +msgstr "Kod pocztowy:" + +#. Prefix in Name +#: ../data/glade/vcard_information_window.glade.h:34 +msgid "Prefix:" +msgstr "Prefiks:" + +#: ../data/glade/vcard_information_window.glade.h:35 +msgid "Resource:" +msgstr "Zasoby:" + +#: ../data/glade/vcard_information_window.glade.h:36 +msgid "Role:" +msgstr "Funkcja:" + +#: ../data/glade/vcard_information_window.glade.h:37 +msgid "Set _Avatar" +msgstr "Ustaw _Awatar" + +#: ../data/glade/vcard_information_window.glade.h:38 +msgid "State:" +msgstr "Stan/Województwo:" + +#: ../data/glade/vcard_information_window.glade.h:39 +msgid "Status:" +msgstr "Status:" + +#: ../data/glade/vcard_information_window.glade.h:40 +msgid "Street:" +msgstr "Ulica:" + +#: ../data/glade/vcard_information_window.glade.h:41 +msgid "Subscription:" +msgstr "Autoryzacja:" + +#. Suffix in Name +#: ../data/glade/vcard_information_window.glade.h:43 +msgid "Suffix:" +msgstr "Sufiks:" + +#: ../data/glade/vcard_information_window.glade.h:44 +msgid "Work" +msgstr "Praca" + +#: ../data/glade/vcard_information_window.glade.h:45 +msgid "_Log conversation history" +msgstr "_Zapisuj historiÄ™ rozmowy" + +#: ../data/glade/vcard_information_window.glade.h:46 +msgid "_Publish" +msgstr "_Publikuj" + +#: ../data/glade/vcard_information_window.glade.h:47 +msgid "_Retrieve" +msgstr "_Przywróć" + +#: ../data/glade/xml_console_window.glade.h:1 +msgid "Jabber Traffic" +msgstr "Jabber Traffic" + +#: ../data/glade/xml_console_window.glade.h:2 +msgid "XML Input" +msgstr "WejÅ›cie XML" + +#. XML Console enable checkbutton +#: ../data/glade/xml_console_window.glade.h:4 +msgid "Enable" +msgstr "WÅ‚Ä…cz" + +#. Info/Query make the "IQ" initials. So translate like this 'YourLang/YourLang (Info/Query)'. Thanks (it's a tooltip so width is not a problem) +#: ../data/glade/xml_console_window.glade.h:6 +msgid "Info/Query" +msgstr "Informacje/Zapytanie" + +#. Info/Query: all(?) jabber xml start with Whom do you want to ban?\n" "\n" @@ -377,11 +2305,11 @@ msgstr "" "Którego użytkownika chcesz zablokować?\n" "\n" -#: ../src/config.py:2023 +#: ../src/config.py:2062 msgid "Adding Member..." msgstr "DodajÄ™ czÅ‚onka..." -#: ../src/config.py:2024 +#: ../src/config.py:2063 msgid "" "Whom do you want to make a member?\n" "\n" @@ -389,11 +2317,11 @@ msgstr "" "Status którego użytkownika chcesz zmienić?\n" "\n" -#: ../src/config.py:2026 +#: ../src/config.py:2065 msgid "Adding Owner..." msgstr "DodajÄ™ wÅ‚aÅ›ciciela..." -#: ../src/config.py:2027 +#: ../src/config.py:2066 msgid "" "Whom do you want to make a owner?\n" "\n" @@ -401,11 +2329,11 @@ msgstr "" "Którego użytkownika chcesz uczynić wÅ‚aÅ›cicielem pokoju?\n" "\n" -#: ../src/config.py:2029 +#: ../src/config.py:2068 msgid "Adding Administrator..." msgstr "DodajÄ™ administratora..." -#: ../src/config.py:2030 +#: ../src/config.py:2069 msgid "" "Whom do you want to make an administrator?\n" "\n" @@ -413,7 +2341,7 @@ msgstr "" "Którego użytkownika chcesz uczynić administratorem?\n" "\n" -#: ../src/config.py:2031 +#: ../src/config.py:2070 msgid "" "Can be one of the following:\n" "1. user@domain/resource (only that resource matches).\n" @@ -429,715 +2357,782 @@ msgstr "" "4. domena (dotyczy domeny a także dowolnego adresu typu użytkownik@domena,\n" "domena/zasób lub adresu zawierajÄ…cego subdomenÄ™)." -#: ../src/config.py:2127 +#: ../src/config.py:2166 #, python-format msgid "Removing %s account" msgstr "Usuwanie konta %s" -#: ../src/config.py:2144 -#: ../src/roster_window.py:1859 +#: ../src/config.py:2183 +#: ../src/roster_window.py:1857 msgid "Password Required" msgstr "Wymagane hasÅ‚o" -#: ../src/config.py:2145 -#: ../src/roster_window.py:1860 +#: ../src/config.py:2184 +#: ../src/roster_window.py:1858 #, python-format msgid "Enter your password for account %s" msgstr "Wpisz hasÅ‚o dla konta %s" -#: ../src/config.py:2146 -#: ../src/roster_window.py:1861 +#: ../src/config.py:2185 +#: ../src/roster_window.py:1859 msgid "Save password" msgstr "Zapisz hasÅ‚o" -#: ../src/config.py:2159 +#: ../src/config.py:2198 #, python-format msgid "Account \"%s\" is connected to the server" msgstr "Konto \"%s\" jest poÅ‚Ä…czone z serwerem." -#: ../src/config.py:2160 +#: ../src/config.py:2199 msgid "If you remove it, the connection will be lost." msgstr "JeÅ›li to usuniesz, poÅ‚Ä…czenie zostanie zerwane." -#: ../src/config.py:2295 +#: ../src/config.py:2282 +msgid "Enter and leave only" +msgstr "Jedynie wejdź i wyjdź" + +#: ../src/config.py:2352 msgid "New Room" msgstr "Nowy pokój" -#: ../src/config.py:2326 +#: ../src/config.py:2383 msgid "This bookmark has invalid data" msgstr "Ta zakÅ‚adka zawiera niepoprawne dane" -#: ../src/config.py:2327 +#: ../src/config.py:2384 msgid "Please be sure to fill out server and room fields or remove this bookmark." msgstr "Upewnij siÄ™, że wypeÅ‚niÅ‚eÅ› pola serwer i pokój lub usuÅ„ tÄ™ zakÅ‚adkÄ™." -#: ../src/config.py:2564 +#: ../src/config.py:2638 msgid "Invalid username" msgstr "Niepoprawna nazwa użytkownika" -#: ../src/config.py:2565 +#: ../src/config.py:2639 msgid "You must provide a username to configure this account." msgstr "Musisz wpisać nazwÄ™ użytkownika aby skonfigurować to konto." -#: ../src/config.py:2574 -#: ../src/dialogs.py:1036 +#: ../src/config.py:2648 +#: ../src/dialogs.py:1118 msgid "Invalid password" msgstr "Niepoprawne hasÅ‚o" -#: ../src/config.py:2575 +#: ../src/config.py:2649 msgid "You must enter a password for the new account." msgstr "Musisz wpisać hasÅ‚o dla nowego konta." -#: ../src/config.py:2579 -#: ../src/dialogs.py:1041 +#: ../src/config.py:2653 +#: ../src/dialogs.py:1123 msgid "Passwords do not match" msgstr "HasÅ‚a nie zgadzajÄ… siÄ™." -#: ../src/config.py:2580 -#: ../src/dialogs.py:1042 +#: ../src/config.py:2654 +#: ../src/dialogs.py:1124 msgid "The passwords typed in both fields must be identical." msgstr "HasÅ‚a wpisane w obydwu polach muszÄ… być identyczne." -#: ../src/config.py:2599 +#: ../src/config.py:2673 msgid "Duplicate Jabber ID" msgstr "Taki Jabber ID już istnieje!" -#: ../src/config.py:2600 +#: ../src/config.py:2674 msgid "This account is already configured in Gajim." msgstr "Konto o takiej nazwie jest już skonfigurowane." -#: ../src/config.py:2617 +#: ../src/config.py:2691 msgid "Account has been added successfully" msgstr "Konto zostaÅ‚o pomyÅ›lnie dodane" -#: ../src/config.py:2618 -#: ../src/config.py:2651 +#: ../src/config.py:2692 +#: ../src/config.py:2725 msgid "You can set advanced account options by pressing Advanced button, or later by clicking in Accounts menuitem under Edit menu from the main window." msgstr "Możesz ustawić opcje zaawansowane wciskajÄ…c przycisk Zaawansowane lub później wybierajÄ…c pozycjÄ™ Konta z menu Edytuj w głównym oknie programu." -#: ../src/config.py:2650 +#: ../src/config.py:2724 msgid "Your new account has been created successfully" msgstr "Twoje konto zostaÅ‚o zaÅ‚ożone" -#: ../src/config.py:2666 +#: ../src/config.py:2740 msgid "An error occured during account creation" msgstr "WystÄ…piÅ‚ bÅ‚Ä…d w trakcie tworzenia konta." -#: ../src/config.py:2723 +#: ../src/config.py:2797 msgid "Account name is in use" msgstr "Nazwa konta jest już zajÄ™ta" -#: ../src/config.py:2724 +#: ../src/config.py:2798 msgid "You already have an account using this name." msgstr "Masz już konto o takiej nazwie." -#: ../src/conversation_textview.py:182 +#: ../src/conversation_textview.py:205 msgid "Text below this line is what has been said since the last time you paid attention to this group chat" msgstr "Tekst poniżej tej linii zawiera to, co zostaÅ‚o napisane w tym pokoju od momentu gdy ostatni raz zwracaÅ‚eÅ›/zwracaÅ‚aÅ› na niego uwagÄ™." -#: ../src/conversation_textview.py:239 +#: ../src/conversation_textview.py:263 #, python-format msgid "Actions for \"%s\"" msgstr "DziaÅ‚ania dla wyrażenia \"%s\"" -#: ../src/conversation_textview.py:251 +#: ../src/conversation_textview.py:275 msgid "Read _Wikipedia Article" msgstr "Przeczytaj artykuÅ‚ w _Wikipedii" -#: ../src/conversation_textview.py:255 +#: ../src/conversation_textview.py:280 msgid "Look it up in _Dictionary" msgstr "Szukaj w _sÅ‚owniku" #. we must have %s in the url if not WIKTIONARY -#: ../src/conversation_textview.py:270 +#: ../src/conversation_textview.py:296 #, python-format msgid "Dictionary URL is missing an \"%s\" and it is not WIKTIONARY" msgstr "W URL-u sÅ‚ownika brakuje \"%s\" i nie jest to WIKTIONARY" #. we must have %s in the url -#: ../src/conversation_textview.py:281 +#: ../src/conversation_textview.py:308 #, python-format msgid "Web Search URL is missing an \"%s\"" msgstr "W URL-u Przeszukiwania Sieci brakuje \"%s\"" -#: ../src/conversation_textview.py:284 +#: ../src/conversation_textview.py:311 msgid "Web _Search for it" msgstr "Szukaj w _Internecie" -#: ../src/conversation_textview.py:574 +#: ../src/conversation_textview.py:607 msgid "Yesterday" msgstr "Wczoraj" #. the number is >= 2 #. %i is day in year (1-365), %d (1-31) we want %i -#: ../src/conversation_textview.py:578 +#: ../src/conversation_textview.py:611 #, python-format msgid "%i days ago" msgstr "%i dni temu" #. if we have subject, show it too! -#: ../src/conversation_textview.py:634 +#: ../src/conversation_textview.py:686 #, python-format msgid "Subject: %s\n" msgstr "Temat: %s\n" #. only say that to non Windows users -#: ../src/dbus_support.py:34 +#: ../src/dbus_support.py:32 msgid "D-Bus python bindings are missing in this computer" msgstr "Na tym komputerze brakuje pythonowych dowiÄ…zaÅ„ do D-Bus." -#: ../src/dbus_support.py:35 +#: ../src/dbus_support.py:33 msgid "D-Bus capabilities of Gajim cannot be used" msgstr "Nie można użyć D-Bus." -#: ../src/dialogs.py:64 +#: ../src/dialogs.py:55 #, python-format msgid "Contact's name: %s" msgstr "Nazwa kontaktu: %s" -#: ../src/dialogs.py:66 +#: ../src/dialogs.py:57 #, python-format msgid "JID: %s" msgstr "JID : %s" -#: ../src/dialogs.py:169 +#. Group name +#. In group boolean +#: ../src/dialogs.py:173 msgid "Group" msgstr "Grupa" -#: ../src/dialogs.py:176 +#: ../src/dialogs.py:180 msgid "In the group" msgstr "W grupie" -#: ../src/dialogs.py:226 +#: ../src/dialogs.py:230 msgid "KeyID" msgstr "Identyfikator klucza" -#: ../src/dialogs.py:229 +#: ../src/dialogs.py:233 msgid "Contact name" msgstr "Nazwa kontaktu" -#: ../src/dialogs.py:263 +#: ../src/dialogs.py:266 #, python-format msgid "%s Status Message" msgstr "Informacja o statusie %s" -#: ../src/dialogs.py:265 +#: ../src/dialogs.py:268 msgid "Status Message" msgstr "Opis statusu" -#: ../src/dialogs.py:340 +#: ../src/dialogs.py:343 msgid "Save as Preset Status Message" msgstr "Szablony opisów" -#: ../src/dialogs.py:341 +#: ../src/dialogs.py:344 msgid "Please type a name for this status message" msgstr "Podaj nazwÄ™ dla tego szablonu" -#: ../src/dialogs.py:369 +#: ../src/dialogs.py:391 #, python-format msgid "Please fill in the data of the contact you want to add in account %s" msgstr "WypeÅ‚nij informacje o kontakcie, który chcesz dodać do konta %s." -#: ../src/dialogs.py:371 +#: ../src/dialogs.py:393 msgid "Please fill in the data of the contact you want to add" msgstr "WypeÅ‚nij informacje o kontakcie, który chcesz dodać." -#. the user can be in mutiple groups, see in all of them -#: ../src/dialogs.py:380 -#: ../src/disco.py:118 -#: ../src/disco.py:119 -#: ../src/disco.py:1258 -#: ../src/roster_window.py:214 -#: ../src/roster_window.py:275 -#: ../src/roster_window.py:310 -#: ../src/roster_window.py:330 -#: ../src/roster_window.py:354 -#: ../src/roster_window.py:2940 -#: ../src/roster_window.py:2942 -#: ../src/systray.py:291 -#: ../src/common/helpers.py:42 +#: ../src/dialogs.py:403 +#: ../src/disco.py:109 +#: ../src/disco.py:110 +#: ../src/disco.py:1249 +#: ../src/roster_window.py:207 +#: ../src/roster_window.py:273 +#: ../src/roster_window.py:309 +#: ../src/roster_window.py:329 +#: ../src/roster_window.py:353 +#: ../src/roster_window.py:2973 +#: ../src/roster_window.py:2975 +#: ../src/common/helpers.py:39 msgid "Transports" msgstr "Transporty" -#: ../src/dialogs.py:452 -#: ../src/dialogs.py:458 +#: ../src/dialogs.py:493 +#: ../src/dialogs.py:499 msgid "Invalid User ID" msgstr "Niepoprawny identyfikator użytkownika" -#: ../src/dialogs.py:459 +#: ../src/dialogs.py:500 msgid "The user ID must not contain a resource." msgstr "ID użytkownika nie może zawierać zasobu." -#: ../src/dialogs.py:466 +#: ../src/dialogs.py:513 msgid "Contact already in roster" msgstr "Kontakt jest już na liÅ›cie kontaktów" -#: ../src/dialogs.py:467 +#: ../src/dialogs.py:514 msgid "This contact is already listed in your roster." msgstr "Ten kontakt znajduje siÄ™ już na twojej liÅ›cie kontaktów." -#: ../src/dialogs.py:528 +#: ../src/dialogs.py:576 msgid "A GTK+ jabber client" msgstr "Klient jabbera w GTK+." -#: ../src/dialogs.py:539 +#: ../src/dialogs.py:577 +msgid "GTK+ Version:" +msgstr "Wersja GTK+:" + +#: ../src/dialogs.py:578 +msgid "PyGTK Version:" +msgstr "Wersja PyGTK:" + +#: ../src/dialogs.py:586 +msgid "Current Developers:" +msgstr "Bieżący deweloperzy:" + +#: ../src/dialogs.py:588 msgid "Past Developers:" msgstr "Poprzedni deweloperzy:" -#: ../src/dialogs.py:543 +#: ../src/dialogs.py:592 msgid "THANKS:" msgstr "PodziÄ™kowania:" -#. remove one english setence +#. remove one english sentence #. and add it manually as translatable -#: ../src/dialogs.py:550 +#: ../src/dialogs.py:598 msgid "Last but not least, we would like to thank all the package maintainers." msgstr "I wreszcie, chcielibyÅ›my podziÄ™kować wszystkim opiekunom pakietów." #. here you write your name in the form Name FamilyName -#: ../src/dialogs.py:564 +#: ../src/dialogs.py:612 msgid "translator-credits" -msgstr "TÅ‚umaczenie na jÄ™zyk polski: Witold KieraÅ› " +msgstr "" +"TÅ‚umaczenie na jÄ™zyk polski: Witold KieraÅ› \n" +"Maciej Chojnacki " -#: ../src/dialogs.py:826 +#: ../src/dialogs.py:738 +#, python-format +msgid "Unable to bind to port %s." +msgstr "Nie można podÅ‚Ä…czyć siÄ™ do portu %s." + +#: ../src/dialogs.py:739 +msgid "Maybe you have another running instance of Gajim. File Transfer will be canceled." +msgstr "Być może masz już uruchomionÄ… innÄ… kopiÄ™ Gajima. PrzesyÅ‚anie plików zostanie anulowane." + +#: ../src/dialogs.py:881 #, python-format msgid "Subscription request for account %s from %s" msgstr "ProÅ›ba o autoryzacjÄ™ dla konta %s od %s" -#: ../src/dialogs.py:829 +#: ../src/dialogs.py:884 #, python-format msgid "Subscription request from %s" msgstr "ProÅ›ba o autoryzacjÄ™ od %s" -#: ../src/dialogs.py:872 +#: ../src/dialogs.py:926 msgid "You can not join a group chat unless you are connected." msgstr "Nie możesz doÅ‚Ä…czyć do pokoju gdy nie jesteÅ› poÅ‚Ä…czony." -#: ../src/dialogs.py:885 +#: ../src/dialogs.py:939 #, python-format msgid "Join Group Chat with account %s" msgstr "DoÅ‚Ä…cz do pokoju z konta %s." -#: ../src/dialogs.py:887 -#: ../src/gtkgui.glade.h:177 -msgid "Join Group Chat" -msgstr "DoÅ‚Ä…cz do pokoju" - -#: ../src/dialogs.py:976 +#: ../src/dialogs.py:1030 msgid "Invalid room or server name" msgstr "Niepoprawna nazwa pokoju lub serwera" -#: ../src/dialogs.py:977 +#: ../src/dialogs.py:1031 msgid "The room name or server name has not allowed characters." msgstr "Nazwa pokoju lub nazwa serwera zawiera niedozwolone znaki." -#: ../src/dialogs.py:996 +#: ../src/dialogs.py:1050 #, python-format msgid "Start Chat with account %s" msgstr "Rozpocznij rozmowÄ™ z konta %s" -#: ../src/dialogs.py:998 +#: ../src/dialogs.py:1052 msgid "Start Chat" msgstr "Rozpocznij rozmowÄ™" -#: ../src/dialogs.py:999 +#: ../src/dialogs.py:1053 msgid "" -"Fill in the contact ID of the contact you would like\n" +"Fill in the jid, or nick of the contact you would like\n" "to send a chat message to:" msgstr "" -"Wpisz nazwÄ™ użytkownika kontaktu, któremu chcesz\n" +"Wpisz jid lub nazwÄ™ użytkownika kontaktu, któremu chcesz\n" "wysÅ‚ać wiadomość:" #. if offline or connecting -#: ../src/dialogs.py:1007 -#: ../src/dialogs.py:1330 -#: ../src/dialogs.py:1450 +#: ../src/dialogs.py:1078 +#: ../src/dialogs.py:1427 +#: ../src/dialogs.py:1551 msgid "Connection not available" msgstr "PoÅ‚Ä…czenie jest niedostÄ™pne" -#: ../src/dialogs.py:1008 -#: ../src/dialogs.py:1331 -#: ../src/dialogs.py:1451 +#: ../src/dialogs.py:1079 +#: ../src/dialogs.py:1428 +#: ../src/dialogs.py:1552 #, python-format msgid "Please make sure you are connected with \"%s\"." msgstr "Sprawdź, czy jesteÅ› poÅ‚Ä…czony z \"%s\"." -#: ../src/dialogs.py:1018 +#: ../src/dialogs.py:1088 +#: ../src/dialogs.py:1091 +msgid "Invalid JID" +msgstr "Niepoprawny JID" + +#: ../src/dialogs.py:1091 +#, python-format +msgid "Unable to parse \"%s\"." +msgstr "Nie można sparsować \"%s\"." + +#: ../src/dialogs.py:1100 msgid "Without a connection, you can not change your password." msgstr "Nie możesz zmienić hasÅ‚a, jeÅ›li nie jesteÅ› poÅ‚Ä…czony." -#: ../src/dialogs.py:1037 +#: ../src/dialogs.py:1119 msgid "You must enter a password." msgstr "Musisz wpisać hasÅ‚o." #. img to display #. default value -#: ../src/dialogs.py:1083 -#: ../src/gajim.py:443 -#: ../src/notify.py:129 +#: ../src/dialogs.py:1165 +#: ../src/notify.py:126 +#: ../src/notify.py:268 msgid "Contact Signed In" msgstr "Kontakt poÅ‚Ä…czyÅ‚ siÄ™" -#: ../src/dialogs.py:1085 -#: ../src/gajim.py:474 -#: ../src/notify.py:131 +#: ../src/dialogs.py:1167 +#: ../src/notify.py:134 +#: ../src/notify.py:270 msgid "Contact Signed Out" msgstr "Kontakt rozÅ‚Ä…czyÅ‚ siÄ™" #. chat message -#: ../src/dialogs.py:1087 -#: ../src/gajim.py:609 -#: ../src/notify.py:133 +#: ../src/dialogs.py:1169 +#: ../src/notify.py:154 +#: ../src/notify.py:272 msgid "New Message" msgstr "Nowa wiadomość" #. single message -#: ../src/dialogs.py:1087 -#: ../src/gajim.py:603 -#: ../src/notify.py:133 +#: ../src/dialogs.py:1169 +#: ../src/notify.py:138 +#: ../src/notify.py:272 msgid "New Single Message" msgstr "Nowa wiadomość" -#: ../src/dialogs.py:1088 -#: ../src/gajim.py:586 -#: ../src/notify.py:134 +#. private message +#: ../src/dialogs.py:1170 +#: ../src/notify.py:145 +#: ../src/notify.py:273 msgid "New Private Message" msgstr "WyÅ›lij prywatnÄ… wiadomość" -#: ../src/dialogs.py:1088 -#: ../src/gajim.py:1049 -#: ../src/notify.py:142 +#: ../src/dialogs.py:1170 +#: ../src/gajim.py:1044 +#: ../src/notify.py:281 msgid "New E-mail" msgstr "Nowy adres e-mail" -#: ../src/dialogs.py:1090 +#: ../src/dialogs.py:1172 #: ../src/gajim.py:1187 -#: ../src/notify.py:136 +#: ../src/notify.py:275 msgid "File Transfer Request" msgstr "Pytanie o przysÅ‚anie pliku" -#: ../src/dialogs.py:1092 -#: ../src/gajim.py:1035 +#: ../src/dialogs.py:1174 +#: ../src/gajim.py:1022 #: ../src/gajim.py:1164 -#: ../src/notify.py:138 +#: ../src/notify.py:277 msgid "File Transfer Error" msgstr "BÅ‚Ä…d przesyÅ‚ania pliku" -#: ../src/dialogs.py:1094 +#: ../src/dialogs.py:1176 #: ../src/gajim.py:1222 #: ../src/gajim.py:1244 #: ../src/gajim.py:1261 -#: ../src/notify.py:140 +#: ../src/notify.py:279 msgid "File Transfer Completed" msgstr "ZakoÅ„czono przesyÅ‚anie pliku." -#: ../src/dialogs.py:1095 +#: ../src/dialogs.py:1177 #: ../src/gajim.py:1225 -#: ../src/notify.py:140 +#: ../src/notify.py:279 msgid "File Transfer Stopped" msgstr "PrzesyÅ‚anie pliku zatrzymane" -#: ../src/dialogs.py:1097 -#: ../src/gajim.py:953 -#: ../src/notify.py:144 +#: ../src/dialogs.py:1179 +#: ../src/gajim.py:920 +#: ../src/notify.py:283 msgid "Groupchat Invitation" msgstr "Zaproszenie na czat" +#: ../src/dialogs.py:1181 +#: ../src/notify.py:118 +#: ../src/notify.py:285 +msgid "Contact Changed Status" +msgstr "Kontakt zmieniÅ‚ status" + #. FIXME: for Received with should become 'in' -#: ../src/dialogs.py:1262 +#: ../src/dialogs.py:1359 #, python-format msgid "Single Message with account %s" msgstr "wiadomość z konta %s" -#: ../src/dialogs.py:1264 +#: ../src/dialogs.py:1361 msgid "Single Message" msgstr "Pojedyncza wiadomość" #. prepare UI for Sending -#: ../src/dialogs.py:1267 +#: ../src/dialogs.py:1364 #, python-format msgid "Send %s" msgstr "WyÅ›lij %s" #. prepare UI for Receiving -#: ../src/dialogs.py:1290 +#: ../src/dialogs.py:1387 #, python-format msgid "Received %s" msgstr "Odebrane %s" #. we create a new blank window to send and we preset RE: and to jid -#: ../src/dialogs.py:1355 +#: ../src/dialogs.py:1454 #, python-format msgid "RE: %s" msgstr "RE: %s" -#: ../src/dialogs.py:1356 +#: ../src/dialogs.py:1455 #, python-format msgid "%s wrote:\n" msgstr "%s napisaÅ‚:\n" -#: ../src/dialogs.py:1400 +#: ../src/dialogs.py:1499 #, python-format msgid "XML Console for %s" msgstr "Kosola XML dla %s" -#: ../src/dialogs.py:1402 +#: ../src/dialogs.py:1501 msgid "XML Console" msgstr "Konsola XML" +#: ../src/dialogs.py:1620 +#, python-format +msgid "Privacy List %s" +msgstr "Lista prywatnoÅ›ci %s" + +#: ../src/dialogs.py:1624 +#, python-format +msgid "Privacy List for %s" +msgstr "Lista prywatnoÅ›ci dla %s" + +#: ../src/dialogs.py:1716 +msgid "Edit a rule" +msgstr "Edytuj reguÅ‚Ä™" + +#: ../src/dialogs.py:1801 +msgid "Add a rule" +msgstr "Dodaj reguÅ‚Ä™" + +#: ../src/dialogs.py:1897 +#, python-format +msgid "Privacy Lists for %s" +msgstr "Listy prywatnoÅ›ci dla %s" + +#: ../src/dialogs.py:1899 +msgid "Privacy Lists" +msgstr "Listy prywatnoÅ›ci" + #. FIXME: use nickname instead of contact_jid -#: ../src/dialogs.py:1488 +#: ../src/dialogs.py:1988 #, python-format msgid "%(contact_jid)s has invited you to %(room_jid)s room" msgstr "%(contact_jid)s zaprasza ciÄ™ do pokoju %(room_jid)s." #. only if not None and not '' -#: ../src/dialogs.py:1494 +#: ../src/dialogs.py:1994 #, python-format msgid "Comment: %s" msgstr "Komentarz: %s" -#: ../src/dialogs.py:1554 +#: ../src/dialogs.py:2054 msgid "Choose Sound" msgstr "Wybierz dźwiÄ™k" -#: ../src/dialogs.py:1564 -#: ../src/dialogs.py:1607 +#: ../src/dialogs.py:2064 +#: ../src/dialogs.py:2107 msgid "All files" msgstr "Wszystkie pliki" -#: ../src/dialogs.py:1569 +#: ../src/dialogs.py:2069 msgid "Wav Sounds" msgstr "DźwiÄ™ki w Wav" -#: ../src/dialogs.py:1597 +#: ../src/dialogs.py:2097 msgid "Choose Image" msgstr "Wybierz obrazek" -#: ../src/dialogs.py:1612 +#: ../src/dialogs.py:2112 msgid "Images" msgstr "Obrazki" -#: ../src/dialogs.py:1658 +#: ../src/dialogs.py:2157 #, python-format msgid "When %s becomes:" msgstr "Gdy %s ma status:" -#: ../src/dialogs.py:1660 +#: ../src/dialogs.py:2159 #, python-format msgid "Adding Special Notification for %s" msgstr "DodajÄ™ specjalne powiadomienia dla %s" -#: ../src/disco.py:117 +#: ../src/dialogs.py:2232 +msgid "Condition" +msgstr "Warunek" + +#: ../src/disco.py:108 msgid "Others" msgstr "Inni" #. conference is a category for listing mostly groupchats in service discovery -#: ../src/disco.py:121 +#: ../src/disco.py:112 msgid "Conference" msgstr "Konferencja" -#: ../src/disco.py:420 +#: ../src/disco.py:411 msgid "Without a connection, you can not browse available services" msgstr "Nie możesz przeglÄ…dać usÅ‚ug, jeÅ›li nie jesteÅ› poÅ‚Ä…czony." -#: ../src/disco.py:499 +#: ../src/disco.py:490 #, python-format msgid "Service Discovery using account %s" msgstr "PrzeglÄ…danie usÅ‚ug przy użyciu konta %s" -#: ../src/disco.py:500 +#: ../src/disco.py:491 msgid "Service Discovery" msgstr "PrzeglÄ…danie usÅ‚ug" -#: ../src/disco.py:637 +#: ../src/disco.py:628 msgid "The service could not be found" msgstr "Nie można odnaleźć usÅ‚ugi" -#: ../src/disco.py:638 +#: ../src/disco.py:629 msgid "There is no service at the address you entered, or it is not responding. Check the address and try again." msgstr "Pod wpisanym adresem nie ma żadnych usÅ‚ug lub one nie odpowiadajÄ…. Sprawdź adres i spróbuj ponownie." -#: ../src/disco.py:642 -#: ../src/disco.py:924 +#: ../src/disco.py:633 +#: ../src/disco.py:915 msgid "The service is not browsable" msgstr "Tej usÅ‚ugi nie można przeglÄ…dać" -#: ../src/disco.py:643 +#: ../src/disco.py:634 msgid "This type of service does not contain any items to browse." msgstr "Tego typu usÅ‚uga nie zawiera elementów, które można przeglÄ…dać." -#: ../src/disco.py:723 +#: ../src/disco.py:714 #, python-format msgid "Browsing %s using account %s" msgstr "PrzeglÄ…danie %s przy użyciu konta %s" -#: ../src/disco.py:762 +#: ../src/disco.py:753 msgid "_Browse" msgstr "Prze_glÄ…daj" -#: ../src/disco.py:925 +#: ../src/disco.py:916 msgid "This service does not contain any items to browse." msgstr "UsÅ‚uga nie zawiera elementów, które można przeglÄ…dać." -#: ../src/disco.py:1146 -#: ../src/disco.py:1263 +#: ../src/disco.py:1137 +#: ../src/disco.py:1254 msgid "Re_gister" msgstr "Za_rejestruj" -#: ../src/disco.py:1154 -#: ../src/disco.py:1516 -#: ../src/gtkgui.glade.h:350 -msgid "_Join" -msgstr "_DoÅ‚Ä…cz" - -#: ../src/disco.py:1261 -#: ../src/gtkgui.glade.h:334 -#: ../src/roster_window.py:1462 -msgid "_Edit" -msgstr "_Modyfikuj" - -#: ../src/disco.py:1300 +#: ../src/disco.py:1291 #, python-format msgid "Scanning %d / %d.." msgstr "Skanowanie %d / %d.." #. Users column -#: ../src/disco.py:1482 +#: ../src/disco.py:1473 msgid "Users" msgstr "Użytkownicy" #. Description column -#: ../src/disco.py:1489 +#: ../src/disco.py:1480 msgid "Description" msgstr "Opis" -#: ../src/filetransfers_window.py:81 +#: ../src/filetransfers_window.py:72 msgid "File" msgstr "Plik" -#: ../src/filetransfers_window.py:96 +#: ../src/filetransfers_window.py:87 msgid "Time" msgstr "Czas" -#: ../src/filetransfers_window.py:108 +#: ../src/filetransfers_window.py:99 msgid "Progress" msgstr "PostÄ™p" -#: ../src/filetransfers_window.py:176 -#: ../src/filetransfers_window.py:238 +#: ../src/filetransfers_window.py:163 +#: ../src/filetransfers_window.py:223 #, python-format msgid "Filename: %s" msgstr "Nazwa pliku: %s" -#: ../src/filetransfers_window.py:178 -#: ../src/filetransfers_window.py:308 +#: ../src/filetransfers_window.py:164 +#: ../src/filetransfers_window.py:291 #, python-format msgid "Size: %s" msgstr "Rozmiar: %s" #. You is a reply of who sent a file #. You is a reply of who received a file -#: ../src/filetransfers_window.py:187 -#: ../src/filetransfers_window.py:197 -#: ../src/history_manager.py:452 +#: ../src/filetransfers_window.py:173 +#: ../src/filetransfers_window.py:183 +#: ../src/history_manager.py:454 msgid "You" msgstr "Ty" -#: ../src/filetransfers_window.py:188 -#: ../src/filetransfers_window.py:240 +#: ../src/filetransfers_window.py:174 +#: ../src/filetransfers_window.py:224 #, python-format msgid "Sender: %s" msgstr "Nadawca: %s" -#: ../src/filetransfers_window.py:189 -#: ../src/filetransfers_window.py:555 -#: ../src/tooltips.py:617 +#: ../src/filetransfers_window.py:175 +#: ../src/filetransfers_window.py:556 +#: ../src/tooltips.py:639 msgid "Recipient: " msgstr "Odbiorca: " -#: ../src/filetransfers_window.py:200 +#: ../src/filetransfers_window.py:186 #, python-format msgid "Saved in: %s" msgstr "Zapisane w: %s" -#: ../src/filetransfers_window.py:203 +#: ../src/filetransfers_window.py:188 msgid "File transfer completed" msgstr "ZakoÅ„czono przesyÅ‚anie pliku." -#: ../src/filetransfers_window.py:205 -#: ../src/gtkgui.glade.h:366 -msgid "_Open Containing Folder" -msgstr "_Otwórz katalog zawierajÄ…cy ten plik." - -#: ../src/filetransfers_window.py:219 -#: ../src/filetransfers_window.py:227 +#: ../src/filetransfers_window.py:204 +#: ../src/filetransfers_window.py:212 msgid "File transfer canceled" msgstr "Transfer pliku skasowany" -#: ../src/filetransfers_window.py:219 -#: ../src/filetransfers_window.py:228 +#: ../src/filetransfers_window.py:204 +#: ../src/filetransfers_window.py:213 msgid "Connection with peer cannot be established." msgstr "Nie można ustanowić poÅ‚Ä…czenia z drugÄ… stronÄ…." -#: ../src/filetransfers_window.py:242 +#: ../src/filetransfers_window.py:225 msgid "File transfer stopped by the contact of the other side" msgstr "PrzesyÅ‚anie pliku zostaÅ‚o zatrzymane przez drugÄ… osobÄ™." -#: ../src/filetransfers_window.py:259 +#: ../src/filetransfers_window.py:242 msgid "Choose File to Send..." msgstr "Wybierz plik do wysÅ‚ania..." -#. Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector) -#: ../src/filetransfers_window.py:266 -#: ../src/gtkgui.glade.h:390 -msgid "_Send" -msgstr "_WyÅ›lij" - -#: ../src/filetransfers_window.py:273 +#: ../src/filetransfers_window.py:256 msgid "Gajim cannot access this file" msgstr "Gajim nie może uzyskać dostÄ™pu do tego pliku" -#: ../src/filetransfers_window.py:274 +#: ../src/filetransfers_window.py:257 msgid "This file is being used by another process." msgstr "Ten plik jest używany przez inny proces." -#: ../src/filetransfers_window.py:306 +#: ../src/filetransfers_window.py:289 #, python-format msgid "File: %s" msgstr "Plik: %s" -#: ../src/filetransfers_window.py:311 +#: ../src/filetransfers_window.py:294 #, python-format msgid "Type: %s" msgstr "Typ: %s" -#: ../src/filetransfers_window.py:313 +#: ../src/filetransfers_window.py:296 #, python-format msgid "Description: %s" msgstr "Opis: %s" -#: ../src/filetransfers_window.py:314 +#: ../src/filetransfers_window.py:297 #, python-format msgid "%s wants to send you a file:" msgstr "%s chce przesÅ‚ać Ci plik:" -#: ../src/filetransfers_window.py:329 +#: ../src/filetransfers_window.py:311 +#, python-format +msgid "Cannot overwrite existing file \"%s\"" +msgstr "Nie można nadpisać pliku \"%s\"" + +#: ../src/filetransfers_window.py:312 +msgid "A file with this name already exists and you do not have permission to overwrite it." +msgstr "Istnieje już plik o tej nazwie a Ty nie masz uprawnieÅ„ do jego nadpisania." + +#: ../src/filetransfers_window.py:319 +#: ../src/gtkgui_helpers.py:685 msgid "This file already exists" msgstr "Ten plik już istnieje" -#: ../src/filetransfers_window.py:329 +#: ../src/filetransfers_window.py:319 +#: ../src/gtkgui_helpers.py:685 msgid "What do you want to do?" msgstr "Co chcesz zrobić?" -#: ../src/filetransfers_window.py:344 +#: ../src/filetransfers_window.py:331 +#, python-format +msgid "Directory \"%s\" is not writable" +msgstr "Nie masz uprawnieÅ„ do zapisu w folderze \"%s\"" + +#: ../src/filetransfers_window.py:331 +msgid "You do not have permission to create files in this directory." +msgstr "Nie masz uprawnieÅ„ do tworzenia plików w tym folderze." + +#: ../src/filetransfers_window.py:341 msgid "Save File as..." -msgstr "Zapisz plik jako..." +msgstr "Zapisz obraz jako..." #. Print remaining time in format 00:00:00 #. You can change the places of (hours), (minutes), (seconds) - #. they are not translatable. -#: ../src/filetransfers_window.py:419 +#: ../src/filetransfers_window.py:420 #, python-format msgid "%(hours)02.d:%(minutes)02.d:%(seconds)02.d" msgstr "%(hours)02.d:%(minutes)02.d:%(seconds)02.d" @@ -1145,32 +3140,32 @@ msgstr "%(hours)02.d:%(minutes)02.d:%(seconds)02.d" #. This should make the string Kb/s, #. where 'Kb' part is taken from %s. #. Only the 's' after / (which means second) should be translated. -#: ../src/filetransfers_window.py:491 +#: ../src/filetransfers_window.py:492 #, python-format msgid "(%(filesize_unit)s/s)" msgstr "(%(filesize_unit)s/ów)" -#: ../src/filetransfers_window.py:527 -#: ../src/filetransfers_window.py:530 +#: ../src/filetransfers_window.py:528 +#: ../src/filetransfers_window.py:531 msgid "Invalid File" msgstr "Niepoprawny plik" -#: ../src/filetransfers_window.py:527 +#: ../src/filetransfers_window.py:528 msgid "File: " msgstr "Plik: " -#: ../src/filetransfers_window.py:531 +#: ../src/filetransfers_window.py:532 msgid "It is not possible to send empty files" msgstr "Nie można wysÅ‚ać pustego pliku" -#: ../src/filetransfers_window.py:551 -#: ../src/tooltips.py:498 -#: ../src/tooltips.py:607 +#: ../src/filetransfers_window.py:552 +#: ../src/tooltips.py:511 +#: ../src/tooltips.py:629 msgid "Name: " msgstr "Nazwa: " -#: ../src/filetransfers_window.py:553 -#: ../src/tooltips.py:611 +#: ../src/filetransfers_window.py:554 +#: ../src/tooltips.py:633 msgid "Sender: " msgstr "Nadawca: " @@ -1178,213 +3173,242 @@ msgstr "Nadawca: " msgid "Pause" msgstr "Zatrzymaj" -#: ../src/filetransfers_window.py:753 -#: ../src/gtkgui.glade.h:328 -msgid "_Continue" -msgstr "_Kontynuuj" - -#: ../src/gajim-remote.py:84 +#: ../src/gajim-remote.py:82 msgid "shows a help on specific command" msgstr "pokaż pomoc dla wybranego polecenia" #. User gets help for the command, specified by this parameter -#: ../src/gajim-remote.py:87 +#: ../src/gajim-remote.py:85 msgid "command" msgstr "polecenie" -#: ../src/gajim-remote.py:88 +#: ../src/gajim-remote.py:86 msgid "show help on command" msgstr "pokaż pomoc polecenia" -#: ../src/gajim-remote.py:92 +#: ../src/gajim-remote.py:90 msgid "Shows or hides the roster window" msgstr "Pokazuje lub ukrywa okno listy kontaktów." -#: ../src/gajim-remote.py:96 +#: ../src/gajim-remote.py:94 msgid "Popups a window with the next unread message" msgstr "Pokazuje okno z nastÄ™pnÄ… nieprzeczytanÄ… wiadomoÅ›ciÄ…" -#: ../src/gajim-remote.py:100 +#: ../src/gajim-remote.py:98 msgid "Prints a list of all contacts in the roster. Each contact appear on a separate line" msgstr "Wypisuje listÄ™ wszystkich kontaktów. Każdy kontakt zostanie wypisany w osobnej linii." -#: ../src/gajim-remote.py:102 -#: ../src/gajim-remote.py:115 -#: ../src/gajim-remote.py:125 -#: ../src/gajim-remote.py:138 -#: ../src/gajim-remote.py:159 -#: ../src/gajim-remote.py:189 -#: ../src/gajim-remote.py:197 -#: ../src/gajim-remote.py:204 +#: ../src/gajim-remote.py:100 +#: ../src/gajim-remote.py:114 +#: ../src/gajim-remote.py:124 +#: ../src/gajim-remote.py:137 +#: ../src/gajim-remote.py:151 +#: ../src/gajim-remote.py:172 +#: ../src/gajim-remote.py:202 #: ../src/gajim-remote.py:211 +#: ../src/gajim-remote.py:218 +#: ../src/gajim-remote.py:225 +#: ../src/gajim-remote.py:236 msgid "account" msgstr "konto" -#: ../src/gajim-remote.py:102 +#: ../src/gajim-remote.py:100 msgid "show only contacts of the given account" msgstr "pokaż tylko kontakty z danego konta" -#: ../src/gajim-remote.py:107 +#: ../src/gajim-remote.py:105 msgid "Prints a list of registered accounts" msgstr "Wypisuje listÄ™ zarejestrowanych kont" -#: ../src/gajim-remote.py:111 +#: ../src/gajim-remote.py:109 msgid "Changes the status of account or accounts" msgstr "Zmienia status kont lub kont." -#: ../src/gajim-remote.py:113 +#. offline, online, chat, away, xa, dnd, invisible should not be translated +#: ../src/gajim-remote.py:112 msgid "status" msgstr "status" -#: ../src/gajim-remote.py:113 +#: ../src/gajim-remote.py:112 msgid "one of: offline, online, chat, away, xa, dnd, invisible " msgstr "jeden z: rozÅ‚Ä…czony, dostÄ™pny, chÄ™tny do rozmowy, zaraz wracam, nieobecny, zajÄ™ty, niewidoczny " -#: ../src/gajim-remote.py:114 -#: ../src/gajim-remote.py:135 +#: ../src/gajim-remote.py:113 +#: ../src/gajim-remote.py:134 +#: ../src/gajim-remote.py:148 msgid "message" msgstr "wiadomość" -#: ../src/gajim-remote.py:114 +#: ../src/gajim-remote.py:113 msgid "status message" msgstr "informacja o statusie" -#: ../src/gajim-remote.py:115 +#: ../src/gajim-remote.py:114 msgid "change status of account \"account\". If not specified, try to change status of all accounts that have \"sync with global status\" option set" msgstr "zmieÅ„ status konta \"konto\". JeÅ›li nie jest on okreÅ›lony, to spróbuj zmienić status wszystkich kont, które majÄ… ustawionÄ… opcjÄ™ synchronizacji ze statusem globalnym." -#: ../src/gajim-remote.py:121 +#: ../src/gajim-remote.py:120 msgid "Shows the chat dialog so that you can send messages to a contact" msgstr "Pokazuje okno dialogowe umożliwiajÄ…ce wysÅ‚anie wiadomoÅ›ci do kontaktu." -#: ../src/gajim-remote.py:123 +#: ../src/gajim-remote.py:122 msgid "JID of the contact that you want to chat with" msgstr "JID osoby, z którÄ… chcesz porozmawiać" -#: ../src/gajim-remote.py:125 -#: ../src/gajim-remote.py:189 +#: ../src/gajim-remote.py:124 +#: ../src/gajim-remote.py:202 msgid "if specified, contact is taken from the contact list of this account" msgstr "jeÅ›li jest podany, to kontakt jest pobierany z listy kontaktów tego konta." -#: ../src/gajim-remote.py:130 -msgid "Sends new message to a contact in the roster. Both OpenPGP key and account are optional. If you want to set only 'account', without 'OpenPGP key', just set 'OpenPGP key' to ''." -msgstr "WysyÅ‚a nowÄ… wiadomość do kontaktu z listy. Zarówno klucz OpenPGP jak i konto sÄ… opcjonalne. JeÅ›li chcesz ustawić jedynie 'konto' bez 'klucza OpenPGP', to ustaw 'klucz OpenPGP' na ''." +#: ../src/gajim-remote.py:129 +msgid "Sends new chat message to a contact in the roster. Both OpenPGP key and account are optional. If you want to set only 'account', without 'OpenPGP key', just set 'OpenPGP key' to ''." +msgstr "WysyÅ‚a nowÄ… wiadomość do kontaktu z listy. Zarówno klucz OpenPGP jak i konto nie sÄ… wymagane. JeÅ›li chcesz ustawić jedynie 'konto' bez 'klucza OpenPGP', to ustaw 'klucz OpenPGP' na ''." -#: ../src/gajim-remote.py:134 +#: ../src/gajim-remote.py:133 +#: ../src/gajim-remote.py:146 msgid "JID of the contact that will receive the message" msgstr "JID osoby, która otrzyma wiadomość" -#: ../src/gajim-remote.py:135 +#: ../src/gajim-remote.py:134 +#: ../src/gajim-remote.py:148 msgid "message contents" msgstr "zawartość wiadomoÅ›ci" -#: ../src/gajim-remote.py:136 +#: ../src/gajim-remote.py:135 +#: ../src/gajim-remote.py:149 msgid "pgp key" msgstr "klucz pgp" -#: ../src/gajim-remote.py:136 +#: ../src/gajim-remote.py:135 +#: ../src/gajim-remote.py:149 msgid "if specified, the message will be encrypted using this public key" msgstr "jeÅ›li jest podany, to wiadomość zostanie zaszyfrowana tym kluczem publicznym." -#: ../src/gajim-remote.py:138 +#: ../src/gajim-remote.py:137 +#: ../src/gajim-remote.py:151 msgid "if specified, the message will be sent using this account" msgstr "jeÅ›li jest podane, to wiadomość zostanie wysÅ‚ana z tego konta." -#: ../src/gajim-remote.py:143 +#: ../src/gajim-remote.py:142 +msgid "Sends new single message to a contact in the roster. Both OpenPGP key and account are optional. If you want to set only 'account', without 'OpenPGP key', just set 'OpenPGP key' to ''." +msgstr "WysyÅ‚a nowÄ… wiadomość do kontaktu z listy. Zarówno klucz OpenPGP jak i konto nie sÄ… wymagane. JeÅ›li chcesz ustawić jedynie 'konto' bez 'klucza OpenPGP', to ustaw 'klucz OpenPGP' na ''." + +#: ../src/gajim-remote.py:147 +msgid "subject" +msgstr "temat" + +#: ../src/gajim-remote.py:147 +msgid "message subject" +msgstr "temat wiadomoÅ›ci" + +#: ../src/gajim-remote.py:156 msgid "Gets detailed info on a contact" msgstr "Pobiera szczegółowe informacje o kontakcie" -#: ../src/gajim-remote.py:145 #: ../src/gajim-remote.py:158 -#: ../src/gajim-remote.py:188 +#: ../src/gajim-remote.py:171 +#: ../src/gajim-remote.py:201 +#: ../src/gajim-remote.py:210 msgid "JID of the contact" msgstr "JID kontaktu" -#: ../src/gajim-remote.py:149 +#: ../src/gajim-remote.py:162 msgid "Gets detailed info on a account" msgstr "Pobiera szczegółowe informacje o koncie" -#: ../src/gajim-remote.py:151 +#: ../src/gajim-remote.py:164 msgid "Name of the account" msgstr "Nazwa konta" -#: ../src/gajim-remote.py:155 +#: ../src/gajim-remote.py:168 msgid "Sends file to a contact" msgstr "WysyÅ‚a plik kontaktowi" -#: ../src/gajim-remote.py:157 +#: ../src/gajim-remote.py:170 msgid "file" msgstr "plik" -#: ../src/gajim-remote.py:157 +#: ../src/gajim-remote.py:170 msgid "File path" msgstr "Åšcieżka do pliku" -#: ../src/gajim-remote.py:159 +#: ../src/gajim-remote.py:172 msgid "if specified, file will be sent using this account" msgstr "plik zostanie wysÅ‚any z tego konta, jeÅ›li jest ono podane." -#: ../src/gajim-remote.py:164 +#: ../src/gajim-remote.py:177 msgid "Lists all preferences and their values" msgstr "Wypisuje wszystkie opcje i ich wartoÅ›ci" -#: ../src/gajim-remote.py:168 +#: ../src/gajim-remote.py:181 msgid "Sets value of 'key' to 'value'." msgstr "Ustawia wartość 'klucza' na 'wartość'." -#: ../src/gajim-remote.py:170 +#: ../src/gajim-remote.py:183 msgid "key=value" msgstr "klucz=wartość" -#: ../src/gajim-remote.py:170 +#: ../src/gajim-remote.py:183 msgid "'key' is the name of the preference, 'value' is the value to set it to" msgstr "'klucz' jest nazwÄ… opcji, 'wartość' zaÅ› jest jej ustawianÄ… wartoÅ›ciÄ…." -#: ../src/gajim-remote.py:175 +#: ../src/gajim-remote.py:188 msgid "Deletes a preference item" msgstr "Usuwa opcjÄ™" -#: ../src/gajim-remote.py:177 +#: ../src/gajim-remote.py:190 msgid "key" msgstr "klucz" -#: ../src/gajim-remote.py:177 +#: ../src/gajim-remote.py:190 msgid "name of the preference to be deleted" msgstr "nazwa opcji do usuniÄ™cia" -#: ../src/gajim-remote.py:181 +#: ../src/gajim-remote.py:194 msgid "Writes the current state of Gajim preferences to the .config file" msgstr "Zapisuje obecny stan opcji Gajima do pliku .config" -#: ../src/gajim-remote.py:186 +#: ../src/gajim-remote.py:199 msgid "Removes contact from roster" msgstr "Usuwa kontakt z listy kontaktów" -#: ../src/gajim-remote.py:195 +#: ../src/gajim-remote.py:208 msgid "Adds contact to roster" msgstr "Dodaje kontakt do listy kontaktów" -#: ../src/gajim-remote.py:197 -msgid "Adds new contact to this account." -msgstr "Dodaje nowy kontakt do tego konta." +#: ../src/gajim-remote.py:210 +msgid "jid" +msgstr "jid" -#: ../src/gajim-remote.py:202 +#: ../src/gajim-remote.py:211 +msgid "Adds new contact to this account" +msgstr "Dodaje nowy kontakt do tego konta" + +#: ../src/gajim-remote.py:216 msgid "Returns current status (the global one unless account is specified)" msgstr "Zwraca obecny status (globalny, chyba, że zostaÅ‚o wskazane konto)." -#: ../src/gajim-remote.py:209 +#: ../src/gajim-remote.py:223 msgid "Returns current status message(the global one unless account is specified)" msgstr "Zwraca obecny status (globalny, chyba że zostaÅ‚o wskazane konto)." -#: ../src/gajim-remote.py:216 +#: ../src/gajim-remote.py:230 msgid "Returns number of unreaded messages" msgstr "Zwraca liczbÄ™ nieprzeczytanych wiadomoÅ›ci." +#: ../src/gajim-remote.py:234 +msgid "Open 'Start Chat' dialog" +msgstr "Otwórz okno dialogowe 'Rozpocznij rozmowÄ™'" + #: ../src/gajim-remote.py:236 +msgid "Starts chat, using this account" +msgstr "Rozpocznij rozmowÄ™ z tego konta" + +#: ../src/gajim-remote.py:256 msgid "Missing argument \"contact_jid\"" msgstr "Brak argumentu \"contact_jid\"" -#: ../src/gajim-remote.py:255 +#: ../src/gajim-remote.py:275 #, python-format msgid "" "'%s' is not in your roster.\n" @@ -1393,16 +3417,16 @@ msgstr "" "'%s' nie znajduje siÄ™ na twojej liÅ›cie kontaktów.\n" "Podaj konto, na które ma zostać wysÅ‚ana ta wiadomość." -#: ../src/gajim-remote.py:258 +#: ../src/gajim-remote.py:278 msgid "You have no active account" msgstr "Å»adne z twoich kont nie jest aktywne." -#: ../src/gajim-remote.py:301 +#: ../src/gajim-remote.py:321 #, python-format msgid "Unknown D-Bus version: %s" msgstr "Nieznana wersja D-Bus: %s" -#: ../src/gajim-remote.py:328 +#: ../src/gajim-remote.py:348 #, python-format msgid "" "Usage: %s %s %s \n" @@ -1411,16 +3435,16 @@ msgstr "" "Użycie:·%s·%s·%s·\n" "\t %s" -#: ../src/gajim-remote.py:331 +#: ../src/gajim-remote.py:351 msgid "Arguments:" msgstr "Argumenty:" -#: ../src/gajim-remote.py:335 +#: ../src/gajim-remote.py:355 #, python-format msgid "%s not found" msgstr "Nie znaleziono %s" -#: ../src/gajim-remote.py:339 +#: ../src/gajim-remote.py:359 #, python-format msgid "" "Usage: %s command [arguments]\n" @@ -1429,7 +3453,7 @@ msgstr "" "Użycie: polecenie %s [argument]\n" "Gdzie polecenie to jedna z nastÄ™pujÄ…cy fraz:\n" -#: ../src/gajim-remote.py:413 +#: ../src/gajim-remote.py:433 #, python-format msgid "" "Argument \"%s\" is not specified. \n" @@ -1475,105 +3499,97 @@ msgstr "Sprawdź, czy GTK+ oraz PyGTK posiadajÄ… w twoim systemie wsparcie dla l msgid "Gajim needs PySQLite2 to run" msgstr "Gajim wymaga do dziaÅ‚ania PySQLite2" -#: ../src/gajim.py:235 +#. set the icon to all newly opened wind +#: ../src/gajim.py:151 +msgid "Gajim is already running" +msgstr "Gajim jest już uruchomiony" + +#: ../src/gajim.py:152 +msgid "" +"Another instance of Gajim seems to be running\n" +"Run anyway?" +msgstr "" +"Wydaje siÄ™, że w tle dziaÅ‚a już inna kopia Gajima.\n" +"Czy mimo to chcesz uruchomić program?" + +#: ../src/gajim.py:267 #, python-format msgid "HTTP (%s) Authorization for %s (id: %s)" msgstr "Autoryzacja HTTP (%s) dla %s (id: %s)" -#: ../src/gajim.py:236 +#: ../src/gajim.py:268 msgid "Do you accept this request?" msgstr "Czy akceptujesz tÄ™ proÅ›bÄ™?" -#: ../src/gajim.py:438 -#, python-format -msgid "%(nickname)s Signed In" -msgstr "%(nickname)s poÅ‚Ä…czyÅ‚(a) siÄ™" - -#: ../src/gajim.py:469 -#, python-format -msgid "%(nickname)s Signed Out" -msgstr "%(nickname)s rozÅ‚Ä…czyÅ‚(a) siÄ™" - -#: ../src/gajim.py:583 -#, python-format -msgid "New Private Message from room %s" -msgstr "Nowa wiadomość prywatna z pokoju %s" - -#: ../src/gajim.py:584 -#, python-format -msgid "%(nickname)s: %(message)s" -msgstr "%(nickname)s: %(message)s" - -#: ../src/gajim.py:606 -#, python-format -msgid "New Single Message from %(nickname)s" -msgstr "Nowa wiadomość od %(nickname)s" - -#: ../src/gajim.py:612 -#, python-format -msgid "New Message from %(nickname)s" -msgstr "Nowa wiadomość od %(nickname)s" - -#: ../src/gajim.py:660 +#: ../src/gajim.py:611 #, python-format msgid "error while sending %s ( %s )" msgstr "bÅ‚Ä…d przy wysyÅ‚aniu %s ( %s )" -#: ../src/gajim.py:700 +#: ../src/gajim.py:651 msgid "Authorization accepted" msgstr "Autoryzacja przyjÄ™ta" -#: ../src/gajim.py:701 +#: ../src/gajim.py:652 #, python-format msgid "The contact \"%s\" has authorized you to see his or her status." msgstr "Kontakt \"%s\" udzieliÅ‚ Ci autoryzacji byÅ› mógÅ‚ widzieć jego status." -#: ../src/gajim.py:709 +#: ../src/gajim.py:660 #, python-format msgid "Contact \"%s\" removed subscription from you" msgstr "Kontakt \"%s\" cofnÄ…Å‚ Ci autoryzacjÄ™" -#: ../src/gajim.py:710 +#: ../src/gajim.py:661 msgid "You will always see him or her as offline." msgstr "Zawsze bÄ™dziesz widziaÅ‚ ten kontakt jako niepoÅ‚Ä…czony." -#: ../src/gajim.py:736 +#: ../src/gajim.py:704 #, python-format msgid "Contact with \"%s\" cannot be established" msgstr "Nie można ustanowić poÅ‚Ä…czenia z \"%s\"" -#: ../src/gajim.py:737 -#: ../src/common/connection.py:349 +#: ../src/gajim.py:705 +#: ../src/common/connection.py:398 msgid "Check your connection or try again later." msgstr "Sprawdź swoje poÅ‚Ä…czenie lub spróbuj później." -#: ../src/gajim.py:874 -#: ../src/roster_window.py:1012 +#: ../src/gajim.py:849 +#: ../src/roster_window.py:1025 #, python-format msgid "%s is now %s (%s)" msgstr "%s ma teraz status %s (%s)" -#: ../src/gajim.py:963 +#: ../src/gajim.py:930 msgid "Your passphrase is incorrect" msgstr "Twoje hasÅ‚o jest niepoprawne." -#: ../src/gajim.py:964 +#: ../src/gajim.py:931 msgid "You are currently connected without your OpenPGP key." msgstr "JesteÅ› aktualnie poÅ‚Ä…czony bez obsÅ‚ugi OpenPGP." #. FIXME: find a better image -#: ../src/gajim.py:1045 +#: ../src/gajim.py:1033 #, python-format msgid "New E-mail on %(gmail_mail_address)s" msgstr "Nowa poczta w skrzynce %(gmail_mail_address)s" -#: ../src/gajim.py:1047 +#: ../src/gajim.py:1035 #, python-format msgid "You have %d new E-mail message" msgid_plural "You have %d new E-mail messages" -msgstr[0] "Masz %d nieprzeczytanÄ… wiadomość" -msgstr[1] "Masz %d nieprzeczytane wiadomoÅ›ci" -msgstr[2] "" +msgstr[0] "Masz %d nieprzeczytanÄ… wiadomość pocztowÄ…" +msgstr[1] "Masz %d nieprzeczytane wiadomoÅ›ci pocztowe" + +#. each message has a 'From', 'Subject' and 'Snippet' field +#: ../src/gajim.py:1040 +#, python-format +msgid "" +"\n" +"From: %(from_address)s" +msgstr "" +"\n" +"Od: %(from_address)s" #: ../src/gajim.py:1185 #, python-format @@ -1620,1931 +3636,381 @@ msgstr "W czasie publikowanie informacji o tobie wystÄ…piÅ‚ bÅ‚Ä…d, spróbuj pon #. it is good to notify the user #. in case he or she cannot see the output of the console -#: ../src/gajim.py:1634 +#: ../src/gajim.py:1683 msgid "Could not save your settings and preferences" msgstr "Nie można zapisać twoich ustawieÅ„ i opcji." -#: ../src/gajim.py:1848 +#: ../src/gajim.py:1903 msgid "Session Management support not available (missing gnome.ui module)" msgstr "Wsparcie dla Menadżera Sesji jest niedostÄ™pne (brak moduÅ‚u gnome.ui" -#: ../src/gajim.py:1878 +#: ../src/gajim.py:1932 msgid "Migrating Logs..." msgstr "Przenoszenie logów..." -#: ../src/gajim.py:1879 +#: ../src/gajim.py:1933 msgid "Please wait while logs are being migrated..." msgstr "ProszÄ™ poczekać na przeniesienie logów..." -#: ../src/gajim_themes_window.py:67 +#: ../src/gajim_themes_window.py:59 msgid "Theme" msgstr "Motyw" #. don't confuse translators -#: ../src/gajim_themes_window.py:149 +#: ../src/gajim_themes_window.py:141 msgid "theme name" msgstr "nazwa motywu" -#: ../src/gajim_themes_window.py:166 +#: ../src/gajim_themes_window.py:158 msgid "You cannot delete your current theme" msgstr "Nie możesz skasować obecnie używanego motywu" -#: ../src/gajim_themes_window.py:167 +#: ../src/gajim_themes_window.py:159 msgid "Please first choose another for your current theme." msgstr "Ustaw najpierw inny motyw" -#: ../src/groupchat_control.py:68 +#: ../src/groupchat_control.py:99 msgid "Private Chat" msgstr "Rozmowa prywatna" -#: ../src/groupchat_control.py:68 +#: ../src/groupchat_control.py:99 msgid "Private Chats" msgstr "Rozmowy prywatne" -#: ../src/groupchat_control.py:84 +#: ../src/groupchat_control.py:115 msgid "Sending private message failed" msgstr "WysyÅ‚anie prywatnej wiadomoÅ›ci nie powiodÅ‚o siÄ™." #. in second %s code replaces with nickname -#: ../src/groupchat_control.py:86 +#: ../src/groupchat_control.py:117 #, python-format msgid "You are no longer in room \"%s\" or \"%s\" has left." msgstr "Nie jesteÅ› już w pokoju \"%s\" lub \"%s\" wyszedÅ‚." -#: ../src/groupchat_control.py:98 +#: ../src/groupchat_control.py:129 msgid "Group Chat" msgstr "Pokój" -#: ../src/groupchat_control.py:98 +#: ../src/groupchat_control.py:129 msgid "Group Chats" msgstr "Czaty" -#: ../src/groupchat_control.py:595 +#: ../src/groupchat_control.py:308 +msgid "Insert Nickname" +msgstr "Wstaw pseudonim" + +#: ../src/groupchat_control.py:702 msgid "This room has no subject" msgstr "Ten pokój nie ma tematu" #. do not print 'kicked by None' -#: ../src/groupchat_control.py:693 +#: ../src/groupchat_control.py:801 #, python-format msgid "%(nick)s has been kicked: %(reason)s" msgstr "%(nick)s zostaÅ‚ wyrzucony: %(reason)s" -#: ../src/groupchat_control.py:697 +#: ../src/groupchat_control.py:805 #, python-format msgid "%(nick)s has been kicked by %(who)s: %(reason)s" msgstr "%(nick)s zostaÅ‚ wyrzucony przez %(who)s: %(reason)s" #. do not print 'banned by None' -#: ../src/groupchat_control.py:704 +#: ../src/groupchat_control.py:812 #, python-format msgid "%(nick)s has been banned: %(reason)s" msgstr "%(nick)s zostaÅ‚ zabanowany: %(reason)s" -#: ../src/groupchat_control.py:708 +#: ../src/groupchat_control.py:816 #, python-format msgid "%(nick)s has been banned by %(who)s: %(reason)s" msgstr "%(nick)s zostaÅ‚ zabanowany przez %(who)s: %(reason)s" -#: ../src/groupchat_control.py:716 +#: ../src/groupchat_control.py:824 #, python-format msgid "You are now known as %s" msgstr "WystÄ™pujesz teraz jako %s" -#: ../src/groupchat_control.py:718 +#: ../src/groupchat_control.py:826 #, python-format msgid "%s is now known as %s" msgstr "%s wystÄ™puje teraz jako %s" -#: ../src/groupchat_control.py:757 +#: ../src/groupchat_control.py:897 #, python-format msgid "%s has left" msgstr "%s wychodzi" +#: ../src/groupchat_control.py:902 +#, python-format +msgid "%s has joined the room" +msgstr "%s doÅ‚Ä…czyÅ‚ do pokoju" + #. No status message -#: ../src/groupchat_control.py:759 -#: ../src/roster_window.py:1015 +#: ../src/groupchat_control.py:904 +#: ../src/roster_window.py:1028 #, python-format msgid "%s is now %s" msgstr "%s ma teraz status %s" -#: ../src/groupchat_control.py:871 -#: ../src/groupchat_control.py:888 -#: ../src/groupchat_control.py:981 -#: ../src/groupchat_control.py:997 +#: ../src/groupchat_control.py:1022 +#: ../src/groupchat_control.py:1039 +#: ../src/groupchat_control.py:1132 +#: ../src/groupchat_control.py:1148 #, python-format msgid "Nickname not found: %s" msgstr "Pseudonim nie zostaÅ‚ odnaleziony: %s" -#: ../src/groupchat_control.py:915 +#: ../src/groupchat_control.py:1066 #, python-format msgid "Invited %(contact_jid)s to %(room_jid)s." msgstr "%(contact_jid)s zaproszony do %(room_jid)s." #. %s is something the user wrote but it is not a jid so we inform -#: ../src/groupchat_control.py:922 -#: ../src/groupchat_control.py:952 +#: ../src/groupchat_control.py:1073 +#: ../src/groupchat_control.py:1103 #, python-format msgid "%s does not appear to be a valid JID" msgstr "%s nie wyglÄ…da na poprawny JID" -#: ../src/groupchat_control.py:1019 +#: ../src/groupchat_control.py:1185 #, python-format msgid "No such command: /%s (if you want to send this, prefix it with /say)" msgstr "Nie ma takiego polecenia: /%s (jeÅ›li chcesz je wysÅ‚ać, poprzedź je znakami: /say)" -#: ../src/groupchat_control.py:1041 +#: ../src/groupchat_control.py:1207 #, python-format msgid "Commands: %s" msgstr "Polecenia: %s" -#: ../src/groupchat_control.py:1043 +#: ../src/groupchat_control.py:1209 #, python-format msgid "Usage: /%s [reason], bans the JID from the room. The nickname of an occupant may be substituted, but not if it contains \"@\". If the JID is currently in the room, he/she/it will also be kicked. Does NOT support spaces in nickname." msgstr "Użycie: /%s [powód] banuje JID w pokoju. Pseudonim osoby może zostać zmieniony o ile nie zawiera \"@\". JeÅ›li JID jest obecnie w pokoju, to zostanie z niego wyrzucony. NIE toleruje spacji w pseudonimie." -#: ../src/groupchat_control.py:1049 +#: ../src/groupchat_control.py:1215 #, python-format msgid "Usage: /%s , opens a private chat window to the specified occupant." msgstr "Użycie: /%s otwiera okno prywatnej rozmowy z tÄ… osobÄ…." -#: ../src/groupchat_control.py:1053 +#: ../src/groupchat_control.py:1219 #, python-format msgid "Usage: /%s, clears the text window." msgstr "Użycie: /%s czyÅ›cie okno tekstowe." -#: ../src/groupchat_control.py:1055 +#: ../src/groupchat_control.py:1221 #, python-format msgid "Usage: /%s [reason], closes the current window or tab, displaying reason if specified." msgstr "Użycie: /%s [powód] zamyka aktualne okno lub kartÄ™ i wyÅ›wietla powóc, jeÅ›li zostaÅ‚ podany." -#: ../src/groupchat_control.py:1058 +#: ../src/groupchat_control.py:1224 #, python-format msgid "Usage: /%s, hide the chat buttons." msgstr "Użycie: /%s ukrywa przyciski czatu." -#: ../src/groupchat_control.py:1060 +#: ../src/groupchat_control.py:1226 #, python-format msgid "Usage: /%s [reason], invites JID to the current room, optionally providing a reason." msgstr "Użycie: /%s [powód] zaprasza JID do aktualnego pokoju, opcjonalnie wyÅ›wietlajÄ…c powód." -#: ../src/groupchat_control.py:1064 +#: ../src/groupchat_control.py:1230 #, python-format msgid "Usage: /%s @[/nickname], offers to join room@server optionally using specified nickname." msgstr "Użycie: /%s @[/pseudonim] oferuje przyÅ‚Ä…czenie siÄ™ do pokój@serwer opcjonalnie z wykorzystaniem podanego psedonimu." -#: ../src/groupchat_control.py:1068 +#: ../src/groupchat_control.py:1234 #, python-format msgid "Usage: /%s [reason], removes the occupant specified by nickname from the room and optionally displays a reason. Does NOT support spaces in nickname." msgstr "Użycie: /%s [powód] usuwa podanÄ… poprzez pseudonim osobÄ™ z pokoju i opcjonalnie wyÅ›wietla powód. NIE wspiera spacji w pseudonimie." -#: ../src/groupchat_control.py:1073 +#: ../src/groupchat_control.py:1239 #, python-format msgid "Usage: /%s , sends action to the current room. Use third person. (e.g. /%s explodes.)" msgstr "Użycie: /%s wysyÅ‚a dziaÅ‚anie do aktualnego pokoju. Używaj w trzeciej osobie (np. /%s eksploduje.)" -#: ../src/groupchat_control.py:1077 +#: ../src/groupchat_control.py:1243 #, python-format msgid "Usage: /%s [message], opens a private message windowand sends message to the occupant specified by nickname." msgstr "Użycie: /%s [wiadomość] otwiera okno prywatnej wiadomoÅ›ci i wysyÅ‚a jÄ… do osoby o takim pseudonimie." -#: ../src/groupchat_control.py:1082 +#: ../src/groupchat_control.py:1248 #, python-format msgid "Usage: /%s , changes your nickname in current room." msgstr "Użycie: /%s zmienia twój pseudonim w aktualnym pokoju." -#: ../src/groupchat_control.py:1086 +#: ../src/groupchat_control.py:1252 +#, python-format +msgid "Usage: /%s , display the names of room occupants." +msgstr "Użycie: /%s , wyÅ›wietla osoby obecne w danym pokoju." + +#: ../src/groupchat_control.py:1256 #, python-format msgid "Usage: /%s [topic], displays or updates the current room topic." msgstr "Użycie: /%s [temat] wyÅ›wietla lub aktualizuje temat aktualnego pokoju." -#: ../src/groupchat_control.py:1089 +#: ../src/groupchat_control.py:1259 #, python-format msgid "Usage: /%s , sends a message without looking for other commands." msgstr "Użycie: /%s wysyÅ‚a wiadomość bez sprawdzania innych poleceÅ„." -#: ../src/groupchat_control.py:1092 +#: ../src/groupchat_control.py:1262 #, python-format msgid "No help info for /%s" msgstr "Brak informacji o pomocy dla /%s" -#: ../src/groupchat_control.py:1128 +#: ../src/groupchat_control.py:1304 #, python-format msgid "Are you sure you want to leave room \"%s\"?" msgstr "Czy jesteÅ› pewien, że chcesz opuÅ›cić pokój \"%s\"?" -#: ../src/groupchat_control.py:1129 +#: ../src/groupchat_control.py:1305 msgid "If you close this window, you will be disconnected from this room." msgstr "JeÅ›li zamkniesz to okno, to poÅ‚Ä…czenie z tym pokojem zostanie zerwane." -#: ../src/groupchat_control.py:1133 +#: ../src/groupchat_control.py:1309 msgid "Do _not ask me again" msgstr "_Nie pytaj mnie o to ponownie." -#: ../src/groupchat_control.py:1167 +#: ../src/groupchat_control.py:1343 msgid "Changing Subject" msgstr "Zmiana tematu" -#: ../src/groupchat_control.py:1168 +#: ../src/groupchat_control.py:1344 msgid "Please specify the new subject:" msgstr "Wpisz nowy temat:" -#: ../src/groupchat_control.py:1176 +#: ../src/groupchat_control.py:1352 msgid "Changing Nickname" msgstr "Zmiana pseudonimu" -#: ../src/groupchat_control.py:1177 +#: ../src/groupchat_control.py:1353 msgid "Please specify the new nickname you want to use:" msgstr "Wpisz nowy pseudonim, którego chcesz używać:" -#: ../src/groupchat_control.py:1202 +#: ../src/groupchat_control.py:1379 msgid "Bookmark already set" msgstr "ZakÅ‚adka zostaÅ‚a już dodana" -#: ../src/groupchat_control.py:1203 +#: ../src/groupchat_control.py:1380 #, python-format msgid "Room \"%s\" is already in your bookmarks." msgstr "Pokój \"%s\" jest już w Twoich zakÅ‚adkach." -#: ../src/groupchat_control.py:1212 +#: ../src/groupchat_control.py:1389 msgid "Bookmark has been added successfully" msgstr "ZakÅ‚adka zostaÅ‚a dodana" -#: ../src/groupchat_control.py:1213 +#: ../src/groupchat_control.py:1390 msgid "You can manage your bookmarks via Actions menu in your roster." msgstr "Możesz zarzÄ…dzać zakÅ‚adkami poprzez menu DziaÅ‚ania w oknie kontaktów." #. ask for reason -#: ../src/groupchat_control.py:1322 +#: ../src/groupchat_control.py:1500 #, python-format msgid "Kicking %s" msgstr "Wyrzuć %s" -#: ../src/groupchat_control.py:1323 -#: ../src/groupchat_control.py:1568 +#: ../src/groupchat_control.py:1501 +#: ../src/groupchat_control.py:1779 msgid "You may specify a reason below:" msgstr "Podaj przyczynÄ™:" #. ask for reason -#: ../src/groupchat_control.py:1567 +#: ../src/groupchat_control.py:1778 #, python-format msgid "Banning %s" msgstr "Zabanuj %s" -#: ../src/gtkexcepthook.py:52 +#: ../src/gtkexcepthook.py:51 msgid "A programming error has been detected" msgstr "Wykryto bÅ‚Ä…d programistyczny" -#: ../src/gtkexcepthook.py:53 +#: ../src/gtkexcepthook.py:52 msgid "It probably is not fatal, but should be reported to the developers nonetheless." msgstr "Nie jest prawdopodnie krytyczny, ale powinien zostać mimo to zgÅ‚oszony deweloperom." -#: ../src/gtkexcepthook.py:59 +#: ../src/gtkexcepthook.py:58 msgid "_Report Bug" msgstr "_ZgÅ‚oÅ› BÅ‚Ä…d" -#: ../src/gtkexcepthook.py:82 +#: ../src/gtkexcepthook.py:81 msgid "Details" msgstr "Szczegóły" -#. this always tracebacks -#: ../src/gtkgui.glade.h:1 -msgid "0" -msgstr "0" - -#: ../src/gtkgui.glade.h:2 -msgid "" -"Account is being created\n" -"\n" -"Please wait..." -msgstr "" -"Konto jest tworzone\n" -"\n" -"proszÄ™ czekać..." - -#: ../src/gtkgui.glade.h:5 -msgid "Advanced Configuration Editor" -msgstr "Edytor zaawansowanych konfiguracji" - -#: ../src/gtkgui.glade.h:6 -msgid "Applications" -msgstr "Aplikacje" - -#: ../src/gtkgui.glade.h:7 -msgid "Chatstate Tab Colors" -msgstr "Kolory kart w oknie czatu" - -#. a header for custom browser/client/file manager. so translate sth like: Custom Settings -#: ../src/gtkgui.glade.h:9 -msgid "Custom" -msgstr "WÅ‚asne" - -#: ../src/gtkgui.glade.h:10 -msgid "Description" -msgstr "Opis" - -#: ../src/gtkgui.glade.h:11 -msgid "Format of a line" -msgstr "Format linii" - -#: ../src/gtkgui.glade.h:12 -msgid "Interface Customization" -msgstr "WÅ‚asne ustawienia interfejsu" - -#: ../src/gtkgui.glade.h:13 -msgid "Jabber Traffic" -msgstr "Jabber Traffic" - -#: ../src/gtkgui.glade.h:14 -msgid "Miscellaneous" -msgstr "Różne" - -#: ../src/gtkgui.glade.h:15 -msgid "NOTE: You should restart gajim for some setting to take effect" -msgstr "UWAGA: powienieneÅ› ponownie uruchomić program by zastosować ostatnie ustawienia" - -#: ../src/gtkgui.glade.h:16 -msgid "OpenPGP" -msgstr "OpenPGP" - -#: ../src/gtkgui.glade.h:17 -msgid "Personal Information" -msgstr "Informacje o sobie" - -#: ../src/gtkgui.glade.h:18 -msgid "Please choose one of the options below:" -msgstr "Wybierz jednÄ… z poniższych opcji:" - -#: ../src/gtkgui.glade.h:19 -msgid "Please fill in the data for your new account" -msgstr "Wpisz dane do swojego nowego konta" - -#: ../src/gtkgui.glade.h:20 -msgid "Preset Status Messages" -msgstr "Zapisane opisy" - -#: ../src/gtkgui.glade.h:21 -msgid "Properties" -msgstr "WÅ‚aÅ›ciwoÅ›ci" - -#: ../src/gtkgui.glade.h:22 -msgid "Settings" -msgstr "Ustawienia" - -#: ../src/gtkgui.glade.h:23 -msgid "Sounds" -msgstr "DźwiÄ™ki" - -#: ../src/gtkgui.glade.h:24 -msgid "Type your new status message" -msgstr "Wpisz nowy opis statusu:" - -#: ../src/gtkgui.glade.h:25 -msgid "Visual Notifications" -msgstr "Powiadomienia wizualne" - -#: ../src/gtkgui.glade.h:26 -msgid "What do you want to do?" -msgstr "Co chcesz zrobić?" - -#: ../src/gtkgui.glade.h:27 -msgid "XML Input" -msgstr "WejÅ›cie XML" - -#: ../src/gtkgui.glade.h:28 -msgid "A list of active, completed and stopped file transfers" -msgstr "Lista aktywnych, ukoÅ„czonych i zatrzymanych transferów plików." - -#: ../src/gtkgui.glade.h:29 -msgid "A_ccounts" -msgstr "_Konta" - -#: ../src/gtkgui.glade.h:30 -msgid "A_fter nickname:" -msgstr "_Za pseudonimem:" - -#. "About" is the text of a tab of vcard window -#: ../src/gtkgui.glade.h:32 -msgid "About" -msgstr "Informacje" - -#: ../src/gtkgui.glade.h:33 -msgid "Accept" -msgstr "Akceptuj" - -#: ../src/gtkgui.glade.h:34 -msgid "Account" -msgstr "Konto" - -#: ../src/gtkgui.glade.h:35 -msgid "" -"Account\n" -"Group\n" -"Contact\n" -"Banner" -msgstr "" -"Konto\n" -"Grupa\n" -"Kontakt\n" -"Banner" - -#: ../src/gtkgui.glade.h:39 -msgid "Account Modification" -msgstr "Modyfikacja konta" - -#: ../src/gtkgui.glade.h:40 -msgid "Accounts" -msgstr "Konta" - -#: ../src/gtkgui.glade.h:42 -msgid "Add New Contact" -msgstr "Dodaj nowy kontakt" - -#: ../src/gtkgui.glade.h:43 -msgid "Add Special _Notification" -msgstr "Dodaj powiadomienia _specjalne" - -#: ../src/gtkgui.glade.h:44 -msgid "Add _Contact" -msgstr "Dodaj _kontakt" - -#: ../src/gtkgui.glade.h:45 -msgid "Address" -msgstr "Adres" - -#: ../src/gtkgui.glade.h:46 -msgid "Advanced" -msgstr "Zaawansowane" - -#: ../src/gtkgui.glade.h:47 -msgid "Advanced Configuration Editor" -msgstr "Edytor zaawansowanych ustawieÅ„" - -#: ../src/gtkgui.glade.h:48 -msgid "" -"All chat states\n" -"Composing only\n" -"Disabled" -msgstr "" -"Wszystkie stany rozmowy\n" -"Tylko dotyczÄ…ce pisania\n" -"WyÅ‚Ä…czone" - -#: ../src/gtkgui.glade.h:51 -msgid "Allow _OS information to be sent" -msgstr "Zezwól na wysyÅ‚anie informacji o systemie _operacyjnym" - -#: ../src/gtkgui.glade.h:52 -msgid "Allow him/her to see my status" -msgstr "Pozwól mu/jej widzieć swój status" - -#: ../src/gtkgui.glade.h:53 -msgid "Allow popup/notifications when I'm _away/na/busy/invisible" -msgstr "Pokazuj powiadomienia gdy mam status _zaraz wracam/nieobecny/zajÄ™ty/niewidoczny." - -#: ../src/gtkgui.glade.h:54 -msgid "Also known as iChat style" -msgstr "Znany także jako styl iChat" - -#: ../src/gtkgui.glade.h:55 -msgid "Ask status message when I:" -msgstr "Pytaj o opis przy zmianie statusu na:" - -#: ../src/gtkgui.glade.h:56 -msgid "Ask to see his/her status" -msgstr "PoproÅ› o to, żeby móc widzieć jego/jej status" - -#: ../src/gtkgui.glade.h:57 -msgid "Ask:" -msgstr "Pytaj:" - -#: ../src/gtkgui.glade.h:58 -msgid "Assign Open_PGP Key" -msgstr "Przypisz klucz Open_PGP" - -#: ../src/gtkgui.glade.h:59 -msgid "Authorize contact so he can know when you're connected" -msgstr "Autoryzuj kontakt - bÄ™dzie wówczas wiedziaÅ‚, kiedy jesteÅ› poÅ‚Ä…czony" - -#: ../src/gtkgui.glade.h:60 -msgid "Auto _away after:" -msgstr "Automatyczny status '_Zaraz wracam' po:" - -#: ../src/gtkgui.glade.h:61 -msgid "Auto _not available after:" -msgstr "Automatyczny status '_Nieobecny' po:" - -#: ../src/gtkgui.glade.h:62 -msgid "Auto join" -msgstr "PoÅ‚Ä…cz automatycznie" - -#: ../src/gtkgui.glade.h:63 -msgid "" -"Autodetect on every Gajim startup\n" -"Always use GNOME default applications\n" -"Always use KDE default applications\n" -"Custom" -msgstr "" -"Automatyczne wykrywanie przy każdym uruchomieniu Gajima\n" -"Zawsze używaj domyÅ›lnych aplikacji GNOME\n" -"Zawsze używaj domyÅ›lnych aplikacji KDE\n" -"WÅ‚asne" - -#: ../src/gtkgui.glade.h:67 -msgid "Automatically authorize contact" -msgstr "Automatycznie autoryzuj kontakt" - -#: ../src/gtkgui.glade.h:68 -msgid "Autoreconnect when connection is lost" -msgstr "Automatyczne poÅ‚Ä…czenie po utracie Å‚Ä…cznoÅ›ci" - -#: ../src/gtkgui.glade.h:69 -msgid "B_efore nickname:" -msgstr "_Przed pseudonimem:" - -#: ../src/gtkgui.glade.h:70 -msgid "Birthday:" -msgstr "Urodziny:" - -#: ../src/gtkgui.glade.h:71 -msgid "Bold" -msgstr "WytÅ‚uszczone" - -#: ../src/gtkgui.glade.h:72 -msgid "Build custom query" -msgstr "Stwórz wÅ‚asne zapytanie" - -#: ../src/gtkgui.glade.h:73 -msgid "C_onnect on Gajim startup" -msgstr "P_oÅ‚Ä…cz przy starcie programu" - -#: ../src/gtkgui.glade.h:74 -msgid "Cancel file transfer" -msgstr "Usuwa transfer pliku" - -#: ../src/gtkgui.glade.h:75 -msgid "Cancels the selected file transfer" -msgstr "Usuwa wybrany transfer pliku" - -#: ../src/gtkgui.glade.h:76 -msgid "Cancels the selected file transfer and removes incomplete file" -msgstr "Usuwa wybrany transfer pliku i usuwa niedokoÅ„czony plik" - -#: ../src/gtkgui.glade.h:77 -msgid "Chan_ge Password" -msgstr "Z_mieÅ„ hasÅ‚o" - -#: ../src/gtkgui.glade.h:78 -msgid "Change Password" -msgstr "ZmieÅ„ hasÅ‚o" - -#: ../src/gtkgui.glade.h:79 -msgid "Change _Nickname" -msgstr "ZmieÅ„ pseudo_nim" - -#: ../src/gtkgui.glade.h:80 -msgid "Change _Subject" -msgstr "ZmieÅ„ _temat" - -#: ../src/gtkgui.glade.h:82 -msgid "Chat state noti_fications:" -msgstr "Powiadomienia o stanie _rozmowy:" - -#: ../src/gtkgui.glade.h:83 -msgid "Check this option, only if someone you don't have in the roster spams/annoys you. Use with caution, cause it blocks all messages from any contact that is not in the roster" -msgstr "Zaznacz tÄ™ opcjÄ™ tylko jeÅ›li ktoÅ› spoza listy kontaktów nÄ™ka CiÄ™ wiadomoÅ›ciami. Stosuj jÄ… ostrożnie, ponieważ powoduje ona blokowanie wszystkich wiadomoÅ›ci osób, których nie masz na liÅ›cie kontaktów." - -#: ../src/gtkgui.glade.h:84 -msgid "Check this so Gajim will connect in port 5223 where legacy servers are expected to have SSL capabilities. Note that Gajim uses TLS encryption by default if broadcasted by the server, and with this option enabled TLS will be disabled" -msgstr "Zaznaczenie tej opcji spowoduje Å‚Ä…czenia na porcie 5223 gdzie wiÄ™kszość serwerów udostÄ™pnia usÅ‚ugÄ™ SSL. Gajim używa szyfrowania TLS domyÅ›lnie, jeÅ›li tylko serwer daje takÄ… możliwość. Ta opcja wyÅ‚Ä…cza TLS." - -#: ../src/gtkgui.glade.h:85 -msgid "Choose _Key..." -msgstr "Wybierz _Klucz..." - -#: ../src/gtkgui.glade.h:86 -msgid "City:" -msgstr "Miasto:" - -#: ../src/gtkgui.glade.h:87 -msgid "Clean _up" -msgstr "P_osprzÄ…taj" - -#: ../src/gtkgui.glade.h:88 -msgid "Click to change account's password" -msgstr "Kliknij, aby zmienić hasÅ‚o dla konta" - -#: ../src/gtkgui.glade.h:89 -msgid "Click to insert an emoticon (Alt+M)" -msgstr "Kliknij by wstawić emotikon (Alt+E)" - -#: ../src/gtkgui.glade.h:90 -msgid "Click to see features (like MSN, ICQ transports) of jabber servers" -msgstr "Kliknij by zobaczyć możliwoÅ›ci serwerów jabbera (np. transporty MSN czy ICQ)" - -#: ../src/gtkgui.glade.h:91 -msgid "Click to see past conversation in this room" -msgstr "Kliknij by zobaczyć poprzednie rozmowy w tym pokoju" - -#: ../src/gtkgui.glade.h:92 -msgid "Click to see past conversations with this contact" -msgstr "Kliknij by zobaczyć poprzednie rozmowy z tym kontaktem" - -#: ../src/gtkgui.glade.h:93 -msgid "Client:" -msgstr "Klient:" - -#: ../src/gtkgui.glade.h:94 -msgid "Company:" -msgstr "Firma:" - -#: ../src/gtkgui.glade.h:95 -msgid "Composing" -msgstr "Tworzenie wiadomoÅ›ci" - -#: ../src/gtkgui.glade.h:96 -msgid "Configure _Room" -msgstr "Konfiguruj _pokój" - -#: ../src/gtkgui.glade.h:97 -msgid "Connect when I press Finish" -msgstr "PoÅ‚Ä…cz po wciÅ›niÄ™ciu przycisku ZakoÅ„cz" - -#: ../src/gtkgui.glade.h:98 -msgid "Connection" -msgstr "PoÅ‚Ä…czenie" - -#: ../src/gtkgui.glade.h:99 -msgid "Contact Information" -msgstr "Informacje o kontakcie" - -#: ../src/gtkgui.glade.h:100 -msgid "Contact _Info" -msgstr "_Informacje o kontakcie" - -#: ../src/gtkgui.glade.h:101 -msgid "Conversation History" -msgstr "Historia rozmowy" - -#: ../src/gtkgui.glade.h:102 -msgid "Country:" -msgstr "Kraj:" - -#: ../src/gtkgui.glade.h:103 -msgid "Default status _iconset:" -msgstr "DomyÅ›lny zestaw ikon _statusu:" - -#: ../src/gtkgui.glade.h:104 -msgid "Delete MOTD" -msgstr "UsuÅ„ MOTD" - -#: ../src/gtkgui.glade.h:105 -msgid "Deletes Message of the Day" -msgstr "Usuwa Wiadomość Dnia" - -#: ../src/gtkgui.glade.h:106 -msgid "Deny" -msgstr "Odmów" - -#: ../src/gtkgui.glade.h:107 -msgid "Deny authorization from contact so he cannot know when you're connected" -msgstr "Odmów autoryzacji kontaktowi, nie bÄ™dzie on wówczas wiedziaÅ‚ kiedy jesteÅ› poÅ‚Ä…czony." - -#: ../src/gtkgui.glade.h:108 -msgid "Department:" -msgstr "DziaÅ‚:" - -#: ../src/gtkgui.glade.h:109 -msgid "Display a_vatars of contacts in roster" -msgstr "WyÅ›wietlaj awatary kontaktów z listy" - -#: ../src/gtkgui.glade.h:110 -msgid "Display status _messages of contacts in roster" -msgstr "WyÅ›wietlaj _opisy statusu kontaktu na liÅ›cie kontaktów" - -#: ../src/gtkgui.glade.h:111 -msgid "E-Mail:" -msgstr "Adres e-mail:" - -#: ../src/gtkgui.glade.h:112 -msgid "E_very 5 minutes" -msgstr "Co 5 _minut" - -#: ../src/gtkgui.glade.h:113 -msgid "Edit Groups" -msgstr "Edytuj Grupy" - -#: ../src/gtkgui.glade.h:114 -msgid "Edit Personal Information..." -msgstr "ZmieÅ„ informacje o sobie..." - -#: ../src/gtkgui.glade.h:115 -msgid "Edit _Groups" -msgstr "Modyfikuj _grupy" - -#: ../src/gtkgui.glade.h:116 -msgid "Emoticons:" -msgstr "Emotikony:" - -#. XML Console enable checkbutton -#: ../src/gtkgui.glade.h:118 -msgid "Enable" -msgstr "WÅ‚Ä…cz" - -#: ../src/gtkgui.glade.h:119 -msgid "Enter it again for confirmation:" -msgstr "Wpisz ponownie nowe hasÅ‚o:" - -#: ../src/gtkgui.glade.h:120 -msgid "Enter new password:" -msgstr "Wpisz nowe hasÅ‚o:" - -#: ../src/gtkgui.glade.h:121 -msgid "Events" -msgstr "Zdarzenia" - -#: ../src/gtkgui.glade.h:122 -msgid "Extra Address:" -msgstr "Dodatkowy adres:" - -#. Family Name -#: ../src/gtkgui.glade.h:124 -msgid "Family:" -msgstr "Nazwisko:" - -#: ../src/gtkgui.glade.h:125 -msgid "File Transfers" -msgstr "PrzesyÅ‚ane pliki." - -#: ../src/gtkgui.glade.h:126 -msgid "File _Transfers" -msgstr "_PrzesyÅ‚anie plików" - -#: ../src/gtkgui.glade.h:127 -msgid "Filter:" -msgstr "Filtr:" - -#: ../src/gtkgui.glade.h:128 -msgid "Font style:" -msgstr "Styl czcionki:" - -#: ../src/gtkgui.glade.h:129 -msgid "Forbid him/her to see my status" -msgstr "ZabroÅ„ mu/jej widzieć twój status" - -#: ../src/gtkgui.glade.h:130 -msgid "Format: YYYY-MM-DD" -msgstr "Format: RRRR-MM-DD" - -#: ../src/gtkgui.glade.h:131 -msgid "Frequently Asked Questions (online)" -msgstr "Najczęściej Zadawane Pytania (w sieci)" - -#: ../src/gtkgui.glade.h:132 -msgid "From:" -msgstr "Od:" - -#: ../src/gtkgui.glade.h:133 -msgid "G_o" -msgstr "I_dź" - -#: ../src/gtkgui.glade.h:134 -#: ../src/notify.py:167 -#: ../src/notify.py:189 -#: ../src/notify.py:201 -#: ../src/tooltips.py:339 -msgid "Gajim" -msgstr "Gajim" - -#: ../src/gtkgui.glade.h:135 -msgid "Gajim Themes Customization" -msgstr "Wybieranie motywów dla Gajim" - -#: ../src/gtkgui.glade.h:136 -msgid "Gajim can send and receive meta-information related to a conversation you may have with a contact. Here you can specify which chatstates you want to send to the other party." -msgstr "Gajim może wysyÅ‚ać i odbierać meta-infomacje zwiÄ…zane z prowadzonÄ… rozmowÄ…. W tym miejscu możesz zdecydować, jakie dane chcesz wysyÅ‚ać do rozmówcy." - -#: ../src/gtkgui.glade.h:137 -msgid "Gajim will automatically show new events by poping up the relative window" -msgstr "Gajim automatycznie wyÅ›wietli nowÄ… wiadomość w nowym oknie lub w nowej karcie otwartego okna rozmowy." - -#: ../src/gtkgui.glade.h:138 -msgid "Gajim will notify you for new events via a popup in the bottom right of the screen" -msgstr "Gajim powiadomi CiÄ™ o nadejÅ›ciu nowej wiadomoÅ›ci wyÅ›wietlajÄ…c okienko w prawym dolnym rogu ekranu." - -#: ../src/gtkgui.glade.h:139 -msgid "Gajim will notify you via a popup window in the bottom right of the screen about contacts that just signed in" -msgstr "Gajim powiadomi automatycznie przy pomocy okna w prawym dolnym rogu o kontaktach, które zmieniajÄ… status na DostÄ™pny." - -#: ../src/gtkgui.glade.h:140 -msgid "Gajim will notify you via a popup window in the bottom right of the screen about contacts that just signed out" -msgstr "Gajim powiadomi automatycznie przy pomocy okna w prawym dolnym rogu o kontaktach które zmieniajÄ… status na RozÅ‚Ä…czony." - -#: ../src/gtkgui.glade.h:141 -msgid "Gajim will only change the icon of the contact that triggered the new event" -msgstr "Gajim zmieni jedynie ikonÄ™ kontaktu, który przysÅ‚aÅ‚ nowÄ… wiadomość." - -#: ../src/gtkgui.glade.h:142 -msgid "Gajim: Account Creation Wizard" -msgstr "Gajim: Kreator Konta" - -#. user has no group, print him in General -#: ../src/gtkgui.glade.h:143 -#: ../src/roster_window.py:291 -#: ../src/roster_window.py:1183 -#: ../src/roster_window.py:1405 -#: ../src/systray.py:286 -msgid "General" -msgstr "Ogólne" - -#. Given Name -#: ../src/gtkgui.glade.h:145 -msgid "Given:" -msgstr "ImiÄ™:" - -#: ../src/gtkgui.glade.h:146 -msgid "Gone" -msgstr "ZniknÄ…Å‚" - -#: ../src/gtkgui.glade.h:147 -msgid "Group:" -msgstr "Grupa:" - -#: ../src/gtkgui.glade.h:148 -msgid "HTTP Connect" -msgstr "PoÅ‚Ä…czenie HTTP" - -#: ../src/gtkgui.glade.h:149 -msgid "Help online" -msgstr "Pomoc w sieci" - -#: ../src/gtkgui.glade.h:150 -msgid "Hides the window" -msgstr "Ukrywa okno" - -#: ../src/gtkgui.glade.h:151 -msgid "Homepage:" -msgstr "Strona domowa:" - -#: ../src/gtkgui.glade.h:152 -msgid "Hostname: " -msgstr "Nazwa hosta: " - -#: ../src/gtkgui.glade.h:153 -msgid "I already have an account I want to use" -msgstr "Mam już konto i chcÄ™ z niego korzystać." - -#: ../src/gtkgui.glade.h:154 -msgid "I want to _register for a new account" -msgstr "ChcÄ™ za_rejestrować nowe konto Jabbera." - -#: ../src/gtkgui.glade.h:155 -msgid "I would like to add you to my contact list." -msgstr "ChciaÅ‚bym dodać CiÄ™ do listy kontaktów." - -#: ../src/gtkgui.glade.h:156 -msgid "If checked, Gajim will also broadcast some more IPs except from just your IP, so file transfer has higher chances of working right." -msgstr "Jeżeli opcja jest aktywna, Gajim rozeÅ›le kilka dodatkowych adresów IP poza Twoim, tak aby przesyÅ‚anie plików przebiegaÅ‚o sprawniej." - -#: ../src/gtkgui.glade.h:157 -msgid "If checked, Gajim will display avatars of contacts in roster window and in group chats" -msgstr "Zaznaczenie tej opcji spowoduje wyÅ›wietlanie awatarów w oknie listy kontaktów (roster oraz okno czatu)." - -#: ../src/gtkgui.glade.h:158 -msgid "If checked, Gajim will display status messages of contacts under the contact name in roster window and in group chats" -msgstr "JeÅ›li jest zaznaczone, Gajim bÄ™dzie wyÅ›wietlaÅ‚ opis statusu kontaktu pod jego nazwÄ… na liÅ›cie kontaktów." - -#: ../src/gtkgui.glade.h:159 -msgid "If checked, Gajim will join this group chat on startup" -msgstr "Zaznaczenie spowoduje Å‚Ä…czenie z tym pokojem przy starcie programu." - -#: ../src/gtkgui.glade.h:160 -msgid "If checked, Gajim will remember the password for this account" -msgstr "WÅ‚Ä…czenie tej opcji spowoduje zapamiÄ™tanie hasÅ‚a dla tego konta." - -#: ../src/gtkgui.glade.h:161 -msgid "If checked, Gajim will remember the roster and chat window positions in the screen and the sizes of them next time you run it" -msgstr "Zaznaczenie tej opcji spowoduje zapamiÄ™tanie poÅ‚ożenia głównego okna programu na ekranie oraz jego rozmiaru." - -#: ../src/gtkgui.glade.h:162 -msgid "If checked, Gajim will send keep-alive packets so it prevents connection timeout which results in disconnection" -msgstr "Zaznaczenie tej opcji spowoduje wysyÅ‚anie pakietów podtrzymujÄ…cych poÅ‚Ä…czenie, co zapobiega rozÅ‚Ä…czaniu." - -#: ../src/gtkgui.glade.h:163 -msgid "If checked, Gajim will store the password in ~/.gajim/config with 'read' permission only for you" -msgstr "Zaznaczanie tej opcji spowoduje przechowywanie hasÅ‚a w pliku ~/.gajim/config z prawem do odczytu tylko dla ciebie." - -#: ../src/gtkgui.glade.h:164 -msgid "If checked, Gajim will use protocol-specific status icons. (eg. A contact from MSN will have the equivalent msn icon for status online, away, busy, etc...)" -msgstr "DziÄ™ki tej opcji Gajim bÄ™dzie używaÅ‚ zestawów ikon charakterystycznych dla transportu, np. kontakt z MSN bÄ™dzie miaÅ‚ odpowiednie ikony statusu dostÄ™pny, zaraz wracam, zajÄ™ty, itd." - -#: ../src/gtkgui.glade.h:165 -msgid "If checked, Gajim, when launched, will automatically connect to jabber using this account" -msgstr "Zaznaczanie tej opcji spowoduje automatyczne Å‚Ä…czenie z sieciÄ… Jabber z wykorzystaniem tego konta." - -#: ../src/gtkgui.glade.h:166 -msgid "If checked, any change to the global status (handled by the combobox at the bottom of the roster window) will change the status of this account accordingly" -msgstr "JeÅ›li jest zaznaczone, to każda zmiana statusu globalnego (ustawianego z menu na dole okna listy kontaktów) wpÅ‚ynie odpowiednio na stutus tego konta." - -#: ../src/gtkgui.glade.h:167 -msgid "If not disabled, Gajim will replace ascii smilies like ':)' with equivalent animated or static graphical emoticons" -msgstr "Zaznaczenie tej opcji spowoduje zastÄ…pienie emotikon tekstowych jak ':)' emotikonami graficznymi." - -#: ../src/gtkgui.glade.h:168 -msgid "If you have 2 or more accounts and it is checked, Gajim will list all contacts as if you had one account" -msgstr "JeÅ›li masz dwa konta lub wiÄ™cej, to dziÄ™ki tej opcji Gajim pokaże wszystkie kontakty w taki sposób, jakby byÅ‚o to jedno konto." - -#: ../src/gtkgui.glade.h:169 -msgid "Inactive" -msgstr "Nieaktywny" - -#. Info/Query make the "IQ" initials. So translate like this 'YourLang/YourLang (Info/Query)'. Thanks (it's a tooltip so width is not a problem) -#: ../src/gtkgui.glade.h:171 -msgid "Info/Query" -msgstr "Informacje/Zapytanie" - -#: ../src/gtkgui.glade.h:172 -msgid "Information about you, as stored in the server" -msgstr "Informacje o Tobie, takie jakie sÄ… przechowywane na serwerze" - -#: ../src/gtkgui.glade.h:173 -msgid "Invitation Received" -msgstr "Zaproszenie Odebrane" - -#: ../src/gtkgui.glade.h:174 -msgid "Italic" -msgstr "Kursywa" - -#: ../src/gtkgui.glade.h:175 -msgid "Jabber" -msgstr "Jabber" - -#: ../src/gtkgui.glade.h:176 -msgid "Jabber ID:" -msgstr "Jabber ID:" - -#: ../src/gtkgui.glade.h:178 -msgid "Join _Group Chat" -msgstr "DoÅ‚Ä…cz do _pokoju" - -#: ../src/gtkgui.glade.h:179 -msgid "Location" -msgstr "Miejsce" - -#: ../src/gtkgui.glade.h:180 -msgid "" -"MUC\n" -"Messages" -msgstr "" -"MUC\n" -"WiadomoÅ›ci" - -#: ../src/gtkgui.glade.h:182 -msgid "" -"MUC Directed\n" -"Messages" -msgstr "" -"Czat\n" -"WiadomoÅ›ci" - -#: ../src/gtkgui.glade.h:184 -msgid "Ma_nage..." -msgstr "Za_rzÄ…dzaj..." - -#: ../src/gtkgui.glade.h:185 -msgid "Manage Accounts" -msgstr "ZarzÄ…dzaj kontami" - -#: ../src/gtkgui.glade.h:186 -msgid "Manage Bookmarks" -msgstr "ZarzÄ…dzaj zakÅ‚adkami" - -#: ../src/gtkgui.glade.h:187 -msgid "Manage Proxy Profiles" -msgstr "ZarzÄ…dzaj profilami poÅ›rednika" - -#: ../src/gtkgui.glade.h:188 -msgid "Manage..." -msgstr "ZarzÄ…dzaj..." - -#. Middle Name -#: ../src/gtkgui.glade.h:190 -msgid "Middle:" -msgstr "Drugie imiÄ™:" - -#: ../src/gtkgui.glade.h:191 -msgid "Mo_derator" -msgstr "Mo_derator" - -#: ../src/gtkgui.glade.h:192 -msgid "More" -msgstr "WiÄ™cej" - -#: ../src/gtkgui.glade.h:193 -msgid "Name:" -msgstr "Nazwa:" - -#: ../src/gtkgui.glade.h:194 -msgid "" -"Never\n" -"Always\n" -"Per account\n" -"Per type" -msgstr "" -"Nigdy\n" -"Zawsze\n" -"WedÅ‚ug konta\n" -"WedÅ‚ug typu" - -#: ../src/gtkgui.glade.h:198 -msgid "Nickname:" -msgstr "Pseudonim:" - -#. None means no proxy profile selected -#: ../src/gtkgui.glade.h:201 -msgid "None" -msgstr "Å»aden" - -#: ../src/gtkgui.glade.h:202 -msgid "Notify me about contacts that: " -msgstr "Powiadom mnie o kontaktach zmieniajÄ…cych status na: " - -#: ../src/gtkgui.glade.h:203 -msgid "Notify on new _Gmail e-mail" -msgstr "Powiadamiaj o nowej poczcie na koncie _Gmail" - -#: ../src/gtkgui.glade.h:204 -msgid "OS:" -msgstr "System operacyjny:" - -#: ../src/gtkgui.glade.h:205 -msgid "On every _message" -msgstr "W każdej _wiadomoÅ›ci" - -#: ../src/gtkgui.glade.h:206 -msgid "One message _window:" -msgstr "WyÅ›lij wiadomość i _zamknij okno" - -#: ../src/gtkgui.glade.h:208 -msgid "Pass_word:" -msgstr "_HasÅ‚o:" - -#: ../src/gtkgui.glade.h:209 -msgid "Passphrase" -msgstr "HasÅ‚o" - -#: ../src/gtkgui.glade.h:210 -msgid "Password:" -msgstr "HasÅ‚o:" - -#: ../src/gtkgui.glade.h:211 -#: ../src/tooltips.py:645 -msgid "Paused" -msgstr "Zatrzymany" - -#: ../src/gtkgui.glade.h:212 -msgid "Personal Information" -msgstr "Informacje osobiste" - -#: ../src/gtkgui.glade.h:213 -msgid "Phone No.:" -msgstr "Telefon:" - -#: ../src/gtkgui.glade.h:214 -msgid "Play _sounds" -msgstr "Odtwórz _dźwiÄ™k" - -#: ../src/gtkgui.glade.h:215 -msgid "Port: " -msgstr "Port: " - -#: ../src/gtkgui.glade.h:216 -msgid "Position:" -msgstr "Stanowisko:" - -#: ../src/gtkgui.glade.h:217 -msgid "Postal Code:" -msgstr "Kod pocztowy:" - -#: ../src/gtkgui.glade.h:218 -msgid "Preferences" -msgstr "Ustawienia" - -#. Prefix in Name -#: ../src/gtkgui.glade.h:220 -msgid "Prefix:" -msgstr "Prefiks:" - -#: ../src/gtkgui.glade.h:221 -msgid "Preset messages:" -msgstr "Szablony opisów:" - -#: ../src/gtkgui.glade.h:222 -msgid "Print time:" -msgstr "WyÅ›wietlaj czas:" - -#: ../src/gtkgui.glade.h:223 -msgid "Priori_ty:" -msgstr "Priory_tet:" - -#: ../src/gtkgui.glade.h:224 -msgid "Priority is used in Jabber to determine who gets the events from the jabber server when two or more clients are connected using the same account; The client with the highest priority gets the events" -msgstr "Priorytet sÅ‚uży do okreÅ›lenia, który program ma odbierać wiadomoÅ›ci z serwera gdy dwa klienty (lub wiÄ™cej) sÄ… poÅ‚Ä…czone z tym samym kontem. Ten który ma wyższy priorytet, bÄ™dzie odbieraÅ‚ wiadomoÅ›ci." - -#: ../src/gtkgui.glade.h:225 -msgid "Profile, Avatar" -msgstr "Profil, Awatar" - -#: ../src/gtkgui.glade.h:226 -msgid "Protocol:" -msgstr "Protokół:" - -#: ../src/gtkgui.glade.h:227 -msgid "Proxy:" -msgstr "PoÅ›rednik:" - -#: ../src/gtkgui.glade.h:228 -msgid "Query Builder..." -msgstr "Kreator zapytaÅ„..." - -#: ../src/gtkgui.glade.h:229 -msgid "Recently:" -msgstr "Ostatnio:" - -#: ../src/gtkgui.glade.h:230 -msgid "Register to" -msgstr "Zarejestruj w" - -#: ../src/gtkgui.glade.h:231 -msgid "Remove account _only from Gajim" -msgstr "UsuÅ„ konto _tylko z Gajima" - -#: ../src/gtkgui.glade.h:232 -msgid "Remove account from Gajim and from _server" -msgstr "UsuÅ„ konto z Gajima i z _serwera" - -#: ../src/gtkgui.glade.h:233 -msgid "Remove file transfer from the list." -msgstr "UsuÅ„ przesyÅ‚anie tego pliku z listy." - -#: ../src/gtkgui.glade.h:234 -msgid "Removes completed, canceled and failed file transfers from the list" -msgstr "Usuwa zakoÅ„czone, przerwane i nieudane transfery plików z listy" - -#: ../src/gtkgui.glade.h:235 -msgid "Reply to this message" -msgstr "Odpowiedz na tÄ™ wiadomość" - -#: ../src/gtkgui.glade.h:236 -msgid "Resour_ce: " -msgstr "Za_soby: " - -#: ../src/gtkgui.glade.h:237 -msgid "Resource is sent to the Jabber server in order to separate the same JID in two or more parts depending on the number of the clients connected in the same server with the same account. So you might be connected in the same account with resource 'Home' and 'Work' at the same time. The resource which has the highest priority will get the events. (see below)" -msgstr "InformacjÄ™ wysÅ‚ano do serwera w celu rozdzielenia tego samego JID na dwie lub wiÄ™cej części, w zależnoÅ›ci od liczby klientów poÅ‚Ä…czonych z serwerem z tego samego konta. Możesz być poÅ‚Ä…czony z z tym samym kontem z informacjami 'Dom' i 'Praca' w tym samym czasie. Klient o najwyższym bÄ™dzie odbieraÅ‚ wiadomoÅ›ci (patrz niżej)." - -#: ../src/gtkgui.glade.h:238 -msgid "Resource:" -msgstr "Zasoby:" - -#: ../src/gtkgui.glade.h:239 -msgid "Role:" -msgstr "Funkcja:" - -#: ../src/gtkgui.glade.h:240 -msgid "Room Configuration" -msgstr "Konfiguracja pokoju" - -#: ../src/gtkgui.glade.h:241 -msgid "Room:" -msgstr "Pokój:" - -#: ../src/gtkgui.glade.h:242 -msgid "Save _passphrase (insecure)" -msgstr "Zapisz _hasÅ‚o (nie jest to bezpieczne)" - -#: ../src/gtkgui.glade.h:243 -msgid "Save _position and size for roster and chat windows" -msgstr "Zapisz _pozycjÄ™ i rozmiar okna kontaktów i okna rozmowy" - -#: ../src/gtkgui.glade.h:244 -msgid "Save as Preset..." -msgstr "Zapisz jako szablon..." - -#: ../src/gtkgui.glade.h:245 -msgid "Save conversation _logs for all contacts" -msgstr "Zapisz _logi rozmów dla wszystkich kontaktów" - -#: ../src/gtkgui.glade.h:246 -msgid "Save pass_word" -msgstr "Zapisz _hasÅ‚o" - -#: ../src/gtkgui.glade.h:247 -msgid "Search" -msgstr "Szukaj" - -#: ../src/gtkgui.glade.h:248 -msgid "Sen_d" -msgstr "_WyÅ›lij" - -#: ../src/gtkgui.glade.h:249 -msgid "Send File" -msgstr "WyÅ›lij plik" - -#: ../src/gtkgui.glade.h:250 -msgid "Send Single _Message" -msgstr "WyÅ›lij _wiadomość" - -#: ../src/gtkgui.glade.h:251 -msgid "Send Single _Message..." -msgstr "WyÅ›lij _wiadomość" - -#: ../src/gtkgui.glade.h:252 -msgid "Send _File" -msgstr "WyÅ›lij _plik" - -#: ../src/gtkgui.glade.h:253 -msgid "Send keep-alive packets" -msgstr "WysyÅ‚aj pakiety podtrzymujÄ…ce" - -#: ../src/gtkgui.glade.h:254 -msgid "Send message" -msgstr "WyÅ›lij wiadomość" - -#: ../src/gtkgui.glade.h:255 -msgid "Send message and close window" -msgstr "WyÅ›lij wiadomość i zamknij okno" - -#: ../src/gtkgui.glade.h:256 -msgid "Sends a message to currently connected users to this server" -msgstr "WyÅ›lij wiadomość do użytkowników aktualnie poÅ‚Ä…czonych z tym serwerem" - -#: ../src/gtkgui.glade.h:257 -msgid "Server:" -msgstr "Serwer:" - -#: ../src/gtkgui.glade.h:258 -msgid "Servers Features" -msgstr "MożliwoÅ›ci serwerów" - -#: ../src/gtkgui.glade.h:259 -msgid "Set MOTD" -msgstr "Ustaw MOTD" - -#: ../src/gtkgui.glade.h:260 -msgid "Set _Avatar" -msgstr "Ustaw _Awatar" - -#: ../src/gtkgui.glade.h:261 -msgid "Set my profile when I connect" -msgstr "Ustaw profil po poÅ‚Ä…czeniu" - -#: ../src/gtkgui.glade.h:262 -msgid "Sets Message of the Day" -msgstr "Ustawia Wiadomość Dnia" - -#: ../src/gtkgui.glade.h:263 -msgid "Show All Pending _Events" -msgstr "Pokaż wszystkie oczekujÄ…ce _zdarzenia" - -#: ../src/gtkgui.glade.h:264 -msgid "Show _Offline Contacts" -msgstr "Pokaż kontakty niep_oÅ‚Ä…czone" - -#: ../src/gtkgui.glade.h:265 -msgid "Show _Roster" -msgstr "Pokaż _listÄ™ kontaktów" - -#: ../src/gtkgui.glade.h:266 -msgid "Show _XML Console" -msgstr "Pokaż KonsolÄ™ _XML" - -#: ../src/gtkgui.glade.h:267 -msgid "Show only in _roster" -msgstr "Pokaż tylko _listÄ™ kontaktów" - -#: ../src/gtkgui.glade.h:268 -msgid "Shows a list of file transfers between you and other" -msgstr "Pokaż listÄ™ przesÅ‚anych plików pomiÄ™dzy tobÄ… a innymi" - -#: ../src/gtkgui.glade.h:269 -msgid "Sign _in" -msgstr "_PoÅ‚Ä…czony" - -#: ../src/gtkgui.glade.h:270 -msgid "Sign _out" -msgstr "R_ozÅ‚Ä…czony" - -#: ../src/gtkgui.glade.h:271 -msgid "Sta_tus" -msgstr "Sta_tus" - -#: ../src/gtkgui.glade.h:272 -msgid "Start _Chat" -msgstr "Rozpocznij _rozmowÄ™" - -#: ../src/gtkgui.glade.h:273 -msgid "State:" -msgstr "Stan/Województwo:" - -#: ../src/gtkgui.glade.h:274 -msgid "Status" -msgstr "Status" - -#: ../src/gtkgui.glade.h:275 -msgid "Status:" -msgstr "Status:" - -#: ../src/gtkgui.glade.h:276 -msgid "Street:" -msgstr "Ulica:" - -#: ../src/gtkgui.glade.h:277 -msgid "Subject:" -msgstr "Temat:" - -#: ../src/gtkgui.glade.h:278 -msgid "Subscription Request" -msgstr "ProÅ›ba o autoryzacjÄ™" - -#: ../src/gtkgui.glade.h:279 -msgid "Subscription:" -msgstr "Autoryzacja:" - -#. Suffix in Name -#: ../src/gtkgui.glade.h:281 -msgid "Suffix:" -msgstr "Sufiks:" - -#: ../src/gtkgui.glade.h:282 -msgid "Synch_ronize account status with global status" -msgstr "Synch_ronizuj status konta z globalnym statusem" - -#: ../src/gtkgui.glade.h:283 -msgid "T_heme:" -msgstr "_Motyw:" - -#: ../src/gtkgui.glade.h:284 -msgid "Text _color:" -msgstr "_Kolor tekstu:" - -#: ../src/gtkgui.glade.h:285 -msgid "Text _font:" -msgstr "_Czcionka tekstu:" - -#: ../src/gtkgui.glade.h:286 -msgid "The auto away status message" -msgstr "Automatyczny status \"Zaraz wracam\"" - -#: ../src/gtkgui.glade.h:287 -msgid "The auto not available status message" -msgstr "Automatyczny status \"Nieobecny\"." - -#: ../src/gtkgui.glade.h:288 -msgid "This action removes single file transfer from the list. If the transfer is active, it is first stopped and then removed" -msgstr "To dziaÅ‚anie spowoduje usuniÄ™cie przesyÅ‚u pliku z listy. JeÅ›li jest on aktywnyto najpierw zostanie zatrzymany a dopiero potem usuniÄ™ty." - -#: ../src/gtkgui.glade.h:289 -msgid "Title:" -msgstr "TytuÅ‚:" - -#: ../src/gtkgui.glade.h:290 -msgid "To:" -msgstr "Do:" - -#: ../src/gtkgui.glade.h:291 -msgid "Toggle Open_PGP Encryption" -msgstr "WÅ‚Ä…cz/wyÅ‚Ä…cz szyfrowanie Open_PGP" - -#: ../src/gtkgui.glade.h:292 -msgid "Type:" -msgstr "Typ:" - -#: ../src/gtkgui.glade.h:293 -msgid "Underline" -msgstr "PodkreÅ›lenie" - -#: ../src/gtkgui.glade.h:294 -msgid "Update MOTD" -msgstr "Ukatualnij MOTD" - -#: ../src/gtkgui.glade.h:295 -msgid "Updates Message of the Day" -msgstr "Uaktualnia Wiadomość Dnia" - -#: ../src/gtkgui.glade.h:296 -msgid "Use _SSL (legacy)" -msgstr "Korzystaj z _SSL" - -#: ../src/gtkgui.glade.h:297 -msgid "Use _transports iconsets" -msgstr "Używaj zestawów ikon _transportów" - -#: ../src/gtkgui.glade.h:298 -msgid "Use authentication" -msgstr "Używaj autoryzacji" - -#: ../src/gtkgui.glade.h:299 -msgid "Use custom hostname/port" -msgstr "Użyj wÅ‚asnej nazwy hosta/portu" - -#: ../src/gtkgui.glade.h:300 -msgid "Use file transfer proxies" -msgstr "Używaj serwerów proxy do przesyÅ‚ania plików" - -#: ../src/gtkgui.glade.h:301 -msgid "Use t_rayicon (aka. notification area icon)" -msgstr "_Ikona w tacce systemowej" - -#: ../src/gtkgui.glade.h:302 -msgid "User ID:" -msgstr "Identyfikator użytkownika:" - -#: ../src/gtkgui.glade.h:303 -msgid "When a file transfer is complete show a popup notification" -msgstr "Gdy plik w caÅ‚oÅ›ci zostanie przesÅ‚any, wyÅ›wietl okno powiadomienia" - -#: ../src/gtkgui.glade.h:304 -msgid "When a new event (message, file transfer request etc..) is received, the following methods may be used to inform you about it. Please note that events about new messages only occur if it is a new message from a contact you are not already chatting with" -msgstr "Kiedy pojawi siÄ™ nowe zdarzenie (wiadomość, proÅ›ba o przesÅ‚anie pliku itp.), możesz zostać o tym powiadomiony na takie sposoby. UWAGA: Nowa wiadomość pojawia siÄ™ jeÅ›li nie pochodzi od osoby, z którÄ… aktualnie rozmawiasz." - -#: ../src/gtkgui.glade.h:305 -msgid "When new event is received" -msgstr "Gdy odebrane zostanie nowe zdarzenie" - -#: ../src/gtkgui.glade.h:306 -msgid "Work" -msgstr "Praca" - -#: ../src/gtkgui.glade.h:307 -msgid "" -"You need to have an account in order to connect\n" -"to the Jabber network." -msgstr "" -"Musisz posiadać konto aby poÅ‚Ä…czyć siÄ™\n" -" z sieciÄ… Jabber." - -#: ../src/gtkgui.glade.h:309 -msgid "Your JID:" -msgstr "Twój JID:" - -#. Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector) -#: ../src/gtkgui.glade.h:311 -msgid "_Actions" -msgstr "Dzi_aÅ‚ania" - -#: ../src/gtkgui.glade.h:312 -msgid "_Add Contact..." -msgstr "Dod_aj kontakt..." - -#: ../src/gtkgui.glade.h:313 -msgid "_Add to Roster" -msgstr "Dod_aj do listy kontaktów" - -#: ../src/gtkgui.glade.h:314 -msgid "_Address:" -msgstr "_Adres:" - -#: ../src/gtkgui.glade.h:315 -msgid "_Admin" -msgstr "_Administrator" - -#: ../src/gtkgui.glade.h:316 -msgid "_Administrator" -msgstr "_Administrator" - -#: ../src/gtkgui.glade.h:317 -msgid "_Advanced" -msgstr "Z_aawansowane" - -#: ../src/gtkgui.glade.h:318 -msgid "_After time:" -msgstr "_Po czasie:" - -#: ../src/gtkgui.glade.h:319 -msgid "_Authorize" -msgstr "_Autoryzuj" - -#: ../src/gtkgui.glade.h:320 -msgid "_Background:" -msgstr "_TÅ‚o:" - -#: ../src/gtkgui.glade.h:321 -msgid "_Ban" -msgstr "Za_banuj" - -#: ../src/gtkgui.glade.h:322 -msgid "_Before time:" -msgstr "P_rzed czasem:" - -#: ../src/gtkgui.glade.h:323 -msgid "_Bookmark This Room" -msgstr "Dodaj _zakÅ‚adkÄ™ dla tego pokoju" - -#: ../src/gtkgui.glade.h:324 -msgid "_Browser:" -msgstr "Prze_glÄ…darka:" - -#: ../src/gtkgui.glade.h:325 -msgid "_Cancel" -msgstr "_Anuluj" - -#: ../src/gtkgui.glade.h:326 -msgid "_Compact View Alt+C" -msgstr "Widok _zwarty Alt+C" - -#: ../src/gtkgui.glade.h:327 -msgid "_Contents" -msgstr "_Zawartość" - -#: ../src/gtkgui.glade.h:329 -msgid "_Copy JID/Email Address" -msgstr "_Kopiuj JID/Adres e-mail" - -#: ../src/gtkgui.glade.h:330 -msgid "_Copy Link Location" -msgstr "_Kopiuj adres odnoÅ›nika" - -#: ../src/gtkgui.glade.h:331 -msgid "_Deny" -msgstr "O_dmów" - -#: ../src/gtkgui.glade.h:332 -msgid "_Discover Services" -msgstr "_Wyszukuj usÅ‚ugi" - -#: ../src/gtkgui.glade.h:333 -msgid "_Discover Services..." -msgstr "_Wyszukuj usÅ‚ugi..." - -#: ../src/gtkgui.glade.h:335 -msgid "_FAQ" -msgstr "_FAQ" - -#: ../src/gtkgui.glade.h:336 -msgid "_File manager:" -msgstr "Menadżer _plików:" - -#: ../src/gtkgui.glade.h:337 -msgid "_Filter:" -msgstr "_Filtr:" - -#: ../src/gtkgui.glade.h:338 -msgid "_Finish" -msgstr "_ZakoÅ„cz" - -#: ../src/gtkgui.glade.h:339 -msgid "_Font:" -msgstr "_Czcionka:" - -#: ../src/gtkgui.glade.h:340 -msgid "_Group Chat" -msgstr "_Pokój" - -#: ../src/gtkgui.glade.h:341 -msgid "_Help" -msgstr "_Pomoc" - -#: ../src/gtkgui.glade.h:342 -msgid "_Highlight misspelled words" -msgstr "PodÅ›_wietlaj bÅ‚Ä™dy w pisowni" - -#: ../src/gtkgui.glade.h:343 -msgid "_History" -msgstr "_Historia" - -#: ../src/gtkgui.glade.h:344 -msgid "_Host:" -msgstr "_Host:" - -#. Info/Query: all(?) jabber xml start with Welcome to Gajim History Logs Manager\n" -"\n" -"You can select logs from the left and/or search database from below.\n" -"\n" -"WARNING:\n" -"If you plan to do massive deletions, please make sure Gajim is not running. Generally avoid deletions with contacts you currently chat with." -msgstr "" -"Witamy w Menedżerze historii rozmów Gajima\n" -"\n" -"Z lewej strony znajduje siÄ™ lista logów z historiÄ… rozmów, za pomocÄ… poniższego pola możesz bezpoÅ›rednio przeszukiwać bazÄ™ danych.\n" -"\n" -"UWAGA:\n" -"Jeżeli chcesz usuwać wiele danych, upewnij siÄ™ najpierw że Gajim nie jest uruchomiony. Unikaj też usuwania historii rozmów kontaktów, z którymi wÅ‚aÅ›nie rozmawiasz." +#: ../src/gtkgui_helpers.py:717 +msgid "Extension not supported" +msgstr "Rozszerzenie nie jest obsÅ‚ugiwane" -#: ../src/history_manager.glade.h:7 -msgid "Delete" -msgstr "UsuÅ„" +#: ../src/gtkgui_helpers.py:718 +#, python-format +msgid "Image cannot be saved in %(type)s format. Save as %(new_filename)s?" +msgstr "Obraz nie może zostać zapisany w formacie %(type)s. Zapisać jako %(new_filename)s?" -#: ../src/history_manager.glade.h:8 -msgid "Export" -msgstr "Eksport" +#: ../src/gtkgui_helpers.py:727 +msgid "Save Image as..." +msgstr "Zapisz plik jako..." -#: ../src/history_manager.glade.h:9 -msgid "Gajim History Logs Manager" -msgstr "Menedżer historii rozmów Gajima" - -#: ../src/history_manager.glade.h:10 -msgid "_Search Database" -msgstr "_Szukaj w bazie" - -#: ../src/history_manager.py:58 +#: ../src/history_manager.py:61 msgid "Cannot find history logs database" msgstr "Nie można odnaleźć bazy danych z historiÄ… rozmów" #. holds jid -#: ../src/history_manager.py:102 +#: ../src/history_manager.py:104 msgid "Contacts" msgstr "Kontakty" #. holds time -#: ../src/history_manager.py:115 -#: ../src/history_manager.py:155 -#: ../src/history_window.py:94 +#: ../src/history_manager.py:117 +#: ../src/history_manager.py:157 +#: ../src/history_window.py:85 msgid "Date" msgstr "Data" #. holds nickname -#: ../src/history_manager.py:121 -#: ../src/history_manager.py:173 +#: ../src/history_manager.py:123 +#: ../src/history_manager.py:175 msgid "Nickname" msgstr "Pseudonim" #. holds message -#: ../src/history_manager.py:129 -#: ../src/history_manager.py:161 -#: ../src/history_window.py:102 +#: ../src/history_manager.py:131 +#: ../src/history_manager.py:163 +#: ../src/history_window.py:93 msgid "Message" msgstr "Wiadomość" #. holds subject -#: ../src/history_manager.py:136 -#: ../src/history_manager.py:167 +#: ../src/history_manager.py:138 +#: ../src/history_manager.py:169 msgid "Subject" msgstr "Temat" -#: ../src/history_manager.py:181 +#: ../src/history_manager.py:183 msgid "Do you want to clean up the database? (STRONGLY NOT RECOMMENDED IF GAJIM IS RUNNING)" msgstr "Czy chcesz wyczyÅ›cić bazÄ™ danych? (STANOWCZO ODRADZA SIĘ KORZYSTANIE Z TEJ OPCJI GDY GAJIM JEST URUCHOMIONY)" -#: ../src/history_manager.py:183 +#: ../src/history_manager.py:185 msgid "" "Normally allocated database size will not be freed, it will just become reusable. If you really want to reduce database filesize, click YES, else click NO.\n" "\n" @@ -3554,154 +4020,190 @@ msgstr "" "\n" "Jeżeli kliknÄ…Å‚eÅ› TAK, musisz teraz poczekać..." -#: ../src/history_manager.py:389 +#: ../src/history_manager.py:391 msgid "Exporting History Logs..." msgstr "Przenoszenie logów rozmów..." -#: ../src/history_manager.py:465 +#: ../src/history_manager.py:467 #, python-format msgid "%(who)s on %(time)s said: %(message)s\n" msgstr "%(who)s o godzinie %(time)s napisaÅ‚: %(message)s\n" -#: ../src/history_manager.py:465 +#: ../src/history_manager.py:467 msgid "who" msgstr "kto" -#: ../src/history_manager.py:503 +#: ../src/history_manager.py:505 msgid "Do you really want to delete logs of the selected contact?" msgid_plural "Do you really want to delete logs of the selected contacts?" msgstr[0] "Czy na pewno chcesz usunąć historiÄ™ rozmów wybranego kontaktu?" msgstr[1] "Czy na pewno chcesz usunąć historiÄ™ rozmów wybranych kontaktów?" msgstr[2] "Czy na pewno chcesz usunąć historiÄ™ rozmów wybranych kontaktów?" -#: ../src/history_manager.py:507 -#: ../src/history_manager.py:543 +#: ../src/history_manager.py:509 +#: ../src/history_manager.py:545 msgid "This is an irreversible operation." msgstr "Skutków tej operacji nie można bÄ™dzie wycofać." -#: ../src/history_manager.py:540 +#: ../src/history_manager.py:542 msgid "Do you really want to delete the selected message?" msgid_plural "Do you really want to delete the selected messages?" msgstr[0] "Czy na pewno chcesz usunąć wybranÄ… wiadomość?" msgstr[1] "Czy na pewno chcesz usunąć wybrane wiadomoÅ›ci?" msgstr[2] "Czy na pewno chcesz usunąć wybrane wiadomoÅ›ci?" -#: ../src/history_window.py:111 -#: ../src/history_window.py:113 +#: ../src/history_window.py:102 +#: ../src/history_window.py:104 #, python-format msgid "Conversation History with %s" msgstr "Historia rozmowy z %s" -#: ../src/history_window.py:265 +#: ../src/history_window.py:258 #, python-format msgid "%(nick)s is now %(status)s: %(status_msg)s" msgstr "%(nick)s·jes teraz·%(status)s:·%(status_msg)s" -#: ../src/history_window.py:269 +#: ../src/history_window.py:262 +#: ../src/notify.py:113 #, python-format msgid "%(nick)s is now %(status)s" msgstr "%(nick)s ma teraz status %(status)s" -#: ../src/history_window.py:275 +#: ../src/history_window.py:268 #, python-format msgid "Status is now: %(status)s: %(status_msg)s" msgstr "Obecny status: %(status)s: %(status_msg)s" -#: ../src/history_window.py:278 +#: ../src/history_window.py:271 #, python-format msgid "Status is now: %(status)s" msgstr "Obecny status: %(status)s" -#: ../src/message_window.py:233 +#: ../src/message_window.py:244 msgid "Messages" msgstr "WiadomoÅ›ci" -#: ../src/message_window.py:234 +#: ../src/message_window.py:245 #, python-format msgid "%s - Gajim" msgstr "%s - Gajim" -#: ../src/roster_window.py:140 +#: ../src/notify.py:111 +#, python-format +msgid "%(nick)s Changed Status" +msgstr "%(nick)s zmieniÅ‚ status" + +#: ../src/notify.py:121 +#, python-format +msgid "%(nickname)s Signed In" +msgstr "%(nickname)s poÅ‚Ä…czyÅ‚(a) siÄ™" + +#: ../src/notify.py:129 +#, python-format +msgid "%(nickname)s Signed Out" +msgstr "%(nickname)s rozÅ‚Ä…czyÅ‚(a) siÄ™" + +#: ../src/notify.py:141 +#, python-format +msgid "New Single Message from %(nickname)s" +msgstr "Nowa wiadomość od %(nickname)s" + +#: ../src/notify.py:150 +#, python-format +msgid "New Private Message from room %s" +msgstr "Nowa wiadomość prywatna z pokoju %s" + +#: ../src/notify.py:151 +#, python-format +msgid "%(nickname)s: %(message)s" +msgstr "%(nickname)s: %(message)s" + +#: ../src/notify.py:157 +#, python-format +msgid "New Message from %(nickname)s" +msgstr "Nowa wiadomość od %(nickname)s" + +#: ../src/roster_window.py:131 msgid "Merged accounts" msgstr "PoÅ‚Ä…czone konta" -#: ../src/roster_window.py:289 -#: ../src/common/helpers.py:42 +#: ../src/roster_window.py:288 +#: ../src/common/helpers.py:39 msgid "Observers" msgstr "Obserwatorzy" -#: ../src/roster_window.py:542 +#: ../src/roster_window.py:544 #, python-format msgid "You are already in room %s" msgstr "Już jesteÅ› w pokoju %s" -#: ../src/roster_window.py:546 -#: ../src/roster_window.py:2262 +#: ../src/roster_window.py:548 +#: ../src/roster_window.py:2280 msgid "You cannot join a room while you are invisible" msgstr "Nie możesz doÅ‚Ä…czyć do pokoju gdy jesteÅ› niewidoczny" #. the 'manage gc bookmarks' item is showed #. below to avoid duplicate code #. add -#: ../src/roster_window.py:735 +#: ../src/roster_window.py:748 #, python-format msgid "to %s account" msgstr "do konta %s" #. disco -#: ../src/roster_window.py:742 +#: ../src/roster_window.py:755 #, python-format msgid "using %s account" msgstr "używajÄ…c konta %s" -#. new message +#. new chat #. for chat_with #. for single message -#: ../src/roster_window.py:750 -#: ../src/systray.py:194 -#: ../src/systray.py:201 +#: ../src/roster_window.py:763 +#: ../src/systray.py:193 +#: ../src/systray.py:198 #, python-format msgid "using account %s" msgstr "używajÄ…c konta %s" #. profile, avatar -#: ../src/roster_window.py:759 +#: ../src/roster_window.py:772 #, python-format msgid "of account %s" msgstr "dla konta %s" -#: ../src/roster_window.py:818 +#: ../src/roster_window.py:831 msgid "Manage Bookmarks..." msgstr "ZarzÄ…dzaj zakÅ‚adkami..." -#: ../src/roster_window.py:842 +#: ../src/roster_window.py:855 #, python-format msgid "for account %s" msgstr "dla konta %s" #. History manager -#: ../src/roster_window.py:863 +#: ../src/roster_window.py:876 msgid "History Manager" msgstr "Menedżer historii rozmów" -#: ../src/roster_window.py:872 +#: ../src/roster_window.py:885 msgid "_Join New Room" msgstr "_DoÅ‚Ä…cz do nowego pokoju" -#: ../src/roster_window.py:1158 +#: ../src/roster_window.py:1159 #, python-format msgid "Transport \"%s\" will be removed" msgstr "Transport \"%s\" zostanie usuniÄ™ty" -#: ../src/roster_window.py:1158 +#: ../src/roster_window.py:1159 msgid "You will no longer be able to send and receive messages to contacts from this transport." msgstr "Nie bÄ™dziesz już mógÅ‚ wysyÅ‚ać i odbierać wiadomoÅ›ci od kontaktów za pomocÄ… tego transportu." -#: ../src/roster_window.py:1200 +#: ../src/roster_window.py:1201 msgid "Assign OpenPGP Key" msgstr "Przypisz klucz OpenPGP" -#: ../src/roster_window.py:1201 +#: ../src/roster_window.py:1202 msgid "Select a key to apply to the contact" msgstr "Wybierz klucz, który chcesz przypisać kontaktowi" @@ -3725,124 +4227,123 @@ msgstr "R_ozÅ‚Ä…cz" msgid "_Change Status Message" msgstr "_ZmieÅ„ Opis Statusu" -#: ../src/roster_window.py:1617 +#: ../src/roster_window.py:1621 msgid "Authorization has been sent" msgstr "Autoryzacja zostaÅ‚a wysÅ‚ana" -#: ../src/roster_window.py:1618 +#: ../src/roster_window.py:1622 #, python-format msgid "Now \"%s\" will know your status." msgstr "Teraz \"%s\" bÄ™dzie znaÅ‚ Twój status." -#: ../src/roster_window.py:1642 +#: ../src/roster_window.py:1646 msgid "Subscription request has been sent" msgstr "ProÅ›ba o autoryzacjÄ™ zostaÅ‚a wysÅ‚ana." -#: ../src/roster_window.py:1643 +#: ../src/roster_window.py:1647 #, python-format msgid "If \"%s\" accepts this request you will know his or her status." msgstr "JeÅ›li \"%s\" zaakceptuje tÄ™ proÅ›bÄ™, to bÄ™dziesz mógÅ‚ widzieć jego lub jej status." -#: ../src/roster_window.py:1654 +#: ../src/roster_window.py:1658 msgid "Authorization has been removed" msgstr "Autoryzacja zostaÅ‚a cofniÄ™ta" -#: ../src/roster_window.py:1655 +#: ../src/roster_window.py:1659 #, python-format msgid "Now \"%s\" will always see you as offline." msgstr "Teraz \"%s\" zawsze bÄ™dzie ciÄ™ widziaÅ‚ jako rozÅ‚Ä…czonego." -#: ../src/roster_window.py:1824 +#: ../src/roster_window.py:1822 #, python-format msgid "Contact \"%s\" will be removed from your roster" msgstr "Kontakt \"%s\" zostanie usuniÄ™ty z Twojej listy kontaktów." -#: ../src/roster_window.py:1828 +#: ../src/roster_window.py:1826 msgid "By removing this contact you also remove authorization resulting in him or her always seeing you as offline." msgstr "UsuwajÄ…c kontakt cofniesz mu również autoryzacjÄ™, co spowoduje, że kontakt bÄ™dzie zawsze widziaÅ‚ CiÄ™ jako rozÅ‚Ä…czonego." -#: ../src/roster_window.py:1832 +#: ../src/roster_window.py:1830 msgid "By removing this contact you also by default remove authorization resulting in him or her always seeing you as offline." msgstr "UsuwajÄ…c kontakt usuniesz również autoryzacjÄ™, co spowoduje, że kontakt bÄ™dzie zawsze widziaÅ‚ CiÄ™ jako rozÅ‚Ä…czonego." -#: ../src/roster_window.py:1833 +#: ../src/roster_window.py:1831 msgid "I want this contact to know my status after removal" msgstr "ChcÄ™ żeby po usuniÄ™ciu ten kontakt znaÅ‚ mój status" -#: ../src/roster_window.py:1901 +#: ../src/roster_window.py:1899 msgid "Passphrase Required" msgstr "Wymagane hasÅ‚o" -#: ../src/roster_window.py:1902 +#: ../src/roster_window.py:1900 #, python-format msgid "Enter GPG key passphrase for account %s." msgstr "Wpisz hasÅ‚o GPG dla konta %s" -#: ../src/roster_window.py:1907 +#: ../src/roster_window.py:1905 msgid "Save passphrase" msgstr "Zapisz hasÅ‚o" -#: ../src/roster_window.py:1915 +#: ../src/roster_window.py:1913 msgid "Wrong Passphrase" msgstr "BÅ‚Ä™dne hasÅ‚o" -#: ../src/roster_window.py:1916 +#: ../src/roster_window.py:1914 msgid "Please retype your GPG passphrase or press Cancel." msgstr "ProszÄ™ ponownie wprowadzić swoje haÅ‚o GPH lub kliknąć przycisk Anuluj." -#: ../src/roster_window.py:1964 -#: ../src/roster_window.py:2021 +#: ../src/roster_window.py:1963 +#: ../src/roster_window.py:2020 msgid "You are participating in one or more group chats" msgstr "Znajdujesz siÄ™ w jednym lub kilku pokojach" -#: ../src/roster_window.py:1965 -#: ../src/roster_window.py:2022 +#: ../src/roster_window.py:1964 +#: ../src/roster_window.py:2021 msgid "Changing your status to invisible will result in disconnection from those group chats. Are you sure you want to go invisible?" msgstr "Zmiana statusu na Niewidoczny spowoduje rozÅ‚aczeniem z tym pokojami. Czy na pewno chcesz stać siÄ™ niewidoczny?" -#: ../src/roster_window.py:1981 +#: ../src/roster_window.py:1980 msgid "No account available" msgstr "Å»adne konto nie jest dostÄ™pne" -#: ../src/roster_window.py:1982 +#: ../src/roster_window.py:1981 msgid "You must create an account before you can chat with other contacts." msgstr "Aby rozmawiać z innymi osobami musisz zaÅ‚ożyć konto Jabbera." -#: ../src/roster_window.py:2427 -#: ../src/roster_window.py:2433 +#: ../src/roster_window.py:2452 +#: ../src/roster_window.py:2458 msgid "You have unread messages" msgstr "Masz nieprzeczytane wiadomoÅ›ci" -#: ../src/roster_window.py:2428 -#: ../src/roster_window.py:2434 +#: ../src/roster_window.py:2453 +#: ../src/roster_window.py:2459 msgid "Messages will only be available for reading them later if you have history enabled." msgstr "WiadomoÅ›ci bÄ™dÄ… dostÄ™pne tylko do czytania, o ile masz wÅ‚Ä…czonÄ… obsÅ‚ugÄ™ historii." -#: ../src/roster_window.py:3184 +#: ../src/roster_window.py:3231 #, python-format msgid "Drop %s in group %s" msgstr "UsuÅ„ %s z grupy %s" -#: ../src/roster_window.py:3191 +#: ../src/roster_window.py:3238 #, python-format msgid "Make %s and %s metacontacts" msgstr "Przekształć %s oraz %s w metakontakty" -#: ../src/roster_window.py:3358 +#: ../src/roster_window.py:3408 msgid "Change Status Message..." msgstr "ZmieÅ„ Opis Statusu..." -#: ../src/systray.py:155 +#: ../src/systray.py:154 msgid "_Change Status Message..." msgstr "_ZmieÅ„ Opis Statusu..." -#: ../src/systray.py:236 +#: ../src/systray.py:231 msgid "Hide this menu" msgstr "Ukryj to menu" -#: ../src/systraywin32.py:266 -#: ../src/systraywin32.py:285 -#: ../src/tooltips.py:315 +#: ../src/systraywin32.py:261 +#: ../src/systraywin32.py:280 #, python-format msgid "Gajim - %d unread message" msgid_plural "Gajim - %d unread messages" @@ -3850,118 +4351,126 @@ msgstr[0] "Gajim - %d nieprzeczytana wiadomość" msgstr[1] "Gajim - %d nieprzeczytane wiadomoÅ›ci" msgstr[2] "Gajim - %d nieprzeczytane wiadomoÅ›ci" -#: ../src/tooltips.py:321 +#: ../src/tooltips.py:326 #, python-format -msgid "Gajim - %d unread single message" -msgid_plural "Gajim - %d unread single messages" -msgstr[0] "Gajim - %d nieprzeczytana wiadomość" -msgstr[1] "Gajim - %d nieprzeczytane wiadomoÅ›ci" +msgid " %d unread message" +msgid_plural " %d unread messages" +msgstr[0] "%d nieprzeczytana wiadomość" +msgstr[1] "%d nieprzeczytane wiadomoÅ›ci" msgstr[2] "Gajim - %d nieprzeczytane wiadomoÅ›ci" -#: ../src/tooltips.py:327 +#: ../src/tooltips.py:332 #, python-format -msgid "Gajim - %d unread group chat message" -msgid_plural "Gajim - %d unread group chat messages" -msgstr[0] "Gajim - %d nieprzeczytana wiadomość" -msgstr[1] "Gajim - %d nieprzeczytane wiadomoÅ›ci" +msgid " %d unread single message" +msgid_plural " %d unread single messages" +msgstr[0] "%d nieprzeczytana wiadomość" +msgstr[1] "%d nieprzeczytane wiadomoÅ›ci" msgstr[2] "Gajim - %d nieprzeczytane wiadomoÅ›ci" -#: ../src/tooltips.py:333 +#: ../src/tooltips.py:338 #, python-format -msgid "Gajim - %d unread private message" -msgid_plural "Gajim - %d unread private messages" -msgstr[0] "Gajim - %d nieprzeczytana wiadomość" -msgstr[1] "Gajim - %d nieprzeczytane wiadomoÅ›ci" +msgid " %d unread group chat message" +msgid_plural " %d unread group chat messages" +msgstr[0] "%d nieprzeczytana wiadomość z czatu" +msgstr[1] "%d nieprzeczytane wiadomoÅ›ci z czatu" msgstr[2] "Gajim - %d nieprzeczytane wiadomoÅ›ci" -#: ../src/tooltips.py:348 -#: ../src/tooltips.py:350 +#: ../src/tooltips.py:344 +#, python-format +msgid " %d unread private message" +msgid_plural " %d unread private messages" +msgstr[0] "%d nieprzeczytana wiadomość prywatna" +msgstr[1] "%d nieprzeczytane wiadomoÅ›ci prywatne" +msgstr[2] "Gajim - %d nieprzeczytane wiadomoÅ›ci" + +#: ../src/tooltips.py:359 +#: ../src/tooltips.py:361 #, python-format msgid "Gajim - %s" msgstr "Gajim - %s" -#: ../src/tooltips.py:383 +#: ../src/tooltips.py:395 msgid "Role: " msgstr "Funkcja: " -#: ../src/tooltips.py:384 +#: ../src/tooltips.py:396 msgid "Affiliation: " msgstr "Afiliacja: " -#: ../src/tooltips.py:386 -#: ../src/tooltips.py:518 +#: ../src/tooltips.py:398 +#: ../src/tooltips.py:537 msgid "Resource: " msgstr "Zasoby: " -#: ../src/tooltips.py:394 -#: ../src/tooltips.py:521 -#: ../src/tooltips.py:543 -#: ../src/tooltips.py:654 +#: ../src/tooltips.py:407 +#: ../src/tooltips.py:540 +#: ../src/tooltips.py:565 +#: ../src/tooltips.py:676 msgid "Status: " msgstr "Status: " -#: ../src/tooltips.py:501 +#: ../src/tooltips.py:514 msgid "Subscription: " msgstr "Autoryzacja: " -#: ../src/tooltips.py:510 +#: ../src/tooltips.py:523 msgid "OpenPGP: " msgstr "OpenPGP: " -#: ../src/tooltips.py:548 +#: ../src/tooltips.py:570 #, python-format msgid "Last status on %s" msgstr "Ostatni status %s" -#: ../src/tooltips.py:550 +#: ../src/tooltips.py:572 #, python-format msgid "Since %s" msgstr "Od %s" -#: ../src/tooltips.py:610 +#: ../src/tooltips.py:632 msgid "Download" msgstr "Pobieranie" -#: ../src/tooltips.py:616 +#: ../src/tooltips.py:638 msgid "Upload" msgstr "PrzeÅ›lij" -#: ../src/tooltips.py:623 +#: ../src/tooltips.py:645 msgid "Type: " msgstr "Typ: " -#: ../src/tooltips.py:629 +#: ../src/tooltips.py:651 msgid "Transferred: " msgstr "PrzesÅ‚ane: " -#: ../src/tooltips.py:632 -#: ../src/tooltips.py:653 +#: ../src/tooltips.py:654 +#: ../src/tooltips.py:675 msgid "Not started" msgstr "Nie wÅ‚Ä…czony" -#: ../src/tooltips.py:636 +#: ../src/tooltips.py:658 msgid "Stopped" msgstr "Zatrzymany" -#: ../src/tooltips.py:638 -#: ../src/tooltips.py:641 +#: ../src/tooltips.py:660 +#: ../src/tooltips.py:663 msgid "Completed" msgstr "UkoÅ„czony" #. stalled is not paused. it is like 'frozen' it stopped alone -#: ../src/tooltips.py:649 +#: ../src/tooltips.py:671 msgid "Stalled" msgstr "Wygaszony" -#: ../src/tooltips.py:651 +#: ../src/tooltips.py:673 msgid "Transferring" msgstr "PrzesyÅ‚anie" -#: ../src/tooltips.py:683 +#: ../src/tooltips.py:705 msgid "This service has not yet responded with detailed information" msgstr "Ta usÅ‚uga nie odesÅ‚aÅ‚a jeszcze szczegółowych informacji" -#: ../src/tooltips.py:686 +#: ../src/tooltips.py:708 msgid "" "This service could not respond with detailed information.\n" "It is most likely legacy or broken" @@ -3970,102 +4479,102 @@ msgstr "" "Prawdopodobnie zostaÅ‚a zamkniÄ™ta lub jest zepsuta" #. keep identation -#: ../src/vcard.py:186 +#: ../src/vcard.py:188 msgid "Could not load image" msgstr "Nie można zaÅ‚adować obrazka." -#: ../src/vcard.py:262 +#: ../src/vcard.py:289 msgid "?Client:Unknown" msgstr "?Klient: Nieznany" -#: ../src/vcard.py:264 +#: ../src/vcard.py:291 msgid "?OS:Unknown" msgstr "?System operacyjny: Nieznany" -#: ../src/vcard.py:281 +#: ../src/vcard.py:308 #, python-format msgid "since %s" msgstr "od %s" -#: ../src/vcard.py:305 +#: ../src/vcard.py:332 msgid "This contact is interested in your presence information, but you are not interested in his/her presence" msgstr "Ten kontakt jest zaintersowany informacjami o twoim statusie, ale ty nie interesujesz siÄ™ jego/jej statusem." -#: ../src/vcard.py:307 +#: ../src/vcard.py:334 msgid "You are interested in the contact's presence information, but he/she is not interested in yours" msgstr "JesteÅ› zainteresowany informacjami o statusie tego kontaktu, ale on/ona nie jest zainteresowana twoim." -#: ../src/vcard.py:309 +#: ../src/vcard.py:336 msgid "You and the contact are interested in each other's presence information" msgstr "Oboje jesteÅ›cie zaintersowani nawzajem swoimi informacjami o statusie" #. None -#: ../src/vcard.py:311 +#: ../src/vcard.py:338 msgid "You are not interested in the contact's presence, and neither he/she is interested in yours" msgstr "Nie jesteÅ› zainteresowany informacjami o statusie kontaktu i on również nie jest zainteresowany twoim" -#: ../src/vcard.py:320 +#: ../src/vcard.py:347 msgid "You are waiting contact's answer about your subscription request" msgstr "Oczekujesz na odpowiedź kontaktu dotyczÄ…cÄ… proÅ›by o autoryzacjÄ™" -#: ../src/vcard.py:332 -#: ../src/vcard.py:355 +#: ../src/vcard.py:359 +#: ../src/vcard.py:382 msgid " resource with priority " msgstr " zasób o wysokim priorytecie " -#: ../src/vcard.py:434 +#: ../src/vcard.py:458 msgid "Without a connection you can not publish your contact information." msgstr "Nie możesz wysÅ‚ać informacji o sobie jeÅ›li nie jesteÅ› poÅ‚Ä…czony." -#: ../src/vcard.py:463 +#: ../src/vcard.py:491 msgid "Without a connection, you can not get your contact information." msgstr "Musisz być poÅ‚Ä…czony by uzyskać informacje o kontakcie." -#: ../src/vcard.py:467 +#: ../src/vcard.py:495 msgid "Personal details" msgstr "Informacje osobiste" -#: ../src/common/check_paths.py:39 +#: ../src/common/check_paths.py:35 msgid "creating logs database" msgstr "tworzenie bazy danych z logami" -#: ../src/common/check_paths.py:84 -#: ../src/common/check_paths.py:95 -#: ../src/common/check_paths.py:102 +#: ../src/common/check_paths.py:82 +#: ../src/common/check_paths.py:93 +#: ../src/common/check_paths.py:100 #, python-format msgid "%s is file but it should be a directory" msgstr "%s jest plikiem choć powinien być katalogiem" -#: ../src/common/check_paths.py:85 -#: ../src/common/check_paths.py:96 -#: ../src/common/check_paths.py:103 -#: ../src/common/check_paths.py:110 +#: ../src/common/check_paths.py:83 +#: ../src/common/check_paths.py:94 +#: ../src/common/check_paths.py:101 +#: ../src/common/check_paths.py:109 msgid "Gajim will now exit" msgstr "Gajim zakoÅ„czy teraz dziaÅ‚anie" -#: ../src/common/check_paths.py:109 +#: ../src/common/check_paths.py:108 #, python-format msgid "%s is directory but should be file" msgstr "%s jest katalogiem choć powinien być plikiem" -#: ../src/common/check_paths.py:125 +#: ../src/common/check_paths.py:124 #, python-format msgid "creating %s directory" msgstr "tworzenie katalogu %s" -#: ../src/common/exceptions.py:35 +#: ../src/common/exceptions.py:32 msgid "pysqlite2 (aka python-pysqlite2) dependency is missing. Exiting..." msgstr "Nie znaleziono biblioteki pysqlite2 (lub python-pysqlite2). KoÅ„czenie pracy programu..." -#: ../src/common/exceptions.py:43 +#: ../src/common/exceptions.py:40 msgid "Service not available: Gajim is not running, or remote_control is False" msgstr "UsÅ‚uga nie jest dostÄ™pna. Gajim nie dziaÅ‚a lub remote_control ma wartość False" -#: ../src/common/exceptions.py:51 +#: ../src/common/exceptions.py:48 msgid "D-Bus is not present on this machine or python module is missing" msgstr "D-Bus nie jest obecny na tej maszynie lub brak moduÅ‚u dla pythona" -#: ../src/common/exceptions.py:59 +#: ../src/common/exceptions.py:56 msgid "" "Session bus is not available.\n" "Try reading http://trac.gajim.org/wiki/GajimDBus" @@ -4073,34 +4582,60 @@ msgstr "" "Nie znaleziono interfejsu DBus.\n" "Zapoznaj siÄ™ z uwagami na stronie http://trac.gajim.org/wiki/GajimDBus" -#: ../src/common/config.py:53 +#: ../src/common/config.py:51 msgid "Use DBus and Notification-Daemon to show notifications" msgstr "Korzystaj z DBus i Demona PowiadomieÅ„ aby wyÅ›wietlać powiadomienia" -#: ../src/common/config.py:57 +#: ../src/common/config.py:55 msgid "Time in minutes, after which your status changes to away." msgstr "Czas w minutach, po którym twój status zostanie zmieniona na Zaraz wracam." -#: ../src/common/config.py:58 +#: ../src/common/config.py:56 msgid "Away as a result of being idle" msgstr "Status Zaraz wracam z powodu bezczynnoÅ›ci programu" -#: ../src/common/config.py:60 +#: ../src/common/config.py:58 msgid "Time in minutes, after which your status changes to not available." msgstr "Czas w minutach, po którym twój status zostanie zmieniony na NiedostÄ™pny." -#: ../src/common/config.py:61 +#: ../src/common/config.py:59 msgid "Not available as a result of being idle" msgstr "Status Nieobecny z powodu bezczynnoÅ›ci programu" -#: ../src/common/config.py:88 +#: ../src/common/config.py:77 +msgid "List (space separated) of rows (accounts and groups) that are collapsed" +msgstr "Lista (oddzielona spacjami) kolumn (kont lub grup), które sÄ… zwiniÄ™te" + +#: ../src/common/config.py:83 +msgid "" +"'always' - print time for every message.\n" +"'sometimes' - print time every print_ichat_every_foo_minutes minute.\n" +"'never' - never print time." +msgstr "" +"'always' - wyÅ›wietlaj czas każdej wiadomoÅ›ci.\n" +"'sometmes' - czas wyÅ›wietlany jest w odstÄ™pach zdefiniowanych w zmiennej print_ichat_every_foo_minutes.\n" +"'never' - nigdy nie wyÅ›wietlaj czasu." + +#: ../src/common/config.py:84 +msgid "Value of fuzziness from 1 to 4 or 0 to disable fuzzyclock. 1 is the most precise clock, 4 the less precise one." +msgstr "Wartość \"niedokÅ‚adnoÅ›ci\" od 1 do 4 (0 wyÅ‚Ä…cza \"okoÅ‚ozegarek\" [fuzzyclock]). 1 oznacza najbardziej precyzyjne wskazania zegara, 4 najmniej dokÅ‚adne." + +#: ../src/common/config.py:87 msgid "Treat * / _ pairs as possible formatting characters." msgstr "Traktuj pary znaków * / _ jako znaki formatujÄ…ce." -#: ../src/common/config.py:89 +#: ../src/common/config.py:88 msgid "If True, do not remove */_ . So *abc* will be bold but with * * not removed." msgstr "JeÅ›li ma wartość True, to */_ nie bÄ™dÄ… usuwane. Zatem napis *abc* bÄ™dzie pogrubiony ale bez usuniÄ™tych znaków * *." +#: ../src/common/config.py:98 +msgid "Character to add after nickname when using nick completion (tab) in group chat" +msgstr "Znak dodawany do nicka przy użyciu autouzupeÅ‚niania klawiszem TAB (tylko czat)" + +#: ../src/common/config.py:99 +msgid "Character to propose to add after desired nickname when desired nickname is used by someone else in group chat" +msgstr "Znak proponowany do dodania do nicka w sytuacji, gdy dany nick jest już używany przez innego uzytkownika czatu" + #: ../src/common/config.py:131 msgid "Add * and [n] in roster title?" msgstr "Dodać * i [n] do tytuÅ‚u listy kontaktów?" @@ -4130,6 +4665,10 @@ msgstr "Albo wÅ‚asny url zawierajÄ…cy %s, gdzie %s jest sÅ‚owem/frazÄ…, albo WIK msgid "If checked, Gajim can be controlled remotely using gajim-remote." msgstr "JeÅ›li ta opcja jest zaznaczona, to Gajim bÄ™dzie mógÅ‚ być sterowany zdalnie z wykorzystaniem gajim-remote." +#: ../src/common/config.py:145 +msgid "When not printing time for every message (print_time==sometimes), print it every x minutes" +msgstr "W przypadku wybrania wyÅ›wietlania czasu nie dla każdej wiadomoÅ›ci (print_time==czasami), zmienna okreÅ›la co ile minut Gajim ma wyÅ›wietlać czas nadejÅ›cia nowej wiadomoÅ›ci" + #: ../src/common/config.py:146 msgid "Ask before closing a group chat tab/window." msgstr "Zapytaj przed zamkniÄ™ciem karty/okna rozmowy grupowej." @@ -4155,8 +4694,8 @@ msgid "Show tab when only one conversation?" msgstr "Czy pokazywać kartÄ™ gdy otwarta jest tylko jedna rozmowa?" #: ../src/common/config.py:162 -msgid "Show tab border if one conversation?" -msgstr "Czy pokazywać rozgraniczenie kart jeÅ›li prowadzona jest tylko jedna rozmowa?" +msgid "Show tabbed notebook border in chat windows?" +msgstr "Czy pokazywać rozgraniczenie kart w oknie czatu?" #: ../src/common/config.py:163 msgid "Show close button in tab?" @@ -4186,10 +4725,17 @@ msgstr "JeÅ›li ma wartość True, Gajim wyÅ›wietli opis statusu, jeÅ›li nie jest msgid "If True, Gajim will ask for avatar each contact that did not have an avatar last time or has one cached that is too old." msgstr "JeÅ›li ma wartość True, Gajim wyÅ›le zapytanie o awatar każdego kontaktu, który ostatnio nie miaÅ‚ awatara lub ma zapisany jedynie stary." -#. FIXME: remove you and make it Gajim will not; and/or his or *her* status messages +#: ../src/common/config.py:183 +msgid "If False, Gajim will no longer print status line in chats when a contact changes his or her status and/or his or her status message." +msgstr "JeÅ›li ma wartość False, to nie bÄ™dziesz informowany o zmianie statusu lub opisu statusu przez kontakt, z którym rozmawiasz." + #: ../src/common/config.py:184 -msgid "If False, you will no longer see status line in chats when a contact changes his or her status and/or his status message." -msgstr "JeÅ›li ma wartość False, to nie bÄ™dziesz widziaÅ‚ linii statusu w trakcie rozmowy, gdy kontakt zmienia swój status i/lub opis statusu." +msgid "can be \"none\", \"all\" or \"in_and_out\". If \"none\", Gajim will no longer print status line in groupchats when a member changes his or her status and/or his or her status message. If \"all\" Gajim will print all status messages. If \"in_and_out\", gajim will only print FOO enters/leaves room" +msgstr "Zmienna przybiera wartoÅ›ci \"none\", \"all\" oraz \"in_and_out\". W przypadku ustawienia \"none\", Gajim nie bÄ™dzie już powiadamiaÅ‚ o zmianie statusu (lub opisu stanu) przez innego użytkownika czatu. \"all\" spowoduje wyÅ›wietlanie wszystkich wiadomoÅ›ci o statusie każdego użytkownika. Wybranie \"in_and_out\" nakazuje programowi wyÅ›wietlanie jedynie informacji o wejÅ›ciu użytkownika do pokoju lub jego opuszczeniu" + +#: ../src/common/config.py:187 +msgid "Don't show avatar for the transport itself." +msgstr "Nie pokazuj awatarów transportów." #: ../src/common/config.py:189 msgid "If True and installed GTK+ and PyGTK versions are at least 2.8, make the window flash (the default behaviour in most Window Managers) when holding pending events." @@ -4199,7 +4745,8 @@ msgstr "Jeżeli opcja ta jest aktywna oraz zainstalowano GTK+ i PyGTK w wersji n msgid "Jabberd1.4 does not like sha info when one join a password protected room. Turn this option to False to stop sending sha info in groupchat presences" msgstr "Demon Jabberd1.4 nie toleruje wysyÅ‚ania \"sha info\" podczas wchodzenia do pokoju chronionego hasÅ‚em. Ustaw tÄ… opcjÄ™ na False aby zabronić Gajimowi wysyÅ‚ania takiej informacji." -#: ../src/common/config.py:193 +#. always, never, peracct, pertype should not be translated +#: ../src/common/config.py:194 msgid "" "Controls the window where new messages are placed.\n" "'always' - All messages are sent to a single window.\n" @@ -4213,197 +4760,209 @@ msgstr "" "'WedÅ‚ug kont' - wiadomoÅ›ci dla każdego z kont majÄ… wspólne okno.\n" "'WedÅ‚ug typu' - wiadomoÅ›ci okreÅ›lonego typu (np. czat czy czat grupowy) majÄ… wspólne okno. Aby uaktywnić dokonane w tej opcji zmiany, trzeba ponownie uruchomić program." -#: ../src/common/config.py:194 +#: ../src/common/config.py:195 msgid "If False, you will no longer see the avatar in the chat window" msgstr "Jeżeli ustawisz tÄ… opcjÄ™ na False, Gajim nie bÄ™dzie wyÅ›wietlaÅ‚ avatara w oknie rozmowy." -#: ../src/common/config.py:195 +#: ../src/common/config.py:196 msgid "If True, pressing the escape key closes a tab/window" msgstr "Ustawienie 'True' spowoduje zamykanie okna/karty rozmowy po naciÅ›niÄ™ciu klawisza ESC." -#: ../src/common/config.py:196 +#: ../src/common/config.py:197 msgid "Hides the buttons in group chat window" msgstr "Ukrywa przyciski w oknie czatu" -#: ../src/common/config.py:197 +#: ../src/common/config.py:198 msgid "Hides the buttons in two persons chat window" msgstr "Ukrywa przyciski podczas rozmowy dwóch osób." -#: ../src/common/config.py:198 +#: ../src/common/config.py:199 msgid "Hides the banner in a group chat window" msgstr "Ukrywa banner w oknie czatu" -#: ../src/common/config.py:199 +#: ../src/common/config.py:200 msgid "Hides the banner in two persons chat window" msgstr "Usuwa banner podczas rozmowy dwóch osób." -#: ../src/common/config.py:200 +#: ../src/common/config.py:201 msgid "Hides the room occupants list in groupchat window" msgstr "Usuwa z okna rozmowy grupowej listÄ™ osób obecnych w pokoju." +#: ../src/common/config.py:202 +msgid "Merge consecutive nickname in chat window" +msgstr "ÅÄ…cz nastÄ™pujÄ…ce po sobie te same nicki w oknie czata" + +#: ../src/common/config.py:203 +msgid "Indentation when using merge consecutive nickame" +msgstr "WciÄ™cie stosowane przy Å‚aczeniu tych samych nicków" + +#: ../src/common/config.py:204 +msgid "List of colors that will be used to color nicknames in groupchats" +msgstr "Lista kolorów, które używane bÄ™dÄ… do kolorowania nicków w oknach czatu" + #. yes, no, ask -#: ../src/common/config.py:233 +#: ../src/common/config.py:237 msgid "Jabberd2 workaround" msgstr "ObejÅ›cie dla Jabberd2" -#: ../src/common/config.py:237 +#: ../src/common/config.py:241 msgid "If checked, Gajim will use your IP and proxies defined in file_transfer_proxies option for file transfer." msgstr "Jeżeli ta opcja jest aktywna, Gajim pobierze adresy serwerów proxy z klucza file_transfers_proxies i użyje ich podczas przesyÅ‚ania plików." -#: ../src/common/config.py:290 +#: ../src/common/config.py:297 msgid "Sleeping" msgstr "ÅšpiÄ™" -#: ../src/common/config.py:291 +#: ../src/common/config.py:298 msgid "Back soon" msgstr "NiedÅ‚ugo wrócÄ™" -#: ../src/common/config.py:291 +#: ../src/common/config.py:298 msgid "Back in some minutes." msgstr "WrócÄ™ za jakiÅ› czas." -#: ../src/common/config.py:292 +#: ../src/common/config.py:299 msgid "Eating" msgstr "Jem" -#: ../src/common/config.py:292 +#: ../src/common/config.py:299 msgid "I'm eating, so leave me a message." msgstr "Jem. Zostaw wiadomość." -#: ../src/common/config.py:293 +#: ../src/common/config.py:300 msgid "Movie" msgstr "Film" -#: ../src/common/config.py:293 +#: ../src/common/config.py:300 msgid "I'm watching a movie." msgstr "OglÄ…dam film." -#: ../src/common/config.py:294 +#: ../src/common/config.py:301 msgid "Working" msgstr "Praca" -#: ../src/common/config.py:294 +#: ../src/common/config.py:301 msgid "I'm working." msgstr "PracujÄ™." -#: ../src/common/config.py:295 +#: ../src/common/config.py:302 msgid "Phone" msgstr "Telefon" -#: ../src/common/config.py:295 +#: ../src/common/config.py:302 msgid "I'm on the phone." msgstr "Rozmawiam przez telefon." -#: ../src/common/config.py:296 +#: ../src/common/config.py:303 msgid "Out" msgstr "WyszedÅ‚em" -#: ../src/common/config.py:296 +#: ../src/common/config.py:303 msgid "I'm out enjoying life" msgstr "WyszedÅ‚em cieszyć siÄ™ życiem." -#: ../src/common/config.py:305 +#: ../src/common/config.py:312 msgid "Sound to play when a MUC message contains one of the words in muc_highlight_words, or when a MUC message contains your nickname." msgstr "DźwiÄ™k, który zostanie odtworzony, gdy wiadomość MUC bÄ™dzie zawierać jeden z wyrazów ze zmiennej muc_highlight_words lub gdy wiadomość MUC zawierać bÄ™dzie twój pseudonim." -#: ../src/common/config.py:306 +#: ../src/common/config.py:313 msgid "Sound to play when any MUC message arrives. (This setting is taken into account only if notify_on_all_muc_messages is True)" msgstr "DźwiÄ™k, który zostanie odtworzony, gdy nadejdzie wiadomość MUC. (Ta opcja jest brana pod uwagÄ™ jedynie gdy zmienna notify_on_all_muc_messages ma wartość True)" -#: ../src/common/config.py:314 -#: ../src/common/optparser.py:181 +#: ../src/common/config.py:321 +#: ../src/common/optparser.py:185 msgid "green" msgstr "zielony" -#: ../src/common/config.py:318 -#: ../src/common/optparser.py:167 +#: ../src/common/config.py:325 +#: ../src/common/optparser.py:171 msgid "grocery" msgstr "grocery" -#: ../src/common/config.py:322 +#: ../src/common/config.py:329 msgid "human" msgstr "human" -#: ../src/common/config.py:326 +#: ../src/common/config.py:333 msgid "marine" msgstr "morski" -#: ../src/common/connection.py:152 +#: ../src/common/connection.py:172 #, python-format msgid "Connection with account \"%s\" has been lost" msgstr "PoÅ‚Ä…czenie z kontem \"%s\"zostaÅ‚o zerwane." -#: ../src/common/connection.py:153 +#: ../src/common/connection.py:173 msgid "To continue sending and receiving messages, you will need to reconnect." msgstr "Aby dalej wysyÅ‚ać i odbierać wiadomoÅ›ci musisz siÄ™ ponownie poÅ‚Ä…czyć." -#: ../src/common/connection.py:169 -#: ../src/common/connection.py:195 +#: ../src/common/connection.py:185 +#: ../src/common/connection.py:211 #, python-format msgid "Transport %s answered wrongly to register request." msgstr "Transport %s udzieliÅ‚ nieprawidÅ‚owej odpowiedzi na żądnie rejestracji." #. wrong answer -#: ../src/common/connection.py:194 +#: ../src/common/connection.py:210 msgid "Invalid answer" msgstr "Niepoprawna odpowiedź" -#: ../src/common/connection.py:348 -#: ../src/common/connection.py:384 -#: ../src/common/connection.py:754 +#: ../src/common/connection.py:397 +#: ../src/common/connection.py:433 +#: ../src/common/connection.py:857 #, python-format msgid "Could not connect to \"%s\"" msgstr "Nie można poÅ‚Ä…czyć siÄ™ z \"%s\"" -#: ../src/common/connection.py:362 +#: ../src/common/connection.py:411 #, python-format msgid "Connected to server %s:%s with %s" msgstr "PoÅ‚Ä…czony z serwerem %s: %s z %s" -#: ../src/common/connection.py:385 +#: ../src/common/connection.py:434 msgid "Check your connection or try again later" msgstr "Sprawdź swoje poÅ‚Ä…czenie lub spróbuj później" -#: ../src/common/connection.py:410 +#: ../src/common/connection.py:459 #, python-format msgid "Authentication failed with \"%s\"" msgstr "Autoryzacja z \"%s\" nie powiodÅ‚a siÄ™" -#: ../src/common/connection.py:411 +#: ../src/common/connection.py:460 msgid "Please check your login and password for correctness." msgstr "Spawdź czy twój login i hasÅ‚o sÄ… poprawne." #. We didn't set a passphrase -#: ../src/common/connection.py:487 +#: ../src/common/connection.py:573 msgid "OpenPGP passphrase was not given" msgstr "Nie podano klucza OpenPGP" #. %s is the account name here -#: ../src/common/connection.py:489 +#: ../src/common/connection.py:575 #, python-format msgid "You will be connected to %s without OpenPGP." msgstr "Zostanie poÅ‚Ä…czony z %s bez obsÅ‚ugi OpenPGP." #. do not show I'm invisible! -#: ../src/common/connection.py:526 +#: ../src/common/connection.py:612 msgid "invisible" msgstr "Niewidoczny" -#: ../src/common/connection.py:527 +#: ../src/common/connection.py:613 msgid "offline" msgstr "RozÅ‚Ä…czony" -#: ../src/common/connection.py:528 +#: ../src/common/connection.py:614 #, python-format msgid "I'm %s" msgstr "Jestem %s" #. we're not english -#: ../src/common/connection.py:611 +#: ../src/common/connection.py:699 msgid "[This message is encrypted]" msgstr "[Ta wiadomość jest zaszyfrowana]" -#: ../src/common/connection.py:649 +#: ../src/common/connection.py:742 #, python-format msgid "" "Subject: %s\n" @@ -4412,402 +4971,293 @@ msgstr "" "Temat: %s\n" "%s" -#: ../src/common/connection.py:699 +#: ../src/common/connection.py:795 +#: ../src/common/connection_handlers.py:1511 msgid "I would like to add you to my roster." msgstr "ChciaÅ‚bym dodać CiÄ™ do listy kontaktów." -#: ../src/common/helpers.py:103 +#: ../src/common/connection_handlers.py:49 +msgid "Unable to load idle module" +msgstr "Nie można zaÅ‚adować moduÅ‚u idle" + +#: ../src/common/connection_handlers.py:581 +#, python-format +msgid "Registration information for transport %s has not arrived in time" +msgstr "Informacje rejestracyjne transportu %s nie dotarÅ‚y na czas" + +#. password required to join +#. we are banned +#. room does not exist +#: ../src/common/connection_handlers.py:1450 +#: ../src/common/connection_handlers.py:1453 +#: ../src/common/connection_handlers.py:1456 +#: ../src/common/connection_handlers.py:1459 +#: ../src/common/connection_handlers.py:1462 +#: ../src/common/connection_handlers.py:1465 +#: ../src/common/connection_handlers.py:1473 +msgid "Unable to join room" +msgstr "Nie można doÅ‚Ä…czyć do pokoju" + +#: ../src/common/connection_handlers.py:1451 +msgid "A password is required to join this room." +msgstr "Aby doÅ‚Ä…czyć do tego pokoju, wymagane jest hasÅ‚o." + +#: ../src/common/connection_handlers.py:1454 +msgid "You are banned from this room." +msgstr "ZostaÅ‚eÅ› zabanowany w tym pokoju." + +#: ../src/common/connection_handlers.py:1457 +msgid "Such room does not exist." +msgstr "Taki pokój nie istnieje." + +#: ../src/common/connection_handlers.py:1460 +msgid "Room creation is restricted." +msgstr "Tworzenie pokoi jest ograniczone." + +#: ../src/common/connection_handlers.py:1463 +msgid "Your registered nickname must be used." +msgstr "Twój zarejestrowany pseudonim musi być w użyciu." + +#: ../src/common/connection_handlers.py:1466 +msgid "You are not in the members list." +msgstr "Nie jesteÅ› na liÅ›cie czÅ‚onków." + +#: ../src/common/connection_handlers.py:1474 +msgid "" +"Your desired nickname is in use or registered by another occupant.\n" +"Please specify another nickname below:" +msgstr "" +"Pożądany przez ciebie pseudonim jest używany lub zarejestrowany przez kogoÅ› innego.\n" +"Podaj inny pseudonim:" + +#. BE CAREFUL: no con.updateRosterItem() in a callback +#: ../src/common/connection_handlers.py:1519 +#, python-format +msgid "we are now subscribed to %s" +msgstr "ZapisaliÅ›my siÄ™ do %s" + +#: ../src/common/connection_handlers.py:1521 +#, python-format +msgid "unsubscribe request from %s" +msgstr "ProÅ›ba o cofniÄ™cie autoryzacji od %s" + +#: ../src/common/connection_handlers.py:1523 +#, python-format +msgid "we are now unsubscribed from %s" +msgstr "WypisaliÅ›my siÄ™ z %s" + +#: ../src/common/connection_handlers.py:1680 +#, python-format +msgid "JID %s is not RFC compliant. It will not be added to your roster. Use roster management tools such as http://jru.jabberstudio.org/ to remove it" +msgstr "Jid %s nie jest kompatybilny z RFC. Nie zostanie dodany do listy kontaktów. Skorzystaj z narzÄ™dzi do zarzÄ…dzania listÄ… kontaktów, takich jak http://jru.jabberstudio.org/ aby go usunąć." + +#: ../src/common/helpers.py:100 msgid "Invalid character in username." msgstr "Niepoprawna litera w nazwie użytkownika." -#: ../src/common/helpers.py:108 +#: ../src/common/helpers.py:105 msgid "Server address required." msgstr "Wymagany adres serwera." -#: ../src/common/helpers.py:113 +#: ../src/common/helpers.py:110 msgid "Invalid character in hostname." msgstr "Niepoprawna litera w nazwie hosta." -#: ../src/common/helpers.py:119 +#: ../src/common/helpers.py:116 msgid "Invalid character in resource." msgstr "Niepoprawna litera w zasobach." #. GiB means gibibyte -#: ../src/common/helpers.py:159 +#: ../src/common/helpers.py:156 #, python-format msgid "%s GiB" msgstr "%s·GiB" #. GB means gigabyte -#: ../src/common/helpers.py:162 +#: ../src/common/helpers.py:159 #, python-format msgid "%s GB" msgstr "%s·GB" #. MiB means mibibyte -#: ../src/common/helpers.py:166 +#: ../src/common/helpers.py:163 #, python-format msgid "%s MiB" msgstr "%s·MiB" #. MB means megabyte -#: ../src/common/helpers.py:169 +#: ../src/common/helpers.py:166 #, python-format msgid "%s MB" msgstr "%s·MB" #. KiB means kibibyte -#: ../src/common/helpers.py:173 +#: ../src/common/helpers.py:170 #, python-format msgid "%s KiB" msgstr "%s·KiB" #. KB means kilo bytes -#: ../src/common/helpers.py:176 +#: ../src/common/helpers.py:173 #, python-format msgid "%s KB" msgstr "%s·KB" #. B means bytes -#: ../src/common/helpers.py:179 +#: ../src/common/helpers.py:176 #, python-format msgid "%s B" msgstr "%s·B" -#: ../src/common/helpers.py:189 +#: ../src/common/helpers.py:205 msgid "_Busy" msgstr "_ZajÄ™ty" -#: ../src/common/helpers.py:191 +#: ../src/common/helpers.py:207 msgid "Busy" msgstr "ZajÄ™ty" -#: ../src/common/helpers.py:194 +#: ../src/common/helpers.py:210 msgid "_Not Available" msgstr "Nie_obecny" -#: ../src/common/helpers.py:196 +#: ../src/common/helpers.py:212 msgid "Not Available" msgstr "Nieobecny" -#: ../src/common/helpers.py:199 +#: ../src/common/helpers.py:215 msgid "_Free for Chat" msgstr "_ChÄ™tny do rozmowy" -#: ../src/common/helpers.py:201 +#: ../src/common/helpers.py:217 msgid "Free for Chat" msgstr "ChÄ™tny do rozmowy" -#: ../src/common/helpers.py:204 +#: ../src/common/helpers.py:220 msgid "_Available" msgstr "_DostÄ™pny" -#: ../src/common/helpers.py:206 +#: ../src/common/helpers.py:222 msgid "Available" msgstr "DostÄ™pny" -#: ../src/common/helpers.py:208 +#: ../src/common/helpers.py:224 msgid "Connecting" msgstr "ÅÄ…czÄ™ siÄ™" -#: ../src/common/helpers.py:211 +#: ../src/common/helpers.py:227 msgid "A_way" msgstr "Zaraz _wracam" -#: ../src/common/helpers.py:213 +#: ../src/common/helpers.py:229 msgid "Away" msgstr "Zaraz wracam" -#: ../src/common/helpers.py:216 +#: ../src/common/helpers.py:232 msgid "_Offline" msgstr "R_ozÅ‚Ä…czony" -#: ../src/common/helpers.py:218 +#: ../src/common/helpers.py:234 msgid "Offline" msgstr "RozÅ‚Ä…czony" -#: ../src/common/helpers.py:221 +#: ../src/common/helpers.py:237 msgid "_Invisible" msgstr "N_iewidoczny" -#: ../src/common/helpers.py:223 -msgid "Invisible" -msgstr "Niewidoczny" - -#: ../src/common/helpers.py:227 +#: ../src/common/helpers.py:243 msgid "?contact has status:Unknown" msgstr "?contact ma status: Nieznany" -#: ../src/common/helpers.py:229 +#: ../src/common/helpers.py:245 msgid "?contact has status:Has errors" msgstr "?contact ma status: WystÄ…piÅ‚y bÅ‚Ä™dy" -#: ../src/common/helpers.py:234 +#: ../src/common/helpers.py:250 msgid "?Subscription we already have:None" msgstr "?Posiadane autoryzacje: Brak" -#: ../src/common/helpers.py:236 +#: ../src/common/helpers.py:252 msgid "To" msgstr "Do" -#: ../src/common/helpers.py:238 +#: ../src/common/helpers.py:254 msgid "From" msgstr "Od" -#: ../src/common/helpers.py:240 +#: ../src/common/helpers.py:256 msgid "Both" msgstr "Obustronna" -#: ../src/common/helpers.py:248 +#: ../src/common/helpers.py:264 msgid "?Ask (for Subscription):None" msgstr "?PoproÅ› (o autoryzacjÄ™): Brak" -#: ../src/common/helpers.py:250 +#: ../src/common/helpers.py:266 msgid "Subscribe" msgstr "Autoryzuj" -#: ../src/common/helpers.py:259 +#: ../src/common/helpers.py:275 msgid "?Group Chat Contact Role:None" msgstr "?Funkcja kontaktu w pokoju: Brak" -#: ../src/common/helpers.py:262 +#: ../src/common/helpers.py:278 msgid "Moderators" msgstr "Moderatorzy" -#: ../src/common/helpers.py:264 +#: ../src/common/helpers.py:280 msgid "Moderator" msgstr "Moderator" -#: ../src/common/helpers.py:267 +#: ../src/common/helpers.py:283 msgid "Participants" msgstr "Uczestnicy" -#: ../src/common/helpers.py:269 +#: ../src/common/helpers.py:285 msgid "Participant" msgstr "Uczestnik" -#: ../src/common/helpers.py:272 +#: ../src/common/helpers.py:288 msgid "Visitors" msgstr "GoÅ›cie" -#: ../src/common/helpers.py:274 +#: ../src/common/helpers.py:290 msgid "Visitor" msgstr "Gość" -#: ../src/common/helpers.py:310 +#: ../src/common/helpers.py:326 msgid "is paying attention to the conversation" msgstr "jest skupiony na rozmowie" -#: ../src/common/helpers.py:312 +#: ../src/common/helpers.py:328 msgid "is doing something else" msgstr "robi coÅ› innego" -#: ../src/common/helpers.py:314 +#: ../src/common/helpers.py:330 msgid "is composing a message..." msgstr "pisze wiadomość..." #. paused means he or she was compoing but has stopped for a while -#: ../src/common/helpers.py:317 +#: ../src/common/helpers.py:333 msgid "paused composing a message" msgstr "przerwaÅ‚ pisanie wiadomoÅ›ci" -#: ../src/common/helpers.py:319 +#: ../src/common/helpers.py:335 msgid "has closed the chat window or tab" msgstr "zamknÄ…Å‚ okno lub kartÄ™ rozmowy" #. we talk about a file -#: ../src/common/optparser.py:62 +#: ../src/common/optparser.py:60 #, python-format msgid "error: cannot open %s for reading" msgstr "bÅ‚Ä…d: nie można otworzyć %s do odczytu" -#: ../src/common/optparser.py:167 +#: ../src/common/optparser.py:171 msgid "gtk+" msgstr "gtk+" -#: ../src/common/optparser.py:176 -#: ../src/common/optparser.py:177 +#: ../src/common/optparser.py:180 +#: ../src/common/optparser.py:181 msgid "cyan" msgstr "cyjan" -#~ msgid "Would you like to overwrite it?" -#~ msgstr "Czy chcesz go nadpisać?" -#~ msgid "_Join New Room..." -#~ msgstr "_DoÅ‚Ä…cz do Nowego pokoju..." -#~ msgid "Usage: /%s, sets the groupchat window to compact mode." -#~ msgstr "Użycie: /%s przestawia okno rozmowy w pokoju na widok zwarty." - -#, fuzzy -#~ msgid "Please modify your special notification below" -#~ msgstr "Wybierz jednÄ… z poniższych opcji:" -#~ msgid "Ad_vanced Actions" -#~ msgstr "Z_aawansowane dziaÅ‚ania" -#~ msgid "Delete Message of the Day" -#~ msgstr "UsuÅ„ Wiadomość Dnia" - -#, fuzzy -#~ msgid "I want a notification popup:" -#~ msgstr "Powiadomienia o stanie _rozmowy:" - -#, fuzzy -#~ msgid "I want to listen to:" -#~ msgstr "%s chce przesÅ‚ać Ci plik:" -#~ msgid "Send _New Message..." -#~ msgstr "WyÅ›lij _NowÄ… Wiadomość..." -#~ msgid "Set Message of the Day" -#~ msgstr "Ustaw Wiadomość Dnia" -#~ msgid "Update Message of the Day" -#~ msgstr "Uktualnij Wiadomość Dnia" -#~ msgid "_XML Console..." -#~ msgstr "Konsola _XML..." -#~ msgid "Choose Avatar" -#~ msgstr "Wybierz awatar" -#~ msgid "Use compact view when you open a chat window" -#~ msgstr "Używaj widoku zwartego otwierajÄ…c okno rozmowy" -#~ msgid "Use compact view when you open a group chat window" -#~ msgstr "Korzystaj z widoku zwartego otwierajÄ…c okno rozmowy w pokoju" -#~ msgid "plain" -#~ msgstr "czysty" -#~ msgid "Send" -#~ msgstr "WyÅ›lij" -#~ msgid "%(nickname)s in room %(room_name)s has sent you a new message." -#~ msgstr "%(nickname)s·w pokoju·%(room_name)s·przesÅ‚aÅ‚ ci nowÄ… wiadomość." -#~ msgid "%s has sent you a new message." -#~ msgstr "%s przesÅ‚aÅ‚ ci nowÄ… wiadomość." - -#, fuzzy -#~ msgid "GUI Migration failed" -#~ msgstr "Publikacja vCard nie powiodÅ‚a siÄ™" -#~ msgid "Logs have been successfully migrated to the database." -#~ msgstr "Logi zostaÅ‚y przeniesione do bazy danych." -#~ msgid "If checked, Gajim will also have a trayicon" -#~ msgstr "Zaznaczenie spowoduje wÅ‚Ä…czenie ikony Gajima w tacce systemowej." -#~ msgid "_Online Users" -#~ msgstr "D_ostÄ™pni użytkownicy" - -#, fuzzy -#~ msgid "Start Chat with Contact" -#~ msgstr "Rozpocznij rozmowÄ™ z konta %s" -#~ msgid "All contacts in this group are offline or have errors" -#~ msgstr "" -#~ "Wszystkie kontakty w tej grupie sÄ… niedostÄ™pne lub wystÄ…piÅ‚y w nich bÅ‚Ä™dy" -#~ msgid "Size: " -#~ msgstr "Rozmiar: " -#~ msgid "Session bus is not available" -#~ msgstr "Magistrala sesji nie jest dosŧępna" - -#, fuzzy -#~ msgid "Unable to load idle module" -#~ msgstr "Nie można doÅ‚Ä…czyć do pokoju" -#~ msgid "Unable to join room" -#~ msgstr "Nie można doÅ‚Ä…czyć do pokoju" -#~ msgid "A password is required to join this room." -#~ msgstr "Aby doÅ‚Ä…czyć do tego pokoju, wymagane jest hasÅ‚o." -#~ msgid "You are banned from this room." -#~ msgstr "ZostaÅ‚eÅ› zabanowany w tym pokoju." -#~ msgid "Such room does not exist." -#~ msgstr "Taki pokój nie istnieje." -#~ msgid "Room creation is restricted." -#~ msgstr "Tworzenie pokoi jest ograniczone." -#~ msgid "Your registered nickname must be used." -#~ msgstr "Twój zarejestrowany pseudonim musi być w użyciu." -#~ msgid "You are not in the members list." -#~ msgstr "Nie jesteÅ› na liÅ›cie czÅ‚onków." -#~ msgid "" -#~ "Your desired nickname is in use or registered by another occupant.\n" -#~ "Please specify another nickname below:" -#~ msgstr "" -#~ "PorzÄ…dany przez ciebie pseudonim jest używany lub zarejestrowany przez " -#~ "kogoÅ› innego.\n" -#~ "Podaj inny pseudonim:" -#~ msgid "we are now subscribed to %s" -#~ msgstr "ZapisaliÅ›my siÄ™ do %s" -#~ msgid "unsubscribe request from %s" -#~ msgstr "ProÅ›ba o cofniÄ™cie autoryzacji od %s" -#~ msgid "we are now unsubscribed from %s" -#~ msgstr "WypisaliÅ›my siÄ™ z %s" - -#, fuzzy -#~ msgid "" -#~ "JID %s is not RFC compliant. It will not be added to your roster. Use " -#~ "roster management tools such as http://jru.jabberstudio.org/ to remove it" -#~ msgstr "" -#~ "Jid %s nie jest kompatybilny z RFC. Nie zostanie dodany do listy " -#~ "kontaktów. Skorzystaj z narzÄ™dzi do zarzÄ…dzania listÄ… kontaktów, takich " -#~ "jak http://jru.jabberstudio.org/ aby go usunąć." -#~ msgid "Registration information for transport %s has not arrived in time" -#~ msgstr "Informacje rejestracyjne transportu %s nie dotarÅ‚y na czas" -#~ msgid "Sound" -#~ msgstr "DźwiÄ™k" -#~ msgid "Text" -#~ msgstr "Tekst" -#~ msgid "Image" -#~ msgstr "Obrazek" -#~ msgid "From %s" -#~ msgstr "Od %s" -#~ msgid "To %s" -#~ msgstr "Do %s" -#~ msgid "You have been invited to the %(room_jid)s room by %(contact_jid)s" -#~ msgstr "OtrzymaÅ‚eÅ› zaproszenie do pokoju%(room_jid)s od %(contact_jid)s" -#~ msgid "Manage Emoticons" -#~ msgstr "ZarzÄ…dzaj emotikonami" -#~ msgid "Or choose a preset message:" -#~ msgstr "Albo wybierz opis zapisany:" -#~ msgid "Use _emoticons" -#~ msgstr "Używaj _emotikon" -#~ msgid "_Set Image..." -#~ msgstr "U_staw obrazek..." -#~ msgid "Switch to %s" -#~ msgstr "ZmieÅ„ na %s" -#~ msgid "using account " -#~ msgstr "używajÄ…c konta " -#~ msgid "The filesize of image \"%s\" is too large" -#~ msgstr "Rozmiar pliku obrazka \"%s\" jest za duży" -#~ msgid "The file must not be more than 32 kilobytes." -#~ msgstr "Ten plik nie może mieć wiÄ™cej niż 32 kilobajty." -#~ msgid "Timeout" -#~ msgstr "Limit czasu" -#~ msgid "A protocol error has occured:" -#~ msgstr "WystÄ…piÅ‚ bÅ‚Ä…d protokoÅ‚u:" -#~ msgid "account: " -#~ msgstr "konto: " -#~ msgid "Are you sure you want to leave rooms \"%s\"?" -#~ msgstr "Czy jesteÅ› pewien, że chcesz opuÅ›cić pokoje \"%s\"?" -#~ msgid "If you close this window, you will be disconnected from these rooms." -#~ msgstr "" -#~ "JeÅ›li zamkniesz to okno, to poÅ‚Ä…czenie z tymi pokojami zostanie zerwane." -#~ msgid "Activate/Disable notification for when a file transfer is complete" -#~ msgstr "WÅ‚Ä…cz/WyÅ‚Ä…cz powiadomienie o zakoÅ„czeniu przesyÅ‚ania pliku." -#~ msgid "Removing selected file transfer" -#~ msgstr "Usuwanie wybranego transferu pliku" -#~ msgid "Stoping selected file transfer" -#~ msgstr "Zatrzymanie wybranego transferu pliku" -#~ msgid "Use a single chat window with _tabs" -#~ msgstr "Używaj jednego okna rozmowy z kar_tami" -#~ msgid "" -#~ "If you close this tab and you have history disabled, the message will be " -#~ "lost." -#~ msgstr "" -#~ "Jeśłi zamkniesz tÄ™ kartÄ™, a nie masz auktywnionej opcji historii, to " -#~ "utracisz tÄ™ wiadomość." -#~ msgid "Cannot remove last group" -#~ msgstr "Nie można usunąć ostatniej grupy" -#~ msgid "At least one contact group must be present." -#~ msgstr "Musi istnieć przynajmniej jedna grupa kontaktów." -#~ msgid "" -#~ "pysqlite2 (aka python-pysqlite2) dependency is missing. After you install " -#~ "pysqlite3, if you want to migrate your logs to the new database, please " -#~ "read: http://trac.gajim.org/wiki/MigrateLogToDot9DB Exiting..." -#~ msgstr "" -#~ "Brak zależnoÅ›ci pysqlite2 (aka python pysqlite2). JeÅ›li po instalacji " -#~ "pysqlite3 bÄ™dziesz chciaÅ‚ przenieść swoje logi do nowej bazy, przeczytaj " -#~ "najpierw: http://trac.gajim.org/wiki/MigrateLogToDot9D WyjÅ›cie..." -#~ msgid "Image is too big" -#~ msgstr "Obrazek jest za duży" -#~ msgid "" -#~ "Image for emoticon has to be less than or equal to 24 pixels in width and " -#~ "24 in height." -#~ msgstr "" -#~ "Obrazek emotikony musi mieć rozmiar mniejszy lub równy 24 pikselom " -#~ "dÅ‚ugoÅ›ci i 24 pikselom szerokoÅ›ci" - diff --git a/po/pt.po b/po/pt.po index e4418b876..90ee1dbbe 100644 --- a/po/pt.po +++ b/po/pt.po @@ -2,12 +2,12 @@ # Copyright (C) 2005 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the Gajim package. # -#: ../src/gajim-remote.py:204 ../src/gajim-remote.py:211 +#: ../src/gajim-remote.py:218 ../src/gajim-remote.py:225 msgid "" msgstr "" "Project-Id-Version: Gajim 0.6\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2006-04-13 12:52+0200\n" +"POT-Creation-Date: 2006-07-04 00:03+0200\n" "PO-Revision-Date: 2005-08-18 18:21-0300\n" "Last-Translator: Miguel Fonseca \n" "Language-Team: none\n" @@ -28,30 +28,2131 @@ msgstr "" msgid "Jabber IM Client" msgstr "Cliente de IM Jabber" -#: ../src/advanced.py:71 +#: ../data/glade/account_context_menu.glade.h:1 +#, fuzzy +msgid "Send Single _Message..." +msgstr "Enviar _Mensagem Simples" + +#: ../data/glade/account_context_menu.glade.h:2 +msgid "_Add Contact..." +msgstr "_Adicionar Contacto" + +#: ../data/glade/account_context_menu.glade.h:3 +msgid "_Discover Services..." +msgstr "_Descobrir Recursos..." + +#: ../data/glade/account_context_menu.glade.h:4 +#: ../data/glade/roster_window.glade.h:15 +#: ../data/glade/systray_context_menu.glade.h:5 +msgid "_Group Chat" +msgstr "C_hat" + +#: ../data/glade/account_context_menu.glade.h:5 +msgid "_Modify Account..." +msgstr "_Modificar Conta..." + +#: ../data/glade/account_context_menu.glade.h:6 +msgid "_Status" +msgstr "E_stado" + +#: ../data/glade/account_creation_wizard_window.glade.h:1 +msgid "" +"Account is being created\n" +"\n" +"Please wait..." +msgstr "" +"Conta está a ser criada\n" +"\n" +"Por favor, aguarde..." + +#: ../data/glade/account_creation_wizard_window.glade.h:4 +msgid "Please choose one of the options below:" +msgstr "Por favor escolha uma das opções abaixo:" + +#: ../data/glade/account_creation_wizard_window.glade.h:5 +msgid "Please fill in the data for your new account" +msgstr "Por favor preencha os dados para a sua nova conta" + +#: ../data/glade/account_creation_wizard_window.glade.h:6 +msgid "Click to see features (like MSN, ICQ transports) of jabber servers" +msgstr "" +"Clique para ver os serviços (tais como transportes MSN e ICQ) dos servidores " +"jabber" + +#: ../data/glade/account_creation_wizard_window.glade.h:7 +msgid "Connect when I press Finish" +msgstr "Ligar quando eu premir Concluir" + +#: ../data/glade/account_creation_wizard_window.glade.h:8 +msgid "Gajim: Account Creation Wizard" +msgstr "Gajim: Criação Passo-a-passo de uma Conta" + +#: ../data/glade/account_creation_wizard_window.glade.h:9 +msgid "I already have an account I want to use" +msgstr "Já tenho uma conta e quero usá-la" + +#: ../data/glade/account_creation_wizard_window.glade.h:10 +msgid "I want to _register for a new account" +msgstr "Quero _registar uma nova conta" + +#: ../data/glade/account_creation_wizard_window.glade.h:11 +#: ../data/glade/account_modification_window.glade.h:18 +msgid "If checked, Gajim will remember the password for this account" +msgstr "Se marcado, o Gajim lembrar-se-á da senha para esta conta" + +#: ../data/glade/account_creation_wizard_window.glade.h:12 +#: ../data/glade/manage_proxies_window.glade.h:6 +msgid "Pass_word:" +msgstr "_Senha:" + +#: ../data/glade/account_creation_wizard_window.glade.h:13 +#: ../data/glade/account_modification_window.glade.h:37 +msgid "Save pass_word" +msgstr "Guardar _senha" + +#: ../data/glade/account_creation_wizard_window.glade.h:14 +msgid "Servers Features" +msgstr "Recursos dos Servidores" + +#: ../data/glade/account_creation_wizard_window.glade.h:15 +#, fuzzy +msgid "Set my profile when I connect" +msgstr "Definir uma imagem pessoal (avatar) quando me ligo" + +#: ../data/glade/account_creation_wizard_window.glade.h:16 +msgid "" +"You need to have an account in order to connect\n" +"to the Jabber network." +msgstr "" +"Necessita de uma conta para se poder ligar\n" +"à rede Jabber." + +#: ../data/glade/account_creation_wizard_window.glade.h:18 +msgid "Your JID:" +msgstr "O seu JID:" + +#: ../data/glade/account_creation_wizard_window.glade.h:19 +#: ../data/glade/roster_window.glade.h:10 +msgid "_Advanced" +msgstr "Avançado" + +#: ../data/glade/account_creation_wizard_window.glade.h:20 +msgid "_Finish" +msgstr "_Terminar" + +#: ../data/glade/account_creation_wizard_window.glade.h:21 +#: ../data/glade/manage_proxies_window.glade.h:9 +msgid "_Host:" +msgstr "_Host:" + +#: ../data/glade/account_creation_wizard_window.glade.h:22 +#: ../data/glade/account_modification_window.glade.h:45 +msgid "_Password:" +msgstr "_Senha:" + +#: ../data/glade/account_creation_wizard_window.glade.h:23 +#: ../data/glade/manage_proxies_window.glade.h:10 +msgid "_Port:" +msgstr "_Porta:" + +#: ../data/glade/account_creation_wizard_window.glade.h:24 +#, fuzzy +msgid "_Retype Password:" +msgstr "_Senha:" + +#: ../data/glade/account_creation_wizard_window.glade.h:25 +msgid "_Server:" +msgstr "_Servidor:" + +#: ../data/glade/account_creation_wizard_window.glade.h:26 +msgid "_Use proxy" +msgstr "_Usar proxy" + +#: ../data/glade/account_creation_wizard_window.glade.h:27 +#: ../data/glade/manage_proxies_window.glade.h:11 +msgid "_Username:" +msgstr "Nome de _utilizador" + +#: ../data/glade/account_modification_window.glade.h:1 +#: ../data/glade/preferences_window.glade.h:8 +msgid "Miscellaneous" +msgstr "Diversos" + +#: ../data/glade/account_modification_window.glade.h:2 +msgid "OpenPGP" +msgstr "OpenPGP" + +#: ../data/glade/account_modification_window.glade.h:3 +msgid "Personal Information" +msgstr "Detalhes Pessoais" + +#: ../data/glade/account_modification_window.glade.h:4 +msgid "Account" +msgstr "Conta" + +#: ../data/glade/account_modification_window.glade.h:5 +msgid "Account Modification" +msgstr "Modificação da Conta" + +#: ../data/glade/account_modification_window.glade.h:6 +msgid "Autoreconnect when connection is lost" +msgstr "Religar automaticamente em caso de perda de ligação." + +#: ../data/glade/account_modification_window.glade.h:7 +msgid "C_onnect on Gajim startup" +msgstr "_Ligar ao arranque" + +#: ../data/glade/account_modification_window.glade.h:8 +msgid "Chan_ge Password" +msgstr "Mu_dar Senha" + +#: ../data/glade/account_modification_window.glade.h:9 +msgid "" +"Check this so Gajim will connect in port 5223 where legacy servers are " +"expected to have SSL capabilities. Note that Gajim uses TLS encryption by " +"default if broadcasted by the server, and with this option enabled TLS will " +"be disabled" +msgstr "" +"Marque esta opção se quiser que o Gajim se ligue usando a porta 5223, onde " +"se espera que servidores específicos possuem capacidades SSL. Note que o " +"Gajim usa encriptação TLS por defeito se emitida pelo servidor, e que com " +"esta opção marcada o TLS será desactivado." + +#: ../data/glade/account_modification_window.glade.h:10 +msgid "Choose _Key..." +msgstr "_Escolha chave..." + +#: ../data/glade/account_modification_window.glade.h:11 +msgid "Click to change account's password" +msgstr "Clique para mudar a senha da conta" + +#: ../data/glade/account_modification_window.glade.h:12 +msgid "Connection" +msgstr "Ligação" + +#: ../data/glade/account_modification_window.glade.h:13 +msgid "Edit Personal Information..." +msgstr "Editar Detalhes Pessoais..." + +#: ../data/glade/account_modification_window.glade.h:14 +#: ../data/glade/roster_window.glade.h:5 ../src/notify.py:308 +#: ../src/notify.py:330 ../src/notify.py:342 ../src/tooltips.py:350 +msgid "Gajim" +msgstr "Gajim" + +#: ../data/glade/account_modification_window.glade.h:15 +#: ../data/glade/preferences_window.glade.h:44 +#: ../data/glade/vcard_information_window.glade.h:17 +#: ../src/roster_window.py:290 ../src/roster_window.py:1184 +#: ../src/roster_window.py:1405 +msgid "General" +msgstr "Geral" + +#: ../data/glade/account_modification_window.glade.h:16 +msgid "Hostname: " +msgstr "Nome do Host:" + +#: ../data/glade/account_modification_window.glade.h:17 +msgid "" +"If checked, Gajim will also broadcast some more IPs except from just your " +"IP, so file transfer has higher chances of working." +msgstr "" + +#: ../data/glade/account_modification_window.glade.h:19 +msgid "" +"If checked, Gajim will send keep-alive packets so it prevents connection " +"timeout which results in disconnection" +msgstr "" +"Se marcado, o Gajim enviará pacotes keep-alive para evitar timeouts da " +"ligação, os quais resultam na perda dessa ligação" + +#: ../data/glade/account_modification_window.glade.h:20 +msgid "" +"If checked, Gajim will store the password in ~/.gajim/config with 'read' " +"permission only for you" +msgstr "" +"Se marcado, o Gajim guardará a sua senha em ~/.gajim/config com permissão de " +"'leitura' apenas para si" + +#: ../data/glade/account_modification_window.glade.h:21 +msgid "" +"If checked, Gajim, when launched, will automatically connect to jabber using " +"this account" +msgstr "" +"Se marcado, o Gajim, quando iniciado, ligar-se-á automaticamente ao jabber " +"usando esta conta" + +#: ../data/glade/account_modification_window.glade.h:22 +msgid "" +"If checked, any change to the global status (handled by the combobox at the " +"bottom of the roster window) will change the status of this account " +"accordingly" +msgstr "" +"Se marcado, qualquer mudança feita ao estado global (gerido pelo combobox no " +"fundo da lista de contactos) alterará também o estado desta conta" + +#: ../data/glade/account_modification_window.glade.h:23 +msgid "Information about you, as stored in the server" +msgstr "Informações sobre si, tal como estão gravadas no servidor" + +#: ../data/glade/account_modification_window.glade.h:24 +msgid "Manage..." +msgstr "Gerir..." + +#: ../data/glade/account_modification_window.glade.h:25 ../src/config.py:1448 +msgid "No key selected" +msgstr "Nenhuma chave seleccionada" + +#. None means no proxy profile selected +#: ../data/glade/account_modification_window.glade.h:27 ../src/config.py:1053 +#: ../src/config.py:1058 ../src/config.py:1230 ../src/config.py:1505 +#: ../src/config.py:1578 ../src/config.py:2282 +msgid "None" +msgstr "Nenhum" + +#: ../data/glade/account_modification_window.glade.h:28 +msgid "Personal Information" +msgstr "Detalhes Pessoais..." + +#: ../data/glade/account_modification_window.glade.h:29 +msgid "Port: " +msgstr "Porta:" + +#: ../data/glade/account_modification_window.glade.h:30 +msgid "Priori_ty:" +msgstr "_Prioridade" + +#: ../data/glade/account_modification_window.glade.h:31 +msgid "" +"Priority is used in Jabber to determine who gets the events from the jabber " +"server when two or more clients are connected using the same account; The " +"client with the highest priority gets the events" +msgstr "" +"A prioridade é usada no Jabber para determinar quem recebe os eventos do " +"servidor jabber quando dois ou mais clientes estão ligados usando a mesma " +"conta; O cliente com a maior prioridade receberá os eventos" + +#: ../data/glade/account_modification_window.glade.h:32 +msgid "Proxy:" +msgstr "Proxy:" + +#: ../data/glade/account_modification_window.glade.h:33 +msgid "Resour_ce: " +msgstr "Re_curso: " + +#: ../data/glade/account_modification_window.glade.h:34 +msgid "" +"Resource is sent to the Jabber server in order to separate the same JID in " +"two or more parts depending on the number of the clients connected in the " +"same server with the same account. So you might be connected in the same " +"account with resource 'Home' and 'Work' at the same time. The resource which " +"has the highest priority will get the events. (see below)" +msgstr "" +"O recurso é enviado ao servidor jabber para separar o mesmo JID em duas ou " +"mais partes dependentemente do número de clientes ligados ao mesmo servidor " +"com as mesma conta. Por exemplo, pode estar ligado à mesma conta com os " +"recursos 'Casa' e 'Trabalho' ao mesmo tempo. O recurso com a maior " +"prioridade receberá os eventos. (ver em baixo)" + +#: ../data/glade/account_modification_window.glade.h:35 +msgid "Save _passphrase (insecure)" +msgstr "Guardar _frase de acesso (inseguro)" + +#: ../data/glade/account_modification_window.glade.h:36 +msgid "Save conversation _logs for all contacts" +msgstr "Guardar _históricos das conversas para todos os contactos" + +#: ../data/glade/account_modification_window.glade.h:38 +msgid "Send keep-alive packets" +msgstr "Enviar pacotes keep-alive" + +#: ../data/glade/account_modification_window.glade.h:39 +msgid "Synch_ronize account status with global status" +msgstr "Sinc_ronizar estado da conta com estado global" + +#: ../data/glade/account_modification_window.glade.h:40 +msgid "Use _SSL (legacy)" +msgstr "Usar _SSL (específica)" + +#: ../data/glade/account_modification_window.glade.h:41 +msgid "Use custom hostname/port" +msgstr "Usar hostname/porta personalizados" + +#: ../data/glade/account_modification_window.glade.h:42 +#, fuzzy +msgid "Use file transfer proxies" +msgstr "lista de transferências de ficheiros" + +#: ../data/glade/account_modification_window.glade.h:43 +#: ../data/glade/add_new_contact_window.glade.h:6 +msgid "_Jabber ID:" +msgstr "_Jabber ID:" + +#: ../data/glade/account_modification_window.glade.h:44 +msgid "_Name: " +msgstr "_Nome: " + +#: ../data/glade/accounts_window.glade.h:1 +msgid "Accounts" +msgstr "Contas" + +#: ../data/glade/accounts_window.glade.h:2 +msgid "" +"If you have 2 or more accounts and it is checked, Gajim will list all " +"contacts as if you had one account" +msgstr "" +"Se tem duas ou mais contas e esta opção for marcada, o Gajim listará todos " +"os contactos como se tivesse apenas uma conta" + +#: ../data/glade/accounts_window.glade.h:3 +msgid "_Merge accounts" +msgstr "_Fundir contas" + +#: ../data/glade/accounts_window.glade.h:4 +msgid "_Modify" +msgstr "_Modificar" + +#: ../data/glade/accounts_window.glade.h:5 +#: ../data/glade/remove_account_window.glade.h:4 +msgid "_Remove" +msgstr "_Remover" + +#: ../data/glade/add_new_contact_window.glade.h:1 +#, fuzzy +msgid "A_llow this contact to view my status" +msgstr "Permitir que ele/ela veja o meu estado" + +#: ../data/glade/add_new_contact_window.glade.h:2 +msgid "Add New Contact" +msgstr "Adicionar Novo Contacto" + +#: ../data/glade/add_new_contact_window.glade.h:3 +msgid "I would like to add you to my contact list." +msgstr "Gostaria de o adicionar à minha lista de contactos." + +#: ../data/glade/add_new_contact_window.glade.h:4 +#, fuzzy +msgid "_Account:" +msgstr "Conta:" + +#: ../data/glade/add_new_contact_window.glade.h:5 +#, fuzzy +msgid "_Group:" +msgstr "Grupo:" + +#: ../data/glade/add_new_contact_window.glade.h:7 +msgid "_Nickname:" +msgstr "_Alcunha:" + +#: ../data/glade/add_new_contact_window.glade.h:8 +#, fuzzy +msgid "_Protocol:" +msgstr "Protocolo:" + +#: ../data/glade/add_new_contact_window.glade.h:9 +msgid "_Subscribe" +msgstr "_Subscrever" + +#: ../data/glade/add_new_contact_window.glade.h:10 +#, fuzzy +msgid "_User ID:" +msgstr "ID do Utilizador:" + +#: ../data/glade/advanced_configuration_window.glade.h:1 +msgid "Description" +msgstr "Descrição" + +#: ../data/glade/advanced_configuration_window.glade.h:2 +msgid "NOTE: You should restart gajim for some setting to take effect" +msgstr "" + +#: ../data/glade/advanced_configuration_window.glade.h:3 +msgid "Advanced Configuration Editor" +msgstr "Editor de Configuração Avançada" + +#: ../data/glade/advanced_configuration_window.glade.h:4 +msgid "Filter:" +msgstr "Filtro:" + +#: ../data/glade/advanced_menuitem_menu.glade.h:1 +msgid "Delete MOTD" +msgstr "Apagar MOTD" + +#: ../data/glade/advanced_menuitem_menu.glade.h:2 +msgid "Deletes Message of the Day" +msgstr "Apaga a Mensagem do Dia" + +#: ../data/glade/advanced_menuitem_menu.glade.h:3 +msgid "Sends a message to currently connected users to this server" +msgstr "Envia uma mensagem aos utilizadores ligados ao servidor neste momento" + +#: ../data/glade/advanced_menuitem_menu.glade.h:4 +msgid "Set MOTD" +msgstr "Definir MOTD" + +#: ../data/glade/advanced_menuitem_menu.glade.h:5 +msgid "Sets Message of the Day" +msgstr "Define a Mensagem do Dia" + +#: ../data/glade/advanced_menuitem_menu.glade.h:6 +msgid "Show _XML Console" +msgstr "Mostrar Consola _XML" + +#: ../data/glade/advanced_menuitem_menu.glade.h:7 +msgid "Update MOTD" +msgstr "Actualizar MOTD" + +#: ../data/glade/advanced_menuitem_menu.glade.h:8 +msgid "Updates Message of the Day" +msgstr "Actualiza a Mensagem do Dia" + +#: ../data/glade/advanced_menuitem_menu.glade.h:9 +msgid "_Administrator" +msgstr "_Administrador" + +#: ../data/glade/advanced_menuitem_menu.glade.h:10 +msgid "_Privacy Lists" +msgstr "" + +#: ../data/glade/advanced_menuitem_menu.glade.h:11 +msgid "_Send Server Message" +msgstr "E_nviar Mensagem de Servidor" + +#: ../data/glade/advanced_menuitem_menu.glade.h:12 +msgid "_Send Single Message" +msgstr "E_nviar Mensagem Simples" + +#: ../data/glade/advanced_notifications_window.glade.h:1 +msgid " a window/tab opened with that contact " +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:2 +#, fuzzy +msgid "Actions" +msgstr "Aplicações" + +#: ../data/glade/advanced_notifications_window.glade.h:3 +#, fuzzy +msgid "Conditions" +msgstr "Sons" + +#: ../data/glade/advanced_notifications_window.glade.h:4 +#: ../data/glade/preferences_window.glade.h:10 +msgid "Sounds" +msgstr "Sons" + +#: ../data/glade/advanced_notifications_window.glade.h:5 +#, fuzzy +msgid "Add" +msgstr "Endereço" + +#: ../data/glade/advanced_notifications_window.glade.h:6 +#, fuzzy +msgid "Advanced Actions" +msgstr "Acções A_vançadas" + +#: ../data/glade/advanced_notifications_window.glade.h:7 +#, fuzzy +msgid "Advanced Notifications Control" +msgstr "Editor de Configuração Avançada" + +#: ../data/glade/advanced_notifications_window.glade.h:8 +#, fuzzy +msgid "All Status " +msgstr "Estado: " + +#: ../data/glade/advanced_notifications_window.glade.h:9 +msgid "And I " +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:10 +#, fuzzy +msgid "Away " +msgstr "Ausente" + +#: ../data/glade/advanced_notifications_window.glade.h:11 +#, fuzzy +msgid "Busy " +msgstr "Ocupado" + +#: ../data/glade/advanced_notifications_window.glade.h:12 +msgid "Don't have " +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:13 +#, fuzzy +msgid "Down" +msgstr "Download" + +#: ../data/glade/advanced_notifications_window.glade.h:14 +msgid "Have " +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:15 +#: ../src/common/helpers.py:239 +msgid "Invisible" +msgstr "Invisível" + +#: ../data/glade/advanced_notifications_window.glade.h:16 +#, fuzzy +msgid "Launch a command" +msgstr "comando" + +#: ../data/glade/advanced_notifications_window.glade.h:17 +#, fuzzy +msgid "List of special notifications settings" +msgstr "Notificações Visuais" + +#: ../data/glade/advanced_notifications_window.glade.h:18 +#, fuzzy +msgid "Not Available " +msgstr "Indisponível" + +#: ../data/glade/advanced_notifications_window.glade.h:19 +#, fuzzy +msgid "Online / Free For Chat" +msgstr "Livre para conversar" + +#: ../data/glade/advanced_notifications_window.glade.h:20 +#, fuzzy +msgid "Play a sound" +msgstr "Tocar _Sons" + +#: ../data/glade/advanced_notifications_window.glade.h:21 +msgid "" +"Receive a Message\n" +"Contact Connected\n" +"Contact Disconnected\n" +"Contact Change Status\n" +"Group Chat Message Highlight\n" +"Group Chat Message Received\n" +"File Transfert Resquest\n" +"File Transfert Started\n" +"File Transfert Finished" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:30 +msgid "Some special(s) status..." +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:31 +msgid "Up" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:32 +msgid "When " +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:33 +msgid "_Activate Windows manager UrgencyHint to make chat taskbar to flash" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:34 +#, fuzzy +msgid "_Disable auto opening chat window" +msgstr "Perguntar antes de fechar uma janela/aba de chat." + +#: ../data/glade/advanced_notifications_window.glade.h:35 +msgid "_Disable existing popup window" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:36 +msgid "_Disable existing sound for this event" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:37 +msgid "_Disable showing event in roster" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:38 +msgid "_Disable showing event in systray" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:39 +msgid "_Inform me with a popup window" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:40 +#, fuzzy +msgid "_Open chat window with user" +msgstr "Usar uma única janela de conversa com _abas" + +#: ../data/glade/advanced_notifications_window.glade.h:41 +#, fuzzy +msgid "_Show event in roster" +msgstr "Mostrar apenas na _lista" + +#: ../data/glade/advanced_notifications_window.glade.h:42 +#, fuzzy +msgid "_Show event in systray" +msgstr "Mostrar apenas na _lista" + +#: ../data/glade/advanced_notifications_window.glade.h:43 +msgid "" +"contact(s)\n" +"group(s)\n" +"everybody" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:46 +#, fuzzy +msgid "for " +msgstr "Porta:" + +#: ../data/glade/advanced_notifications_window.glade.h:47 +msgid "when I'm " +msgstr "" + +#: ../data/glade/change_password_dialog.glade.h:1 +msgid "Change Password" +msgstr "Mudar Senha" + +#: ../data/glade/change_password_dialog.glade.h:2 +msgid "Enter it again for confirmation:" +msgstr "Introduza novamente para confirmação" + +#: ../data/glade/change_password_dialog.glade.h:3 +msgid "Enter new password:" +msgstr "Introduza a nova senha:" + +#: ../data/glade/change_status_message_dialog.glade.h:1 +#, fuzzy +msgid "Type your new status message" +msgstr "Escreva a sua nova mensagem de estado:" + +#: ../data/glade/change_status_message_dialog.glade.h:2 +#, fuzzy +msgid "Preset messages:" +msgstr "mensagem de estado:" + +#: ../data/glade/change_status_message_dialog.glade.h:3 +#, fuzzy +msgid "Save as Preset..." +msgstr "Guardar Ficheiro como..." + +#: ../data/glade/chat_context_menu.glade.h:1 +msgid "Join _Group Chat" +msgstr "_Entrar num Chat" + +#: ../data/glade/chat_context_menu.glade.h:2 +#: ../data/glade/chat_control_popup_menu.glade.h:4 +#: ../data/glade/gc_occupants_menu.glade.h:2 +#: ../data/glade/roster_contact_context_menu.glade.h:8 +msgid "_Add to Roster" +msgstr "_Adicionar à Lista" + +#: ../data/glade/chat_context_menu.glade.h:3 +msgid "_Copy JID/Email Address" +msgstr "_Copiar JID/Endereço de Email" + +#: ../data/glade/chat_context_menu.glade.h:4 +msgid "_Copy Link Location" +msgstr "_Copiar Localização do Link" + +#: ../data/glade/chat_context_menu.glade.h:5 +msgid "_Open Email Composer" +msgstr "_Abrir Compositor de Email" + +#: ../data/glade/chat_context_menu.glade.h:6 +msgid "_Open Link in Browser" +msgstr "_Abrir Link no Navegador" + +#: ../data/glade/chat_context_menu.glade.h:7 +#: ../data/glade/roster_window.glade.h:19 +#: ../data/glade/systray_context_menu.glade.h:6 +msgid "_Start Chat" +msgstr "_Iniciar Conversa" + +#: ../data/glade/chat_control_popup_menu.glade.h:1 +msgid "Click to see past conversations with this contact" +msgstr "Clique para ver conversas anteriores com este contacto" + +#: ../data/glade/chat_control_popup_menu.glade.h:2 +#: ../data/glade/roster_contact_context_menu.glade.h:6 +msgid "Send _File" +msgstr "Enviar _Ficheiro" + +#: ../data/glade/chat_control_popup_menu.glade.h:3 +msgid "Toggle Open_PGP Encryption" +msgstr "Activar/Desactivar Encriptação Open_PGP" + +#: ../data/glade/chat_control_popup_menu.glade.h:5 +#: ../data/glade/gc_control_popup_menu.glade.h:6 +msgid "_Compact View Alt+C" +msgstr "Vista _Compacta Alt+C" + +#: ../data/glade/chat_control_popup_menu.glade.h:6 +#: ../data/glade/gc_control_popup_menu.glade.h:7 +#: ../data/glade/gc_occupants_menu.glade.h:5 +#: ../data/glade/roster_contact_context_menu.glade.h:11 +msgid "_History" +msgstr "_Histórico" + +#: ../data/glade/data_form_window.glade.h:1 +msgid "Room Configuration" +msgstr "Configuração da Sala" + +#: ../data/glade/edit_groups_dialog.glade.h:1 +msgid "Edit Groups" +msgstr "Editar Grupos" + +#: ../data/glade/filetransfers.glade.h:1 +msgid "A list of active, completed and stopped file transfers" +msgstr "Uma lista de transferências de ficheiros activas, completas e paradas" + +#: ../data/glade/filetransfers.glade.h:2 +msgid "Cancel file transfer" +msgstr "Cancelar transferência de ficheiro" + +#: ../data/glade/filetransfers.glade.h:3 +msgid "Cancels the selected file transfer" +msgstr "Cancela a transferência de ficheiro seleccionada" + +#: ../data/glade/filetransfers.glade.h:4 +msgid "Cancels the selected file transfer and removes incomplete file" +msgstr "" +"Cancela a transferência de ficheiro seleccionada e remove o ficheiro " +"incompleto" + +#: ../data/glade/filetransfers.glade.h:5 +msgid "Clean _up" +msgstr "_Limpar" + +#: ../data/glade/filetransfers.glade.h:6 +msgid "File Transfers" +msgstr "Transferências de Ficheiros" + +#: ../data/glade/filetransfers.glade.h:7 +msgid "Hides the window" +msgstr "Esconde a janela" + +#: ../data/glade/filetransfers.glade.h:8 +msgid "Remove file transfer from the list." +msgstr "Remover a transferência de ficheiro da lista." + +#: ../data/glade/filetransfers.glade.h:9 +msgid "Removes completed, canceled and failed file transfers from the list" +msgstr "" +"Remove transferências de ficheiros completas, canceladas e falhadas da lista" + +#: ../data/glade/filetransfers.glade.h:10 +msgid "Shows a list of file transfers between you and other" +msgstr "" +"Mostra uma lista de transferências de ficheiros entre si e outras pessoas" + +#: ../data/glade/filetransfers.glade.h:11 +msgid "" +"This action removes single file transfer from the list. If the transfer is " +"active, it is first stopped and then removed" +msgstr "" +"Esta acção remove uma única transferência de ficheiro da lista. Se a " +"transferência estiver activa, será primeiro interrompida e depois removida." + +#: ../data/glade/filetransfers.glade.h:12 +msgid "When a file transfer is complete show a popup notification" +msgstr "" +"Quando uma transferência de ficheiro é concluida, exibir um popup de " +"notificação" + +#: ../data/glade/filetransfers.glade.h:13 ../src/filetransfers_window.py:753 +msgid "_Continue" +msgstr "_Continuar" + +#: ../data/glade/filetransfers.glade.h:14 +msgid "_Notify me when a file transfer is complete" +msgstr "_Notificar-me quando uma transferência de ficheiro estiver completa" + +#: ../data/glade/filetransfers.glade.h:15 ../src/filetransfers_window.py:190 +msgid "_Open Containing Folder" +msgstr "_Abrir Pasta" + +#: ../data/glade/filetransfers.glade.h:16 +msgid "_Pause" +msgstr "_Pausa" + +#: ../data/glade/filetransfers.glade.h:17 +msgid "file transfers list" +msgstr "lista de transferências de ficheiros" + +#: ../data/glade/gajim_themes_window.glade.h:1 +msgid "Chatstate Tab Colors" +msgstr "" + +#: ../data/glade/gajim_themes_window.glade.h:2 +msgid "" +"Account\n" +"Group\n" +"Contact\n" +"Banner" +msgstr "" +"Count\n" +"Grupo\n" +"Contacto\n" +"Banner" + +#: ../data/glade/gajim_themes_window.glade.h:6 +#: ../data/glade/privacy_list_edit_window.glade.h:4 ../src/config.py:326 +msgid "Active" +msgstr "Activo" + +#: ../data/glade/gajim_themes_window.glade.h:7 +msgid "Bold" +msgstr "Negrito" + +#: ../data/glade/gajim_themes_window.glade.h:8 +msgid "Composing" +msgstr "" + +#: ../data/glade/gajim_themes_window.glade.h:9 +msgid "Font style:" +msgstr "Estilo da letra:" + +#: ../data/glade/gajim_themes_window.glade.h:10 +msgid "Gajim Themes Customization" +msgstr "Personalização de Temas do Gajim" + +#: ../data/glade/gajim_themes_window.glade.h:11 +#, fuzzy +msgid "Gone" +msgstr "Nenhum" + +#: ../data/glade/gajim_themes_window.glade.h:12 +#, fuzzy +msgid "Inactive" +msgstr "Activo" + +#: ../data/glade/gajim_themes_window.glade.h:13 +msgid "Italic" +msgstr "Itálico" + +#: ../data/glade/gajim_themes_window.glade.h:14 +#, fuzzy +msgid "" +"MUC\n" +"Messages" +msgstr "Mensagem" + +#: ../data/glade/gajim_themes_window.glade.h:16 +msgid "" +"MUC Directed\n" +"Messages" +msgstr "" + +#: ../data/glade/gajim_themes_window.glade.h:18 ../src/tooltips.py:667 +msgid "Paused" +msgstr "Pausada" + +#: ../data/glade/gajim_themes_window.glade.h:19 +msgid "Text _color:" +msgstr "_Cor do texto" + +#: ../data/glade/gajim_themes_window.glade.h:20 +msgid "Text _font:" +msgstr "_Letra do texto" + +#: ../data/glade/gajim_themes_window.glade.h:21 +msgid "_Background:" +msgstr "Cor _de fundo" + +#: ../data/glade/gc_control_popup_menu.glade.h:1 +msgid "Change _Nickname" +msgstr "Muda Alcu_nha" + +#: ../data/glade/gc_control_popup_menu.glade.h:2 +msgid "Change _Subject" +msgstr "Muda A_ssunto" + +#: ../data/glade/gc_control_popup_menu.glade.h:3 +msgid "Click to see past conversation in this room" +msgstr "Clique para ver conversas anteriores nesta sala" + +#: ../data/glade/gc_control_popup_menu.glade.h:4 +msgid "Configure _Room" +msgstr "Configurar _Sala" + +#: ../data/glade/gc_control_popup_menu.glade.h:5 +msgid "_Bookmark This Room" +msgstr "Adicionar esta Sala aos _Bookmarks" + +#: ../data/glade/gc_occupants_menu.glade.h:1 +msgid "Mo_derator" +msgstr "Mo_derador" + +#: ../data/glade/gc_occupants_menu.glade.h:3 +msgid "_Admin" +msgstr "_Admin" + +#: ../data/glade/gc_occupants_menu.glade.h:4 +msgid "_Ban" +msgstr "_Banir" + +#: ../data/glade/gc_occupants_menu.glade.h:6 +msgid "_Kick" +msgstr "_Expulsar" + +#: ../data/glade/gc_occupants_menu.glade.h:7 +msgid "_Member" +msgstr "_Membro" + +#: ../data/glade/gc_occupants_menu.glade.h:8 +msgid "_Occupant Actions" +msgstr "Acções de _Ocupantes" + +#: ../data/glade/gc_occupants_menu.glade.h:9 +msgid "_Owner" +msgstr "_Dono" + +#: ../data/glade/gc_occupants_menu.glade.h:10 +msgid "_Send Private Message" +msgstr "E_nviar Mensagem Privada" + +#: ../data/glade/gc_occupants_menu.glade.h:11 +msgid "_Voice" +msgstr "_Voz" + +#: ../data/glade/history_manager.glade.h:1 +msgid "" +"Welcome to Gajim History Logs Manager\n" +"\n" +"You can select logs from the left and/or search database from below.\n" +"\n" +"WARNING:\n" +"If you plan to do massive deletions, please make sure Gajim is not running. " +"Generally avoid deletions with contacts you currently chat with." +msgstr "" + +#: ../data/glade/history_manager.glade.h:7 +#, fuzzy +msgid "Delete" +msgstr "Apagar MOTD" + +#: ../data/glade/history_manager.glade.h:8 +msgid "Export" +msgstr "" + +#: ../data/glade/history_manager.glade.h:9 +msgid "Gajim History Logs Manager" +msgstr "" + +#: ../data/glade/history_manager.glade.h:10 +#, fuzzy +msgid "_Search Database" +msgstr "_Pesquisar" + +#: ../data/glade/history_window.glade.h:1 +msgid "Build custom query" +msgstr "Build custom query" + +#: ../data/glade/history_window.glade.h:2 +msgid "Conversation History" +msgstr "Histórico das Conversas" + +#: ../data/glade/history_window.glade.h:3 +msgid "Query Builder..." +msgstr "Query Builder..." + +#: ../data/glade/history_window.glade.h:4 +#, fuzzy +msgid "Search" +msgstr "_Pesquisar" + +#: ../data/glade/history_window.glade.h:5 +msgid "_Search" +msgstr "_Pesquisar" + +#: ../data/glade/invitation_received_dialog.glade.h:1 +msgid "Accept" +msgstr "Aceitar" + +#: ../data/glade/invitation_received_dialog.glade.h:2 +#: ../data/glade/privacy_list_edit_window.glade.h:8 +msgid "Deny" +msgstr "Negar" + +#: ../data/glade/invitation_received_dialog.glade.h:3 +msgid "Invitation Received" +msgstr "Convite Recebido" + +#: ../data/glade/join_groupchat_window.glade.h:1 ../src/dialogs.py:941 +msgid "Join Group Chat" +msgstr "Entrar num Chat" + +#: ../data/glade/join_groupchat_window.glade.h:2 +#: ../data/glade/manage_bookmarks_window.glade.h:4 +#: ../data/glade/vcard_information_window.glade.h:28 +msgid "Nickname:" +msgstr "Alcunha:" + +#: ../data/glade/join_groupchat_window.glade.h:3 +#: ../data/glade/manage_bookmarks_window.glade.h:5 +msgid "Password:" +msgstr "Senha:" + +#: ../data/glade/join_groupchat_window.glade.h:4 +msgid "Recently:" +msgstr "Recentemente:" + +#: ../data/glade/join_groupchat_window.glade.h:5 +#: ../data/glade/manage_bookmarks_window.glade.h:7 +msgid "Room:" +msgstr "Sala:" + +#: ../data/glade/join_groupchat_window.glade.h:6 +#: ../data/glade/manage_bookmarks_window.glade.h:8 +msgid "Server:" +msgstr "Servidor:" + +#: ../data/glade/join_groupchat_window.glade.h:7 ../src/disco.py:1145 +#: ../src/disco.py:1507 +msgid "_Join" +msgstr "_Entrar" + +#: ../data/glade/manage_accounts_window.glade.h:1 +msgid "Manage Accounts" +msgstr "Gerir Contas" + +#: ../data/glade/manage_bookmarks_window.glade.h:1 +msgid "Auto join" +msgstr "Entrar automaticamente" + +#: ../data/glade/manage_bookmarks_window.glade.h:2 +msgid "If checked, Gajim will join this group chat on startup" +msgstr "Se marcado, o Gajim juntar-se-á a este chat no arranque" + +#: ../data/glade/manage_bookmarks_window.glade.h:3 +msgid "Manage Bookmarks" +msgstr "Gerir Bookmarks" + +#: ../data/glade/manage_bookmarks_window.glade.h:6 +#, fuzzy +msgid "Print status:" +msgstr "Mostrar hora:" + +#: ../data/glade/manage_bookmarks_window.glade.h:9 +msgid "Title:" +msgstr "Título:" + +#: ../data/glade/manage_proxies_window.glade.h:1 +msgid "Properties" +msgstr "Propriedades" + +#: ../data/glade/manage_proxies_window.glade.h:2 +msgid "Settings" +msgstr "Definições" + +#: ../data/glade/manage_proxies_window.glade.h:3 +msgid "HTTP Connect" +msgstr "Ligação HTTP" + +#: ../data/glade/manage_proxies_window.glade.h:4 +msgid "Manage Proxy Profiles" +msgstr "Gerir Perfis de Proxy" + +#: ../data/glade/manage_proxies_window.glade.h:5 +#: ../data/glade/vcard_information_window.glade.h:27 +msgid "Name:" +msgstr "Nome:" + +#: ../data/glade/manage_proxies_window.glade.h:7 +msgid "Type:" +msgstr "Tipo:" + +#: ../data/glade/manage_proxies_window.glade.h:8 +msgid "Use authentication" +msgstr "Usar autenticação" + +#: ../data/glade/message_window.glade.h:1 +#, fuzzy +msgid "Click to insert an emoticon (Alt+M)" +msgstr "Clique para inserir um emoticon (Alt+E)" + +#: ../data/glade/message_window.glade.h:2 ../src/chat_control.py:966 +msgid "OpenPGP Encryption" +msgstr "Encriptação OpenPGP" + +#. Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector) +#: ../data/glade/message_window.glade.h:4 +#: ../data/glade/roster_window.glade.h:9 +msgid "_Actions" +msgstr "_Acções" + +#. Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector) +#: ../data/glade/message_window.glade.h:6 +#: ../data/glade/xml_console_window.glade.h:11 +#: ../src/filetransfers_window.py:249 +msgid "_Send" +msgstr "E_nviar" + +#: ../data/glade/passphrase_dialog.glade.h:1 +msgid "Passphrase" +msgstr "Frase de acesso" + +#: ../data/glade/preferences_window.glade.h:1 +msgid "Advanced Configuration Editor" +msgstr "Editor de Configuração Avançada" + +#: ../data/glade/preferences_window.glade.h:2 +msgid "Applications" +msgstr "Aplicações" + +#. a header for custom browser/client/file manager. so translate sth like: Custom Settings +#: ../data/glade/preferences_window.glade.h:4 +msgid "Custom" +msgstr "Definições Personalizadas" + +#: ../data/glade/preferences_window.glade.h:5 +msgid "Format of a line" +msgstr "Formato de uma linha" + +#: ../data/glade/preferences_window.glade.h:6 +#, fuzzy +msgid "GMail Options" +msgstr "Aplicações" + +#: ../data/glade/preferences_window.glade.h:7 +msgid "Interface Customization" +msgstr "Personalização da Interface" + +#: ../data/glade/preferences_window.glade.h:9 +msgid "Preset Status Messages" +msgstr "Configurar Mensagens de Estado" + +#: ../data/glade/preferences_window.glade.h:11 +msgid "Visual Notifications" +msgstr "Notificações Visuais" + +#: ../data/glade/preferences_window.glade.h:12 +#, fuzzy +msgid "A_fter nickname:" +msgstr "Depois da alcunha:" + +#: ../data/glade/preferences_window.glade.h:13 +msgid "Advanced" +msgstr "Avançado" + +#: ../data/glade/preferences_window.glade.h:14 +msgid "" +"All chat states\n" +"Composing only\n" +"Disabled" +msgstr "" +"Todos os estados da conversa\n" +"Apenas compondo uma mensagem\n" +"Desactivado" + +#: ../data/glade/preferences_window.glade.h:17 +msgid "Allow _OS information to be sent" +msgstr "Permitir o envio de informações do _SO " + +#: ../data/glade/preferences_window.glade.h:18 +msgid "Allow popup/notifications when I'm _away/na/busy/invisible" +msgstr "" +"Permitir popup/notificações quando estou _ausente/indisponível/ocupado/" +"invisível" + +#: ../data/glade/preferences_window.glade.h:19 +msgid "Also known as iChat style" +msgstr "Conhecido também como estilo iChat" + +#: ../data/glade/preferences_window.glade.h:20 +msgid "Ask status message when I:" +msgstr "Pedir a mensagem de estado quando eu me: " + +#: ../data/glade/preferences_window.glade.h:21 +msgid "Auto _away after:" +msgstr "Marcar automaticamente como _ausente depois de:" + +#: ../data/glade/preferences_window.glade.h:22 +msgid "Auto _not available after:" +msgstr "Marcar automaticamente como _indisponível depois de:" + +#: ../data/glade/preferences_window.glade.h:23 +msgid "" +"Autodetect on every Gajim startup\n" +"Always use GNOME default applications\n" +"Always use KDE default applications\n" +"Custom" +msgstr "" +"Auto-detectar a cada arranque da aplicação\n" +"Usar sempre aplicações GNOME padrão\n" +"Usar sempre aplicações KDE padrão\n" +"Personalizar" + +#: ../data/glade/preferences_window.glade.h:27 +#, fuzzy +msgid "B_efore nickname:" +msgstr "Antes da alcunha:" + +#: ../data/glade/preferences_window.glade.h:28 ../src/chat_control.py:718 +msgid "Chat" +msgstr "Conversa" + +#: ../data/glade/preferences_window.glade.h:29 +msgid "Chat state noti_fications:" +msgstr "Noti_ficação do estado da conversa:" + +#: ../data/glade/preferences_window.glade.h:30 +msgid "" +"Check this option, only if someone you don't have in the roster spams/annoys " +"you. Use with caution, cause it blocks all messages from any contact that is " +"not in the roster" +msgstr "" +"Marque esta opção apenas se alguem que não está na sua lista o estiver a " +"spammar/incomodar. Use com precaução, pois isto bloqueia todas as mensagens " +"de qualquer contacto que não estiver na sua lista." + +#: ../data/glade/preferences_window.glade.h:31 +#, fuzzy +msgid "Default status _iconset:" +msgstr "Iconset de _estados padrão:" + +#: ../data/glade/preferences_window.glade.h:32 +msgid "Display _extra email details" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:33 +#, fuzzy +msgid "Display a_vatars of contacts in roster" +msgstr "Exibir imagens pessoais (avatars) dos contactos na lista" + +#: ../data/glade/preferences_window.glade.h:34 +#, fuzzy +msgid "Display status _messages of contacts in roster" +msgstr "Exibir mensagens de estado dos contactos na lista" + +#: ../data/glade/preferences_window.glade.h:35 +#, fuzzy +msgid "E_very 5 minutes" +msgstr "De 5 em 5 _minutos" + +#: ../data/glade/preferences_window.glade.h:36 +#, fuzzy +msgid "Emoticons:" +msgstr "Gerir Emoticons" + +#: ../data/glade/preferences_window.glade.h:37 +msgid "Events" +msgstr "Eventos" + +#: ../data/glade/preferences_window.glade.h:38 +#, fuzzy +msgid "" +"Gajim can send and receive meta-information related to a conversation you " +"may have with a contact. Here you can specify which chatstates you want to " +"send to the other party." +msgstr "" +"Gajim pode enviar e receber meta-informação relativa a uma conversa que " +"esteja a ter com um contacto " + +#: ../data/glade/preferences_window.glade.h:39 +#, fuzzy +msgid "" +"Gajim will automatically show new events by poping up the relative window" +msgstr "" +"Gajim exibirá automaticamente a nova mensagem recebida numa nova janela de " +"conversa ou numa aba numa janela existente" + +#: ../data/glade/preferences_window.glade.h:40 +#, fuzzy +msgid "" +"Gajim will notify you for new events via a popup in the bottom right of the " +"screen" +msgstr "" +"Gajim o notificará a cada nova mensagem através de um popup no canto " +"inferior direito do ecrã" + +#: ../data/glade/preferences_window.glade.h:41 +msgid "" +"Gajim will notify you via a popup window in the bottom right of the screen " +"about contacts that just signed in" +msgstr "" +"Gajim o notificará através de um popup no canto inferior direito do ecrã " +"sobre os contactos que se ligarem" + +#: ../data/glade/preferences_window.glade.h:42 +msgid "" +"Gajim will notify you via a popup window in the bottom right of the screen " +"about contacts that just signed out" +msgstr "" +"Gajim o notificará através de um popup no canto inferior direito do ecrã " +"sobre os contactos que se desligarem" + +#: ../data/glade/preferences_window.glade.h:43 +#, fuzzy +msgid "" +"Gajim will only change the icon of the contact that triggered the new event" +msgstr "Gajim mudará apenas o ícone do contacto que enviou a nova mensagem" + +#: ../data/glade/preferences_window.glade.h:45 +#, fuzzy +msgid "" +"If checked, Gajim will display avatars of contacts in roster window and in " +"group chats" +msgstr "" +"Se marcado, Gajim exibirá imagens pessoais (avatars) dos seus contactos na " +"lista" + +#: ../data/glade/preferences_window.glade.h:46 +#, fuzzy +msgid "" +"If checked, Gajim will display status messages of contacts under the contact " +"name in roster window and in group chats" +msgstr "" +"Se marcado, Gajim exibirá as mensagens de estado dos contactos debaixo dos " +"nomes de cada um na janela principal" + +#: ../data/glade/preferences_window.glade.h:47 +msgid "" +"If checked, Gajim will remember the roster and chat window positions in the " +"screen and the sizes of them next time you run it" +msgstr "" +"Se marcado, o Gajim lembrar-se-á da posição da janela principal na próxima " +"vez que for executado" + +#: ../data/glade/preferences_window.glade.h:48 +msgid "" +"If checked, Gajim will use protocol-specific status icons. (eg. A contact " +"from MSN will have the equivalent msn icon for status online, away, busy, " +"etc...)" +msgstr "" +"Se marcado, o Gajim usará ícones de estado específicos a cada protocolo. " +"(Por exemplo, um contacto do MSN terá o ícone msn equivalente para o estado " +"disponível, ausente, ocupado, etc...)" + +#: ../data/glade/preferences_window.glade.h:49 +#, fuzzy +msgid "" +"If not disabled, Gajim will replace ascii smilies like ':)' with equivalent " +"animated or static graphical emoticons" +msgstr "" +"Se marcado, o Gajim trocará smilies ASCII tais como ':)' pelos emoticons " +"gráficos equivalentes." + +#: ../data/glade/preferences_window.glade.h:50 +#, fuzzy +msgid "Ma_nage..." +msgstr "Gerir..." + +#: ../data/glade/preferences_window.glade.h:51 +msgid "" +"Never\n" +"Always\n" +"Per account\n" +"Per type" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:55 +msgid "Notify me about contacts that: " +msgstr "Notificar-me sobre contactos que acabem de se: " + +#: ../data/glade/preferences_window.glade.h:56 +msgid "Notify on new _GMail email" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:57 +msgid "On every _message" +msgstr "Em todas as _mensagens" + +#: ../data/glade/preferences_window.glade.h:58 +#, fuzzy +msgid "One message _window:" +msgstr "Enviar mensagem e fechar a janela" + +#: ../data/glade/preferences_window.glade.h:59 +msgid "Play _sounds" +msgstr "Tocar _Sons" + +#: ../data/glade/preferences_window.glade.h:60 +msgid "Preferences" +msgstr "Preferências" + +#: ../data/glade/preferences_window.glade.h:61 +msgid "Print time:" +msgstr "Mostrar hora:" + +#: ../data/glade/preferences_window.glade.h:62 +msgid "Save _position and size for roster and chat windows" +msgstr "" +"Guardar _posição e tamanho das janelas de conversa e lista de contactos" + +#: ../data/glade/preferences_window.glade.h:63 +msgid "Show only in _roster" +msgstr "Mostrar apenas na _lista" + +#: ../data/glade/preferences_window.glade.h:64 +msgid "Sign _in" +msgstr "_Ligar" + +#: ../data/glade/preferences_window.glade.h:65 +msgid "Sign _out" +msgstr "_Desligar" + +#: ../data/glade/preferences_window.glade.h:66 +msgid "Status" +msgstr "Estado" + +#: ../data/glade/preferences_window.glade.h:67 +#, fuzzy +msgid "T_heme:" +msgstr "Tema:" + +#: ../data/glade/preferences_window.glade.h:68 +msgid "The auto away status message" +msgstr "A mensagem de estado auto-ausente" + +#: ../data/glade/preferences_window.glade.h:69 +msgid "The auto not available status message" +msgstr "A mensagem de estado auto-indisponível" + +#: ../data/glade/preferences_window.glade.h:70 +msgid "Use _transports iconsets" +msgstr "Usar iconsets de _transportes" + +#: ../data/glade/preferences_window.glade.h:71 +msgid "Use system _default" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:72 +#, fuzzy +msgid "Use t_rayicon (aka. notification area icon)" +msgstr "_Ãcone na bandeja (também conhecido por área de notificação)" + +#: ../data/glade/preferences_window.glade.h:73 +#, fuzzy +msgid "" +"When a new event (message, file transfer request etc..) is received, the " +"following methods may be used to inform you about it. Please note that " +"events about new messages only occur if it is a new message from a contact " +"you are not already chatting with" +msgstr "" +"Quando um novo evento (mensagem, pedido de transferência de ficheiro, " +"etc...) é recebido, os métodos seguintes poderão ser usados para o informar. " +"NOTA: Eventos de nova mensagem recebida só ocorrem se for uma nova mensagem " +"de um contacto com quem ainda não estiver a conversar." + +#: ../data/glade/preferences_window.glade.h:74 +msgid "When new event is received" +msgstr "Quando um novo evento é recebido" + +#: ../data/glade/preferences_window.glade.h:75 +#, fuzzy +msgid "_Advanced Notifications Control..." +msgstr "Editor de Configuração Avançada" + +#: ../data/glade/preferences_window.glade.h:76 +#, fuzzy +msgid "_After time:" +msgstr "Depois da hora:" + +#: ../data/glade/preferences_window.glade.h:77 +#, fuzzy +msgid "_Before time:" +msgstr "Antes da hora:" + +#: ../data/glade/preferences_window.glade.h:78 +msgid "_Browser:" +msgstr "_Navegador:" + +#: ../data/glade/preferences_window.glade.h:79 +#, fuzzy +msgid "_File manager:" +msgstr "Gestor de ficheiros:" + +#: ../data/glade/preferences_window.glade.h:80 +#, fuzzy +msgid "_Font:" +msgstr "Letra:" + +#: ../data/glade/preferences_window.glade.h:81 +msgid "_Highlight misspelled words" +msgstr "_Destacar palavras mal soletradas" + +#: ../data/glade/preferences_window.glade.h:82 +msgid "_Ignore events from contacts not in the roster" +msgstr "_Ignorar eventos de contactos que não estão na lista" + +#: ../data/glade/preferences_window.glade.h:83 +#, fuzzy +msgid "_Incoming message:" +msgstr "Mensagem recebida:" + +#: ../data/glade/preferences_window.glade.h:84 +msgid "_Log status changes of contacts" +msgstr "_Arquivar mudanças de estado dos contactos" + +#: ../data/glade/preferences_window.glade.h:85 +msgid "_Mail client:" +msgstr "Cliente de e_mail:" + +#: ../data/glade/preferences_window.glade.h:86 +msgid "_Never" +msgstr "_Nunca" + +#: ../data/glade/preferences_window.glade.h:87 +msgid "_Notify me about it" +msgstr "_Notificar-me" + +#: ../data/glade/preferences_window.glade.h:88 +#, fuzzy +msgid "_Open..." +msgstr "Abrir..." + +#: ../data/glade/preferences_window.glade.h:89 +#, fuzzy +msgid "_Outgoing message:" +msgstr "Mensagem a enviar:" + +#: ../data/glade/preferences_window.glade.h:90 +msgid "_Player:" +msgstr "_Tocador de som:" + +#: ../data/glade/preferences_window.glade.h:91 +msgid "_Pop it up" +msgstr "_Mostrar a mensagem como pop-up" + +#: ../data/glade/preferences_window.glade.h:92 +#, fuzzy +msgid "_Reset to Default Colors" +msgstr "Voltar às Cores Padrão" + +#: ../data/glade/preferences_window.glade.h:93 +#, fuzzy +msgid "_Sort contacts by status" +msgstr "Ordenar contactos por estados" + +#: ../data/glade/preferences_window.glade.h:94 +#, fuzzy +msgid "_Status message:" +msgstr "Mensagem de estado:" + +#: ../data/glade/preferences_window.glade.h:95 +msgid "_URL:" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:96 +msgid "minutes" +msgstr "minutos" + +#: ../data/glade/privacy_list_edit_window.glade.h:1 +msgid "Add / Edit a rule" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:2 +#, fuzzy +msgid "List of rules" +msgstr "Formato de uma linha" + +#: ../data/glade/privacy_list_edit_window.glade.h:3 +msgid "Privacy List" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:5 ../src/config.py:2281 +msgid "All" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:6 +msgid "Allow" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:7 +#, fuzzy +msgid "Default" +msgstr "Apagar MOTD" + +#: ../data/glade/privacy_list_edit_window.glade.h:9 +#, fuzzy +msgid "JabberID" +msgstr "Jabber ID:" + +#: ../data/glade/privacy_list_edit_window.glade.h:10 +#, fuzzy +msgid "Order:" +msgstr "Servidor:" + +#: ../data/glade/privacy_list_edit_window.glade.h:11 ../src/dialogs.py:1626 +msgid "Privacy List" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:12 +#, fuzzy +msgid "all by subscription" +msgstr "_Subscrição" + +#: ../data/glade/privacy_list_edit_window.glade.h:13 +#, fuzzy +msgid "all in the group" +msgstr "Neste grupo" + +#: ../data/glade/privacy_list_edit_window.glade.h:14 +msgid "" +"none\n" +"both\n" +"from\n" +"to" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:18 +#, fuzzy +msgid "to send me messages" +msgstr "Enviar mensagem" + +#: ../data/glade/privacy_list_edit_window.glade.h:19 +msgid "to send me queries" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:20 +#, fuzzy +msgid "to send me status" +msgstr "Pedir para ver o estado dele/dela" + +#: ../data/glade/privacy_list_edit_window.glade.h:21 +#, fuzzy +msgid "to view my status" +msgstr "Permitir que ele/ela veja o meu estado" + +#: ../data/glade/privacy_lists_first_window.glade.h:1 +msgid "Create your own Privacy Lists" +msgstr "" + +#: ../data/glade/privacy_lists_first_window.glade.h:2 +msgid "Server-based Privacy Lists" +msgstr "" + +#: ../data/glade/remove_account_window.glade.h:1 +msgid "What do you want to do?" +msgstr "O que pretende fazer?" + +#: ../data/glade/remove_account_window.glade.h:2 +msgid "Remove account _only from Gajim" +msgstr "Remover conta _apenas do Gajim" + +#: ../data/glade/remove_account_window.glade.h:3 +msgid "Remove account from Gajim and from _server" +msgstr "Remover conta do Gajim e do _servidor" + +#: ../data/glade/roster_contact_context_menu.glade.h:1 +#, fuzzy +msgid "A_sk to see his/her status" +msgstr "Pedir para ver o estado dele/dela" + +#: ../data/glade/roster_contact_context_menu.glade.h:2 +#, fuzzy +msgid "Add Special _Notification" +msgstr "Notificações Visuais" + +#: ../data/glade/roster_contact_context_menu.glade.h:3 +msgid "Assign Open_PGP Key" +msgstr "Atribuir chave OpenPGP" + +#: ../data/glade/roster_contact_context_menu.glade.h:4 +msgid "Edit _Groups" +msgstr "Editar _Grupos" + +#: ../data/glade/roster_contact_context_menu.glade.h:5 +#: ../data/glade/systray_context_menu.glade.h:1 +msgid "Send Single _Message" +msgstr "Enviar _Mensagem Simples" + +#: ../data/glade/roster_contact_context_menu.glade.h:7 +msgid "Start _Chat" +msgstr "Iniciar _Conversa" + +#: ../data/glade/roster_contact_context_menu.glade.h:9 +#, fuzzy +msgid "_Allow him/her to see my status" +msgstr "Permitir que ele/ela veja o meu estado" + +#: ../data/glade/roster_contact_context_menu.glade.h:10 +#, fuzzy +msgid "_Forbid him/her to see my status" +msgstr "Proibí-lo /-la de ver o meu estado" + +#: ../data/glade/roster_contact_context_menu.glade.h:12 +#: ../src/roster_window.py:1482 +msgid "_Remove from Roster" +msgstr "_Remover da Lista" + +#: ../data/glade/roster_contact_context_menu.glade.h:13 +#: ../src/roster_window.py:1470 +msgid "_Rename" +msgstr "_Renomear" + +#: ../data/glade/roster_contact_context_menu.glade.h:14 +msgid "_Subscription" +msgstr "_Subscrição" + +#: ../data/glade/roster_window.glade.h:1 +msgid "A_ccounts" +msgstr "_Contas" + +#: ../data/glade/roster_window.glade.h:2 +msgid "Add _Contact" +msgstr "Adicionar _Contacto" + +#: ../data/glade/roster_window.glade.h:3 +msgid "File _Transfers" +msgstr "_Transferências de Ficheiros" + +#: ../data/glade/roster_window.glade.h:4 +msgid "Frequently Asked Questions (online)" +msgstr "Questões Perguntadas Frequentemente (FAQ) (online)" + +#: ../data/glade/roster_window.glade.h:6 +msgid "Help online" +msgstr "Ajuda online" + +#: ../data/glade/roster_window.glade.h:7 +msgid "Profile, Avatar" +msgstr "Perfil, Avatar" + +#: ../data/glade/roster_window.glade.h:8 +msgid "Show _Offline Contacts" +msgstr "Mostrar Contactos _Offline" + +#: ../data/glade/roster_window.glade.h:11 +msgid "_Contents" +msgstr "_Conteúdo" + +#: ../data/glade/roster_window.glade.h:12 +msgid "_Discover Services" +msgstr "_Descobrir Recursos" + +#: ../data/glade/roster_window.glade.h:13 ../src/disco.py:1252 +#: ../src/roster_window.py:1462 +msgid "_Edit" +msgstr "_Editar" + +#: ../data/glade/roster_window.glade.h:14 +msgid "_FAQ" +msgstr "_FAQ" + +#: ../data/glade/roster_window.glade.h:16 +msgid "_Help" +msgstr "_Ajuda" + +#: ../data/glade/roster_window.glade.h:17 +msgid "_Preferences" +msgstr "_Preferências" + +#: ../data/glade/roster_window.glade.h:18 +msgid "_Quit" +msgstr "_Sair" + +#: ../data/glade/service_discovery_window.glade.h:1 +msgid "G_o" +msgstr "_Ir" + +#: ../data/glade/service_discovery_window.glade.h:2 +msgid "_Address:" +msgstr "_Endereço:" + +#: ../data/glade/service_discovery_window.glade.h:3 +msgid "_Filter:" +msgstr "_Filtro:" + +#: ../data/glade/service_registration_window.glade.h:1 +msgid "Register to" +msgstr "Registar para" + +#: ../data/glade/service_registration_window.glade.h:2 +msgid "_Cancel" +msgstr "_Cancelar" + +#: ../data/glade/service_registration_window.glade.h:3 +msgid "_OK" +msgstr "_OK" + +#: ../data/glade/single_message_window.glade.h:1 +msgid "0" +msgstr "0" + +#: ../data/glade/single_message_window.glade.h:2 +msgid "From:" +msgstr "De:" + +#: ../data/glade/single_message_window.glade.h:3 +msgid "Reply to this message" +msgstr "Responder a esta mensagem" + +#: ../data/glade/single_message_window.glade.h:4 +msgid "Sen_d" +msgstr "_Enviar" + +#: ../data/glade/single_message_window.glade.h:5 +msgid "Send message" +msgstr "Enviar mensagem" + +#: ../data/glade/single_message_window.glade.h:6 +msgid "Send message and close window" +msgstr "Enviar mensagem e fechar a janela" + +#: ../data/glade/single_message_window.glade.h:7 +msgid "Subject:" +msgstr "Assunto:" + +#: ../data/glade/single_message_window.glade.h:8 +msgid "To:" +msgstr "Para:" + +#: ../data/glade/single_message_window.glade.h:9 +msgid "_Reply" +msgstr "_Responder" + +#: ../data/glade/single_message_window.glade.h:10 +msgid "_Send & Close" +msgstr "E_nviar & Fechar" + +#: ../data/glade/subscription_request_window.glade.h:1 +msgid "Authorize contact so he can know when you're connected" +msgstr "Autorize o contacto para ele saber quando você está ligado" + +#: ../data/glade/subscription_request_window.glade.h:2 +msgid "Contact _Info" +msgstr "_Infos do Contacto" + +#: ../data/glade/subscription_request_window.glade.h:3 +msgid "Deny authorization from contact so he cannot know when you're connected" +msgstr "" +"Recusar autorização do contacto, para que ele não possa saber quando você " +"está ligado" + +#: ../data/glade/subscription_request_window.glade.h:4 +msgid "Subscription Request" +msgstr "Pedido de Subscrição" + +#: ../data/glade/subscription_request_window.glade.h:5 +msgid "_Authorize" +msgstr "_Autorizar" + +#: ../data/glade/subscription_request_window.glade.h:6 +msgid "_Deny" +msgstr "_Negar" + +#: ../data/glade/systray_context_menu.glade.h:2 +msgid "Show All Pending _Events" +msgstr "Mostrar Todos os _Eventos Pedentes" + +#: ../data/glade/systray_context_menu.glade.h:3 +msgid "Show _Roster" +msgstr "Mostrar _Lista de Contactos" + +#: ../data/glade/systray_context_menu.glade.h:4 +msgid "Sta_tus" +msgstr "Es_tado" + +#. "About" is the text of a tab of vcard window +#: ../data/glade/vcard_information_window.glade.h:2 +msgid "About" +msgstr "Sobre" + +#: ../data/glade/vcard_information_window.glade.h:3 +msgid "Address" +msgstr "Endereço" + +#: ../data/glade/vcard_information_window.glade.h:4 +msgid "Ask:" +msgstr "Perguntar:" + +#: ../data/glade/vcard_information_window.glade.h:5 +msgid "Birthday:" +msgstr "Aniversário" + +#: ../data/glade/vcard_information_window.glade.h:6 +msgid "City:" +msgstr "Cidade:" + +#: ../data/glade/vcard_information_window.glade.h:7 +msgid "Client:" +msgstr "Cliente:" + +#: ../data/glade/vcard_information_window.glade.h:8 +msgid "Company:" +msgstr "Empresa:" + +#: ../data/glade/vcard_information_window.glade.h:9 +msgid "Contact Information" +msgstr "Informações do Contacto" + +#: ../data/glade/vcard_information_window.glade.h:10 +msgid "Country:" +msgstr "País:" + +#: ../data/glade/vcard_information_window.glade.h:11 +msgid "Department:" +msgstr "Departamento:" + +#: ../data/glade/vcard_information_window.glade.h:12 +msgid "E-Mail:" +msgstr "E-Mail:" + +#: ../data/glade/vcard_information_window.glade.h:13 +msgid "Extra Address:" +msgstr "Complemento:" + +#. Family Name +#: ../data/glade/vcard_information_window.glade.h:15 +msgid "Family:" +msgstr "Família:" + +#: ../data/glade/vcard_information_window.glade.h:16 +msgid "Format: YYYY-MM-DD" +msgstr "Formato: AAAA-MM-DD" + +#. Given Name +#: ../data/glade/vcard_information_window.glade.h:19 +msgid "Given:" +msgstr "Nome Dado:" + +#: ../data/glade/vcard_information_window.glade.h:20 +msgid "Homepage:" +msgstr "Página pessoal:" + +#: ../data/glade/vcard_information_window.glade.h:21 +msgid "Jabber" +msgstr "Jabber" + +#: ../data/glade/vcard_information_window.glade.h:22 +msgid "Jabber ID:" +msgstr "Jabber ID:" + +#: ../data/glade/vcard_information_window.glade.h:23 +msgid "Location" +msgstr "Morada" + +#. Middle Name +#: ../data/glade/vcard_information_window.glade.h:25 +msgid "Middle:" +msgstr "Nome do meio:" + +#: ../data/glade/vcard_information_window.glade.h:26 +msgid "More" +msgstr "Mais" + +#: ../data/glade/vcard_information_window.glade.h:29 +msgid "OS:" +msgstr "SO:" + +#: ../data/glade/vcard_information_window.glade.h:30 +msgid "Phone No.:" +msgstr "Telefone:" + +#: ../data/glade/vcard_information_window.glade.h:31 +msgid "Position:" +msgstr "Cargo:" + +#: ../data/glade/vcard_information_window.glade.h:32 +msgid "Postal Code:" +msgstr "Código Postal:" + +#. Prefix in Name +#: ../data/glade/vcard_information_window.glade.h:34 +msgid "Prefix:" +msgstr "Prefixo:" + +#: ../data/glade/vcard_information_window.glade.h:35 +msgid "Resource:" +msgstr "Recurso:" + +#: ../data/glade/vcard_information_window.glade.h:36 +msgid "Role:" +msgstr "Função:" + +#: ../data/glade/vcard_information_window.glade.h:37 +msgid "Set _Avatar" +msgstr "Definir _Avatar" + +#: ../data/glade/vcard_information_window.glade.h:38 +msgid "State:" +msgstr "Estado:" + +#: ../data/glade/vcard_information_window.glade.h:39 +msgid "Status:" +msgstr "Estado:" + +#: ../data/glade/vcard_information_window.glade.h:40 +msgid "Street:" +msgstr "Rua:" + +#: ../data/glade/vcard_information_window.glade.h:41 +msgid "Subscription:" +msgstr "Subscrição:" + +#. Suffix in Name +#: ../data/glade/vcard_information_window.glade.h:43 +msgid "Suffix:" +msgstr "Sufixo:" + +#: ../data/glade/vcard_information_window.glade.h:44 +msgid "Work" +msgstr "Trabalho" + +#: ../data/glade/vcard_information_window.glade.h:45 +msgid "_Log conversation history" +msgstr "_Histórico das Conversas" + +#: ../data/glade/vcard_information_window.glade.h:46 +msgid "_Publish" +msgstr "_Publicar" + +#: ../data/glade/vcard_information_window.glade.h:47 +msgid "_Retrieve" +msgstr "_Recuperar" + +#: ../data/glade/xml_console_window.glade.h:1 +msgid "Jabber Traffic" +msgstr "Tráfego Jabber" + +#: ../data/glade/xml_console_window.glade.h:2 +msgid "XML Input" +msgstr "Entrada XML" + +#. XML Console enable checkbutton +#: ../data/glade/xml_console_window.glade.h:4 +msgid "Enable" +msgstr "Activar" + +#. Info/Query make the "IQ" initials. So translate like this 'YourLang/YourLang (Info/Query)'. Thanks (it's a tooltip so width is not a problem) +#: ../data/glade/xml_console_window.glade.h:6 +msgid "Info/Query" +msgstr "Info/Consulta" + +#. Info/Query: all(?) jabber xml start with Whom do you want to ban?\n" "\n" msgstr "O que pretende fazer?" -#: ../src/config.py:2023 +#: ../src/config.py:2062 msgid "Adding Member..." msgstr "" -#: ../src/config.py:2024 +#: ../src/config.py:2063 #, fuzzy msgid "" "Whom do you want to make a member?\n" "\n" msgstr "O que pretende fazer?" -#: ../src/config.py:2026 +#: ../src/config.py:2065 msgid "Adding Owner..." msgstr "" -#: ../src/config.py:2027 +#: ../src/config.py:2066 #, fuzzy msgid "" "Whom do you want to make a owner?\n" "\n" msgstr "O que pretende fazer?" -#: ../src/config.py:2029 +#: ../src/config.py:2068 #, fuzzy msgid "Adding Administrator..." msgstr "_Administrador" -#: ../src/config.py:2030 +#: ../src/config.py:2069 #, fuzzy msgid "" "Whom do you want to make an administrator?\n" "\n" msgstr "O que pretende fazer?" -#: ../src/config.py:2031 +#: ../src/config.py:2070 msgid "" "Can be one of the following:\n" "1. user@domain/resource (only that resource matches).\n" @@ -417,87 +2502,91 @@ msgid "" "domain/resource, or address containing a subdomain." msgstr "" -#: ../src/config.py:2127 +#: ../src/config.py:2166 #, python-format msgid "Removing %s account" msgstr "Removendo %s conta" -#: ../src/config.py:2144 ../src/roster_window.py:1859 +#: ../src/config.py:2183 ../src/roster_window.py:1857 msgid "Password Required" msgstr "Senha Necessária" -#: ../src/config.py:2145 ../src/roster_window.py:1860 +#: ../src/config.py:2184 ../src/roster_window.py:1858 #, python-format msgid "Enter your password for account %s" msgstr "Introduza a sua senha para a conta %s" -#: ../src/config.py:2146 ../src/roster_window.py:1861 +#: ../src/config.py:2185 ../src/roster_window.py:1859 msgid "Save password" msgstr "Guardar senha" -#: ../src/config.py:2159 +#: ../src/config.py:2198 #, python-format msgid "Account \"%s\" is connected to the server" msgstr "Conta \"%s\" está ligada ao servidor" -#: ../src/config.py:2160 +#: ../src/config.py:2199 msgid "If you remove it, the connection will be lost." msgstr "Se remover isto, a ligação será perdida." -#: ../src/config.py:2295 +#: ../src/config.py:2282 +msgid "Enter and leave only" +msgstr "" + +#: ../src/config.py:2352 msgid "New Room" msgstr "Nova Sala" -#: ../src/config.py:2326 +#: ../src/config.py:2383 msgid "This bookmark has invalid data" msgstr "Este bookmark tem dados inválidos" -#: ../src/config.py:2327 +#: ../src/config.py:2384 msgid "" "Please be sure to fill out server and room fields or remove this bookmark." msgstr "" "Por favor, verifique se preencheu os campos servidor e sala ou remova este " "bookmark" -#: ../src/config.py:2564 +#: ../src/config.py:2638 msgid "Invalid username" msgstr "Nome de utilizador inválido" -#: ../src/config.py:2565 +#: ../src/config.py:2639 msgid "You must provide a username to configure this account." msgstr "Deve introduzir um nome de utilizador para configurar esta conta." -#: ../src/config.py:2574 ../src/dialogs.py:1036 +#: ../src/config.py:2648 ../src/dialogs.py:1118 msgid "Invalid password" msgstr "Senha Inválida" -#: ../src/config.py:2575 +#: ../src/config.py:2649 msgid "You must enter a password for the new account." msgstr "Deve indicar uma palavra-passe à qual a nova conta será associada" -#: ../src/config.py:2579 ../src/dialogs.py:1041 +#: ../src/config.py:2653 ../src/dialogs.py:1123 msgid "Passwords do not match" msgstr "As senhas não conferem" -#: ../src/config.py:2580 ../src/dialogs.py:1042 +#: ../src/config.py:2654 ../src/dialogs.py:1124 msgid "The passwords typed in both fields must be identical." msgstr "As senhas introduzidas em ambos os campos devem ser idênticas." -#: ../src/config.py:2599 +#: ../src/config.py:2673 #, fuzzy msgid "Duplicate Jabber ID" msgstr "Jabber ID Inválido" -#: ../src/config.py:2600 +#: ../src/config.py:2674 #, fuzzy msgid "This account is already configured in Gajim." msgstr "Este contacto já se encontra na sua lista de contactos." -#: ../src/config.py:2617 +#: ../src/config.py:2691 msgid "Account has been added successfully" msgstr "A conta foi adicionada com sucesso" -#: ../src/config.py:2618 ../src/config.py:2651 +#: ../src/config.py:2692 ../src/config.py:2725 msgid "" "You can set advanced account options by pressing Advanced button, or later " "by clicking in Accounts menuitem under Edit menu from the main window." @@ -506,23 +2595,23 @@ msgstr "" "tarde clicando no item de menu Contas dentro do menu Editar a partir da " "janela principal." -#: ../src/config.py:2650 +#: ../src/config.py:2724 msgid "Your new account has been created successfully" msgstr "A sua nova conta foi criada com sucesso" -#: ../src/config.py:2666 +#: ../src/config.py:2740 msgid "An error occured during account creation" msgstr "Ocorreu um erro ao criar a conta" -#: ../src/config.py:2723 +#: ../src/config.py:2797 msgid "Account name is in use" msgstr "Nome de conta em uso" -#: ../src/config.py:2724 +#: ../src/config.py:2798 msgid "You already have an account using this name." msgstr "Já tem uma conta usando este nome." -#: ../src/conversation_textview.py:182 +#: ../src/conversation_textview.py:205 msgid "" "Text below this line is what has been said since the last time you paid " "attention to this group chat" @@ -530,396 +2619,468 @@ msgstr "" "O texto abaixo desta linha é o que foi dito desde que prestou atenção a este " "chat pela última vez." -#: ../src/conversation_textview.py:239 +#: ../src/conversation_textview.py:263 #, python-format msgid "Actions for \"%s\"" msgstr "Acções para \"%s\"" -#: ../src/conversation_textview.py:251 +#: ../src/conversation_textview.py:275 msgid "Read _Wikipedia Article" msgstr "Ler Artigo _Wikipedia" -#: ../src/conversation_textview.py:255 +#: ../src/conversation_textview.py:280 msgid "Look it up in _Dictionary" msgstr "Procurar no _Dicionário" #. we must have %s in the url if not WIKTIONARY -#: ../src/conversation_textview.py:270 +#: ../src/conversation_textview.py:296 #, python-format msgid "Dictionary URL is missing an \"%s\" and it is not WIKTIONARY" msgstr "Falta um \"%s\" no URL do Dicionário e como tal não é WIKTIONARY" #. we must have %s in the url -#: ../src/conversation_textview.py:281 +#: ../src/conversation_textview.py:308 #, python-format msgid "Web Search URL is missing an \"%s\"" msgstr "URL de Procura na Web não existe \"%s\"" -#: ../src/conversation_textview.py:284 +#: ../src/conversation_textview.py:311 msgid "Web _Search for it" msgstr "_Pesquisar na Web sobre o assunto" -#: ../src/conversation_textview.py:574 +#: ../src/conversation_textview.py:607 msgid "Yesterday" msgstr "Ontem" #. the number is >= 2 #. %i is day in year (1-365), %d (1-31) we want %i -#: ../src/conversation_textview.py:578 +#: ../src/conversation_textview.py:611 #, python-format msgid "%i days ago" msgstr "Há %i dias atrás" #. if we have subject, show it too! -#: ../src/conversation_textview.py:634 +#: ../src/conversation_textview.py:686 #, python-format msgid "Subject: %s\n" msgstr "Assunto: %s\n" #. only say that to non Windows users -#: ../src/dbus_support.py:34 +#: ../src/dbus_support.py:32 msgid "D-Bus python bindings are missing in this computer" msgstr "Bindings do python D-Bus estão em falta neste computador" -#: ../src/dbus_support.py:35 +#: ../src/dbus_support.py:33 msgid "D-Bus capabilities of Gajim cannot be used" msgstr "As potencialidades do D-Bus no Gajim não podem ser usadas" -#: ../src/dialogs.py:64 +#: ../src/dialogs.py:55 #, python-format msgid "Contact's name: %s" msgstr "Nome do Contacto %s" -#: ../src/dialogs.py:66 +#: ../src/dialogs.py:57 #, python-format msgid "JID: %s" msgstr "JID: %s" -#: ../src/dialogs.py:169 +#. Group name +#. In group boolean +#: ../src/dialogs.py:173 msgid "Group" msgstr "Grupo" -#: ../src/dialogs.py:176 +#: ../src/dialogs.py:180 msgid "In the group" msgstr "Neste grupo" -#: ../src/dialogs.py:226 +#: ../src/dialogs.py:230 msgid "KeyID" msgstr "KeyID" -#: ../src/dialogs.py:229 +#: ../src/dialogs.py:233 msgid "Contact name" msgstr "Nome do Contacto" -#: ../src/dialogs.py:263 +#: ../src/dialogs.py:266 #, python-format msgid "%s Status Message" msgstr "Mensagem de Estado de %s" -#: ../src/dialogs.py:265 +#: ../src/dialogs.py:268 msgid "Status Message" msgstr "Mensagem de Estado" -#: ../src/dialogs.py:340 +#: ../src/dialogs.py:343 #, fuzzy msgid "Save as Preset Status Message" msgstr "Configurar Mensagens de Estado" -#: ../src/dialogs.py:341 +#: ../src/dialogs.py:344 #, fuzzy msgid "Please type a name for this status message" msgstr "Escreva a sua nova mensagem de estado:" -#: ../src/dialogs.py:369 +#: ../src/dialogs.py:391 #, python-format msgid "Please fill in the data of the contact you want to add in account %s" msgstr "" "Por favor preencha os dados do contacto que deseja adicionar na conta %s" -#: ../src/dialogs.py:371 +#: ../src/dialogs.py:393 msgid "Please fill in the data of the contact you want to add" msgstr "Por favor preencha os dados do contacto que deseja adicionar" -#. the user can be in mutiple groups, see in all of them -#: ../src/dialogs.py:380 ../src/disco.py:118 ../src/disco.py:119 -#: ../src/disco.py:1258 ../src/roster_window.py:214 -#: ../src/roster_window.py:275 ../src/roster_window.py:310 -#: ../src/roster_window.py:330 ../src/roster_window.py:354 -#: ../src/roster_window.py:2940 ../src/roster_window.py:2942 -#: ../src/systray.py:291 ../src/common/helpers.py:42 +#: ../src/dialogs.py:403 ../src/disco.py:109 ../src/disco.py:110 +#: ../src/disco.py:1249 ../src/roster_window.py:207 +#: ../src/roster_window.py:273 ../src/roster_window.py:309 +#: ../src/roster_window.py:329 ../src/roster_window.py:353 +#: ../src/roster_window.py:2973 ../src/roster_window.py:2975 +#: ../src/common/helpers.py:39 msgid "Transports" msgstr "Transportes" -#: ../src/dialogs.py:452 ../src/dialogs.py:458 +#: ../src/dialogs.py:493 ../src/dialogs.py:499 msgid "Invalid User ID" msgstr "ID de Utilizador inválido" -#: ../src/dialogs.py:459 +#: ../src/dialogs.py:500 #, fuzzy msgid "The user ID must not contain a resource." msgstr "Este serviço não contém quaisquer itens para explorar" -#: ../src/dialogs.py:466 +#: ../src/dialogs.py:513 msgid "Contact already in roster" msgstr "Contacto já se encontra na lista" -#: ../src/dialogs.py:467 +#: ../src/dialogs.py:514 msgid "This contact is already listed in your roster." msgstr "Este contacto já se encontra na sua lista de contactos." -#: ../src/dialogs.py:528 +#: ../src/dialogs.py:576 msgid "A GTK+ jabber client" msgstr "Um cliente Jabber GTK+" -#: ../src/dialogs.py:539 +#: ../src/dialogs.py:577 +msgid "GTK+ Version:" +msgstr "" + +#: ../src/dialogs.py:578 +msgid "PyGTK Version:" +msgstr "" + +#: ../src/dialogs.py:586 +msgid "Current Developers:" +msgstr "" + +#: ../src/dialogs.py:588 msgid "Past Developers:" msgstr "" -#: ../src/dialogs.py:543 +#: ../src/dialogs.py:592 msgid "THANKS:" msgstr "" -#. remove one english setence +#. remove one english sentence #. and add it manually as translatable -#: ../src/dialogs.py:550 +#: ../src/dialogs.py:598 msgid "Last but not least, we would like to thank all the package maintainers." msgstr "" #. here you write your name in the form Name FamilyName -#: ../src/dialogs.py:564 +#: ../src/dialogs.py:612 msgid "translator-credits" msgstr "Miguel Fonseca " -#: ../src/dialogs.py:826 +#: ../src/dialogs.py:738 +#, fuzzy, python-format +msgid "Unable to bind to port %s." +msgstr "Impossível entrar na sala" + +#: ../src/dialogs.py:739 +msgid "" +"Maybe you have another running instance of Gajim. File Transfer will be " +"canceled." +msgstr "" + +#: ../src/dialogs.py:881 #, python-format msgid "Subscription request for account %s from %s" msgstr "Pedido de subscrição para a conta %s por parte de %s" -#: ../src/dialogs.py:829 +#: ../src/dialogs.py:884 #, python-format msgid "Subscription request from %s" msgstr "Pedido de subscrição de %s" -#: ../src/dialogs.py:872 +#: ../src/dialogs.py:926 msgid "You can not join a group chat unless you are connected." msgstr "Não pode entrar num chat sem estar ligado." -#: ../src/dialogs.py:885 +#: ../src/dialogs.py:939 #, python-format msgid "Join Group Chat with account %s" msgstr "Entrar num Chat com a conta %s" -#: ../src/dialogs.py:887 ../src/gtkgui.glade.h:177 -msgid "Join Group Chat" -msgstr "Entrar num Chat" - -#: ../src/dialogs.py:976 +#: ../src/dialogs.py:1030 #, fuzzy msgid "Invalid room or server name" msgstr "Nome de utilizador inválido" -#: ../src/dialogs.py:977 +#: ../src/dialogs.py:1031 msgid "The room name or server name has not allowed characters." msgstr "" -#: ../src/dialogs.py:996 +#: ../src/dialogs.py:1050 #, python-format msgid "Start Chat with account %s" msgstr "Iniciar conversa com a conta %s" -#: ../src/dialogs.py:998 +#: ../src/dialogs.py:1052 msgid "Start Chat" msgstr "Iniciar Conversa" -#: ../src/dialogs.py:999 +#: ../src/dialogs.py:1053 +#, fuzzy msgid "" -"Fill in the contact ID of the contact you would like\n" +"Fill in the jid, or nick of the contact you would like\n" "to send a chat message to:" msgstr "" "Introduza o ID do contacto a quem gostaria\n" "de enviar uma mensagem instantânea:" #. if offline or connecting -#: ../src/dialogs.py:1007 ../src/dialogs.py:1330 ../src/dialogs.py:1450 +#: ../src/dialogs.py:1078 ../src/dialogs.py:1427 ../src/dialogs.py:1551 msgid "Connection not available" msgstr "Ligação indisponível" -#: ../src/dialogs.py:1008 ../src/dialogs.py:1331 ../src/dialogs.py:1451 +#: ../src/dialogs.py:1079 ../src/dialogs.py:1428 ../src/dialogs.py:1552 #, python-format msgid "Please make sure you are connected with \"%s\"." msgstr "Por favor, verifique se está ligado com \"%s\"." -#: ../src/dialogs.py:1018 +#: ../src/dialogs.py:1088 ../src/dialogs.py:1091 +#, fuzzy +msgid "Invalid JID" +msgstr "Jabber ID Inválido" + +#: ../src/dialogs.py:1091 +#, fuzzy, python-format +msgid "Unable to parse \"%s\"." +msgstr "Impossível escrever ficheiro em %s" + +#: ../src/dialogs.py:1100 msgid "Without a connection, you can not change your password." msgstr "Tem de estar ligado para poder mudar a sua senha." -#: ../src/dialogs.py:1037 +#: ../src/dialogs.py:1119 msgid "You must enter a password." msgstr "Deve introduzir uma senha." #. img to display #. default value -#: ../src/dialogs.py:1083 ../src/gajim.py:443 ../src/notify.py:129 +#: ../src/dialogs.py:1165 ../src/notify.py:126 ../src/notify.py:268 msgid "Contact Signed In" msgstr "Contacto Entrou" -#: ../src/dialogs.py:1085 ../src/gajim.py:474 ../src/notify.py:131 +#: ../src/dialogs.py:1167 ../src/notify.py:134 ../src/notify.py:270 msgid "Contact Signed Out" msgstr "Contacto Saiu" #. chat message -#: ../src/dialogs.py:1087 ../src/gajim.py:609 ../src/notify.py:133 +#: ../src/dialogs.py:1169 ../src/notify.py:154 ../src/notify.py:272 msgid "New Message" msgstr "Nova Mensagem" #. single message -#: ../src/dialogs.py:1087 ../src/gajim.py:603 ../src/notify.py:133 +#: ../src/dialogs.py:1169 ../src/notify.py:138 ../src/notify.py:272 msgid "New Single Message" msgstr "Nova Mensagem Instantânea" -#: ../src/dialogs.py:1088 ../src/gajim.py:586 ../src/notify.py:134 +#. private message +#: ../src/dialogs.py:1170 ../src/notify.py:145 ../src/notify.py:273 msgid "New Private Message" msgstr "Nova Mensagem Privada" -#: ../src/dialogs.py:1088 ../src/gajim.py:1049 ../src/notify.py:142 +#: ../src/dialogs.py:1170 ../src/gajim.py:1044 ../src/notify.py:281 #, fuzzy msgid "New E-mail" msgstr "E-Mail" -#: ../src/dialogs.py:1090 ../src/gajim.py:1187 ../src/notify.py:136 +#: ../src/dialogs.py:1172 ../src/gajim.py:1187 ../src/notify.py:275 msgid "File Transfer Request" msgstr "Pedido de Transferência de Ficheiro" -#: ../src/dialogs.py:1092 ../src/gajim.py:1035 ../src/gajim.py:1164 -#: ../src/notify.py:138 +#: ../src/dialogs.py:1174 ../src/gajim.py:1022 ../src/gajim.py:1164 +#: ../src/notify.py:277 msgid "File Transfer Error" msgstr "Erro na Transferência de Ficheiro" -#: ../src/dialogs.py:1094 ../src/gajim.py:1222 ../src/gajim.py:1244 -#: ../src/gajim.py:1261 ../src/notify.py:140 +#: ../src/dialogs.py:1176 ../src/gajim.py:1222 ../src/gajim.py:1244 +#: ../src/gajim.py:1261 ../src/notify.py:279 msgid "File Transfer Completed" msgstr "Transferência de Ficheiro Completa" -#: ../src/dialogs.py:1095 ../src/gajim.py:1225 ../src/notify.py:140 +#: ../src/dialogs.py:1177 ../src/gajim.py:1225 ../src/notify.py:279 msgid "File Transfer Stopped" msgstr "Transferência de Ficheiro Parada" -#: ../src/dialogs.py:1097 ../src/gajim.py:953 ../src/notify.py:144 +#: ../src/dialogs.py:1179 ../src/gajim.py:920 ../src/notify.py:283 #, fuzzy msgid "Groupchat Invitation" msgstr "?Função do Contacto no Chat:Nenhuma" +#: ../src/dialogs.py:1181 ../src/notify.py:118 ../src/notify.py:285 +#, fuzzy +msgid "Contact Changed Status" +msgstr "Contacto Saiu" + #. FIXME: for Received with should become 'in' -#: ../src/dialogs.py:1262 +#: ../src/dialogs.py:1359 #, python-format msgid "Single Message with account %s" msgstr "Mensagem Simples com a conta %s" -#: ../src/dialogs.py:1264 +#: ../src/dialogs.py:1361 msgid "Single Message" msgstr "Mensagem Simples" #. prepare UI for Sending -#: ../src/dialogs.py:1267 +#: ../src/dialogs.py:1364 #, python-format msgid "Send %s" msgstr "Enviar %s" #. prepare UI for Receiving -#: ../src/dialogs.py:1290 +#: ../src/dialogs.py:1387 #, python-format msgid "Received %s" msgstr "Recebido %s" #. we create a new blank window to send and we preset RE: and to jid -#: ../src/dialogs.py:1355 +#: ../src/dialogs.py:1454 #, python-format msgid "RE: %s" msgstr "RE: %s" -#: ../src/dialogs.py:1356 +#: ../src/dialogs.py:1455 #, python-format msgid "%s wrote:\n" msgstr "%s escreveu:\n" -#: ../src/dialogs.py:1400 +#: ../src/dialogs.py:1499 #, python-format msgid "XML Console for %s" msgstr "Consola XML para %s" -#: ../src/dialogs.py:1402 +#: ../src/dialogs.py:1501 msgid "XML Console" msgstr "Consola XML" +#: ../src/dialogs.py:1620 +#, python-format +msgid "Privacy List %s" +msgstr "" + +#: ../src/dialogs.py:1624 +#, python-format +msgid "Privacy List for %s" +msgstr "" + +#: ../src/dialogs.py:1716 +#, fuzzy +msgid "Edit a rule" +msgstr "Formato de uma linha" + +#: ../src/dialogs.py:1801 +#, fuzzy +msgid "Add a rule" +msgstr "Formato de uma linha" + +#: ../src/dialogs.py:1897 +#, python-format +msgid "Privacy Lists for %s" +msgstr "" + +#: ../src/dialogs.py:1899 +#, fuzzy +msgid "Privacy Lists" +msgstr "Iniciar Conversa" + #. FIXME: use nickname instead of contact_jid -#: ../src/dialogs.py:1488 +#: ../src/dialogs.py:1988 #, fuzzy, python-format msgid "%(contact_jid)s has invited you to %(room_jid)s room" msgstr "%(contact_jid)s foi convidado(a) para %(room_jid)s." #. only if not None and not '' -#: ../src/dialogs.py:1494 +#: ../src/dialogs.py:1994 #, python-format msgid "Comment: %s" msgstr "Comentário: %s" -#: ../src/dialogs.py:1554 +#: ../src/dialogs.py:2054 msgid "Choose Sound" msgstr "Escolher Som" -#: ../src/dialogs.py:1564 ../src/dialogs.py:1607 +#: ../src/dialogs.py:2064 ../src/dialogs.py:2107 msgid "All files" msgstr "Todos os ficheiros" -#: ../src/dialogs.py:1569 +#: ../src/dialogs.py:2069 msgid "Wav Sounds" msgstr "Sons Wav" -#: ../src/dialogs.py:1597 +#: ../src/dialogs.py:2097 msgid "Choose Image" msgstr "Escolha chave" -#: ../src/dialogs.py:1612 +#: ../src/dialogs.py:2112 msgid "Images" msgstr "Imagens" -#: ../src/dialogs.py:1658 +#: ../src/dialogs.py:2157 #, python-format msgid "When %s becomes:" msgstr "" -#: ../src/dialogs.py:1660 +#: ../src/dialogs.py:2159 #, python-format msgid "Adding Special Notification for %s" msgstr "" -#: ../src/disco.py:117 +#: ../src/dialogs.py:2232 +#, fuzzy +msgid "Condition" +msgstr "Ligação" + +#: ../src/disco.py:108 msgid "Others" msgstr "Outros" #. conference is a category for listing mostly groupchats in service discovery -#: ../src/disco.py:121 +#: ../src/disco.py:112 msgid "Conference" msgstr "Conferência" -#: ../src/disco.py:420 +#: ../src/disco.py:411 msgid "Without a connection, you can not browse available services" msgstr "Tem de estar ligado para ver os serviços" -#: ../src/disco.py:499 +#: ../src/disco.py:490 #, fuzzy, python-format msgid "Service Discovery using account %s" msgstr "Buscar Serviço usando conta %s" -#: ../src/disco.py:500 +#: ../src/disco.py:491 msgid "Service Discovery" msgstr "Buscar Serviço" -#: ../src/disco.py:637 +#: ../src/disco.py:628 msgid "The service could not be found" msgstr "O serviço não pôde ser encontrado" -#: ../src/disco.py:638 +#: ../src/disco.py:629 msgid "" "There is no service at the address you entered, or it is not responding. " "Check the address and try again." @@ -927,172 +3088,175 @@ msgstr "" "Não há serviço/recurso no endereço que introduziu, ou pelo menos não " "responde. Verifique o endereço e tente novamente." -#: ../src/disco.py:642 ../src/disco.py:924 +#: ../src/disco.py:633 ../src/disco.py:915 msgid "The service is not browsable" msgstr "Serviço não explorável" -#: ../src/disco.py:643 +#: ../src/disco.py:634 msgid "This type of service does not contain any items to browse." msgstr "Este tipo de serviço/recurso não contém itens para explorar." -#: ../src/disco.py:723 +#: ../src/disco.py:714 #, fuzzy, python-format msgid "Browsing %s using account %s" msgstr "usando a conta %s" -#: ../src/disco.py:762 +#: ../src/disco.py:753 msgid "_Browse" msgstr "_Explorar" -#: ../src/disco.py:925 +#: ../src/disco.py:916 msgid "This service does not contain any items to browse." msgstr "Este serviço não contém quaisquer itens para explorar" -#: ../src/disco.py:1146 ../src/disco.py:1263 +#: ../src/disco.py:1137 ../src/disco.py:1254 msgid "Re_gister" msgstr "Re_gistar" -#: ../src/disco.py:1154 ../src/disco.py:1516 ../src/gtkgui.glade.h:350 -msgid "_Join" -msgstr "_Entrar" - -#: ../src/disco.py:1261 ../src/gtkgui.glade.h:334 ../src/roster_window.py:1462 -msgid "_Edit" -msgstr "_Editar" - -#: ../src/disco.py:1300 +#: ../src/disco.py:1291 #, python-format msgid "Scanning %d / %d.." msgstr "Buscando %d / %d.." #. Users column -#: ../src/disco.py:1482 +#: ../src/disco.py:1473 msgid "Users" msgstr "Utilizadores" #. Description column -#: ../src/disco.py:1489 +#: ../src/disco.py:1480 msgid "Description" msgstr "Descrição" -#: ../src/filetransfers_window.py:81 +#: ../src/filetransfers_window.py:72 msgid "File" msgstr "Ficheiro" -#: ../src/filetransfers_window.py:96 +#: ../src/filetransfers_window.py:87 msgid "Time" msgstr "Tempo" -#: ../src/filetransfers_window.py:108 +#: ../src/filetransfers_window.py:99 msgid "Progress" msgstr "Progresso" -#: ../src/filetransfers_window.py:176 ../src/filetransfers_window.py:238 +#: ../src/filetransfers_window.py:163 ../src/filetransfers_window.py:223 #, python-format msgid "Filename: %s" msgstr "Nome do ficheiro: %s" -#: ../src/filetransfers_window.py:178 ../src/filetransfers_window.py:308 +#: ../src/filetransfers_window.py:164 ../src/filetransfers_window.py:291 #, python-format msgid "Size: %s" msgstr "Tamanho: %s" #. You is a reply of who sent a file #. You is a reply of who received a file -#: ../src/filetransfers_window.py:187 ../src/filetransfers_window.py:197 -#: ../src/history_manager.py:452 +#: ../src/filetransfers_window.py:173 ../src/filetransfers_window.py:183 +#: ../src/history_manager.py:454 msgid "You" msgstr "Você" -#: ../src/filetransfers_window.py:188 ../src/filetransfers_window.py:240 +#: ../src/filetransfers_window.py:174 ../src/filetransfers_window.py:224 #, python-format msgid "Sender: %s" msgstr "Remetente: %s" -#: ../src/filetransfers_window.py:189 ../src/filetransfers_window.py:555 -#: ../src/tooltips.py:617 +#: ../src/filetransfers_window.py:175 ../src/filetransfers_window.py:556 +#: ../src/tooltips.py:639 msgid "Recipient: " msgstr "Destinatário: " -#: ../src/filetransfers_window.py:200 +#: ../src/filetransfers_window.py:186 #, python-format msgid "Saved in: %s" msgstr "Guardado em: %s" -#: ../src/filetransfers_window.py:203 +#: ../src/filetransfers_window.py:188 msgid "File transfer completed" msgstr "Transferência de ficheiro completa" -#: ../src/filetransfers_window.py:205 ../src/gtkgui.glade.h:366 -msgid "_Open Containing Folder" -msgstr "_Abrir Pasta" - -#: ../src/filetransfers_window.py:219 ../src/filetransfers_window.py:227 +#: ../src/filetransfers_window.py:204 ../src/filetransfers_window.py:212 msgid "File transfer canceled" msgstr "Transferência de ficheiro cancelada" -#: ../src/filetransfers_window.py:219 ../src/filetransfers_window.py:228 +#: ../src/filetransfers_window.py:204 ../src/filetransfers_window.py:213 msgid "Connection with peer cannot be established." msgstr "Ligação ao peer não pode ser estabelecida." -#: ../src/filetransfers_window.py:242 +#: ../src/filetransfers_window.py:225 msgid "File transfer stopped by the contact of the other side" msgstr "Transferência de ficheiro parada pelo contacto na outra ponta" -#: ../src/filetransfers_window.py:259 +#: ../src/filetransfers_window.py:242 msgid "Choose File to Send..." msgstr "Escolher Ficheiro para Enviar" -#. Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector) -#: ../src/filetransfers_window.py:266 ../src/gtkgui.glade.h:390 -msgid "_Send" -msgstr "E_nviar" - -#: ../src/filetransfers_window.py:273 +#: ../src/filetransfers_window.py:256 msgid "Gajim cannot access this file" msgstr "Gajim não consegue aceder a este ficheiro" -#: ../src/filetransfers_window.py:274 +#: ../src/filetransfers_window.py:257 msgid "This file is being used by another process." msgstr "Este ficheiro está a ser usado por outro processo." -#: ../src/filetransfers_window.py:306 +#: ../src/filetransfers_window.py:289 #, python-format msgid "File: %s" msgstr "Ficheiro: %s" -#: ../src/filetransfers_window.py:311 +#: ../src/filetransfers_window.py:294 #, python-format msgid "Type: %s" msgstr "Tipo: %s" -#: ../src/filetransfers_window.py:313 +#: ../src/filetransfers_window.py:296 #, python-format msgid "Description: %s" msgstr "Descrição: %s" -#: ../src/filetransfers_window.py:314 +#: ../src/filetransfers_window.py:297 #, python-format msgid "%s wants to send you a file:" msgstr "%s quer enviar-lhe um ficheiro:" -#: ../src/filetransfers_window.py:329 +#: ../src/filetransfers_window.py:311 +#, python-format +msgid "Cannot overwrite existing file \"%s\"" +msgstr "" + +#: ../src/filetransfers_window.py:312 +msgid "" +"A file with this name already exists and you do not have permission to " +"overwrite it." +msgstr "" + +#: ../src/filetransfers_window.py:319 ../src/gtkgui_helpers.py:685 msgid "This file already exists" msgstr "Este ficheiro já existe" -#: ../src/filetransfers_window.py:329 +#: ../src/filetransfers_window.py:319 ../src/gtkgui_helpers.py:685 #, fuzzy msgid "What do you want to do?" msgstr "O que pretende fazer?" -#: ../src/filetransfers_window.py:344 +#: ../src/filetransfers_window.py:331 +#, python-format +msgid "Directory \"%s\" is not writable" +msgstr "" + +#: ../src/filetransfers_window.py:331 +msgid "You do not have permission to create files in this directory." +msgstr "" + +#: ../src/filetransfers_window.py:341 msgid "Save File as..." msgstr "Guardar Ficheiro como..." #. Print remaining time in format 00:00:00 #. You can change the places of (hours), (minutes), (seconds) - #. they are not translatable. -#: ../src/filetransfers_window.py:419 +#: ../src/filetransfers_window.py:420 #, python-format msgid "%(hours)02.d:%(minutes)02.d:%(seconds)02.d" msgstr "%(hours)02.d:%(minutes)02.d:%(seconds)02.d" @@ -1100,29 +3264,29 @@ msgstr "%(hours)02.d:%(minutes)02.d:%(seconds)02.d" #. This should make the string Kb/s, #. where 'Kb' part is taken from %s. #. Only the 's' after / (which means second) should be translated. -#: ../src/filetransfers_window.py:491 +#: ../src/filetransfers_window.py:492 #, python-format msgid "(%(filesize_unit)s/s)" msgstr "(%(filesize_unit)s/s)" -#: ../src/filetransfers_window.py:527 ../src/filetransfers_window.py:530 +#: ../src/filetransfers_window.py:528 ../src/filetransfers_window.py:531 msgid "Invalid File" msgstr "Ficheiro Inválido" -#: ../src/filetransfers_window.py:527 +#: ../src/filetransfers_window.py:528 msgid "File: " msgstr "Ficheiro: " -#: ../src/filetransfers_window.py:531 +#: ../src/filetransfers_window.py:532 msgid "It is not possible to send empty files" msgstr "Não é possível enviar ficheiros vazios" -#: ../src/filetransfers_window.py:551 ../src/tooltips.py:498 -#: ../src/tooltips.py:607 +#: ../src/filetransfers_window.py:552 ../src/tooltips.py:511 +#: ../src/tooltips.py:629 msgid "Name: " msgstr "Nome: " -#: ../src/filetransfers_window.py:553 ../src/tooltips.py:611 +#: ../src/filetransfers_window.py:554 ../src/tooltips.py:633 msgid "Sender: " msgstr "Remetente: " @@ -1130,32 +3294,28 @@ msgstr "Remetente: " msgid "Pause" msgstr "Pausa" -#: ../src/filetransfers_window.py:753 ../src/gtkgui.glade.h:328 -msgid "_Continue" -msgstr "_Continuar" - -#: ../src/gajim-remote.py:84 +#: ../src/gajim-remote.py:82 msgid "shows a help on specific command" msgstr "Exibe ajuda acerca de um comando específico" #. User gets help for the command, specified by this parameter -#: ../src/gajim-remote.py:87 +#: ../src/gajim-remote.py:85 msgid "command" msgstr "comando" -#: ../src/gajim-remote.py:88 +#: ../src/gajim-remote.py:86 msgid "show help on command" msgstr "mostrar ajuda sobre comando" -#: ../src/gajim-remote.py:92 +#: ../src/gajim-remote.py:90 msgid "Shows or hides the roster window" msgstr "Mostra ou esconde a janela principal" -#: ../src/gajim-remote.py:96 +#: ../src/gajim-remote.py:94 msgid "Popups a window with the next unread message" msgstr "Abre uma janela com a próxima mensagem não lida" -#: ../src/gajim-remote.py:100 +#: ../src/gajim-remote.py:98 msgid "" "Prints a list of all contacts in the roster. Each contact appear on a " "separate line" @@ -1163,45 +3323,48 @@ msgstr "" "Mostra uma lista de todos os contactos na lista. Cada contacto aparece numa " "linha separada" -#: ../src/gajim-remote.py:102 ../src/gajim-remote.py:115 -#: ../src/gajim-remote.py:125 ../src/gajim-remote.py:138 -#: ../src/gajim-remote.py:159 ../src/gajim-remote.py:189 -#: ../src/gajim-remote.py:197 ../src/gajim-remote.py:204 -#: ../src/gajim-remote.py:211 +#: ../src/gajim-remote.py:100 ../src/gajim-remote.py:114 +#: ../src/gajim-remote.py:124 ../src/gajim-remote.py:137 +#: ../src/gajim-remote.py:151 ../src/gajim-remote.py:172 +#: ../src/gajim-remote.py:202 ../src/gajim-remote.py:211 +#: ../src/gajim-remote.py:218 ../src/gajim-remote.py:225 +#: ../src/gajim-remote.py:236 msgid "account" msgstr "conta" -#: ../src/gajim-remote.py:102 +#: ../src/gajim-remote.py:100 msgid "show only contacts of the given account" msgstr "mostrar apenas contactos da conta indicada" -#: ../src/gajim-remote.py:107 +#: ../src/gajim-remote.py:105 msgid "Prints a list of registered accounts" msgstr "Mostra uma lista de contas registadas" -#: ../src/gajim-remote.py:111 +#: ../src/gajim-remote.py:109 msgid "Changes the status of account or accounts" msgstr "Muda o estado de uma ou várias contas" -#: ../src/gajim-remote.py:113 +#. offline, online, chat, away, xa, dnd, invisible should not be translated +#: ../src/gajim-remote.py:112 msgid "status" msgstr "estado" -#: ../src/gajim-remote.py:113 +#: ../src/gajim-remote.py:112 msgid "one of: offline, online, chat, away, xa, dnd, invisible " msgstr "" "um de: offline, disponível, livre para conversar, ausente, indisponível, " "ocupado, invisível" -#: ../src/gajim-remote.py:114 ../src/gajim-remote.py:135 +#: ../src/gajim-remote.py:113 ../src/gajim-remote.py:134 +#: ../src/gajim-remote.py:148 msgid "message" msgstr "mensagem" -#: ../src/gajim-remote.py:114 +#: ../src/gajim-remote.py:113 msgid "status message" msgstr "mensagem de estado:" -#: ../src/gajim-remote.py:115 +#: ../src/gajim-remote.py:114 msgid "" "change status of account \"account\". If not specified, try to change status " "of all accounts that have \"sync with global status\" option set" @@ -1210,139 +3373,166 @@ msgstr "" "estado de todas as contas que têm a opção \"sincronizar com estado global\" " "activada" -#: ../src/gajim-remote.py:121 +#: ../src/gajim-remote.py:120 msgid "Shows the chat dialog so that you can send messages to a contact" msgstr "" "Mostra uma caixa de conversa para que possa enviar mensagens a um contacto" -#: ../src/gajim-remote.py:123 +#: ../src/gajim-remote.py:122 msgid "JID of the contact that you want to chat with" msgstr "JID do contacto com quem deseja conversar" -#: ../src/gajim-remote.py:125 ../src/gajim-remote.py:189 +#: ../src/gajim-remote.py:124 ../src/gajim-remote.py:202 msgid "if specified, contact is taken from the contact list of this account" msgstr "" "se especificado, o contacto é escolhido da lista de contactos desta conta" -#: ../src/gajim-remote.py:130 +#: ../src/gajim-remote.py:129 +#, fuzzy msgid "" -"Sends new message to a contact in the roster. Both OpenPGP key and account " -"are optional. If you want to set only 'account', without 'OpenPGP key', just " -"set 'OpenPGP key' to ''." +"Sends new chat message to a contact in the roster. Both OpenPGP key and " +"account are optional. If you want to set only 'account', without 'OpenPGP " +"key', just set 'OpenPGP key' to ''." msgstr "" "Envia uma nova mensagem a um contacto da lista. Ambas a chave OpenPGP e a " "conta são opcionais. Se quiser definir apenas 'conta', sem 'chave OpenPGP', " "basta definir 'chave OpenPGP' para ''." -#: ../src/gajim-remote.py:134 +#: ../src/gajim-remote.py:133 ../src/gajim-remote.py:146 msgid "JID of the contact that will receive the message" msgstr "JID do destinatário da mensagem" -#: ../src/gajim-remote.py:135 +#: ../src/gajim-remote.py:134 ../src/gajim-remote.py:148 msgid "message contents" msgstr "conteúdo da mensagem" -#: ../src/gajim-remote.py:136 +#: ../src/gajim-remote.py:135 ../src/gajim-remote.py:149 msgid "pgp key" msgstr "chave pgp" -#: ../src/gajim-remote.py:136 +#: ../src/gajim-remote.py:135 ../src/gajim-remote.py:149 msgid "if specified, the message will be encrypted using this public key" msgstr "se especificado, a mensagem será encriptada usando esta chave pública" -#: ../src/gajim-remote.py:138 +#: ../src/gajim-remote.py:137 ../src/gajim-remote.py:151 msgid "if specified, the message will be sent using this account" msgstr "se especificado, a mensagem será enviada usadando esta conta" -#: ../src/gajim-remote.py:143 +#: ../src/gajim-remote.py:142 +#, fuzzy +msgid "" +"Sends new single message to a contact in the roster. Both OpenPGP key and " +"account are optional. If you want to set only 'account', without 'OpenPGP " +"key', just set 'OpenPGP key' to ''." +msgstr "" +"Envia uma nova mensagem a um contacto da lista. Ambas a chave OpenPGP e a " +"conta são opcionais. Se quiser definir apenas 'conta', sem 'chave OpenPGP', " +"basta definir 'chave OpenPGP' para ''." + +#: ../src/gajim-remote.py:147 +#, fuzzy +msgid "subject" +msgstr "Assunto:" + +#: ../src/gajim-remote.py:147 +#, fuzzy +msgid "message subject" +msgstr "Mensagem" + +#: ../src/gajim-remote.py:156 msgid "Gets detailed info on a contact" msgstr "Busca informações detalhadas sobre um contacto" -#: ../src/gajim-remote.py:145 ../src/gajim-remote.py:158 -#: ../src/gajim-remote.py:188 +#: ../src/gajim-remote.py:158 ../src/gajim-remote.py:171 +#: ../src/gajim-remote.py:201 ../src/gajim-remote.py:210 msgid "JID of the contact" msgstr "JID do contacto" -#: ../src/gajim-remote.py:149 +#: ../src/gajim-remote.py:162 #, fuzzy msgid "Gets detailed info on a account" msgstr "Busca informações detalhadas sobre um contacto" -#: ../src/gajim-remote.py:151 +#: ../src/gajim-remote.py:164 #, fuzzy msgid "Name of the account" msgstr "Não tem nenhuma conta activa" -#: ../src/gajim-remote.py:155 +#: ../src/gajim-remote.py:168 msgid "Sends file to a contact" msgstr "Envia um ficheiro a um contacto" -#: ../src/gajim-remote.py:157 +#: ../src/gajim-remote.py:170 msgid "file" msgstr "Ficheiro" -#: ../src/gajim-remote.py:157 +#: ../src/gajim-remote.py:170 msgid "File path" msgstr "Localização do ficheiro" -#: ../src/gajim-remote.py:159 +#: ../src/gajim-remote.py:172 msgid "if specified, file will be sent using this account" msgstr "se especificado, a mensagem será enviada usadando esta conta" -#: ../src/gajim-remote.py:164 +#: ../src/gajim-remote.py:177 msgid "Lists all preferences and their values" msgstr "Exibe todas as preferências e os seus valores" -#: ../src/gajim-remote.py:168 +#: ../src/gajim-remote.py:181 msgid "Sets value of 'key' to 'value'." msgstr "Define o valor de 'chave' para 'valor'." -#: ../src/gajim-remote.py:170 +#: ../src/gajim-remote.py:183 msgid "key=value" msgstr "chave=valor" -#: ../src/gajim-remote.py:170 +#: ../src/gajim-remote.py:183 msgid "'key' is the name of the preference, 'value' is the value to set it to" msgstr "" "'chave' é o nome da preferência, 'valor' é o valor da qual se pretende " "definir" -#: ../src/gajim-remote.py:175 +#: ../src/gajim-remote.py:188 msgid "Deletes a preference item" msgstr "Apaga um item das preferências" -#: ../src/gajim-remote.py:177 +#: ../src/gajim-remote.py:190 msgid "key" msgstr "chave" -#: ../src/gajim-remote.py:177 +#: ../src/gajim-remote.py:190 msgid "name of the preference to be deleted" msgstr "nome da preferência a apagar" -#: ../src/gajim-remote.py:181 +#: ../src/gajim-remote.py:194 msgid "Writes the current state of Gajim preferences to the .config file" msgstr "" "Escreve o estado actual das preferências do Gajim para o ficheiro .config" -#: ../src/gajim-remote.py:186 +#: ../src/gajim-remote.py:199 msgid "Removes contact from roster" msgstr "Remove o contacto da lista" -#: ../src/gajim-remote.py:195 +#: ../src/gajim-remote.py:208 msgid "Adds contact to roster" msgstr "Adiciona o contacto à lista" -#: ../src/gajim-remote.py:197 -msgid "Adds new contact to this account." +#: ../src/gajim-remote.py:210 +msgid "jid" +msgstr "" + +#: ../src/gajim-remote.py:211 +#, fuzzy +msgid "Adds new contact to this account" msgstr "Adiciona um novo contacto nesta conta." -#: ../src/gajim-remote.py:202 +#: ../src/gajim-remote.py:216 msgid "Returns current status (the global one unless account is specified)" msgstr "" "Indica o estado actual (o estado global, a não ser que uma conta seja " "especificada)." -#: ../src/gajim-remote.py:209 +#: ../src/gajim-remote.py:223 #, fuzzy msgid "" "Returns current status message(the global one unless account is specified)" @@ -1350,16 +3540,25 @@ msgstr "" "Indica o estado actual (o estado global, a não ser que uma conta seja " "especificada)." -#: ../src/gajim-remote.py:216 +#: ../src/gajim-remote.py:230 #, fuzzy msgid "Returns number of unreaded messages" msgstr "Tem mensagens não lidas" +#: ../src/gajim-remote.py:234 +msgid "Open 'Start Chat' dialog" +msgstr "" + #: ../src/gajim-remote.py:236 +#, fuzzy +msgid "Starts chat, using this account" +msgstr "Iniciar conversa com a conta %s" + +#: ../src/gajim-remote.py:256 msgid "Missing argument \"contact_jid\"" msgstr "Argumento em falta \"contacto_jid\"" -#: ../src/gajim-remote.py:255 +#: ../src/gajim-remote.py:275 #, python-format msgid "" "'%s' is not in your roster.\n" @@ -1368,16 +3567,16 @@ msgstr "" "'%s' não está na sua lista.\n" "Por favor, especifique a conta para enviar a mensagem" -#: ../src/gajim-remote.py:258 +#: ../src/gajim-remote.py:278 msgid "You have no active account" msgstr "Não tem nenhuma conta activa" -#: ../src/gajim-remote.py:301 +#: ../src/gajim-remote.py:321 #, python-format msgid "Unknown D-Bus version: %s" msgstr "Versão D-Bus desconhecida: %s" -#: ../src/gajim-remote.py:328 +#: ../src/gajim-remote.py:348 #, fuzzy, python-format msgid "" "Usage: %s %s %s \n" @@ -1386,16 +3585,16 @@ msgstr "" "Uso: %s %s %s \n" "\t" -#: ../src/gajim-remote.py:331 +#: ../src/gajim-remote.py:351 msgid "Arguments:" msgstr "Argumentos:" -#: ../src/gajim-remote.py:335 +#: ../src/gajim-remote.py:355 #, python-format msgid "%s not found" msgstr "%s não encontrado" -#: ../src/gajim-remote.py:339 +#: ../src/gajim-remote.py:359 #, python-format msgid "" "Usage: %s command [arguments]\n" @@ -1404,7 +3603,7 @@ msgstr "" "Uso: %s comando [argumentos]\n" "Comando é um de:\n" -#: ../src/gajim-remote.py:413 +#: ../src/gajim-remote.py:433 #, python-format msgid "" "Argument \"%s\" is not specified. \n" @@ -1460,103 +3659,92 @@ msgstr "" msgid "Gajim needs PySQLite2 to run" msgstr "Gajim necessita do PySQLite2 para ser executado" -#: ../src/gajim.py:235 +#. set the icon to all newly opened wind +#: ../src/gajim.py:151 +msgid "Gajim is already running" +msgstr "" + +#: ../src/gajim.py:152 +msgid "" +"Another instance of Gajim seems to be running\n" +"Run anyway?" +msgstr "" + +#: ../src/gajim.py:267 #, python-format msgid "HTTP (%s) Authorization for %s (id: %s)" msgstr "HTTP (%s) Autorização para %s (id: %s)" -#: ../src/gajim.py:236 +#: ../src/gajim.py:268 msgid "Do you accept this request?" msgstr "Aceita este pedido?" -#: ../src/gajim.py:438 -#, fuzzy, python-format -msgid "%(nickname)s Signed In" -msgstr "Contacto Entrou" - -#: ../src/gajim.py:469 -#, fuzzy, python-format -msgid "%(nickname)s Signed Out" -msgstr "Contacto Saiu" - -#: ../src/gajim.py:583 -#, fuzzy, python-format -msgid "New Private Message from room %s" -msgstr "Nova Mensagem Privada" - -#: ../src/gajim.py:584 -#, python-format -msgid "%(nickname)s: %(message)s" -msgstr "" - -#: ../src/gajim.py:606 -#, fuzzy, python-format -msgid "New Single Message from %(nickname)s" -msgstr "Nova Mensagem Instantânea" - -#: ../src/gajim.py:612 -#, fuzzy, python-format -msgid "New Message from %(nickname)s" -msgstr "Nova Mensagem como %s" - -#: ../src/gajim.py:660 +#: ../src/gajim.py:611 #, fuzzy, python-format msgid "error while sending %s ( %s )" msgstr "erro ao enviar" -#: ../src/gajim.py:700 +#: ../src/gajim.py:651 msgid "Authorization accepted" msgstr "Autorização aceite" -#: ../src/gajim.py:701 +#: ../src/gajim.py:652 #, python-format msgid "The contact \"%s\" has authorized you to see his or her status." msgstr "O contacto \"%s\" autorizou-o a ver o seu estado." -#: ../src/gajim.py:709 +#: ../src/gajim.py:660 #, python-format msgid "Contact \"%s\" removed subscription from you" msgstr "Contacto \"%s\" removeu a sua subscrição para si" -#: ../src/gajim.py:710 +#: ../src/gajim.py:661 msgid "You will always see him or her as offline." msgstr "Vê-lo-á sempre como estando offline." -#: ../src/gajim.py:736 +#: ../src/gajim.py:704 #, python-format msgid "Contact with \"%s\" cannot be established" msgstr "Contacto com \"%s\" não pode ser estabelecido" -#: ../src/gajim.py:737 ../src/common/connection.py:349 +#: ../src/gajim.py:705 ../src/common/connection.py:398 msgid "Check your connection or try again later." msgstr "Verifique a sua ligação ou tente novamente mais tarde." -#: ../src/gajim.py:874 ../src/roster_window.py:1012 +#: ../src/gajim.py:849 ../src/roster_window.py:1025 #, python-format msgid "%s is now %s (%s)" msgstr "%s está agora %s (%s)" -#: ../src/gajim.py:963 +#: ../src/gajim.py:930 msgid "Your passphrase is incorrect" msgstr "A sua chave de acesso está incorrecta" -#: ../src/gajim.py:964 +#: ../src/gajim.py:931 msgid "You are currently connected without your OpenPGP key." msgstr "Está neste momento ligado sem a sua chave OpenPGP." #. FIXME: find a better image -#: ../src/gajim.py:1045 +#: ../src/gajim.py:1033 #, python-format msgid "New E-mail on %(gmail_mail_address)s" msgstr "" -#: ../src/gajim.py:1047 +#: ../src/gajim.py:1035 #, fuzzy, python-format msgid "You have %d new E-mail message" msgid_plural "You have %d new E-mail messages" msgstr[0] "Tem mensagens não lidas" msgstr[1] "Tem mensagens não lidas" +#. each message has a 'From', 'Subject' and 'Snippet' field +#: ../src/gajim.py:1040 +#, python-format +msgid "" +"\n" +"From: %(from_address)s" +msgstr "" + #: ../src/gajim.py:1185 #, python-format msgid "%s wants to send you a file." @@ -1606,146 +3794,156 @@ msgstr "" #. it is good to notify the user #. in case he or she cannot see the output of the console -#: ../src/gajim.py:1634 +#: ../src/gajim.py:1683 msgid "Could not save your settings and preferences" msgstr "Impossível salvar as suas definições e preferências" -#: ../src/gajim.py:1848 +#: ../src/gajim.py:1903 msgid "Session Management support not available (missing gnome.ui module)" msgstr "Session Management não é suportado (módulo gnome.ui em falta)" -#: ../src/gajim.py:1878 +#: ../src/gajim.py:1932 msgid "Migrating Logs..." msgstr "Fazendo a 'migração' dos logs..." -#: ../src/gajim.py:1879 +#: ../src/gajim.py:1933 msgid "Please wait while logs are being migrated..." msgstr "" "Por favor, aguarde enquanto que a migração dos seus registos de conversas é " "feita " -#: ../src/gajim_themes_window.py:67 +#: ../src/gajim_themes_window.py:59 msgid "Theme" msgstr "Tema" #. don't confuse translators -#: ../src/gajim_themes_window.py:149 +#: ../src/gajim_themes_window.py:141 msgid "theme name" msgstr "nome do tema" -#: ../src/gajim_themes_window.py:166 +#: ../src/gajim_themes_window.py:158 msgid "You cannot delete your current theme" msgstr "Não pode apagar o seu tema actual" -#: ../src/gajim_themes_window.py:167 +#: ../src/gajim_themes_window.py:159 msgid "Please first choose another for your current theme." msgstr "Por favor, escolha primeiro outro para o seu tema actual." -#: ../src/groupchat_control.py:68 +#: ../src/groupchat_control.py:99 #, fuzzy msgid "Private Chat" msgstr "Iniciar Conversa" -#: ../src/groupchat_control.py:68 +#: ../src/groupchat_control.py:99 #, fuzzy msgid "Private Chats" msgstr "Iniciar Conversa" -#: ../src/groupchat_control.py:84 +#: ../src/groupchat_control.py:115 msgid "Sending private message failed" msgstr "Falha ao enviar uma mensagem privada" #. in second %s code replaces with nickname -#: ../src/groupchat_control.py:86 +#: ../src/groupchat_control.py:117 #, python-format msgid "You are no longer in room \"%s\" or \"%s\" has left." msgstr "Já não se encontra na sala \"%s\" ou \"%s\" saiu." -#: ../src/groupchat_control.py:98 +#: ../src/groupchat_control.py:129 msgid "Group Chat" msgstr "Chat" -#: ../src/groupchat_control.py:98 +#: ../src/groupchat_control.py:129 #, fuzzy msgid "Group Chats" msgstr "Chat" -#: ../src/groupchat_control.py:595 +#: ../src/groupchat_control.py:308 +#, fuzzy +msgid "Insert Nickname" +msgstr "Muda Alcu_nha" + +#: ../src/groupchat_control.py:702 msgid "This room has no subject" msgstr "Esta sala não tem assunto" #. do not print 'kicked by None' -#: ../src/groupchat_control.py:693 +#: ../src/groupchat_control.py:801 #, python-format msgid "%(nick)s has been kicked: %(reason)s" msgstr "%(nick)s foi expulso: %(reason)s" -#: ../src/groupchat_control.py:697 +#: ../src/groupchat_control.py:805 #, python-format msgid "%(nick)s has been kicked by %(who)s: %(reason)s" msgstr "%(nick)s foi expulso por %(who)s: %(reason)s" #. do not print 'banned by None' -#: ../src/groupchat_control.py:704 +#: ../src/groupchat_control.py:812 #, python-format msgid "%(nick)s has been banned: %(reason)s" msgstr "%(nick)s foi banido: %(reason)s" -#: ../src/groupchat_control.py:708 +#: ../src/groupchat_control.py:816 #, python-format msgid "%(nick)s has been banned by %(who)s: %(reason)s" msgstr "%(nick)s foi banido por %(who)s: %(reason)s" -#: ../src/groupchat_control.py:716 +#: ../src/groupchat_control.py:824 #, python-format msgid "You are now known as %s" msgstr "É agora conhecido como %s" -#: ../src/groupchat_control.py:718 +#: ../src/groupchat_control.py:826 #, python-format msgid "%s is now known as %s" msgstr "%s agora é conhecido como %s" -#: ../src/groupchat_control.py:757 +#: ../src/groupchat_control.py:897 #, python-format msgid "%s has left" msgstr "%s saiu da sala" +#: ../src/groupchat_control.py:902 +#, python-format +msgid "%s has joined the room" +msgstr "" + #. No status message -#: ../src/groupchat_control.py:759 ../src/roster_window.py:1015 +#: ../src/groupchat_control.py:904 ../src/roster_window.py:1028 #, python-format msgid "%s is now %s" msgstr "%s está agora %s" -#: ../src/groupchat_control.py:871 ../src/groupchat_control.py:888 -#: ../src/groupchat_control.py:981 ../src/groupchat_control.py:997 +#: ../src/groupchat_control.py:1022 ../src/groupchat_control.py:1039 +#: ../src/groupchat_control.py:1132 ../src/groupchat_control.py:1148 #, python-format msgid "Nickname not found: %s" msgstr "Alcunha não encontrada: %s" -#: ../src/groupchat_control.py:915 +#: ../src/groupchat_control.py:1066 #, python-format msgid "Invited %(contact_jid)s to %(room_jid)s." msgstr "%(contact_jid)s foi convidado(a) para %(room_jid)s." #. %s is something the user wrote but it is not a jid so we inform -#: ../src/groupchat_control.py:922 ../src/groupchat_control.py:952 +#: ../src/groupchat_control.py:1073 ../src/groupchat_control.py:1103 #, python-format msgid "%s does not appear to be a valid JID" msgstr "%s não parece ser um JID válido" -#: ../src/groupchat_control.py:1019 +#: ../src/groupchat_control.py:1185 #, fuzzy, python-format msgid "No such command: /%s (if you want to send this, prefix it with /say)" msgstr "" "Comando inexistente: /%s (se desejar enviar isto, escreva primeiro /say)" -#: ../src/groupchat_control.py:1041 +#: ../src/groupchat_control.py:1207 #, python-format msgid "Commands: %s" msgstr "Comandos: %s" -#: ../src/groupchat_control.py:1043 +#: ../src/groupchat_control.py:1209 #, python-format msgid "" "Usage: /%s [reason], bans the JID from the room. The nickname " @@ -1757,7 +3955,7 @@ msgstr "" "pode ser substituida, mas não se conter \"@\". Se o JID estiver neste " "momento na sala, este será também expulso. Não suporta espaços numa alcunha." -#: ../src/groupchat_control.py:1049 +#: ../src/groupchat_control.py:1215 #, python-format msgid "" "Usage: /%s , opens a private chat window to the specified occupant." @@ -1765,12 +3963,12 @@ msgstr "" "Uso: /%s , abre uma janela de conversa privada com o ocupante " "especificado." -#: ../src/groupchat_control.py:1053 +#: ../src/groupchat_control.py:1219 #, python-format msgid "Usage: /%s, clears the text window." msgstr "Uso: /%s, limpa a janela de texto." -#: ../src/groupchat_control.py:1055 +#: ../src/groupchat_control.py:1221 #, python-format msgid "" "Usage: /%s [reason], closes the current window or tab, displaying reason if " @@ -1779,12 +3977,12 @@ msgstr "" "Uso: /%s [razão], fecha a janela ou aba actual, exibindo a razão se " "especificada." -#: ../src/groupchat_control.py:1058 +#: ../src/groupchat_control.py:1224 #, fuzzy, python-format msgid "Usage: /%s, hide the chat buttons." msgstr "Uso: /%s, limpa a janela de texto." -#: ../src/groupchat_control.py:1060 +#: ../src/groupchat_control.py:1226 #, python-format msgid "" "Usage: /%s [reason], invites JID to the current room, optionally " @@ -1793,7 +3991,7 @@ msgstr "" "Uso: /%s [razão], convida o JID para a sala actual, fornecendo " "opcionalmente uma razão." -#: ../src/groupchat_control.py:1064 +#: ../src/groupchat_control.py:1230 #, python-format msgid "" "Usage: /%s @[/nickname], offers to join room@server optionally " @@ -1802,7 +4000,7 @@ msgstr "" "Uso: /%s @[/alcunha], convida a juntar-se a sala@servidor, " "usando opcionalmente uma alcunha especificada." -#: ../src/groupchat_control.py:1068 +#: ../src/groupchat_control.py:1234 #, python-format msgid "" "Usage: /%s [reason], removes the occupant specified by nickname " @@ -1812,7 +4010,7 @@ msgstr "" "Uso: /%s [razão], remove o ocupante especificado pela alcunha da " "sala e opcionalmente exibe uma razão. Não suporta espaços na alcunha." -#: ../src/groupchat_control.py:1073 +#: ../src/groupchat_control.py:1239 #, python-format msgid "" "Usage: /%s , sends action to the current room. Use third person. (e." @@ -1821,7 +4019,7 @@ msgstr "" "Uso: /%s , envia uma acção para a sala actual. Utilize a terceira " "pessoa. (Por exemplo, /%s explode.)" -#: ../src/groupchat_control.py:1077 +#: ../src/groupchat_control.py:1243 #, fuzzy, python-format msgid "" "Usage: /%s [message], opens a private message windowand sends " @@ -1830,96 +4028,101 @@ msgstr "" "Uso: /%s [mensagem], abre uma janela de mensagem privada e envia " "uma mensagem ao ocupante da sala especificado pela alcunha." -#: ../src/groupchat_control.py:1082 +#: ../src/groupchat_control.py:1248 #, python-format msgid "Usage: /%s , changes your nickname in current room." msgstr "Uso: /%s , muda a sua alcunha na sala actual." -#: ../src/groupchat_control.py:1086 +#: ../src/groupchat_control.py:1252 +#, fuzzy, python-format +msgid "Usage: /%s , display the names of room occupants." +msgstr "Uso: /%s [tópico], exibe ou actualiza o tópico da sala actual." + +#: ../src/groupchat_control.py:1256 #, python-format msgid "Usage: /%s [topic], displays or updates the current room topic." msgstr "Uso: /%s [tópico], exibe ou actualiza o tópico da sala actual." -#: ../src/groupchat_control.py:1089 +#: ../src/groupchat_control.py:1259 #, python-format msgid "" "Usage: /%s , sends a message without looking for other commands." msgstr "" "Uso: /%s , envia uma mensagem sem procurar por outros comandos." -#: ../src/groupchat_control.py:1092 +#: ../src/groupchat_control.py:1262 #, python-format msgid "No help info for /%s" msgstr "Não há informações de ajuda para /%s" -#: ../src/groupchat_control.py:1128 +#: ../src/groupchat_control.py:1304 #, python-format msgid "Are you sure you want to leave room \"%s\"?" msgstr "Tem a certeza de que deseja sair da sala \"%s\"?" -#: ../src/groupchat_control.py:1129 +#: ../src/groupchat_control.py:1305 msgid "If you close this window, you will be disconnected from this room." msgstr "Se fechar esta janela, perder-se-á a ligação a esta sala." -#: ../src/groupchat_control.py:1133 +#: ../src/groupchat_control.py:1309 #, fuzzy msgid "Do _not ask me again" msgstr "_Não voltar a perguntar" -#: ../src/groupchat_control.py:1167 +#: ../src/groupchat_control.py:1343 msgid "Changing Subject" msgstr "Mudar Assunto" -#: ../src/groupchat_control.py:1168 +#: ../src/groupchat_control.py:1344 msgid "Please specify the new subject:" msgstr "Por favor, especifique o novo assunto:" -#: ../src/groupchat_control.py:1176 +#: ../src/groupchat_control.py:1352 msgid "Changing Nickname" msgstr "Mudar Alcunha" -#: ../src/groupchat_control.py:1177 +#: ../src/groupchat_control.py:1353 msgid "Please specify the new nickname you want to use:" msgstr "Por favor, especifique a nova alcunha a usar:" -#: ../src/groupchat_control.py:1202 +#: ../src/groupchat_control.py:1379 msgid "Bookmark already set" msgstr "Bookmark já está configurado" -#: ../src/groupchat_control.py:1203 +#: ../src/groupchat_control.py:1380 #, python-format msgid "Room \"%s\" is already in your bookmarks." msgstr "Sala \"%s\" já existe nos seus bookmarks." -#: ../src/groupchat_control.py:1212 +#: ../src/groupchat_control.py:1389 msgid "Bookmark has been added successfully" msgstr "Bookmark foi adicionado com sucesso" -#: ../src/groupchat_control.py:1213 +#: ../src/groupchat_control.py:1390 msgid "You can manage your bookmarks via Actions menu in your roster." msgstr "Pode gerir os seus bookmarks pelo menu de Acções na sua janela." #. ask for reason -#: ../src/groupchat_control.py:1322 +#: ../src/groupchat_control.py:1500 #, python-format msgid "Kicking %s" msgstr "Expulsando %s" -#: ../src/groupchat_control.py:1323 ../src/groupchat_control.py:1568 +#: ../src/groupchat_control.py:1501 ../src/groupchat_control.py:1779 msgid "You may specify a reason below:" msgstr "Pode especificar uma razão em baixo:" #. ask for reason -#: ../src/groupchat_control.py:1567 +#: ../src/groupchat_control.py:1778 #, python-format msgid "Banning %s" msgstr "Banindo %s" -#: ../src/gtkexcepthook.py:52 +#: ../src/gtkexcepthook.py:51 msgid "A programming error has been detected" msgstr "Um erro de programação foi detectado" -#: ../src/gtkexcepthook.py:53 +#: ../src/gtkexcepthook.py:52 msgid "" "It probably is not fatal, but should be reported to the developers " "nonetheless." @@ -1927,1798 +4130,91 @@ msgstr "" "Provavelmente não se trata de um erro fatal, mas, ainda assim, os " "programadores deveriam ser informados." -#: ../src/gtkexcepthook.py:59 +#: ../src/gtkexcepthook.py:58 msgid "_Report Bug" msgstr "_Reportar Erro (Bug)" -#: ../src/gtkexcepthook.py:82 +#: ../src/gtkexcepthook.py:81 msgid "Details" msgstr "Detalhes" -#. this always tracebacks -#: ../src/gtkgui.glade.h:1 -msgid "0" -msgstr "0" - -#: ../src/gtkgui.glade.h:2 -msgid "" -"Account is being created\n" -"\n" -"Please wait..." -msgstr "" -"Conta está a ser criada\n" -"\n" -"Por favor, aguarde..." - -#: ../src/gtkgui.glade.h:5 -msgid "Advanced Configuration Editor" -msgstr "Editor de Configuração Avançada" - -#: ../src/gtkgui.glade.h:6 -msgid "Applications" -msgstr "Aplicações" - -#: ../src/gtkgui.glade.h:7 -msgid "Chatstate Tab Colors" -msgstr "" - -#. a header for custom browser/client/file manager. so translate sth like: Custom Settings -#: ../src/gtkgui.glade.h:9 -msgid "Custom" -msgstr "Definições Personalizadas" - -#: ../src/gtkgui.glade.h:10 -msgid "Description" -msgstr "Descrição" - -#: ../src/gtkgui.glade.h:11 -msgid "Format of a line" -msgstr "Formato de uma linha" - -#: ../src/gtkgui.glade.h:12 -msgid "Interface Customization" -msgstr "Personalização da Interface" - -#: ../src/gtkgui.glade.h:13 -msgid "Jabber Traffic" -msgstr "Tráfego Jabber" - -#: ../src/gtkgui.glade.h:14 -msgid "Miscellaneous" -msgstr "Diversos" - -#: ../src/gtkgui.glade.h:15 -msgid "NOTE: You should restart gajim for some setting to take effect" -msgstr "" - -#: ../src/gtkgui.glade.h:16 -msgid "OpenPGP" -msgstr "OpenPGP" - -#: ../src/gtkgui.glade.h:17 -msgid "Personal Information" -msgstr "Detalhes Pessoais" - -#: ../src/gtkgui.glade.h:18 -msgid "Please choose one of the options below:" -msgstr "Por favor escolha uma das opções abaixo:" - -#: ../src/gtkgui.glade.h:19 -msgid "Please fill in the data for your new account" -msgstr "Por favor preencha os dados para a sua nova conta" - -#: ../src/gtkgui.glade.h:20 -msgid "Preset Status Messages" -msgstr "Configurar Mensagens de Estado" - -#: ../src/gtkgui.glade.h:21 -msgid "Properties" -msgstr "Propriedades" - -#: ../src/gtkgui.glade.h:22 -msgid "Settings" -msgstr "Definições" - -#: ../src/gtkgui.glade.h:23 -msgid "Sounds" -msgstr "Sons" - -#: ../src/gtkgui.glade.h:24 -#, fuzzy -msgid "Type your new status message" -msgstr "Escreva a sua nova mensagem de estado:" - -#: ../src/gtkgui.glade.h:25 -msgid "Visual Notifications" -msgstr "Notificações Visuais" - -#: ../src/gtkgui.glade.h:26 -msgid "What do you want to do?" -msgstr "O que pretende fazer?" - -#: ../src/gtkgui.glade.h:27 -msgid "XML Input" -msgstr "Entrada XML" - -#: ../src/gtkgui.glade.h:28 -msgid "A list of active, completed and stopped file transfers" -msgstr "Uma lista de transferências de ficheiros activas, completas e paradas" - -#: ../src/gtkgui.glade.h:29 -msgid "A_ccounts" -msgstr "_Contas" - -#: ../src/gtkgui.glade.h:30 -#, fuzzy -msgid "A_fter nickname:" -msgstr "Depois da alcunha:" - -#. "About" is the text of a tab of vcard window -#: ../src/gtkgui.glade.h:32 -msgid "About" -msgstr "Sobre" - -#: ../src/gtkgui.glade.h:33 -msgid "Accept" -msgstr "Aceitar" - -#: ../src/gtkgui.glade.h:34 -msgid "Account" -msgstr "Conta" - -#: ../src/gtkgui.glade.h:35 -msgid "" -"Account\n" -"Group\n" -"Contact\n" -"Banner" -msgstr "" -"Count\n" -"Grupo\n" -"Contacto\n" -"Banner" - -#: ../src/gtkgui.glade.h:39 -msgid "Account Modification" -msgstr "Modificação da Conta" - -#: ../src/gtkgui.glade.h:40 -msgid "Accounts" -msgstr "Contas" - -#: ../src/gtkgui.glade.h:42 -msgid "Add New Contact" -msgstr "Adicionar Novo Contacto" - -#: ../src/gtkgui.glade.h:43 -#, fuzzy -msgid "Add Special _Notification" -msgstr "Notificações Visuais" - -#: ../src/gtkgui.glade.h:44 -msgid "Add _Contact" -msgstr "Adicionar _Contacto" - -#: ../src/gtkgui.glade.h:45 -msgid "Address" -msgstr "Endereço" - -#: ../src/gtkgui.glade.h:46 -msgid "Advanced" -msgstr "Avançado" - -#: ../src/gtkgui.glade.h:47 -msgid "Advanced Configuration Editor" -msgstr "Editor de Configuração Avançada" - -#: ../src/gtkgui.glade.h:48 -msgid "" -"All chat states\n" -"Composing only\n" -"Disabled" -msgstr "" -"Todos os estados da conversa\n" -"Apenas compondo uma mensagem\n" -"Desactivado" - -#: ../src/gtkgui.glade.h:51 -msgid "Allow _OS information to be sent" -msgstr "Permitir o envio de informações do _SO " - -#: ../src/gtkgui.glade.h:52 -msgid "Allow him/her to see my status" -msgstr "Permitir que ele/ela veja o meu estado" - -#: ../src/gtkgui.glade.h:53 -msgid "Allow popup/notifications when I'm _away/na/busy/invisible" -msgstr "" -"Permitir popup/notificações quando estou _ausente/indisponível/ocupado/" -"invisível" - -#: ../src/gtkgui.glade.h:54 -msgid "Also known as iChat style" -msgstr "Conhecido também como estilo iChat" - -#: ../src/gtkgui.glade.h:55 -msgid "Ask status message when I:" -msgstr "Pedir a mensagem de estado quando eu me: " - -#: ../src/gtkgui.glade.h:56 -msgid "Ask to see his/her status" -msgstr "Pedir para ver o estado dele/dela" - -#: ../src/gtkgui.glade.h:57 -msgid "Ask:" -msgstr "Perguntar:" - -#: ../src/gtkgui.glade.h:58 -msgid "Assign Open_PGP Key" -msgstr "Atribuir chave OpenPGP" - -#: ../src/gtkgui.glade.h:59 -msgid "Authorize contact so he can know when you're connected" -msgstr "Autorize o contacto para ele saber quando você está ligado" - -#: ../src/gtkgui.glade.h:60 -msgid "Auto _away after:" -msgstr "Marcar automaticamente como _ausente depois de:" - -#: ../src/gtkgui.glade.h:61 -msgid "Auto _not available after:" -msgstr "Marcar automaticamente como _indisponível depois de:" - -#: ../src/gtkgui.glade.h:62 -msgid "Auto join" -msgstr "Entrar automaticamente" - -#: ../src/gtkgui.glade.h:63 -msgid "" -"Autodetect on every Gajim startup\n" -"Always use GNOME default applications\n" -"Always use KDE default applications\n" -"Custom" -msgstr "" -"Auto-detectar a cada arranque da aplicação\n" -"Usar sempre aplicações GNOME padrão\n" -"Usar sempre aplicações KDE padrão\n" -"Personalizar" - -#: ../src/gtkgui.glade.h:67 -msgid "Automatically authorize contact" -msgstr "Autorizar automaticamente contacto" - -#: ../src/gtkgui.glade.h:68 -msgid "Autoreconnect when connection is lost" -msgstr "Religar automaticamente em caso de perda de ligação." - -#: ../src/gtkgui.glade.h:69 -#, fuzzy -msgid "B_efore nickname:" -msgstr "Antes da alcunha:" - -#: ../src/gtkgui.glade.h:70 -msgid "Birthday:" -msgstr "Aniversário" - -#: ../src/gtkgui.glade.h:71 -msgid "Bold" -msgstr "Negrito" - -#: ../src/gtkgui.glade.h:72 -msgid "Build custom query" -msgstr "Build custom query" - -#: ../src/gtkgui.glade.h:73 -msgid "C_onnect on Gajim startup" -msgstr "_Ligar ao arranque" - -#: ../src/gtkgui.glade.h:74 -msgid "Cancel file transfer" -msgstr "Cancelar transferência de ficheiro" - -#: ../src/gtkgui.glade.h:75 -msgid "Cancels the selected file transfer" -msgstr "Cancela a transferência de ficheiro seleccionada" - -#: ../src/gtkgui.glade.h:76 -msgid "Cancels the selected file transfer and removes incomplete file" -msgstr "" -"Cancela a transferência de ficheiro seleccionada e remove o ficheiro " -"incompleto" - -#: ../src/gtkgui.glade.h:77 -msgid "Chan_ge Password" -msgstr "Mu_dar Senha" - -#: ../src/gtkgui.glade.h:78 -msgid "Change Password" -msgstr "Mudar Senha" - -#: ../src/gtkgui.glade.h:79 -msgid "Change _Nickname" -msgstr "Muda Alcu_nha" - -#: ../src/gtkgui.glade.h:80 -msgid "Change _Subject" -msgstr "Muda A_ssunto" - -#: ../src/gtkgui.glade.h:82 -msgid "Chat state noti_fications:" -msgstr "Noti_ficação do estado da conversa:" - -#: ../src/gtkgui.glade.h:83 -msgid "" -"Check this option, only if someone you don't have in the roster spams/annoys " -"you. Use with caution, cause it blocks all messages from any contact that is " -"not in the roster" -msgstr "" -"Marque esta opção apenas se alguem que não está na sua lista o estiver a " -"spammar/incomodar. Use com precaução, pois isto bloqueia todas as mensagens " -"de qualquer contacto que não estiver na sua lista." - -#: ../src/gtkgui.glade.h:84 -msgid "" -"Check this so Gajim will connect in port 5223 where legacy servers are " -"expected to have SSL capabilities. Note that Gajim uses TLS encryption by " -"default if broadcasted by the server, and with this option enabled TLS will " -"be disabled" -msgstr "" -"Marque esta opção se quiser que o Gajim se ligue usando a porta 5223, onde " -"se espera que servidores específicos possuem capacidades SSL. Note que o " -"Gajim usa encriptação TLS por defeito se emitida pelo servidor, e que com " -"esta opção marcada o TLS será desactivado." - -#: ../src/gtkgui.glade.h:85 -msgid "Choose _Key..." -msgstr "_Escolha chave..." - -#: ../src/gtkgui.glade.h:86 -msgid "City:" -msgstr "Cidade:" - -#: ../src/gtkgui.glade.h:87 -msgid "Clean _up" -msgstr "_Limpar" - -#: ../src/gtkgui.glade.h:88 -msgid "Click to change account's password" -msgstr "Clique para mudar a senha da conta" - -#: ../src/gtkgui.glade.h:89 -#, fuzzy -msgid "Click to insert an emoticon (Alt+M)" -msgstr "Clique para inserir um emoticon (Alt+E)" - -#: ../src/gtkgui.glade.h:90 -msgid "Click to see features (like MSN, ICQ transports) of jabber servers" -msgstr "" -"Clique para ver os serviços (tais como transportes MSN e ICQ) dos servidores " -"jabber" - -#: ../src/gtkgui.glade.h:91 -msgid "Click to see past conversation in this room" -msgstr "Clique para ver conversas anteriores nesta sala" - -#: ../src/gtkgui.glade.h:92 -msgid "Click to see past conversations with this contact" -msgstr "Clique para ver conversas anteriores com este contacto" - -#: ../src/gtkgui.glade.h:93 -msgid "Client:" -msgstr "Cliente:" - -#: ../src/gtkgui.glade.h:94 -msgid "Company:" -msgstr "Empresa:" - -#: ../src/gtkgui.glade.h:95 -msgid "Composing" -msgstr "" - -#: ../src/gtkgui.glade.h:96 -msgid "Configure _Room" -msgstr "Configurar _Sala" - -#: ../src/gtkgui.glade.h:97 -msgid "Connect when I press Finish" -msgstr "Ligar quando eu premir Concluir" - -#: ../src/gtkgui.glade.h:98 -msgid "Connection" -msgstr "Ligação" - -#: ../src/gtkgui.glade.h:99 -msgid "Contact Information" -msgstr "Informações do Contacto" - -#: ../src/gtkgui.glade.h:100 -msgid "Contact _Info" -msgstr "_Infos do Contacto" - -#: ../src/gtkgui.glade.h:101 -msgid "Conversation History" -msgstr "Histórico das Conversas" - -#: ../src/gtkgui.glade.h:102 -msgid "Country:" -msgstr "País:" - -#: ../src/gtkgui.glade.h:103 -#, fuzzy -msgid "Default status _iconset:" -msgstr "Iconset de _estados padrão:" - -#: ../src/gtkgui.glade.h:104 -msgid "Delete MOTD" -msgstr "Apagar MOTD" - -#: ../src/gtkgui.glade.h:105 -msgid "Deletes Message of the Day" -msgstr "Apaga a Mensagem do Dia" - -#: ../src/gtkgui.glade.h:106 -msgid "Deny" -msgstr "Negar" - -#: ../src/gtkgui.glade.h:107 -msgid "Deny authorization from contact so he cannot know when you're connected" -msgstr "" -"Recusar autorização do contacto, para que ele não possa saber quando você " -"está ligado" - -#: ../src/gtkgui.glade.h:108 -msgid "Department:" -msgstr "Departamento:" - -#: ../src/gtkgui.glade.h:109 -#, fuzzy -msgid "Display a_vatars of contacts in roster" -msgstr "Exibir imagens pessoais (avatars) dos contactos na lista" - -#: ../src/gtkgui.glade.h:110 -#, fuzzy -msgid "Display status _messages of contacts in roster" -msgstr "Exibir mensagens de estado dos contactos na lista" - -#: ../src/gtkgui.glade.h:111 -msgid "E-Mail:" -msgstr "E-Mail:" - -#: ../src/gtkgui.glade.h:112 -#, fuzzy -msgid "E_very 5 minutes" -msgstr "De 5 em 5 _minutos" - -#: ../src/gtkgui.glade.h:113 -msgid "Edit Groups" -msgstr "Editar Grupos" - -#: ../src/gtkgui.glade.h:114 -msgid "Edit Personal Information..." -msgstr "Editar Detalhes Pessoais..." - -#: ../src/gtkgui.glade.h:115 -msgid "Edit _Groups" -msgstr "Editar _Grupos" - -#: ../src/gtkgui.glade.h:116 -#, fuzzy -msgid "Emoticons:" -msgstr "Gerir Emoticons" - -#. XML Console enable checkbutton -#: ../src/gtkgui.glade.h:118 -msgid "Enable" -msgstr "Activar" - -#: ../src/gtkgui.glade.h:119 -msgid "Enter it again for confirmation:" -msgstr "Introduza novamente para confirmação" - -#: ../src/gtkgui.glade.h:120 -msgid "Enter new password:" -msgstr "Introduza a nova senha:" - -#: ../src/gtkgui.glade.h:121 -msgid "Events" -msgstr "Eventos" - -#: ../src/gtkgui.glade.h:122 -msgid "Extra Address:" -msgstr "Complemento:" - -#. Family Name -#: ../src/gtkgui.glade.h:124 -msgid "Family:" -msgstr "Família:" - -#: ../src/gtkgui.glade.h:125 -msgid "File Transfers" -msgstr "Transferências de Ficheiros" - -#: ../src/gtkgui.glade.h:126 -msgid "File _Transfers" -msgstr "_Transferências de Ficheiros" - -#: ../src/gtkgui.glade.h:127 -msgid "Filter:" -msgstr "Filtro:" - -#: ../src/gtkgui.glade.h:128 -msgid "Font style:" -msgstr "Estilo da letra:" - -#: ../src/gtkgui.glade.h:129 -msgid "Forbid him/her to see my status" -msgstr "Proibí-lo /-la de ver o meu estado" - -#: ../src/gtkgui.glade.h:130 -msgid "Format: YYYY-MM-DD" -msgstr "Formato: AAAA-MM-DD" - -#: ../src/gtkgui.glade.h:131 -msgid "Frequently Asked Questions (online)" -msgstr "Questões Perguntadas Frequentemente (FAQ) (online)" - -#: ../src/gtkgui.glade.h:132 -msgid "From:" -msgstr "De:" - -#: ../src/gtkgui.glade.h:133 -msgid "G_o" -msgstr "_Ir" - -#: ../src/gtkgui.glade.h:134 ../src/notify.py:167 ../src/notify.py:189 -#: ../src/notify.py:201 ../src/tooltips.py:339 -msgid "Gajim" -msgstr "Gajim" - -#: ../src/gtkgui.glade.h:135 -msgid "Gajim Themes Customization" -msgstr "Personalização de Temas do Gajim" - -#: ../src/gtkgui.glade.h:136 -#, fuzzy -msgid "" -"Gajim can send and receive meta-information related to a conversation you " -"may have with a contact. Here you can specify which chatstates you want to " -"send to the other party." -msgstr "" -"Gajim pode enviar e receber meta-informação relativa a uma conversa que " -"esteja a ter com um contacto " - -#: ../src/gtkgui.glade.h:137 -#, fuzzy -msgid "" -"Gajim will automatically show new events by poping up the relative window" -msgstr "" -"Gajim exibirá automaticamente a nova mensagem recebida numa nova janela de " -"conversa ou numa aba numa janela existente" - -#: ../src/gtkgui.glade.h:138 -#, fuzzy -msgid "" -"Gajim will notify you for new events via a popup in the bottom right of the " -"screen" -msgstr "" -"Gajim o notificará a cada nova mensagem através de um popup no canto " -"inferior direito do ecrã" - -#: ../src/gtkgui.glade.h:139 -msgid "" -"Gajim will notify you via a popup window in the bottom right of the screen " -"about contacts that just signed in" -msgstr "" -"Gajim o notificará através de um popup no canto inferior direito do ecrã " -"sobre os contactos que se ligarem" - -#: ../src/gtkgui.glade.h:140 -msgid "" -"Gajim will notify you via a popup window in the bottom right of the screen " -"about contacts that just signed out" -msgstr "" -"Gajim o notificará através de um popup no canto inferior direito do ecrã " -"sobre os contactos que se desligarem" - -#: ../src/gtkgui.glade.h:141 -#, fuzzy -msgid "" -"Gajim will only change the icon of the contact that triggered the new event" -msgstr "Gajim mudará apenas o ícone do contacto que enviou a nova mensagem" - -#: ../src/gtkgui.glade.h:142 -msgid "Gajim: Account Creation Wizard" -msgstr "Gajim: Criação Passo-a-passo de uma Conta" - -#. user has no group, print him in General -#: ../src/gtkgui.glade.h:143 ../src/roster_window.py:291 -#: ../src/roster_window.py:1183 ../src/roster_window.py:1405 -#: ../src/systray.py:286 -msgid "General" -msgstr "Geral" - -#. Given Name -#: ../src/gtkgui.glade.h:145 -msgid "Given:" -msgstr "Nome Dado:" - -#: ../src/gtkgui.glade.h:146 -#, fuzzy -msgid "Gone" -msgstr "Nenhum" - -#: ../src/gtkgui.glade.h:147 -msgid "Group:" -msgstr "Grupo:" - -#: ../src/gtkgui.glade.h:148 -msgid "HTTP Connect" -msgstr "Ligação HTTP" - -#: ../src/gtkgui.glade.h:149 -msgid "Help online" -msgstr "Ajuda online" - -#: ../src/gtkgui.glade.h:150 -msgid "Hides the window" -msgstr "Esconde a janela" - -#: ../src/gtkgui.glade.h:151 -msgid "Homepage:" -msgstr "Página pessoal:" - -#: ../src/gtkgui.glade.h:152 -msgid "Hostname: " -msgstr "Nome do Host:" - -#: ../src/gtkgui.glade.h:153 -msgid "I already have an account I want to use" -msgstr "Já tenho uma conta e quero usá-la" - -#: ../src/gtkgui.glade.h:154 -msgid "I want to _register for a new account" -msgstr "Quero _registar uma nova conta" - -#: ../src/gtkgui.glade.h:155 -msgid "I would like to add you to my contact list." -msgstr "Gostaria de o adicionar à minha lista de contactos." - -#: ../src/gtkgui.glade.h:156 -msgid "" -"If checked, Gajim will also broadcast some more IPs except from just your " -"IP, so file transfer has higher chances of working right." -msgstr "" - -#: ../src/gtkgui.glade.h:157 -#, fuzzy -msgid "" -"If checked, Gajim will display avatars of contacts in roster window and in " -"group chats" -msgstr "" -"Se marcado, Gajim exibirá imagens pessoais (avatars) dos seus contactos na " -"lista" - -#: ../src/gtkgui.glade.h:158 -#, fuzzy -msgid "" -"If checked, Gajim will display status messages of contacts under the contact " -"name in roster window and in group chats" -msgstr "" -"Se marcado, Gajim exibirá as mensagens de estado dos contactos debaixo dos " -"nomes de cada um na janela principal" - -#: ../src/gtkgui.glade.h:159 -msgid "If checked, Gajim will join this group chat on startup" -msgstr "Se marcado, o Gajim juntar-se-á a este chat no arranque" - -#: ../src/gtkgui.glade.h:160 -msgid "If checked, Gajim will remember the password for this account" -msgstr "Se marcado, o Gajim lembrar-se-á da senha para esta conta" - -#: ../src/gtkgui.glade.h:161 -msgid "" -"If checked, Gajim will remember the roster and chat window positions in the " -"screen and the sizes of them next time you run it" -msgstr "" -"Se marcado, o Gajim lembrar-se-á da posição da janela principal na próxima " -"vez que for executado" - -#: ../src/gtkgui.glade.h:162 -msgid "" -"If checked, Gajim will send keep-alive packets so it prevents connection " -"timeout which results in disconnection" -msgstr "" -"Se marcado, o Gajim enviará pacotes keep-alive para evitar timeouts da " -"ligação, os quais resultam na perda dessa ligação" - -#: ../src/gtkgui.glade.h:163 -msgid "" -"If checked, Gajim will store the password in ~/.gajim/config with 'read' " -"permission only for you" -msgstr "" -"Se marcado, o Gajim guardará a sua senha em ~/.gajim/config com permissão de " -"'leitura' apenas para si" - -#: ../src/gtkgui.glade.h:164 -msgid "" -"If checked, Gajim will use protocol-specific status icons. (eg. A contact " -"from MSN will have the equivalent msn icon for status online, away, busy, " -"etc...)" -msgstr "" -"Se marcado, o Gajim usará ícones de estado específicos a cada protocolo. " -"(Por exemplo, um contacto do MSN terá o ícone msn equivalente para o estado " -"disponível, ausente, ocupado, etc...)" - -#: ../src/gtkgui.glade.h:165 -msgid "" -"If checked, Gajim, when launched, will automatically connect to jabber using " -"this account" -msgstr "" -"Se marcado, o Gajim, quando iniciado, ligar-se-á automaticamente ao jabber " -"usando esta conta" - -#: ../src/gtkgui.glade.h:166 -msgid "" -"If checked, any change to the global status (handled by the combobox at the " -"bottom of the roster window) will change the status of this account " -"accordingly" -msgstr "" -"Se marcado, qualquer mudança feita ao estado global (gerido pelo combobox no " -"fundo da lista de contactos) alterará também o estado desta conta" - -#: ../src/gtkgui.glade.h:167 -#, fuzzy -msgid "" -"If not disabled, Gajim will replace ascii smilies like ':)' with equivalent " -"animated or static graphical emoticons" -msgstr "" -"Se marcado, o Gajim trocará smilies ASCII tais como ':)' pelos emoticons " -"gráficos equivalentes." - -#: ../src/gtkgui.glade.h:168 -msgid "" -"If you have 2 or more accounts and it is checked, Gajim will list all " -"contacts as if you had one account" -msgstr "" -"Se tem duas ou mais contas e esta opção for marcada, o Gajim listará todos " -"os contactos como se tivesse apenas uma conta" - -#: ../src/gtkgui.glade.h:169 -#, fuzzy -msgid "Inactive" -msgstr "Activo" - -#. Info/Query make the "IQ" initials. So translate like this 'YourLang/YourLang (Info/Query)'. Thanks (it's a tooltip so width is not a problem) -#: ../src/gtkgui.glade.h:171 -msgid "Info/Query" -msgstr "Info/Consulta" - -#: ../src/gtkgui.glade.h:172 -msgid "Information about you, as stored in the server" -msgstr "Informações sobre si, tal como estão gravadas no servidor" - -#: ../src/gtkgui.glade.h:173 -msgid "Invitation Received" -msgstr "Convite Recebido" - -#: ../src/gtkgui.glade.h:174 -msgid "Italic" -msgstr "Itálico" - -#: ../src/gtkgui.glade.h:175 -msgid "Jabber" -msgstr "Jabber" - -#: ../src/gtkgui.glade.h:176 -msgid "Jabber ID:" -msgstr "Jabber ID:" - -#: ../src/gtkgui.glade.h:178 -msgid "Join _Group Chat" -msgstr "_Entrar num Chat" - -#: ../src/gtkgui.glade.h:179 -msgid "Location" -msgstr "Morada" - -#: ../src/gtkgui.glade.h:180 -#, fuzzy -msgid "" -"MUC\n" -"Messages" -msgstr "Mensagem" - -#: ../src/gtkgui.glade.h:182 -msgid "" -"MUC Directed\n" -"Messages" -msgstr "" - -#: ../src/gtkgui.glade.h:184 -#, fuzzy -msgid "Ma_nage..." -msgstr "Gerir..." - -#: ../src/gtkgui.glade.h:185 -msgid "Manage Accounts" -msgstr "Gerir Contas" - -#: ../src/gtkgui.glade.h:186 -msgid "Manage Bookmarks" -msgstr "Gerir Bookmarks" - -#: ../src/gtkgui.glade.h:187 -msgid "Manage Proxy Profiles" -msgstr "Gerir Perfis de Proxy" - -#: ../src/gtkgui.glade.h:188 -msgid "Manage..." -msgstr "Gerir..." - -#. Middle Name -#: ../src/gtkgui.glade.h:190 -msgid "Middle:" -msgstr "Nome do meio:" - -#: ../src/gtkgui.glade.h:191 -msgid "Mo_derator" -msgstr "Mo_derador" - -#: ../src/gtkgui.glade.h:192 -msgid "More" -msgstr "Mais" - -#: ../src/gtkgui.glade.h:193 -msgid "Name:" -msgstr "Nome:" - -#: ../src/gtkgui.glade.h:194 -msgid "" -"Never\n" -"Always\n" -"Per account\n" -"Per type" -msgstr "" - -#: ../src/gtkgui.glade.h:198 -msgid "Nickname:" -msgstr "Alcunha:" - -#. None means no proxy profile selected -#: ../src/gtkgui.glade.h:201 -msgid "None" -msgstr "Nenhum" - -#: ../src/gtkgui.glade.h:202 -msgid "Notify me about contacts that: " -msgstr "Notificar-me sobre contactos que acabem de se: " - -#: ../src/gtkgui.glade.h:203 -msgid "Notify on new _Gmail e-mail" -msgstr "" - -#: ../src/gtkgui.glade.h:204 -msgid "OS:" -msgstr "SO:" - -#: ../src/gtkgui.glade.h:205 -msgid "On every _message" -msgstr "Em todas as _mensagens" - -#: ../src/gtkgui.glade.h:206 -#, fuzzy -msgid "One message _window:" -msgstr "Enviar mensagem e fechar a janela" - -#: ../src/gtkgui.glade.h:208 -msgid "Pass_word:" -msgstr "_Senha:" - -#: ../src/gtkgui.glade.h:209 -msgid "Passphrase" -msgstr "Frase de acesso" - -#: ../src/gtkgui.glade.h:210 -msgid "Password:" -msgstr "Senha:" - -#: ../src/gtkgui.glade.h:211 ../src/tooltips.py:645 -msgid "Paused" -msgstr "Pausada" - -#: ../src/gtkgui.glade.h:212 -msgid "Personal Information" -msgstr "Detalhes Pessoais..." - -#: ../src/gtkgui.glade.h:213 -msgid "Phone No.:" -msgstr "Telefone:" - -#: ../src/gtkgui.glade.h:214 -msgid "Play _sounds" -msgstr "Tocar _Sons" - -#: ../src/gtkgui.glade.h:215 -msgid "Port: " -msgstr "Porta:" - -#: ../src/gtkgui.glade.h:216 -msgid "Position:" -msgstr "Cargo:" - -#: ../src/gtkgui.glade.h:217 -msgid "Postal Code:" -msgstr "Código Postal:" - -#: ../src/gtkgui.glade.h:218 -msgid "Preferences" -msgstr "Preferências" - -#. Prefix in Name -#: ../src/gtkgui.glade.h:220 -msgid "Prefix:" -msgstr "Prefixo:" - -#: ../src/gtkgui.glade.h:221 -#, fuzzy -msgid "Preset messages:" -msgstr "mensagem de estado:" - -#: ../src/gtkgui.glade.h:222 -msgid "Print time:" -msgstr "Mostrar hora:" - -#: ../src/gtkgui.glade.h:223 -msgid "Priori_ty:" -msgstr "_Prioridade" - -#: ../src/gtkgui.glade.h:224 -msgid "" -"Priority is used in Jabber to determine who gets the events from the jabber " -"server when two or more clients are connected using the same account; The " -"client with the highest priority gets the events" -msgstr "" -"A prioridade é usada no Jabber para determinar quem recebe os eventos do " -"servidor jabber quando dois ou mais clientes estão ligados usando a mesma " -"conta; O cliente com a maior prioridade receberá os eventos" - -#: ../src/gtkgui.glade.h:225 -msgid "Profile, Avatar" -msgstr "Perfil, Avatar" - -#: ../src/gtkgui.glade.h:226 -msgid "Protocol:" -msgstr "Protocolo:" - -#: ../src/gtkgui.glade.h:227 -msgid "Proxy:" -msgstr "Proxy:" - -#: ../src/gtkgui.glade.h:228 -msgid "Query Builder..." -msgstr "Query Builder..." - -#: ../src/gtkgui.glade.h:229 -msgid "Recently:" -msgstr "Recentemente:" - -#: ../src/gtkgui.glade.h:230 -msgid "Register to" -msgstr "Registar para" - -#: ../src/gtkgui.glade.h:231 -msgid "Remove account _only from Gajim" -msgstr "Remover conta _apenas do Gajim" - -#: ../src/gtkgui.glade.h:232 -msgid "Remove account from Gajim and from _server" -msgstr "Remover conta do Gajim e do _servidor" - -#: ../src/gtkgui.glade.h:233 -msgid "Remove file transfer from the list." -msgstr "Remover a transferência de ficheiro da lista." - -#: ../src/gtkgui.glade.h:234 -msgid "Removes completed, canceled and failed file transfers from the list" -msgstr "" -"Remove transferências de ficheiros completas, canceladas e falhadas da lista" - -#: ../src/gtkgui.glade.h:235 -msgid "Reply to this message" -msgstr "Responder a esta mensagem" - -#: ../src/gtkgui.glade.h:236 -msgid "Resour_ce: " -msgstr "Re_curso: " - -#: ../src/gtkgui.glade.h:237 -msgid "" -"Resource is sent to the Jabber server in order to separate the same JID in " -"two or more parts depending on the number of the clients connected in the " -"same server with the same account. So you might be connected in the same " -"account with resource 'Home' and 'Work' at the same time. The resource which " -"has the highest priority will get the events. (see below)" -msgstr "" -"O recurso é enviado ao servidor jabber para separar o mesmo JID em duas ou " -"mais partes dependentemente do número de clientes ligados ao mesmo servidor " -"com as mesma conta. Por exemplo, pode estar ligado à mesma conta com os " -"recursos 'Casa' e 'Trabalho' ao mesmo tempo. O recurso com a maior " -"prioridade receberá os eventos. (ver em baixo)" - -#: ../src/gtkgui.glade.h:238 -msgid "Resource:" -msgstr "Recurso:" - -#: ../src/gtkgui.glade.h:239 -msgid "Role:" -msgstr "Função:" - -#: ../src/gtkgui.glade.h:240 -msgid "Room Configuration" -msgstr "Configuração da Sala" - -#: ../src/gtkgui.glade.h:241 -msgid "Room:" -msgstr "Sala:" - -#: ../src/gtkgui.glade.h:242 -msgid "Save _passphrase (insecure)" -msgstr "Guardar _frase de acesso (inseguro)" - -#: ../src/gtkgui.glade.h:243 -msgid "Save _position and size for roster and chat windows" -msgstr "" -"Guardar _posição e tamanho das janelas de conversa e lista de contactos" - -#: ../src/gtkgui.glade.h:244 -#, fuzzy -msgid "Save as Preset..." -msgstr "Guardar Ficheiro como..." - -#: ../src/gtkgui.glade.h:245 -msgid "Save conversation _logs for all contacts" -msgstr "Guardar _históricos das conversas para todos os contactos" - -#: ../src/gtkgui.glade.h:246 -msgid "Save pass_word" -msgstr "Guardar _senha" - -#: ../src/gtkgui.glade.h:247 -#, fuzzy -msgid "Search" -msgstr "_Pesquisar" - -#: ../src/gtkgui.glade.h:248 -msgid "Sen_d" -msgstr "_Enviar" - -#: ../src/gtkgui.glade.h:249 -msgid "Send File" -msgstr "Enviar Ficheiro" - -#: ../src/gtkgui.glade.h:250 -msgid "Send Single _Message" -msgstr "Enviar _Mensagem Simples" - -#: ../src/gtkgui.glade.h:251 -#, fuzzy -msgid "Send Single _Message..." -msgstr "Enviar _Mensagem Simples" - -#: ../src/gtkgui.glade.h:252 -msgid "Send _File" -msgstr "Enviar _Ficheiro" - -#: ../src/gtkgui.glade.h:253 -msgid "Send keep-alive packets" -msgstr "Enviar pacotes keep-alive" - -#: ../src/gtkgui.glade.h:254 -msgid "Send message" -msgstr "Enviar mensagem" - -#: ../src/gtkgui.glade.h:255 -msgid "Send message and close window" -msgstr "Enviar mensagem e fechar a janela" - -#: ../src/gtkgui.glade.h:256 -msgid "Sends a message to currently connected users to this server" -msgstr "Envia uma mensagem aos utilizadores ligados ao servidor neste momento" - -#: ../src/gtkgui.glade.h:257 -msgid "Server:" -msgstr "Servidor:" - -#: ../src/gtkgui.glade.h:258 -msgid "Servers Features" -msgstr "Recursos dos Servidores" - -#: ../src/gtkgui.glade.h:259 -msgid "Set MOTD" -msgstr "Definir MOTD" - -#: ../src/gtkgui.glade.h:260 -msgid "Set _Avatar" -msgstr "Definir _Avatar" - -#: ../src/gtkgui.glade.h:261 -#, fuzzy -msgid "Set my profile when I connect" -msgstr "Definir uma imagem pessoal (avatar) quando me ligo" - -#: ../src/gtkgui.glade.h:262 -msgid "Sets Message of the Day" -msgstr "Define a Mensagem do Dia" - -#: ../src/gtkgui.glade.h:263 -msgid "Show All Pending _Events" -msgstr "Mostrar Todos os _Eventos Pedentes" - -#: ../src/gtkgui.glade.h:264 -msgid "Show _Offline Contacts" -msgstr "Mostrar Contactos _Offline" - -#: ../src/gtkgui.glade.h:265 -msgid "Show _Roster" -msgstr "Mostrar _Lista de Contactos" - -#: ../src/gtkgui.glade.h:266 -msgid "Show _XML Console" -msgstr "Mostrar Consola _XML" - -#: ../src/gtkgui.glade.h:267 -msgid "Show only in _roster" -msgstr "Mostrar apenas na _lista" - -#: ../src/gtkgui.glade.h:268 -msgid "Shows a list of file transfers between you and other" -msgstr "" -"Mostra uma lista de transferências de ficheiros entre si e outras pessoas" - -#: ../src/gtkgui.glade.h:269 -msgid "Sign _in" -msgstr "_Ligar" - -#: ../src/gtkgui.glade.h:270 -msgid "Sign _out" -msgstr "_Desligar" - -#: ../src/gtkgui.glade.h:271 -msgid "Sta_tus" -msgstr "Es_tado" - -#: ../src/gtkgui.glade.h:272 -msgid "Start _Chat" -msgstr "Iniciar _Conversa" - -#: ../src/gtkgui.glade.h:273 -msgid "State:" -msgstr "Estado:" - -#: ../src/gtkgui.glade.h:274 -msgid "Status" -msgstr "Estado" - -#: ../src/gtkgui.glade.h:275 -msgid "Status:" -msgstr "Estado:" - -#: ../src/gtkgui.glade.h:276 -msgid "Street:" -msgstr "Rua:" - -#: ../src/gtkgui.glade.h:277 -msgid "Subject:" -msgstr "Assunto:" - -#: ../src/gtkgui.glade.h:278 -msgid "Subscription Request" -msgstr "Pedido de Subscrição" - -#: ../src/gtkgui.glade.h:279 -msgid "Subscription:" -msgstr "Subscrição:" - -#. Suffix in Name -#: ../src/gtkgui.glade.h:281 -msgid "Suffix:" -msgstr "Sufixo:" - -#: ../src/gtkgui.glade.h:282 -msgid "Synch_ronize account status with global status" -msgstr "Sinc_ronizar estado da conta com estado global" - -#: ../src/gtkgui.glade.h:283 -#, fuzzy -msgid "T_heme:" -msgstr "Tema:" - -#: ../src/gtkgui.glade.h:284 -msgid "Text _color:" -msgstr "_Cor do texto" - -#: ../src/gtkgui.glade.h:285 -msgid "Text _font:" -msgstr "_Letra do texto" - -#: ../src/gtkgui.glade.h:286 -msgid "The auto away status message" -msgstr "A mensagem de estado auto-ausente" - -#: ../src/gtkgui.glade.h:287 -msgid "The auto not available status message" -msgstr "A mensagem de estado auto-indisponível" - -#: ../src/gtkgui.glade.h:288 -msgid "" -"This action removes single file transfer from the list. If the transfer is " -"active, it is first stopped and then removed" -msgstr "" -"Esta acção remove uma única transferência de ficheiro da lista. Se a " -"transferência estiver activa, será primeiro interrompida e depois removida." - -#: ../src/gtkgui.glade.h:289 -msgid "Title:" -msgstr "Título:" - -#: ../src/gtkgui.glade.h:290 -msgid "To:" -msgstr "Para:" - -#: ../src/gtkgui.glade.h:291 -msgid "Toggle Open_PGP Encryption" -msgstr "Activar/Desactivar Encriptação Open_PGP" - -#: ../src/gtkgui.glade.h:292 -msgid "Type:" -msgstr "Tipo:" - -#: ../src/gtkgui.glade.h:293 -msgid "Underline" -msgstr "Sublinhar" - -#: ../src/gtkgui.glade.h:294 -msgid "Update MOTD" -msgstr "Actualizar MOTD" - -#: ../src/gtkgui.glade.h:295 -msgid "Updates Message of the Day" -msgstr "Actualiza a Mensagem do Dia" - -#: ../src/gtkgui.glade.h:296 -msgid "Use _SSL (legacy)" -msgstr "Usar _SSL (específica)" - -#: ../src/gtkgui.glade.h:297 -msgid "Use _transports iconsets" -msgstr "Usar iconsets de _transportes" - -#: ../src/gtkgui.glade.h:298 -msgid "Use authentication" -msgstr "Usar autenticação" - -#: ../src/gtkgui.glade.h:299 -msgid "Use custom hostname/port" -msgstr "Usar hostname/porta personalizados" - -#: ../src/gtkgui.glade.h:300 -#, fuzzy -msgid "Use file transfer proxies" -msgstr "lista de transferências de ficheiros" - -#: ../src/gtkgui.glade.h:301 -#, fuzzy -msgid "Use t_rayicon (aka. notification area icon)" -msgstr "_Ãcone na bandeja (também conhecido por área de notificação)" - -#: ../src/gtkgui.glade.h:302 -msgid "User ID:" -msgstr "ID do Utilizador:" - -#: ../src/gtkgui.glade.h:303 -msgid "When a file transfer is complete show a popup notification" -msgstr "" -"Quando uma transferência de ficheiro é concluida, exibir um popup de " -"notificação" - -#: ../src/gtkgui.glade.h:304 -#, fuzzy -msgid "" -"When a new event (message, file transfer request etc..) is received, the " -"following methods may be used to inform you about it. Please note that " -"events about new messages only occur if it is a new message from a contact " -"you are not already chatting with" -msgstr "" -"Quando um novo evento (mensagem, pedido de transferência de ficheiro, " -"etc...) é recebido, os métodos seguintes poderão ser usados para o informar. " -"NOTA: Eventos de nova mensagem recebida só ocorrem se for uma nova mensagem " -"de um contacto com quem ainda não estiver a conversar." - -#: ../src/gtkgui.glade.h:305 -msgid "When new event is received" -msgstr "Quando um novo evento é recebido" - -#: ../src/gtkgui.glade.h:306 -msgid "Work" -msgstr "Trabalho" - -#: ../src/gtkgui.glade.h:307 -msgid "" -"You need to have an account in order to connect\n" -"to the Jabber network." -msgstr "" -"Necessita de uma conta para se poder ligar\n" -"à rede Jabber." - -#: ../src/gtkgui.glade.h:309 -msgid "Your JID:" -msgstr "O seu JID:" - -#. Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector) -#: ../src/gtkgui.glade.h:311 -msgid "_Actions" -msgstr "_Acções" - -#: ../src/gtkgui.glade.h:312 -msgid "_Add Contact..." -msgstr "_Adicionar Contacto" - -#: ../src/gtkgui.glade.h:313 -msgid "_Add to Roster" -msgstr "_Adicionar à Lista" - -#: ../src/gtkgui.glade.h:314 -msgid "_Address:" -msgstr "_Endereço:" - -#: ../src/gtkgui.glade.h:315 -msgid "_Admin" -msgstr "_Admin" - -#: ../src/gtkgui.glade.h:316 -msgid "_Administrator" -msgstr "_Administrador" - -#: ../src/gtkgui.glade.h:317 -msgid "_Advanced" -msgstr "Avançado" - -#: ../src/gtkgui.glade.h:318 -#, fuzzy -msgid "_After time:" -msgstr "Depois da hora:" - -#: ../src/gtkgui.glade.h:319 -msgid "_Authorize" -msgstr "_Autorizar" - -#: ../src/gtkgui.glade.h:320 -msgid "_Background:" -msgstr "Cor _de fundo" - -#: ../src/gtkgui.glade.h:321 -msgid "_Ban" -msgstr "_Banir" - -#: ../src/gtkgui.glade.h:322 -#, fuzzy -msgid "_Before time:" -msgstr "Antes da hora:" - -#: ../src/gtkgui.glade.h:323 -msgid "_Bookmark This Room" -msgstr "Adicionar esta Sala aos _Bookmarks" - -#: ../src/gtkgui.glade.h:324 -msgid "_Browser:" -msgstr "_Navegador:" - -#: ../src/gtkgui.glade.h:325 -msgid "_Cancel" -msgstr "_Cancelar" - -#: ../src/gtkgui.glade.h:326 -msgid "_Compact View Alt+C" -msgstr "Vista _Compacta Alt+C" - -#: ../src/gtkgui.glade.h:327 -msgid "_Contents" -msgstr "_Conteúdo" - -#: ../src/gtkgui.glade.h:329 -msgid "_Copy JID/Email Address" -msgstr "_Copiar JID/Endereço de Email" - -#: ../src/gtkgui.glade.h:330 -msgid "_Copy Link Location" -msgstr "_Copiar Localização do Link" - -#: ../src/gtkgui.glade.h:331 -msgid "_Deny" -msgstr "_Negar" - -#: ../src/gtkgui.glade.h:332 -msgid "_Discover Services" -msgstr "_Descobrir Recursos" - -#: ../src/gtkgui.glade.h:333 -msgid "_Discover Services..." -msgstr "_Descobrir Recursos..." - -#: ../src/gtkgui.glade.h:335 -msgid "_FAQ" -msgstr "_FAQ" - -#: ../src/gtkgui.glade.h:336 -#, fuzzy -msgid "_File manager:" -msgstr "Gestor de ficheiros:" - -#: ../src/gtkgui.glade.h:337 -msgid "_Filter:" -msgstr "_Filtro:" - -#: ../src/gtkgui.glade.h:338 -msgid "_Finish" -msgstr "_Terminar" - -#: ../src/gtkgui.glade.h:339 -#, fuzzy -msgid "_Font:" -msgstr "Letra:" - -#: ../src/gtkgui.glade.h:340 -msgid "_Group Chat" -msgstr "C_hat" - -#: ../src/gtkgui.glade.h:341 -msgid "_Help" -msgstr "_Ajuda" - -#: ../src/gtkgui.glade.h:342 -msgid "_Highlight misspelled words" -msgstr "_Destacar palavras mal soletradas" - -#: ../src/gtkgui.glade.h:343 -msgid "_History" -msgstr "_Histórico" - -#: ../src/gtkgui.glade.h:344 -msgid "_Host:" -msgstr "_Host:" - -#. Info/Query: all(?) jabber xml start with Welcome to Gajim History Logs Manager\n" -"\n" -"You can select logs from the left and/or search database from below.\n" -"\n" -"WARNING:\n" -"If you plan to do massive deletions, please make sure Gajim is not running. " -"Generally avoid deletions with contacts you currently chat with." +#: ../src/gtkgui_helpers.py:717 +msgid "Extension not supported" msgstr "" -#: ../src/history_manager.glade.h:7 +#: ../src/gtkgui_helpers.py:718 +#, python-format +msgid "Image cannot be saved in %(type)s format. Save as %(new_filename)s?" +msgstr "" + +#: ../src/gtkgui_helpers.py:727 #, fuzzy -msgid "Delete" -msgstr "Apagar MOTD" +msgid "Save Image as..." +msgstr "Guardar Ficheiro como..." -#: ../src/history_manager.glade.h:8 -msgid "Export" -msgstr "" - -#: ../src/history_manager.glade.h:9 -msgid "Gajim History Logs Manager" -msgstr "" - -#: ../src/history_manager.glade.h:10 -#, fuzzy -msgid "_Search Database" -msgstr "_Pesquisar" - -#: ../src/history_manager.py:58 +#: ../src/history_manager.py:61 #, fuzzy msgid "Cannot find history logs database" msgstr "a criar base de dados dos logs" #. holds jid -#: ../src/history_manager.py:102 +#: ../src/history_manager.py:104 #, fuzzy msgid "Contacts" msgstr "Contacto:" #. holds time -#: ../src/history_manager.py:115 ../src/history_manager.py:155 -#: ../src/history_window.py:94 +#: ../src/history_manager.py:117 ../src/history_manager.py:157 +#: ../src/history_window.py:85 msgid "Date" msgstr "Data:" #. holds nickname -#: ../src/history_manager.py:121 ../src/history_manager.py:173 +#: ../src/history_manager.py:123 ../src/history_manager.py:175 #, fuzzy msgid "Nickname" msgstr "Alcunha:" #. holds message -#: ../src/history_manager.py:129 ../src/history_manager.py:161 -#: ../src/history_window.py:102 +#: ../src/history_manager.py:131 ../src/history_manager.py:163 +#: ../src/history_window.py:93 msgid "Message" msgstr "Mensagem" #. holds subject -#: ../src/history_manager.py:136 ../src/history_manager.py:167 +#: ../src/history_manager.py:138 ../src/history_manager.py:169 #, fuzzy msgid "Subject" msgstr "Assunto:" -#: ../src/history_manager.py:181 +#: ../src/history_manager.py:183 msgid "" "Do you want to clean up the database? (STRONGLY NOT RECOMMENDED IF GAJIM IS " "RUNNING)" msgstr "" -#: ../src/history_manager.py:183 +#: ../src/history_manager.py:185 msgid "" "Normally allocated database size will not be freed, it will just become " "reusable. If you really want to reduce database filesize, click YES, else " @@ -3727,142 +4223,177 @@ msgid "" "In case you click YES, please wait..." msgstr "" -#: ../src/history_manager.py:389 +#: ../src/history_manager.py:391 #, fuzzy msgid "Exporting History Logs..." msgstr "Fazendo a 'migração' dos logs..." -#: ../src/history_manager.py:465 +#: ../src/history_manager.py:467 #, python-format msgid "%(who)s on %(time)s said: %(message)s\n" msgstr "" -#: ../src/history_manager.py:465 +#: ../src/history_manager.py:467 msgid "who" msgstr "" -#: ../src/history_manager.py:503 +#: ../src/history_manager.py:505 msgid "Do you really want to delete logs of the selected contact?" msgid_plural "Do you really want to delete logs of the selected contacts?" msgstr[0] "" msgstr[1] "" -#: ../src/history_manager.py:507 ../src/history_manager.py:543 +#: ../src/history_manager.py:509 ../src/history_manager.py:545 msgid "This is an irreversible operation." msgstr "" -#: ../src/history_manager.py:540 +#: ../src/history_manager.py:542 msgid "Do you really want to delete the selected message?" msgid_plural "Do you really want to delete the selected messages?" msgstr[0] "" msgstr[1] "" -#: ../src/history_window.py:111 ../src/history_window.py:113 +#: ../src/history_window.py:102 ../src/history_window.py:104 #, python-format msgid "Conversation History with %s" msgstr "Histórico de Conversas com %s" -#: ../src/history_window.py:265 +#: ../src/history_window.py:258 #, python-format msgid "%(nick)s is now %(status)s: %(status_msg)s" msgstr "%(nick)s está agora %(status)s: %(status_msg)s" -#: ../src/history_window.py:269 +#: ../src/history_window.py:262 ../src/notify.py:113 #, python-format msgid "%(nick)s is now %(status)s" msgstr "%(nick)s está agora %(status)s" -#: ../src/history_window.py:275 +#: ../src/history_window.py:268 #, python-format msgid "Status is now: %(status)s: %(status_msg)s" msgstr "O estado é agora: %(status)s: %(status_msg)s" -#: ../src/history_window.py:278 +#: ../src/history_window.py:271 #, python-format msgid "Status is now: %(status)s" msgstr "Estado é agora: %(status)s" -#: ../src/message_window.py:233 +#: ../src/message_window.py:244 #, fuzzy msgid "Messages" msgstr "Mensagem" -#: ../src/message_window.py:234 +#: ../src/message_window.py:245 #, fuzzy, python-format msgid "%s - Gajim" msgstr "Gajim" -#: ../src/roster_window.py:140 +#: ../src/notify.py:111 +#, fuzzy, python-format +msgid "%(nick)s Changed Status" +msgstr "%(nick)s está agora %(status)s" + +#: ../src/notify.py:121 +#, fuzzy, python-format +msgid "%(nickname)s Signed In" +msgstr "Contacto Entrou" + +#: ../src/notify.py:129 +#, fuzzy, python-format +msgid "%(nickname)s Signed Out" +msgstr "Contacto Saiu" + +#: ../src/notify.py:141 +#, fuzzy, python-format +msgid "New Single Message from %(nickname)s" +msgstr "Nova Mensagem Instantânea" + +#: ../src/notify.py:150 +#, fuzzy, python-format +msgid "New Private Message from room %s" +msgstr "Nova Mensagem Privada" + +#: ../src/notify.py:151 +#, python-format +msgid "%(nickname)s: %(message)s" +msgstr "" + +#: ../src/notify.py:157 +#, fuzzy, python-format +msgid "New Message from %(nickname)s" +msgstr "Nova Mensagem como %s" + +#: ../src/roster_window.py:131 msgid "Merged accounts" msgstr "Contas fundidas" -#: ../src/roster_window.py:289 ../src/common/helpers.py:42 +#: ../src/roster_window.py:288 ../src/common/helpers.py:39 #, fuzzy msgid "Observers" msgstr "Servidor" -#: ../src/roster_window.py:542 +#: ../src/roster_window.py:544 #, python-format msgid "You are already in room %s" msgstr "Já está na sala %s" -#: ../src/roster_window.py:546 ../src/roster_window.py:2262 +#: ../src/roster_window.py:548 ../src/roster_window.py:2280 msgid "You cannot join a room while you are invisible" msgstr "Não pode entrar numa sala quando está invisível" #. the 'manage gc bookmarks' item is showed #. below to avoid duplicate code #. add -#: ../src/roster_window.py:735 +#: ../src/roster_window.py:748 #, python-format msgid "to %s account" msgstr "para conta %s" #. disco -#: ../src/roster_window.py:742 +#: ../src/roster_window.py:755 #, python-format msgid "using %s account" msgstr "usando conta %s" -#. new message +#. new chat #. for chat_with #. for single message -#: ../src/roster_window.py:750 ../src/systray.py:194 ../src/systray.py:201 +#: ../src/roster_window.py:763 ../src/systray.py:193 ../src/systray.py:198 #, python-format msgid "using account %s" msgstr "usando a conta %s" #. profile, avatar -#: ../src/roster_window.py:759 +#: ../src/roster_window.py:772 #, fuzzy, python-format msgid "of account %s" msgstr "para conta %s" -#: ../src/roster_window.py:818 +#: ../src/roster_window.py:831 msgid "Manage Bookmarks..." msgstr "Gerir Bookmarks..." -#: ../src/roster_window.py:842 +#: ../src/roster_window.py:855 #, python-format msgid "for account %s" msgstr "para conta %s" #. History manager -#: ../src/roster_window.py:863 +#: ../src/roster_window.py:876 #, fuzzy msgid "History Manager" msgstr "_Histórico" -#: ../src/roster_window.py:872 +#: ../src/roster_window.py:885 msgid "_Join New Room" msgstr "_Juntar-se a uma Nova Sala" -#: ../src/roster_window.py:1158 +#: ../src/roster_window.py:1159 #, python-format msgid "Transport \"%s\" will be removed" msgstr "Transporte \"%s\" será removido" -#: ../src/roster_window.py:1158 +#: ../src/roster_window.py:1159 msgid "" "You will no longer be able to send and receive messages to contacts from " "this transport." @@ -3870,11 +4401,11 @@ msgstr "" "Deixará de poder enviar e receber mensagens aos contactos desde este " "transport." -#: ../src/roster_window.py:1200 +#: ../src/roster_window.py:1201 msgid "Assign OpenPGP Key" msgstr "Atribuir chave OpenPGP" -#: ../src/roster_window.py:1201 +#: ../src/roster_window.py:1202 msgid "Select a key to apply to the contact" msgstr "Selecione uma chave para aplicar ao contacto" @@ -3898,39 +4429,39 @@ msgstr "_Desligar" msgid "_Change Status Message" msgstr "_Mudar Mensagem de Estado" -#: ../src/roster_window.py:1617 +#: ../src/roster_window.py:1621 msgid "Authorization has been sent" msgstr "Autorização foi enviada" -#: ../src/roster_window.py:1618 +#: ../src/roster_window.py:1622 #, python-format msgid "Now \"%s\" will know your status." msgstr "Agora \"%s\" saberá o seu estado." -#: ../src/roster_window.py:1642 +#: ../src/roster_window.py:1646 msgid "Subscription request has been sent" msgstr "Pedido de subscrição foi enviado" -#: ../src/roster_window.py:1643 +#: ../src/roster_window.py:1647 #, python-format msgid "If \"%s\" accepts this request you will know his or her status." msgstr "Se \"%s\" aceitar este pedido, você passará a saber o seu estado." -#: ../src/roster_window.py:1654 +#: ../src/roster_window.py:1658 msgid "Authorization has been removed" msgstr "Autorização foi removida" -#: ../src/roster_window.py:1655 +#: ../src/roster_window.py:1659 #, python-format msgid "Now \"%s\" will always see you as offline." msgstr "Doravante, \"%s\" vê-lo-á sempre como estando offline." -#: ../src/roster_window.py:1824 +#: ../src/roster_window.py:1822 #, python-format msgid "Contact \"%s\" will be removed from your roster" msgstr "Contacto \"%s\" será removido de sua lista" -#: ../src/roster_window.py:1828 +#: ../src/roster_window.py:1826 #, fuzzy msgid "" "By removing this contact you also remove authorization resulting in him or " @@ -3939,7 +4470,7 @@ msgstr "" "Ao remover este contacto, também remove a autorização. O contacto vê-lo-á " "sempre como offline." -#: ../src/roster_window.py:1832 +#: ../src/roster_window.py:1830 msgid "" "By removing this contact you also by default remove authorization resulting " "in him or her always seeing you as offline." @@ -3947,37 +4478,37 @@ msgstr "" "Ao remover este contacto, também remove a autorização. O contacto vê-lo-á " "sempre como offline." -#: ../src/roster_window.py:1833 +#: ../src/roster_window.py:1831 msgid "I want this contact to know my status after removal" msgstr "Quero que este contacto saiba o meu estado depois da remoção" -#: ../src/roster_window.py:1901 +#: ../src/roster_window.py:1899 msgid "Passphrase Required" msgstr "Frase de acesso Necessária" -#: ../src/roster_window.py:1902 +#: ../src/roster_window.py:1900 #, fuzzy, python-format msgid "Enter GPG key passphrase for account %s." msgstr "Introduza a chave GPG para a conta %s" -#: ../src/roster_window.py:1907 +#: ../src/roster_window.py:1905 msgid "Save passphrase" msgstr "Guardar frase de acesso" -#: ../src/roster_window.py:1915 +#: ../src/roster_window.py:1913 #, fuzzy msgid "Wrong Passphrase" msgstr "Frase de acesso" -#: ../src/roster_window.py:1916 +#: ../src/roster_window.py:1914 msgid "Please retype your GPG passphrase or press Cancel." msgstr "" -#: ../src/roster_window.py:1964 ../src/roster_window.py:2021 +#: ../src/roster_window.py:1963 ../src/roster_window.py:2020 msgid "You are participating in one or more group chats" msgstr "Está a participar num ou mais chats" -#: ../src/roster_window.py:1965 ../src/roster_window.py:2022 +#: ../src/roster_window.py:1964 ../src/roster_window.py:2021 msgid "" "Changing your status to invisible will result in disconnection from those " "group chats. Are you sure you want to go invisible?" @@ -3985,158 +4516,164 @@ msgstr "" "Mudar o seu estado para invisível fará com que seja desligado desses chats. " "De certeza que deseja tornar-se invisível?" -#: ../src/roster_window.py:1981 +#: ../src/roster_window.py:1980 msgid "No account available" msgstr "Nenhuma conta disponível" -#: ../src/roster_window.py:1982 +#: ../src/roster_window.py:1981 msgid "You must create an account before you can chat with other contacts." msgstr "Tem de criar uma conta antes de poder conversar com outros contactos." -#: ../src/roster_window.py:2427 ../src/roster_window.py:2433 +#: ../src/roster_window.py:2452 ../src/roster_window.py:2458 msgid "You have unread messages" msgstr "Tem mensagens não lidas" -#: ../src/roster_window.py:2428 ../src/roster_window.py:2434 +#: ../src/roster_window.py:2453 ../src/roster_window.py:2459 msgid "" "Messages will only be available for reading them later if you have history " "enabled." msgstr "" "As mensagens só poderão ser lidas mais tarde caso tenha o histórico activado." -#: ../src/roster_window.py:3184 +#: ../src/roster_window.py:3231 #, fuzzy, python-format msgid "Drop %s in group %s" msgstr "De %s na sala %s" -#: ../src/roster_window.py:3191 +#: ../src/roster_window.py:3238 #, fuzzy, python-format msgid "Make %s and %s metacontacts" msgstr "Envia um ficheiro a um contacto" -#: ../src/roster_window.py:3358 +#: ../src/roster_window.py:3408 msgid "Change Status Message..." msgstr "Mudar Mensagem de Estado..." -#: ../src/systray.py:155 +#: ../src/systray.py:154 msgid "_Change Status Message..." msgstr "_Mudar Mensagem de Estado..." -#: ../src/systray.py:236 +#: ../src/systray.py:231 msgid "Hide this menu" msgstr "Esconder este menú" -#: ../src/systraywin32.py:266 ../src/systraywin32.py:285 -#: ../src/tooltips.py:315 +#: ../src/systraywin32.py:261 ../src/systraywin32.py:280 #, python-format msgid "Gajim - %d unread message" msgid_plural "Gajim - %d unread messages" msgstr[0] "Gajim - %d mensagem não lida" msgstr[1] "Gajim - %d mensagens não lidas" -#: ../src/tooltips.py:321 -#, python-format -msgid "Gajim - %d unread single message" -msgid_plural "Gajim - %d unread single messages" +#: ../src/tooltips.py:326 +#, fuzzy, python-format +msgid " %d unread message" +msgid_plural " %d unread messages" msgstr[0] "Gajim - %d mensagem não lida" msgstr[1] "Gajim - %d mensagens não lidas" -#: ../src/tooltips.py:327 -#, python-format -msgid "Gajim - %d unread group chat message" -msgid_plural "Gajim - %d unread group chat messages" +#: ../src/tooltips.py:332 +#, fuzzy, python-format +msgid " %d unread single message" +msgid_plural " %d unread single messages" +msgstr[0] "Gajim - %d mensagem não lida" +msgstr[1] "Gajim - %d mensagens não lidas" + +#: ../src/tooltips.py:338 +#, fuzzy, python-format +msgid " %d unread group chat message" +msgid_plural " %d unread group chat messages" msgstr[0] "Gajim - %d mensagem de chat não lida" msgstr[1] "Gajim - %d mensagens de chat não lidas" -#: ../src/tooltips.py:333 -#, python-format -msgid "Gajim - %d unread private message" -msgid_plural "Gajim - %d unread private messages" +#: ../src/tooltips.py:344 +#, fuzzy, python-format +msgid " %d unread private message" +msgid_plural " %d unread private messages" msgstr[0] "Gajim - %d mensagem privada não lida" msgstr[1] "Gajim - %d mensagens privadas não lidas" -#: ../src/tooltips.py:348 ../src/tooltips.py:350 +#: ../src/tooltips.py:359 ../src/tooltips.py:361 #, python-format msgid "Gajim - %s" msgstr "Gajim - %s" -#: ../src/tooltips.py:383 +#: ../src/tooltips.py:395 msgid "Role: " msgstr "Função: " -#: ../src/tooltips.py:384 +#: ../src/tooltips.py:396 msgid "Affiliation: " msgstr "Filiação: " -#: ../src/tooltips.py:386 ../src/tooltips.py:518 +#: ../src/tooltips.py:398 ../src/tooltips.py:537 msgid "Resource: " msgstr "Recurso: " -#: ../src/tooltips.py:394 ../src/tooltips.py:521 ../src/tooltips.py:543 -#: ../src/tooltips.py:654 +#: ../src/tooltips.py:407 ../src/tooltips.py:540 ../src/tooltips.py:565 +#: ../src/tooltips.py:676 msgid "Status: " msgstr "Estado: " -#: ../src/tooltips.py:501 +#: ../src/tooltips.py:514 msgid "Subscription: " msgstr "Subscrição:" -#: ../src/tooltips.py:510 +#: ../src/tooltips.py:523 msgid "OpenPGP: " msgstr "OpenPGP: " -#: ../src/tooltips.py:548 +#: ../src/tooltips.py:570 #, fuzzy, python-format msgid "Last status on %s" msgstr "Iconset de _estados padrão:" -#: ../src/tooltips.py:550 +#: ../src/tooltips.py:572 #, fuzzy, python-format msgid "Since %s" msgstr "Tamanho: %s" -#: ../src/tooltips.py:610 +#: ../src/tooltips.py:632 msgid "Download" msgstr "Download" -#: ../src/tooltips.py:616 +#: ../src/tooltips.py:638 msgid "Upload" msgstr "Upload" -#: ../src/tooltips.py:623 +#: ../src/tooltips.py:645 msgid "Type: " msgstr "Tipo: " -#: ../src/tooltips.py:629 +#: ../src/tooltips.py:651 msgid "Transferred: " msgstr "Transferido: " -#: ../src/tooltips.py:632 ../src/tooltips.py:653 +#: ../src/tooltips.py:654 ../src/tooltips.py:675 msgid "Not started" msgstr "Não iniciada" -#: ../src/tooltips.py:636 +#: ../src/tooltips.py:658 msgid "Stopped" msgstr "Parada" -#: ../src/tooltips.py:638 ../src/tooltips.py:641 +#: ../src/tooltips.py:660 ../src/tooltips.py:663 msgid "Completed" msgstr "Completa" #. stalled is not paused. it is like 'frozen' it stopped alone -#: ../src/tooltips.py:649 +#: ../src/tooltips.py:671 msgid "Stalled" msgstr "Interrompida" -#: ../src/tooltips.py:651 +#: ../src/tooltips.py:673 msgid "Transferring" msgstr "A transferir" -#: ../src/tooltips.py:683 +#: ../src/tooltips.py:705 msgid "This service has not yet responded with detailed information" msgstr "Este serviço/recurso ainda não respondeu com informações detalhadas" -#: ../src/tooltips.py:686 +#: ../src/tooltips.py:708 msgid "" "This service could not respond with detailed information.\n" "It is most likely legacy or broken" @@ -4145,24 +4682,24 @@ msgstr "" "Provavelmente está legacy ou broken" #. keep identation -#: ../src/vcard.py:186 +#: ../src/vcard.py:188 msgid "Could not load image" msgstr "" -#: ../src/vcard.py:262 +#: ../src/vcard.py:289 msgid "?Client:Unknown" msgstr "?Cliente:Desconhecido" -#: ../src/vcard.py:264 +#: ../src/vcard.py:291 msgid "?OS:Unknown" msgstr "?SO:Desconhecido" -#: ../src/vcard.py:281 +#: ../src/vcard.py:308 #, fuzzy, python-format msgid "since %s" msgstr "Versão %s" -#: ../src/vcard.py:305 +#: ../src/vcard.py:332 msgid "" "This contact is interested in your presence information, but you are not " "interested in his/her presence" @@ -4170,7 +4707,7 @@ msgstr "" "Este contacto está interessado/a na suas informações de presença, mas você " "não está interessado na dele/a" -#: ../src/vcard.py:307 +#: ../src/vcard.py:334 msgid "" "You are interested in the contact's presence information, but he/she is not " "interested in yours" @@ -4178,116 +4715,145 @@ msgstr "" "Está interessado nas informações de presença do contacto, mas ele/ela não " "está na sua" -#: ../src/vcard.py:309 +#: ../src/vcard.py:336 msgid "You and the contact are interested in each other's presence information" msgstr "" "Você e o contacto estão interessados nas informações de presença um do outro" #. None -#: ../src/vcard.py:311 +#: ../src/vcard.py:338 msgid "" "You are not interested in the contact's presence, and neither he/she is " "interested in yours" msgstr "Não está interessado na presença do contacto, nem ele/ela está na sua" -#: ../src/vcard.py:320 +#: ../src/vcard.py:347 msgid "You are waiting contact's answer about your subscription request" msgstr "Está à espera da resposta do contacto sobre o seu pedido de subscrição" -#: ../src/vcard.py:332 ../src/vcard.py:355 +#: ../src/vcard.py:359 ../src/vcard.py:382 msgid " resource with priority " msgstr " recurso com prioridade " -#: ../src/vcard.py:434 +#: ../src/vcard.py:458 msgid "Without a connection you can not publish your contact information." msgstr "" "É necessária uma ligação para poder publicar as suas informações de contacto." -#: ../src/vcard.py:463 +#: ../src/vcard.py:491 msgid "Without a connection, you can not get your contact information." msgstr "É necessária uma ligação para receber as suas informações de contacto." -#: ../src/vcard.py:467 +#: ../src/vcard.py:495 #, fuzzy msgid "Personal details" msgstr "Detalhes Pessoais..." -#: ../src/common/check_paths.py:39 +#: ../src/common/check_paths.py:35 msgid "creating logs database" msgstr "a criar base de dados dos logs" -#: ../src/common/check_paths.py:84 ../src/common/check_paths.py:95 -#: ../src/common/check_paths.py:102 +#: ../src/common/check_paths.py:82 ../src/common/check_paths.py:93 +#: ../src/common/check_paths.py:100 #, python-format msgid "%s is file but it should be a directory" msgstr "%s é um ficheiro, mas deveria ser um directório" -#: ../src/common/check_paths.py:85 ../src/common/check_paths.py:96 -#: ../src/common/check_paths.py:103 ../src/common/check_paths.py:110 +#: ../src/common/check_paths.py:83 ../src/common/check_paths.py:94 +#: ../src/common/check_paths.py:101 ../src/common/check_paths.py:109 msgid "Gajim will now exit" msgstr "Gajim irá agora sair" -#: ../src/common/check_paths.py:109 +#: ../src/common/check_paths.py:108 #, python-format msgid "%s is directory but should be file" msgstr "%s é um directório, mas deveria ser um ficheiro" -#: ../src/common/check_paths.py:125 +#: ../src/common/check_paths.py:124 #, python-format msgid "creating %s directory" msgstr "a criar directório %s" -#: ../src/common/exceptions.py:35 +#: ../src/common/exceptions.py:32 msgid "pysqlite2 (aka python-pysqlite2) dependency is missing. Exiting..." msgstr "" -#: ../src/common/exceptions.py:43 +#: ../src/common/exceptions.py:40 msgid "Service not available: Gajim is not running, or remote_control is False" msgstr "" "Serviço/Recurso indisponível: Gajim não está a correr, ou remote_control é " "False" -#: ../src/common/exceptions.py:51 +#: ../src/common/exceptions.py:48 msgid "D-Bus is not present on this machine or python module is missing" msgstr "D-Bus não está presente nesta máquina, ou falta módulo python" -#: ../src/common/exceptions.py:59 +#: ../src/common/exceptions.py:56 msgid "" "Session bus is not available.\n" "Try reading http://trac.gajim.org/wiki/GajimDBus" msgstr "" -#: ../src/common/config.py:53 +#: ../src/common/config.py:51 msgid "Use DBus and Notification-Daemon to show notifications" msgstr "Usar DBus e Notification-Daemon para mostrar notificações" -#: ../src/common/config.py:57 +#: ../src/common/config.py:55 msgid "Time in minutes, after which your status changes to away." msgstr "Tempo, em minutos, após o qual o seu estado muda para Ausente." -#: ../src/common/config.py:58 +#: ../src/common/config.py:56 msgid "Away as a result of being idle" msgstr "Ausente por estar inactivo" -#: ../src/common/config.py:60 +#: ../src/common/config.py:58 msgid "Time in minutes, after which your status changes to not available." msgstr "Tempo, em minutos, após o qual o seu estado muda para Indisponível." -#: ../src/common/config.py:61 +#: ../src/common/config.py:59 msgid "Not available as a result of being idle" msgstr "Indisponível por estar inactivo" -#: ../src/common/config.py:88 +#: ../src/common/config.py:77 +msgid "List (space separated) of rows (accounts and groups) that are collapsed" +msgstr "" + +#: ../src/common/config.py:83 +msgid "" +"'always' - print time for every message.\n" +"'sometimes' - print time every print_ichat_every_foo_minutes minute.\n" +"'never' - never print time." +msgstr "" + +#: ../src/common/config.py:84 +msgid "" +"Value of fuzziness from 1 to 4 or 0 to disable fuzzyclock. 1 is the most " +"precise clock, 4 the less precise one." +msgstr "" + +#: ../src/common/config.py:87 msgid "Treat * / _ pairs as possible formatting characters." msgstr "" -#: ../src/common/config.py:89 +#: ../src/common/config.py:88 msgid "" "If True, do not remove */_ . So *abc* will be bold but with * * not removed." msgstr "" "Se Verdadeiro (True), não remover */_ . Para que *abc* fique em negrito " "(bold) mas * * não seja removido." +#: ../src/common/config.py:98 +msgid "" +"Character to add after nickname when using nick completion (tab) in group " +"chat" +msgstr "" + +#: ../src/common/config.py:99 +msgid "" +"Character to propose to add after desired nickname when desired nickname is " +"used by someone else in group chat" +msgstr "" + #: ../src/common/config.py:131 msgid "Add * and [n] in roster title?" msgstr "Adicionar * e [n] no título da lista de contactos?" @@ -4330,6 +4896,12 @@ msgstr "" msgid "If checked, Gajim can be controlled remotely using gajim-remote." msgstr "Se marcado, Gajim pode ser controlado à distância usando gajim-remote." +#: ../src/common/config.py:145 +msgid "" +"When not printing time for every message (print_time==sometimes), print it " +"every x minutes" +msgstr "" + #: ../src/common/config.py:146 msgid "Ask before closing a group chat tab/window." msgstr "Perguntar antes de fechar uma janela/aba de chat." @@ -4365,7 +4937,8 @@ msgid "Show tab when only one conversation?" msgstr "Mostrar aba quando apenas numa conversa?" #: ../src/common/config.py:162 -msgid "Show tab border if one conversation?" +#, fuzzy +msgid "Show tabbed notebook border in chat windows?" msgstr "Mostrar borda da aba quando apenas numa conversa?" #: ../src/common/config.py:163 @@ -4416,15 +4989,28 @@ msgstr "" "Se Verdadeiro (True), Gajim perguntará por um avatar a cada contacto que não " "tinha um da última vez ou tenha um na memória cache há demasiado tempo." -#. FIXME: remove you and make it Gajim will not; and/or his or *her* status messages -#: ../src/common/config.py:184 +#: ../src/common/config.py:183 +#, fuzzy msgid "" -"If False, you will no longer see status line in chats when a contact changes " -"his or her status and/or his status message." +"If False, Gajim will no longer print status line in chats when a contact " +"changes his or her status and/or his or her status message." msgstr "" "Se Falso (False), deixará de ver a linha de estados em conversas quando um " "contacto mudar de estado ou de mensagem de estado." +#: ../src/common/config.py:184 +msgid "" +"can be \"none\", \"all\" or \"in_and_out\". If \"none\", Gajim will no " +"longer print status line in groupchats when a member changes his or her " +"status and/or his or her status message. If \"all\" Gajim will print all " +"status messages. If \"in_and_out\", gajim will only print FOO enters/leaves " +"room" +msgstr "" + +#: ../src/common/config.py:187 +msgid "Don't show avatar for the transport itself." +msgstr "" + #: ../src/common/config.py:189 msgid "" "If True and installed GTK+ and PyGTK versions are at least 2.8, make the " @@ -4438,7 +5024,8 @@ msgid "" "Turn this option to False to stop sending sha info in groupchat presences" msgstr "" -#: ../src/common/config.py:193 +#. always, never, peracct, pertype should not be translated +#: ../src/common/config.py:194 msgid "" "Controls the window where new messages are placed.\n" "'always' - All messages are sent to a single window.\n" @@ -4449,100 +5036,112 @@ msgid "" "the changes will take effect" msgstr "" -#: ../src/common/config.py:194 +#: ../src/common/config.py:195 msgid "If False, you will no longer see the avatar in the chat window" msgstr "" -#: ../src/common/config.py:195 +#: ../src/common/config.py:196 msgid "If True, pressing the escape key closes a tab/window" msgstr "" -#: ../src/common/config.py:196 +#: ../src/common/config.py:197 #, fuzzy msgid "Hides the buttons in group chat window" msgstr "Perguntar antes de fechar uma janela/aba de chat." -#: ../src/common/config.py:197 +#: ../src/common/config.py:198 msgid "Hides the buttons in two persons chat window" msgstr "" -#: ../src/common/config.py:198 +#: ../src/common/config.py:199 #, fuzzy msgid "Hides the banner in a group chat window" msgstr "Perguntar antes de fechar uma janela/aba de chat." -#: ../src/common/config.py:199 +#: ../src/common/config.py:200 msgid "Hides the banner in two persons chat window" msgstr "" -#: ../src/common/config.py:200 +#: ../src/common/config.py:201 msgid "Hides the room occupants list in groupchat window" msgstr "" +#: ../src/common/config.py:202 +msgid "Merge consecutive nickname in chat window" +msgstr "" + +#: ../src/common/config.py:203 +msgid "Indentation when using merge consecutive nickame" +msgstr "" + +#: ../src/common/config.py:204 +msgid "List of colors that will be used to color nicknames in groupchats" +msgstr "" + #. yes, no, ask -#: ../src/common/config.py:233 +#: ../src/common/config.py:237 msgid "Jabberd2 workaround" msgstr "" -#: ../src/common/config.py:237 +#: ../src/common/config.py:241 msgid "" "If checked, Gajim will use your IP and proxies defined in " "file_transfer_proxies option for file transfer." msgstr "" -#: ../src/common/config.py:290 +#: ../src/common/config.py:297 msgid "Sleeping" msgstr "A dormir" -#: ../src/common/config.py:291 +#: ../src/common/config.py:298 msgid "Back soon" msgstr "Volto logo" -#: ../src/common/config.py:291 +#: ../src/common/config.py:298 msgid "Back in some minutes." msgstr "Volto daqui a alguns minutos" -#: ../src/common/config.py:292 +#: ../src/common/config.py:299 msgid "Eating" msgstr "A comer" -#: ../src/common/config.py:292 +#: ../src/common/config.py:299 msgid "I'm eating, so leave me a message." msgstr "Estou a comer, por isso deixe-me uma mensagem" -#: ../src/common/config.py:293 +#: ../src/common/config.py:300 msgid "Movie" msgstr "Filme" -#: ../src/common/config.py:293 +#: ../src/common/config.py:300 msgid "I'm watching a movie." msgstr "Estou a ver um filme." -#: ../src/common/config.py:294 +#: ../src/common/config.py:301 msgid "Working" msgstr "A trabalhar" -#: ../src/common/config.py:294 +#: ../src/common/config.py:301 msgid "I'm working." msgstr "Estou a trabalhar" -#: ../src/common/config.py:295 +#: ../src/common/config.py:302 msgid "Phone" msgstr "Telefone" -#: ../src/common/config.py:295 +#: ../src/common/config.py:302 msgid "I'm on the phone." msgstr "Estou ao telefone." -#: ../src/common/config.py:296 +#: ../src/common/config.py:303 msgid "Out" msgstr "Estou fora" -#: ../src/common/config.py:296 +#: ../src/common/config.py:303 msgid "I'm out enjoying life" msgstr "Estou fora, fui apreciar a vida" -#: ../src/common/config.py:305 +#: ../src/common/config.py:312 msgid "" "Sound to play when a MUC message contains one of the words in " "muc_highlight_words, or when a MUC message contains your nickname." @@ -4550,7 +5149,7 @@ msgstr "" "Som a tocar quando uma mensagem de chat conter uma das palavras da lista " "muc_highlight_words, or quando uma mensagem conter a sua alcunha." -#: ../src/common/config.py:306 +#: ../src/common/config.py:313 msgid "" "Sound to play when any MUC message arrives. (This setting is taken into " "account only if notify_on_all_muc_messages is True)" @@ -4558,98 +5157,98 @@ msgstr "" "Som a tocar quando uma mensagem de chat chegar. (Apenas aplicável se " "notify_on_all_muc_messages estiver definido como Verdadeiro)" -#: ../src/common/config.py:314 ../src/common/optparser.py:181 +#: ../src/common/config.py:321 ../src/common/optparser.py:185 msgid "green" msgstr "green" -#: ../src/common/config.py:318 ../src/common/optparser.py:167 +#: ../src/common/config.py:325 ../src/common/optparser.py:171 msgid "grocery" msgstr "grocery" -#: ../src/common/config.py:322 +#: ../src/common/config.py:329 msgid "human" msgstr "human" -#: ../src/common/config.py:326 +#: ../src/common/config.py:333 msgid "marine" msgstr "marine" -#: ../src/common/connection.py:152 +#: ../src/common/connection.py:172 #, python-format msgid "Connection with account \"%s\" has been lost" msgstr "Ligação com conta \"%s\" foi perdida" -#: ../src/common/connection.py:153 +#: ../src/common/connection.py:173 msgid "To continue sending and receiving messages, you will need to reconnect." msgstr "" "Para continuar a enviar e receber mensagens, precisará de se reconectar." -#: ../src/common/connection.py:169 ../src/common/connection.py:195 +#: ../src/common/connection.py:185 ../src/common/connection.py:211 #, python-format msgid "Transport %s answered wrongly to register request." msgstr "" #. wrong answer -#: ../src/common/connection.py:194 +#: ../src/common/connection.py:210 #, fuzzy msgid "Invalid answer" msgstr "Senha Inválida" -#: ../src/common/connection.py:348 ../src/common/connection.py:384 -#: ../src/common/connection.py:754 +#: ../src/common/connection.py:397 ../src/common/connection.py:433 +#: ../src/common/connection.py:857 #, python-format msgid "Could not connect to \"%s\"" msgstr "Impossível ligar a \"%s\"" -#: ../src/common/connection.py:362 +#: ../src/common/connection.py:411 #, python-format msgid "Connected to server %s:%s with %s" msgstr "Ligado ao servidor %s:%s com %s" -#: ../src/common/connection.py:385 +#: ../src/common/connection.py:434 msgid "Check your connection or try again later" msgstr "Verifique a sua ligação ou tente novamente mais tarde" -#: ../src/common/connection.py:410 +#: ../src/common/connection.py:459 #, python-format msgid "Authentication failed with \"%s\"" msgstr "Falha na autenticação com \"%s\"" -#: ../src/common/connection.py:411 +#: ../src/common/connection.py:460 msgid "Please check your login and password for correctness." msgstr "Por favor, verifique se o seu login e senha estão correctos." #. We didn't set a passphrase -#: ../src/common/connection.py:487 +#: ../src/common/connection.py:573 msgid "OpenPGP passphrase was not given" msgstr "Palavra-chave do OpenPGP não foi recebida" #. %s is the account name here -#: ../src/common/connection.py:489 +#: ../src/common/connection.py:575 #, python-format msgid "You will be connected to %s without OpenPGP." msgstr "O utilizador será ligado a %s sem OpenPGP." #. do not show I'm invisible! -#: ../src/common/connection.py:526 +#: ../src/common/connection.py:612 msgid "invisible" msgstr "Invisível" -#: ../src/common/connection.py:527 +#: ../src/common/connection.py:613 msgid "offline" msgstr "offline" -#: ../src/common/connection.py:528 +#: ../src/common/connection.py:614 #, python-format msgid "I'm %s" msgstr "Estou %s" #. we're not english -#: ../src/common/connection.py:611 +#: ../src/common/connection.py:699 msgid "[This message is encrypted]" msgstr "[Esta mensagem é encriptada]" -#: ../src/common/connection.py:649 +#: ../src/common/connection.py:742 #, python-format msgid "" "Subject: %s\n" @@ -4658,223 +5257,309 @@ msgstr "" "Assunto: %s\n" "%s" -#: ../src/common/connection.py:699 +#: ../src/common/connection.py:795 ../src/common/connection_handlers.py:1511 msgid "I would like to add you to my roster." msgstr "Eu gostaria de o adicionar à minha lista" -#: ../src/common/helpers.py:103 +#: ../src/common/connection_handlers.py:49 +#, fuzzy +msgid "Unable to load idle module" +msgstr "Impossível entrar na sala" + +#: ../src/common/connection_handlers.py:581 +#, python-format +msgid "Registration information for transport %s has not arrived in time" +msgstr "Informação de registo para o transport %s não chegou a tempo" + +#. password required to join +#. we are banned +#. room does not exist +#: ../src/common/connection_handlers.py:1450 +#: ../src/common/connection_handlers.py:1453 +#: ../src/common/connection_handlers.py:1456 +#: ../src/common/connection_handlers.py:1459 +#: ../src/common/connection_handlers.py:1462 +#: ../src/common/connection_handlers.py:1465 +#: ../src/common/connection_handlers.py:1473 +msgid "Unable to join room" +msgstr "Impossível entrar na sala" + +#: ../src/common/connection_handlers.py:1451 +msgid "A password is required to join this room." +msgstr "É necessária uma palavra-passe para esta sala." + +#: ../src/common/connection_handlers.py:1454 +msgid "You are banned from this room." +msgstr "Está banido/a desta sala." + +#: ../src/common/connection_handlers.py:1457 +msgid "Such room does not exist." +msgstr "Tal sala não existe." + +#: ../src/common/connection_handlers.py:1460 +msgid "Room creation is restricted." +msgstr "Criação de salas encontra-se restrita." + +#: ../src/common/connection_handlers.py:1463 +msgid "Your registered nickname must be used." +msgstr "A sua alcunha registada tem de ser usada." + +#: ../src/common/connection_handlers.py:1466 +msgid "You are not in the members list." +msgstr "Não está na lista de membros." + +#: ../src/common/connection_handlers.py:1474 +msgid "" +"Your desired nickname is in use or registered by another occupant.\n" +"Please specify another nickname below:" +msgstr "" +"A alcunha que deseja encontra-se em uso ou registado por outro ocupante.\n" +"Por favor, introduza outra alcunha em baixo:" + +#. BE CAREFUL: no con.updateRosterItem() in a callback +#: ../src/common/connection_handlers.py:1519 +#, python-format +msgid "we are now subscribed to %s" +msgstr "estamos agora subscritos a %s" + +#: ../src/common/connection_handlers.py:1521 +#, python-format +msgid "unsubscribe request from %s" +msgstr "pedido de remoção de subscrição por %s" + +#: ../src/common/connection_handlers.py:1523 +#, python-format +msgid "we are now unsubscribed from %s" +msgstr "já não estamos subscritos a %s" + +#: ../src/common/connection_handlers.py:1680 +#, fuzzy, python-format +msgid "" +"JID %s is not RFC compliant. It will not be added to your roster. Use roster " +"management tools such as http://jru.jabberstudio.org/ to remove it" +msgstr "" +"JID %s não é compatível com RFC. Não será adicionado à sua lista. Utilize " +"ferramentas de gestão de lista (roster) tais como http://jru.jabberstudio." +"org/ para o remover." + +#: ../src/common/helpers.py:100 msgid "Invalid character in username." msgstr "Caractere inválido no nome de utilizador" -#: ../src/common/helpers.py:108 +#: ../src/common/helpers.py:105 msgid "Server address required." msgstr "Endereço de servidor necessário." -#: ../src/common/helpers.py:113 +#: ../src/common/helpers.py:110 msgid "Invalid character in hostname." msgstr "Caractere inválido no hostname." -#: ../src/common/helpers.py:119 +#: ../src/common/helpers.py:116 msgid "Invalid character in resource." msgstr "Caractere inválido no recurso." #. GiB means gibibyte -#: ../src/common/helpers.py:159 +#: ../src/common/helpers.py:156 #, python-format msgid "%s GiB" msgstr "%s GiB" #. GB means gigabyte -#: ../src/common/helpers.py:162 +#: ../src/common/helpers.py:159 #, python-format msgid "%s GB" msgstr "%s GB" #. MiB means mibibyte -#: ../src/common/helpers.py:166 +#: ../src/common/helpers.py:163 #, python-format msgid "%s MiB" msgstr "%s MiB" #. MB means megabyte -#: ../src/common/helpers.py:169 +#: ../src/common/helpers.py:166 #, python-format msgid "%s MB" msgstr "%s MB" #. KiB means kibibyte -#: ../src/common/helpers.py:173 +#: ../src/common/helpers.py:170 #, python-format msgid "%s KiB" msgstr "%s KiB" #. KB means kilo bytes -#: ../src/common/helpers.py:176 +#: ../src/common/helpers.py:173 #, python-format msgid "%s KB" msgstr "%s KB" #. B means bytes -#: ../src/common/helpers.py:179 +#: ../src/common/helpers.py:176 #, python-format msgid "%s B" msgstr "%s B" -#: ../src/common/helpers.py:189 +#: ../src/common/helpers.py:205 msgid "_Busy" msgstr "_Ocupado" -#: ../src/common/helpers.py:191 +#: ../src/common/helpers.py:207 msgid "Busy" msgstr "Ocupado" -#: ../src/common/helpers.py:194 +#: ../src/common/helpers.py:210 msgid "_Not Available" msgstr "_Indisponível" -#: ../src/common/helpers.py:196 +#: ../src/common/helpers.py:212 msgid "Not Available" msgstr "Indisponível" -#: ../src/common/helpers.py:199 +#: ../src/common/helpers.py:215 msgid "_Free for Chat" msgstr "_Livre para conversar" -#: ../src/common/helpers.py:201 +#: ../src/common/helpers.py:217 msgid "Free for Chat" msgstr "Livre para conversar" -#: ../src/common/helpers.py:204 +#: ../src/common/helpers.py:220 msgid "_Available" msgstr "_Disponível" -#: ../src/common/helpers.py:206 +#: ../src/common/helpers.py:222 msgid "Available" msgstr "Disponível" -#: ../src/common/helpers.py:208 +#: ../src/common/helpers.py:224 msgid "Connecting" msgstr "Ligando" -#: ../src/common/helpers.py:211 +#: ../src/common/helpers.py:227 msgid "A_way" msgstr "A_usente" -#: ../src/common/helpers.py:213 +#: ../src/common/helpers.py:229 msgid "Away" msgstr "Ausente" -#: ../src/common/helpers.py:216 +#: ../src/common/helpers.py:232 msgid "_Offline" msgstr "_Offline" -#: ../src/common/helpers.py:218 +#: ../src/common/helpers.py:234 msgid "Offline" msgstr "Offline" -#: ../src/common/helpers.py:221 +#: ../src/common/helpers.py:237 msgid "_Invisible" msgstr "In_visível" -#: ../src/common/helpers.py:223 -msgid "Invisible" -msgstr "Invisível" - -#: ../src/common/helpers.py:227 +#: ../src/common/helpers.py:243 msgid "?contact has status:Unknown" msgstr "Desconhecido" -#: ../src/common/helpers.py:229 +#: ../src/common/helpers.py:245 msgid "?contact has status:Has errors" msgstr "Contém erros" -#: ../src/common/helpers.py:234 +#: ../src/common/helpers.py:250 msgid "?Subscription we already have:None" msgstr "Nenhuma" -#: ../src/common/helpers.py:236 +#: ../src/common/helpers.py:252 msgid "To" msgstr "Para" -#: ../src/common/helpers.py:238 +#: ../src/common/helpers.py:254 msgid "From" msgstr "De" -#: ../src/common/helpers.py:240 +#: ../src/common/helpers.py:256 msgid "Both" msgstr "Ambos" -#: ../src/common/helpers.py:248 +#: ../src/common/helpers.py:264 msgid "?Ask (for Subscription):None" msgstr "Nenhum" -#: ../src/common/helpers.py:250 +#: ../src/common/helpers.py:266 msgid "Subscribe" msgstr "Subscrição" -#: ../src/common/helpers.py:259 +#: ../src/common/helpers.py:275 msgid "?Group Chat Contact Role:None" msgstr "?Função do Contacto no Chat:Nenhuma" -#: ../src/common/helpers.py:262 +#: ../src/common/helpers.py:278 msgid "Moderators" msgstr "Moderadores" -#: ../src/common/helpers.py:264 +#: ../src/common/helpers.py:280 msgid "Moderator" msgstr "Moderador" -#: ../src/common/helpers.py:267 +#: ../src/common/helpers.py:283 msgid "Participants" msgstr "Participantes" -#: ../src/common/helpers.py:269 +#: ../src/common/helpers.py:285 msgid "Participant" msgstr "Participante" -#: ../src/common/helpers.py:272 +#: ../src/common/helpers.py:288 msgid "Visitors" msgstr "Visitantes" -#: ../src/common/helpers.py:274 +#: ../src/common/helpers.py:290 msgid "Visitor" msgstr "Visitante" -#: ../src/common/helpers.py:310 +#: ../src/common/helpers.py:326 msgid "is paying attention to the conversation" msgstr "está a prestar atenção à conversa" -#: ../src/common/helpers.py:312 +#: ../src/common/helpers.py:328 msgid "is doing something else" msgstr "está a fazer outra coisa qualquer" -#: ../src/common/helpers.py:314 +#: ../src/common/helpers.py:330 msgid "is composing a message..." msgstr "está a escrever uma mensagem..." #. paused means he or she was compoing but has stopped for a while -#: ../src/common/helpers.py:317 +#: ../src/common/helpers.py:333 msgid "paused composing a message" msgstr "pausa na composição da mensagem" -#: ../src/common/helpers.py:319 +#: ../src/common/helpers.py:335 msgid "has closed the chat window or tab" msgstr "fechou a janela de conversa ou aba" #. we talk about a file -#: ../src/common/optparser.py:62 +#: ../src/common/optparser.py:60 #, python-format msgid "error: cannot open %s for reading" msgstr "erro: impossível abrir %s para leitura" -#: ../src/common/optparser.py:167 +#: ../src/common/optparser.py:171 msgid "gtk+" msgstr "" -#: ../src/common/optparser.py:176 ../src/common/optparser.py:177 +#: ../src/common/optparser.py:180 ../src/common/optparser.py:181 msgid "cyan" msgstr "cyan" +#~ msgid "Automatically authorize contact" +#~ msgstr "Autorizar automaticamente contacto" + +#~ msgid "Send File" +#~ msgstr "Enviar Ficheiro" + +#~ msgid "Underline" +#~ msgstr "Sublinhar" + #~ msgid "Would you like to overwrite it?" #~ msgstr "Deseja sobre-escrevê-lo?" @@ -4888,9 +5573,6 @@ msgstr "cyan" #~ msgid "Please modify your special notification below" #~ msgstr "Por favor escolha uma das opções abaixo:" -#~ msgid "Ad_vanced Actions" -#~ msgstr "Acções A_vançadas" - #~ msgid "Delete Message of the Day" #~ msgstr "Apagar Mensagem do Dia" @@ -4961,59 +5643,6 @@ msgstr "cyan" #~ msgid "Session bus is not available" #~ msgstr "Sessão bus não está disponível" -#, fuzzy -#~ msgid "Unable to load idle module" -#~ msgstr "Impossível entrar na sala" - -#~ msgid "Unable to join room" -#~ msgstr "Impossível entrar na sala" - -#~ msgid "A password is required to join this room." -#~ msgstr "É necessária uma palavra-passe para esta sala." - -#~ msgid "You are banned from this room." -#~ msgstr "Está banido/a desta sala." - -#~ msgid "Such room does not exist." -#~ msgstr "Tal sala não existe." - -#~ msgid "Room creation is restricted." -#~ msgstr "Criação de salas encontra-se restrita." - -#~ msgid "Your registered nickname must be used." -#~ msgstr "A sua alcunha registada tem de ser usada." - -#~ msgid "You are not in the members list." -#~ msgstr "Não está na lista de membros." - -#~ msgid "" -#~ "Your desired nickname is in use or registered by another occupant.\n" -#~ "Please specify another nickname below:" -#~ msgstr "" -#~ "A alcunha que deseja encontra-se em uso ou registado por outro ocupante.\n" -#~ "Por favor, introduza outra alcunha em baixo:" - -#~ msgid "we are now subscribed to %s" -#~ msgstr "estamos agora subscritos a %s" - -#~ msgid "unsubscribe request from %s" -#~ msgstr "pedido de remoção de subscrição por %s" - -#~ msgid "we are now unsubscribed from %s" -#~ msgstr "já não estamos subscritos a %s" - -#, fuzzy -#~ msgid "" -#~ "JID %s is not RFC compliant. It will not be added to your roster. Use " -#~ "roster management tools such as http://jru.jabberstudio.org/ to remove it" -#~ msgstr "" -#~ "JID %s não é compatível com RFC. Não será adicionado à sua lista. Utilize " -#~ "ferramentas de gestão de lista (roster) tais como http://jru.jabberstudio." -#~ "org/ para o remover." - -#~ msgid "Registration information for transport %s has not arrived in time" -#~ msgstr "Informação de registo para o transport %s não chegou a tempo" - #~ msgid "Sound" #~ msgstr "Som" @@ -5082,9 +5711,6 @@ msgstr "cyan" #~ msgid "Stoping selected file transfer" #~ msgstr "Parando a transferência de ficheiro seleccionada" -#~ msgid "Use a single chat window with _tabs" -#~ msgstr "Usar uma única janela de conversa com _abas" - #~ msgid "" #~ "If you close this tab and you have history disabled, the message will be " #~ "lost." @@ -5178,9 +5804,6 @@ msgstr "cyan" #~ msgid "Log presences in an _external file" #~ msgstr "Registar as presenças num ficheiro _externo" -#~ msgid "Unable to write file in %s" -#~ msgstr "Impossível escrever ficheiro em %s" - #, fuzzy #~ msgid "" #~ "You can set advanced account options by pressing Advanced button,or later " @@ -5295,9 +5918,6 @@ msgstr "cyan" #~ msgid "_Compact View" #~ msgstr "Vista _Compacta" -#~ msgid "_Nickname:" -#~ msgstr "_Alcunha:" - #~ msgid "_Refresh" #~ msgstr "_Actualizar" @@ -5320,9 +5940,6 @@ msgstr "cyan" #~ msgid "New _Room" #~ msgstr "Nova _Sala" -#~ msgid "Account:" -#~ msgstr "Conta:" - #~ msgid "Always use compact _view" #~ msgstr "Usar sempre _vista compacta" diff --git a/po/pt_BR.po b/po/pt_BR.po index 064f8f3e8..94e0b1e5e 100644 --- a/po/pt_BR.po +++ b/po/pt_BR.po @@ -3,11 +3,12 @@ # This file is distributed under the same license as the Gajim package. # junix , 2005. # +#: ../src/gajim-remote.py:218 ../src/gajim-remote.py:225 msgid "" msgstr "" "Project-Id-Version: Gajim 0.81\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2006-04-13 12:52+0200\n" +"POT-Creation-Date: 2006-07-04 00:03+0200\n" "PO-Revision-Date: 2006-04-14 23:41-0300\n" "Last-Translator: Alfredo Saldanha Jr. \n" "Language-Team: none\n" @@ -30,346 +31,2395 @@ msgstr "Gajim Instant Messenger" msgid "Jabber IM Client" msgstr "Cliente de IM Jabber" -#: ../src/advanced.py:71 +#: ../data/glade/account_context_menu.glade.h:1 +msgid "Send Single _Message..." +msgstr "Enviar _Mensagem Simples..." + +#: ../data/glade/account_context_menu.glade.h:2 +msgid "_Add Contact..." +msgstr "_Adicionar Contato..." + +#: ../data/glade/account_context_menu.glade.h:3 +msgid "_Discover Services..." +msgstr "_Descubra Serviços..." + +#: ../data/glade/account_context_menu.glade.h:4 +#: ../data/glade/roster_window.glade.h:15 +#: ../data/glade/systray_context_menu.glade.h:5 +msgid "_Group Chat" +msgstr "_Conferência" + +#: ../data/glade/account_context_menu.glade.h:5 +msgid "_Modify Account..." +msgstr "_Editar Conta..." + +#: ../data/glade/account_context_menu.glade.h:6 +msgid "_Status" +msgstr "_Status" + +#: ../data/glade/account_creation_wizard_window.glade.h:1 +msgid "" +"Account is being created\n" +"\n" +"Please wait..." +msgstr "" +"Conta está sendo criada\n" +"\n" +"Por favor espere..." + +#: ../data/glade/account_creation_wizard_window.glade.h:4 +msgid "Please choose one of the options below:" +msgstr "Por favor escolha uma das opções abaixo:" + +#: ../data/glade/account_creation_wizard_window.glade.h:5 +msgid "Please fill in the data for your new account" +msgstr "Por favor preencha os dados para sua nova conta" + +#: ../data/glade/account_creation_wizard_window.glade.h:6 +msgid "Click to see features (like MSN, ICQ transports) of jabber servers" +msgstr "" +"Clique para ver os recursos do servidor jabber (como transportes MSN, ICQ, " +"etc)" + +#: ../data/glade/account_creation_wizard_window.glade.h:7 +msgid "Connect when I press Finish" +msgstr "Conectar quando eu pressiono Fim" + +#: ../data/glade/account_creation_wizard_window.glade.h:8 +msgid "Gajim: Account Creation Wizard" +msgstr "Gajim: Auxíliar de Configuração de Conta" + +#: ../data/glade/account_creation_wizard_window.glade.h:9 +msgid "I already have an account I want to use" +msgstr "Eu já tenho uma conta e quero usa-la" + +#: ../data/glade/account_creation_wizard_window.glade.h:10 +msgid "I want to _register for a new account" +msgstr "Eu quero _registrar uma nova conta" + +#: ../data/glade/account_creation_wizard_window.glade.h:11 +#: ../data/glade/account_modification_window.glade.h:18 +msgid "If checked, Gajim will remember the password for this account" +msgstr "Se marcado, o Gajim lembrará a senha para esta conta" + +#: ../data/glade/account_creation_wizard_window.glade.h:12 +#: ../data/glade/manage_proxies_window.glade.h:6 +msgid "Pass_word:" +msgstr "_Senha:" + +#: ../data/glade/account_creation_wizard_window.glade.h:13 +#: ../data/glade/account_modification_window.glade.h:37 +msgid "Save pass_word" +msgstr "Salvar senha" + +#: ../data/glade/account_creation_wizard_window.glade.h:14 +msgid "Servers Features" +msgstr "Recursos dos Servidores" + +#: ../data/glade/account_creation_wizard_window.glade.h:15 +msgid "Set my profile when I connect" +msgstr "Configurar perfil quando eu conectar" + +#: ../data/glade/account_creation_wizard_window.glade.h:16 +msgid "" +"You need to have an account in order to connect\n" +"to the Jabber network." +msgstr "" +"Você precisa ter uma conta para conectar na\n" +"rede Jabber." + +#: ../data/glade/account_creation_wizard_window.glade.h:18 +msgid "Your JID:" +msgstr "Seu JID:" + +#: ../data/glade/account_creation_wizard_window.glade.h:19 +#: ../data/glade/roster_window.glade.h:10 +msgid "_Advanced" +msgstr "_Avançado" + +#: ../data/glade/account_creation_wizard_window.glade.h:20 +msgid "_Finish" +msgstr "_Encerrar" + +#: ../data/glade/account_creation_wizard_window.glade.h:21 +#: ../data/glade/manage_proxies_window.glade.h:9 +msgid "_Host:" +msgstr "_Host:" + +#: ../data/glade/account_creation_wizard_window.glade.h:22 +#: ../data/glade/account_modification_window.glade.h:45 +msgid "_Password:" +msgstr "_Senha:" + +#: ../data/glade/account_creation_wizard_window.glade.h:23 +#: ../data/glade/manage_proxies_window.glade.h:10 +msgid "_Port:" +msgstr "_Porta:" + +#: ../data/glade/account_creation_wizard_window.glade.h:24 +msgid "_Retype Password:" +msgstr "_Reescreva a Senha:" + +#: ../data/glade/account_creation_wizard_window.glade.h:25 +msgid "_Server:" +msgstr "_Servidor:" + +#: ../data/glade/account_creation_wizard_window.glade.h:26 +msgid "_Use proxy" +msgstr "_Usar proxy" + +#: ../data/glade/account_creation_wizard_window.glade.h:27 +#: ../data/glade/manage_proxies_window.glade.h:11 +msgid "_Username:" +msgstr "Nome do _usuário" + +#: ../data/glade/account_modification_window.glade.h:1 +#: ../data/glade/preferences_window.glade.h:8 +msgid "Miscellaneous" +msgstr "Diversos" + +#: ../data/glade/account_modification_window.glade.h:2 +msgid "OpenPGP" +msgstr "OpenPGP" + +#: ../data/glade/account_modification_window.glade.h:3 +msgid "Personal Information" +msgstr "Informações Pessoais" + +#: ../data/glade/account_modification_window.glade.h:4 +msgid "Account" +msgstr "Conta" + +#: ../data/glade/account_modification_window.glade.h:5 +msgid "Account Modification" +msgstr "Modificação da Conta" + +#: ../data/glade/account_modification_window.glade.h:6 +msgid "Autoreconnect when connection is lost" +msgstr "Reconectar automaticamente quando a conexão cair" + +#: ../data/glade/account_modification_window.glade.h:7 +msgid "C_onnect on Gajim startup" +msgstr "C_onectar na inicialização do Gajim" + +#: ../data/glade/account_modification_window.glade.h:8 +msgid "Chan_ge Password" +msgstr "Mudar Senha" + +#: ../data/glade/account_modification_window.glade.h:9 +msgid "" +"Check this so Gajim will connect in port 5223 where legacy servers are " +"expected to have SSL capabilities. Note that Gajim uses TLS encryption by " +"default if broadcasted by the server, and with this option enabled TLS will " +"be disabled" +msgstr "" +"Marque esta opção para o Gajim se conectar na porta 5223 onde servidores " +"antigos disponibilizam recursos SSL. Note que o Gajim usa criptografia TLS " +"por padrão se disponibilizada pelo servidor e com esta opção habilitada o " +"TLS será desabilitado" + +#: ../data/glade/account_modification_window.glade.h:10 +msgid "Choose _Key..." +msgstr "_Escolha a chave..." + +#: ../data/glade/account_modification_window.glade.h:11 +msgid "Click to change account's password" +msgstr "Clique para mudar a senha da conta" + +#: ../data/glade/account_modification_window.glade.h:12 +msgid "Connection" +msgstr "Conexão" + +#: ../data/glade/account_modification_window.glade.h:13 +msgid "Edit Personal Information..." +msgstr "Editar detalhes pessoais..." + +#: ../data/glade/account_modification_window.glade.h:14 +#: ../data/glade/roster_window.glade.h:5 ../src/notify.py:308 +#: ../src/notify.py:330 ../src/notify.py:342 ../src/tooltips.py:350 +msgid "Gajim" +msgstr "Gajim" + +#: ../data/glade/account_modification_window.glade.h:15 +#: ../data/glade/preferences_window.glade.h:44 +#: ../data/glade/vcard_information_window.glade.h:17 +#: ../src/roster_window.py:290 ../src/roster_window.py:1184 +#: ../src/roster_window.py:1405 +msgid "General" +msgstr "Geral" + +#: ../data/glade/account_modification_window.glade.h:16 +msgid "Hostname: " +msgstr "Nome do Host:" + +#: ../data/glade/account_modification_window.glade.h:17 +#, fuzzy +msgid "" +"If checked, Gajim will also broadcast some more IPs except from just your " +"IP, so file transfer has higher chances of working." +msgstr "" +"Se marcado, o Gajim transmitirá também alguns outros IPs exceto o seu, então " +"a transferência de arquivo tem grandes possibilidades de executar " +"corretamente." + +#: ../data/glade/account_modification_window.glade.h:19 +msgid "" +"If checked, Gajim will send keep-alive packets so it prevents connection " +"timeout which results in disconnection" +msgstr "" +"Se marcado, o Gajim enviará pacotes keep-alive que evitam queda de conexão" + +#: ../data/glade/account_modification_window.glade.h:20 +msgid "" +"If checked, Gajim will store the password in ~/.gajim/config with 'read' " +"permission only for you" +msgstr "" +"Se checado, o Gajim gravará sua senha em ~/.gajim/config com permissão de " +"'leitura' somente para você" + +#: ../data/glade/account_modification_window.glade.h:21 +msgid "" +"If checked, Gajim, when launched, will automatically connect to jabber using " +"this account" +msgstr "" +"Se marcado, o Gajim, quando carregado, conectará automaticamente ao jabber " +"usando esta conta" + +#: ../data/glade/account_modification_window.glade.h:22 +msgid "" +"If checked, any change to the global status (handled by the combobox at the " +"bottom of the roster window) will change the status of this account " +"accordingly" +msgstr "" +"Se verificada, qualquer mudança ao status global (segurado pelo combobox no " +"fundo da janela da lista) mudará o status deste cliente conformemente" + +#: ../data/glade/account_modification_window.glade.h:23 +msgid "Information about you, as stored in the server" +msgstr "Informações sobre você são gravadas no servidor" + +#: ../data/glade/account_modification_window.glade.h:24 +msgid "Manage..." +msgstr "Gerenciar..." + +#: ../data/glade/account_modification_window.glade.h:25 ../src/config.py:1448 +msgid "No key selected" +msgstr "Nenhuma chave selecionada" + +#. None means no proxy profile selected +#: ../data/glade/account_modification_window.glade.h:27 ../src/config.py:1053 +#: ../src/config.py:1058 ../src/config.py:1230 ../src/config.py:1505 +#: ../src/config.py:1578 ../src/config.py:2282 +msgid "None" +msgstr "Nenhum" + +#: ../data/glade/account_modification_window.glade.h:28 +msgid "Personal Information" +msgstr "Informações Pessoais" + +#: ../data/glade/account_modification_window.glade.h:29 +msgid "Port: " +msgstr "Porta:" + +#: ../data/glade/account_modification_window.glade.h:30 +msgid "Priori_ty:" +msgstr "_Prioridade" + +#: ../data/glade/account_modification_window.glade.h:31 +msgid "" +"Priority is used in Jabber to determine who gets the events from the jabber " +"server when two or more clients are connected using the same account; The " +"client with the highest priority gets the events" +msgstr "" +"Prioridade é usada no Jabber para determinar quem recebe os eventos do " +"servidor jabber quando dois ou mais clientes estão conectados usando a mesma " +"conta; O cliente com a maior prioridade receberá os eventos" + +#: ../data/glade/account_modification_window.glade.h:32 +msgid "Proxy:" +msgstr "Proxy:" + +#: ../data/glade/account_modification_window.glade.h:33 +msgid "Resour_ce: " +msgstr "_Recurso: " + +#: ../data/glade/account_modification_window.glade.h:34 +msgid "" +"Resource is sent to the Jabber server in order to separate the same JID in " +"two or more parts depending on the number of the clients connected in the " +"same server with the same account. So you might be connected in the same " +"account with resource 'Home' and 'Work' at the same time. The resource which " +"has the highest priority will get the events. (see below)" +msgstr "" +"Recurso é enviado ao servidor jabber com objetivo de 'separar' o mesmo JID " +"em duas ou mais partes dependendo do número de clientes conectados no mesmo " +"servidor com a mesma conta. Então você pode estar conectado na mesma conta " +"com o recurso 'Casa' e 'Trabalho' ao mesmo tempo. O recurso que possuir a " +"maior prioridade receberá os eventos. (veja abaixo)" + +#: ../data/glade/account_modification_window.glade.h:35 +msgid "Save _passphrase (insecure)" +msgstr "Salvar _frase de acesso (inseguro)" + +#: ../data/glade/account_modification_window.glade.h:36 +msgid "Save conversation _logs for all contacts" +msgstr "Salvar histórico para todos os contatos desta conta" + +#: ../data/glade/account_modification_window.glade.h:38 +msgid "Send keep-alive packets" +msgstr "Enviar pacotes para manter a conexão (keep-alive)" + +#: ../data/glade/account_modification_window.glade.h:39 +msgid "Synch_ronize account status with global status" +msgstr "_Sincronizar status da conta com status global" + +#: ../data/glade/account_modification_window.glade.h:40 +msgid "Use _SSL (legacy)" +msgstr "Usar _SSL (obsoleto, apenas para servidores antigos)" + +#: ../data/glade/account_modification_window.glade.h:41 +msgid "Use custom hostname/port" +msgstr "Usa nomedohost/porta customizada" + +#: ../data/glade/account_modification_window.glade.h:42 +msgid "Use file transfer proxies" +msgstr "Usa proxies de transferência de arquivos" + +#: ../data/glade/account_modification_window.glade.h:43 +#: ../data/glade/add_new_contact_window.glade.h:6 +msgid "_Jabber ID:" +msgstr "_Jabber ID:" + +#: ../data/glade/account_modification_window.glade.h:44 +msgid "_Name: " +msgstr "_Nome: " + +#: ../data/glade/accounts_window.glade.h:1 +msgid "Accounts" +msgstr "Contas" + +#: ../data/glade/accounts_window.glade.h:2 +msgid "" +"If you have 2 or more accounts and it is checked, Gajim will list all " +"contacts as if you had one account" +msgstr "" +"Se você tem duas ou mais contas e isto é marcado, Gajim listará todos os " +"contatos como se você tivesse somente uma conta" + +#: ../data/glade/accounts_window.glade.h:3 +msgid "_Merge accounts" +msgstr "_Juntar contato das contas" + +#: ../data/glade/accounts_window.glade.h:4 +msgid "_Modify" +msgstr "_Modificar" + +#: ../data/glade/accounts_window.glade.h:5 +#: ../data/glade/remove_account_window.glade.h:4 +msgid "_Remove" +msgstr "_Remover" + +#: ../data/glade/add_new_contact_window.glade.h:1 +#, fuzzy +msgid "A_llow this contact to view my status" +msgstr "Permita que ele/ela ver meu status" + +#: ../data/glade/add_new_contact_window.glade.h:2 +msgid "Add New Contact" +msgstr "Adicionar Novo Contato" + +#: ../data/glade/add_new_contact_window.glade.h:3 +msgid "I would like to add you to my contact list." +msgstr "Por favor, eu gostaria de adiciona-lo à minha lista." + +#: ../data/glade/add_new_contact_window.glade.h:4 +#, fuzzy +msgid "_Account:" +msgstr "Conta:" + +#: ../data/glade/add_new_contact_window.glade.h:5 +#, fuzzy +msgid "_Group:" +msgstr "Grupo:" + +#: ../data/glade/add_new_contact_window.glade.h:7 +msgid "_Nickname:" +msgstr "_Apelido:" + +#: ../data/glade/add_new_contact_window.glade.h:8 +#, fuzzy +msgid "_Protocol:" +msgstr "Protocolo:" + +#: ../data/glade/add_new_contact_window.glade.h:9 +msgid "_Subscribe" +msgstr "_Inscrever" + +#: ../data/glade/add_new_contact_window.glade.h:10 +#, fuzzy +msgid "_User ID:" +msgstr "ID do Usuário:" + +#: ../data/glade/advanced_configuration_window.glade.h:1 +msgid "Description" +msgstr "Descrição" + +#: ../data/glade/advanced_configuration_window.glade.h:2 +msgid "NOTE: You should restart gajim for some setting to take effect" +msgstr "" +"NOTA Você deve reiniciar o gajim para algumas configurações tenham " +"efeito" + +#: ../data/glade/advanced_configuration_window.glade.h:3 +msgid "Advanced Configuration Editor" +msgstr "Editor de Configurações Avançadas" + +#: ../data/glade/advanced_configuration_window.glade.h:4 +msgid "Filter:" +msgstr "Filtro:" + +#: ../data/glade/advanced_menuitem_menu.glade.h:1 +msgid "Delete MOTD" +msgstr "Deletar MOTD" + +#: ../data/glade/advanced_menuitem_menu.glade.h:2 +msgid "Deletes Message of the Day" +msgstr "Deletar Mensagem do Dia" + +#: ../data/glade/advanced_menuitem_menu.glade.h:3 +msgid "Sends a message to currently connected users to this server" +msgstr "Enviar uma mensagem para os usuários conectados neste servidor" + +#: ../data/glade/advanced_menuitem_menu.glade.h:4 +msgid "Set MOTD" +msgstr "Configurar MOTD" + +#: ../data/glade/advanced_menuitem_menu.glade.h:5 +msgid "Sets Message of the Day" +msgstr "Configurar Mensagem do Dia" + +#: ../data/glade/advanced_menuitem_menu.glade.h:6 +msgid "Show _XML Console" +msgstr "Mostrar console _XML" + +#: ../data/glade/advanced_menuitem_menu.glade.h:7 +msgid "Update MOTD" +msgstr "Atualizar MOTD" + +#: ../data/glade/advanced_menuitem_menu.glade.h:8 +msgid "Updates Message of the Day" +msgstr "Atualizar Mensagem do Dia" + +#: ../data/glade/advanced_menuitem_menu.glade.h:9 +msgid "_Administrator" +msgstr "_Administrador" + +#: ../data/glade/advanced_menuitem_menu.glade.h:10 +msgid "_Privacy Lists" +msgstr "" + +#: ../data/glade/advanced_menuitem_menu.glade.h:11 +msgid "_Send Server Message" +msgstr "_Enviar Mensagem pelo Servidor" + +#: ../data/glade/advanced_menuitem_menu.glade.h:12 +msgid "_Send Single Message" +msgstr "_Enviar uma Mensagem Simples" + +#: ../data/glade/advanced_notifications_window.glade.h:1 +msgid " a window/tab opened with that contact " +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:2 +#, fuzzy +msgid "Actions" +msgstr "Aplicações" + +#: ../data/glade/advanced_notifications_window.glade.h:3 +#, fuzzy +msgid "Conditions" +msgstr "Sons" + +#: ../data/glade/advanced_notifications_window.glade.h:4 +#: ../data/glade/preferences_window.glade.h:10 +msgid "Sounds" +msgstr "Sons" + +#: ../data/glade/advanced_notifications_window.glade.h:5 +#, fuzzy +msgid "Add" +msgstr "Endereço" + +#: ../data/glade/advanced_notifications_window.glade.h:6 +#, fuzzy +msgid "Advanced Actions" +msgstr "_Ações Avançadas" + +#: ../data/glade/advanced_notifications_window.glade.h:7 +#, fuzzy +msgid "Advanced Notifications Control" +msgstr "Editor de Configurações Avançadas" + +#: ../data/glade/advanced_notifications_window.glade.h:8 +#, fuzzy +msgid "All Status " +msgstr "Status: " + +#: ../data/glade/advanced_notifications_window.glade.h:9 +msgid "And I " +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:10 +#, fuzzy +msgid "Away " +msgstr "Afastado" + +#: ../data/glade/advanced_notifications_window.glade.h:11 +#, fuzzy +msgid "Busy " +msgstr "Ocupado" + +#: ../data/glade/advanced_notifications_window.glade.h:12 +msgid "Don't have " +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:13 +#, fuzzy +msgid "Down" +msgstr "Download" + +#: ../data/glade/advanced_notifications_window.glade.h:14 +msgid "Have " +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:15 +#: ../src/common/helpers.py:239 +msgid "Invisible" +msgstr "Invisível" + +#: ../data/glade/advanced_notifications_window.glade.h:16 +#, fuzzy +msgid "Launch a command" +msgstr "comando" + +#: ../data/glade/advanced_notifications_window.glade.h:17 +#, fuzzy +msgid "List of special notifications settings" +msgstr "Adicionando Notificação Especial para %s" + +#: ../data/glade/advanced_notifications_window.glade.h:18 +#, fuzzy +msgid "Not Available " +msgstr "Não Disponível" + +#: ../data/glade/advanced_notifications_window.glade.h:19 +#, fuzzy +msgid "Online / Free For Chat" +msgstr "Livre para Conversa" + +#: ../data/glade/advanced_notifications_window.glade.h:20 +#, fuzzy +msgid "Play a sound" +msgstr "Tocar _Sons" + +#: ../data/glade/advanced_notifications_window.glade.h:21 +msgid "" +"Receive a Message\n" +"Contact Connected\n" +"Contact Disconnected\n" +"Contact Change Status\n" +"Group Chat Message Highlight\n" +"Group Chat Message Received\n" +"File Transfert Resquest\n" +"File Transfert Started\n" +"File Transfert Finished" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:30 +msgid "Some special(s) status..." +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:31 +msgid "Up" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:32 +msgid "When " +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:33 +msgid "_Activate Windows manager UrgencyHint to make chat taskbar to flash" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:34 +#, fuzzy +msgid "_Disable auto opening chat window" +msgstr "Esconder os botões na janela de conferência" + +#: ../data/glade/advanced_notifications_window.glade.h:35 +msgid "_Disable existing popup window" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:36 +msgid "_Disable existing sound for this event" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:37 +msgid "_Disable showing event in roster" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:38 +msgid "_Disable showing event in systray" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:39 +msgid "_Inform me with a popup window" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:40 +#, fuzzy +msgid "_Open chat window with user" +msgstr "_Usar uma única janela de conversa com abas" + +#: ../data/glade/advanced_notifications_window.glade.h:41 +#, fuzzy +msgid "_Show event in roster" +msgstr "Mostre somente na _lista" + +#: ../data/glade/advanced_notifications_window.glade.h:42 +#, fuzzy +msgid "_Show event in systray" +msgstr "Mostre somente na _lista" + +#: ../data/glade/advanced_notifications_window.glade.h:43 +msgid "" +"contact(s)\n" +"group(s)\n" +"everybody" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:46 +#, fuzzy +msgid "for " +msgstr "Porta:" + +#: ../data/glade/advanced_notifications_window.glade.h:47 +msgid "when I'm " +msgstr "" + +#: ../data/glade/change_password_dialog.glade.h:1 +msgid "Change Password" +msgstr "Mudar Senha" + +#: ../data/glade/change_password_dialog.glade.h:2 +msgid "Enter it again for confirmation:" +msgstr "Entre novamente para confirmação:" + +#: ../data/glade/change_password_dialog.glade.h:3 +msgid "Enter new password:" +msgstr "Entre com a nova senha:" + +#: ../data/glade/change_status_message_dialog.glade.h:1 +msgid "Type your new status message" +msgstr "Escreva sua nova mensagem de status:" + +#: ../data/glade/change_status_message_dialog.glade.h:2 +msgid "Preset messages:" +msgstr "Mensagens pre-configuradas" + +#: ../data/glade/change_status_message_dialog.glade.h:3 +msgid "Save as Preset..." +msgstr "Salvar como Pre-configuradas..." + +#: ../data/glade/chat_context_menu.glade.h:1 +msgid "Join _Group Chat" +msgstr "_Ingressar numa Conferência" + +#: ../data/glade/chat_context_menu.glade.h:2 +#: ../data/glade/chat_control_popup_menu.glade.h:4 +#: ../data/glade/gc_occupants_menu.glade.h:2 +#: ../data/glade/roster_contact_context_menu.glade.h:8 +msgid "_Add to Roster" +msgstr "_Adicionar à Lista" + +#: ../data/glade/chat_context_menu.glade.h:3 +msgid "_Copy JID/Email Address" +msgstr "_Copiar Endereço de Email/JID" + +#: ../data/glade/chat_context_menu.glade.h:4 +msgid "_Copy Link Location" +msgstr "_Copia Localização do Link" + +#: ../data/glade/chat_context_menu.glade.h:5 +msgid "_Open Email Composer" +msgstr "_Abrir Cliente de E-mail" + +#: ../data/glade/chat_context_menu.glade.h:6 +msgid "_Open Link in Browser" +msgstr "_Abrir link no Navegador" + +#: ../data/glade/chat_context_menu.glade.h:7 +#: ../data/glade/roster_window.glade.h:19 +#: ../data/glade/systray_context_menu.glade.h:6 +msgid "_Start Chat" +msgstr "_Iniciar conversa" + +#: ../data/glade/chat_control_popup_menu.glade.h:1 +msgid "Click to see past conversations with this contact" +msgstr "Clique para ver o histórico de conversas com este contato" + +#: ../data/glade/chat_control_popup_menu.glade.h:2 +#: ../data/glade/roster_contact_context_menu.glade.h:6 +msgid "Send _File" +msgstr "Enviar _Arquivo" + +#: ../data/glade/chat_control_popup_menu.glade.h:3 +msgid "Toggle Open_PGP Encryption" +msgstr "Alternar criptografia Open_PGP" + +#: ../data/glade/chat_control_popup_menu.glade.h:5 +#: ../data/glade/gc_control_popup_menu.glade.h:6 +msgid "_Compact View Alt+C" +msgstr "Visão _Compacta Alt+C" + +#: ../data/glade/chat_control_popup_menu.glade.h:6 +#: ../data/glade/gc_control_popup_menu.glade.h:7 +#: ../data/glade/gc_occupants_menu.glade.h:5 +#: ../data/glade/roster_contact_context_menu.glade.h:11 +msgid "_History" +msgstr "_Histórico" + +#: ../data/glade/data_form_window.glade.h:1 +msgid "Room Configuration" +msgstr "Configuração da Sala" + +#: ../data/glade/edit_groups_dialog.glade.h:1 +msgid "Edit Groups" +msgstr "Editar Grupos" + +#: ../data/glade/filetransfers.glade.h:1 +msgid "A list of active, completed and stopped file transfers" +msgstr "Uma lista de transferência de arquivos ativas, completadas e paradas" + +#: ../data/glade/filetransfers.glade.h:2 +msgid "Cancel file transfer" +msgstr "Cancelar transferência de arquivo" + +#: ../data/glade/filetransfers.glade.h:3 +msgid "Cancels the selected file transfer" +msgstr "Cancelar a transferência de arquivo selecionada" + +#: ../data/glade/filetransfers.glade.h:4 +msgid "Cancels the selected file transfer and removes incomplete file" +msgstr "" +"Cancelar a transferência de arquivo selecionada e remove o arquivo incompleto" + +#: ../data/glade/filetransfers.glade.h:5 +msgid "Clean _up" +msgstr "_Limpar" + +#: ../data/glade/filetransfers.glade.h:6 +msgid "File Transfers" +msgstr "Transferência de Arquivos" + +#: ../data/glade/filetransfers.glade.h:7 +msgid "Hides the window" +msgstr "Esconder a janela" + +#: ../data/glade/filetransfers.glade.h:8 +msgid "Remove file transfer from the list." +msgstr "Remover a transferência de arquivo da lista." + +#: ../data/glade/filetransfers.glade.h:9 +msgid "Removes completed, canceled and failed file transfers from the list" +msgstr "" +"Remover transferências de arquivos completas, canceladas ou interrompidas da " +"lista" + +#: ../data/glade/filetransfers.glade.h:10 +msgid "Shows a list of file transfers between you and other" +msgstr "Mostrar uma lista de transferências de arquivos entre você e o outro" + +#: ../data/glade/filetransfers.glade.h:11 +msgid "" +"This action removes single file transfer from the list. If the transfer is " +"active, it is first stopped and then removed" +msgstr "" +"Esta ação remove uma única transferência de arquivo da lista. Se a " +"transferência está ativa, isto vai pará-la e removê-la." + +#: ../data/glade/filetransfers.glade.h:12 +msgid "When a file transfer is complete show a popup notification" +msgstr "Mostrar um alerta visual quanto uma transferência de arquivo terminar" + +#: ../data/glade/filetransfers.glade.h:13 ../src/filetransfers_window.py:753 +msgid "_Continue" +msgstr "_Continuar" + +#: ../data/glade/filetransfers.glade.h:14 +msgid "_Notify me when a file transfer is complete" +msgstr "_Notificar-me quando a transmissão do arquivo terminar" + +#: ../data/glade/filetransfers.glade.h:15 ../src/filetransfers_window.py:190 +msgid "_Open Containing Folder" +msgstr "_Abrir pasta do arquivo" + +#: ../data/glade/filetransfers.glade.h:16 +msgid "_Pause" +msgstr "_Pausa" + +#: ../data/glade/filetransfers.glade.h:17 +msgid "file transfers list" +msgstr "lista de transferência de arquivos" + +#: ../data/glade/gajim_themes_window.glade.h:1 +msgid "Chatstate Tab Colors" +msgstr "Aba Cores do Bate-papo" + +#: ../data/glade/gajim_themes_window.glade.h:2 +msgid "" +"Account\n" +"Group\n" +"Contact\n" +"Banner" +msgstr "" +"Conta\n" +"Grupo\n" +"Contato\n" +"Faixa" + +#: ../data/glade/gajim_themes_window.glade.h:6 +#: ../data/glade/privacy_list_edit_window.glade.h:4 ../src/config.py:326 +msgid "Active" +msgstr "Ativo" + +#: ../data/glade/gajim_themes_window.glade.h:7 +msgid "Bold" +msgstr "Negrito" + +#: ../data/glade/gajim_themes_window.glade.h:8 +msgid "Composing" +msgstr "Compôr" + +#: ../data/glade/gajim_themes_window.glade.h:9 +msgid "Font style:" +msgstr "Estilo da fonte:" + +#: ../data/glade/gajim_themes_window.glade.h:10 +msgid "Gajim Themes Customization" +msgstr "Customização de Temas do Gajim" + +#: ../data/glade/gajim_themes_window.glade.h:11 +msgid "Gone" +msgstr "Ido" + +#: ../data/glade/gajim_themes_window.glade.h:12 +msgid "Inactive" +msgstr "Inativo" + +#: ../data/glade/gajim_themes_window.glade.h:13 +msgid "Italic" +msgstr "Itálico" + +#: ../data/glade/gajim_themes_window.glade.h:14 +msgid "" +"MUC\n" +"Messages" +msgstr "" +"MUC\n" +"Mensagens" + +#: ../data/glade/gajim_themes_window.glade.h:16 +msgid "" +"MUC Directed\n" +"Messages" +msgstr "" +"MUC Direto\n" +"Mensagens" + +#: ../data/glade/gajim_themes_window.glade.h:18 ../src/tooltips.py:667 +msgid "Paused" +msgstr "Pausa" + +#: ../data/glade/gajim_themes_window.glade.h:19 +msgid "Text _color:" +msgstr "_Cor do texto" + +#: ../data/glade/gajim_themes_window.glade.h:20 +msgid "Text _font:" +msgstr "_Fonte do texto" + +#: ../data/glade/gajim_themes_window.glade.h:21 +msgid "_Background:" +msgstr "Cor _de fundo" + +#: ../data/glade/gc_control_popup_menu.glade.h:1 +msgid "Change _Nickname" +msgstr "Mudar _Apelido" + +#: ../data/glade/gc_control_popup_menu.glade.h:2 +msgid "Change _Subject" +msgstr "Mudar _Assunto" + +#: ../data/glade/gc_control_popup_menu.glade.h:3 +msgid "Click to see past conversation in this room" +msgstr "Clique para ver o histórico de conversas nesta sala" + +#: ../data/glade/gc_control_popup_menu.glade.h:4 +msgid "Configure _Room" +msgstr "Configurar _Sala" + +#: ../data/glade/gc_control_popup_menu.glade.h:5 +msgid "_Bookmark This Room" +msgstr "Adicionar esta Sala ao _Bookmark" + +#: ../data/glade/gc_occupants_menu.glade.h:1 +msgid "Mo_derator" +msgstr "Mo_derador" + +#: ../data/glade/gc_occupants_menu.glade.h:3 +msgid "_Admin" +msgstr "_Administração" + +#: ../data/glade/gc_occupants_menu.glade.h:4 +msgid "_Ban" +msgstr "_Banir" + +#: ../data/glade/gc_occupants_menu.glade.h:6 +msgid "_Kick" +msgstr "_Chutar" + +#: ../data/glade/gc_occupants_menu.glade.h:7 +msgid "_Member" +msgstr "_Membro" + +#: ../data/glade/gc_occupants_menu.glade.h:8 +msgid "_Occupant Actions" +msgstr "Ações de _Ocupantes" + +#: ../data/glade/gc_occupants_menu.glade.h:9 +msgid "_Owner" +msgstr "D_ono" + +#: ../data/glade/gc_occupants_menu.glade.h:10 +msgid "_Send Private Message" +msgstr "_Enviar Mensagem Privada" + +#: ../data/glade/gc_occupants_menu.glade.h:11 +msgid "_Voice" +msgstr "_Voz" + +#: ../data/glade/history_manager.glade.h:1 +msgid "" +"Welcome to Gajim History Logs Manager\n" +"\n" +"You can select logs from the left and/or search database from below.\n" +"\n" +"WARNING:\n" +"If you plan to do massive deletions, please make sure Gajim is not running. " +"Generally avoid deletions with contacts you currently chat with." +msgstr "" +"Bem-vindo ao Gerenciador de Histórico de Logs do Gajim\n" +"\n" +"Você pode selecionar os logs da esquerda e/ou procurar a base de dados do " +"abaixo.\n" +" CUIDADO:\n" +"Se você planeja fazer apagamentos maciços, certifique-se por favor que o " +"Gajim não está executando. Evite apagamentos com contatos que você esteja " +"conversando no momento." + +#: ../data/glade/history_manager.glade.h:7 +msgid "Delete" +msgstr "Deletar" + +#: ../data/glade/history_manager.glade.h:8 +msgid "Export" +msgstr "Exportar" + +#: ../data/glade/history_manager.glade.h:9 +msgid "Gajim History Logs Manager" +msgstr "Gerenciador de Histórico de Logs do Gajim" + +#: ../data/glade/history_manager.glade.h:10 +msgid "_Search Database" +msgstr "_Buscar no Bando de Dados" + +#: ../data/glade/history_window.glade.h:1 +msgid "Build custom query" +msgstr "Gerar consulta customizada" + +#: ../data/glade/history_window.glade.h:2 +msgid "Conversation History" +msgstr "Histórico de Conversação" + +#: ../data/glade/history_window.glade.h:3 +msgid "Query Builder..." +msgstr "Gerador de consultas..." + +#: ../data/glade/history_window.glade.h:4 +msgid "Search" +msgstr "Buscar" + +#: ../data/glade/history_window.glade.h:5 +msgid "_Search" +msgstr "_Buscar" + +#: ../data/glade/invitation_received_dialog.glade.h:1 +msgid "Accept" +msgstr "Aceitar" + +#: ../data/glade/invitation_received_dialog.glade.h:2 +#: ../data/glade/privacy_list_edit_window.glade.h:8 +msgid "Deny" +msgstr "Negar" + +#: ../data/glade/invitation_received_dialog.glade.h:3 +msgid "Invitation Received" +msgstr "Convite Recebido" + +#: ../data/glade/join_groupchat_window.glade.h:1 ../src/dialogs.py:941 +msgid "Join Group Chat" +msgstr "Ingressar numa conferência" + +#: ../data/glade/join_groupchat_window.glade.h:2 +#: ../data/glade/manage_bookmarks_window.glade.h:4 +#: ../data/glade/vcard_information_window.glade.h:28 +msgid "Nickname:" +msgstr "Apelido:" + +#: ../data/glade/join_groupchat_window.glade.h:3 +#: ../data/glade/manage_bookmarks_window.glade.h:5 +msgid "Password:" +msgstr "Senha:" + +#: ../data/glade/join_groupchat_window.glade.h:4 +msgid "Recently:" +msgstr "Recentemente:" + +#: ../data/glade/join_groupchat_window.glade.h:5 +#: ../data/glade/manage_bookmarks_window.glade.h:7 +msgid "Room:" +msgstr "Sala:" + +#: ../data/glade/join_groupchat_window.glade.h:6 +#: ../data/glade/manage_bookmarks_window.glade.h:8 +msgid "Server:" +msgstr "Servidor:" + +#: ../data/glade/join_groupchat_window.glade.h:7 ../src/disco.py:1145 +#: ../src/disco.py:1507 +msgid "_Join" +msgstr "_Ingressar" + +#: ../data/glade/manage_accounts_window.glade.h:1 +msgid "Manage Accounts" +msgstr "Gerenciar Contas" + +#: ../data/glade/manage_bookmarks_window.glade.h:1 +msgid "Auto join" +msgstr "Ingresso automático" + +#: ../data/glade/manage_bookmarks_window.glade.h:2 +msgid "If checked, Gajim will join this group chat on startup" +msgstr "" +"Se marcado, o Gajim irá ingressar na conferência no ínicio da aplicação" + +#: ../data/glade/manage_bookmarks_window.glade.h:3 +msgid "Manage Bookmarks" +msgstr "Gerenciar Bookmarks" + +#: ../data/glade/manage_bookmarks_window.glade.h:6 +#, fuzzy +msgid "Print status:" +msgstr "Imprimir tempo:" + +#: ../data/glade/manage_bookmarks_window.glade.h:9 +msgid "Title:" +msgstr "Título:" + +#: ../data/glade/manage_proxies_window.glade.h:1 +msgid "Properties" +msgstr "Propriedades" + +#: ../data/glade/manage_proxies_window.glade.h:2 +msgid "Settings" +msgstr "Configurações" + +#: ../data/glade/manage_proxies_window.glade.h:3 +msgid "HTTP Connect" +msgstr "Conexão HTTP" + +#: ../data/glade/manage_proxies_window.glade.h:4 +msgid "Manage Proxy Profiles" +msgstr "Gerenciar Perfis de Proxy" + +#: ../data/glade/manage_proxies_window.glade.h:5 +#: ../data/glade/vcard_information_window.glade.h:27 +msgid "Name:" +msgstr "Nome:" + +#: ../data/glade/manage_proxies_window.glade.h:7 +msgid "Type:" +msgstr "Tipo:" + +#: ../data/glade/manage_proxies_window.glade.h:8 +msgid "Use authentication" +msgstr "Usar autenticação" + +#: ../data/glade/message_window.glade.h:1 +msgid "Click to insert an emoticon (Alt+M)" +msgstr "Clique para inserir um emoticon (Alt+M)" + +#: ../data/glade/message_window.glade.h:2 ../src/chat_control.py:966 +msgid "OpenPGP Encryption" +msgstr "Criptografia OpenPGP" + +#. Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector) +#: ../data/glade/message_window.glade.h:4 +#: ../data/glade/roster_window.glade.h:9 +msgid "_Actions" +msgstr "_Ações" + +#. Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector) +#: ../data/glade/message_window.glade.h:6 +#: ../data/glade/xml_console_window.glade.h:11 +#: ../src/filetransfers_window.py:249 +msgid "_Send" +msgstr "_Enviar" + +#: ../data/glade/passphrase_dialog.glade.h:1 +msgid "Passphrase" +msgstr "Frase de acesso" + +#: ../data/glade/preferences_window.glade.h:1 +msgid "Advanced Configuration Editor" +msgstr "Editor de Configurações Avançadas" + +#: ../data/glade/preferences_window.glade.h:2 +msgid "Applications" +msgstr "Aplicações" + +#. a header for custom browser/client/file manager. so translate sth like: Custom Settings +#: ../data/glade/preferences_window.glade.h:4 +msgid "Custom" +msgstr "Customizar" + +#: ../data/glade/preferences_window.glade.h:5 +msgid "Format of a line" +msgstr "Formato da linha" + +#: ../data/glade/preferences_window.glade.h:6 +#, fuzzy +msgid "GMail Options" +msgstr "Aplicações" + +#: ../data/glade/preferences_window.glade.h:7 +msgid "Interface Customization" +msgstr "Customização de interface" + +#: ../data/glade/preferences_window.glade.h:9 +msgid "Preset Status Messages" +msgstr "Mensagens de Status Disponíveis" + +#: ../data/glade/preferences_window.glade.h:11 +msgid "Visual Notifications" +msgstr "Notificações Visuais" + +#: ../data/glade/preferences_window.glade.h:12 +msgid "A_fter nickname:" +msgstr "_Depois do apelido:" + +#: ../data/glade/preferences_window.glade.h:13 +msgid "Advanced" +msgstr "Avançado" + +#: ../data/glade/preferences_window.glade.h:14 +msgid "" +"All chat states\n" +"Composing only\n" +"Disabled" +msgstr "" +"Todos os status de conversa\n" +"Escrevendo somente\n" +"Desabilitado" + +#: ../data/glade/preferences_window.glade.h:17 +msgid "Allow _OS information to be sent" +msgstr "Permitir o envio de informações do _SO " + +#: ../data/glade/preferences_window.glade.h:18 +msgid "Allow popup/notifications when I'm _away/na/busy/invisible" +msgstr "" +"Permite janela/notificação quando eu estou _afastado/NA/ocupado/invisível" + +#: ../data/glade/preferences_window.glade.h:19 +msgid "Also known as iChat style" +msgstr "Conhecido também como estilo iChat" + +#: ../data/glade/preferences_window.glade.h:20 +msgid "Ask status message when I:" +msgstr "Solicite uma mensagem de status quanto eu:" + +#: ../data/glade/preferences_window.glade.h:21 +msgid "Auto _away after:" +msgstr "Marcar como _afastado depois:" + +#: ../data/glade/preferences_window.glade.h:22 +msgid "Auto _not available after:" +msgstr "Marcar como _afastado depois:" + +#: ../data/glade/preferences_window.glade.h:23 +msgid "" +"Autodetect on every Gajim startup\n" +"Always use GNOME default applications\n" +"Always use KDE default applications\n" +"Custom" +msgstr "" +"Auto-detectar no início do Gajim\n" +"Sempre usar aplicações padrão GNOME\n" +"Sempre usar aplicações padrão KDE\n" +"Customizar" + +#: ../data/glade/preferences_window.glade.h:27 +msgid "B_efore nickname:" +msgstr "_Antes do apelido:" + +#: ../data/glade/preferences_window.glade.h:28 ../src/chat_control.py:718 +msgid "Chat" +msgstr "Conversa" + +#: ../data/glade/preferences_window.glade.h:29 +msgid "Chat state noti_fications:" +msgstr "Noti_ficações do status da conversa:" + +#: ../data/glade/preferences_window.glade.h:30 +msgid "" +"Check this option, only if someone you don't have in the roster spams/annoys " +"you. Use with caution, cause it blocks all messages from any contact that is " +"not in the roster" +msgstr "" +"Marque esta opção somente se alguém que não está na sua lista estiver " +"mandando spams. Utilize com cuidado, porque isto bloqueia todas as mensagens " +"de qualquer contato que você não possuir na sua lista e queria lhe enviar " +"uma mensagem" + +#: ../data/glade/preferences_window.glade.h:31 +msgid "Default status _iconset:" +msgstr "_Conjunto de Ãcones de status padrão:" + +#: ../data/glade/preferences_window.glade.h:32 +msgid "Display _extra email details" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:33 +msgid "Display a_vatars of contacts in roster" +msgstr "Mostrar a_vatar dos contatos na lista" + +#: ../data/glade/preferences_window.glade.h:34 +msgid "Display status _messages of contacts in roster" +msgstr "Mostrar _mensagem de status da lista de contato" + +#: ../data/glade/preferences_window.glade.h:35 +msgid "E_very 5 minutes" +msgstr "De 5 _em 5 minutos" + +#: ../data/glade/preferences_window.glade.h:36 +msgid "Emoticons:" +msgstr "Emoticons:" + +#: ../data/glade/preferences_window.glade.h:37 +msgid "Events" +msgstr "Eventos" + +#: ../data/glade/preferences_window.glade.h:38 +msgid "" +"Gajim can send and receive meta-information related to a conversation you " +"may have with a contact. Here you can specify which chatstates you want to " +"send to the other party." +msgstr "" +"Gajim pode enviar e receber meta-informações relacionadas a conversação que " +"você pode ter com um contato. Aqui você pode especificar quais caracteres " +"você quer para enviar a outra parte." + +#: ../data/glade/preferences_window.glade.h:39 +msgid "" +"Gajim will automatically show new events by poping up the relative window" +msgstr "" +"Gajim automaticamente mostrará novos eventos em uma janela pop-up relativa" + +#: ../data/glade/preferences_window.glade.h:40 +msgid "" +"Gajim will notify you for new events via a popup in the bottom right of the " +"screen" +msgstr "" +"Gajim notificará você de uma novo evento via uma alerta visual na lateral " +"inferior direita da tela" + +#: ../data/glade/preferences_window.glade.h:41 +msgid "" +"Gajim will notify you via a popup window in the bottom right of the screen " +"about contacts that just signed in" +msgstr "" +"Gajim notificará você através de um alerta visual na parte inferior direita " +"da tela sobre os contatos que se conectaram" + +#: ../data/glade/preferences_window.glade.h:42 +msgid "" +"Gajim will notify you via a popup window in the bottom right of the screen " +"about contacts that just signed out" +msgstr "" +"Gajim notificará você através de um alerta visual na parte inferior direita " +"da tela sobre os contatos que se desconectaram" + +#: ../data/glade/preferences_window.glade.h:43 +msgid "" +"Gajim will only change the icon of the contact that triggered the new event" +msgstr "Gajim mudará somente o ícone do contato que provocou o evento novo" + +#: ../data/glade/preferences_window.glade.h:45 +msgid "" +"If checked, Gajim will display avatars of contacts in roster window and in " +"group chats" +msgstr "" +"Se marcado, Gajim mostrará avatars dos contatos na janela da lista e na " +"conferência" + +#: ../data/glade/preferences_window.glade.h:46 +msgid "" +"If checked, Gajim will display status messages of contacts under the contact " +"name in roster window and in group chats" +msgstr "" +"Se marcado, Gajim indicará mensagens de status dos contatos sob o nome do " +"contato na janela da lista e na conferência" + +#: ../data/glade/preferences_window.glade.h:47 +msgid "" +"If checked, Gajim will remember the roster and chat window positions in the " +"screen and the sizes of them next time you run it" +msgstr "" +"Se marcado, o Gajim lembrará a posição e tamanho da janela principal na " +"próxima vez que você executa-lo" + +#: ../data/glade/preferences_window.glade.h:48 +msgid "" +"If checked, Gajim will use protocol-specific status icons. (eg. A contact " +"from MSN will have the equivalent msn icon for status online, away, busy, " +"etc...)" +msgstr "" +"Se marcado, o Gajim usará ícones protocolo-específicos do status. (por " +"exemplo, um contato do MSN terá o ícone equivalente do MSN para o status " +"conectado, ausente, ocupado, etc....)" + +#: ../data/glade/preferences_window.glade.h:49 +msgid "" +"If not disabled, Gajim will replace ascii smilies like ':)' with equivalent " +"animated or static graphical emoticons" +msgstr "" +"Se habilitado, Gajim substituirá o ascii para smilies, como ':)' com a " +"animação equivalente ou estático emoticons gráfico" + +#: ../data/glade/preferences_window.glade.h:50 +msgid "Ma_nage..." +msgstr "Gere_nciar..." + +#: ../data/glade/preferences_window.glade.h:51 +msgid "" +"Never\n" +"Always\n" +"Per account\n" +"Per type" +msgstr "" +"Nunca\n" +"Sempre\n" +"Por conta\n" +"Por tipo" + +#: ../data/glade/preferences_window.glade.h:55 +msgid "Notify me about contacts that: " +msgstr "Notifique-me sobre contatos ao: " + +#: ../data/glade/preferences_window.glade.h:56 +#, fuzzy +msgid "Notify on new _GMail email" +msgstr "Notificar nova mensagem do _Gmail" + +#: ../data/glade/preferences_window.glade.h:57 +msgid "On every _message" +msgstr "Em todas as _mensagens" + +#: ../data/glade/preferences_window.glade.h:58 +msgid "One message _window:" +msgstr "Uma _janela de mensagem" + +#: ../data/glade/preferences_window.glade.h:59 +msgid "Play _sounds" +msgstr "Tocar _Sons" + +#: ../data/glade/preferences_window.glade.h:60 +msgid "Preferences" +msgstr "Preferências" + +#: ../data/glade/preferences_window.glade.h:61 +msgid "Print time:" +msgstr "Imprimir tempo:" + +#: ../data/glade/preferences_window.glade.h:62 +msgid "Save _position and size for roster and chat windows" +msgstr "Salvar _posição e tamanho das janelas de conversa e lista de contatos" + +#: ../data/glade/preferences_window.glade.h:63 +msgid "Show only in _roster" +msgstr "Mostre somente na _lista" + +#: ../data/glade/preferences_window.glade.h:64 +msgid "Sign _in" +msgstr "_Conectar" + +#: ../data/glade/preferences_window.glade.h:65 +msgid "Sign _out" +msgstr "_Desconectar" + +#: ../data/glade/preferences_window.glade.h:66 +msgid "Status" +msgstr "Status" + +#: ../data/glade/preferences_window.glade.h:67 +msgid "T_heme:" +msgstr "_Tema:" + +#: ../data/glade/preferences_window.glade.h:68 +msgid "The auto away status message" +msgstr "A mensagem de status para o ausente automático" + +#: ../data/glade/preferences_window.glade.h:69 +msgid "The auto not available status message" +msgstr "A mensagem de status para o afastado automático" + +#: ../data/glade/preferences_window.glade.h:70 +msgid "Use _transports iconsets" +msgstr "Usar conjunto de ícones de _transportes" + +#: ../data/glade/preferences_window.glade.h:71 +msgid "Use system _default" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:72 +msgid "Use t_rayicon (aka. notification area icon)" +msgstr "Usar ícone na bandeja (também conhecido por área de notificação)" + +#: ../data/glade/preferences_window.glade.h:73 +msgid "" +"When a new event (message, file transfer request etc..) is received, the " +"following methods may be used to inform you about it. Please note that " +"events about new messages only occur if it is a new message from a contact " +"you are not already chatting with" +msgstr "" +"Quando um evento novo (mensagem, pedido etc. de transferência de arquivo, " +"etc.) é recebido, os seguintes métodos podem ser usados para informá-lo " +"sobre ele. Por favor, note que os eventos sobre mensagens novas ocorrem " +"somente se for uma mensagem nova de um contato que você não está conversando" + +#: ../data/glade/preferences_window.glade.h:74 +msgid "When new event is received" +msgstr "Quando novo evento é recebido" + +#: ../data/glade/preferences_window.glade.h:75 +#, fuzzy +msgid "_Advanced Notifications Control..." +msgstr "Editor de Configurações Avançadas" + +#: ../data/glade/preferences_window.glade.h:76 +msgid "_After time:" +msgstr "_Depois da hora:" + +#: ../data/glade/preferences_window.glade.h:77 +msgid "_Before time:" +msgstr "A_ntes da hora:" + +#: ../data/glade/preferences_window.glade.h:78 +msgid "_Browser:" +msgstr "_Navegar:" + +#: ../data/glade/preferences_window.glade.h:79 +msgid "_File manager:" +msgstr "_Gerenciamento de arquivos:" + +#: ../data/glade/preferences_window.glade.h:80 +msgid "_Font:" +msgstr "_Fonte:" + +#: ../data/glade/preferences_window.glade.h:81 +msgid "_Highlight misspelled words" +msgstr "_Destacar palavras mal escritas" + +#: ../data/glade/preferences_window.glade.h:82 +msgid "_Ignore events from contacts not in the roster" +msgstr "_Ignore eventos de contatos que não estejam na minha lista" + +#: ../data/glade/preferences_window.glade.h:83 +msgid "_Incoming message:" +msgstr "Mensagem _recebida:" + +#: ../data/glade/preferences_window.glade.h:84 +msgid "_Log status changes of contacts" +msgstr "_Log mudanças de status dos contatos" + +#: ../data/glade/preferences_window.glade.h:85 +msgid "_Mail client:" +msgstr "_Cliente de email:" + +#: ../data/glade/preferences_window.glade.h:86 +msgid "_Never" +msgstr "_Nunca" + +#: ../data/glade/preferences_window.glade.h:87 +msgid "_Notify me about it" +msgstr "_Notifique-me sobre isto" + +#: ../data/glade/preferences_window.glade.h:88 +msgid "_Open..." +msgstr "_Abrir..." + +#: ../data/glade/preferences_window.glade.h:89 +msgid "_Outgoing message:" +msgstr "Mensagem _enviada:" + +#: ../data/glade/preferences_window.glade.h:90 +msgid "_Player:" +msgstr "_Tocador de som:" + +#: ../data/glade/preferences_window.glade.h:91 +msgid "_Pop it up" +msgstr "_Alerta visual" + +#: ../data/glade/preferences_window.glade.h:92 +msgid "_Reset to Default Colors" +msgstr "Voltar para as Cores _Padrões" + +#: ../data/glade/preferences_window.glade.h:93 +msgid "_Sort contacts by status" +msgstr "_Ordena contatos pelo status" + +#: ../data/glade/preferences_window.glade.h:94 +msgid "_Status message:" +msgstr "_Mensagem de status:" + +#: ../data/glade/preferences_window.glade.h:95 +msgid "_URL:" +msgstr "_URL:" + +#: ../data/glade/preferences_window.glade.h:96 +msgid "minutes" +msgstr "minutos" + +#: ../data/glade/privacy_list_edit_window.glade.h:1 +msgid "Add / Edit a rule" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:2 +#, fuzzy +msgid "List of rules" +msgstr "Formato da linha" + +#: ../data/glade/privacy_list_edit_window.glade.h:3 +msgid "Privacy List" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:5 ../src/config.py:2281 +msgid "All" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:6 +msgid "Allow" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:7 +#, fuzzy +msgid "Default" +msgstr "Deletar" + +#: ../data/glade/privacy_list_edit_window.glade.h:9 +#, fuzzy +msgid "JabberID" +msgstr "Jabber ID:" + +#: ../data/glade/privacy_list_edit_window.glade.h:10 +#, fuzzy +msgid "Order:" +msgstr "Servidor:" + +#: ../data/glade/privacy_list_edit_window.glade.h:11 ../src/dialogs.py:1626 +#, fuzzy +msgid "Privacy List" +msgstr "Lista de Banidos" + +#: ../data/glade/privacy_list_edit_window.glade.h:12 +#, fuzzy +msgid "all by subscription" +msgstr "_Inscrição" + +#: ../data/glade/privacy_list_edit_window.glade.h:13 +#, fuzzy +msgid "all in the group" +msgstr "Neste grupo" + +#: ../data/glade/privacy_list_edit_window.glade.h:14 +msgid "" +"none\n" +"both\n" +"from\n" +"to" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:18 +#, fuzzy +msgid "to send me messages" +msgstr "Enviar mensagem" + +#: ../data/glade/privacy_list_edit_window.glade.h:19 +msgid "to send me queries" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:20 +#, fuzzy +msgid "to send me status" +msgstr "Peça para ver o status dele/dela" + +#: ../data/glade/privacy_list_edit_window.glade.h:21 +#, fuzzy +msgid "to view my status" +msgstr "Permita que ele/ela ver meu status" + +#: ../data/glade/privacy_lists_first_window.glade.h:1 +msgid "Create your own Privacy Lists" +msgstr "" + +#: ../data/glade/privacy_lists_first_window.glade.h:2 +msgid "Server-based Privacy Lists" +msgstr "" + +#: ../data/glade/remove_account_window.glade.h:1 +msgid "What do you want to do?" +msgstr "O que você quer fazer?" + +#: ../data/glade/remove_account_window.glade.h:2 +msgid "Remove account _only from Gajim" +msgstr "Remover conta _somente do Gajim" + +#: ../data/glade/remove_account_window.glade.h:3 +msgid "Remove account from Gajim and from _server" +msgstr "Remover conta do Gajim e do _servidor" + +#: ../data/glade/roster_contact_context_menu.glade.h:1 +#, fuzzy +msgid "A_sk to see his/her status" +msgstr "Peça para ver o status dele/dela" + +#: ../data/glade/roster_contact_context_menu.glade.h:2 +msgid "Add Special _Notification" +msgstr "Adicionar Notificações Visuais" + +#: ../data/glade/roster_contact_context_menu.glade.h:3 +msgid "Assign Open_PGP Key" +msgstr "Atribuir chave OpenPGP" + +#: ../data/glade/roster_contact_context_menu.glade.h:4 +msgid "Edit _Groups" +msgstr "Editar _Grupos" + +#: ../data/glade/roster_contact_context_menu.glade.h:5 +#: ../data/glade/systray_context_menu.glade.h:1 +msgid "Send Single _Message" +msgstr "Enviar _Mensagem Simples" + +#: ../data/glade/roster_contact_context_menu.glade.h:7 +msgid "Start _Chat" +msgstr "Iniciar conversa" + +#: ../data/glade/roster_contact_context_menu.glade.h:9 +#, fuzzy +msgid "_Allow him/her to see my status" +msgstr "Permita que ele/ela ver meu status" + +#: ../data/glade/roster_contact_context_menu.glade.h:10 +#, fuzzy +msgid "_Forbid him/her to see my status" +msgstr "Proibir ele/ela a ver meu status" + +#: ../data/glade/roster_contact_context_menu.glade.h:12 +#: ../src/roster_window.py:1482 +msgid "_Remove from Roster" +msgstr "_Remover da Lista" + +#: ../data/glade/roster_contact_context_menu.glade.h:13 +#: ../src/roster_window.py:1470 +msgid "_Rename" +msgstr "_Renomear" + +#: ../data/glade/roster_contact_context_menu.glade.h:14 +msgid "_Subscription" +msgstr "_Inscrição" + +#: ../data/glade/roster_window.glade.h:1 +msgid "A_ccounts" +msgstr "_Contas" + +#: ../data/glade/roster_window.glade.h:2 +msgid "Add _Contact" +msgstr "Adicionar _Contato" + +#: ../data/glade/roster_window.glade.h:3 +msgid "File _Transfers" +msgstr "Transferência de _Arquivos" + +#: ../data/glade/roster_window.glade.h:4 +msgid "Frequently Asked Questions (online)" +msgstr "Perguntas freqüentes (online)" + +#: ../data/glade/roster_window.glade.h:6 +msgid "Help online" +msgstr "Ajuda online" + +#: ../data/glade/roster_window.glade.h:7 +msgid "Profile, Avatar" +msgstr "Perfil, Avatar" + +#: ../data/glade/roster_window.glade.h:8 +msgid "Show _Offline Contacts" +msgstr "Mostrar Contatos desc_onectados" + +#: ../data/glade/roster_window.glade.h:11 +msgid "_Contents" +msgstr "_Ãndices" + +#: ../data/glade/roster_window.glade.h:12 +msgid "_Discover Services" +msgstr "_Descubra Serviços" + +#: ../data/glade/roster_window.glade.h:13 ../src/disco.py:1252 +#: ../src/roster_window.py:1462 +msgid "_Edit" +msgstr "_Editar" + +#: ../data/glade/roster_window.glade.h:14 +msgid "_FAQ" +msgstr "_FAQ" + +#: ../data/glade/roster_window.glade.h:16 +msgid "_Help" +msgstr "_Ajuda" + +#: ../data/glade/roster_window.glade.h:17 +msgid "_Preferences" +msgstr "_Preferências" + +#: ../data/glade/roster_window.glade.h:18 +msgid "_Quit" +msgstr "_Sair" + +#: ../data/glade/service_discovery_window.glade.h:1 +msgid "G_o" +msgstr "_Ir" + +#: ../data/glade/service_discovery_window.glade.h:2 +msgid "_Address:" +msgstr "_Endereço:" + +#: ../data/glade/service_discovery_window.glade.h:3 +msgid "_Filter:" +msgstr "_Filtro:" + +#: ../data/glade/service_registration_window.glade.h:1 +msgid "Register to" +msgstr "Registrar para" + +#: ../data/glade/service_registration_window.glade.h:2 +msgid "_Cancel" +msgstr "_Cancelar" + +#: ../data/glade/service_registration_window.glade.h:3 +msgid "_OK" +msgstr "_OK" + +#: ../data/glade/single_message_window.glade.h:1 +msgid "0" +msgstr "0" + +#: ../data/glade/single_message_window.glade.h:2 +msgid "From:" +msgstr "De:" + +#: ../data/glade/single_message_window.glade.h:3 +msgid "Reply to this message" +msgstr "Resposta para esta mensagem" + +#: ../data/glade/single_message_window.glade.h:4 +msgid "Sen_d" +msgstr "E_nviar" + +#: ../data/glade/single_message_window.glade.h:5 +msgid "Send message" +msgstr "Enviar mensagem" + +#: ../data/glade/single_message_window.glade.h:6 +msgid "Send message and close window" +msgstr "Enviar mensagem e fechar a janela" + +#: ../data/glade/single_message_window.glade.h:7 +msgid "Subject:" +msgstr "Assunto:" + +#: ../data/glade/single_message_window.glade.h:8 +msgid "To:" +msgstr "Para:" + +#: ../data/glade/single_message_window.glade.h:9 +msgid "_Reply" +msgstr "_Responder" + +#: ../data/glade/single_message_window.glade.h:10 +msgid "_Send & Close" +msgstr "_Enviar & Fechar" + +#: ../data/glade/subscription_request_window.glade.h:1 +msgid "Authorize contact so he can know when you're connected" +msgstr "Autorize o contato para que ele saiba quando você estiver conectado" + +#: ../data/glade/subscription_request_window.glade.h:2 +msgid "Contact _Info" +msgstr "_Informações de Contato" + +#: ../data/glade/subscription_request_window.glade.h:3 +msgid "Deny authorization from contact so he cannot know when you're connected" +msgstr "" +"Negando a autorização do contato, ele não poderá saber quando você está " +"conectado" + +#: ../data/glade/subscription_request_window.glade.h:4 +msgid "Subscription Request" +msgstr "Solicitação de Inscrição" + +#: ../data/glade/subscription_request_window.glade.h:5 +msgid "_Authorize" +msgstr "_Autorizar" + +#: ../data/glade/subscription_request_window.glade.h:6 +msgid "_Deny" +msgstr "_Negar" + +#: ../data/glade/systray_context_menu.glade.h:2 +msgid "Show All Pending _Events" +msgstr "Mostrar todos _Eventos Pendentes" + +#: ../data/glade/systray_context_menu.glade.h:3 +msgid "Show _Roster" +msgstr "Mostre _Lista" + +#: ../data/glade/systray_context_menu.glade.h:4 +msgid "Sta_tus" +msgstr "Sta_tus" + +#. "About" is the text of a tab of vcard window +#: ../data/glade/vcard_information_window.glade.h:2 +msgid "About" +msgstr "Sobre" + +#: ../data/glade/vcard_information_window.glade.h:3 +msgid "Address" +msgstr "Endereço" + +#: ../data/glade/vcard_information_window.glade.h:4 +msgid "Ask:" +msgstr "Perguntar:" + +#: ../data/glade/vcard_information_window.glade.h:5 +msgid "Birthday:" +msgstr "Aniversário:" + +#: ../data/glade/vcard_information_window.glade.h:6 +msgid "City:" +msgstr "Cidade:" + +#: ../data/glade/vcard_information_window.glade.h:7 +msgid "Client:" +msgstr "Cliente:" + +#: ../data/glade/vcard_information_window.glade.h:8 +msgid "Company:" +msgstr "Empresa:" + +#: ../data/glade/vcard_information_window.glade.h:9 +msgid "Contact Information" +msgstr "Informações do Contato" + +#: ../data/glade/vcard_information_window.glade.h:10 +msgid "Country:" +msgstr "País:" + +#: ../data/glade/vcard_information_window.glade.h:11 +msgid "Department:" +msgstr "Departamento:" + +#: ../data/glade/vcard_information_window.glade.h:12 +msgid "E-Mail:" +msgstr "E-Mail:" + +#: ../data/glade/vcard_information_window.glade.h:13 +msgid "Extra Address:" +msgstr "Complemento:" + +#. Family Name +#: ../data/glade/vcard_information_window.glade.h:15 +msgid "Family:" +msgstr "Família:" + +#: ../data/glade/vcard_information_window.glade.h:16 +msgid "Format: YYYY-MM-DD" +msgstr "Formato: YYYY-MM-DD" + +#. Given Name +#: ../data/glade/vcard_information_window.glade.h:19 +msgid "Given:" +msgstr "Nome:" + +#: ../data/glade/vcard_information_window.glade.h:20 +msgid "Homepage:" +msgstr "Homepage:" + +#: ../data/glade/vcard_information_window.glade.h:21 +msgid "Jabber" +msgstr "Jabber" + +#: ../data/glade/vcard_information_window.glade.h:22 +msgid "Jabber ID:" +msgstr "Jabber ID:" + +#: ../data/glade/vcard_information_window.glade.h:23 +msgid "Location" +msgstr "Endereço" + +#. Middle Name +#: ../data/glade/vcard_information_window.glade.h:25 +msgid "Middle:" +msgstr "Nome do meio:" + +#: ../data/glade/vcard_information_window.glade.h:26 +msgid "More" +msgstr "Mais" + +#: ../data/glade/vcard_information_window.glade.h:29 +msgid "OS:" +msgstr "SO:" + +#: ../data/glade/vcard_information_window.glade.h:30 +msgid "Phone No.:" +msgstr "Telefone:" + +#: ../data/glade/vcard_information_window.glade.h:31 +msgid "Position:" +msgstr "Cargo:" + +#: ../data/glade/vcard_information_window.glade.h:32 +msgid "Postal Code:" +msgstr "Código Postal:" + +#. Prefix in Name +#: ../data/glade/vcard_information_window.glade.h:34 +msgid "Prefix:" +msgstr "Prefixo:" + +#: ../data/glade/vcard_information_window.glade.h:35 +msgid "Resource:" +msgstr "Recurso:" + +#: ../data/glade/vcard_information_window.glade.h:36 +msgid "Role:" +msgstr "Função:" + +#: ../data/glade/vcard_information_window.glade.h:37 +msgid "Set _Avatar" +msgstr "Configurar _Avatar" + +#: ../data/glade/vcard_information_window.glade.h:38 +msgid "State:" +msgstr "Estado:" + +#: ../data/glade/vcard_information_window.glade.h:39 +msgid "Status:" +msgstr "Status:" + +#: ../data/glade/vcard_information_window.glade.h:40 +msgid "Street:" +msgstr "Rua:" + +#: ../data/glade/vcard_information_window.glade.h:41 +msgid "Subscription:" +msgstr "Inscrição:" + +#. Suffix in Name +#: ../data/glade/vcard_information_window.glade.h:43 +msgid "Suffix:" +msgstr "Sobrenome:" + +#: ../data/glade/vcard_information_window.glade.h:44 +msgid "Work" +msgstr "Trabalho" + +#: ../data/glade/vcard_information_window.glade.h:45 +msgid "_Log conversation history" +msgstr "_Histórico de Conversação" + +#: ../data/glade/vcard_information_window.glade.h:46 +msgid "_Publish" +msgstr "_Publicar" + +#: ../data/glade/vcard_information_window.glade.h:47 +msgid "_Retrieve" +msgstr "_Recuperar" + +#: ../data/glade/xml_console_window.glade.h:1 +msgid "Jabber Traffic" +msgstr "Trafégo do Jabber" + +#: ../data/glade/xml_console_window.glade.h:2 +msgid "XML Input" +msgstr "Entrada XML" + +#. XML Console enable checkbutton +#: ../data/glade/xml_console_window.glade.h:4 +msgid "Enable" +msgstr "Habilitar" + +#. Info/Query make the "IQ" initials. So translate like this 'YourLang/YourLang (Info/Query)'. Thanks (it's a tooltip so width is not a problem) +#: ../data/glade/xml_console_window.glade.h:6 +msgid "Info/Query" +msgstr "Info/Consulta" + +#. Info/Query: all(?) jabber xml start with Whom do you want to ban?\n" "\n" @@ -377,11 +2427,11 @@ msgstr "" "Quem você quer banir?\n" "\n" -#: ../src/config.py:2023 +#: ../src/config.py:2062 msgid "Adding Member..." msgstr "Adicionando Membro..." -#: ../src/config.py:2024 +#: ../src/config.py:2063 msgid "" "Whom do you want to make a member?\n" "\n" @@ -389,11 +2439,11 @@ msgstr "" "Quem você quer fazer como membro?\n" "\n" -#: ../src/config.py:2026 +#: ../src/config.py:2065 msgid "Adding Owner..." msgstr "Adicionando Proprietário..." -#: ../src/config.py:2027 +#: ../src/config.py:2066 msgid "" "Whom do you want to make a owner?\n" "\n" @@ -401,11 +2451,11 @@ msgstr "" "Quem você quer tornar um dono?\n" "\n" -#: ../src/config.py:2029 +#: ../src/config.py:2068 msgid "Adding Administrator..." msgstr "Adicionando Administrador..." -#: ../src/config.py:2030 +#: ../src/config.py:2069 msgid "" "Whom do you want to make an administrator?\n" "\n" @@ -413,7 +2463,7 @@ msgstr "" "Quem você quer tornar um administrador?\n" "\n" -#: ../src/config.py:2031 +#: ../src/config.py:2070 msgid "" "Can be one of the following:\n" "1. user@domain/resource (only that resource matches).\n" @@ -429,715 +2479,755 @@ msgstr "" "4. domínio (o domínio combina por si com qualquer usuario@domínio,\n" "domínio/recurso, ou endereço contendo um subdomínio." -#: ../src/config.py:2127 +#: ../src/config.py:2166 #, python-format msgid "Removing %s account" msgstr "Removendo %s conta" -#: ../src/config.py:2144 -#: ../src/roster_window.py:1859 +#: ../src/config.py:2183 ../src/roster_window.py:1857 msgid "Password Required" msgstr "Senha é obrigatória" -#: ../src/config.py:2145 -#: ../src/roster_window.py:1860 +#: ../src/config.py:2184 ../src/roster_window.py:1858 #, python-format msgid "Enter your password for account %s" msgstr "Entre com a senha para conta %s" -#: ../src/config.py:2146 -#: ../src/roster_window.py:1861 +#: ../src/config.py:2185 ../src/roster_window.py:1859 msgid "Save password" msgstr "Salvar senha" -#: ../src/config.py:2159 +#: ../src/config.py:2198 #, python-format msgid "Account \"%s\" is connected to the server" msgstr "Conta \"%s\" está conectada ao servidor" -#: ../src/config.py:2160 +#: ../src/config.py:2199 msgid "If you remove it, the connection will be lost." msgstr "Se você remover-lo, a conexão será perdida." -#: ../src/config.py:2295 +#: ../src/config.py:2282 +msgid "Enter and leave only" +msgstr "" + +#: ../src/config.py:2352 msgid "New Room" msgstr "Nova Sala" -#: ../src/config.py:2326 +#: ../src/config.py:2383 msgid "This bookmark has invalid data" msgstr "Bookmark tem dados inválidos" -#: ../src/config.py:2327 -msgid "Please be sure to fill out server and room fields or remove this bookmark." -msgstr "Por favor, tenha certeza que preencheu os campos servidor e sala ou remova este bookmark" +#: ../src/config.py:2384 +msgid "" +"Please be sure to fill out server and room fields or remove this bookmark." +msgstr "" +"Por favor, tenha certeza que preencheu os campos servidor e sala ou remova " +"este bookmark" -#: ../src/config.py:2564 +#: ../src/config.py:2638 msgid "Invalid username" msgstr "Nome de usuário inválido" -#: ../src/config.py:2565 +#: ../src/config.py:2639 msgid "You must provide a username to configure this account." msgstr "Você deve entrar com um nome para configurar esta conta." -#: ../src/config.py:2574 -#: ../src/dialogs.py:1036 +#: ../src/config.py:2648 ../src/dialogs.py:1118 msgid "Invalid password" msgstr "Senha Inválida" -#: ../src/config.py:2575 +#: ../src/config.py:2649 msgid "You must enter a password for the new account." msgstr "Você deve entrar com uma senha para registrar uma nova conta." -#: ../src/config.py:2579 -#: ../src/dialogs.py:1041 +#: ../src/config.py:2653 ../src/dialogs.py:1123 msgid "Passwords do not match" msgstr "Senhas não conferem" -#: ../src/config.py:2580 -#: ../src/dialogs.py:1042 +#: ../src/config.py:2654 ../src/dialogs.py:1124 msgid "The passwords typed in both fields must be identical." msgstr "As senhas digitadas em ambos os campos devem ser idênticas." -#: ../src/config.py:2599 +#: ../src/config.py:2673 msgid "Duplicate Jabber ID" msgstr "Jabber ID Duplicado" -#: ../src/config.py:2600 +#: ../src/config.py:2674 msgid "This account is already configured in Gajim." msgstr "Esta conta já está configurada no Gajim." -#: ../src/config.py:2617 +#: ../src/config.py:2691 msgid "Account has been added successfully" msgstr "Conta foi adicionada com sucesso" -#: ../src/config.py:2618 -#: ../src/config.py:2651 -msgid "You can set advanced account options by pressing Advanced button, or later by clicking in Accounts menuitem under Edit menu from the main window." -msgstr "Você pode configurar as opções avançadas da conta pressionando o Botão Avançado, ou mais tarde clicando em Contas no item de menu da janela principal." +#: ../src/config.py:2692 ../src/config.py:2725 +msgid "" +"You can set advanced account options by pressing Advanced button, or later " +"by clicking in Accounts menuitem under Edit menu from the main window." +msgstr "" +"Você pode configurar as opções avançadas da conta pressionando o Botão " +"Avançado, ou mais tarde clicando em Contas no item de menu da janela " +"principal." -#: ../src/config.py:2650 +#: ../src/config.py:2724 msgid "Your new account has been created successfully" msgstr "Sua nova conta foi criada com sucesso" -#: ../src/config.py:2666 +#: ../src/config.py:2740 msgid "An error occured during account creation" msgstr "Um erro ocorreu durante a criação da conta" -#: ../src/config.py:2723 +#: ../src/config.py:2797 msgid "Account name is in use" msgstr "Nome de conta em uso" -#: ../src/config.py:2724 +#: ../src/config.py:2798 msgid "You already have an account using this name." msgstr "Você já tem uma conta usando este nome." -#: ../src/conversation_textview.py:182 -msgid "Text below this line is what has been said since the last time you paid attention to this group chat" -msgstr "O texto abaixo desta linha é o que foi dito desde a última vez onde você prestou a atenção a conferência" +#: ../src/conversation_textview.py:205 +msgid "" +"Text below this line is what has been said since the last time you paid " +"attention to this group chat" +msgstr "" +"O texto abaixo desta linha é o que foi dito desde a última vez onde você " +"prestou a atenção a conferência" -#: ../src/conversation_textview.py:239 +#: ../src/conversation_textview.py:263 #, python-format msgid "Actions for \"%s\"" msgstr "Ações para \"%s\"" -#: ../src/conversation_textview.py:251 +#: ../src/conversation_textview.py:275 msgid "Read _Wikipedia Article" msgstr "Ler Artigo da _Wikipedia" -#: ../src/conversation_textview.py:255 +#: ../src/conversation_textview.py:280 msgid "Look it up in _Dictionary" msgstr "Procurar no _Dicionário" #. we must have %s in the url if not WIKTIONARY -#: ../src/conversation_textview.py:270 +#: ../src/conversation_textview.py:296 #, python-format msgid "Dictionary URL is missing an \"%s\" and it is not WIKTIONARY" msgstr "URL do Dicionário não existe \"%s\" e isto não é WIKTIONARY" #. we must have %s in the url -#: ../src/conversation_textview.py:281 +#: ../src/conversation_textview.py:308 #, python-format msgid "Web Search URL is missing an \"%s\"" msgstr "URL de Procura na Web não existe \"%s\"" -#: ../src/conversation_textview.py:284 +#: ../src/conversation_textview.py:311 msgid "Web _Search for it" msgstr "_Procura na Web por isto" -#: ../src/conversation_textview.py:574 +#: ../src/conversation_textview.py:607 msgid "Yesterday" msgstr "Ontem" #. the number is >= 2 #. %i is day in year (1-365), %d (1-31) we want %i -#: ../src/conversation_textview.py:578 +#: ../src/conversation_textview.py:611 #, python-format msgid "%i days ago" msgstr "%i dias atrás" #. if we have subject, show it too! -#: ../src/conversation_textview.py:634 +#: ../src/conversation_textview.py:686 #, python-format msgid "Subject: %s\n" msgstr "Assunto: %s\n" #. only say that to non Windows users -#: ../src/dbus_support.py:34 +#: ../src/dbus_support.py:32 msgid "D-Bus python bindings are missing in this computer" msgstr "Acesso ao python D-Bus foi perdido neste computador" -#: ../src/dbus_support.py:35 +#: ../src/dbus_support.py:33 msgid "D-Bus capabilities of Gajim cannot be used" msgstr "As potencialidades do D-Bus no Gajim não podem ser usadas" -#: ../src/dialogs.py:64 +#: ../src/dialogs.py:55 #, python-format msgid "Contact's name: %s" msgstr "Nome do Contato %s" -#: ../src/dialogs.py:66 +#: ../src/dialogs.py:57 #, python-format msgid "JID: %s" msgstr "JID: %s" -#: ../src/dialogs.py:169 +#. Group name +#. In group boolean +#: ../src/dialogs.py:173 msgid "Group" msgstr "Grupo" -#: ../src/dialogs.py:176 +#: ../src/dialogs.py:180 msgid "In the group" msgstr "Neste grupo" -#: ../src/dialogs.py:226 +#: ../src/dialogs.py:230 msgid "KeyID" msgstr "KeyID" -#: ../src/dialogs.py:229 +#: ../src/dialogs.py:233 msgid "Contact name" msgstr "Nome do Contato" -#: ../src/dialogs.py:263 +#: ../src/dialogs.py:266 #, python-format msgid "%s Status Message" msgstr "%s Mensagem de status" -#: ../src/dialogs.py:265 +#: ../src/dialogs.py:268 msgid "Status Message" msgstr "Mensagem de status" -#: ../src/dialogs.py:340 +#: ../src/dialogs.py:343 msgid "Save as Preset Status Message" msgstr "Salvar como a mensagem de status pré-configurada" -#: ../src/dialogs.py:341 +#: ../src/dialogs.py:344 msgid "Please type a name for this status message" msgstr "Por favor, escreva um nome para esta mensagem de status" -#: ../src/dialogs.py:369 +#: ../src/dialogs.py:391 #, python-format msgid "Please fill in the data of the contact you want to add in account %s" -msgstr "Por favor, preencha os dados do contato se você quer adicionar na conta %s" +msgstr "" +"Por favor, preencha os dados do contato se você quer adicionar na conta %s" -#: ../src/dialogs.py:371 +#: ../src/dialogs.py:393 msgid "Please fill in the data of the contact you want to add" msgstr "Por favor preencha os dados do contato que você quer adicionar" -#. the user can be in mutiple groups, see in all of them -#: ../src/dialogs.py:380 -#: ../src/disco.py:118 -#: ../src/disco.py:119 -#: ../src/disco.py:1258 -#: ../src/roster_window.py:214 -#: ../src/roster_window.py:275 -#: ../src/roster_window.py:310 -#: ../src/roster_window.py:330 -#: ../src/roster_window.py:354 -#: ../src/roster_window.py:2940 -#: ../src/roster_window.py:2942 -#: ../src/systray.py:291 -#: ../src/common/helpers.py:42 +#: ../src/dialogs.py:403 ../src/disco.py:109 ../src/disco.py:110 +#: ../src/disco.py:1249 ../src/roster_window.py:207 +#: ../src/roster_window.py:273 ../src/roster_window.py:309 +#: ../src/roster_window.py:329 ../src/roster_window.py:353 +#: ../src/roster_window.py:2973 ../src/roster_window.py:2975 +#: ../src/common/helpers.py:39 msgid "Transports" msgstr "Transportes" -#: ../src/dialogs.py:452 -#: ../src/dialogs.py:458 +#: ../src/dialogs.py:493 ../src/dialogs.py:499 msgid "Invalid User ID" msgstr "Inválido ID do usuário" -#: ../src/dialogs.py:459 +#: ../src/dialogs.py:500 msgid "The user ID must not contain a resource." msgstr "O ID do usuário não contém um recurso." -#: ../src/dialogs.py:466 +#: ../src/dialogs.py:513 msgid "Contact already in roster" msgstr "Contato já foi adicionado à lista" -#: ../src/dialogs.py:467 +#: ../src/dialogs.py:514 msgid "This contact is already listed in your roster." msgstr "Este contato já encontra-se em sua lista." -#: ../src/dialogs.py:528 +#: ../src/dialogs.py:576 msgid "A GTK+ jabber client" msgstr "Um cliente jabber GTK+" -#: ../src/dialogs.py:539 +#: ../src/dialogs.py:577 +msgid "GTK+ Version:" +msgstr "" + +#: ../src/dialogs.py:578 +msgid "PyGTK Version:" +msgstr "" + +#: ../src/dialogs.py:586 +#, fuzzy +msgid "Current Developers:" +msgstr "Desenvolvedores Passados:" + +#: ../src/dialogs.py:588 msgid "Past Developers:" msgstr "Desenvolvedores Passados:" -#: ../src/dialogs.py:543 +#: ../src/dialogs.py:592 msgid "THANKS:" msgstr "AGRADECIMENTOS:" -#. remove one english setence +#. remove one english sentence #. and add it manually as translatable -#: ../src/dialogs.py:550 +#: ../src/dialogs.py:598 msgid "Last but not least, we would like to thank all the package maintainers." msgstr "Nós gostaríamos de agradecer todos os mantedores do pacote." #. here you write your name in the form Name FamilyName -#: ../src/dialogs.py:564 +#: ../src/dialogs.py:612 msgid "translator-credits" -msgstr "Alfredo Jr. - Junix e Juracy Filho " +msgstr "" +"Alfredo Jr. - Junix e Juracy Filho " -#: ../src/dialogs.py:826 +#: ../src/dialogs.py:738 +#, fuzzy, python-format +msgid "Unable to bind to port %s." +msgstr "Impossível ingressar na sala" + +#: ../src/dialogs.py:739 +msgid "" +"Maybe you have another running instance of Gajim. File Transfer will be " +"canceled." +msgstr "" + +#: ../src/dialogs.py:881 #, python-format msgid "Subscription request for account %s from %s" msgstr "Solicitação de inscrição para conta %s de %s" -#: ../src/dialogs.py:829 +#: ../src/dialogs.py:884 #, python-format msgid "Subscription request from %s" msgstr "Solicitação de inscrição de %s" -#: ../src/dialogs.py:872 +#: ../src/dialogs.py:926 msgid "You can not join a group chat unless you are connected." -msgstr "Você não pode ingressar em uma sala de conferência até que esteja conectado." +msgstr "" +"Você não pode ingressar em uma sala de conferência até que esteja conectado." -#: ../src/dialogs.py:885 +#: ../src/dialogs.py:939 #, python-format msgid "Join Group Chat with account %s" msgstr "Ingressar numa conferência com a conta %s" -#: ../src/dialogs.py:887 -#: ../src/gtkgui.glade.h:177 -msgid "Join Group Chat" -msgstr "Ingressar numa conferência" - -#: ../src/dialogs.py:976 +#: ../src/dialogs.py:1030 msgid "Invalid room or server name" msgstr "Sala inválida ou nome do servidor" -#: ../src/dialogs.py:977 +#: ../src/dialogs.py:1031 msgid "The room name or server name has not allowed characters." msgstr "O nome da sala ou nome do servidor não é permitido alguns caracteres." -#: ../src/dialogs.py:996 +#: ../src/dialogs.py:1050 #, python-format msgid "Start Chat with account %s" msgstr "Iniciar uma conferência com a conta %s" -#: ../src/dialogs.py:998 +#: ../src/dialogs.py:1052 msgid "Start Chat" msgstr "Iniciar conversa" -#: ../src/dialogs.py:999 +#: ../src/dialogs.py:1053 +#, fuzzy msgid "" -"Fill in the contact ID of the contact you would like\n" +"Fill in the jid, or nick of the contact you would like\n" "to send a chat message to:" msgstr "" "Entre com o ID do do contato que você gostaria de\n" "enviar uma mensagem:" #. if offline or connecting -#: ../src/dialogs.py:1007 -#: ../src/dialogs.py:1330 -#: ../src/dialogs.py:1450 +#: ../src/dialogs.py:1078 ../src/dialogs.py:1427 ../src/dialogs.py:1551 msgid "Connection not available" msgstr "Conexão não disponível" -#: ../src/dialogs.py:1008 -#: ../src/dialogs.py:1331 -#: ../src/dialogs.py:1451 +#: ../src/dialogs.py:1079 ../src/dialogs.py:1428 ../src/dialogs.py:1552 #, python-format msgid "Please make sure you are connected with \"%s\"." msgstr "Por favor, tenha certeza que você está conectado com \"%s\"." -#: ../src/dialogs.py:1018 +#: ../src/dialogs.py:1088 ../src/dialogs.py:1091 +#, fuzzy +msgid "Invalid JID" +msgstr "Jabber ID Inválido:" + +#: ../src/dialogs.py:1091 +#, fuzzy, python-format +msgid "Unable to parse \"%s\"." +msgstr "Impossível gravar o arquivo em %s" + +#: ../src/dialogs.py:1100 msgid "Without a connection, you can not change your password." msgstr "Você deve estar contectado para mudar sua senha" -#: ../src/dialogs.py:1037 +#: ../src/dialogs.py:1119 msgid "You must enter a password." msgstr "Você deve entrar com uma senha." #. img to display #. default value -#: ../src/dialogs.py:1083 -#: ../src/gajim.py:443 -#: ../src/notify.py:129 +#: ../src/dialogs.py:1165 ../src/notify.py:126 ../src/notify.py:268 msgid "Contact Signed In" msgstr "Contato conectou" -#: ../src/dialogs.py:1085 -#: ../src/gajim.py:474 -#: ../src/notify.py:131 +#: ../src/dialogs.py:1167 ../src/notify.py:134 ../src/notify.py:270 msgid "Contact Signed Out" msgstr "Contato desconectou" #. chat message -#: ../src/dialogs.py:1087 -#: ../src/gajim.py:609 -#: ../src/notify.py:133 +#: ../src/dialogs.py:1169 ../src/notify.py:154 ../src/notify.py:272 msgid "New Message" msgstr "Nova Mensagem" #. single message -#: ../src/dialogs.py:1087 -#: ../src/gajim.py:603 -#: ../src/notify.py:133 +#: ../src/dialogs.py:1169 ../src/notify.py:138 ../src/notify.py:272 msgid "New Single Message" msgstr "Nova Mensagem" -#: ../src/dialogs.py:1088 -#: ../src/gajim.py:586 -#: ../src/notify.py:134 +#. private message +#: ../src/dialogs.py:1170 ../src/notify.py:145 ../src/notify.py:273 msgid "New Private Message" msgstr "Enviar Mensagem Privada" -#: ../src/dialogs.py:1088 -#: ../src/gajim.py:1049 -#: ../src/notify.py:142 +#: ../src/dialogs.py:1170 ../src/gajim.py:1044 ../src/notify.py:281 msgid "New E-mail" msgstr "Novo E-Mail" -#: ../src/dialogs.py:1090 -#: ../src/gajim.py:1187 -#: ../src/notify.py:136 +#: ../src/dialogs.py:1172 ../src/gajim.py:1187 ../src/notify.py:275 msgid "File Transfer Request" msgstr "Solicitação de Transferência de Arquivos" -#: ../src/dialogs.py:1092 -#: ../src/gajim.py:1035 -#: ../src/gajim.py:1164 -#: ../src/notify.py:138 +#: ../src/dialogs.py:1174 ../src/gajim.py:1022 ../src/gajim.py:1164 +#: ../src/notify.py:277 msgid "File Transfer Error" msgstr "Erro na Transferência de Arquivos" -#: ../src/dialogs.py:1094 -#: ../src/gajim.py:1222 -#: ../src/gajim.py:1244 -#: ../src/gajim.py:1261 -#: ../src/notify.py:140 +#: ../src/dialogs.py:1176 ../src/gajim.py:1222 ../src/gajim.py:1244 +#: ../src/gajim.py:1261 ../src/notify.py:279 msgid "File Transfer Completed" msgstr "Transferência do Arquivo Completa" -#: ../src/dialogs.py:1095 -#: ../src/gajim.py:1225 -#: ../src/notify.py:140 +#: ../src/dialogs.py:1177 ../src/gajim.py:1225 ../src/notify.py:279 msgid "File Transfer Stopped" msgstr "Transferência do Arquivo Parada" -#: ../src/dialogs.py:1097 -#: ../src/gajim.py:953 -#: ../src/notify.py:144 +#: ../src/dialogs.py:1179 ../src/gajim.py:920 ../src/notify.py:283 msgid "Groupchat Invitation" msgstr "Convite para Conferência" +#: ../src/dialogs.py:1181 ../src/notify.py:118 ../src/notify.py:285 +#, fuzzy +msgid "Contact Changed Status" +msgstr "Contato desconectou" + #. FIXME: for Received with should become 'in' -#: ../src/dialogs.py:1262 +#: ../src/dialogs.py:1359 #, python-format msgid "Single Message with account %s" msgstr "Mensagem simples com conta %s" -#: ../src/dialogs.py:1264 +#: ../src/dialogs.py:1361 msgid "Single Message" msgstr "Mensagem simples" #. prepare UI for Sending -#: ../src/dialogs.py:1267 +#: ../src/dialogs.py:1364 #, python-format msgid "Send %s" msgstr "Enviar %s" #. prepare UI for Receiving -#: ../src/dialogs.py:1290 +#: ../src/dialogs.py:1387 #, python-format msgid "Received %s" msgstr "Recebido %s" #. we create a new blank window to send and we preset RE: and to jid -#: ../src/dialogs.py:1355 +#: ../src/dialogs.py:1454 #, python-format msgid "RE: %s" msgstr "RE: %s" -#: ../src/dialogs.py:1356 +#: ../src/dialogs.py:1455 #, python-format msgid "%s wrote:\n" msgstr "%s escreveu:\n" -#: ../src/dialogs.py:1400 +#: ../src/dialogs.py:1499 #, python-format msgid "XML Console for %s" msgstr "Console XML para %s" -#: ../src/dialogs.py:1402 +#: ../src/dialogs.py:1501 msgid "XML Console" msgstr "Console XML" +#: ../src/dialogs.py:1620 +#, python-format +msgid "Privacy List %s" +msgstr "" + +#: ../src/dialogs.py:1624 +#, python-format +msgid "Privacy List for %s" +msgstr "" + +#: ../src/dialogs.py:1716 +#, fuzzy +msgid "Edit a rule" +msgstr "Formato da linha" + +#: ../src/dialogs.py:1801 +#, fuzzy +msgid "Add a rule" +msgstr "Formato da linha" + +#: ../src/dialogs.py:1897 +#, python-format +msgid "Privacy Lists for %s" +msgstr "" + +#: ../src/dialogs.py:1899 +#, fuzzy +msgid "Privacy Lists" +msgstr "ConversasPrivada" + #. FIXME: use nickname instead of contact_jid -#: ../src/dialogs.py:1488 +#: ../src/dialogs.py:1988 #, python-format msgid "%(contact_jid)s has invited you to %(room_jid)s room" msgstr "%(contact_jid)s lhe convidou para sala %(room_jid)s" #. only if not None and not '' -#: ../src/dialogs.py:1494 +#: ../src/dialogs.py:1994 #, python-format msgid "Comment: %s" msgstr "Comentário: %s" -#: ../src/dialogs.py:1554 +#: ../src/dialogs.py:2054 msgid "Choose Sound" msgstr "Escolher Som" -#: ../src/dialogs.py:1564 -#: ../src/dialogs.py:1607 +#: ../src/dialogs.py:2064 ../src/dialogs.py:2107 msgid "All files" msgstr "Todos os arquivos" -#: ../src/dialogs.py:1569 +#: ../src/dialogs.py:2069 msgid "Wav Sounds" msgstr "Sons Wav" -#: ../src/dialogs.py:1597 +#: ../src/dialogs.py:2097 msgid "Choose Image" msgstr "Escolha imagem" -#: ../src/dialogs.py:1612 +#: ../src/dialogs.py:2112 msgid "Images" msgstr "Imagens" -#: ../src/dialogs.py:1658 +#: ../src/dialogs.py:2157 #, python-format msgid "When %s becomes:" msgstr "Quando %s chega:" -#: ../src/dialogs.py:1660 +#: ../src/dialogs.py:2159 #, python-format msgid "Adding Special Notification for %s" msgstr "Adicionando Notificação Especial para %s" -#: ../src/disco.py:117 +#: ../src/dialogs.py:2232 +#, fuzzy +msgid "Condition" +msgstr "Conexão" + +#: ../src/disco.py:108 msgid "Others" msgstr "Outros" #. conference is a category for listing mostly groupchats in service discovery -#: ../src/disco.py:121 +#: ../src/disco.py:112 msgid "Conference" msgstr "Conferência" -#: ../src/disco.py:420 +#: ../src/disco.py:411 msgid "Without a connection, you can not browse available services" msgstr "Você deve estar conectado para visualizar os serviços disponíveis" -#: ../src/disco.py:499 +#: ../src/disco.py:490 #, python-format msgid "Service Discovery using account %s" msgstr "Buscar Serviços usando conta %s" -#: ../src/disco.py:500 +#: ../src/disco.py:491 msgid "Service Discovery" msgstr "Buscar Serviços" -#: ../src/disco.py:637 +#: ../src/disco.py:628 msgid "The service could not be found" msgstr "O serviço não pode ser encontrado" -#: ../src/disco.py:638 -msgid "There is no service at the address you entered, or it is not responding. Check the address and try again." -msgstr "Não existe serviço para o endereço que você entrou, ou não está respondendo. Verifique o endereço e tente novamente." +#: ../src/disco.py:629 +msgid "" +"There is no service at the address you entered, or it is not responding. " +"Check the address and try again." +msgstr "" +"Não existe serviço para o endereço que você entrou, ou não está respondendo. " +"Verifique o endereço e tente novamente." -#: ../src/disco.py:642 -#: ../src/disco.py:924 +#: ../src/disco.py:633 ../src/disco.py:915 msgid "The service is not browsable" msgstr "Serviço não navegável" -#: ../src/disco.py:643 +#: ../src/disco.py:634 msgid "This type of service does not contain any items to browse." msgstr "Este tipo de serviço não contém nenhum item para navegar." -#: ../src/disco.py:723 +#: ../src/disco.py:714 #, python-format msgid "Browsing %s using account %s" msgstr "Visualizando %s usando conta %s" -#: ../src/disco.py:762 +#: ../src/disco.py:753 msgid "_Browse" msgstr "_Navegar" -#: ../src/disco.py:925 +#: ../src/disco.py:916 msgid "This service does not contain any items to browse." msgstr "Este serviço não contém nenhum item para navegar." -#: ../src/disco.py:1146 -#: ../src/disco.py:1263 +#: ../src/disco.py:1137 ../src/disco.py:1254 msgid "Re_gister" msgstr "Re_gistrar" -#: ../src/disco.py:1154 -#: ../src/disco.py:1516 -#: ../src/gtkgui.glade.h:350 -msgid "_Join" -msgstr "_Ingressar" - -#: ../src/disco.py:1261 -#: ../src/gtkgui.glade.h:334 -#: ../src/roster_window.py:1462 -msgid "_Edit" -msgstr "_Editar" - -#: ../src/disco.py:1300 +#: ../src/disco.py:1291 #, python-format msgid "Scanning %d / %d.." msgstr "Buscando %d / %d" #. Users column -#: ../src/disco.py:1482 +#: ../src/disco.py:1473 msgid "Users" msgstr "Usuários" #. Description column -#: ../src/disco.py:1489 +#: ../src/disco.py:1480 msgid "Description" msgstr "Descrição" -#: ../src/filetransfers_window.py:81 +#: ../src/filetransfers_window.py:72 msgid "File" msgstr "Arquivo" -#: ../src/filetransfers_window.py:96 +#: ../src/filetransfers_window.py:87 msgid "Time" msgstr "Tempo" -#: ../src/filetransfers_window.py:108 +#: ../src/filetransfers_window.py:99 msgid "Progress" msgstr "Progresso" -#: ../src/filetransfers_window.py:176 -#: ../src/filetransfers_window.py:238 +#: ../src/filetransfers_window.py:163 ../src/filetransfers_window.py:223 #, python-format msgid "Filename: %s" msgstr "Nome do arquivo: %s" -#: ../src/filetransfers_window.py:178 -#: ../src/filetransfers_window.py:308 +#: ../src/filetransfers_window.py:164 ../src/filetransfers_window.py:291 #, python-format msgid "Size: %s" msgstr "Tamanho: %s" #. You is a reply of who sent a file #. You is a reply of who received a file -#: ../src/filetransfers_window.py:187 -#: ../src/filetransfers_window.py:197 -#: ../src/history_manager.py:452 +#: ../src/filetransfers_window.py:173 ../src/filetransfers_window.py:183 +#: ../src/history_manager.py:454 msgid "You" msgstr "Você" -#: ../src/filetransfers_window.py:188 -#: ../src/filetransfers_window.py:240 +#: ../src/filetransfers_window.py:174 ../src/filetransfers_window.py:224 #, python-format msgid "Sender: %s" msgstr "Remetente: %s" -#: ../src/filetransfers_window.py:189 -#: ../src/filetransfers_window.py:555 -#: ../src/tooltips.py:617 +#: ../src/filetransfers_window.py:175 ../src/filetransfers_window.py:556 +#: ../src/tooltips.py:639 msgid "Recipient: " msgstr "Destinatário: " -#: ../src/filetransfers_window.py:200 +#: ../src/filetransfers_window.py:186 #, python-format msgid "Saved in: %s" msgstr "Salvo em: %s" -#: ../src/filetransfers_window.py:203 +#: ../src/filetransfers_window.py:188 msgid "File transfer completed" msgstr "Transferência de arquivos completa" -#: ../src/filetransfers_window.py:205 -#: ../src/gtkgui.glade.h:366 -msgid "_Open Containing Folder" -msgstr "_Abrir pasta do arquivo" - -#: ../src/filetransfers_window.py:219 -#: ../src/filetransfers_window.py:227 +#: ../src/filetransfers_window.py:204 ../src/filetransfers_window.py:212 msgid "File transfer canceled" msgstr "Transferência de arquivos cancelada" -#: ../src/filetransfers_window.py:219 -#: ../src/filetransfers_window.py:228 +#: ../src/filetransfers_window.py:204 ../src/filetransfers_window.py:213 msgid "Connection with peer cannot be established." msgstr "Conexão ponto a ponto não pode ser estabelecida." -#: ../src/filetransfers_window.py:242 +#: ../src/filetransfers_window.py:225 msgid "File transfer stopped by the contact of the other side" msgstr "Transferência de arquivo parada pelo contato do outro lado" -#: ../src/filetransfers_window.py:259 +#: ../src/filetransfers_window.py:242 msgid "Choose File to Send..." msgstr "Escolha o Arquivo para Enviar..." -#. Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector) -#: ../src/filetransfers_window.py:266 -#: ../src/gtkgui.glade.h:390 -msgid "_Send" -msgstr "_Enviar" - -#: ../src/filetransfers_window.py:273 +#: ../src/filetransfers_window.py:256 msgid "Gajim cannot access this file" msgstr "Gajim não pode acessar este arquivo" -#: ../src/filetransfers_window.py:274 +#: ../src/filetransfers_window.py:257 msgid "This file is being used by another process." msgstr "Este arquivo está sendo usado por outro processo." -#: ../src/filetransfers_window.py:306 +#: ../src/filetransfers_window.py:289 #, python-format msgid "File: %s" msgstr "Arquivo: %s" -#: ../src/filetransfers_window.py:311 +#: ../src/filetransfers_window.py:294 #, python-format msgid "Type: %s" msgstr "Tipo: %s" -#: ../src/filetransfers_window.py:313 +#: ../src/filetransfers_window.py:296 #, python-format msgid "Description: %s" msgstr "Descrição: %s" -#: ../src/filetransfers_window.py:314 +#: ../src/filetransfers_window.py:297 #, python-format msgid "%s wants to send you a file:" msgstr "%s quer te enviar um arquivo:" -#: ../src/filetransfers_window.py:329 +#: ../src/filetransfers_window.py:311 +#, python-format +msgid "Cannot overwrite existing file \"%s\"" +msgstr "" + +#: ../src/filetransfers_window.py:312 +msgid "" +"A file with this name already exists and you do not have permission to " +"overwrite it." +msgstr "" + +#: ../src/filetransfers_window.py:319 ../src/gtkgui_helpers.py:685 msgid "This file already exists" msgstr "Este arquivo já existe" -#: ../src/filetransfers_window.py:329 +#: ../src/filetransfers_window.py:319 ../src/gtkgui_helpers.py:685 msgid "What do you want to do?" msgstr "O que você quer fazer?" -#: ../src/filetransfers_window.py:344 +#: ../src/filetransfers_window.py:331 +#, python-format +msgid "Directory \"%s\" is not writable" +msgstr "" + +#: ../src/filetransfers_window.py:331 +msgid "You do not have permission to create files in this directory." +msgstr "" + +#: ../src/filetransfers_window.py:341 msgid "Save File as..." msgstr "Salvar Arquivo como..." #. Print remaining time in format 00:00:00 #. You can change the places of (hours), (minutes), (seconds) - #. they are not translatable. -#: ../src/filetransfers_window.py:419 +#: ../src/filetransfers_window.py:420 #, python-format msgid "%(hours)02.d:%(minutes)02.d:%(seconds)02.d" msgstr "%(hours)02.d:%(minutes)02.d:%(seconds)02.d" @@ -1145,32 +3235,29 @@ msgstr "%(hours)02.d:%(minutes)02.d:%(seconds)02.d" #. This should make the string Kb/s, #. where 'Kb' part is taken from %s. #. Only the 's' after / (which means second) should be translated. -#: ../src/filetransfers_window.py:491 +#: ../src/filetransfers_window.py:492 #, python-format msgid "(%(filesize_unit)s/s)" msgstr "(%(filesize_unit)s/s)" -#: ../src/filetransfers_window.py:527 -#: ../src/filetransfers_window.py:530 +#: ../src/filetransfers_window.py:528 ../src/filetransfers_window.py:531 msgid "Invalid File" msgstr "Arquivo inválido" -#: ../src/filetransfers_window.py:527 +#: ../src/filetransfers_window.py:528 msgid "File: " msgstr "Arquivo:" -#: ../src/filetransfers_window.py:531 +#: ../src/filetransfers_window.py:532 msgid "It is not possible to send empty files" msgstr "não é possível enviar arquivos vazios" -#: ../src/filetransfers_window.py:551 -#: ../src/tooltips.py:498 -#: ../src/tooltips.py:607 +#: ../src/filetransfers_window.py:552 ../src/tooltips.py:511 +#: ../src/tooltips.py:629 msgid "Name: " msgstr "Nome: " -#: ../src/filetransfers_window.py:553 -#: ../src/tooltips.py:611 +#: ../src/filetransfers_window.py:554 ../src/tooltips.py:633 msgid "Sender: " msgstr "Remetente: " @@ -1178,213 +3265,262 @@ msgstr "Remetente: " msgid "Pause" msgstr "Pausa" -#: ../src/filetransfers_window.py:753 -#: ../src/gtkgui.glade.h:328 -msgid "_Continue" -msgstr "_Continuar" - -#: ../src/gajim-remote.py:84 +#: ../src/gajim-remote.py:82 msgid "shows a help on specific command" msgstr "mostrar ajuda para um comando específico" #. User gets help for the command, specified by this parameter -#: ../src/gajim-remote.py:87 +#: ../src/gajim-remote.py:85 msgid "command" msgstr "comando" -#: ../src/gajim-remote.py:88 +#: ../src/gajim-remote.py:86 msgid "show help on command" msgstr "mostrar ajuda no comando" -#: ../src/gajim-remote.py:92 +#: ../src/gajim-remote.py:90 msgid "Shows or hides the roster window" msgstr "Mostrar ou esconder a janela principal" -#: ../src/gajim-remote.py:96 +#: ../src/gajim-remote.py:94 msgid "Popups a window with the next unread message" msgstr "Mostrar uma janela com a próxima mensagem não lida" -#: ../src/gajim-remote.py:100 -msgid "Prints a list of all contacts in the roster. Each contact appear on a separate line" -msgstr "Imprimir uma lista de todos os contatos na lista. Cada contato aparecerá em uma linha separada" +#: ../src/gajim-remote.py:98 +msgid "" +"Prints a list of all contacts in the roster. Each contact appear on a " +"separate line" +msgstr "" +"Imprimir uma lista de todos os contatos na lista. Cada contato aparecerá em " +"uma linha separada" -#: ../src/gajim-remote.py:102 -#: ../src/gajim-remote.py:115 -#: ../src/gajim-remote.py:125 -#: ../src/gajim-remote.py:138 -#: ../src/gajim-remote.py:159 -#: ../src/gajim-remote.py:189 -#: ../src/gajim-remote.py:197 -#: ../src/gajim-remote.py:204 -#: ../src/gajim-remote.py:211 +#: ../src/gajim-remote.py:100 ../src/gajim-remote.py:114 +#: ../src/gajim-remote.py:124 ../src/gajim-remote.py:137 +#: ../src/gajim-remote.py:151 ../src/gajim-remote.py:172 +#: ../src/gajim-remote.py:202 ../src/gajim-remote.py:211 +#: ../src/gajim-remote.py:218 ../src/gajim-remote.py:225 +#: ../src/gajim-remote.py:236 msgid "account" msgstr "conta" -#: ../src/gajim-remote.py:102 +#: ../src/gajim-remote.py:100 msgid "show only contacts of the given account" msgstr "mostrar somente os contatos desta conta" -#: ../src/gajim-remote.py:107 +#: ../src/gajim-remote.py:105 msgid "Prints a list of registered accounts" msgstr "Imprimir uma lista das contas registradas" -#: ../src/gajim-remote.py:111 +#: ../src/gajim-remote.py:109 msgid "Changes the status of account or accounts" msgstr "Mudar o status da conta ou contas" -#: ../src/gajim-remote.py:113 +#. offline, online, chat, away, xa, dnd, invisible should not be translated +#: ../src/gajim-remote.py:112 msgid "status" msgstr "status" -#: ../src/gajim-remote.py:113 +#: ../src/gajim-remote.py:112 msgid "one of: offline, online, chat, away, xa, dnd, invisible " -msgstr "um desses: desconectado, conectado, bate-papo, inativo, fora, np, invisível" +msgstr "" +"um desses: desconectado, conectado, bate-papo, inativo, fora, np, invisível" -#: ../src/gajim-remote.py:114 -#: ../src/gajim-remote.py:135 +#: ../src/gajim-remote.py:113 ../src/gajim-remote.py:134 +#: ../src/gajim-remote.py:148 msgid "message" msgstr "mensagem" -#: ../src/gajim-remote.py:114 +#: ../src/gajim-remote.py:113 msgid "status message" msgstr "mensagem de status" -#: ../src/gajim-remote.py:115 -msgid "change status of account \"account\". If not specified, try to change status of all accounts that have \"sync with global status\" option set" -msgstr "mudar status da conta \"account\". Se não especificado, tentará mudar o status de todas as contas existentes com a opção \"sincronizar com status global\" marcada" +#: ../src/gajim-remote.py:114 +msgid "" +"change status of account \"account\". If not specified, try to change status " +"of all accounts that have \"sync with global status\" option set" +msgstr "" +"mudar status da conta \"account\". Se não especificado, tentará mudar o " +"status de todas as contas existentes com a opção \"sincronizar com status " +"global\" marcada" -#: ../src/gajim-remote.py:121 +#: ../src/gajim-remote.py:120 msgid "Shows the chat dialog so that you can send messages to a contact" -msgstr "Mostrar o diálogo do bate-papo onde você pode enviar mensagens para um contato" +msgstr "" +"Mostrar o diálogo do bate-papo onde você pode enviar mensagens para um " +"contato" -#: ../src/gajim-remote.py:123 +#: ../src/gajim-remote.py:122 msgid "JID of the contact that you want to chat with" msgstr "JID do contato que você quer conversar" -#: ../src/gajim-remote.py:125 -#: ../src/gajim-remote.py:189 +#: ../src/gajim-remote.py:124 ../src/gajim-remote.py:202 msgid "if specified, contact is taken from the contact list of this account" msgstr "se especificado, o contato é feito da lista de contatos desta conta" -#: ../src/gajim-remote.py:130 -msgid "Sends new message to a contact in the roster. Both OpenPGP key and account are optional. If you want to set only 'account', without 'OpenPGP key', just set 'OpenPGP key' to ''." -msgstr "Envia nova mensagem para um contato na lista. Tanto a chave OpenPGP e a conta são opcionais. Se vc quer configurar somente a 'conta', sem a 'chave pgp', apenas configure a 'chave pgp' para ''." +#: ../src/gajim-remote.py:129 +#, fuzzy +msgid "" +"Sends new chat message to a contact in the roster. Both OpenPGP key and " +"account are optional. If you want to set only 'account', without 'OpenPGP " +"key', just set 'OpenPGP key' to ''." +msgstr "" +"Envia nova mensagem para um contato na lista. Tanto a chave OpenPGP e a " +"conta são opcionais. Se vc quer configurar somente a 'conta', sem a 'chave " +"pgp', apenas configure a 'chave pgp' para ''." -#: ../src/gajim-remote.py:134 +#: ../src/gajim-remote.py:133 ../src/gajim-remote.py:146 msgid "JID of the contact that will receive the message" msgstr "JID do contato que irá receber a mensagem" -#: ../src/gajim-remote.py:135 +#: ../src/gajim-remote.py:134 ../src/gajim-remote.py:148 msgid "message contents" msgstr "conteúdos da mensagem" -#: ../src/gajim-remote.py:136 +#: ../src/gajim-remote.py:135 ../src/gajim-remote.py:149 msgid "pgp key" msgstr "chave pgp" -#: ../src/gajim-remote.py:136 +#: ../src/gajim-remote.py:135 ../src/gajim-remote.py:149 msgid "if specified, the message will be encrypted using this public key" -msgstr "se especificada, a mensagem será criptografada usando esta chave pública" +msgstr "" +"se especificada, a mensagem será criptografada usando esta chave pública" -#: ../src/gajim-remote.py:138 +#: ../src/gajim-remote.py:137 ../src/gajim-remote.py:151 msgid "if specified, the message will be sent using this account" msgstr "se especificada, a mensagem será enviada usando esta conta" -#: ../src/gajim-remote.py:143 +#: ../src/gajim-remote.py:142 +#, fuzzy +msgid "" +"Sends new single message to a contact in the roster. Both OpenPGP key and " +"account are optional. If you want to set only 'account', without 'OpenPGP " +"key', just set 'OpenPGP key' to ''." +msgstr "" +"Envia nova mensagem para um contato na lista. Tanto a chave OpenPGP e a " +"conta são opcionais. Se vc quer configurar somente a 'conta', sem a 'chave " +"pgp', apenas configure a 'chave pgp' para ''." + +#: ../src/gajim-remote.py:147 +#, fuzzy +msgid "subject" +msgstr "Assunto" + +#: ../src/gajim-remote.py:147 +#, fuzzy +msgid "message subject" +msgstr "Mensagem Enviada" + +#: ../src/gajim-remote.py:156 msgid "Gets detailed info on a contact" msgstr "Informações detalhadas do contato" -#: ../src/gajim-remote.py:145 -#: ../src/gajim-remote.py:158 -#: ../src/gajim-remote.py:188 +#: ../src/gajim-remote.py:158 ../src/gajim-remote.py:171 +#: ../src/gajim-remote.py:201 ../src/gajim-remote.py:210 msgid "JID of the contact" msgstr "JID do contato" -#: ../src/gajim-remote.py:149 +#: ../src/gajim-remote.py:162 msgid "Gets detailed info on a account" msgstr "Informações detalhadas do contato" -#: ../src/gajim-remote.py:151 +#: ../src/gajim-remote.py:164 msgid "Name of the account" msgstr "Nome da conta" -#: ../src/gajim-remote.py:155 +#: ../src/gajim-remote.py:168 msgid "Sends file to a contact" msgstr "Enviar arquivo para um contato" -#: ../src/gajim-remote.py:157 +#: ../src/gajim-remote.py:170 msgid "file" msgstr "arquivo" -#: ../src/gajim-remote.py:157 +#: ../src/gajim-remote.py:170 msgid "File path" msgstr "Caminho do arquivo" -#: ../src/gajim-remote.py:159 +#: ../src/gajim-remote.py:172 msgid "if specified, file will be sent using this account" msgstr "se especificada, arquivo irá ser enviado usando esta conta" -#: ../src/gajim-remote.py:164 +#: ../src/gajim-remote.py:177 msgid "Lists all preferences and their values" msgstr "Lista todas as preferências e seus valores" -#: ../src/gajim-remote.py:168 +#: ../src/gajim-remote.py:181 msgid "Sets value of 'key' to 'value'." msgstr "Ajusta o valor da 'chave' ao 'valor '." -#: ../src/gajim-remote.py:170 +#: ../src/gajim-remote.py:183 msgid "key=value" msgstr "chave=valor" -#: ../src/gajim-remote.py:170 +#: ../src/gajim-remote.py:183 msgid "'key' is the name of the preference, 'value' is the value to set it to" msgstr "'chave' é o nome de preferência, 'valor' é o valor para ajustá-la" -#: ../src/gajim-remote.py:175 +#: ../src/gajim-remote.py:188 msgid "Deletes a preference item" msgstr "Deleta um item de preferência" -#: ../src/gajim-remote.py:177 +#: ../src/gajim-remote.py:190 msgid "key" msgstr "chave" -#: ../src/gajim-remote.py:177 +#: ../src/gajim-remote.py:190 msgid "name of the preference to be deleted" msgstr "nome da preferência a ser deletado" -#: ../src/gajim-remote.py:181 +#: ../src/gajim-remote.py:194 msgid "Writes the current state of Gajim preferences to the .config file" msgstr "Escreve o estado atual das preferências do Gajim em um arquivo .config" -#: ../src/gajim-remote.py:186 +#: ../src/gajim-remote.py:199 msgid "Removes contact from roster" msgstr "Remover contato da lista" -#: ../src/gajim-remote.py:195 +#: ../src/gajim-remote.py:208 msgid "Adds contact to roster" msgstr "Adicionar contato para a lista" -#: ../src/gajim-remote.py:197 -msgid "Adds new contact to this account." +#: ../src/gajim-remote.py:210 +msgid "jid" +msgstr "" + +#: ../src/gajim-remote.py:211 +#, fuzzy +msgid "Adds new contact to this account" msgstr "Adicionar novo contato para esta conta" -#: ../src/gajim-remote.py:202 +#: ../src/gajim-remote.py:216 msgid "Returns current status (the global one unless account is specified)" msgstr "Retorna o status atual (global a menos que o cliente for especificado)" -#: ../src/gajim-remote.py:209 -msgid "Returns current status message(the global one unless account is specified)" -msgstr "Retorna a mensagem de status atual (global a menos que a conta for especificada)" +#: ../src/gajim-remote.py:223 +msgid "" +"Returns current status message(the global one unless account is specified)" +msgstr "" +"Retorna a mensagem de status atual (global a menos que a conta for " +"especificada)" -#: ../src/gajim-remote.py:216 +#: ../src/gajim-remote.py:230 msgid "Returns number of unreaded messages" msgstr "Retorna o número das mensagens não lidas" +#: ../src/gajim-remote.py:234 +msgid "Open 'Start Chat' dialog" +msgstr "" + #: ../src/gajim-remote.py:236 +#, fuzzy +msgid "Starts chat, using this account" +msgstr "Iniciar uma conferência com a conta %s" + +#: ../src/gajim-remote.py:256 msgid "Missing argument \"contact_jid\"" msgstr "Argumento não informado \"contact_jid\"" -#: ../src/gajim-remote.py:255 +#: ../src/gajim-remote.py:275 #, python-format msgid "" "'%s' is not in your roster.\n" @@ -1393,16 +3529,16 @@ msgstr "" "'%s' não está em sua lista.\n" "Por favor, especifique a conta para enviar a mensagem." -#: ../src/gajim-remote.py:258 +#: ../src/gajim-remote.py:278 msgid "You have no active account" msgstr "Você não tem uma conta ativa" -#: ../src/gajim-remote.py:301 +#: ../src/gajim-remote.py:321 #, python-format msgid "Unknown D-Bus version: %s" msgstr "Versão dbus desconhecida: %s" -#: ../src/gajim-remote.py:328 +#: ../src/gajim-remote.py:348 #, python-format msgid "" "Usage: %s %s %s \n" @@ -1411,16 +3547,16 @@ msgstr "" "Uso: %s %s %s \n" "\t %s" -#: ../src/gajim-remote.py:331 +#: ../src/gajim-remote.py:351 msgid "Arguments:" msgstr "Argumentos:" -#: ../src/gajim-remote.py:335 +#: ../src/gajim-remote.py:355 #, python-format msgid "%s not found" msgstr "%s não encontrado" -#: ../src/gajim-remote.py:339 +#: ../src/gajim-remote.py:359 #, python-format msgid "" "Usage: %s command [arguments]\n" @@ -1429,7 +3565,7 @@ msgstr "" "Uso: %s comando [argumentos]\n" "Comando é um desses:\n" -#: ../src/gajim-remote.py:413 +#: ../src/gajim-remote.py:433 #, python-format msgid "" "Argument \"%s\" is not specified. \n" @@ -1464,116 +3600,110 @@ msgstr "Não existe suporte para libglade no GTK+ runtime" #: ../src/gajim.py:63 #, python-format -msgid "Please remove your current GTK+ runtime and install the latest stable version from %s" -msgstr "Por favor remova seu GTK+ runtime atual e instale a última versão estável de %s" +msgid "" +"Please remove your current GTK+ runtime and install the latest stable " +"version from %s" +msgstr "" +"Por favor remova seu GTK+ runtime atual e instale a última versão estável de " +"%s" #: ../src/gajim.py:65 -msgid "Please make sure that GTK+ and PyGTK have libglade support in your system." -msgstr "Por favor certifique-se de que o GTK e o PyGTK tem suporte ao libglade em seu sistema." +msgid "" +"Please make sure that GTK+ and PyGTK have libglade support in your system." +msgstr "" +"Por favor certifique-se de que o GTK e o PyGTK tem suporte ao libglade em " +"seu sistema." #: ../src/gajim.py:70 msgid "Gajim needs PySQLite2 to run" msgstr "Gajim necessita de PySQLite2 para rodar" -#: ../src/gajim.py:235 +#. set the icon to all newly opened wind +#: ../src/gajim.py:151 +msgid "Gajim is already running" +msgstr "" + +#: ../src/gajim.py:152 +msgid "" +"Another instance of Gajim seems to be running\n" +"Run anyway?" +msgstr "" + +#: ../src/gajim.py:267 #, python-format msgid "HTTP (%s) Authorization for %s (id: %s)" msgstr "Autorização HTTP (%s) para %s (id: %s)" -#: ../src/gajim.py:236 +#: ../src/gajim.py:268 msgid "Do you accept this request?" msgstr "Você aceita a solicitação?" -#: ../src/gajim.py:438 -#, python-format -msgid "%(nickname)s Signed In" -msgstr "%(nickname)s Conectou" - -#: ../src/gajim.py:469 -#, python-format -msgid "%(nickname)s Signed Out" -msgstr "%(nickname)s Desconectou" - -#: ../src/gajim.py:583 -#, python-format -msgid "New Private Message from room %s" -msgstr "Nova Mensagem Privada da sala %s" - -#: ../src/gajim.py:584 -#, python-format -msgid "%(nickname)s: %(message)s" -msgstr "%(nickname)s: %(message)s" - -#: ../src/gajim.py:606 -#, python-format -msgid "New Single Message from %(nickname)s" -msgstr "Nova Mensagem Simples de %(nickname)s" - -#: ../src/gajim.py:612 -#, python-format -msgid "New Message from %(nickname)s" -msgstr "Nova Mensagem de %(nickname)s" - -#: ../src/gajim.py:660 +#: ../src/gajim.py:611 #, python-format msgid "error while sending %s ( %s )" msgstr "erro no envio %s ( %s )" -#: ../src/gajim.py:700 +#: ../src/gajim.py:651 msgid "Authorization accepted" msgstr "Autorização aceita" -#: ../src/gajim.py:701 +#: ../src/gajim.py:652 #, python-format msgid "The contact \"%s\" has authorized you to see his or her status." msgstr "O contato \"%s\" autorizou você para ver seu status." -#: ../src/gajim.py:709 +#: ../src/gajim.py:660 #, python-format msgid "Contact \"%s\" removed subscription from you" msgstr "Contato \"%s\" removeu sua inscrição" -#: ../src/gajim.py:710 +#: ../src/gajim.py:661 msgid "You will always see him or her as offline." msgstr "Você sempre o verá como offline." -#: ../src/gajim.py:736 +#: ../src/gajim.py:704 #, python-format msgid "Contact with \"%s\" cannot be established" msgstr "Contato com \"%s\" não pode ser estabelecido" -#: ../src/gajim.py:737 -#: ../src/common/connection.py:349 +#: ../src/gajim.py:705 ../src/common/connection.py:398 msgid "Check your connection or try again later." msgstr "Verifique sua conexão ou tente novamente mais tarde." -#: ../src/gajim.py:874 -#: ../src/roster_window.py:1012 +#: ../src/gajim.py:849 ../src/roster_window.py:1025 #, python-format msgid "%s is now %s (%s)" msgstr "%s agora está %s (%s)" -#: ../src/gajim.py:963 +#: ../src/gajim.py:930 msgid "Your passphrase is incorrect" msgstr "Sua frase de acesso está incorreta" -#: ../src/gajim.py:964 +#: ../src/gajim.py:931 msgid "You are currently connected without your OpenPGP key." msgstr "Você está atualmente conectado sem sua chave OpenPGP." #. FIXME: find a better image -#: ../src/gajim.py:1045 +#: ../src/gajim.py:1033 #, python-format msgid "New E-mail on %(gmail_mail_address)s" msgstr "Novo E-mail em %(gmail_mail_address)s" -#: ../src/gajim.py:1047 +#: ../src/gajim.py:1035 #, python-format msgid "You have %d new E-mail message" msgid_plural "You have %d new E-mail messages" msgstr[0] "Você tem %d nova mensagem de E-mail" msgstr[1] "Você tem %d novas mensagens de E-mail" +#. each message has a 'From', 'Subject' and 'Snippet' field +#: ../src/gajim.py:1040 +#, python-format +msgid "" +"\n" +"From: %(from_address)s" +msgstr "" + #: ../src/gajim.py:1185 #, python-format msgid "%s wants to send you a file." @@ -1614,2090 +3744,621 @@ msgid "vCard publication failed" msgstr "Publicação do vCard falhou" #: ../src/gajim.py:1304 -msgid "There was an error while publishing your personal information, try again later." -msgstr "Houve um erro ao publicar sua informação pessoal, tente outra vez mais tarde." +msgid "" +"There was an error while publishing your personal information, try again " +"later." +msgstr "" +"Houve um erro ao publicar sua informação pessoal, tente outra vez mais tarde." #. it is good to notify the user #. in case he or she cannot see the output of the console -#: ../src/gajim.py:1634 +#: ../src/gajim.py:1683 msgid "Could not save your settings and preferences" msgstr "Impossível salvar suas preferências" -#: ../src/gajim.py:1848 +#: ../src/gajim.py:1903 msgid "Session Management support not available (missing gnome.ui module)" -msgstr "Suporte de gerenciamento da sessão não disponível (faltando o módulo gnome.ui)" +msgstr "" +"Suporte de gerenciamento da sessão não disponível (faltando o módulo gnome." +"ui)" -#: ../src/gajim.py:1878 +#: ../src/gajim.py:1932 msgid "Migrating Logs..." msgstr "Migrando Logs..." -#: ../src/gajim.py:1879 +#: ../src/gajim.py:1933 msgid "Please wait while logs are being migrated..." msgstr "Espere por favor, enquanto os registros estão sendo migrados..." -#: ../src/gajim_themes_window.py:67 +#: ../src/gajim_themes_window.py:59 msgid "Theme" msgstr "Tema" #. don't confuse translators -#: ../src/gajim_themes_window.py:149 +#: ../src/gajim_themes_window.py:141 msgid "theme name" msgstr "nome do tema" -#: ../src/gajim_themes_window.py:166 +#: ../src/gajim_themes_window.py:158 msgid "You cannot delete your current theme" msgstr "Você não pode apagar o seu tema corrente" -#: ../src/gajim_themes_window.py:167 +#: ../src/gajim_themes_window.py:159 msgid "Please first choose another for your current theme." msgstr "Por favor escolha outro para seu tema corrente." -#: ../src/groupchat_control.py:68 +#: ../src/groupchat_control.py:99 msgid "Private Chat" msgstr "Conversa Privada" -#: ../src/groupchat_control.py:68 +#: ../src/groupchat_control.py:99 msgid "Private Chats" msgstr "ConversasPrivada" -#: ../src/groupchat_control.py:84 +#: ../src/groupchat_control.py:115 msgid "Sending private message failed" msgstr "Falha ao Enviar uma mensagem privada" #. in second %s code replaces with nickname -#: ../src/groupchat_control.py:86 +#: ../src/groupchat_control.py:117 #, python-format msgid "You are no longer in room \"%s\" or \"%s\" has left." msgstr "Você não esta mais na sala \"%s\" ou \"%s\" saiu." -#: ../src/groupchat_control.py:98 +#: ../src/groupchat_control.py:129 msgid "Group Chat" msgstr "Conferência" -#: ../src/groupchat_control.py:98 +#: ../src/groupchat_control.py:129 msgid "Group Chats" msgstr "Conferências" -#: ../src/groupchat_control.py:595 +#: ../src/groupchat_control.py:308 +#, fuzzy +msgid "Insert Nickname" +msgstr "Mudar _Apelido" + +#: ../src/groupchat_control.py:702 msgid "This room has no subject" msgstr "Esta sala não tem assunto" #. do not print 'kicked by None' -#: ../src/groupchat_control.py:693 +#: ../src/groupchat_control.py:801 #, python-format msgid "%(nick)s has been kicked: %(reason)s" msgstr "%(nick)s foi chutado: %(reason)s" -#: ../src/groupchat_control.py:697 +#: ../src/groupchat_control.py:805 #, python-format msgid "%(nick)s has been kicked by %(who)s: %(reason)s" msgstr "%(nick)s foi chutado por %(who)s: %(reason)s" #. do not print 'banned by None' -#: ../src/groupchat_control.py:704 +#: ../src/groupchat_control.py:812 #, python-format msgid "%(nick)s has been banned: %(reason)s" msgstr "%(nick)s foi banido: %(reason)s" -#: ../src/groupchat_control.py:708 +#: ../src/groupchat_control.py:816 #, python-format msgid "%(nick)s has been banned by %(who)s: %(reason)s" msgstr "%(nick)s foi banido por %(who)s: %(reason)s" -#: ../src/groupchat_control.py:716 +#: ../src/groupchat_control.py:824 #, python-format msgid "You are now known as %s" msgstr "Você agora é conhecido como %s" -#: ../src/groupchat_control.py:718 +#: ../src/groupchat_control.py:826 #, python-format msgid "%s is now known as %s" msgstr "%s agora é conhecido como %s" -#: ../src/groupchat_control.py:757 +#: ../src/groupchat_control.py:897 #, python-format msgid "%s has left" msgstr "%s saiu da sala" +#: ../src/groupchat_control.py:902 +#, python-format +msgid "%s has joined the room" +msgstr "" + #. No status message -#: ../src/groupchat_control.py:759 -#: ../src/roster_window.py:1015 +#: ../src/groupchat_control.py:904 ../src/roster_window.py:1028 #, python-format msgid "%s is now %s" msgstr "%s agora está %s" -#: ../src/groupchat_control.py:871 -#: ../src/groupchat_control.py:888 -#: ../src/groupchat_control.py:981 -#: ../src/groupchat_control.py:997 +#: ../src/groupchat_control.py:1022 ../src/groupchat_control.py:1039 +#: ../src/groupchat_control.py:1132 ../src/groupchat_control.py:1148 #, python-format msgid "Nickname not found: %s" msgstr "Apelido não encontrado: %s" -#: ../src/groupchat_control.py:915 +#: ../src/groupchat_control.py:1066 #, python-format msgid "Invited %(contact_jid)s to %(room_jid)s." msgstr "Convidado %(contact_jid)s para %(room_jid)s." #. %s is something the user wrote but it is not a jid so we inform -#: ../src/groupchat_control.py:922 -#: ../src/groupchat_control.py:952 +#: ../src/groupchat_control.py:1073 ../src/groupchat_control.py:1103 #, python-format msgid "%s does not appear to be a valid JID" msgstr "%s não parece ser um JID válido" -#: ../src/groupchat_control.py:1019 +#: ../src/groupchat_control.py:1185 #, python-format msgid "No such command: /%s (if you want to send this, prefix it with /say)" -msgstr "Comando não encontrado: /%s (se você quer enviar isto, use este prefixo /say)" +msgstr "" +"Comando não encontrado: /%s (se você quer enviar isto, use este prefixo /say)" -#: ../src/groupchat_control.py:1041 +#: ../src/groupchat_control.py:1207 #, python-format msgid "Commands: %s" msgstr "Comandos: %s" -#: ../src/groupchat_control.py:1043 +#: ../src/groupchat_control.py:1209 #, python-format -msgid "Usage: /%s [reason], bans the JID from the room. The nickname of an occupant may be substituted, but not if it contains \"@\". If the JID is currently in the room, he/she/it will also be kicked. Does NOT support spaces in nickname." -msgstr "Uso: /%s [ razão ], JID banido da sala. O apelido de um ocupante pode ser substituído, mas se não conter \"@\". Se o JID estiver atualmente na sala, ele/ela será chutado também. Não suporta espaços no apelido." +msgid "" +"Usage: /%s [reason], bans the JID from the room. The nickname " +"of an occupant may be substituted, but not if it contains \"@\". If the JID " +"is currently in the room, he/she/it will also be kicked. Does NOT support " +"spaces in nickname." +msgstr "" +"Uso: /%s [ razão ], JID banido da sala. O apelido de um " +"ocupante pode ser substituído, mas se não conter \"@\". Se o JID estiver " +"atualmente na sala, ele/ela será chutado também. Não suporta espaços no " +"apelido." -#: ../src/groupchat_control.py:1049 +#: ../src/groupchat_control.py:1215 #, python-format -msgid "Usage: /%s , opens a private chat window to the specified occupant." -msgstr "Uso: /%s , abre uma janela de conferência privada para um ocupante específico." +msgid "" +"Usage: /%s , opens a private chat window to the specified occupant." +msgstr "" +"Uso: /%s , abre uma janela de conferência privada para um ocupante " +"específico." -#: ../src/groupchat_control.py:1053 +#: ../src/groupchat_control.py:1219 #, python-format msgid "Usage: /%s, clears the text window." msgstr "Uso: /%s, apaga o texto da janela." -#: ../src/groupchat_control.py:1055 +#: ../src/groupchat_control.py:1221 #, python-format -msgid "Usage: /%s [reason], closes the current window or tab, displaying reason if specified." -msgstr "Uso: /%s [rasão], fecha a janela corrente ou a aba, mostrando a razão se especificada." +msgid "" +"Usage: /%s [reason], closes the current window or tab, displaying reason if " +"specified." +msgstr "" +"Uso: /%s [rasão], fecha a janela corrente ou a aba, mostrando a razão se " +"especificada." -#: ../src/groupchat_control.py:1058 +#: ../src/groupchat_control.py:1224 #, python-format msgid "Usage: /%s, hide the chat buttons." msgstr "Uso: /%s, esconde os botões do bate-papo." -#: ../src/groupchat_control.py:1060 +#: ../src/groupchat_control.py:1226 #, python-format -msgid "Usage: /%s [reason], invites JID to the current room, optionally providing a reason." -msgstr "Uso: /%s [ razão ], convida JID à sala atual, fornecendo opcionalmente uma razão." +msgid "" +"Usage: /%s [reason], invites JID to the current room, optionally " +"providing a reason." +msgstr "" +"Uso: /%s [ razão ], convida JID à sala atual, fornecendo " +"opcionalmente uma razão." -#: ../src/groupchat_control.py:1064 +#: ../src/groupchat_control.py:1230 #, python-format -msgid "Usage: /%s @[/nickname], offers to join room@server optionally using specified nickname." -msgstr "Uso: /%s @[/apelido], oferece para entrar na sala@servidor opcionalmente usando um apelido específico." +msgid "" +"Usage: /%s @[/nickname], offers to join room@server optionally " +"using specified nickname." +msgstr "" +"Uso: /%s @[/apelido], oferece para entrar na sala@servidor " +"opcionalmente usando um apelido específico." -#: ../src/groupchat_control.py:1068 +#: ../src/groupchat_control.py:1234 #, python-format -msgid "Usage: /%s [reason], removes the occupant specified by nickname from the room and optionally displays a reason. Does NOT support spaces in nickname." -msgstr "Uso: /%s [razão], remove o ocupante especificado pelo apelido da sala e indica opcionalmente uma razão. Não suporta espaços no apelido." +msgid "" +"Usage: /%s [reason], removes the occupant specified by nickname " +"from the room and optionally displays a reason. Does NOT support spaces in " +"nickname." +msgstr "" +"Uso: /%s [razão], remove o ocupante especificado pelo apelido da " +"sala e indica opcionalmente uma razão. Não suporta espaços no apelido." -#: ../src/groupchat_control.py:1073 +#: ../src/groupchat_control.py:1239 #, python-format -msgid "Usage: /%s , sends action to the current room. Use third person. (e.g. /%s explodes.)" -msgstr "Uso: /%s , emite a ação à sala atual. Use a terceira pessoa (por exemplo: /%s explodes.)" +msgid "" +"Usage: /%s , sends action to the current room. Use third person. (e." +"g. /%s explodes.)" +msgstr "" +"Uso: /%s , emite a ação à sala atual. Use a terceira pessoa (por " +"exemplo: /%s explodes.)" -#: ../src/groupchat_control.py:1077 +#: ../src/groupchat_control.py:1243 #, python-format -msgid "Usage: /%s [message], opens a private message windowand sends message to the occupant specified by nickname." -msgstr "Uso: /%s [mensagem], abre uma janela de mensagem privada e envia uma mensagem ao ocupante especificado pelo apelido." +msgid "" +"Usage: /%s [message], opens a private message windowand sends " +"message to the occupant specified by nickname." +msgstr "" +"Uso: /%s [mensagem], abre uma janela de mensagem privada e envia " +"uma mensagem ao ocupante especificado pelo apelido." -#: ../src/groupchat_control.py:1082 +#: ../src/groupchat_control.py:1248 #, python-format msgid "Usage: /%s , changes your nickname in current room." msgstr "Uso: /%s , muda seu apelido na sala corrente." -#: ../src/groupchat_control.py:1086 +#: ../src/groupchat_control.py:1252 +#, fuzzy, python-format +msgid "Usage: /%s , display the names of room occupants." +msgstr "Uso: /%s [tópico], mostra ou atualiza o tópico da sala atual." + +#: ../src/groupchat_control.py:1256 #, python-format msgid "Usage: /%s [topic], displays or updates the current room topic." msgstr "Uso: /%s [tópico], mostra ou atualiza o tópico da sala atual." -#: ../src/groupchat_control.py:1089 +#: ../src/groupchat_control.py:1259 #, python-format -msgid "Usage: /%s , sends a message without looking for other commands." -msgstr "Uso: /%s , envia uma mensagem sem procurar por outros comandos." +msgid "" +"Usage: /%s , sends a message without looking for other commands." +msgstr "" +"Uso: /%s , envia uma mensagem sem procurar por outros comandos." -#: ../src/groupchat_control.py:1092 +#: ../src/groupchat_control.py:1262 #, python-format msgid "No help info for /%s" msgstr "Sem ajuda para /%s" -#: ../src/groupchat_control.py:1128 +#: ../src/groupchat_control.py:1304 #, python-format msgid "Are you sure you want to leave room \"%s\"?" msgstr "Você tem certeza que quer deixar a sala \"%s\"?" -#: ../src/groupchat_control.py:1129 +#: ../src/groupchat_control.py:1305 msgid "If you close this window, you will be disconnected from this room." msgstr "Se você fechar esta janela, você será desconectado desta sala." -#: ../src/groupchat_control.py:1133 +#: ../src/groupchat_control.py:1309 msgid "Do _not ask me again" msgstr "_Não me pergunte novamente" -#: ../src/groupchat_control.py:1167 +#: ../src/groupchat_control.py:1343 msgid "Changing Subject" msgstr "Mudando Assunto" -#: ../src/groupchat_control.py:1168 +#: ../src/groupchat_control.py:1344 msgid "Please specify the new subject:" msgstr "Por favor, especifique o novo assunto:" -#: ../src/groupchat_control.py:1176 +#: ../src/groupchat_control.py:1352 msgid "Changing Nickname" msgstr "Mudando Apelido" -#: ../src/groupchat_control.py:1177 +#: ../src/groupchat_control.py:1353 msgid "Please specify the new nickname you want to use:" msgstr "Por favor, especifique o novo apelido que você quer usar:" -#: ../src/groupchat_control.py:1202 +#: ../src/groupchat_control.py:1379 msgid "Bookmark already set" msgstr "Bookmark já configurado" -#: ../src/groupchat_control.py:1203 +#: ../src/groupchat_control.py:1380 #, python-format msgid "Room \"%s\" is already in your bookmarks." msgstr "Sala \"%s\" já existe nos bookmarks." -#: ../src/groupchat_control.py:1212 +#: ../src/groupchat_control.py:1389 msgid "Bookmark has been added successfully" msgstr "Bookmark foi adicionado com sucesso" -#: ../src/groupchat_control.py:1213 +#: ../src/groupchat_control.py:1390 msgid "You can manage your bookmarks via Actions menu in your roster." -msgstr "Você pode gerenciar seus bookmarks pelo menu de Ações na janela principal." +msgstr "" +"Você pode gerenciar seus bookmarks pelo menu de Ações na janela principal." #. ask for reason -#: ../src/groupchat_control.py:1322 +#: ../src/groupchat_control.py:1500 #, python-format msgid "Kicking %s" msgstr "Chutando %s" -#: ../src/groupchat_control.py:1323 -#: ../src/groupchat_control.py:1568 +#: ../src/groupchat_control.py:1501 ../src/groupchat_control.py:1779 msgid "You may specify a reason below:" msgstr "Você deve especificar uma razão abaixo:" #. ask for reason -#: ../src/groupchat_control.py:1567 +#: ../src/groupchat_control.py:1778 #, python-format msgid "Banning %s" msgstr "Banindo %s" -#: ../src/gtkexcepthook.py:52 +#: ../src/gtkexcepthook.py:51 msgid "A programming error has been detected" msgstr "Um erro de programação foi detectado" -#: ../src/gtkexcepthook.py:53 -msgid "It probably is not fatal, but should be reported to the developers nonetheless." +#: ../src/gtkexcepthook.py:52 +msgid "" +"It probably is not fatal, but should be reported to the developers " +"nonetheless." msgstr "Não é provavelmente fatal, mas deve ser reportado aos programadores." -#: ../src/gtkexcepthook.py:59 +#: ../src/gtkexcepthook.py:58 msgid "_Report Bug" msgstr "_Reportar Erro" -#: ../src/gtkexcepthook.py:82 +#: ../src/gtkexcepthook.py:81 msgid "Details" msgstr "Detalhes" -#. this always tracebacks -#: ../src/gtkgui.glade.h:1 -msgid "0" -msgstr "0" - -#: ../src/gtkgui.glade.h:2 -msgid "" -"Account is being created\n" -"\n" -"Please wait..." -msgstr "" -"Conta está sendo criada\n" -"\n" -"Por favor espere..." - -#: ../src/gtkgui.glade.h:5 -msgid "Advanced Configuration Editor" -msgstr "Editor de Configurações Avançadas" - -#: ../src/gtkgui.glade.h:6 -msgid "Applications" -msgstr "Aplicações" - -#: ../src/gtkgui.glade.h:7 -msgid "Chatstate Tab Colors" -msgstr "Aba Cores do Bate-papo" - -#. a header for custom browser/client/file manager. so translate sth like: Custom Settings -#: ../src/gtkgui.glade.h:9 -msgid "Custom" -msgstr "Customizar" - -#: ../src/gtkgui.glade.h:10 -msgid "Description" -msgstr "Descrição" - -#: ../src/gtkgui.glade.h:11 -msgid "Format of a line" -msgstr "Formato da linha" - -#: ../src/gtkgui.glade.h:12 -msgid "Interface Customization" -msgstr "Customização de interface" - -#: ../src/gtkgui.glade.h:13 -msgid "Jabber Traffic" -msgstr "Trafégo do Jabber" - -#: ../src/gtkgui.glade.h:14 -msgid "Miscellaneous" -msgstr "Diversos" - -#: ../src/gtkgui.glade.h:15 -msgid "NOTE: You should restart gajim for some setting to take effect" -msgstr "NOTA Você deve reiniciar o gajim para algumas configurações tenham efeito" - -#: ../src/gtkgui.glade.h:16 -msgid "OpenPGP" -msgstr "OpenPGP" - -#: ../src/gtkgui.glade.h:17 -msgid "Personal Information" -msgstr "Informações Pessoais" - -#: ../src/gtkgui.glade.h:18 -msgid "Please choose one of the options below:" -msgstr "Por favor escolha uma das opções abaixo:" - -#: ../src/gtkgui.glade.h:19 -msgid "Please fill in the data for your new account" -msgstr "Por favor preencha os dados para sua nova conta" - -#: ../src/gtkgui.glade.h:20 -msgid "Preset Status Messages" -msgstr "Mensagens de Status Disponíveis" - -#: ../src/gtkgui.glade.h:21 -msgid "Properties" -msgstr "Propriedades" - -#: ../src/gtkgui.glade.h:22 -msgid "Settings" -msgstr "Configurações" - -#: ../src/gtkgui.glade.h:23 -msgid "Sounds" -msgstr "Sons" - -#: ../src/gtkgui.glade.h:24 -msgid "Type your new status message" -msgstr "Escreva sua nova mensagem de status:" - -#: ../src/gtkgui.glade.h:25 -msgid "Visual Notifications" -msgstr "Notificações Visuais" - -#: ../src/gtkgui.glade.h:26 -msgid "What do you want to do?" -msgstr "O que você quer fazer?" - -#: ../src/gtkgui.glade.h:27 -msgid "XML Input" -msgstr "Entrada XML" - -#: ../src/gtkgui.glade.h:28 -msgid "A list of active, completed and stopped file transfers" -msgstr "Uma lista de transferência de arquivos ativas, completadas e paradas" - -#: ../src/gtkgui.glade.h:29 -msgid "A_ccounts" -msgstr "_Contas" - -#: ../src/gtkgui.glade.h:30 -msgid "A_fter nickname:" -msgstr "_Depois do apelido:" - -#. "About" is the text of a tab of vcard window -#: ../src/gtkgui.glade.h:32 -msgid "About" -msgstr "Sobre" - -#: ../src/gtkgui.glade.h:33 -msgid "Accept" -msgstr "Aceitar" - -#: ../src/gtkgui.glade.h:34 -msgid "Account" -msgstr "Conta" - -#: ../src/gtkgui.glade.h:35 -msgid "" -"Account\n" -"Group\n" -"Contact\n" -"Banner" -msgstr "" -"Conta\n" -"Grupo\n" -"Contato\n" -"Faixa" - -#: ../src/gtkgui.glade.h:39 -msgid "Account Modification" -msgstr "Modificação da Conta" - -#: ../src/gtkgui.glade.h:40 -msgid "Accounts" -msgstr "Contas" - -#: ../src/gtkgui.glade.h:42 -msgid "Add New Contact" -msgstr "Adicionar Novo Contato" - -#: ../src/gtkgui.glade.h:43 -msgid "Add Special _Notification" -msgstr "Adicionar Notificações Visuais" - -#: ../src/gtkgui.glade.h:44 -msgid "Add _Contact" -msgstr "Adicionar _Contato" - -#: ../src/gtkgui.glade.h:45 -msgid "Address" -msgstr "Endereço" - -#: ../src/gtkgui.glade.h:46 -msgid "Advanced" -msgstr "Avançado" - -#: ../src/gtkgui.glade.h:47 -msgid "Advanced Configuration Editor" -msgstr "Editor de Configurações Avançadas" - -#: ../src/gtkgui.glade.h:48 -msgid "" -"All chat states\n" -"Composing only\n" -"Disabled" -msgstr "" -"Todos os status de conversa\n" -"Escrevendo somente\n" -"Desabilitado" - -#: ../src/gtkgui.glade.h:51 -msgid "Allow _OS information to be sent" -msgstr "Permitir o envio de informações do _SO " - -#: ../src/gtkgui.glade.h:52 -msgid "Allow him/her to see my status" -msgstr "Permita que ele/ela ver meu status" - -#: ../src/gtkgui.glade.h:53 -msgid "Allow popup/notifications when I'm _away/na/busy/invisible" -msgstr "Permite janela/notificação quando eu estou _afastado/NA/ocupado/invisível" - -#: ../src/gtkgui.glade.h:54 -msgid "Also known as iChat style" -msgstr "Conhecido também como estilo iChat" - -#: ../src/gtkgui.glade.h:55 -msgid "Ask status message when I:" -msgstr "Solicite uma mensagem de status quanto eu:" - -#: ../src/gtkgui.glade.h:56 -msgid "Ask to see his/her status" -msgstr "Peça para ver o status dele/dela" - -#: ../src/gtkgui.glade.h:57 -msgid "Ask:" -msgstr "Perguntar:" - -#: ../src/gtkgui.glade.h:58 -msgid "Assign Open_PGP Key" -msgstr "Atribuir chave OpenPGP" - -#: ../src/gtkgui.glade.h:59 -msgid "Authorize contact so he can know when you're connected" -msgstr "Autorize o contato para que ele saiba quando você estiver conectado" - -#: ../src/gtkgui.glade.h:60 -msgid "Auto _away after:" -msgstr "Marcar como _afastado depois:" - -#: ../src/gtkgui.glade.h:61 -msgid "Auto _not available after:" -msgstr "Marcar como _afastado depois:" - -#: ../src/gtkgui.glade.h:62 -msgid "Auto join" -msgstr "Ingresso automático" - -#: ../src/gtkgui.glade.h:63 -msgid "" -"Autodetect on every Gajim startup\n" -"Always use GNOME default applications\n" -"Always use KDE default applications\n" -"Custom" -msgstr "" -"Auto-detectar no início do Gajim\n" -"Sempre usar aplicações padrão GNOME\n" -"Sempre usar aplicações padrão KDE\n" -"Customizar" - -#: ../src/gtkgui.glade.h:67 -msgid "Automatically authorize contact" -msgstr "Autorizar automaticamente os contatos" - -#: ../src/gtkgui.glade.h:68 -msgid "Autoreconnect when connection is lost" -msgstr "Reconectar automaticamente quando a conexão cair" - -#: ../src/gtkgui.glade.h:69 -msgid "B_efore nickname:" -msgstr "_Antes do apelido:" - -#: ../src/gtkgui.glade.h:70 -msgid "Birthday:" -msgstr "Aniversário:" - -#: ../src/gtkgui.glade.h:71 -msgid "Bold" -msgstr "Negrito" - -#: ../src/gtkgui.glade.h:72 -msgid "Build custom query" -msgstr "Gerar consulta customizada" - -#: ../src/gtkgui.glade.h:73 -msgid "C_onnect on Gajim startup" -msgstr "C_onectar na inicialização do Gajim" - -#: ../src/gtkgui.glade.h:74 -msgid "Cancel file transfer" -msgstr "Cancelar transferência de arquivo" - -#: ../src/gtkgui.glade.h:75 -msgid "Cancels the selected file transfer" -msgstr "Cancelar a transferência de arquivo selecionada" - -#: ../src/gtkgui.glade.h:76 -msgid "Cancels the selected file transfer and removes incomplete file" -msgstr "Cancelar a transferência de arquivo selecionada e remove o arquivo incompleto" - -#: ../src/gtkgui.glade.h:77 -msgid "Chan_ge Password" -msgstr "Mudar Senha" - -#: ../src/gtkgui.glade.h:78 -msgid "Change Password" -msgstr "Mudar Senha" - -#: ../src/gtkgui.glade.h:79 -msgid "Change _Nickname" -msgstr "Mudar _Apelido" - -#: ../src/gtkgui.glade.h:80 -msgid "Change _Subject" -msgstr "Mudar _Assunto" - -#: ../src/gtkgui.glade.h:82 -msgid "Chat state noti_fications:" -msgstr "Noti_ficações do status da conversa:" - -#: ../src/gtkgui.glade.h:83 -msgid "Check this option, only if someone you don't have in the roster spams/annoys you. Use with caution, cause it blocks all messages from any contact that is not in the roster" -msgstr "Marque esta opção somente se alguém que não está na sua lista estiver mandando spams. Utilize com cuidado, porque isto bloqueia todas as mensagens de qualquer contato que você não possuir na sua lista e queria lhe enviar uma mensagem" - -#: ../src/gtkgui.glade.h:84 -msgid "Check this so Gajim will connect in port 5223 where legacy servers are expected to have SSL capabilities. Note that Gajim uses TLS encryption by default if broadcasted by the server, and with this option enabled TLS will be disabled" -msgstr "Marque esta opção para o Gajim se conectar na porta 5223 onde servidores antigos disponibilizam recursos SSL. Note que o Gajim usa criptografia TLS por padrão se disponibilizada pelo servidor e com esta opção habilitada o TLS será desabilitado" - -#: ../src/gtkgui.glade.h:85 -msgid "Choose _Key..." -msgstr "_Escolha a chave..." - -#: ../src/gtkgui.glade.h:86 -msgid "City:" -msgstr "Cidade:" - -#: ../src/gtkgui.glade.h:87 -msgid "Clean _up" -msgstr "_Limpar" - -#: ../src/gtkgui.glade.h:88 -msgid "Click to change account's password" -msgstr "Clique para mudar a senha da conta" - -#: ../src/gtkgui.glade.h:89 -msgid "Click to insert an emoticon (Alt+M)" -msgstr "Clique para inserir um emoticon (Alt+M)" - -#: ../src/gtkgui.glade.h:90 -msgid "Click to see features (like MSN, ICQ transports) of jabber servers" -msgstr "Clique para ver os recursos do servidor jabber (como transportes MSN, ICQ, etc)" - -#: ../src/gtkgui.glade.h:91 -msgid "Click to see past conversation in this room" -msgstr "Clique para ver o histórico de conversas nesta sala" - -#: ../src/gtkgui.glade.h:92 -msgid "Click to see past conversations with this contact" -msgstr "Clique para ver o histórico de conversas com este contato" - -#: ../src/gtkgui.glade.h:93 -msgid "Client:" -msgstr "Cliente:" - -#: ../src/gtkgui.glade.h:94 -msgid "Company:" -msgstr "Empresa:" - -#: ../src/gtkgui.glade.h:95 -msgid "Composing" -msgstr "Compôr" - -#: ../src/gtkgui.glade.h:96 -msgid "Configure _Room" -msgstr "Configurar _Sala" - -#: ../src/gtkgui.glade.h:97 -msgid "Connect when I press Finish" -msgstr "Conectar quando eu pressiono Fim" - -#: ../src/gtkgui.glade.h:98 -msgid "Connection" -msgstr "Conexão" - -#: ../src/gtkgui.glade.h:99 -msgid "Contact Information" -msgstr "Informações do Contato" - -#: ../src/gtkgui.glade.h:100 -msgid "Contact _Info" -msgstr "_Informações de Contato" - -#: ../src/gtkgui.glade.h:101 -msgid "Conversation History" -msgstr "Histórico de Conversação" - -#: ../src/gtkgui.glade.h:102 -msgid "Country:" -msgstr "País:" - -#: ../src/gtkgui.glade.h:103 -msgid "Default status _iconset:" -msgstr "_Conjunto de Ãcones de status padrão:" - -#: ../src/gtkgui.glade.h:104 -msgid "Delete MOTD" -msgstr "Deletar MOTD" - -#: ../src/gtkgui.glade.h:105 -msgid "Deletes Message of the Day" -msgstr "Deletar Mensagem do Dia" - -#: ../src/gtkgui.glade.h:106 -msgid "Deny" -msgstr "Negar" - -#: ../src/gtkgui.glade.h:107 -msgid "Deny authorization from contact so he cannot know when you're connected" -msgstr "Negando a autorização do contato, ele não poderá saber quando você está conectado" - -#: ../src/gtkgui.glade.h:108 -msgid "Department:" -msgstr "Departamento:" - -#: ../src/gtkgui.glade.h:109 -msgid "Display a_vatars of contacts in roster" -msgstr "Mostrar a_vatar dos contatos na lista" - -#: ../src/gtkgui.glade.h:110 -msgid "Display status _messages of contacts in roster" -msgstr "Mostrar _mensagem de status da lista de contato" - -#: ../src/gtkgui.glade.h:111 -msgid "E-Mail:" -msgstr "E-Mail:" - -#: ../src/gtkgui.glade.h:112 -msgid "E_very 5 minutes" -msgstr "De 5 _em 5 minutos" - -#: ../src/gtkgui.glade.h:113 -msgid "Edit Groups" -msgstr "Editar Grupos" - -#: ../src/gtkgui.glade.h:114 -msgid "Edit Personal Information..." -msgstr "Editar detalhes pessoais..." - -#: ../src/gtkgui.glade.h:115 -msgid "Edit _Groups" -msgstr "Editar _Grupos" - -#: ../src/gtkgui.glade.h:116 -msgid "Emoticons:" -msgstr "Emoticons:" - -#. XML Console enable checkbutton -#: ../src/gtkgui.glade.h:118 -msgid "Enable" -msgstr "Habilitar" - -#: ../src/gtkgui.glade.h:119 -msgid "Enter it again for confirmation:" -msgstr "Entre novamente para confirmação:" - -#: ../src/gtkgui.glade.h:120 -msgid "Enter new password:" -msgstr "Entre com a nova senha:" - -#: ../src/gtkgui.glade.h:121 -msgid "Events" -msgstr "Eventos" - -#: ../src/gtkgui.glade.h:122 -msgid "Extra Address:" -msgstr "Complemento:" - -#. Family Name -#: ../src/gtkgui.glade.h:124 -msgid "Family:" -msgstr "Família:" - -#: ../src/gtkgui.glade.h:125 -msgid "File Transfers" -msgstr "Transferência de Arquivos" - -#: ../src/gtkgui.glade.h:126 -msgid "File _Transfers" -msgstr "Transferência de _Arquivos" - -#: ../src/gtkgui.glade.h:127 -msgid "Filter:" -msgstr "Filtro:" - -#: ../src/gtkgui.glade.h:128 -msgid "Font style:" -msgstr "Estilo da fonte:" - -#: ../src/gtkgui.glade.h:129 -msgid "Forbid him/her to see my status" -msgstr "Proibir ele/ela a ver meu status" - -#: ../src/gtkgui.glade.h:130 -msgid "Format: YYYY-MM-DD" -msgstr "Formato: YYYY-MM-DD" - -#: ../src/gtkgui.glade.h:131 -msgid "Frequently Asked Questions (online)" -msgstr "Perguntas freqüentes (online)" - -#: ../src/gtkgui.glade.h:132 -msgid "From:" -msgstr "De:" - -#: ../src/gtkgui.glade.h:133 -msgid "G_o" -msgstr "_Ir" - -#: ../src/gtkgui.glade.h:134 -#: ../src/notify.py:167 -#: ../src/notify.py:189 -#: ../src/notify.py:201 -#: ../src/tooltips.py:339 -msgid "Gajim" -msgstr "Gajim" - -#: ../src/gtkgui.glade.h:135 -msgid "Gajim Themes Customization" -msgstr "Customização de Temas do Gajim" - -#: ../src/gtkgui.glade.h:136 -msgid "Gajim can send and receive meta-information related to a conversation you may have with a contact. Here you can specify which chatstates you want to send to the other party." -msgstr "Gajim pode enviar e receber meta-informações relacionadas a conversação que você pode ter com um contato. Aqui você pode especificar quais caracteres você quer para enviar a outra parte." - -#: ../src/gtkgui.glade.h:137 -msgid "Gajim will automatically show new events by poping up the relative window" -msgstr "Gajim automaticamente mostrará novos eventos em uma janela pop-up relativa" - -#: ../src/gtkgui.glade.h:138 -msgid "Gajim will notify you for new events via a popup in the bottom right of the screen" -msgstr "Gajim notificará você de uma novo evento via uma alerta visual na lateral inferior direita da tela" - -#: ../src/gtkgui.glade.h:139 -msgid "Gajim will notify you via a popup window in the bottom right of the screen about contacts that just signed in" -msgstr "Gajim notificará você através de um alerta visual na parte inferior direita da tela sobre os contatos que se conectaram" - -#: ../src/gtkgui.glade.h:140 -msgid "Gajim will notify you via a popup window in the bottom right of the screen about contacts that just signed out" -msgstr "Gajim notificará você através de um alerta visual na parte inferior direita da tela sobre os contatos que se desconectaram" - -#: ../src/gtkgui.glade.h:141 -msgid "Gajim will only change the icon of the contact that triggered the new event" -msgstr "Gajim mudará somente o ícone do contato que provocou o evento novo" - -#: ../src/gtkgui.glade.h:142 -msgid "Gajim: Account Creation Wizard" -msgstr "Gajim: Auxíliar de Configuração de Conta" - -#. user has no group, print him in General -#: ../src/gtkgui.glade.h:143 -#: ../src/roster_window.py:291 -#: ../src/roster_window.py:1183 -#: ../src/roster_window.py:1405 -#: ../src/systray.py:286 -msgid "General" -msgstr "Geral" - -#. Given Name -#: ../src/gtkgui.glade.h:145 -msgid "Given:" -msgstr "Nome:" - -#: ../src/gtkgui.glade.h:146 -msgid "Gone" -msgstr "Ido" - -#: ../src/gtkgui.glade.h:147 -msgid "Group:" -msgstr "Grupo:" - -#: ../src/gtkgui.glade.h:148 -msgid "HTTP Connect" -msgstr "Conexão HTTP" - -#: ../src/gtkgui.glade.h:149 -msgid "Help online" -msgstr "Ajuda online" - -#: ../src/gtkgui.glade.h:150 -msgid "Hides the window" -msgstr "Esconder a janela" - -#: ../src/gtkgui.glade.h:151 -msgid "Homepage:" -msgstr "Homepage:" - -#: ../src/gtkgui.glade.h:152 -msgid "Hostname: " -msgstr "Nome do Host:" - -#: ../src/gtkgui.glade.h:153 -msgid "I already have an account I want to use" -msgstr "Eu já tenho uma conta e quero usa-la" - -#: ../src/gtkgui.glade.h:154 -msgid "I want to _register for a new account" -msgstr "Eu quero _registrar uma nova conta" - -#: ../src/gtkgui.glade.h:155 -msgid "I would like to add you to my contact list." -msgstr "Por favor, eu gostaria de adiciona-lo à minha lista." - -#: ../src/gtkgui.glade.h:156 -msgid "If checked, Gajim will also broadcast some more IPs except from just your IP, so file transfer has higher chances of working right." -msgstr "Se marcado, o Gajim transmitirá também alguns outros IPs exceto o seu, então a transferência de arquivo tem grandes possibilidades de executar corretamente." - -#: ../src/gtkgui.glade.h:157 -msgid "If checked, Gajim will display avatars of contacts in roster window and in group chats" -msgstr "Se marcado, Gajim mostrará avatars dos contatos na janela da lista e na conferência" - -#: ../src/gtkgui.glade.h:158 -msgid "If checked, Gajim will display status messages of contacts under the contact name in roster window and in group chats" -msgstr "Se marcado, Gajim indicará mensagens de status dos contatos sob o nome do contato na janela da lista e na conferência" - -#: ../src/gtkgui.glade.h:159 -msgid "If checked, Gajim will join this group chat on startup" -msgstr "Se marcado, o Gajim irá ingressar na conferência no ínicio da aplicação" - -#: ../src/gtkgui.glade.h:160 -msgid "If checked, Gajim will remember the password for this account" -msgstr "Se marcado, o Gajim lembrará a senha para esta conta" - -#: ../src/gtkgui.glade.h:161 -msgid "If checked, Gajim will remember the roster and chat window positions in the screen and the sizes of them next time you run it" -msgstr "Se marcado, o Gajim lembrará a posição e tamanho da janela principal na próxima vez que você executa-lo" - -#: ../src/gtkgui.glade.h:162 -msgid "If checked, Gajim will send keep-alive packets so it prevents connection timeout which results in disconnection" -msgstr "Se marcado, o Gajim enviará pacotes keep-alive que evitam queda de conexão" - -#: ../src/gtkgui.glade.h:163 -msgid "If checked, Gajim will store the password in ~/.gajim/config with 'read' permission only for you" -msgstr "Se checado, o Gajim gravará sua senha em ~/.gajim/config com permissão de 'leitura' somente para você" - -#: ../src/gtkgui.glade.h:164 -msgid "If checked, Gajim will use protocol-specific status icons. (eg. A contact from MSN will have the equivalent msn icon for status online, away, busy, etc...)" -msgstr "Se marcado, o Gajim usará ícones protocolo-específicos do status. (por exemplo, um contato do MSN terá o ícone equivalente do MSN para o status conectado, ausente, ocupado, etc....)" - -#: ../src/gtkgui.glade.h:165 -msgid "If checked, Gajim, when launched, will automatically connect to jabber using this account" -msgstr "Se marcado, o Gajim, quando carregado, conectará automaticamente ao jabber usando esta conta" - -#: ../src/gtkgui.glade.h:166 -msgid "If checked, any change to the global status (handled by the combobox at the bottom of the roster window) will change the status of this account accordingly" -msgstr "Se verificada, qualquer mudança ao status global (segurado pelo combobox no fundo da janela da lista) mudará o status deste cliente conformemente" - -#: ../src/gtkgui.glade.h:167 -msgid "If not disabled, Gajim will replace ascii smilies like ':)' with equivalent animated or static graphical emoticons" -msgstr "Se habilitado, Gajim substituirá o ascii para smilies, como ':)' com a animação equivalente ou estático emoticons gráfico" - -#: ../src/gtkgui.glade.h:168 -msgid "If you have 2 or more accounts and it is checked, Gajim will list all contacts as if you had one account" -msgstr "Se você tem duas ou mais contas e isto é marcado, Gajim listará todos os contatos como se você tivesse somente uma conta" - -#: ../src/gtkgui.glade.h:169 -msgid "Inactive" -msgstr "Inativo" - -#. Info/Query make the "IQ" initials. So translate like this 'YourLang/YourLang (Info/Query)'. Thanks (it's a tooltip so width is not a problem) -#: ../src/gtkgui.glade.h:171 -msgid "Info/Query" -msgstr "Info/Consulta" - -#: ../src/gtkgui.glade.h:172 -msgid "Information about you, as stored in the server" -msgstr "Informações sobre você são gravadas no servidor" - -#: ../src/gtkgui.glade.h:173 -msgid "Invitation Received" -msgstr "Convite Recebido" - -#: ../src/gtkgui.glade.h:174 -msgid "Italic" -msgstr "Itálico" - -#: ../src/gtkgui.glade.h:175 -msgid "Jabber" -msgstr "Jabber" - -#: ../src/gtkgui.glade.h:176 -msgid "Jabber ID:" -msgstr "Jabber ID:" - -#: ../src/gtkgui.glade.h:178 -msgid "Join _Group Chat" -msgstr "_Ingressar numa Conferência" - -#: ../src/gtkgui.glade.h:179 -msgid "Location" -msgstr "Endereço" - -#: ../src/gtkgui.glade.h:180 -msgid "" -"MUC\n" -"Messages" -msgstr "" -"MUC\n" -"Mensagens" - -#: ../src/gtkgui.glade.h:182 -msgid "" -"MUC Directed\n" -"Messages" -msgstr "" -"MUC Direto\n" -"Mensagens" - -#: ../src/gtkgui.glade.h:184 -msgid "Ma_nage..." -msgstr "Gere_nciar..." - -#: ../src/gtkgui.glade.h:185 -msgid "Manage Accounts" -msgstr "Gerenciar Contas" - -#: ../src/gtkgui.glade.h:186 -msgid "Manage Bookmarks" -msgstr "Gerenciar Bookmarks" - -#: ../src/gtkgui.glade.h:187 -msgid "Manage Proxy Profiles" -msgstr "Gerenciar Perfis de Proxy" - -#: ../src/gtkgui.glade.h:188 -msgid "Manage..." -msgstr "Gerenciar..." - -#. Middle Name -#: ../src/gtkgui.glade.h:190 -msgid "Middle:" -msgstr "Nome do meio:" - -#: ../src/gtkgui.glade.h:191 -msgid "Mo_derator" -msgstr "Mo_derador" - -#: ../src/gtkgui.glade.h:192 -msgid "More" -msgstr "Mais" - -#: ../src/gtkgui.glade.h:193 -msgid "Name:" -msgstr "Nome:" - -#: ../src/gtkgui.glade.h:194 -msgid "" -"Never\n" -"Always\n" -"Per account\n" -"Per type" -msgstr "" -"Nunca\n" -"Sempre\n" -"Por conta\n" -"Por tipo" - -#: ../src/gtkgui.glade.h:198 -msgid "Nickname:" -msgstr "Apelido:" - -#. None means no proxy profile selected -#: ../src/gtkgui.glade.h:201 -msgid "None" -msgstr "Nenhum" - -#: ../src/gtkgui.glade.h:202 -msgid "Notify me about contacts that: " -msgstr "Notifique-me sobre contatos ao: " - -#: ../src/gtkgui.glade.h:203 -msgid "Notify on new _Gmail e-mail" -msgstr "Notificar nova mensagem do _Gmail" - -#: ../src/gtkgui.glade.h:204 -msgid "OS:" -msgstr "SO:" - -#: ../src/gtkgui.glade.h:205 -msgid "On every _message" -msgstr "Em todas as _mensagens" - -#: ../src/gtkgui.glade.h:206 -msgid "One message _window:" -msgstr "Uma _janela de mensagem" - -#: ../src/gtkgui.glade.h:208 -msgid "Pass_word:" -msgstr "_Senha:" - -#: ../src/gtkgui.glade.h:209 -msgid "Passphrase" -msgstr "Frase de acesso" - -#: ../src/gtkgui.glade.h:210 -msgid "Password:" -msgstr "Senha:" - -#: ../src/gtkgui.glade.h:211 -#: ../src/tooltips.py:645 -msgid "Paused" -msgstr "Pausa" - -#: ../src/gtkgui.glade.h:212 -msgid "Personal Information" -msgstr "Informações Pessoais" - -#: ../src/gtkgui.glade.h:213 -msgid "Phone No.:" -msgstr "Telefone:" - -#: ../src/gtkgui.glade.h:214 -msgid "Play _sounds" -msgstr "Tocar _Sons" - -#: ../src/gtkgui.glade.h:215 -msgid "Port: " -msgstr "Porta:" - -#: ../src/gtkgui.glade.h:216 -msgid "Position:" -msgstr "Cargo:" - -#: ../src/gtkgui.glade.h:217 -msgid "Postal Code:" -msgstr "Código Postal:" - -#: ../src/gtkgui.glade.h:218 -msgid "Preferences" -msgstr "Preferências" - -#. Prefix in Name -#: ../src/gtkgui.glade.h:220 -msgid "Prefix:" -msgstr "Prefixo:" - -#: ../src/gtkgui.glade.h:221 -msgid "Preset messages:" -msgstr "Mensagens pre-configuradas" - -#: ../src/gtkgui.glade.h:222 -msgid "Print time:" -msgstr "Imprimir tempo:" - -#: ../src/gtkgui.glade.h:223 -msgid "Priori_ty:" -msgstr "_Prioridade" - -#: ../src/gtkgui.glade.h:224 -msgid "Priority is used in Jabber to determine who gets the events from the jabber server when two or more clients are connected using the same account; The client with the highest priority gets the events" -msgstr "Prioridade é usada no Jabber para determinar quem recebe os eventos do servidor jabber quando dois ou mais clientes estão conectados usando a mesma conta; O cliente com a maior prioridade receberá os eventos" - -#: ../src/gtkgui.glade.h:225 -msgid "Profile, Avatar" -msgstr "Perfil, Avatar" - -#: ../src/gtkgui.glade.h:226 -msgid "Protocol:" -msgstr "Protocolo:" - -#: ../src/gtkgui.glade.h:227 -msgid "Proxy:" -msgstr "Proxy:" - -#: ../src/gtkgui.glade.h:228 -msgid "Query Builder..." -msgstr "Gerador de consultas..." - -#: ../src/gtkgui.glade.h:229 -msgid "Recently:" -msgstr "Recentemente:" - -#: ../src/gtkgui.glade.h:230 -msgid "Register to" -msgstr "Registrar para" - -#: ../src/gtkgui.glade.h:231 -msgid "Remove account _only from Gajim" -msgstr "Remover conta _somente do Gajim" - -#: ../src/gtkgui.glade.h:232 -msgid "Remove account from Gajim and from _server" -msgstr "Remover conta do Gajim e do _servidor" - -#: ../src/gtkgui.glade.h:233 -msgid "Remove file transfer from the list." -msgstr "Remover a transferência de arquivo da lista." - -#: ../src/gtkgui.glade.h:234 -msgid "Removes completed, canceled and failed file transfers from the list" -msgstr "Remover transferências de arquivos completas, canceladas ou interrompidas da lista" - -#: ../src/gtkgui.glade.h:235 -msgid "Reply to this message" -msgstr "Resposta para esta mensagem" - -#: ../src/gtkgui.glade.h:236 -msgid "Resour_ce: " -msgstr "_Recurso: " - -#: ../src/gtkgui.glade.h:237 -msgid "Resource is sent to the Jabber server in order to separate the same JID in two or more parts depending on the number of the clients connected in the same server with the same account. So you might be connected in the same account with resource 'Home' and 'Work' at the same time. The resource which has the highest priority will get the events. (see below)" -msgstr "Recurso é enviado ao servidor jabber com objetivo de 'separar' o mesmo JID em duas ou mais partes dependendo do número de clientes conectados no mesmo servidor com a mesma conta. Então você pode estar conectado na mesma conta com o recurso 'Casa' e 'Trabalho' ao mesmo tempo. O recurso que possuir a maior prioridade receberá os eventos. (veja abaixo)" - -#: ../src/gtkgui.glade.h:238 -msgid "Resource:" -msgstr "Recurso:" - -#: ../src/gtkgui.glade.h:239 -msgid "Role:" -msgstr "Função:" - -#: ../src/gtkgui.glade.h:240 -msgid "Room Configuration" -msgstr "Configuração da Sala" - -#: ../src/gtkgui.glade.h:241 -msgid "Room:" -msgstr "Sala:" - -#: ../src/gtkgui.glade.h:242 -msgid "Save _passphrase (insecure)" -msgstr "Salvar _frase de acesso (inseguro)" - -#: ../src/gtkgui.glade.h:243 -msgid "Save _position and size for roster and chat windows" -msgstr "Salvar _posição e tamanho das janelas de conversa e lista de contatos" - -#: ../src/gtkgui.glade.h:244 -msgid "Save as Preset..." -msgstr "Salvar como Pre-configuradas..." - -#: ../src/gtkgui.glade.h:245 -msgid "Save conversation _logs for all contacts" -msgstr "Salvar histórico para todos os contatos desta conta" - -#: ../src/gtkgui.glade.h:246 -msgid "Save pass_word" -msgstr "Salvar senha" - -#: ../src/gtkgui.glade.h:247 -msgid "Search" -msgstr "Buscar" - -#: ../src/gtkgui.glade.h:248 -msgid "Sen_d" -msgstr "E_nviar" - -#: ../src/gtkgui.glade.h:249 -msgid "Send File" -msgstr "Enviar arquivo" - -#: ../src/gtkgui.glade.h:250 -msgid "Send Single _Message" -msgstr "Enviar _Mensagem Simples" - -#: ../src/gtkgui.glade.h:251 -msgid "Send Single _Message..." -msgstr "Enviar _Mensagem Simples..." - -#: ../src/gtkgui.glade.h:252 -msgid "Send _File" -msgstr "Enviar _Arquivo" - -#: ../src/gtkgui.glade.h:253 -msgid "Send keep-alive packets" -msgstr "Enviar pacotes para manter a conexão (keep-alive)" - -#: ../src/gtkgui.glade.h:254 -msgid "Send message" -msgstr "Enviar mensagem" - -#: ../src/gtkgui.glade.h:255 -msgid "Send message and close window" -msgstr "Enviar mensagem e fechar a janela" - -#: ../src/gtkgui.glade.h:256 -msgid "Sends a message to currently connected users to this server" -msgstr "Enviar uma mensagem para os usuários conectados neste servidor" - -#: ../src/gtkgui.glade.h:257 -msgid "Server:" -msgstr "Servidor:" - -#: ../src/gtkgui.glade.h:258 -msgid "Servers Features" -msgstr "Recursos dos Servidores" - -#: ../src/gtkgui.glade.h:259 -msgid "Set MOTD" -msgstr "Configurar MOTD" - -#: ../src/gtkgui.glade.h:260 -msgid "Set _Avatar" -msgstr "Configurar _Avatar" - -#: ../src/gtkgui.glade.h:261 -msgid "Set my profile when I connect" -msgstr "Configurar perfil quando eu conectar" - -#: ../src/gtkgui.glade.h:262 -msgid "Sets Message of the Day" -msgstr "Configurar Mensagem do Dia" - -#: ../src/gtkgui.glade.h:263 -msgid "Show All Pending _Events" -msgstr "Mostrar todos _Eventos Pendentes" - -#: ../src/gtkgui.glade.h:264 -msgid "Show _Offline Contacts" -msgstr "Mostrar Contatos desc_onectados" - -#: ../src/gtkgui.glade.h:265 -msgid "Show _Roster" -msgstr "Mostre _Lista" - -#: ../src/gtkgui.glade.h:266 -msgid "Show _XML Console" -msgstr "Mostrar console _XML" - -#: ../src/gtkgui.glade.h:267 -msgid "Show only in _roster" -msgstr "Mostre somente na _lista" - -#: ../src/gtkgui.glade.h:268 -msgid "Shows a list of file transfers between you and other" -msgstr "Mostrar uma lista de transferências de arquivos entre você e o outro" - -#: ../src/gtkgui.glade.h:269 -msgid "Sign _in" -msgstr "_Conectar" - -#: ../src/gtkgui.glade.h:270 -msgid "Sign _out" -msgstr "_Desconectar" - -#: ../src/gtkgui.glade.h:271 -msgid "Sta_tus" -msgstr "Sta_tus" - -#: ../src/gtkgui.glade.h:272 -msgid "Start _Chat" -msgstr "Iniciar conversa" - -#: ../src/gtkgui.glade.h:273 -msgid "State:" -msgstr "Estado:" - -#: ../src/gtkgui.glade.h:274 -msgid "Status" -msgstr "Status" - -#: ../src/gtkgui.glade.h:275 -msgid "Status:" -msgstr "Status:" - -#: ../src/gtkgui.glade.h:276 -msgid "Street:" -msgstr "Rua:" - -#: ../src/gtkgui.glade.h:277 -msgid "Subject:" -msgstr "Assunto:" - -#: ../src/gtkgui.glade.h:278 -msgid "Subscription Request" -msgstr "Solicitação de Inscrição" - -#: ../src/gtkgui.glade.h:279 -msgid "Subscription:" -msgstr "Inscrição:" - -#. Suffix in Name -#: ../src/gtkgui.glade.h:281 -msgid "Suffix:" -msgstr "Sobrenome:" - -#: ../src/gtkgui.glade.h:282 -msgid "Synch_ronize account status with global status" -msgstr "_Sincronizar status da conta com status global" - -#: ../src/gtkgui.glade.h:283 -msgid "T_heme:" -msgstr "_Tema:" - -#: ../src/gtkgui.glade.h:284 -msgid "Text _color:" -msgstr "_Cor do texto" - -#: ../src/gtkgui.glade.h:285 -msgid "Text _font:" -msgstr "_Fonte do texto" - -#: ../src/gtkgui.glade.h:286 -msgid "The auto away status message" -msgstr "A mensagem de status para o ausente automático" - -#: ../src/gtkgui.glade.h:287 -msgid "The auto not available status message" -msgstr "A mensagem de status para o afastado automático" - -#: ../src/gtkgui.glade.h:288 -msgid "This action removes single file transfer from the list. If the transfer is active, it is first stopped and then removed" -msgstr "Esta ação remove uma única transferência de arquivo da lista. Se a transferência está ativa, isto vai pará-la e removê-la." - -#: ../src/gtkgui.glade.h:289 -msgid "Title:" -msgstr "Título:" - -#: ../src/gtkgui.glade.h:290 -msgid "To:" -msgstr "Para:" - -#: ../src/gtkgui.glade.h:291 -msgid "Toggle Open_PGP Encryption" -msgstr "Alternar criptografia Open_PGP" - -#: ../src/gtkgui.glade.h:292 -msgid "Type:" -msgstr "Tipo:" - -#: ../src/gtkgui.glade.h:293 -msgid "Underline" -msgstr "Sublinhar" - -#: ../src/gtkgui.glade.h:294 -msgid "Update MOTD" -msgstr "Atualizar MOTD" - -#: ../src/gtkgui.glade.h:295 -msgid "Updates Message of the Day" -msgstr "Atualizar Mensagem do Dia" - -#: ../src/gtkgui.glade.h:296 -msgid "Use _SSL (legacy)" -msgstr "Usar _SSL (obsoleto, apenas para servidores antigos)" - -#: ../src/gtkgui.glade.h:297 -msgid "Use _transports iconsets" -msgstr "Usar conjunto de ícones de _transportes" - -#: ../src/gtkgui.glade.h:298 -msgid "Use authentication" -msgstr "Usar autenticação" - -#: ../src/gtkgui.glade.h:299 -msgid "Use custom hostname/port" -msgstr "Usa nomedohost/porta customizada" - -#: ../src/gtkgui.glade.h:300 -msgid "Use file transfer proxies" -msgstr "Usa proxies de transferência de arquivos" - -#: ../src/gtkgui.glade.h:301 -msgid "Use t_rayicon (aka. notification area icon)" -msgstr "Usar ícone na bandeja (também conhecido por área de notificação)" - -#: ../src/gtkgui.glade.h:302 -msgid "User ID:" -msgstr "ID do Usuário:" - -#: ../src/gtkgui.glade.h:303 -msgid "When a file transfer is complete show a popup notification" -msgstr "Mostrar um alerta visual quanto uma transferência de arquivo terminar" - -#: ../src/gtkgui.glade.h:304 -msgid "When a new event (message, file transfer request etc..) is received, the following methods may be used to inform you about it. Please note that events about new messages only occur if it is a new message from a contact you are not already chatting with" -msgstr "Quando um evento novo (mensagem, pedido etc. de transferência de arquivo, etc.) é recebido, os seguintes métodos podem ser usados para informá-lo sobre ele. Por favor, note que os eventos sobre mensagens novas ocorrem somente se for uma mensagem nova de um contato que você não está conversando" - -#: ../src/gtkgui.glade.h:305 -msgid "When new event is received" -msgstr "Quando novo evento é recebido" - -#: ../src/gtkgui.glade.h:306 -msgid "Work" -msgstr "Trabalho" - -#: ../src/gtkgui.glade.h:307 -msgid "" -"You need to have an account in order to connect\n" -"to the Jabber network." -msgstr "" -"Você precisa ter uma conta para conectar na\n" -"rede Jabber." - -#: ../src/gtkgui.glade.h:309 -msgid "Your JID:" -msgstr "Seu JID:" - -#. Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector) -#: ../src/gtkgui.glade.h:311 -msgid "_Actions" -msgstr "_Ações" - -#: ../src/gtkgui.glade.h:312 -msgid "_Add Contact..." -msgstr "_Adicionar Contato..." - -#: ../src/gtkgui.glade.h:313 -msgid "_Add to Roster" -msgstr "_Adicionar à Lista" - -#: ../src/gtkgui.glade.h:314 -msgid "_Address:" -msgstr "_Endereço:" - -#: ../src/gtkgui.glade.h:315 -msgid "_Admin" -msgstr "_Administração" - -#: ../src/gtkgui.glade.h:316 -msgid "_Administrator" -msgstr "_Administrador" - -#: ../src/gtkgui.glade.h:317 -msgid "_Advanced" -msgstr "_Avançado" - -#: ../src/gtkgui.glade.h:318 -msgid "_After time:" -msgstr "_Depois da hora:" - -#: ../src/gtkgui.glade.h:319 -msgid "_Authorize" -msgstr "_Autorizar" - -#: ../src/gtkgui.glade.h:320 -msgid "_Background:" -msgstr "Cor _de fundo" - -#: ../src/gtkgui.glade.h:321 -msgid "_Ban" -msgstr "_Banir" - -#: ../src/gtkgui.glade.h:322 -msgid "_Before time:" -msgstr "A_ntes da hora:" - -#: ../src/gtkgui.glade.h:323 -msgid "_Bookmark This Room" -msgstr "Adicionar esta Sala ao _Bookmark" - -#: ../src/gtkgui.glade.h:324 -msgid "_Browser:" -msgstr "_Navegar:" - -#: ../src/gtkgui.glade.h:325 -msgid "_Cancel" -msgstr "_Cancelar" - -#: ../src/gtkgui.glade.h:326 -msgid "_Compact View Alt+C" -msgstr "Visão _Compacta Alt+C" - -#: ../src/gtkgui.glade.h:327 -msgid "_Contents" -msgstr "_Ãndices" - -#: ../src/gtkgui.glade.h:329 -msgid "_Copy JID/Email Address" -msgstr "_Copiar Endereço de Email/JID" - -#: ../src/gtkgui.glade.h:330 -msgid "_Copy Link Location" -msgstr "_Copia Localização do Link" - -#: ../src/gtkgui.glade.h:331 -msgid "_Deny" -msgstr "_Negar" - -#: ../src/gtkgui.glade.h:332 -msgid "_Discover Services" -msgstr "_Descubra Serviços" - -#: ../src/gtkgui.glade.h:333 -msgid "_Discover Services..." -msgstr "_Descubra Serviços..." - -#: ../src/gtkgui.glade.h:335 -msgid "_FAQ" -msgstr "_FAQ" - -#: ../src/gtkgui.glade.h:336 -msgid "_File manager:" -msgstr "_Gerenciamento de arquivos:" - -#: ../src/gtkgui.glade.h:337 -msgid "_Filter:" -msgstr "_Filtro:" - -#: ../src/gtkgui.glade.h:338 -msgid "_Finish" -msgstr "_Encerrar" - -#: ../src/gtkgui.glade.h:339 -msgid "_Font:" -msgstr "_Fonte:" - -#: ../src/gtkgui.glade.h:340 -msgid "_Group Chat" -msgstr "_Conferência" - -#: ../src/gtkgui.glade.h:341 -msgid "_Help" -msgstr "_Ajuda" - -#: ../src/gtkgui.glade.h:342 -msgid "_Highlight misspelled words" -msgstr "_Destacar palavras mal escritas" - -#: ../src/gtkgui.glade.h:343 -msgid "_History" -msgstr "_Histórico" - -#: ../src/gtkgui.glade.h:344 -msgid "_Host:" -msgstr "_Host:" - -#. Info/Query: all(?) jabber xml start with Welcome to Gajim History Logs Manager\n" -"\n" -"You can select logs from the left and/or search database from below.\n" -"\n" -"WARNING:\n" -"If you plan to do massive deletions, please make sure Gajim is not running. Generally avoid deletions with contacts you currently chat with." msgstr "" -"Bem-vindo ao Gerenciador de Histórico de Logs do Gajim\n" -"\n" -"Você pode selecionar os logs da esquerda e/ou procurar a base de dados do abaixo.\n" -" CUIDADO:\n" -"Se você planeja fazer apagamentos maciços, certifique-se por favor que o Gajim não está executando. Evite apagamentos com contatos que você esteja conversando no momento." +"Não foi possível escrever à %s. O suporte de gerência da sessão não funciona" -#: ../src/history_manager.glade.h:7 -msgid "Delete" -msgstr "Deletar" +#: ../src/gtkgui_helpers.py:717 +msgid "Extension not supported" +msgstr "" -#: ../src/history_manager.glade.h:8 -msgid "Export" -msgstr "Exportar" +#: ../src/gtkgui_helpers.py:718 +#, python-format +msgid "Image cannot be saved in %(type)s format. Save as %(new_filename)s?" +msgstr "" -#: ../src/history_manager.glade.h:9 -msgid "Gajim History Logs Manager" -msgstr "Gerenciador de Histórico de Logs do Gajim" +#: ../src/gtkgui_helpers.py:727 +#, fuzzy +msgid "Save Image as..." +msgstr "Salvar Arquivo como..." -#: ../src/history_manager.glade.h:10 -msgid "_Search Database" -msgstr "_Buscar no Bando de Dados" - -#: ../src/history_manager.py:58 +#: ../src/history_manager.py:61 msgid "Cannot find history logs database" msgstr "Não foi encontrado banco de dados do histórico de logs" #. holds jid -#: ../src/history_manager.py:102 +#: ../src/history_manager.py:104 msgid "Contacts" msgstr "Contatos" #. holds time -#: ../src/history_manager.py:115 -#: ../src/history_manager.py:155 -#: ../src/history_window.py:94 +#: ../src/history_manager.py:117 ../src/history_manager.py:157 +#: ../src/history_window.py:85 msgid "Date" msgstr "Data:" #. holds nickname -#: ../src/history_manager.py:121 -#: ../src/history_manager.py:173 +#: ../src/history_manager.py:123 ../src/history_manager.py:175 msgid "Nickname" msgstr "Apelido" #. holds message -#: ../src/history_manager.py:129 -#: ../src/history_manager.py:161 -#: ../src/history_window.py:102 +#: ../src/history_manager.py:131 ../src/history_manager.py:163 +#: ../src/history_window.py:93 msgid "Message" msgstr "Mensagem" #. holds subject -#: ../src/history_manager.py:136 -#: ../src/history_manager.py:167 +#: ../src/history_manager.py:138 ../src/history_manager.py:169 msgid "Subject" msgstr "Assunto" -#: ../src/history_manager.py:181 -msgid "Do you want to clean up the database? (STRONGLY NOT RECOMMENDED IF GAJIM IS RUNNING)" -msgstr "Você quer limpar o banco de dados? (ALTAMENTE NÃO RECOMENDADO COM O GAJIM EM EXECUÇÃO)" - #: ../src/history_manager.py:183 msgid "" -"Normally allocated database size will not be freed, it will just become reusable. If you really want to reduce database filesize, click YES, else click NO.\n" +"Do you want to clean up the database? (STRONGLY NOT RECOMMENDED IF GAJIM IS " +"RUNNING)" +msgstr "" +"Você quer limpar o banco de dados? (ALTAMENTE NÃO RECOMENDADO COM O GAJIM EM " +"EXECUÇÃO)" + +#: ../src/history_manager.py:185 +msgid "" +"Normally allocated database size will not be freed, it will just become " +"reusable. If you really want to reduce database filesize, click YES, else " +"click NO.\n" "\n" "In case you click YES, please wait..." msgstr "" -"Normalmente, o tamanho alocado da base de dados não será liberado, ele se tornará apenas reusável. Se você quiser realmente reduzir o tamanho do arquivo da base de dados, clique SIM, senão do clique NO.\n" +"Normalmente, o tamanho alocado da base de dados não será liberado, ele se " +"tornará apenas reusável. Se você quiser realmente reduzir o tamanho do " +"arquivo da base de dados, clique SIM, senão do clique NO.\n" "\n" "Se caso você clicou SIM, por favor espere... " -#: ../src/history_manager.py:389 +#: ../src/history_manager.py:391 msgid "Exporting History Logs..." msgstr "Exportando Histórico de Logs..." -#: ../src/history_manager.py:465 +#: ../src/history_manager.py:467 #, python-format msgid "%(who)s on %(time)s said: %(message)s\n" msgstr "%(who)s em %(time)s disse: %(message)s\n" -#: ../src/history_manager.py:465 +#: ../src/history_manager.py:467 msgid "who" msgstr "quem" -#: ../src/history_manager.py:503 +#: ../src/history_manager.py:505 msgid "Do you really want to delete logs of the selected contact?" msgid_plural "Do you really want to delete logs of the selected contacts?" msgstr[0] "Você realmente quer deletar os logs do contato selecionado?" msgstr[1] "Você realmente quer deletar os logs dos contatos selecionados?" -#: ../src/history_manager.py:507 -#: ../src/history_manager.py:543 +#: ../src/history_manager.py:509 ../src/history_manager.py:545 msgid "This is an irreversible operation." msgstr "Esta é uma operação irreversível." -#: ../src/history_manager.py:540 +#: ../src/history_manager.py:542 msgid "Do you really want to delete the selected message?" msgid_plural "Do you really want to delete the selected messages?" msgstr[0] "Você realmente quer deletar a mensagem selecionada?" msgstr[1] "Você realmente quer deletar as mensagens selecionadas?" -#: ../src/history_window.py:111 -#: ../src/history_window.py:113 +#: ../src/history_window.py:102 ../src/history_window.py:104 #, python-format msgid "Conversation History with %s" msgstr "Histórico de Conversação com %s" -#: ../src/history_window.py:265 +#: ../src/history_window.py:258 #, python-format msgid "%(nick)s is now %(status)s: %(status_msg)s" msgstr "%(nick)s é agora %(status)s: %(status_msg)s" -#: ../src/history_window.py:269 +#: ../src/history_window.py:262 ../src/notify.py:113 #, python-format msgid "%(nick)s is now %(status)s" msgstr "%(nick)s agora está %(status)s" -#: ../src/history_window.py:275 +#: ../src/history_window.py:268 #, python-format msgid "Status is now: %(status)s: %(status_msg)s" msgstr "Status agora é: %(status)s: %(status_msg)s" -#: ../src/history_window.py:278 +#: ../src/history_window.py:271 #, python-format msgid "Status is now: %(status)s" msgstr "Status agora é: %(status)s" -#: ../src/message_window.py:233 +#: ../src/message_window.py:244 msgid "Messages" msgstr "Mensagens" -#: ../src/message_window.py:234 +#: ../src/message_window.py:245 #, python-format msgid "%s - Gajim" msgstr "%s - Gajim" -#: ../src/roster_window.py:140 +#: ../src/notify.py:111 +#, fuzzy, python-format +msgid "%(nick)s Changed Status" +msgstr "%(nick)s agora está %(status)s" + +#: ../src/notify.py:121 +#, python-format +msgid "%(nickname)s Signed In" +msgstr "%(nickname)s Conectou" + +#: ../src/notify.py:129 +#, python-format +msgid "%(nickname)s Signed Out" +msgstr "%(nickname)s Desconectou" + +#: ../src/notify.py:141 +#, python-format +msgid "New Single Message from %(nickname)s" +msgstr "Nova Mensagem Simples de %(nickname)s" + +#: ../src/notify.py:150 +#, python-format +msgid "New Private Message from room %s" +msgstr "Nova Mensagem Privada da sala %s" + +#: ../src/notify.py:151 +#, python-format +msgid "%(nickname)s: %(message)s" +msgstr "%(nickname)s: %(message)s" + +#: ../src/notify.py:157 +#, python-format +msgid "New Message from %(nickname)s" +msgstr "Nova Mensagem de %(nickname)s" + +#: ../src/roster_window.py:131 msgid "Merged accounts" msgstr "Juntar contas" -#: ../src/roster_window.py:289 -#: ../src/common/helpers.py:42 +#: ../src/roster_window.py:288 ../src/common/helpers.py:39 msgid "Observers" msgstr "Observadores" -#: ../src/roster_window.py:542 +#: ../src/roster_window.py:544 #, python-format msgid "You are already in room %s" msgstr "Você já está na sala %s" -#: ../src/roster_window.py:546 -#: ../src/roster_window.py:2262 +#: ../src/roster_window.py:548 ../src/roster_window.py:2280 msgid "You cannot join a room while you are invisible" msgstr "Você não pode ingressar em uma sala enquanto está invisível" #. the 'manage gc bookmarks' item is showed #. below to avoid duplicate code #. add -#: ../src/roster_window.py:735 +#: ../src/roster_window.py:748 #, python-format msgid "to %s account" msgstr "para %s conta" #. disco -#: ../src/roster_window.py:742 +#: ../src/roster_window.py:755 #, python-format msgid "using %s account" msgstr "usando %s conta" -#. new message +#. new chat #. for chat_with #. for single message -#: ../src/roster_window.py:750 -#: ../src/systray.py:194 -#: ../src/systray.py:201 +#: ../src/roster_window.py:763 ../src/systray.py:193 ../src/systray.py:198 #, python-format msgid "using account %s" msgstr "usando conta %s" #. profile, avatar -#: ../src/roster_window.py:759 +#: ../src/roster_window.py:772 #, python-format msgid "of account %s" msgstr "da conta %s" -#: ../src/roster_window.py:818 +#: ../src/roster_window.py:831 msgid "Manage Bookmarks..." msgstr "Gerenciar Bookmarks..." -#: ../src/roster_window.py:842 +#: ../src/roster_window.py:855 #, python-format msgid "for account %s" msgstr "para conta %s" #. History manager -#: ../src/roster_window.py:863 +#: ../src/roster_window.py:876 msgid "History Manager" msgstr "Gerenciador de Histórico" -#: ../src/roster_window.py:872 +#: ../src/roster_window.py:885 msgid "_Join New Room" msgstr "_Ingressar na Nova Sala" -#: ../src/roster_window.py:1158 +#: ../src/roster_window.py:1159 #, python-format msgid "Transport \"%s\" will be removed" msgstr "Transporte \"%s\" será removido" -#: ../src/roster_window.py:1158 -msgid "You will no longer be able to send and receive messages to contacts from this transport." -msgstr "Você não poderá enviar e receber mensagens para contatos deste transporte" +#: ../src/roster_window.py:1159 +msgid "" +"You will no longer be able to send and receive messages to contacts from " +"this transport." +msgstr "" +"Você não poderá enviar e receber mensagens para contatos deste transporte" -#: ../src/roster_window.py:1200 +#: ../src/roster_window.py:1201 msgid "Assign OpenPGP Key" msgstr "Atribuir chave OpenPGP" -#: ../src/roster_window.py:1201 +#: ../src/roster_window.py:1202 msgid "Select a key to apply to the contact" msgstr "Selecione uma chave para atribuir ao contato" @@ -3721,239 +4382,251 @@ msgstr "_Desconectar" msgid "_Change Status Message" msgstr "_Mudar Mensagem de Status" -#: ../src/roster_window.py:1617 +#: ../src/roster_window.py:1621 msgid "Authorization has been sent" msgstr "Autorização foi enviada" -#: ../src/roster_window.py:1618 +#: ../src/roster_window.py:1622 #, python-format msgid "Now \"%s\" will know your status." msgstr "Agora \"%s\" saberá seu status." -#: ../src/roster_window.py:1642 +#: ../src/roster_window.py:1646 msgid "Subscription request has been sent" msgstr "Solicitação de inscrição foi enviada" -#: ../src/roster_window.py:1643 +#: ../src/roster_window.py:1647 #, python-format msgid "If \"%s\" accepts this request you will know his or her status." msgstr "Se \"%s\" aceitar esta solicitação, você saberá o status dele ou dela." -#: ../src/roster_window.py:1654 +#: ../src/roster_window.py:1658 msgid "Authorization has been removed" msgstr "Autorização foi removida" -#: ../src/roster_window.py:1655 +#: ../src/roster_window.py:1659 #, python-format msgid "Now \"%s\" will always see you as offline." msgstr "Agora \"%s\" você sempre o verá como offline." -#: ../src/roster_window.py:1824 +#: ../src/roster_window.py:1822 #, python-format msgid "Contact \"%s\" will be removed from your roster" msgstr "Contato \"%s\" será removido de sua lista" -#: ../src/roster_window.py:1828 -msgid "By removing this contact you also remove authorization resulting in him or her always seeing you as offline." -msgstr "Removendo este contato, você também removerá a autorização, resultando em ele ou ela sempre o verá offiline." +#: ../src/roster_window.py:1826 +msgid "" +"By removing this contact you also remove authorization resulting in him or " +"her always seeing you as offline." +msgstr "" +"Removendo este contato, você também removerá a autorização, resultando em " +"ele ou ela sempre o verá offiline." -#: ../src/roster_window.py:1832 -msgid "By removing this contact you also by default remove authorization resulting in him or her always seeing you as offline." -msgstr "Removendo este contato, você também, por padrão, removerá a autorização, resultando em ele ou ela sempre o verá offiline." +#: ../src/roster_window.py:1830 +msgid "" +"By removing this contact you also by default remove authorization resulting " +"in him or her always seeing you as offline." +msgstr "" +"Removendo este contato, você também, por padrão, removerá a autorização, " +"resultando em ele ou ela sempre o verá offiline." -#: ../src/roster_window.py:1833 +#: ../src/roster_window.py:1831 msgid "I want this contact to know my status after removal" msgstr "Eu quero que este contato saiba meu status após a remoção" -#: ../src/roster_window.py:1901 +#: ../src/roster_window.py:1899 msgid "Passphrase Required" msgstr "Frase de acesso é obrigatória" -#: ../src/roster_window.py:1902 +#: ../src/roster_window.py:1900 #, python-format msgid "Enter GPG key passphrase for account %s." msgstr "Entre com a frase de acesso da chave GPG para conta %s" -#: ../src/roster_window.py:1907 +#: ../src/roster_window.py:1905 msgid "Save passphrase" msgstr "Salvar Frase de acesso" -#: ../src/roster_window.py:1915 +#: ../src/roster_window.py:1913 msgid "Wrong Passphrase" msgstr "Frase de acesso Errada" -#: ../src/roster_window.py:1916 +#: ../src/roster_window.py:1914 msgid "Please retype your GPG passphrase or press Cancel." msgstr "Por favor, reescreva sua frase de segurança GPG ou pressione Cancelar." -#: ../src/roster_window.py:1964 -#: ../src/roster_window.py:2021 +#: ../src/roster_window.py:1963 ../src/roster_window.py:2020 msgid "You are participating in one or more group chats" msgstr "Você está participando em uma ou mais conferências" -#: ../src/roster_window.py:1965 -#: ../src/roster_window.py:2022 -msgid "Changing your status to invisible will result in disconnection from those group chats. Are you sure you want to go invisible?" -msgstr "Mudando seu status para invisível resulta na desconexão daquelas conferências. Você tem certeza que quer ir invisível?" +#: ../src/roster_window.py:1964 ../src/roster_window.py:2021 +msgid "" +"Changing your status to invisible will result in disconnection from those " +"group chats. Are you sure you want to go invisible?" +msgstr "" +"Mudando seu status para invisível resulta na desconexão daquelas " +"conferências. Você tem certeza que quer ir invisível?" -#: ../src/roster_window.py:1981 +#: ../src/roster_window.py:1980 msgid "No account available" msgstr "Conta não disponível" -#: ../src/roster_window.py:1982 +#: ../src/roster_window.py:1981 msgid "You must create an account before you can chat with other contacts." -msgstr "Você deve configurar uma conta antes de poder conversar com outros contatos." +msgstr "" +"Você deve configurar uma conta antes de poder conversar com outros contatos." -#: ../src/roster_window.py:2427 -#: ../src/roster_window.py:2433 +#: ../src/roster_window.py:2452 ../src/roster_window.py:2458 msgid "You have unread messages" msgstr "Você tem mensagens não lidas" -#: ../src/roster_window.py:2428 -#: ../src/roster_window.py:2434 -msgid "Messages will only be available for reading them later if you have history enabled." -msgstr "Mensagem somente estará disponível para leitura mais tarde se você tiver o histórico habilitado." +#: ../src/roster_window.py:2453 ../src/roster_window.py:2459 +msgid "" +"Messages will only be available for reading them later if you have history " +"enabled." +msgstr "" +"Mensagem somente estará disponível para leitura mais tarde se você tiver o " +"histórico habilitado." -#: ../src/roster_window.py:3184 +#: ../src/roster_window.py:3231 #, python-format msgid "Drop %s in group %s" msgstr "Derrubar %s no grupo %s" -#: ../src/roster_window.py:3191 +#: ../src/roster_window.py:3238 #, python-format msgid "Make %s and %s metacontacts" msgstr "Fazer %s e %s metacontatos" -#: ../src/roster_window.py:3358 +#: ../src/roster_window.py:3408 msgid "Change Status Message..." msgstr "Mudar Mensagem de Status..." -#: ../src/systray.py:155 +#: ../src/systray.py:154 msgid "_Change Status Message..." msgstr "_Mudar Mensagem de Status..." -#: ../src/systray.py:236 +#: ../src/systray.py:231 msgid "Hide this menu" msgstr "Esconder este menu" -#: ../src/systraywin32.py:266 -#: ../src/systraywin32.py:285 -#: ../src/tooltips.py:315 +#: ../src/systraywin32.py:261 ../src/systraywin32.py:280 #, python-format msgid "Gajim - %d unread message" msgid_plural "Gajim - %d unread messages" msgstr[0] "Gajim - uma mensagem não lida" msgstr[1] "Gajim - %d mensagens não lidas" -#: ../src/tooltips.py:321 -#, python-format -msgid "Gajim - %d unread single message" -msgid_plural "Gajim - %d unread single messages" +#: ../src/tooltips.py:326 +#, fuzzy, python-format +msgid " %d unread message" +msgid_plural " %d unread messages" +msgstr[0] "Gajim - uma mensagem não lida" +msgstr[1] "Gajim - %d mensagens não lidas" + +#: ../src/tooltips.py:332 +#, fuzzy, python-format +msgid " %d unread single message" +msgid_plural " %d unread single messages" msgstr[0] "Gajim - %d mensagem simples não lida" msgstr[1] "Gajim - %d mensagens simples não lidas" -#: ../src/tooltips.py:327 -#, python-format -msgid "Gajim - %d unread group chat message" -msgid_plural "Gajim - %d unread group chat messages" +#: ../src/tooltips.py:338 +#, fuzzy, python-format +msgid " %d unread group chat message" +msgid_plural " %d unread group chat messages" msgstr[0] "Gajim - %d mensagem de conferência não lida" msgstr[1] "Gajim - %d mensagens de conferência não lidas" -#: ../src/tooltips.py:333 -#, python-format -msgid "Gajim - %d unread private message" -msgid_plural "Gajim - %d unread private messages" +#: ../src/tooltips.py:344 +#, fuzzy, python-format +msgid " %d unread private message" +msgid_plural " %d unread private messages" msgstr[0] "Gajim - %d mensagem privada não lida" msgstr[1] "Gajim - %d mensagens privadas não lidas" -#: ../src/tooltips.py:348 -#: ../src/tooltips.py:350 +#: ../src/tooltips.py:359 ../src/tooltips.py:361 #, python-format msgid "Gajim - %s" msgstr "Gajim - %s" -#: ../src/tooltips.py:383 +#: ../src/tooltips.py:395 msgid "Role: " msgstr "Regra: " -#: ../src/tooltips.py:384 +#: ../src/tooltips.py:396 msgid "Affiliation: " msgstr "Filiação: " -#: ../src/tooltips.py:386 -#: ../src/tooltips.py:518 +#: ../src/tooltips.py:398 ../src/tooltips.py:537 msgid "Resource: " msgstr "Recurso: " -#: ../src/tooltips.py:394 -#: ../src/tooltips.py:521 -#: ../src/tooltips.py:543 -#: ../src/tooltips.py:654 +#: ../src/tooltips.py:407 ../src/tooltips.py:540 ../src/tooltips.py:565 +#: ../src/tooltips.py:676 msgid "Status: " msgstr "Status: " -#: ../src/tooltips.py:501 +#: ../src/tooltips.py:514 msgid "Subscription: " msgstr "Inscrição: " -#: ../src/tooltips.py:510 +#: ../src/tooltips.py:523 msgid "OpenPGP: " msgstr "OpenPGP: " -#: ../src/tooltips.py:548 +#: ../src/tooltips.py:570 #, python-format msgid "Last status on %s" msgstr "Último status conectado %s" -#: ../src/tooltips.py:550 +#: ../src/tooltips.py:572 #, python-format msgid "Since %s" msgstr "Desde %s" -#: ../src/tooltips.py:610 +#: ../src/tooltips.py:632 msgid "Download" msgstr "Download" -#: ../src/tooltips.py:616 +#: ../src/tooltips.py:638 msgid "Upload" msgstr "Upload" -#: ../src/tooltips.py:623 +#: ../src/tooltips.py:645 msgid "Type: " msgstr "Tipo: " -#: ../src/tooltips.py:629 +#: ../src/tooltips.py:651 msgid "Transferred: " msgstr "Transferido: " -#: ../src/tooltips.py:632 -#: ../src/tooltips.py:653 +#: ../src/tooltips.py:654 ../src/tooltips.py:675 msgid "Not started" msgstr "Não iniciado" -#: ../src/tooltips.py:636 +#: ../src/tooltips.py:658 msgid "Stopped" msgstr "Parado" -#: ../src/tooltips.py:638 -#: ../src/tooltips.py:641 +#: ../src/tooltips.py:660 ../src/tooltips.py:663 msgid "Completed" msgstr "Completo" #. stalled is not paused. it is like 'frozen' it stopped alone -#: ../src/tooltips.py:649 +#: ../src/tooltips.py:671 msgid "Stalled" msgstr "Parado" -#: ../src/tooltips.py:651 +#: ../src/tooltips.py:673 msgid "Transferring" msgstr "Transferindo" -#: ../src/tooltips.py:683 +#: ../src/tooltips.py:705 msgid "This service has not yet responded with detailed information" msgstr "Este serviço não respondeu ainda com informação detalhada" -#: ../src/tooltips.py:686 +#: ../src/tooltips.py:708 msgid "" "This service could not respond with detailed information.\n" "It is most likely legacy or broken" @@ -3962,102 +4635,114 @@ msgstr "" "É mais provável quebrado" #. keep identation -#: ../src/vcard.py:186 +#: ../src/vcard.py:188 msgid "Could not load image" msgstr "A imagem não pode ser carregada" -#: ../src/vcard.py:262 +#: ../src/vcard.py:289 msgid "?Client:Unknown" msgstr "?Cliente:Desconhecido" -#: ../src/vcard.py:264 +#: ../src/vcard.py:291 msgid "?OS:Unknown" msgstr "?SO:Desconhecido" -#: ../src/vcard.py:281 +#: ../src/vcard.py:308 #, python-format msgid "since %s" msgstr "desde %s" -#: ../src/vcard.py:305 -msgid "This contact is interested in your presence information, but you are not interested in his/her presence" -msgstr "Este contato está interessado em sua informação de presença, mas você não está interessado napresença dele/dela" +#: ../src/vcard.py:332 +msgid "" +"This contact is interested in your presence information, but you are not " +"interested in his/her presence" +msgstr "" +"Este contato está interessado em sua informação de presença, mas você não " +"está interessado napresença dele/dela" -#: ../src/vcard.py:307 -msgid "You are interested in the contact's presence information, but he/she is not interested in yours" -msgstr "Você está interessado na informação da presença do contato, mas ele/ela não está interessado em seu" +#: ../src/vcard.py:334 +msgid "" +"You are interested in the contact's presence information, but he/she is not " +"interested in yours" +msgstr "" +"Você está interessado na informação da presença do contato, mas ele/ela não " +"está interessado em seu" -#: ../src/vcard.py:309 +#: ../src/vcard.py:336 msgid "You and the contact are interested in each other's presence information" -msgstr "Você e o contato estão interessados em cada outra informação da presença" +msgstr "" +"Você e o contato estão interessados em cada outra informação da presença" #. None -#: ../src/vcard.py:311 -msgid "You are not interested in the contact's presence, and neither he/she is interested in yours" -msgstr "Você não está interessado na presença do contato, e nenhum está interessado no seu" +#: ../src/vcard.py:338 +msgid "" +"You are not interested in the contact's presence, and neither he/she is " +"interested in yours" +msgstr "" +"Você não está interessado na presença do contato, e nenhum está interessado " +"no seu" -#: ../src/vcard.py:320 +#: ../src/vcard.py:347 msgid "You are waiting contact's answer about your subscription request" -msgstr "Você está esperando a resposta do contato sobre seu pedido da subscrição" +msgstr "" +"Você está esperando a resposta do contato sobre seu pedido da subscrição" -#: ../src/vcard.py:332 -#: ../src/vcard.py:355 +#: ../src/vcard.py:359 ../src/vcard.py:382 msgid " resource with priority " msgstr " recurso com prioridade " -#: ../src/vcard.py:434 +#: ../src/vcard.py:458 msgid "Without a connection you can not publish your contact information." msgstr "Você deve estar conectado para publicar suas informações de contato." -#: ../src/vcard.py:463 +#: ../src/vcard.py:491 msgid "Without a connection, you can not get your contact information." msgstr "Você deve estar conectado para receber suas informações de contato." -#: ../src/vcard.py:467 +#: ../src/vcard.py:495 msgid "Personal details" msgstr "Detalhes Pessoais" -#: ../src/common/check_paths.py:39 +#: ../src/common/check_paths.py:35 msgid "creating logs database" msgstr "criando banco de dados de logs" -#: ../src/common/check_paths.py:84 -#: ../src/common/check_paths.py:95 -#: ../src/common/check_paths.py:102 +#: ../src/common/check_paths.py:82 ../src/common/check_paths.py:93 +#: ../src/common/check_paths.py:100 #, python-format msgid "%s is file but it should be a directory" msgstr "%s é um arquivo, mas deveria ser um diretório" -#: ../src/common/check_paths.py:85 -#: ../src/common/check_paths.py:96 -#: ../src/common/check_paths.py:103 -#: ../src/common/check_paths.py:110 +#: ../src/common/check_paths.py:83 ../src/common/check_paths.py:94 +#: ../src/common/check_paths.py:101 ../src/common/check_paths.py:109 msgid "Gajim will now exit" msgstr "Gajim sairá agora" -#: ../src/common/check_paths.py:109 +#: ../src/common/check_paths.py:108 #, python-format msgid "%s is directory but should be file" msgstr "%s é um diretório, mas deveria ser um arquivo" -#: ../src/common/check_paths.py:125 +#: ../src/common/check_paths.py:124 #, python-format msgid "creating %s directory" msgstr "criando diretório %s" -#: ../src/common/exceptions.py:35 +#: ../src/common/exceptions.py:32 msgid "pysqlite2 (aka python-pysqlite2) dependency is missing. Exiting..." msgstr "pysqlite2 (aka python-pysqlite2) está faltando. Encerrando..." -#: ../src/common/exceptions.py:43 +#: ../src/common/exceptions.py:40 msgid "Service not available: Gajim is not running, or remote_control is False" -msgstr "Serviço nao disponível: Gajim não está funcionando, ou o remote_control é falso" +msgstr "" +"Serviço nao disponível: Gajim não está funcionando, ou o remote_control é " +"falso" -#: ../src/common/exceptions.py:51 +#: ../src/common/exceptions.py:48 msgid "D-Bus is not present on this machine or python module is missing" msgstr "D-Bus não está presente nesta máquina o módulo python está faltando" -#: ../src/common/exceptions.py:59 +#: ../src/common/exceptions.py:56 msgid "" "Session bus is not available.\n" "Try reading http://trac.gajim.org/wiki/GajimDBus" @@ -4065,49 +4750,90 @@ msgstr "" "Sessão não está disponível.\n" "Tente lendo http://trac.gajim.org/wiki/GajimDBus" -#: ../src/common/config.py:53 +#: ../src/common/config.py:51 msgid "Use DBus and Notification-Daemon to show notifications" msgstr "Use DBus e Notification-Daemon para mostrar notificações" -#: ../src/common/config.py:57 +#: ../src/common/config.py:55 msgid "Time in minutes, after which your status changes to away." msgstr "Minutos, depois do qual seu status mudam a afastado." -#: ../src/common/config.py:58 +#: ../src/common/config.py:56 msgid "Away as a result of being idle" msgstr "Afastado em conseqüência de estar inativo" -#: ../src/common/config.py:60 +#: ../src/common/config.py:58 msgid "Time in minutes, after which your status changes to not available." msgstr "Minutos, depois do qual seu status mudam a nao disponível." -#: ../src/common/config.py:61 +#: ../src/common/config.py:59 msgid "Not available as a result of being idle" msgstr "Não disponível em conseqüência de estar inativo" -#: ../src/common/config.py:88 +#: ../src/common/config.py:77 +msgid "List (space separated) of rows (accounts and groups) that are collapsed" +msgstr "" + +#: ../src/common/config.py:83 +msgid "" +"'always' - print time for every message.\n" +"'sometimes' - print time every print_ichat_every_foo_minutes minute.\n" +"'never' - never print time." +msgstr "" + +#: ../src/common/config.py:84 +msgid "" +"Value of fuzziness from 1 to 4 or 0 to disable fuzzyclock. 1 is the most " +"precise clock, 4 the less precise one." +msgstr "" + +#: ../src/common/config.py:87 msgid "Treat * / _ pairs as possible formatting characters." msgstr "Aproveite * /_ pares como caráteres possíveis do formato. " -#: ../src/common/config.py:89 -msgid "If True, do not remove */_ . So *abc* will be bold but with * * not removed." -msgstr "Se verdadeiro, não remova */_. Assim * ABC * seja negrito(realce) mas com * * não removido." +#: ../src/common/config.py:88 +msgid "" +"If True, do not remove */_ . So *abc* will be bold but with * * not removed." +msgstr "" +"Se verdadeiro, não remova */_. Assim * ABC * seja negrito(realce) mas com * " +"* não removido." + +#: ../src/common/config.py:98 +msgid "" +"Character to add after nickname when using nick completion (tab) in group " +"chat" +msgstr "" + +#: ../src/common/config.py:99 +msgid "" +"Character to propose to add after desired nickname when desired nickname is " +"used by someone else in group chat" +msgstr "" #: ../src/common/config.py:131 msgid "Add * and [n] in roster title?" msgstr "Adicionar * e [n] no arquivo de lista?" #: ../src/common/config.py:132 -msgid "How many lines to remember from previous conversation when a chat tab/window is reopened." -msgstr "Quantas linhas para lembrar da conversação precedente quando uma aba/janela de bate-papo for reaberto." +msgid "" +"How many lines to remember from previous conversation when a chat tab/window " +"is reopened." +msgstr "" +"Quantas linhas para lembrar da conversação precedente quando uma aba/janela " +"de bate-papo for reaberto." #: ../src/common/config.py:133 msgid "How many minutes should last lines from previous conversation last." -msgstr "Quantos minutos devem durar linhas do último precedente da conversação." +msgstr "" +"Quantos minutos devem durar linhas do último precedente da conversação." #: ../src/common/config.py:134 -msgid "Send message on Ctrl+Enter and with Enter make new line (Mirabilis ICQ Client default behaviour)." -msgstr "Enviar a mensagem com Ctrl+Enter e com entram fazem a linha nova (comportamento padrão do cliente ICQ da Mirabilis)." +msgid "" +"Send message on Ctrl+Enter and with Enter make new line (Mirabilis ICQ " +"Client default behaviour)." +msgstr "" +"Enviar a mensagem com Ctrl+Enter e com entram fazem a linha nova " +"(comportamento padrão do cliente ICQ da Mirabilis)." #: ../src/common/config.py:136 msgid "How many lines to store for Ctrl+KeyUP." @@ -4115,28 +4841,51 @@ msgstr "Quantas linhas à armazenar para Ctrl+KeyUP." #: ../src/common/config.py:139 #, python-format -msgid "Either custom url with %s in it where %s is the word/phrase or 'WIKTIONARY' which means use wiktionary." -msgstr "Um ou outro URL costuma vir com o %s nele onde %s é a palvra/frase ou ' em WIKTIONARY ' que significam o uso wiktionary." +msgid "" +"Either custom url with %s in it where %s is the word/phrase or 'WIKTIONARY' " +"which means use wiktionary." +msgstr "" +"Um ou outro URL costuma vir com o %s nele onde %s é a palvra/frase ou ' em " +"WIKTIONARY ' que significam o uso wiktionary." #: ../src/common/config.py:142 msgid "If checked, Gajim can be controlled remotely using gajim-remote." -msgstr "Se verificado, Gajim pode ser remotamente controlado usando gajim-remoto." +msgstr "" +"Se verificado, Gajim pode ser remotamente controlado usando gajim-remoto." + +#: ../src/common/config.py:145 +msgid "" +"When not printing time for every message (print_time==sometimes), print it " +"every x minutes" +msgstr "" #: ../src/common/config.py:146 msgid "Ask before closing a group chat tab/window." msgstr "Perguntar antes de fechar um aba ou janela de conferência." #: ../src/common/config.py:147 -msgid "Always ask before closing group chat tab/window in this space separated list of room jids." -msgstr "Sempre perguntar antes de fechar um aba/janela neste espaço listas de salas separadas por jids." +msgid "" +"Always ask before closing group chat tab/window in this space separated list " +"of room jids." +msgstr "" +"Sempre perguntar antes de fechar um aba/janela neste espaço listas de salas " +"separadas por jids." #: ../src/common/config.py:148 -msgid "Never ask before closing group chat tab/window in this space separated list of room jids." -msgstr "Nunca perguntar antes de fechar uma aba/janela de conferência neste espaço listas de salas separadas por jids." +msgid "" +"Never ask before closing group chat tab/window in this space separated list " +"of room jids." +msgstr "" +"Nunca perguntar antes de fechar uma aba/janela de conferência neste espaço " +"listas de salas separadas por jids." #: ../src/common/config.py:151 -msgid "Overrides the host we send for File Transfer in case of address translation/port forwarding." -msgstr "Cancela o host que nos enviou um transferência de arquivo caso que foi direcionado do endereço tradução/porta." +msgid "" +"Overrides the host we send for File Transfer in case of address translation/" +"port forwarding." +msgstr "" +"Cancela o host que nos enviou um transferência de arquivo caso que foi " +"direcionado do endereço tradução/porta." #: ../src/common/config.py:153 msgid "IEC standard says KiB = 1024 bytes, KB = 1000 bytes." @@ -4147,7 +4896,8 @@ msgid "Show tab when only one conversation?" msgstr "Mostrar aba quando tiver apenas uma bate papo?" #: ../src/common/config.py:162 -msgid "Show tab border if one conversation?" +#, fuzzy +msgid "Show tabbed notebook border in chat windows?" msgstr "Mostrar borda da aba com apenas um bate papo?" #: ../src/common/config.py:163 @@ -4155,246 +4905,322 @@ msgid "Show close button in tab?" msgstr "Mostrar botão de fechar na aba?" #: ../src/common/config.py:176 -msgid "A semicolon-separated list of words that will be highlighted in multi-user chat." -msgstr "Uma lista semicolon-separada das palavras que serão destacadas no bate-papo multi-user." +msgid "" +"A semicolon-separated list of words that will be highlighted in multi-user " +"chat." +msgstr "" +"Uma lista semicolon-separada das palavras que serão destacadas no bate-papo " +"multi-user." #: ../src/common/config.py:177 -msgid "If True, quits Gajim when X button of Window Manager is clicked. This setting is taken into account only if trayicon is used." -msgstr "Se verdadeiro, o Gajim sairá quando o botão sair da janela for clicado. Esta opção só faz sentido quando a opção trayicon está sendo usada." +msgid "" +"If True, quits Gajim when X button of Window Manager is clicked. This " +"setting is taken into account only if trayicon is used." +msgstr "" +"Se verdadeiro, o Gajim sairá quando o botão sair da janela for clicado. Esta " +"opção só faz sentido quando a opção trayicon está sendo usada." #: ../src/common/config.py:178 msgid "If True, Gajim registers for xmpp:// on each startup." msgstr "Se verdadeiro, Gajim registra-se para xmpp:// a cada inicialização." #: ../src/common/config.py:179 -msgid "If True, Gajim will display an icon on each tab containing unread messages. Depending on the theme, this icon may be animated." -msgstr "Se verdadeiro, Gajim mostrará um ícone para cada aba contendo mensagens não lidas. Dependendo do tema, este ícone pode ser animado." +msgid "" +"If True, Gajim will display an icon on each tab containing unread messages. " +"Depending on the theme, this icon may be animated." +msgstr "" +"Se verdadeiro, Gajim mostrará um ícone para cada aba contendo mensagens não " +"lidas. Dependendo do tema, este ícone pode ser animado." #: ../src/common/config.py:180 -msgid "If True, Gajim will display the status message, if not empty, for every contact under the contact name in roster window" -msgstr "Se verdadeiro, Gajim indicará a mensagem de status, se não, esvazía-a, para cada contato sob o nome do contato na janela da lista" +msgid "" +"If True, Gajim will display the status message, if not empty, for every " +"contact under the contact name in roster window" +msgstr "" +"Se verdadeiro, Gajim indicará a mensagem de status, se não, esvazía-a, para " +"cada contato sob o nome do contato na janela da lista" #: ../src/common/config.py:182 -msgid "If True, Gajim will ask for avatar each contact that did not have an avatar last time or has one cached that is too old." -msgstr "Se verdadeiro, Gajim pedirá por avatar cada contato que não teve um avatar ou tem um cache que é velho demais." +msgid "" +"If True, Gajim will ask for avatar each contact that did not have an avatar " +"last time or has one cached that is too old." +msgstr "" +"Se verdadeiro, Gajim pedirá por avatar cada contato que não teve um avatar " +"ou tem um cache que é velho demais." + +#: ../src/common/config.py:183 +#, fuzzy +msgid "" +"If False, Gajim will no longer print status line in chats when a contact " +"changes his or her status and/or his or her status message." +msgstr "" +"Se falso, você verá não mais por muito tempo a linha de status nos bate-" +"papos quando um contato muda seu ou seu status e/ou sua mensagem do status." -#. FIXME: remove you and make it Gajim will not; and/or his or *her* status messages #: ../src/common/config.py:184 -msgid "If False, you will no longer see status line in chats when a contact changes his or her status and/or his status message." -msgstr "Se falso, você verá não mais por muito tempo a linha de status nos bate-papos quando um contato muda seu ou seu status e/ou sua mensagem do status." +msgid "" +"can be \"none\", \"all\" or \"in_and_out\". If \"none\", Gajim will no " +"longer print status line in groupchats when a member changes his or her " +"status and/or his or her status message. If \"all\" Gajim will print all " +"status messages. If \"in_and_out\", gajim will only print FOO enters/leaves " +"room" +msgstr "" + +#: ../src/common/config.py:187 +msgid "Don't show avatar for the transport itself." +msgstr "" #: ../src/common/config.py:189 -msgid "If True and installed GTK+ and PyGTK versions are at least 2.8, make the window flash (the default behaviour in most Window Managers) when holding pending events." -msgstr "Se Verdadeiro e as versões do GTK+ e PyGTK instaladas são menores que 2.8, faz a janela piscar (o comportamento padrão na maioria dos Gerenciadores de Janela) quando esperam eventos pendentes." +msgid "" +"If True and installed GTK+ and PyGTK versions are at least 2.8, make the " +"window flash (the default behaviour in most Window Managers) when holding " +"pending events." +msgstr "" +"Se Verdadeiro e as versões do GTK+ e PyGTK instaladas são menores que 2.8, " +"faz a janela piscar (o comportamento padrão na maioria dos Gerenciadores de " +"Janela) quando esperam eventos pendentes." #: ../src/common/config.py:191 -msgid "Jabberd1.4 does not like sha info when one join a password protected room. Turn this option to False to stop sending sha info in groupchat presences" -msgstr "Jabberd1.4 não trata informações do sha quando entra numa sala protegida por senha. Mude esta opção para Falso para parar de emitir as informações sha em presenças de conferências" +msgid "" +"Jabberd1.4 does not like sha info when one join a password protected room. " +"Turn this option to False to stop sending sha info in groupchat presences" +msgstr "" +"Jabberd1.4 não trata informações do sha quando entra numa sala protegida por " +"senha. Mude esta opção para Falso para parar de emitir as informações sha em " +"presenças de conferências" -#: ../src/common/config.py:193 +#. always, never, peracct, pertype should not be translated +#: ../src/common/config.py:194 msgid "" "Controls the window where new messages are placed.\n" "'always' - All messages are sent to a single window.\n" "'never' - All messages get their own window.\n" "'peracct' - Messages for each account are sent to a specific window.\n" -"'pertype' - Each message type (e.g., chats vs. groupchats) are sent to a specific window. Note, changing this option requires restarting Gajim before the changes will take effect" +"'pertype' - Each message type (e.g., chats vs. groupchats) are sent to a " +"specific window. Note, changing this option requires restarting Gajim before " +"the changes will take effect" msgstr "" "Controlar a janela onde novas mensagens são colocadas.\n" "'sempre' - Todas as mensagens são enviadas para uma única janela.\n" "'nunca' - Todas as mensagens recebem sua própria janela.\n" -"'por ação' - As mensagens para cada conta são enviadas a uma janela específica.'por tipo' - Cada tipo de mensagem (ex. bate-papo vs. conferência) são enviadas para uma janela específica. Nota, esta mudança requer o reinício do Gajim antes que tenham efeito." - -#: ../src/common/config.py:194 -msgid "If False, you will no longer see the avatar in the chat window" -msgstr "Se Falso, você não verá por muito tempo o avatar na janela do bate-papo" +"'por ação' - As mensagens para cada conta são enviadas a uma janela " +"específica.'por tipo' - Cada tipo de mensagem (ex. bate-papo vs. " +"conferência) são enviadas para uma janela específica. Nota, esta mudança " +"requer o reinício do Gajim antes que tenham efeito." #: ../src/common/config.py:195 +msgid "If False, you will no longer see the avatar in the chat window" +msgstr "" +"Se Falso, você não verá por muito tempo o avatar na janela do bate-papo" + +#: ../src/common/config.py:196 msgid "If True, pressing the escape key closes a tab/window" msgstr "Se Verdadeiro, pressionando a tecla escape fecha a aba/janela" -#: ../src/common/config.py:196 +#: ../src/common/config.py:197 msgid "Hides the buttons in group chat window" msgstr "Esconder os botões na janela de conferência" -#: ../src/common/config.py:197 +#: ../src/common/config.py:198 msgid "Hides the buttons in two persons chat window" msgstr "Esconder os botões na janela de conversa para duas pessoas " -#: ../src/common/config.py:198 +#: ../src/common/config.py:199 msgid "Hides the banner in a group chat window" msgstr "Esconder o banner na janela de conferência" -#: ../src/common/config.py:199 +#: ../src/common/config.py:200 msgid "Hides the banner in two persons chat window" msgstr "Esconder o banner na janela de conversa para duas pessoas " -#: ../src/common/config.py:200 +#: ../src/common/config.py:201 msgid "Hides the room occupants list in groupchat window" msgstr "Esconder a lista dos ocupantes da sala na janela da conferência" +#: ../src/common/config.py:202 +msgid "Merge consecutive nickname in chat window" +msgstr "" + +#: ../src/common/config.py:203 +msgid "Indentation when using merge consecutive nickame" +msgstr "" + +#: ../src/common/config.py:204 +msgid "List of colors that will be used to color nicknames in groupchats" +msgstr "" + #. yes, no, ask -#: ../src/common/config.py:233 +#: ../src/common/config.py:237 msgid "Jabberd2 workaround" msgstr "Jabberd2 rodando" -#: ../src/common/config.py:237 -msgid "If checked, Gajim will use your IP and proxies defined in file_transfer_proxies option for file transfer." -msgstr "Se checado, o Gaijm usará seu IP e proxies definidos no file_transfer_proxies, em opções para transferência de arquivos." +#: ../src/common/config.py:241 +msgid "" +"If checked, Gajim will use your IP and proxies defined in " +"file_transfer_proxies option for file transfer." +msgstr "" +"Se checado, o Gaijm usará seu IP e proxies definidos no " +"file_transfer_proxies, em opções para transferência de arquivos." -#: ../src/common/config.py:290 +#: ../src/common/config.py:297 msgid "Sleeping" msgstr "Dormindo" -#: ../src/common/config.py:291 +#: ../src/common/config.py:298 msgid "Back soon" msgstr "Volto logo" -#: ../src/common/config.py:291 +#: ../src/common/config.py:298 msgid "Back in some minutes." msgstr "Volto em alguns minutos." -#: ../src/common/config.py:292 +#: ../src/common/config.py:299 msgid "Eating" msgstr "Comendo" -#: ../src/common/config.py:292 +#: ../src/common/config.py:299 msgid "I'm eating, so leave me a message." msgstr "Eu estou comendo, então deixe-me uma mensagem." -#: ../src/common/config.py:293 +#: ../src/common/config.py:300 msgid "Movie" msgstr "Filme" -#: ../src/common/config.py:293 +#: ../src/common/config.py:300 msgid "I'm watching a movie." msgstr "Estou assistindo um filme." -#: ../src/common/config.py:294 +#: ../src/common/config.py:301 msgid "Working" msgstr "Trabalhando" -#: ../src/common/config.py:294 +#: ../src/common/config.py:301 msgid "I'm working." msgstr "Estou trabalhando." -#: ../src/common/config.py:295 +#: ../src/common/config.py:302 msgid "Phone" msgstr "Telefone" -#: ../src/common/config.py:295 +#: ../src/common/config.py:302 msgid "I'm on the phone." msgstr "Estou no telefone." -#: ../src/common/config.py:296 +#: ../src/common/config.py:303 msgid "Out" msgstr "Estou fora" -#: ../src/common/config.py:296 +#: ../src/common/config.py:303 msgid "I'm out enjoying life" msgstr "Estou fora curtindo a vida" -#: ../src/common/config.py:305 -msgid "Sound to play when a MUC message contains one of the words in muc_highlight_words, or when a MUC message contains your nickname." -msgstr "Som para tocar quando uma mensagem MUC conter uma das palavras no muc_hightlight_words, ou quando uma mensagem MUC conter seu apelido." +#: ../src/common/config.py:312 +msgid "" +"Sound to play when a MUC message contains one of the words in " +"muc_highlight_words, or when a MUC message contains your nickname." +msgstr "" +"Som para tocar quando uma mensagem MUC conter uma das palavras no " +"muc_hightlight_words, ou quando uma mensagem MUC conter seu apelido." -#: ../src/common/config.py:306 -msgid "Sound to play when any MUC message arrives. (This setting is taken into account only if notify_on_all_muc_messages is True)" -msgstr "Som para tocar quando qualquer mensagem MUC chegar. (este ajuste é feito exame no cliente somente se os notify_on_all_muc_messages for verdadeiro)" +#: ../src/common/config.py:313 +msgid "" +"Sound to play when any MUC message arrives. (This setting is taken into " +"account only if notify_on_all_muc_messages is True)" +msgstr "" +"Som para tocar quando qualquer mensagem MUC chegar. (este ajuste é feito " +"exame no cliente somente se os notify_on_all_muc_messages for verdadeiro)" -#: ../src/common/config.py:314 -#: ../src/common/optparser.py:181 +#: ../src/common/config.py:321 ../src/common/optparser.py:185 msgid "green" msgstr "verde" -#: ../src/common/config.py:318 -#: ../src/common/optparser.py:167 +#: ../src/common/config.py:325 ../src/common/optparser.py:171 msgid "grocery" msgstr "mantimento" -#: ../src/common/config.py:322 +#: ../src/common/config.py:329 msgid "human" msgstr "humano" -#: ../src/common/config.py:326 +#: ../src/common/config.py:333 msgid "marine" msgstr "marinho" -#: ../src/common/connection.py:152 +#: ../src/common/connection.py:172 #, python-format msgid "Connection with account \"%s\" has been lost" msgstr "Conexão com a conta \"%s\" foi perdida" -#: ../src/common/connection.py:153 +#: ../src/common/connection.py:173 msgid "To continue sending and receiving messages, you will need to reconnect." -msgstr "Para continuar enviando e recebendo mensagens, você precisará reconectar." +msgstr "" +"Para continuar enviando e recebendo mensagens, você precisará reconectar." -#: ../src/common/connection.py:169 -#: ../src/common/connection.py:195 +#: ../src/common/connection.py:185 ../src/common/connection.py:211 #, python-format msgid "Transport %s answered wrongly to register request." msgstr "Transporte %s respondido errado para registar o pedido." #. wrong answer -#: ../src/common/connection.py:194 +#: ../src/common/connection.py:210 msgid "Invalid answer" msgstr "Resposta inválida" -#: ../src/common/connection.py:348 -#: ../src/common/connection.py:384 -#: ../src/common/connection.py:754 +#: ../src/common/connection.py:397 ../src/common/connection.py:433 +#: ../src/common/connection.py:857 #, python-format msgid "Could not connect to \"%s\"" msgstr "Impossível conectar a \"%s\"" -#: ../src/common/connection.py:362 +#: ../src/common/connection.py:411 #, python-format msgid "Connected to server %s:%s with %s" msgstr "Conectado ao servidor %s:%s com %s" -#: ../src/common/connection.py:385 +#: ../src/common/connection.py:434 msgid "Check your connection or try again later" msgstr "Verifique sua conexão ou tente novamente mais tarde" -#: ../src/common/connection.py:410 +#: ../src/common/connection.py:459 #, python-format msgid "Authentication failed with \"%s\"" msgstr "Falha na autenticação com \"%s\"" -#: ../src/common/connection.py:411 +#: ../src/common/connection.py:460 msgid "Please check your login and password for correctness." msgstr "Por favor, verifique seu login e senha para exatidão." #. We didn't set a passphrase -#: ../src/common/connection.py:487 +#: ../src/common/connection.py:573 msgid "OpenPGP passphrase was not given" msgstr "Palavra-chave do OpenPGP não foi recebida" #. %s is the account name here -#: ../src/common/connection.py:489 +#: ../src/common/connection.py:575 #, python-format msgid "You will be connected to %s without OpenPGP." msgstr "Você será conectado ao %s sem OpenPGP." #. do not show I'm invisible! -#: ../src/common/connection.py:526 +#: ../src/common/connection.py:612 msgid "invisible" msgstr "invisível" -#: ../src/common/connection.py:527 +#: ../src/common/connection.py:613 msgid "offline" msgstr "desconectado" -#: ../src/common/connection.py:528 +#: ../src/common/connection.py:614 #, python-format msgid "I'm %s" msgstr "Eu estou %s" #. we're not english -#: ../src/common/connection.py:611 +#: ../src/common/connection.py:699 msgid "[This message is encrypted]" msgstr "[Esta mensagem está criptografada]" -#: ../src/common/connection.py:649 +#: ../src/common/connection.py:742 #, python-format msgid "" "Subject: %s\n" @@ -4403,236 +5229,322 @@ msgstr "" "Assunto: %s\n" "%s" -#: ../src/common/connection.py:699 +#: ../src/common/connection.py:795 ../src/common/connection_handlers.py:1511 msgid "I would like to add you to my roster." msgstr "Eu gostaria de adiciona-lo à minha lista." -#: ../src/common/helpers.py:103 +#: ../src/common/connection_handlers.py:49 +#, fuzzy +msgid "Unable to load idle module" +msgstr "Impossível ingressar na sala" + +#: ../src/common/connection_handlers.py:581 +#, python-format +msgid "Registration information for transport %s has not arrived in time" +msgstr "A informação do registo para o transporte %s não chegou a tempo" + +#. password required to join +#. we are banned +#. room does not exist +#: ../src/common/connection_handlers.py:1450 +#: ../src/common/connection_handlers.py:1453 +#: ../src/common/connection_handlers.py:1456 +#: ../src/common/connection_handlers.py:1459 +#: ../src/common/connection_handlers.py:1462 +#: ../src/common/connection_handlers.py:1465 +#: ../src/common/connection_handlers.py:1473 +msgid "Unable to join room" +msgstr "Impossível ingressar na sala" + +#: ../src/common/connection_handlers.py:1451 +msgid "A password is required to join this room." +msgstr "Uma senha é requerida para entrar nesta sala." + +#: ../src/common/connection_handlers.py:1454 +msgid "You are banned from this room." +msgstr "Você está banido desta sala." + +#: ../src/common/connection_handlers.py:1457 +msgid "Such room does not exist." +msgstr "Tal sala não existe." + +#: ../src/common/connection_handlers.py:1460 +msgid "Room creation is restricted." +msgstr "A criação de sala é restrita." + +#: ../src/common/connection_handlers.py:1463 +msgid "Your registered nickname must be used." +msgstr "Seu nickname registado deve ser usado." + +#: ../src/common/connection_handlers.py:1466 +msgid "You are not in the members list." +msgstr "Você não está na lista de membros." + +#: ../src/common/connection_handlers.py:1474 +msgid "" +"Your desired nickname is in use or registered by another occupant.\n" +"Please specify another nickname below:" +msgstr "" +"Seu nickname desejado está em uso ou registado por um outro usuário.\n" +" Por favor, especifique um outro nickname abaixo:" + +#. BE CAREFUL: no con.updateRosterItem() in a callback +#: ../src/common/connection_handlers.py:1519 +#, python-format +msgid "we are now subscribed to %s" +msgstr "nós estamos agora inscritos para %s" + +#: ../src/common/connection_handlers.py:1521 +#, python-format +msgid "unsubscribe request from %s" +msgstr "Remoção de Inscrição solicitada por %s" + +#: ../src/common/connection_handlers.py:1523 +#, python-format +msgid "we are now unsubscribed from %s" +msgstr "nós estamos agora sem inscrição para %s" + +#: ../src/common/connection_handlers.py:1680 +#, fuzzy, python-format +msgid "" +"JID %s is not RFC compliant. It will not be added to your roster. Use roster " +"management tools such as http://jru.jabberstudio.org/ to remove it" +msgstr "" +"O Jid %s não é uma compilação da RFC. Não se adicionará a sua lista. Use " +"ferramentas de gerência da lista como http://jru.jabberstudio.org/ para " +"removê-lo" + +#: ../src/common/helpers.py:100 msgid "Invalid character in username." msgstr "Caracter inválido no nome do usuário" -#: ../src/common/helpers.py:108 +#: ../src/common/helpers.py:105 msgid "Server address required." msgstr "Endereço do servidor é requerido." -#: ../src/common/helpers.py:113 +#: ../src/common/helpers.py:110 msgid "Invalid character in hostname." msgstr "Caracter inválido no nome do host" -#: ../src/common/helpers.py:119 +#: ../src/common/helpers.py:116 msgid "Invalid character in resource." msgstr "Caracter inválido no recurso." #. GiB means gibibyte -#: ../src/common/helpers.py:159 +#: ../src/common/helpers.py:156 #, python-format msgid "%s GiB" msgstr "%s GiB" #. GB means gigabyte -#: ../src/common/helpers.py:162 +#: ../src/common/helpers.py:159 #, python-format msgid "%s GB" msgstr "%s GB" #. MiB means mibibyte -#: ../src/common/helpers.py:166 +#: ../src/common/helpers.py:163 #, python-format msgid "%s MiB" msgstr "%s MiB" #. MB means megabyte -#: ../src/common/helpers.py:169 +#: ../src/common/helpers.py:166 #, python-format msgid "%s MB" msgstr "%s MB" #. KiB means kibibyte -#: ../src/common/helpers.py:173 +#: ../src/common/helpers.py:170 #, python-format msgid "%s KiB" msgstr "%s KiB" #. KB means kilo bytes -#: ../src/common/helpers.py:176 +#: ../src/common/helpers.py:173 #, python-format msgid "%s KB" msgstr "%s KB" #. B means bytes -#: ../src/common/helpers.py:179 +#: ../src/common/helpers.py:176 #, python-format msgid "%s B" msgstr "%s B" -#: ../src/common/helpers.py:189 +#: ../src/common/helpers.py:205 msgid "_Busy" msgstr "_Ocupado" -#: ../src/common/helpers.py:191 +#: ../src/common/helpers.py:207 msgid "Busy" msgstr "Ocupado" -#: ../src/common/helpers.py:194 +#: ../src/common/helpers.py:210 msgid "_Not Available" msgstr "_Não Disponível" -#: ../src/common/helpers.py:196 +#: ../src/common/helpers.py:212 msgid "Not Available" msgstr "Não Disponível" -#: ../src/common/helpers.py:199 +#: ../src/common/helpers.py:215 msgid "_Free for Chat" msgstr "Livre para _Conversa" -#: ../src/common/helpers.py:201 +#: ../src/common/helpers.py:217 msgid "Free for Chat" msgstr "Livre para Conversa" -#: ../src/common/helpers.py:204 +#: ../src/common/helpers.py:220 msgid "_Available" msgstr "Dis_ponível" -#: ../src/common/helpers.py:206 +#: ../src/common/helpers.py:222 msgid "Available" msgstr "Disponível" -#: ../src/common/helpers.py:208 +#: ../src/common/helpers.py:224 msgid "Connecting" msgstr "Conectando" -#: ../src/common/helpers.py:211 +#: ../src/common/helpers.py:227 msgid "A_way" msgstr "_Afastado" -#: ../src/common/helpers.py:213 +#: ../src/common/helpers.py:229 msgid "Away" msgstr "Afastado" -#: ../src/common/helpers.py:216 +#: ../src/common/helpers.py:232 msgid "_Offline" msgstr "_Desconectado" -#: ../src/common/helpers.py:218 +#: ../src/common/helpers.py:234 msgid "Offline" msgstr "Desconectado" -#: ../src/common/helpers.py:221 +#: ../src/common/helpers.py:237 msgid "_Invisible" msgstr "_Invisível" -#: ../src/common/helpers.py:223 -msgid "Invisible" -msgstr "Invisível" - -#: ../src/common/helpers.py:227 +#: ../src/common/helpers.py:243 msgid "?contact has status:Unknown" msgstr "?contato tem status:Desconhecido" -#: ../src/common/helpers.py:229 +#: ../src/common/helpers.py:245 msgid "?contact has status:Has errors" msgstr "?contato tem status:Com erros" -#: ../src/common/helpers.py:234 +#: ../src/common/helpers.py:250 msgid "?Subscription we already have:None" msgstr "?Inscrição existente:Nenhuma" -#: ../src/common/helpers.py:236 +#: ../src/common/helpers.py:252 msgid "To" msgstr "Para" -#: ../src/common/helpers.py:238 +#: ../src/common/helpers.py:254 msgid "From" msgstr "De" -#: ../src/common/helpers.py:240 +#: ../src/common/helpers.py:256 msgid "Both" msgstr "Ambos" -#: ../src/common/helpers.py:248 +#: ../src/common/helpers.py:264 msgid "?Ask (for Subscription):None" msgstr "?Pergunta (para Inscrição):Nenhuma" -#: ../src/common/helpers.py:250 +#: ../src/common/helpers.py:266 msgid "Subscribe" msgstr "Inscrever" -#: ../src/common/helpers.py:259 +#: ../src/common/helpers.py:275 msgid "?Group Chat Contact Role:None" msgstr "?Regra do Contato para Conversa em Grupo:Nenhuma" -#: ../src/common/helpers.py:262 +#: ../src/common/helpers.py:278 msgid "Moderators" msgstr "Moderadores" -#: ../src/common/helpers.py:264 +#: ../src/common/helpers.py:280 msgid "Moderator" msgstr "Moderador" -#: ../src/common/helpers.py:267 +#: ../src/common/helpers.py:283 msgid "Participants" msgstr "Participantes" -#: ../src/common/helpers.py:269 +#: ../src/common/helpers.py:285 msgid "Participant" msgstr "Participante" -#: ../src/common/helpers.py:272 +#: ../src/common/helpers.py:288 msgid "Visitors" msgstr "Visitantes" -#: ../src/common/helpers.py:274 +#: ../src/common/helpers.py:290 msgid "Visitor" msgstr "Visitante" -#: ../src/common/helpers.py:310 +#: ../src/common/helpers.py:326 msgid "is paying attention to the conversation" msgstr "está prestando a atenção na conversa" -#: ../src/common/helpers.py:312 +#: ../src/common/helpers.py:328 msgid "is doing something else" msgstr "está fazendo outra coisa" -#: ../src/common/helpers.py:314 +#: ../src/common/helpers.py:330 msgid "is composing a message..." msgstr "está escrevendo uma mensagem..." #. paused means he or she was compoing but has stopped for a while -#: ../src/common/helpers.py:317 +#: ../src/common/helpers.py:333 msgid "paused composing a message" msgstr "pausa na digitação da mensagem" -#: ../src/common/helpers.py:319 +#: ../src/common/helpers.py:335 msgid "has closed the chat window or tab" msgstr "fechou a janela de conversa ou aba" #. we talk about a file -#: ../src/common/optparser.py:62 +#: ../src/common/optparser.py:60 #, python-format msgid "error: cannot open %s for reading" msgstr "erro: impossível abrir %s para leitura" -#: ../src/common/optparser.py:167 +#: ../src/common/optparser.py:171 msgid "gtk+" msgstr "gtk+" -#: ../src/common/optparser.py:176 -#: ../src/common/optparser.py:177 +#: ../src/common/optparser.py:180 ../src/common/optparser.py:181 msgid "cyan" msgstr "ciano" +#~ msgid "Automatically authorize contact" +#~ msgstr "Autorizar automaticamente os contatos" + +#~ msgid "Send File" +#~ msgstr "Enviar arquivo" + +#~ msgid "Underline" +#~ msgstr "Sublinhar" + #~ msgid "Would you like to overwrite it?" #~ msgstr "Você gostaria de sobreescrevê-lo?" + #~ msgid "_Join New Room..." #~ msgstr "_Ingressar Nova Sala..." + #~ msgid "Usage: /%s, sets the groupchat window to compact mode." #~ msgstr "Uso: /%s, configura a janela de conferência para modo compacto." #, fuzzy #~ msgid "Please modify your special notification below" #~ msgstr "Por favor escolha uma das opções abaixo:" -#~ msgid "Ad_vanced Actions" -#~ msgstr "_Ações Avançadas" + #~ msgid "Delete Message of the Day" #~ msgstr "Deletar Mensagem do Dia" @@ -4643,147 +5555,147 @@ msgstr "ciano" #, fuzzy #~ msgid "I want to listen to:" #~ msgstr "%s quer te enviar um arquivo:" + #~ msgid "Send _New Message..." #~ msgstr "Enviar _nova Mensagem..." + #~ msgid "Set Message of the Day" #~ msgstr "Configurar Mensagem do Dia" + #~ msgid "Update Message of the Day" #~ msgstr "Atualiza Mensagem do Dia" + #~ msgid "_XML Console..." #~ msgstr "Console _XML..." + #~ msgid "Choose Avatar" #~ msgstr "_Escolha o Avatar" + #~ msgid "Use compact view when you open a chat window" #~ msgstr "Usar visão compacta quando você abre a janela de bate-papo" + #~ msgid "Use compact view when you open a group chat window" #~ msgstr "Use a vista compacta quando você abre uma janela de conferência" + #~ msgid "plain" #~ msgstr "plano" + #~ msgid "Send" #~ msgstr "Enviar" + #~ msgid "%(nickname)s in room %(room_name)s has sent you a new message." #~ msgstr "%(nickname)s na sala %(room_name)s lhe enviou uma nova mensagem." + #~ msgid "%s has sent you a new message." #~ msgstr "%s lhe enviou uma nova mensagem." #, fuzzy #~ msgid "GUI Migration failed" #~ msgstr "Publicação do vCard falhou" + #~ msgid "Logs have been successfully migrated to the database." #~ msgstr "Os logs foram migrados com sucesso à base de dados." + #~ msgid "If checked, Gajim will also have a trayicon" #~ msgstr "Se marcado, o Gajim também terá um ícone de bandeja" + #~ msgid "_Online Users" #~ msgstr "Usuários C_onectados" #, fuzzy #~ msgid "Start Chat with Contact" #~ msgstr "Iniciar uma conferência com a conta %s" + #~ msgid "All contacts in this group are offline or have errors" #~ msgstr "Todos os contatos deste grupo estão desconectados ou existem erros" + #~ msgid "Size: " #~ msgstr "Tamanho: " + #~ msgid "Session bus is not available" #~ msgstr "Sessão bus não está disponível" -#, fuzzy -#~ msgid "Unable to load idle module" -#~ msgstr "Impossível ingressar na sala" -#~ msgid "Unable to join room" -#~ msgstr "Impossível ingressar na sala" -#~ msgid "A password is required to join this room." -#~ msgstr "Uma senha é requerida para entrar nesta sala." -#~ msgid "You are banned from this room." -#~ msgstr "Você está banido desta sala." -#~ msgid "Such room does not exist." -#~ msgstr "Tal sala não existe." -#~ msgid "Room creation is restricted." -#~ msgstr "A criação de sala é restrita." -#~ msgid "Your registered nickname must be used." -#~ msgstr "Seu nickname registado deve ser usado." -#~ msgid "You are not in the members list." -#~ msgstr "Você não está na lista de membros." -#~ msgid "" -#~ "Your desired nickname is in use or registered by another occupant.\n" -#~ "Please specify another nickname below:" -#~ msgstr "" -#~ "Seu nickname desejado está em uso ou registado por um outro usuário.\n" -#~ " Por favor, especifique um outro nickname abaixo:" -#~ msgid "we are now subscribed to %s" -#~ msgstr "nós estamos agora inscritos para %s" -#~ msgid "unsubscribe request from %s" -#~ msgstr "Remoção de Inscrição solicitada por %s" -#~ msgid "we are now unsubscribed from %s" -#~ msgstr "nós estamos agora sem inscrição para %s" - -#, fuzzy -#~ msgid "" -#~ "JID %s is not RFC compliant. It will not be added to your roster. Use " -#~ "roster management tools such as http://jru.jabberstudio.org/ to remove it" -#~ msgstr "" -#~ "O Jid %s não é uma compilação da RFC. Não se adicionará a sua lista. Use " -#~ "ferramentas de gerência da lista como http://jru.jabberstudio.org/ para " -#~ "removê-lo" -#~ msgid "Registration information for transport %s has not arrived in time" -#~ msgstr "A informação do registo para o transporte %s não chegou a tempo" #~ msgid "Sound" #~ msgstr "Som" + #~ msgid "Text" #~ msgstr "Texto" + #~ msgid "Image" #~ msgstr "Imagem" + #~ msgid "From %s" #~ msgstr "De %s" + #~ msgid "To %s" #~ msgstr "Para %s" + #~ msgid "You have been invited to the %(room_jid)s room by %(contact_jid)s" #~ msgstr "Você foi convidado para a sala %(room_jid)s por %(contact_jid)s" + #~ msgid "Manage Emoticons" #~ msgstr "Gerenciar Emoticons" + #~ msgid "Or choose a preset message:" #~ msgstr "Ou escolha uma mensagem padrão:" + #~ msgid "Use _emoticons" #~ msgstr "Usar _emoticons" + #~ msgid "_Set Image..." #~ msgstr "_Configurar Imagem" + #~ msgid "Switch to %s" #~ msgstr "Alternar para %s" + #~ msgid "using account " #~ msgstr "usando conta" + #~ msgid "The filesize of image \"%s\" is too large" #~ msgstr "O arquivo de imagem \"%s\" é muito grande" + #~ msgid "The file must not be more than 32 kilobytes." #~ msgstr "O arquivo não deve ter mais do que 32 kilobytes." + #~ msgid "Timeout" #~ msgstr "Tempo excedido" + #~ msgid "A protocol error has occured:" #~ msgstr "Um erro de protocolo ocorreu:" + #~ msgid "account: " #~ msgstr "conta: " + #~ msgid "Are you sure you want to leave rooms \"%s\"?" #~ msgstr "Você tem certeza que quer deixar estas salas \"%s\"?" + #~ msgid "If you close this window, you will be disconnected from these rooms." #~ msgstr "Se você fechar esta janela, você será desconectado destas salas." + #~ msgid "Activate/Disable notification for when a file transfer is complete" #~ msgstr "" #~ "Ativar/Desativar notificação quando um transferência de arquivo estiver " #~ "completa" + #~ msgid "Removing selected file transfer" #~ msgstr "Removendo transferência de arquivo selecionada" + #~ msgid "Stoping selected file transfer" #~ msgstr "Parando a transferência de arquivo selecionada" -#~ msgid "Use a single chat window with _tabs" -#~ msgstr "_Usar uma única janela de conversa com abas" + #~ msgid "" #~ "If you close this tab and you have history disabled, the message will be " #~ "lost." #~ msgstr "" #~ "Se você fechar esta aba e o histórico estiver desabilitado, a mensagem " #~ "será perdida." + #~ msgid "Cannot remove last group" #~ msgstr "Não é possível remover o último grupo" + #~ msgid "At least one contact group must be present." #~ msgstr "Ao menos um grupo do contato deve estar presente." + #~ msgid "" #~ "pysqlite2 (aka python-pysqlite2) dependency is missing. After you install " #~ "pysqlite3, if you want to migrate your logs to the new database, please " @@ -4793,26 +5705,35 @@ msgstr "ciano" #~ "instala pysqlite3, se você quiser migrar seus registros à base de dados " #~ "nova, leia por favor: http://trac.gajim.org/wiki/MigrateLogToDot9DB que " #~ "retira..." + #~ msgid "Image is too big" #~ msgstr "Imagem é muito grande" + #~ msgid "" #~ "Image for emoticon has to be less than or equal to 24 pixels in width and " #~ "24 in height." #~ msgstr "" #~ "Imagem para emoticon tem que ser menor ou igual a 24 pixels em largura e " #~ "24 em altura." + #~ msgid "Changes in latest version" #~ msgstr "Mudanças na última versão" + #~ msgid "Check for new _version on Gajim startup" #~ msgstr "Verificar por uma nova versão ao iniciar" + #~ msgid "Log history" #~ msgstr "Histórico dos registros" + #~ msgid "New version of Gajim available" #~ msgstr "Nova versão do Gajim está disponível" + #~ msgid "Open Download Page" #~ msgstr "Abrir Página para Download" + #~ msgid "Service not available" #~ msgstr "Serviço não disponível" + #~ msgid "Session bus is not available." #~ msgstr "Sessão bus não está disponível." @@ -4823,32 +5744,38 @@ msgstr "ciano" #, fuzzy #~ msgid "with account " #~ msgstr "conta: " + #~ msgid "Chat with" #~ msgstr "Conversa com" #, fuzzy #~ msgid "Send New Message" #~ msgstr "Nova Mensagem" + #~ msgid "as %s" #~ msgstr "como %s" + #~ msgid "as " #~ msgstr "como " #, fuzzy #~ msgid "Send _New Message" #~ msgstr "_Nova Mensagem" + #~ msgid "Re_quest Authorization from" #~ msgstr "Solicitar Autorização de" + #~ msgid "Send Authorization to" #~ msgstr "Enviar Autorização para" + #~ msgid "Log" #~ msgstr "Registros" + #~ msgid "Log presences in _contact's log file" #~ msgstr "Registrar presenças no arquivo de log do contato" + #~ msgid "Log presences in an _external file" #~ msgstr "Registrar presenças em um arquivo _externo" -#~ msgid "Unable to write file in %s" -#~ msgstr "Impossível gravar o arquivo em %s" #, fuzzy #~ msgid "" @@ -4858,6 +5785,7 @@ msgstr "ciano" #~ "Conta foi adicionada com sucesso.\n" #~ " Você pode configurar opções avançadas em \"Edit->Accounts\" na janela " #~ "principal. " + #~ msgid "" #~ "When a new message is received which is not from a contact already in a " #~ "chat window, the three following actions may happen in order for you to " @@ -4866,16 +5794,22 @@ msgstr "ciano" #~ "Quando uma mensagem nova é recebida que não seja de um contato que já " #~ "esteja numa janela de bate-papo, as três ações seguintes podem acontecer " #~ "para que você seja informado sobre ela" + #~ msgid "_Earliest" #~ msgstr "_Primeiro" + #~ msgid "_Latest" #~ msgstr "Ú_ltimo" + #~ msgid "_Previous" #~ msgstr "_Anterior" + #~ msgid "%s is now %s: %s" #~ msgstr "%s agora está %s: %s" + #~ msgid "Allow controlling Gajim via D-Bus service." #~ msgstr "Permitir controlar o Gajim via serviço D-Bus." + #~ msgid "" #~ "\n" #~ "\n" @@ -4899,12 +5833,16 @@ msgstr "ciano" #~ "Conta foi adicionada com sucesso.\n" #~ " Você pode configurar opções avançadas em \"Edit->Accounts\" na janela " #~ "principal. " + #~ msgid "Error:" #~ msgstr "Erro:" + #~ msgid "Service" #~ msgstr "Serviço" + #~ msgid "Node" #~ msgstr "Nó" + #~ msgid "" #~ "Your new account has been created and added to your gajim configuration.\n" #~ "You can set advanced account options using \"Edit->Accounts\" in the main " @@ -4913,59 +5851,77 @@ msgstr "ciano" #~ "Sua nova conta foi criada e adicionada as suas configurações do gajim.\n" #~ "Você pode configurar opções avançadas em \"Edit->Accounts\" na janela " #~ "principal. " + #~ msgid "You need to enter a valid server address to add an account." #~ msgstr "" #~ "Você deve entrar com um endereço de servidor válido para registrar uma " #~ "nova conta." + #~ msgid "Contact names must be of the form \"user@servername\"." #~ msgstr "" #~ "Nomes de contatos devem estar no formato \"usuário@nomedoservidor\"." + #~ msgid "Invalid contact ID" #~ msgstr "ID de contato inválido" + #~ msgid "Contact ID must be of the form \"username@servername\"." #~ msgstr "ID de contato deve estar no formato \"usuário@nomedoservidor\"." + #~ msgid "Account registration successful" #~ msgstr "Registro da conta efetuado com sucesso" + #~ msgid "The account \"%s\" has been registered with the Jabber server." #~ msgstr "A conta \"%s\" foi registrada no servidor Jabber" + #~ msgid "theme_name" #~ msgstr "nome_do_tema" + #~ msgid "Edit" #~ msgstr "Editar" + #~ msgid "Please fill in the data for your existing account" #~ msgstr "Por favor preencha os dados para sua conta existente" + #~ msgid "Check if you want to register for a new jabber account" #~ msgstr "Marque esta opção se você quer registrar uma nova conta jabber" + #~ msgid "Click to get contact's extended information" #~ msgstr "Clique para informações completas do contato" + #~ msgid "Enter your message:" #~ msgstr "Entre com sua mensagem:" + #~ msgid "_Compact View" #~ msgstr "Visão _Compacta" -#~ msgid "_Nickname:" -#~ msgstr "_Apelido:" + #~ msgid "_Refresh" #~ msgstr "_Atualizar" + #~ msgid "_Register new account" #~ msgstr "_Registrar nova conta" + #~ msgid "Gajim - a GTK+ Jabber client" #~ msgstr "Gajim - Um cliente jabber GTK" + #~ msgid "You just received a new message in room \"%s\"" #~ msgstr "Você acabou de receber uma nova mensagem na sala \"%s\"" + #~ msgid "" #~ "If you close this window and you have history disabled, this message will " #~ "be lost." #~ msgstr "" #~ "Se você fechar esta janela e o histórico estiver desabilitado, esta " #~ "mensagem será perdida." + #~ msgid "New _Room" #~ msgstr "Nova _Sala" -#~ msgid "Account:" -#~ msgstr "Conta:" + #~ msgid "Always use compact _view" #~ msgstr "Sempre usar visão _compacta" + #~ msgid "Banner:" #~ msgstr "Faixa:" + #~ msgid "" #~ "If checked, all chat and group chat windows will have the information " #~ "area in the top and the buttons area in the bottom hidden. You can quick " @@ -4976,34 +5932,47 @@ msgstr "ciano" #~ "informação no alto e a área dos botões embaixo escondidas. Você pode " #~ "rapidamente alternar para a vista compacta com Alt+C. NOTA: O último " #~ "estado que você deixa uma janela/aba não é permanente" + #~ msgid "Inactivate account" #~ msgstr "Conta inativa" + #~ msgid "Join _Group Chat..." #~ msgstr "_Ingressar numa Conferência..." + #~ msgid "Po_sition:" #~ msgstr "Cargo:" + #~ msgid "Show roster window on Gajim startup" #~ msgstr "Mostrar a janela da lista de contatos na inicialização da aplicação" + #~ msgid "_Join Group Chat" #~ msgstr "_Ingressar na Conferência" + #~ msgid "_Service Discovery" #~ msgstr "_Busca de Serviços" + #~ msgid "_Service Discovery..." #~ msgstr "_Busca de Serviços..." + #~ msgid "error appeared while processing xmpp:" #~ msgstr "ocorreu um erro enquanto processava xmpp:" + #~ msgid "" #~ "Cancels the selected file transfer. If there is an incomplete file, kept " #~ "in the file system it will be removed. This operation is not reversable" #~ msgstr "" #~ "Cancelar a transferência de arquivo selecionada. Se existir um arquivo " #~ "incompleto, ele será removido. Esta operação não é reversível." + #~ msgid "Chan_ge" #~ msgstr "_Mudar" + #~ msgid "Unknown type %s " #~ msgstr "Tipo desconhecido %s" + #~ msgid "Gajim disconnected you from %s" #~ msgstr "Gajim desconectou você de %s" + #~ msgid "" #~ "%s seconds have passed and server did not reply to our keep-alive. If you " #~ "believe such disconnection should not have happened, you can disable " @@ -5012,4 +5981,3 @@ msgstr "ciano" #~ "%s segundos se passaram e o servidor não respondeu ao nosso keep-alive. " #~ "Se você acredita em tal desconexão não deve ter acontecido, você pode " #~ "desabilitar o envio de pacotes keep-alive modificando esta conta." - diff --git a/po/ru.po b/po/ru.po index 8074ce320..6193824a9 100644 --- a/po/ru.po +++ b/po/ru.po @@ -6,23 +6,24 @@ # This file is distributed under the same license as the gajim package. # # -#: ../src/gajim-remote.py:204 ../src/gajim-remote.py:211 # , 2005. # , 2005. # Yakov Bezrukov , 2005, 2006. # Yakov Bezrukov , 2005. +#: ../src/gajim-remote.py:218 ../src/gajim-remote.py:225 msgid "" msgstr "" "Project-Id-Version: ru\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2006-04-13 12:52+0200\n" -"PO-Revision-Date: 2006-04-23 22:38+0700\n" -"Last-Translator: Yakov Bezrukov \n" +"POT-Creation-Date: 2006-07-04 00:03+0200\n" +"PO-Revision-Date: 2006-06-09 15:18+0300\n" +"Last-Translator: Alex V. Myltsev \n" "Language-Team: РуÑÑкий \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" +"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" "X-Generator: KBabel 1.11.2\n" #: ../gajim.desktop.in.h:1 @@ -37,30 +38,2104 @@ msgstr "Клиент Ð´Ð»Ñ Ð¼Ð³Ð½Ð¾Ð²ÐµÐ½Ð½Ñ‹Ñ… Ñообщений Gajim" msgid "Jabber IM Client" msgstr "Jabber-клиент на GTK+" -#: ../src/advanced.py:71 -msgid "Preference Name" -msgstr "Ðазвание Опции" +#: ../data/glade/account_context_menu.glade.h:1 +msgid "Send Single _Message..." +msgstr "Отправить Одиночное _Сообщение..." -#: ../src/advanced.py:77 +#: ../data/glade/account_context_menu.glade.h:2 +msgid "_Add Contact..." +msgstr "_Добавить контакт..." + +#: ../data/glade/account_context_menu.glade.h:3 +msgid "_Discover Services..." +msgstr "_ПроÑмотреть ÑервиÑÑ‹..." + +#: ../data/glade/account_context_menu.glade.h:4 +#: ../data/glade/roster_window.glade.h:15 +#: ../data/glade/systray_context_menu.glade.h:5 +msgid "_Group Chat" +msgstr "_Комната" + +#: ../data/glade/account_context_menu.glade.h:5 +msgid "_Modify Account..." +msgstr "_Редактировать учетную запиÑÑŒ..." + +#: ../data/glade/account_context_menu.glade.h:6 +msgid "_Status" +msgstr "_СтатуÑ" + +#: ../data/glade/account_creation_wizard_window.glade.h:1 +msgid "" +"Account is being created\n" +"\n" +"Please wait..." +msgstr "" +"Была Ñоздана ÑƒÑ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ \n" +"\n" +"ПожалуйÑта подождите..." + +#: ../data/glade/account_creation_wizard_window.glade.h:4 +msgid "Please choose one of the options below:" +msgstr "ПожалуйÑта, выберите одну из опций из ÑпиÑка ниже:" + +#: ../data/glade/account_creation_wizard_window.glade.h:5 +msgid "Please fill in the data for your new account" +msgstr "ПожалуйÑта, заполните данные Ð´Ð»Ñ Ð²Ð°ÑˆÐµÐ¹ новой учетной запиÑи" + +#: ../data/glade/account_creation_wizard_window.glade.h:6 +msgid "Click to see features (like MSN, ICQ transports) of jabber servers" +msgstr "" +"Щелкните, чтобы проÑмотреть ÑервиÑÑ‹ предоÑтавлÑемые jabber Ñервером " +"(например, MSN, ICQ транÑпорты)" + +#: ../data/glade/account_creation_wizard_window.glade.h:7 +msgid "Connect when I press Finish" +msgstr "ПодключитьÑÑ ÐºÐ¾Ð³Ð´Ð° Ñ Ð½Ð°Ð¶Ð¼Ñƒ Конец" + +#: ../data/glade/account_creation_wizard_window.glade.h:8 +msgid "Gajim: Account Creation Wizard" +msgstr "Gajim: маÑтер ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ ÑƒÑ‡ÐµÑ‚Ð½Ð¾Ð¹ запиÑи" + +#: ../data/glade/account_creation_wizard_window.glade.h:9 +msgid "I already have an account I want to use" +msgstr "У Ð¼ÐµÐ½Ñ ÑƒÐ¶Ðµ еÑÑ‚ÑŒ ÑƒÑ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ, которую Ñ Ñ…Ð¾Ñ‡Ñƒ иÑпользовать" + +#: ../data/glade/account_creation_wizard_window.glade.h:10 +msgid "I want to _register for a new account" +msgstr "Я хочу _зарегиÑтрировать новую учетную запиÑÑŒ" + +#: ../data/glade/account_creation_wizard_window.glade.h:11 +#: ../data/glade/account_modification_window.glade.h:18 +msgid "If checked, Gajim will remember the password for this account" +msgstr "ЕÑли отмечено, то Gajim запомнит пароль учетной запиÑи" + +#: ../data/glade/account_creation_wizard_window.glade.h:12 +#: ../data/glade/manage_proxies_window.glade.h:6 +msgid "Pass_word:" +msgstr "П_ароль" + +#: ../data/glade/account_creation_wizard_window.glade.h:13 +#: ../data/glade/account_modification_window.glade.h:37 +msgid "Save pass_word" +msgstr "Сохранить _пароль" + +#: ../data/glade/account_creation_wizard_window.glade.h:14 +msgid "Servers Features" +msgstr "Параметры Ñервера" + +#: ../data/glade/account_creation_wizard_window.glade.h:15 +msgid "Set my profile when I connect" +msgstr "УÑтановить мой профиль при подÑоединении" + +#: ../data/glade/account_creation_wizard_window.glade.h:16 +msgid "" +"You need to have an account in order to connect\n" +"to the Jabber network." +msgstr "" +"Ðеобходимо Ñоздать учетную запиÑÑŒ Ð´Ð»Ñ Ð¿Ñ€Ð¸ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ \n" +"к Jabber Ñети." + +#: ../data/glade/account_creation_wizard_window.glade.h:18 +msgid "Your JID:" +msgstr "Ваш JID:" + +#: ../data/glade/account_creation_wizard_window.glade.h:19 +#: ../data/glade/roster_window.glade.h:10 +msgid "_Advanced" +msgstr "_Дополнительные дейÑтвиÑ" + +#: ../data/glade/account_creation_wizard_window.glade.h:20 +msgid "_Finish" +msgstr "_Закончить" + +#: ../data/glade/account_creation_wizard_window.glade.h:21 +#: ../data/glade/manage_proxies_window.glade.h:9 +msgid "_Host:" +msgstr "_ХоÑÑ‚: " + +#: ../data/glade/account_creation_wizard_window.glade.h:22 +#: ../data/glade/account_modification_window.glade.h:45 +msgid "_Password:" +msgstr "_Пароль:" + +#: ../data/glade/account_creation_wizard_window.glade.h:23 +#: ../data/glade/manage_proxies_window.glade.h:10 +msgid "_Port:" +msgstr "_Порт:" + +#: ../data/glade/account_creation_wizard_window.glade.h:24 +msgid "_Retype Password:" +msgstr "_Пароль Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð²ÐµÑ€ÐºÐ¸:" + +#: ../data/glade/account_creation_wizard_window.glade.h:25 +msgid "_Server:" +msgstr "_Сервер:" + +#: ../data/glade/account_creation_wizard_window.glade.h:26 +msgid "_Use proxy" +msgstr "_ИÑпользовать прокÑи" + +#: ../data/glade/account_creation_wizard_window.glade.h:27 +#: ../data/glade/manage_proxies_window.glade.h:11 +msgid "_Username:" +msgstr "_Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ:" + +#: ../data/glade/account_modification_window.glade.h:1 +#: ../data/glade/preferences_window.glade.h:8 +msgid "Miscellaneous" +msgstr "Прочее" + +#: ../data/glade/account_modification_window.glade.h:2 +msgid "OpenPGP" +msgstr "OpenPGP" + +#: ../data/glade/account_modification_window.glade.h:3 +msgid "Personal Information" +msgstr "Ð›Ð¸Ñ‡Ð½Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ" + +#: ../data/glade/account_modification_window.glade.h:4 +msgid "Account" +msgstr "Учетные запиÑи" + +#: ../data/glade/account_modification_window.glade.h:5 +msgid "Account Modification" +msgstr "Изменение Учетной запиÑи" + +#: ../data/glade/account_modification_window.glade.h:6 +msgid "Autoreconnect when connection is lost" +msgstr "Ðвтоподключение при разрыве ÑвÑзи" + +#: ../data/glade/account_modification_window.glade.h:7 +msgid "C_onnect on Gajim startup" +msgstr "_СоединÑÑ‚ÑŒÑÑ Ð¿Ñ€Ð¸ запуÑке Gajim" + +#: ../data/glade/account_modification_window.glade.h:8 +msgid "Chan_ge Password" +msgstr "И_зменить пароль" + +#: ../data/glade/account_modification_window.glade.h:9 +msgid "" +"Check this so Gajim will connect in port 5223 where legacy servers are " +"expected to have SSL capabilities. Note that Gajim uses TLS encryption by " +"default if broadcasted by the server, and with this option enabled TLS will " +"be disabled" +msgstr "" +"ЕÑли отмечено, то Gajim будет ÑоединÑÑ‚ÑŒÑÑ Ñ Ð¿Ð¾Ñ€Ñ‚Ð¾Ð¼ 5223 на котором " +"правильные Ñервера обычно ожидают Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ð¿Ð¾ SSL. Заметьте, что Gajim " +"иÑпользует TLS шифрование по умолчанию еÑли Ñервер предоÑтавлÑет такую " +"возможноÑÑ‚ÑŒ, Ñ Ñтой же опцией TLS отключетÑÑ" + +#: ../data/glade/account_modification_window.glade.h:10 +msgid "Choose _Key..." +msgstr "ИÑпользовать _Ключ..." + +#: ../data/glade/account_modification_window.glade.h:11 +msgid "Click to change account's password" +msgstr "Щелкните Ð´Ð»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¿Ð°Ñ€Ð¾Ð»ÑŒ" + +#: ../data/glade/account_modification_window.glade.h:12 +msgid "Connection" +msgstr "Соединение" + +#: ../data/glade/account_modification_window.glade.h:13 +msgid "Edit Personal Information..." +msgstr "Редактировать личную информацию..." + +#: ../data/glade/account_modification_window.glade.h:14 +#: ../data/glade/roster_window.glade.h:5 ../src/notify.py:308 +#: ../src/notify.py:330 ../src/notify.py:342 ../src/tooltips.py:350 +msgid "Gajim" +msgstr "Gajim" + +#: ../data/glade/account_modification_window.glade.h:15 +#: ../data/glade/preferences_window.glade.h:44 +#: ../data/glade/vcard_information_window.glade.h:17 +#: ../src/roster_window.py:290 ../src/roster_window.py:1184 +#: ../src/roster_window.py:1405 +msgid "General" +msgstr "Общие" + +#: ../data/glade/account_modification_window.glade.h:16 +msgid "Hostname: " +msgstr "ХоÑÑ‚: " + +#: ../data/glade/account_modification_window.glade.h:17 +#, fuzzy +msgid "" +"If checked, Gajim will also broadcast some more IPs except from just your " +"IP, so file transfer has higher chances of working." +msgstr "" +"ЕÑли отмечено, Gajim будет передавать еще неÑколько IP адреÑов в дополнение " +"к вашему, так что передача файла имеет больше шанÑов на уÑпех." + +#: ../data/glade/account_modification_window.glade.h:19 +msgid "" +"If checked, Gajim will send keep-alive packets so it prevents connection " +"timeout which results in disconnection" +msgstr "" +"ЕÑли отмечено, то Gajim будет пинговать Ñервер чтобы избежать разрыва " +"ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð¿Ð¾ таймауту" + +#: ../data/glade/account_modification_window.glade.h:20 +msgid "" +"If checked, Gajim will store the password in ~/.gajim/config with 'read' " +"permission only for you" +msgstr "" +"ЕÑли отмечено, то Gajim Ñохранит пароль в ~/.gajim/config Ñ Ð´Ð¾Ñтупом на " +"чтение только Ð´Ð»Ñ Ð²Ð°Ñ" + +#: ../data/glade/account_modification_window.glade.h:21 +msgid "" +"If checked, Gajim, when launched, will automatically connect to jabber using " +"this account" +msgstr "" +"ЕÑли отмечено, Gajim, поÑле запуÑка, будет автоматичеÑки подÑоединÑÑ‚ÑŒÑÑ Ðº " +"jabber Ñерверу Ñ Ð¸Ñпользованием Ñтой учетной запиÑи" + +#: ../data/glade/account_modification_window.glade.h:22 +msgid "" +"If checked, any change to the global status (handled by the combobox at the " +"bottom of the roster window) will change the status of this account " +"accordingly" +msgstr "" +"ЕÑли отмечено, то любые Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ ÑтатуÑа (управлÑемого из " +"выпадающего ÑпиÑка внизу окна роÑтера) повлекут за Ñобой изменение ÑтатуÑа " +"Ñтой учетной запиÑи" + +#: ../data/glade/account_modification_window.glade.h:23 +msgid "Information about you, as stored in the server" +msgstr "Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ ваÑ, как она хранитÑÑ Ð½Ð° Ñервере" + +#: ../data/glade/account_modification_window.glade.h:24 +msgid "Manage..." +msgstr "Управление..." + +#: ../data/glade/account_modification_window.glade.h:25 ../src/config.py:1448 +msgid "No key selected" +msgstr "Ðе выбран ключ" + +#. None means no proxy profile selected +#: ../data/glade/account_modification_window.glade.h:27 ../src/config.py:1053 +#: ../src/config.py:1058 ../src/config.py:1230 ../src/config.py:1505 +#: ../src/config.py:1578 ../src/config.py:2282 +msgid "None" +msgstr "Ðет" + +#: ../data/glade/account_modification_window.glade.h:28 +msgid "Personal Information" +msgstr "Редактировать Личную Информацию" + +#: ../data/glade/account_modification_window.glade.h:29 +msgid "Port: " +msgstr "Порт: " + +#: ../data/glade/account_modification_window.glade.h:30 +msgid "Priori_ty:" +msgstr "Приори_тет:" + +#: ../data/glade/account_modification_window.glade.h:31 +msgid "" +"Priority is used in Jabber to determine who gets the events from the jabber " +"server when two or more clients are connected using the same account; The " +"client with the highest priority gets the events" +msgstr "" +"Приоритет иÑпользуетÑÑ Ð² Jabber Ð´Ð»Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ñ‚Ð¾Ð³Ð¾, кто будет получать " +"ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ñ Ð¾Ñ‚ jabber Ñервера когда подÑоединены два и более клиента Ñ Ð¾Ð´Ð½Ð¾Ð¹ и " +"той же учетной запиÑью. Клиент Ñ Ð½Ð°Ð¸Ð±Ð¾Ð»ÑŒÑˆÐ¸Ð¼ приоритетом будет получать " +"ÑобытиÑ" + +#: ../data/glade/account_modification_window.glade.h:32 +msgid "Proxy:" +msgstr "ПрокÑи:" + +#: ../data/glade/account_modification_window.glade.h:33 +msgid "Resour_ce: " +msgstr "РеÑу_Ñ€Ñ: " + +#: ../data/glade/account_modification_window.glade.h:34 +msgid "" +"Resource is sent to the Jabber server in order to separate the same JID in " +"two or more parts depending on the number of the clients connected in the " +"same server with the same account. So you might be connected in the same " +"account with resource 'Home' and 'Work' at the same time. The resource which " +"has the highest priority will get the events. (see below)" +msgstr "" +"РеÑÑƒÑ€Ñ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²Ð»ÑетÑÑ Jabber Ñерверу Ð´Ð»Ñ Ñ‚Ð¾Ð³Ð¾, чтобы 'разделить' один и тот же " +"JID на две и более чаÑти в завиÑимоÑти от чиÑла клиентов приÑоединенных к " +"одному Ñерверу Ñ Ñ‚Ð¾Ð¹ же Ñамой учетной запиÑью. Так что вы можете быть " +"подÑоединены Ñ Ñ€ÐµÑурÑами 'Дом' или 'Работа' на одном учетной запиÑи " +"одновременно. РеÑурÑ, который имеет больший приоритет будет получать вÑе " +"ÑобытиÑ. (См. ниже)" + +#: ../data/glade/account_modification_window.glade.h:35 +msgid "Save _passphrase (insecure)" +msgstr "Сохранить _парольную фразу (небезопаÑно)" + +#: ../data/glade/account_modification_window.glade.h:36 +msgid "Save conversation _logs for all contacts" +msgstr "_ИÑÑ‚Ð¾Ñ€Ð¸Ñ Ð²Ñех контактов Ð´Ð»Ñ Ñтой учетной запиÑи" + +#: ../data/glade/account_modification_window.glade.h:38 +msgid "Send keep-alive packets" +msgstr "Отправить пинг" + +#: ../data/glade/account_modification_window.glade.h:39 +msgid "Synch_ronize account status with global status" +msgstr "Син_хронизировать ÑÑ‚Ð°Ñ‚ÑƒÑ ÑƒÑ‡ÐµÑ‚Ð½Ð¾Ð¹ запиÑи Ñ Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ñ‹Ð¼ ÑтатуÑом" + +#: ../data/glade/account_modification_window.glade.h:40 +msgid "Use _SSL (legacy)" +msgstr "ИÑпользовать _SSL (legacy)" + +#: ../data/glade/account_modification_window.glade.h:41 +msgid "Use custom hostname/port" +msgstr "ИÑпользовать пользовательÑкие хоÑÑ‚/порт" + +#: ../data/glade/account_modification_window.glade.h:42 +msgid "Use file transfer proxies" +msgstr "ИÑпользовать прокÑи Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ´Ð°Ñ‡Ð¸ файла" + +#: ../data/glade/account_modification_window.glade.h:43 +#: ../data/glade/add_new_contact_window.glade.h:6 +msgid "_Jabber ID:" +msgstr "_Jabber ID:" + +#: ../data/glade/account_modification_window.glade.h:44 +msgid "_Name: " +msgstr "_ИмÑ: " + +#: ../data/glade/accounts_window.glade.h:1 +msgid "Accounts" +msgstr "Учетные запиÑи" + +#: ../data/glade/accounts_window.glade.h:2 +msgid "" +"If you have 2 or more accounts and it is checked, Gajim will list all " +"contacts as if you had one account" +msgstr "" +"ЕÑли у Ð²Ð°Ñ 2 и более учетных запиÑей, то отметив здеÑÑŒ, вы заÑтавите Gajim " +"выводить вмеÑте контакты из вÑех учетных запиÑей" + +#: ../data/glade/accounts_window.glade.h:3 +msgid "_Merge accounts" +msgstr "_Объединить учетные запиÑи" + +#: ../data/glade/accounts_window.glade.h:4 +msgid "_Modify" +msgstr "_Изменить" + +#: ../data/glade/accounts_window.glade.h:5 +#: ../data/glade/remove_account_window.glade.h:4 +msgid "_Remove" +msgstr "_Удалить" + +#: ../data/glade/add_new_contact_window.glade.h:1 +#, fuzzy +msgid "A_llow this contact to view my status" +msgstr "Позволить ему или ей видеть мой ÑтатуÑ" + +#: ../data/glade/add_new_contact_window.glade.h:2 +msgid "Add New Contact" +msgstr "Добавить новый контакт" + +#: ../data/glade/add_new_contact_window.glade.h:3 +msgid "I would like to add you to my contact list." +msgstr "Ð’Ñ‹ не возражаете, еÑли Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÑŽ Ð’Ð°Ñ Ð² контакт лиÑÑ‚?" + +#: ../data/glade/add_new_contact_window.glade.h:4 +#, fuzzy +msgid "_Account:" +msgstr "Учетные запиÑи" + +#: ../data/glade/add_new_contact_window.glade.h:5 +#, fuzzy +msgid "_Group:" +msgstr "Группа:" + +#: ../data/glade/add_new_contact_window.glade.h:7 +#, fuzzy +msgid "_Nickname:" +msgstr "Ðик:" + +#: ../data/glade/add_new_contact_window.glade.h:8 +#, fuzzy +msgid "_Protocol:" +msgstr "Протокол:" + +#: ../data/glade/add_new_contact_window.glade.h:9 +msgid "_Subscribe" +msgstr "_ПодпиÑатьÑÑ" + +#: ../data/glade/add_new_contact_window.glade.h:10 +#, fuzzy +msgid "_User ID:" +msgstr "ID пользователÑ:" + +#: ../data/glade/advanced_configuration_window.glade.h:1 +msgid "Description" +msgstr "ОпиÑание" + +#: ../data/glade/advanced_configuration_window.glade.h:2 +msgid "NOTE: You should restart gajim for some setting to take effect" +msgstr "" +"ПРИМЕЧÐÐИЕ: Ð’Ñ‹ должны перезапуÑтить gajim, чтобы некоторые наÑтройки " +"были применены" + +#: ../data/glade/advanced_configuration_window.glade.h:3 +msgid "Advanced Configuration Editor" +msgstr "РаÑширенный редактор наÑтроек" + +#: ../data/glade/advanced_configuration_window.glade.h:4 +msgid "Filter:" +msgstr "Фильтр:" + +#: ../data/glade/advanced_menuitem_menu.glade.h:1 +msgid "Delete MOTD" +msgstr "Удалить MOTD" + +#: ../data/glade/advanced_menuitem_menu.glade.h:2 +msgid "Deletes Message of the Day" +msgstr "УдалÑет Ñообщение днÑ." + +#: ../data/glade/advanced_menuitem_menu.glade.h:3 +msgid "Sends a message to currently connected users to this server" +msgstr "" +"ОтправлÑет Ñообщение пользователÑм подÑоединенным к Ñерверу в данный момент" + +#: ../data/glade/advanced_menuitem_menu.glade.h:4 +msgid "Set MOTD" +msgstr "УÑтановить MOTD" + +#: ../data/glade/advanced_menuitem_menu.glade.h:5 +msgid "Sets Message of the Day" +msgstr "УÑтанавливает фортунку" + +#: ../data/glade/advanced_menuitem_menu.glade.h:6 +msgid "Show _XML Console" +msgstr "Показать конÑоль _XML" + +#: ../data/glade/advanced_menuitem_menu.glade.h:7 +msgid "Update MOTD" +msgstr "Обновить MOTD" + +#: ../data/glade/advanced_menuitem_menu.glade.h:8 +msgid "Updates Message of the Day" +msgstr "ОбновлÑет фортунку" + +#: ../data/glade/advanced_menuitem_menu.glade.h:9 +msgid "_Administrator" +msgstr "_ÐдминиÑтрирование" + +#: ../data/glade/advanced_menuitem_menu.glade.h:10 +msgid "_Privacy Lists" +msgstr "" + +#: ../data/glade/advanced_menuitem_menu.glade.h:11 +msgid "_Send Server Message" +msgstr "_Отправить Ñообщение Ñервера" + +#: ../data/glade/advanced_menuitem_menu.glade.h:12 +msgid "_Send Single Message" +msgstr "О_тправить одиночное Ñообщение" + +#: ../data/glade/advanced_notifications_window.glade.h:1 +msgid " a window/tab opened with that contact " +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:2 +#, fuzzy +msgid "Actions" +msgstr "ПриложениÑ" + +#: ../data/glade/advanced_notifications_window.glade.h:3 +#, fuzzy +msgid "Conditions" +msgstr "Звуки" + +#: ../data/glade/advanced_notifications_window.glade.h:4 +#: ../data/glade/preferences_window.glade.h:10 +msgid "Sounds" +msgstr "Звуки" + +#: ../data/glade/advanced_notifications_window.glade.h:5 +#, fuzzy +msgid "Add" +msgstr "ÐдреÑ" + +#: ../data/glade/advanced_notifications_window.glade.h:6 +#, fuzzy +msgid "Advanced Actions" +msgstr "РаÑширенный" + +#: ../data/glade/advanced_notifications_window.glade.h:7 +#, fuzzy +msgid "Advanced Notifications Control" +msgstr "РаÑширенный редактор наÑтроек" + +#: ../data/glade/advanced_notifications_window.glade.h:8 +#, fuzzy +msgid "All Status " +msgstr "СтатуÑ: " + +#: ../data/glade/advanced_notifications_window.glade.h:9 +msgid "And I " +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:10 +#, fuzzy +msgid "Away " +msgstr "Ушел" + +#: ../data/glade/advanced_notifications_window.glade.h:11 +#, fuzzy +msgid "Busy " +msgstr "ЗанÑÑ‚" + +#: ../data/glade/advanced_notifications_window.glade.h:12 +msgid "Don't have " +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:13 +#, fuzzy +msgid "Down" +msgstr "Загрузить" + +#: ../data/glade/advanced_notifications_window.glade.h:14 +msgid "Have " +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:15 +#: ../src/common/helpers.py:239 +msgid "Invisible" +msgstr "Ðевидимка" + +#: ../data/glade/advanced_notifications_window.glade.h:16 +#, fuzzy +msgid "Launch a command" +msgstr "команда" + +#: ../data/glade/advanced_notifications_window.glade.h:17 +#, fuzzy +msgid "List of special notifications settings" +msgstr "Добавление Ñпециального ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð´Ð»Ñ %s" + +#: ../data/glade/advanced_notifications_window.glade.h:18 +#, fuzzy +msgid "Not Available " +msgstr "ÐедоÑтупен" + +#: ../data/glade/advanced_notifications_window.glade.h:19 +#, fuzzy +msgid "Online / Free For Chat" +msgstr "Готов Поболтать" + +#: ../data/glade/advanced_notifications_window.glade.h:20 +#, fuzzy +msgid "Play a sound" +msgstr "Проигрывать _звук" + +#: ../data/glade/advanced_notifications_window.glade.h:21 +msgid "" +"Receive a Message\n" +"Contact Connected\n" +"Contact Disconnected\n" +"Contact Change Status\n" +"Group Chat Message Highlight\n" +"Group Chat Message Received\n" +"File Transfert Resquest\n" +"File Transfert Started\n" +"File Transfert Finished" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:30 +msgid "Some special(s) status..." +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:31 +msgid "Up" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:32 +msgid "When " +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:33 +msgid "_Activate Windows manager UrgencyHint to make chat taskbar to flash" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:34 +#, fuzzy +msgid "_Disable auto opening chat window" +msgstr "Скрывает кнопки окна комнаты" + +#: ../data/glade/advanced_notifications_window.glade.h:35 +msgid "_Disable existing popup window" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:36 +msgid "_Disable existing sound for this event" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:37 +msgid "_Disable showing event in roster" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:38 +msgid "_Disable showing event in systray" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:39 +msgid "_Inform me with a popup window" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:40 +msgid "_Open chat window with user" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:41 +#, fuzzy +msgid "_Show event in roster" +msgstr "Показывать только в _роÑтере" + +#: ../data/glade/advanced_notifications_window.glade.h:42 +#, fuzzy +msgid "_Show event in systray" +msgstr "Показывать только в _роÑтере" + +#: ../data/glade/advanced_notifications_window.glade.h:43 +msgid "" +"contact(s)\n" +"group(s)\n" +"everybody" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:46 +#, fuzzy +msgid "for " +msgstr "Порт: " + +#: ../data/glade/advanced_notifications_window.glade.h:47 +msgid "when I'm " +msgstr "" + +#: ../data/glade/change_password_dialog.glade.h:1 +msgid "Change Password" +msgstr "Изменить пароль" + +#: ../data/glade/change_password_dialog.glade.h:2 +msgid "Enter it again for confirmation:" +msgstr "Введите опÑÑ‚ÑŒ Ð´Ð»Ñ Ð¿Ð¾Ð´Ñ‚Ð²ÐµÑ€Ð¶Ð´ÐµÐ½Ð¸Ñ:" + +#: ../data/glade/change_password_dialog.glade.h:3 +msgid "Enter new password:" +msgstr "Введите новый пароль" + +#: ../data/glade/change_status_message_dialog.glade.h:1 +msgid "Type your new status message" +msgstr "Введите ваше новое Ñообщение о ÑтатуÑе" + +#: ../data/glade/change_status_message_dialog.glade.h:2 +msgid "Preset messages:" +msgstr "ПредуÑтановленные ÑообщениÑ:" + +#: ../data/glade/change_status_message_dialog.glade.h:3 +msgid "Save as Preset..." +msgstr "Сохранить как ПредуÑтановленный параметр..." + +#: ../data/glade/chat_context_menu.glade.h:1 +msgid "Join _Group Chat" +msgstr "Войти в _Комнату" + +#: ../data/glade/chat_context_menu.glade.h:2 +#: ../data/glade/chat_control_popup_menu.glade.h:4 +#: ../data/glade/gc_occupants_menu.glade.h:2 +#: ../data/glade/roster_contact_context_menu.glade.h:8 +msgid "_Add to Roster" +msgstr "Добавить в роÑтер" + +#: ../data/glade/chat_context_menu.glade.h:3 +msgid "_Copy JID/Email Address" +msgstr "_Скопировать JID/почтовый адреÑ" + +#: ../data/glade/chat_context_menu.glade.h:4 +msgid "_Copy Link Location" +msgstr "_Копировать Ð°Ð´Ñ€ÐµÑ ÑÑылки" + +#: ../data/glade/chat_context_menu.glade.h:5 +msgid "_Open Email Composer" +msgstr "_Отправить пиÑьмо" + +#: ../data/glade/chat_context_menu.glade.h:6 +msgid "_Open Link in Browser" +msgstr "_ПроÑмотреть ÑÑылку в браузере" + +#: ../data/glade/chat_context_menu.glade.h:7 +#: ../data/glade/roster_window.glade.h:19 +#: ../data/glade/systray_context_menu.glade.h:6 +msgid "_Start Chat" +msgstr "Ðачать Чат" + +#: ../data/glade/chat_control_popup_menu.glade.h:1 +msgid "Click to see past conversations with this contact" +msgstr "Щелкните Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñмотра беÑед Ñ Ñтим человеком" + +#: ../data/glade/chat_control_popup_menu.glade.h:2 +#: ../data/glade/roster_contact_context_menu.glade.h:6 +msgid "Send _File" +msgstr "Отправить _Файл" + +#: ../data/glade/chat_control_popup_menu.glade.h:3 +msgid "Toggle Open_PGP Encryption" +msgstr "Включить Open_PGP Шифрование" + +#: ../data/glade/chat_control_popup_menu.glade.h:5 +#: ../data/glade/gc_control_popup_menu.glade.h:6 +msgid "_Compact View Alt+C" +msgstr "_Компактный вид Alt-C" + +#: ../data/glade/chat_control_popup_menu.glade.h:6 +#: ../data/glade/gc_control_popup_menu.glade.h:7 +#: ../data/glade/gc_occupants_menu.glade.h:5 +#: ../data/glade/roster_contact_context_menu.glade.h:11 +msgid "_History" +msgstr "_ИÑториÑ" + +#: ../data/glade/data_form_window.glade.h:1 +msgid "Room Configuration" +msgstr "ÐаÑтройки Комнаты" + +#: ../data/glade/edit_groups_dialog.glade.h:1 +msgid "Edit Groups" +msgstr "Редактировать группы" + +#: ../data/glade/filetransfers.glade.h:1 +msgid "A list of active, completed and stopped file transfers" +msgstr "СпиÑок активных, завершенных и оÑтановленных передач файлов" + +#: ../data/glade/filetransfers.glade.h:2 +msgid "Cancel file transfer" +msgstr "Отменить передачу" + +#: ../data/glade/filetransfers.glade.h:3 +msgid "Cancels the selected file transfer" +msgstr "ОтменÑет выбранную передачу" + +#: ../data/glade/filetransfers.glade.h:4 +msgid "Cancels the selected file transfer and removes incomplete file" +msgstr "ОтменÑет выбранную передачу и удалÑет неполные файлы" + +#: ../data/glade/filetransfers.glade.h:5 +msgid "Clean _up" +msgstr "_ОчиÑтить" + +#: ../data/glade/filetransfers.glade.h:6 +msgid "File Transfers" +msgstr "Передачи" + +#: ../data/glade/filetransfers.glade.h:7 +msgid "Hides the window" +msgstr "Скрывает окно" + +#: ../data/glade/filetransfers.glade.h:8 +msgid "Remove file transfer from the list." +msgstr "Удалить передачу из ÑпиÑка." + +#: ../data/glade/filetransfers.glade.h:9 +msgid "Removes completed, canceled and failed file transfers from the list" +msgstr "УдалÑет завершеные, отмененные и неудачные передачи из ÑпиÑка" + +#: ../data/glade/filetransfers.glade.h:10 +msgid "Shows a list of file transfers between you and other" +msgstr "Показывает ÑпиÑок передач между вами и оÑтальными" + +#: ../data/glade/filetransfers.glade.h:11 +msgid "" +"This action removes single file transfer from the list. If the transfer is " +"active, it is first stopped and then removed" +msgstr "" +"Это дейÑтвие удалÑет единичную передачу из ÑпиÑка. ЕÑли передача еще " +"активна, она Ñначала оÑтанавливаетÑÑ Ð¸ поÑле удалÑетÑÑ" + +#: ../data/glade/filetransfers.glade.h:12 +msgid "When a file transfer is complete show a popup notification" +msgstr "Показать уведомление по окончании загрузки" + +#: ../data/glade/filetransfers.glade.h:13 ../src/filetransfers_window.py:753 +msgid "_Continue" +msgstr "_Продолжить" + +#: ../data/glade/filetransfers.glade.h:14 +msgid "_Notify me when a file transfer is complete" +msgstr "_Уведомить Ð¼ÐµÐ½Ñ ÐºÐ¾Ð³Ð´Ð° передача файлов завершена" + +#: ../data/glade/filetransfers.glade.h:15 ../src/filetransfers_window.py:190 +msgid "_Open Containing Folder" +msgstr "_Открыть папку Ñ Ð¿Ñ€Ð¸Ð½Ñтым файлом" + +#: ../data/glade/filetransfers.glade.h:16 +msgid "_Pause" +msgstr "_ПриоÑтановить" + +#: ../data/glade/filetransfers.glade.h:17 +msgid "file transfers list" +msgstr "ÑпиÑок передач" + +#: ../data/glade/gajim_themes_window.glade.h:1 +msgid "Chatstate Tab Colors" +msgstr "Цвета Вкладок СоÑтоÑÐ½Ð¸Ñ Ð‘ÐµÑеды" + +#: ../data/glade/gajim_themes_window.glade.h:2 +msgid "" +"Account\n" +"Group\n" +"Contact\n" +"Banner" +msgstr "" +"Ð£Ñ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ\n" +"Группа\n" +"Контакт\n" +"Баннер" + +#: ../data/glade/gajim_themes_window.glade.h:6 +#: ../data/glade/privacy_list_edit_window.glade.h:4 ../src/config.py:326 +msgid "Active" +msgstr "Ðктивен" + +#: ../data/glade/gajim_themes_window.glade.h:7 +msgid "Bold" +msgstr "Жирный" + +#: ../data/glade/gajim_themes_window.glade.h:8 +msgid "Composing" +msgstr "Печатает" + +#: ../data/glade/gajim_themes_window.glade.h:9 +msgid "Font style:" +msgstr "Шрифт:" + +#: ../data/glade/gajim_themes_window.glade.h:10 +msgid "Gajim Themes Customization" +msgstr "ÐаÑтройка тем Ð´Ð»Ñ Gajim" + +#: ../data/glade/gajim_themes_window.glade.h:11 +msgid "Gone" +msgstr "Ушел" + +#: ../data/glade/gajim_themes_window.glade.h:12 +msgid "Inactive" +msgstr "Ðеактивен" + +#: ../data/glade/gajim_themes_window.glade.h:13 +msgid "Italic" +msgstr "КурÑив" + +#: ../data/glade/gajim_themes_window.glade.h:14 +msgid "" +"MUC\n" +"Messages" +msgstr "" +"MUC\n" +"СообщениÑ" + +#: ../data/glade/gajim_themes_window.glade.h:16 +msgid "" +"MUC Directed\n" +"Messages" +msgstr "" +"Регулируемый MUC\n" +"СообщениÑ" + +#: ../data/glade/gajim_themes_window.glade.h:18 ../src/tooltips.py:667 +msgid "Paused" +msgstr "ПриоÑтановлено" + +#: ../data/glade/gajim_themes_window.glade.h:19 +msgid "Text _color:" +msgstr "Цвет _текÑта:" + +#: ../data/glade/gajim_themes_window.glade.h:20 +msgid "Text _font:" +msgstr "Цвет _шрифта:" + +#: ../data/glade/gajim_themes_window.glade.h:21 +msgid "_Background:" +msgstr "Цвет _фона" + +#: ../data/glade/gc_control_popup_menu.glade.h:1 +msgid "Change _Nickname" +msgstr "Изменить _ник" + +#: ../data/glade/gc_control_popup_menu.glade.h:2 +msgid "Change _Subject" +msgstr "Изменить _тему" + +#: ../data/glade/gc_control_popup_menu.glade.h:3 +msgid "Click to see past conversation in this room" +msgstr "Щелкните Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñмотра беÑед Ñ Ñтим человеком" + +#: ../data/glade/gc_control_popup_menu.glade.h:4 +msgid "Configure _Room" +msgstr "ÐаÑтроить _комнату" + +#: ../data/glade/gc_control_popup_menu.glade.h:5 +msgid "_Bookmark This Room" +msgstr "Добавить Ñту комнату в _закладки" + +#: ../data/glade/gc_occupants_menu.glade.h:1 +msgid "Mo_derator" +msgstr "_Модератор" + +#: ../data/glade/gc_occupants_menu.glade.h:3 +msgid "_Admin" +msgstr "_Ðдмин" + +#: ../data/glade/gc_occupants_menu.glade.h:4 +msgid "_Ban" +msgstr "_Забанить" + +#: ../data/glade/gc_occupants_menu.glade.h:6 +msgid "_Kick" +msgstr "_Выгнать" + +#: ../data/glade/gc_occupants_menu.glade.h:7 +msgid "_Member" +msgstr "_УчаÑтник" + +#: ../data/glade/gc_occupants_menu.glade.h:8 +msgid "_Occupant Actions" +msgstr "_ДейÑÑ‚Ð²Ð¸Ñ Ð½Ð°Ð´ поÑетителем" + +#: ../data/glade/gc_occupants_menu.glade.h:9 +msgid "_Owner" +msgstr "_Владелец" + +#: ../data/glade/gc_occupants_menu.glade.h:10 +msgid "_Send Private Message" +msgstr "_Отправить личное Сообщение" + +#: ../data/glade/gc_occupants_menu.glade.h:11 +msgid "_Voice" +msgstr "_Право говорить" + +#: ../data/glade/history_manager.glade.h:1 +msgid "" +"Welcome to Gajim History Logs Manager\n" +"\n" +"You can select logs from the left and/or search database from below.\n" +"\n" +"WARNING:\n" +"If you plan to do massive deletions, please make sure Gajim is not running. " +"Generally avoid deletions with contacts you currently chat with." +msgstr "" +"Добро пожаловать в Менеджер ИÑтории Gajim'а\n" +"\n" +"Ð’Ñ‹ можете выбрать логи в левом поле и/или иÑкать в базе данных в форме " +"внизу. \n" +"\n" +"Ð’ÐИМÐÐИЕ:\n" +"ЕÑли вы ÑобираетеÑÑŒ уÑтроить маÑÑовую чиÑтку, пожалуйÑта удоÑтоверьтеÑÑŒ что " +"Gajim не запущен. Избегайте удалений из логов контактов Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ð¼Ð¸ вы " +"разговариваете в Ñтот момент." + +#: ../data/glade/history_manager.glade.h:7 +msgid "Delete" +msgstr "Удалить" + +#: ../data/glade/history_manager.glade.h:8 +msgid "Export" +msgstr "ЭкÑпорт" + +#: ../data/glade/history_manager.glade.h:9 +msgid "Gajim History Logs Manager" +msgstr "Менеджер иÑтории Gajim'а" + +#: ../data/glade/history_manager.glade.h:10 +msgid "_Search Database" +msgstr "_ПоиÑк в базе данных" + +#: ../data/glade/history_window.glade.h:1 +msgid "Build custom query" +msgstr "СоÑтавить Ñвой запроÑ" + +#: ../data/glade/history_window.glade.h:2 +msgid "Conversation History" +msgstr "ИÑториÑ" + +#: ../data/glade/history_window.glade.h:3 +msgid "Query Builder..." +msgstr "Редактор ЗапроÑов..." + +#: ../data/glade/history_window.glade.h:4 +msgid "Search" +msgstr "ПоиÑк" + +#: ../data/glade/history_window.glade.h:5 +msgid "_Search" +msgstr "_ПоиÑк" + +#: ../data/glade/invitation_received_dialog.glade.h:1 +msgid "Accept" +msgstr "ПринÑÑ‚ÑŒ" + +#: ../data/glade/invitation_received_dialog.glade.h:2 +#: ../data/glade/privacy_list_edit_window.glade.h:8 +msgid "Deny" +msgstr "Отклонить" + +#: ../data/glade/invitation_received_dialog.glade.h:3 +msgid "Invitation Received" +msgstr "Получено Приглашение" + +#: ../data/glade/join_groupchat_window.glade.h:1 ../src/dialogs.py:941 +msgid "Join Group Chat" +msgstr "Войти в комнату" + +#: ../data/glade/join_groupchat_window.glade.h:2 +#: ../data/glade/manage_bookmarks_window.glade.h:4 +#: ../data/glade/vcard_information_window.glade.h:28 +msgid "Nickname:" +msgstr "Ðик:" + +#: ../data/glade/join_groupchat_window.glade.h:3 +#: ../data/glade/manage_bookmarks_window.glade.h:5 +msgid "Password:" +msgstr "Пароль:" + +#: ../data/glade/join_groupchat_window.glade.h:4 +msgid "Recently:" +msgstr "Ðедавно:" + +#: ../data/glade/join_groupchat_window.glade.h:5 +#: ../data/glade/manage_bookmarks_window.glade.h:7 +msgid "Room:" +msgstr "Комната:" + +#: ../data/glade/join_groupchat_window.glade.h:6 +#: ../data/glade/manage_bookmarks_window.glade.h:8 +msgid "Server:" +msgstr "Сервер:" + +#: ../data/glade/join_groupchat_window.glade.h:7 ../src/disco.py:1145 +#: ../src/disco.py:1507 +msgid "_Join" +msgstr "_ПриÑоединитьÑÑ" + +#: ../data/glade/manage_accounts_window.glade.h:1 +msgid "Manage Accounts" +msgstr "Управление Учетными запиÑÑми" + +#: ../data/glade/manage_bookmarks_window.glade.h:1 +msgid "Auto join" +msgstr "ÐвтоматичеÑкое приÑоединение" + +#: ../data/glade/manage_bookmarks_window.glade.h:2 +msgid "If checked, Gajim will join this group chat on startup" +msgstr "ЕÑли отмечено, то Gajim будет входить в комнату при запуÑке" + +#: ../data/glade/manage_bookmarks_window.glade.h:3 +msgid "Manage Bookmarks" +msgstr "Управление Закладками" + +#: ../data/glade/manage_bookmarks_window.glade.h:6 +#, fuzzy +msgid "Print status:" +msgstr "Выводить времÑ:" + +#: ../data/glade/manage_bookmarks_window.glade.h:9 +msgid "Title:" +msgstr "Заголовок:" + +#: ../data/glade/manage_proxies_window.glade.h:1 +msgid "Properties" +msgstr "СвойÑтва" + +#: ../data/glade/manage_proxies_window.glade.h:2 +msgid "Settings" +msgstr "Ðатройки" + +#: ../data/glade/manage_proxies_window.glade.h:3 +msgid "HTTP Connect" +msgstr "HTTP Соединение" + +#: ../data/glade/manage_proxies_window.glade.h:4 +msgid "Manage Proxy Profiles" +msgstr "Управление ПрофилÑми ПрокÑи" + +#: ../data/glade/manage_proxies_window.glade.h:5 +#: ../data/glade/vcard_information_window.glade.h:27 +msgid "Name:" +msgstr "ИмÑ:" + +#: ../data/glade/manage_proxies_window.glade.h:7 +msgid "Type:" +msgstr "Тип:" + +#: ../data/glade/manage_proxies_window.glade.h:8 +msgid "Use authentication" +msgstr "ИÑпользовать аутентификацию" + +#: ../data/glade/message_window.glade.h:1 +msgid "Click to insert an emoticon (Alt+M)" +msgstr "Щелкните, чтобы вÑтавить Ñмайлик (Alt+M)" + +#: ../data/glade/message_window.glade.h:2 ../src/chat_control.py:966 +msgid "OpenPGP Encryption" +msgstr "Шифрование OpenPGP" + +#. Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector) +#: ../data/glade/message_window.glade.h:4 +#: ../data/glade/roster_window.glade.h:9 +msgid "_Actions" +msgstr "_ДейÑтвиÑ" + +#. Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector) +#: ../data/glade/message_window.glade.h:6 +#: ../data/glade/xml_console_window.glade.h:11 +#: ../src/filetransfers_window.py:249 +msgid "_Send" +msgstr "_Отправить" + +#: ../data/glade/passphrase_dialog.glade.h:1 +msgid "Passphrase" +msgstr "ÐŸÐ°Ñ€Ð¾Ð»ÑŒÐ½Ð°Ñ Ñ„Ñ€Ð°Ð·Ð°" + +#: ../data/glade/preferences_window.glade.h:1 +msgid "Advanced Configuration Editor" +msgstr "РаÑширенный Редактор ÐаÑтроек" + +#: ../data/glade/preferences_window.glade.h:2 +msgid "Applications" +msgstr "ПриложениÑ" + +#. a header for custom browser/client/file manager. so translate sth like: Custom Settings +#: ../data/glade/preferences_window.glade.h:4 +msgid "Custom" +msgstr "ПользовательÑкие наÑтройки" + +#: ../data/glade/preferences_window.glade.h:5 +msgid "Format of a line" +msgstr "Формат Ñтроки" + +#: ../data/glade/preferences_window.glade.h:6 +#, fuzzy +msgid "GMail Options" +msgstr "ПриложениÑ" + +#: ../data/glade/preferences_window.glade.h:7 +msgid "Interface Customization" +msgstr "ÐаÑтройки интерфейÑа" + +#: ../data/glade/preferences_window.glade.h:9 +msgid "Preset Status Messages" +msgstr "ПредуÑтановленные ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¾ ÑтатуÑе" + +#: ../data/glade/preferences_window.glade.h:11 +msgid "Visual Notifications" +msgstr "УведомлениÑ" + +#: ../data/glade/preferences_window.glade.h:12 +msgid "A_fter nickname:" +msgstr "П_оÑле ника:" + +#: ../data/glade/preferences_window.glade.h:13 +msgid "Advanced" +msgstr "РаÑширенный" + +#: ../data/glade/preferences_window.glade.h:14 +msgid "" +"All chat states\n" +"Composing only\n" +"Disabled" +msgstr "" +"Ð’Ñе ÑоÑтоÑÐ½Ð¸Ñ Ñ‡Ð°Ñ‚Ð°\n" +"Только печать\n" +"Отключено " + +#: ../data/glade/preferences_window.glade.h:17 +msgid "Allow _OS information to be sent" +msgstr "ОтÑылать информацию об _ОС" + +#: ../data/glade/preferences_window.glade.h:18 +msgid "Allow popup/notifications when I'm _away/na/busy/invisible" +msgstr "ПозволÑÑ‚ÑŒ ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð² режиме _ушел/недоÑтупен/занÑÑ‚/невидимка" + +#: ../data/glade/preferences_window.glade.h:19 +msgid "Also known as iChat style" +msgstr "как iChat Ñтиль" + +#: ../data/glade/preferences_window.glade.h:20 +msgid "Ask status message when I:" +msgstr "Запрашивать Ñообщение о ÑтатуÑе в момент: " + +#: ../data/glade/preferences_window.glade.h:21 +msgid "Auto _away after:" +msgstr "Ðвто-_отошел поÑле:" + +#: ../data/glade/preferences_window.glade.h:22 +msgid "Auto _not available after:" +msgstr "Ðвто-_недоÑтупен поÑле:" + +#: ../data/glade/preferences_window.glade.h:23 +msgid "" +"Autodetect on every Gajim startup\n" +"Always use GNOME default applications\n" +"Always use KDE default applications\n" +"Custom" +msgstr "" +"ОпределÑÑ‚ÑŒ автоматичеÑки при каждом запуÑке Gajim\n" +"Ð’Ñегда иÑпользовать Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ GNOME по умолчанию\n" +"Ð’Ñегда иÑпользовать Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ KDE по умолчанию\n" +"Другое" + +#: ../data/glade/preferences_window.glade.h:27 +msgid "B_efore nickname:" +msgstr "_До ника:" + +#: ../data/glade/preferences_window.glade.h:28 ../src/chat_control.py:718 +msgid "Chat" +msgstr "Чат" + +#: ../data/glade/preferences_window.glade.h:29 +msgid "Chat state noti_fications:" +msgstr "_Уведомление об изменении ÑоÑтоÑниÑ:" + +#: ../data/glade/preferences_window.glade.h:30 +msgid "" +"Check this option, only if someone you don't have in the roster spams/annoys " +"you. Use with caution, cause it blocks all messages from any contact that is " +"not in the roster" +msgstr "" +"Отметьте Ñту опцию, только еÑли кто-то не из вашего роÑтера Ñпамит/доÑтает " +"ваÑ. ИÑпользуйте Ñ Ð¾ÑторожноÑтью, потому что Ñто заблокирует вÑе ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ " +"от контактов не из вашего ротера." + +#: ../data/glade/preferences_window.glade.h:31 +msgid "Default status _iconset:" +msgstr "_Иконки по умолчанию Ð´Ð»Ñ ÑтатуÑа:" + +#: ../data/glade/preferences_window.glade.h:32 +msgid "Display _extra email details" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:33 +msgid "Display a_vatars of contacts in roster" +msgstr "Показавать а_ватары Ð´Ð»Ñ ÐºÐ¾Ð½Ñ‚Ð°ÐºÑ‚Ð¾Ð² в роÑтере" + +#: ../data/glade/preferences_window.glade.h:34 +msgid "Display status _messages of contacts in roster" +msgstr "Показать _ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¾ ÑтатуÑе контакта в роÑтере" + +#: ../data/glade/preferences_window.glade.h:35 +msgid "E_very 5 minutes" +msgstr "Каждые 5 _минут" + +#: ../data/glade/preferences_window.glade.h:36 +msgid "Emoticons:" +msgstr "Смайлики:" + +#: ../data/glade/preferences_window.glade.h:37 +msgid "Events" +msgstr "СобытиÑ" + +#: ../data/glade/preferences_window.glade.h:38 +msgid "" +"Gajim can send and receive meta-information related to a conversation you " +"may have with a contact. Here you can specify which chatstates you want to " +"send to the other party." +msgstr "" +"Gajim может отÑылать и получать метаданные отноÑÑщиеÑÑ Ðº беÑеде Ñ ÐºÐ¾Ð½Ñ‚Ð°ÐºÑ‚Ð¾Ð¼. " +"ЗдеÑÑŒ вы можете указать какие ÑоÑтоÑние беÑеды клиент будет отÑылать вашему " +"реÑпонденту." + +#: ../data/glade/preferences_window.glade.h:39 +msgid "" +"Gajim will automatically show new events by poping up the relative window" +msgstr "" +"Gajim будет автоматичеÑки показывать новые ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ñ Ð¿Ð¾Ð´Ð½Ð¸Ð¼Ð°Ñ ÑоответÑтвующее " +"окно." + +#: ../data/glade/preferences_window.glade.h:40 +msgid "" +"Gajim will notify you for new events via a popup in the bottom right of the " +"screen" +msgstr "" +"Gajim будет уведомлÑÑ‚ÑŒ Ð²Ð°Ñ Ð¾ новых ÑобытиÑÑ… Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð² правом " +"нижнем углу Ñкрана" + +#: ../data/glade/preferences_window.glade.h:41 +msgid "" +"Gajim will notify you via a popup window in the bottom right of the screen " +"about contacts that just signed in" +msgstr "" +"Gajim будет уведомлÑÑ‚ÑŒ Ð²Ð°Ñ Ð¾ приÑоединившемÑÑ ÐºÐ¾Ð½Ñ‚Ð°ÐºÑ‚Ðµ Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð² " +"правом нижнем углу Ñкрана" + +#: ../data/glade/preferences_window.glade.h:42 +msgid "" +"Gajim will notify you via a popup window in the bottom right of the screen " +"about contacts that just signed out" +msgstr "" +"Gajim будет уведомлÑÑ‚ÑŒ Ð²Ð°Ñ Ð¾ отÑоединившемÑÑ ÐºÐ¾Ð½Ñ‚Ð°ÐºÑ‚Ðµ Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð² " +"правом нижнем углу Ñкрана" + +#: ../data/glade/preferences_window.glade.h:43 +msgid "" +"Gajim will only change the icon of the contact that triggered the new event" +msgstr "" +"Gajim будет лишь менÑÑ‚ÑŒ иконку у контакта, от которого пришло новое Ñообщение" + +#: ../data/glade/preferences_window.glade.h:45 +msgid "" +"If checked, Gajim will display avatars of contacts in roster window and in " +"group chats" +msgstr "" +"ЕÑли отмечено, то Gajim будет показывать аватары контактов в окне роÑтера и " +"в окнах комнат" + +#: ../data/glade/preferences_window.glade.h:46 +msgid "" +"If checked, Gajim will display status messages of contacts under the contact " +"name in roster window and in group chats" +msgstr "" +"ЕÑли отмечено, то Gajim будет отображать Ñообщение о ÑтатуÑе контакта под " +"его именем в окне роÑтера и в окнах комнат" + +#: ../data/glade/preferences_window.glade.h:47 +msgid "" +"If checked, Gajim will remember the roster and chat window positions in the " +"screen and the sizes of them next time you run it" +msgstr "ЕÑли отмечено, то Gajim запомнит позицию и размер окна роÑтера" + +#: ../data/glade/preferences_window.glade.h:48 +msgid "" +"If checked, Gajim will use protocol-specific status icons. (eg. A contact " +"from MSN will have the equivalent msn icon for status online, away, busy, " +"etc...)" +msgstr "" +"ЕÑли отмечено, то Gajim будет иÑпользовать Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ протокола Ñвои иконки " +"(например: Контакты Ñ MSN будут иметь ÑоответÑтвующие иконки msn Ð´Ð»Ñ " +"ÑтатуÑов в Ñети, ушел, занÑÑ‚ и Ñ‚.д....)" + +#: ../data/glade/preferences_window.glade.h:49 +msgid "" +"If not disabled, Gajim will replace ascii smilies like ':)' with equivalent " +"animated or static graphical emoticons" +msgstr "" +"ЕÑли отмечено, то Gajim будет заменÑÑ‚ÑŒ текÑтовые Ñмайлики, например ':)' их " +"графичеÑким или анимированным Ñквивалентом" + +#: ../data/glade/preferences_window.glade.h:50 +msgid "Ma_nage..." +msgstr "_Управление..." + +#: ../data/glade/preferences_window.glade.h:51 +msgid "" +"Never\n" +"Always\n" +"Per account\n" +"Per type" +msgstr "" +"Ðикогда\n" +"Ð’Ñегда\n" +"По учетной запиÑи\n" +"По типу" + +#: ../data/glade/preferences_window.glade.h:55 +msgid "Notify me about contacts that: " +msgstr "УведомлÑÑ‚ÑŒ о контактах которые: " + +#: ../data/glade/preferences_window.glade.h:56 +#, fuzzy +msgid "Notify on new _GMail email" +msgstr "Сообщать о новых пиÑьмах в _Gmail" + +#: ../data/glade/preferences_window.glade.h:57 +msgid "On every _message" +msgstr "Ð’ _каждой Ñтроке" + +#: ../data/glade/preferences_window.glade.h:58 +msgid "One message _window:" +msgstr "Одно _окно ÑообщениÑ:" + +#: ../data/glade/preferences_window.glade.h:59 +msgid "Play _sounds" +msgstr "Проигрывать _звук" + +#: ../data/glade/preferences_window.glade.h:60 +msgid "Preferences" +msgstr "ÐаÑтройки" + +#: ../data/glade/preferences_window.glade.h:61 +msgid "Print time:" +msgstr "Выводить времÑ:" + +#: ../data/glade/preferences_window.glade.h:62 +msgid "Save _position and size for roster and chat windows" +msgstr "Сохранить _положение и размер роÑтера и окон беÑед" + +#: ../data/glade/preferences_window.glade.h:63 +msgid "Show only in _roster" +msgstr "Показывать только в _роÑтере" + +#: ../data/glade/preferences_window.glade.h:64 +msgid "Sign _in" +msgstr "Ð’_ошли" + +#: ../data/glade/preferences_window.glade.h:65 +msgid "Sign _out" +msgstr "Ð’_ышли" + +#: ../data/glade/preferences_window.glade.h:66 +msgid "Status" +msgstr "СтатуÑ" + +#: ../data/glade/preferences_window.glade.h:67 +msgid "T_heme:" +msgstr "_Тема:" + +#: ../data/glade/preferences_window.glade.h:68 +msgid "The auto away status message" +msgstr "Сообщение о ÑтатуÑе Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾-отошел" + +#: ../data/glade/preferences_window.glade.h:69 +msgid "The auto not available status message" +msgstr "Сообщение о ÑтатуÑе Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾-недоÑтупен" + +#: ../data/glade/preferences_window.glade.h:70 +msgid "Use _transports iconsets" +msgstr "ИÑпользовать иконки Ð´Ð»Ñ _транÑпортов" + +#: ../data/glade/preferences_window.glade.h:71 +msgid "Use system _default" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:72 +msgid "Use t_rayicon (aka. notification area icon)" +msgstr "Иконка в _трее (или в облаÑти уведомлениÑ)" + +#: ../data/glade/preferences_window.glade.h:73 +msgid "" +"When a new event (message, file transfer request etc..) is received, the " +"following methods may be used to inform you about it. Please note that " +"events about new messages only occur if it is a new message from a contact " +"you are not already chatting with" +msgstr "" +"Когда проиÑходит новое Ñобытие (приходит Ñообщение, Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð° передачу файла " +"и Ñ‚.д.) могут быть иÑпользованы Ñледующие ÑпоÑобы ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¾Ð± Ñтом. Учтите " +"что Ñобытие ÑоответÑтвующее новому Ñообщению, не проиÑходит еÑли вы уже " +"беÑедуете Ñ ÐºÐ¾Ð½Ñ‚Ð°ÐºÑ‚Ð¾Ð¼" + +#: ../data/glade/preferences_window.glade.h:74 +msgid "When new event is received" +msgstr "Когда получено новое Ñообытие" + +#: ../data/glade/preferences_window.glade.h:75 +#, fuzzy +msgid "_Advanced Notifications Control..." +msgstr "РаÑширенный редактор наÑтроек" + +#: ../data/glade/preferences_window.glade.h:76 +msgid "_After time:" +msgstr "_ПоÑле времени:" + +#: ../data/glade/preferences_window.glade.h:77 +msgid "_Before time:" +msgstr "_До времени:" + +#: ../data/glade/preferences_window.glade.h:78 +msgid "_Browser:" +msgstr "_Браузер:" + +#: ../data/glade/preferences_window.glade.h:79 +msgid "_File manager:" +msgstr "_Менеджер файлов:" + +#: ../data/glade/preferences_window.glade.h:80 +msgid "_Font:" +msgstr "_Шрифт:" + +#: ../data/glade/preferences_window.glade.h:81 +msgid "_Highlight misspelled words" +msgstr "ВыделÑÑ‚ÑŒ _Ñлова Ñ Ð¾Ð¿ÐµÑ‡Ð°Ñ‚ÐºÐ°Ð¼Ð¸" + +#: ../data/glade/preferences_window.glade.h:82 +msgid "_Ignore events from contacts not in the roster" +msgstr "_Игнорировать ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ñ Ð¾Ñ‚ контактов не из роÑтера" + +#: ../data/glade/preferences_window.glade.h:83 +msgid "_Incoming message:" +msgstr "_ВходÑщее Ñообщение:" + +#: ../data/glade/preferences_window.glade.h:84 +msgid "_Log status changes of contacts" +msgstr "_ИÑÑ‚Ð¾Ñ€Ð¸Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹ ÑтатуÑа контактов" + +#: ../data/glade/preferences_window.glade.h:85 +msgid "_Mail client:" +msgstr "_Почтовый клиент:" + +#: ../data/glade/preferences_window.glade.h:86 +msgid "_Never" +msgstr "_Ðикогда" + +#: ../data/glade/preferences_window.glade.h:87 +msgid "_Notify me about it" +msgstr "_Сообщать об Ñтом" + +#: ../data/glade/preferences_window.glade.h:88 +msgid "_Open..." +msgstr "_Открыть..." + +#: ../data/glade/preferences_window.glade.h:89 +msgid "_Outgoing message:" +msgstr "_ИÑходÑщее Ñообщение:" + +#: ../data/glade/preferences_window.glade.h:90 +msgid "_Player:" +msgstr "_Проигрыватель:" + +#: ../data/glade/preferences_window.glade.h:91 +msgid "_Pop it up" +msgstr "_ВывеÑти окно" + +#: ../data/glade/preferences_window.glade.h:92 +msgid "_Reset to Default Colors" +msgstr "_ВернутьÑÑ Ðº цветам по умолчанию" + +#: ../data/glade/preferences_window.glade.h:93 +msgid "_Sort contacts by status" +msgstr "_Сортировать контакты по ÑтатуÑу" + +#: ../data/glade/preferences_window.glade.h:94 +msgid "_Status message:" +msgstr "_Сообщение о ÑтатуÑе:" + +#: ../data/glade/preferences_window.glade.h:95 +msgid "_URL:" +msgstr "_URL:" + +#: ../data/glade/preferences_window.glade.h:96 +msgid "minutes" +msgstr "минут" + +#: ../data/glade/privacy_list_edit_window.glade.h:1 +msgid "Add / Edit a rule" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:2 +#, fuzzy +msgid "List of rules" +msgstr "Формат Ñтроки" + +#: ../data/glade/privacy_list_edit_window.glade.h:3 +msgid "Privacy List" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:5 ../src/config.py:2281 +msgid "All" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:6 +msgid "Allow" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:7 +#, fuzzy +msgid "Default" +msgstr "Удалить" + +#: ../data/glade/privacy_list_edit_window.glade.h:9 +#, fuzzy +msgid "JabberID" +msgstr "Jabber ID:" + +#: ../data/glade/privacy_list_edit_window.glade.h:10 +#, fuzzy +msgid "Order:" +msgstr "Сервер:" + +#: ../data/glade/privacy_list_edit_window.glade.h:11 ../src/dialogs.py:1626 +#, fuzzy +msgid "Privacy List" +msgstr "Черный ÑпиÑок" + +#: ../data/glade/privacy_list_edit_window.glade.h:12 +#, fuzzy +msgid "all by subscription" +msgstr "_ПодпиÑка" + +#: ../data/glade/privacy_list_edit_window.glade.h:13 +#, fuzzy +msgid "all in the group" +msgstr "Ð’ группе" + +#: ../data/glade/privacy_list_edit_window.glade.h:14 +msgid "" +"none\n" +"both\n" +"from\n" +"to" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:18 +#, fuzzy +msgid "to send me messages" +msgstr "Отправить Ñообщение" + +#: ../data/glade/privacy_list_edit_window.glade.h:19 +msgid "to send me queries" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:20 +#, fuzzy +msgid "to send me status" +msgstr "ПопроÑить возможноÑÑ‚ÑŒ видеть его или её ÑтатуÑ" + +#: ../data/glade/privacy_list_edit_window.glade.h:21 +#, fuzzy +msgid "to view my status" +msgstr "Позволить ему или ей видеть мой ÑтатуÑ" + +#: ../data/glade/privacy_lists_first_window.glade.h:1 +msgid "Create your own Privacy Lists" +msgstr "" + +#: ../data/glade/privacy_lists_first_window.glade.h:2 +msgid "Server-based Privacy Lists" +msgstr "" + +#: ../data/glade/remove_account_window.glade.h:1 +msgid "What do you want to do?" +msgstr "Что вы хотите Ñделать?" + +#: ../data/glade/remove_account_window.glade.h:2 +msgid "Remove account _only from Gajim" +msgstr "Удалит учетную запиÑÑŒ _только из Gajim" + +#: ../data/glade/remove_account_window.glade.h:3 +msgid "Remove account from Gajim and from _server" +msgstr "Удалить учетную запиÑÑŒ из Gajim и Ñ _Ñервера" + +#: ../data/glade/roster_contact_context_menu.glade.h:1 +#, fuzzy +msgid "A_sk to see his/her status" +msgstr "ПопроÑить возможноÑÑ‚ÑŒ видеть его или её ÑтатуÑ" + +#: ../data/glade/roster_contact_context_menu.glade.h:2 +msgid "Add Special _Notification" +msgstr "Добавить Ñпециальное _уведомление" + +#: ../data/glade/roster_contact_context_menu.glade.h:3 +msgid "Assign Open_PGP Key" +msgstr "Ðазначить OpenPGP ключ" + +#: ../data/glade/roster_contact_context_menu.glade.h:4 +msgid "Edit _Groups" +msgstr "Редактировать группы" + +#: ../data/glade/roster_contact_context_menu.glade.h:5 +#: ../data/glade/systray_context_menu.glade.h:1 +msgid "Send Single _Message" +msgstr "Отправить _Сообщение" + +#: ../data/glade/roster_contact_context_menu.glade.h:7 +msgid "Start _Chat" +msgstr "Ðачать _Чат" + +#: ../data/glade/roster_contact_context_menu.glade.h:9 +#, fuzzy +msgid "_Allow him/her to see my status" +msgstr "Позволить ему или ей видеть мой ÑтатуÑ" + +#: ../data/glade/roster_contact_context_menu.glade.h:10 +#, fuzzy +msgid "_Forbid him/her to see my status" +msgstr "Запретить ему или ей видеть мой ÑтатуÑ" + +#: ../data/glade/roster_contact_context_menu.glade.h:12 +#: ../src/roster_window.py:1482 +msgid "_Remove from Roster" +msgstr "_Удалить из роÑтера" + +#: ../data/glade/roster_contact_context_menu.glade.h:13 +#: ../src/roster_window.py:1470 +msgid "_Rename" +msgstr "П_ереименовать" + +#: ../data/glade/roster_contact_context_menu.glade.h:14 +msgid "_Subscription" +msgstr "_ПодпиÑка" + +#: ../data/glade/roster_window.glade.h:1 +msgid "A_ccounts" +msgstr "Ð_ккаунты" + +#: ../data/glade/roster_window.glade.h:2 +msgid "Add _Contact" +msgstr "Добавить _контакт" + +#: ../data/glade/roster_window.glade.h:3 +msgid "File _Transfers" +msgstr "_Передачи" + +#: ../data/glade/roster_window.glade.h:4 +msgid "Frequently Asked Questions (online)" +msgstr "ЧаÑто задаваемые вопроÑÑ‹ (в Ñети)" + +#: ../data/glade/roster_window.glade.h:6 +msgid "Help online" +msgstr "Помощь онлайн" + +#: ../data/glade/roster_window.glade.h:7 +msgid "Profile, Avatar" +msgstr "Профиль, Ðватара" + +#: ../data/glade/roster_window.glade.h:8 +msgid "Show _Offline Contacts" +msgstr "Показать _отключенных" + +#: ../data/glade/roster_window.glade.h:11 +msgid "_Contents" +msgstr "_Содержание" + +#: ../data/glade/roster_window.glade.h:12 +msgid "_Discover Services" +msgstr "_ПроÑмотреть ÑервиÑÑ‹" + +#: ../data/glade/roster_window.glade.h:13 ../src/disco.py:1252 +#: ../src/roster_window.py:1462 +msgid "_Edit" +msgstr "_Правка" + +#: ../data/glade/roster_window.glade.h:14 +msgid "_FAQ" +msgstr "_ЧаВО" + +#: ../data/glade/roster_window.glade.h:16 +msgid "_Help" +msgstr "_Помощь" + +#: ../data/glade/roster_window.glade.h:17 +msgid "_Preferences" +msgstr "_ÐаÑтройки" + +#: ../data/glade/roster_window.glade.h:18 +msgid "_Quit" +msgstr "_Выйти" + +#: ../data/glade/service_discovery_window.glade.h:1 +msgid "G_o" +msgstr "_Вперед" + +#: ../data/glade/service_discovery_window.glade.h:2 +msgid "_Address:" +msgstr "_ÐдреÑ:" + +#: ../data/glade/service_discovery_window.glade.h:3 +msgid "_Filter:" +msgstr "_Фильтр:" + +#: ../data/glade/service_registration_window.glade.h:1 +msgid "Register to" +msgstr "ЗарегиÑтрировать в" + +#: ../data/glade/service_registration_window.glade.h:2 +msgid "_Cancel" +msgstr "О_тменить" + +#: ../data/glade/service_registration_window.glade.h:3 +msgid "_OK" +msgstr "_ОК" + +#: ../data/glade/single_message_window.glade.h:1 +msgid "0" +msgstr "0" + +#: ../data/glade/single_message_window.glade.h:2 +msgid "From:" +msgstr "От:" + +#: ../data/glade/single_message_window.glade.h:3 +msgid "Reply to this message" +msgstr "Ответить на Ñто Ñообщение" + +#: ../data/glade/single_message_window.glade.h:4 +msgid "Sen_d" +msgstr "_Отправить" + +#: ../data/glade/single_message_window.glade.h:5 +msgid "Send message" +msgstr "Отправить Ñообщение" + +#: ../data/glade/single_message_window.glade.h:6 +msgid "Send message and close window" +msgstr "Отправить Ñообщение и закрыть окно" + +#: ../data/glade/single_message_window.glade.h:7 +msgid "Subject:" +msgstr "Тема:" + +#: ../data/glade/single_message_window.glade.h:8 +msgid "To:" +msgstr "К:" + +#: ../data/glade/single_message_window.glade.h:9 +msgid "_Reply" +msgstr "_Ответить" + +#: ../data/glade/single_message_window.glade.h:10 +msgid "_Send & Close" +msgstr "Отправить и _закрыть" + +#: ../data/glade/subscription_request_window.glade.h:1 +msgid "Authorize contact so he can know when you're connected" +msgstr "Ðвторизовать контакт (он будет видеть ваш ÑтатуÑ)" + +#: ../data/glade/subscription_request_window.glade.h:2 +msgid "Contact _Info" +msgstr "_Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ Контакте" + +#: ../data/glade/subscription_request_window.glade.h:3 +msgid "Deny authorization from contact so he cannot know when you're connected" +msgstr "Отклонить авторизацию от контакта (Он не Ñможет видеть ваш ÑтатуÑ)" + +#: ../data/glade/subscription_request_window.glade.h:4 +msgid "Subscription Request" +msgstr "Ð—Ð°Ð¿Ñ€Ð¾Ñ Ð¿Ð¾Ð´Ð¿Ð¸Ñки" + +#: ../data/glade/subscription_request_window.glade.h:5 +msgid "_Authorize" +msgstr "_Ðвторизовать" + +#: ../data/glade/subscription_request_window.glade.h:6 +msgid "_Deny" +msgstr "_Отклонить" + +#: ../data/glade/systray_context_menu.glade.h:2 +msgid "Show All Pending _Events" +msgstr "Показать ÐепроÑмотренные _СобытиÑ" + +#: ../data/glade/systray_context_menu.glade.h:3 +msgid "Show _Roster" +msgstr "Показать _роÑтер" + +#: ../data/glade/systray_context_menu.glade.h:4 +msgid "Sta_tus" +msgstr "Ста_туÑ" + +#. "About" is the text of a tab of vcard window +#: ../data/glade/vcard_information_window.glade.h:2 +msgid "About" +msgstr "Подробнее" + +#: ../data/glade/vcard_information_window.glade.h:3 +msgid "Address" +msgstr "ÐдреÑ" + +#: ../data/glade/vcard_information_window.glade.h:4 +msgid "Ask:" +msgstr "Спрашивать:" + +#: ../data/glade/vcard_information_window.glade.h:5 +msgid "Birthday:" +msgstr "День рождениÑ:" + +#: ../data/glade/vcard_information_window.glade.h:6 +msgid "City:" +msgstr "Город:" + +#: ../data/glade/vcard_information_window.glade.h:7 +msgid "Client:" +msgstr "Клиент:" + +#: ../data/glade/vcard_information_window.glade.h:8 +msgid "Company:" +msgstr "КомпаниÑ:" + +#: ../data/glade/vcard_information_window.glade.h:9 +msgid "Contact Information" +msgstr "Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ контакте" + +#: ../data/glade/vcard_information_window.glade.h:10 +msgid "Country:" +msgstr "Страна:" + +#: ../data/glade/vcard_information_window.glade.h:11 +msgid "Department:" +msgstr "Отделение:" + +#: ../data/glade/vcard_information_window.glade.h:12 +msgid "E-Mail:" +msgstr "Почта:" + +#: ../data/glade/vcard_information_window.glade.h:13 +msgid "Extra Address:" +msgstr "Дополнительный адреÑ:" + +#. Family Name +#: ../data/glade/vcard_information_window.glade.h:15 +msgid "Family:" +msgstr "ФамилиÑ:" + +#: ../data/glade/vcard_information_window.glade.h:16 +msgid "Format: YYYY-MM-DD" +msgstr "Формат: YYYY-MM-DD" + +#. Given Name +#: ../data/glade/vcard_information_window.glade.h:19 +msgid "Given:" +msgstr "ИмÑ:" + +#: ../data/glade/vcard_information_window.glade.h:20 +msgid "Homepage:" +msgstr "Веб-Ñтраница:" + +#: ../data/glade/vcard_information_window.glade.h:21 +msgid "Jabber" +msgstr "Jabber" + +#: ../data/glade/vcard_information_window.glade.h:22 +msgid "Jabber ID:" +msgstr "Jabber ID:" + +#: ../data/glade/vcard_information_window.glade.h:23 +msgid "Location" +msgstr "РаÑположение" + +#. Middle Name +#: ../data/glade/vcard_information_window.glade.h:25 +msgid "Middle:" +msgstr "ОтчеÑтво:" + +#: ../data/glade/vcard_information_window.glade.h:26 +msgid "More" +msgstr "Еще" + +#: ../data/glade/vcard_information_window.glade.h:29 +msgid "OS:" +msgstr "ОС:" + +#: ../data/glade/vcard_information_window.glade.h:30 +msgid "Phone No.:" +msgstr "Телефон:" + +#: ../data/glade/vcard_information_window.glade.h:31 +msgid "Position:" +msgstr "ДолжноÑÑ‚ÑŒ:" + +#: ../data/glade/vcard_information_window.glade.h:32 +msgid "Postal Code:" +msgstr "ИндекÑ:" + +#. Prefix in Name +#: ../data/glade/vcard_information_window.glade.h:34 +msgid "Prefix:" +msgstr "ПрефикÑ:" + +#: ../data/glade/vcard_information_window.glade.h:35 +msgid "Resource:" +msgstr "РеÑурÑ:" + +#: ../data/glade/vcard_information_window.glade.h:36 +msgid "Role:" +msgstr "ОбÑзанноÑти:" + +#: ../data/glade/vcard_information_window.glade.h:37 +msgid "Set _Avatar" +msgstr "УÑтановить _Ðватару" + +#: ../data/glade/vcard_information_window.glade.h:38 +msgid "State:" +msgstr "Штат:" + +#: ../data/glade/vcard_information_window.glade.h:39 +msgid "Status:" +msgstr "СтатуÑ:" + +#: ../data/glade/vcard_information_window.glade.h:40 +msgid "Street:" +msgstr "Улица:" + +#: ../data/glade/vcard_information_window.glade.h:41 +msgid "Subscription:" +msgstr "ПодпиÑка:" + +#. Suffix in Name +#: ../data/glade/vcard_information_window.glade.h:43 +msgid "Suffix:" +msgstr "СуффикÑ:" + +#: ../data/glade/vcard_information_window.glade.h:44 +msgid "Work" +msgstr "Работа" + +#: ../data/glade/vcard_information_window.glade.h:45 +msgid "_Log conversation history" +msgstr "_ИÑÑ‚Ð¾Ñ€Ð¸Ñ ÑообщениÑ" + +#: ../data/glade/vcard_information_window.glade.h:46 +msgid "_Publish" +msgstr "_Опубликовать" + +#: ../data/glade/vcard_information_window.glade.h:47 +msgid "_Retrieve" +msgstr "_Получить" + +#: ../data/glade/xml_console_window.glade.h:1 +msgid "Jabber Traffic" +msgstr "Jabber Траффик" + +#: ../data/glade/xml_console_window.glade.h:2 +msgid "XML Input" +msgstr "XML Ввод" + +#. XML Console enable checkbutton +#: ../data/glade/xml_console_window.glade.h:4 +msgid "Enable" +msgstr "Включить" + +#. Info/Query make the "IQ" initials. So translate like this 'YourLang/YourLang (Info/Query)'. Thanks (it's a tooltip so width is not a problem) +#: ../data/glade/xml_console_window.glade.h:6 +msgid "Info/Query" +msgstr "ИнформациÑ/ЗапроÑ" + +#. Info/Query: all(?) jabber xml start with Whom do you want to ban?\n" "\n" @@ -372,11 +2437,11 @@ msgstr "" "Кого вы хотите забанить?\n" "\n" -#: ../src/config.py:2023 +#: ../src/config.py:2062 msgid "Adding Member..." -msgstr "ДобавлÑÑŽ УчаÑтника..." +msgstr "ДобавлÑÑŽ учаÑтника..." -#: ../src/config.py:2024 +#: ../src/config.py:2063 msgid "" "Whom do you want to make a member?\n" "\n" @@ -384,11 +2449,11 @@ msgstr "" "Кого вы хотите Ñделать учаÑтником?\n" "\n" -#: ../src/config.py:2026 +#: ../src/config.py:2065 msgid "Adding Owner..." -msgstr "ДобавлÑÑŽ Владельца..." +msgstr "ДобавлÑÑŽ владельца..." -#: ../src/config.py:2027 +#: ../src/config.py:2066 msgid "" "Whom do you want to make a owner?\n" "\n" @@ -396,11 +2461,11 @@ msgstr "" "Кого вы хотите Ñделать владельцем?\n" "\n" -#: ../src/config.py:2029 +#: ../src/config.py:2068 msgid "Adding Administrator..." -msgstr "ДобавлÑÑŽ ÐдминиÑтратора..." +msgstr "ДобавлÑÑŽ админиÑтратора..." -#: ../src/config.py:2030 +#: ../src/config.py:2069 msgid "" "Whom do you want to make an administrator?\n" "\n" @@ -408,7 +2473,7 @@ msgstr "" "Кого вы хотите Ñделать админиÑтратором?\n" "\n" -#: ../src/config.py:2031 +#: ../src/config.py:2070 msgid "" "Can be one of the following:\n" "1. user@domain/resource (only that resource matches).\n" @@ -424,109 +2489,114 @@ msgstr "" "4. domain (Ñам домен, Ñ‚.е. как любое Ñочетание user@domain,\n" "domain/resource, так и адреÑ, Ñодержащий Ñтот поддомен)" -#: ../src/config.py:2127 +#: ../src/config.py:2166 #, python-format msgid "Removing %s account" msgstr "Удаление учетной запиÑи %s" -#: ../src/config.py:2144 ../src/roster_window.py:1859 +#: ../src/config.py:2183 ../src/roster_window.py:1857 msgid "Password Required" -msgstr "ТребуетÑÑ ÐŸÐ°Ñ€Ð¾Ð»ÑŒ" +msgstr "ТребуетÑÑ Ð¿Ð°Ñ€Ð¾Ð»ÑŒ" -#: ../src/config.py:2145 ../src/roster_window.py:1860 +#: ../src/config.py:2184 ../src/roster_window.py:1858 #, python-format msgid "Enter your password for account %s" msgstr "Введите пароль Ð´Ð»Ñ ÑƒÑ‡ÐµÑ‚Ð½Ð¾Ð¹ запиÑи %s" -#: ../src/config.py:2146 ../src/roster_window.py:1861 +#: ../src/config.py:2185 ../src/roster_window.py:1859 msgid "Save password" msgstr "Сохранить пароль" -#: ../src/config.py:2159 +#: ../src/config.py:2198 #, python-format msgid "Account \"%s\" is connected to the server" msgstr "Ð£Ñ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ \"%s\" подключена к Ñерверу" -#: ../src/config.py:2160 +#: ../src/config.py:2199 msgid "If you remove it, the connection will be lost." msgstr "ЕÑли вы удалите его, произойдет отключение." -#: ../src/config.py:2295 -msgid "New Room" -msgstr "ÐÐ¾Ð²Ð°Ñ ÐšÐ¾Ð¼Ð½Ð°Ñ‚Ð°" +#: ../src/config.py:2282 +msgid "Enter and leave only" +msgstr "" -#: ../src/config.py:2326 +#: ../src/config.py:2352 +msgid "New Room" +msgstr "ÐÐ¾Ð²Ð°Ñ ÐºÐ¾Ð¼Ð½Ð°Ñ‚Ð°" + +#: ../src/config.py:2383 msgid "This bookmark has invalid data" msgstr "Эта закладка Ñодержит неверные данные" -#: ../src/config.py:2327 -msgid "Please be sure to fill out server and room fields or remove this bookmark." +#: ../src/config.py:2384 +msgid "" +"Please be sure to fill out server and room fields or remove this bookmark." msgstr "" -"ПожалуйÑта, удоÑтоверьтеÑÑŒ что заполнены Ð¿Ð¾Ð»Ñ Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ Ñервера и комнаты " +"ПожалуйÑта, удоÑтоверьтеÑÑŒ, что заполнены Ð¿Ð¾Ð»Ñ Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ Ñервера и комнаты, " "либо удалите Ñту закладку." -#: ../src/config.py:2564 +#: ../src/config.py:2638 msgid "Invalid username" msgstr "Ðеверное Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ" -#: ../src/config.py:2565 +#: ../src/config.py:2639 msgid "You must provide a username to configure this account." msgstr "Ð”Ð»Ñ Ð½Ð°Ñтройки учетной запиÑи необходимо ввеÑти Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ." -#: ../src/config.py:2574 ../src/dialogs.py:1036 +#: ../src/config.py:2648 ../src/dialogs.py:1118 msgid "Invalid password" msgstr "Ðеверный пароль" -#: ../src/config.py:2575 +#: ../src/config.py:2649 msgid "You must enter a password for the new account." msgstr "Ðеобходимо ввеÑти пароль Ð´Ð»Ñ Ð½Ð¾Ð²Ð¾Ð¹ учетной запиÑи." -#: ../src/config.py:2579 ../src/dialogs.py:1041 +#: ../src/config.py:2653 ../src/dialogs.py:1123 msgid "Passwords do not match" msgstr "Пароли не Ñовпадают" -#: ../src/config.py:2580 ../src/dialogs.py:1042 +#: ../src/config.py:2654 ../src/dialogs.py:1124 msgid "The passwords typed in both fields must be identical." -msgstr "Пароли, введенные в оба Ð¿Ð¾Ð»Ñ Ð´Ð¾Ð»Ð¶Ð½Ñ‹ быть одинаковы." +msgstr "Пароли, введенные в оба полÑ, должны быть одинаковы." -#: ../src/config.py:2599 +#: ../src/config.py:2673 msgid "Duplicate Jabber ID" msgstr "ДублирующийÑÑ Jabber ID" -#: ../src/config.py:2600 +#: ../src/config.py:2674 msgid "This account is already configured in Gajim." msgstr "Этот контакт уже наÑтроен в Gajim." -#: ../src/config.py:2617 +#: ../src/config.py:2691 msgid "Account has been added successfully" msgstr "Ð£Ñ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ уÑпешно добавлена" -#: ../src/config.py:2618 ../src/config.py:2651 +#: ../src/config.py:2692 ../src/config.py:2725 msgid "" "You can set advanced account options by pressing Advanced button, or later " "by clicking in Accounts menuitem under Edit menu from the main window." msgstr "" "Ð£Ñ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ была уÑпешно добавлена. \n" "Ð’Ñ‹ можете наÑтроить ее иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ \n" -"\"ÐаÑтройка->Учентые запиÑи\" из главного окна." +"\"ÐаÑтройка->Учетные запиÑи\" из главного окна." -#: ../src/config.py:2650 +#: ../src/config.py:2724 msgid "Your new account has been created successfully" msgstr "Ваша Ð½Ð¾Ð²Ð°Ñ ÑƒÑ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ уÑпешно Ñоздана" -#: ../src/config.py:2666 +#: ../src/config.py:2740 msgid "An error occured during account creation" msgstr "Произошла ошибка при Ñоздании учетной запиÑи" -#: ../src/config.py:2723 +#: ../src/config.py:2797 msgid "Account name is in use" msgstr "Такое Ð¸Ð¼Ñ ÑƒÑ‡ÐµÑ‚Ð½Ð¾Ð¹ запиÑи уже иÑпользуетÑÑ" -#: ../src/config.py:2724 +#: ../src/config.py:2798 msgid "You already have an account using this name." msgstr "У Ð¼ÐµÐ½Ñ ÑƒÐ¶Ðµ еÑÑ‚ÑŒ ÑƒÑ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ Ñ Ñ‚Ð°ÐºÐ¸Ð¼ именем." -#: ../src/conversation_textview.py:182 +#: ../src/conversation_textview.py:205 msgid "" "Text below this line is what has been said since the last time you paid " "attention to this group chat" @@ -534,387 +2604,461 @@ msgstr "" "ТекÑÑ‚ под Ñтой линией был Ñказан поÑле того, как вы поÑледний раз " "заглÑдывали в Ñту комнату" -#: ../src/conversation_textview.py:239 +#: ../src/conversation_textview.py:263 #, python-format msgid "Actions for \"%s\"" msgstr "ДейÑÑ‚Ð²Ð¸Ñ Ð´Ð»Ñ \"%s\"" -#: ../src/conversation_textview.py:251 +#: ../src/conversation_textview.py:275 msgid "Read _Wikipedia Article" msgstr "Смотреть Ñтатью в _Wikipedia" -#: ../src/conversation_textview.py:255 +#: ../src/conversation_textview.py:280 msgid "Look it up in _Dictionary" -msgstr "ИÑкать в _Dictionary" +msgstr "ИÑкать в _Ñловаре" #. we must have %s in the url if not WIKTIONARY -#: ../src/conversation_textview.py:270 +#: ../src/conversation_textview.py:296 #, python-format msgid "Dictionary URL is missing an \"%s\" and it is not WIKTIONARY" msgstr "URL ÑÐ»Ð¾Ð²Ð°Ñ€Ñ Ð¿Ñ€Ð¾Ð¿ÑƒÑ‰ÐµÐ½ в \"%s\" и Ñто не WIKTIONARY" #. we must have %s in the url -#: ../src/conversation_textview.py:281 +#: ../src/conversation_textview.py:308 #, python-format msgid "Web Search URL is missing an \"%s\"" msgstr "URL Web-поиÑка отÑутÑтвует в \"%s\"" -#: ../src/conversation_textview.py:284 +#: ../src/conversation_textview.py:311 msgid "Web _Search for it" msgstr "_ПоиÑк по Web" -#: ../src/conversation_textview.py:574 +#: ../src/conversation_textview.py:607 msgid "Yesterday" msgstr "Вчера" #. the number is >= 2 #. %i is day in year (1-365), %d (1-31) we want %i -#: ../src/conversation_textview.py:578 +#: ../src/conversation_textview.py:611 #, python-format msgid "%i days ago" msgstr "%i дней назад" #. if we have subject, show it too! -#: ../src/conversation_textview.py:634 +#: ../src/conversation_textview.py:686 #, python-format msgid "Subject: %s\n" msgstr "Тема: %s\n" #. only say that to non Windows users -#: ../src/dbus_support.py:34 +#: ../src/dbus_support.py:32 msgid "D-Bus python bindings are missing in this computer" -msgstr "Ðа компьютере не уÑтановлены биндинги питона Ð´Ð»Ñ D-Bus" +msgstr "Ðа компьютере не уÑтановлена библиотека D-Bus Ð´Ð»Ñ Python" -#: ../src/dbus_support.py:35 +#: ../src/dbus_support.py:33 msgid "D-Bus capabilities of Gajim cannot be used" msgstr "ВозможноÑти работы Gajim Ñ D-Bus не могут быть иÑпользованы" -#: ../src/dialogs.py:64 +#: ../src/dialogs.py:55 #, python-format msgid "Contact's name: %s" msgstr "Ð˜Ð¼Ñ ÐºÐ¾Ð½Ñ‚Ð°ÐºÑ‚Ð°: %s" -#: ../src/dialogs.py:66 +#: ../src/dialogs.py:57 #, python-format msgid "JID: %s" msgstr "JID: %s" -#: ../src/dialogs.py:169 +#. Group name +#. In group boolean +#: ../src/dialogs.py:173 msgid "Group" msgstr "Группа" -#: ../src/dialogs.py:176 +#: ../src/dialogs.py:180 msgid "In the group" msgstr "Ð’ группе" -#: ../src/dialogs.py:226 +#: ../src/dialogs.py:230 msgid "KeyID" msgstr "KeyID" -#: ../src/dialogs.py:229 +#: ../src/dialogs.py:233 msgid "Contact name" msgstr "Ð˜Ð¼Ñ ÐºÐ¾Ð½Ñ‚Ð°ÐºÑ‚Ð°" -#: ../src/dialogs.py:263 +#: ../src/dialogs.py:266 #, python-format msgid "%s Status Message" -msgstr "Сообщение о СтатуÑе %s" +msgstr "Сообщение о ÑтатуÑе %s" -#: ../src/dialogs.py:265 +#: ../src/dialogs.py:268 msgid "Status Message" -msgstr "Сообщение о СтатуÑе" +msgstr "Сообщение о ÑтатуÑе" -#: ../src/dialogs.py:340 +#: ../src/dialogs.py:343 msgid "Save as Preset Status Message" -msgstr "Сохранить УÑтановленное Сообщение о СтатуÑе" +msgstr "Сохранить уÑтановленное Ñообщение о ÑтатуÑе" -#: ../src/dialogs.py:341 +#: ../src/dialogs.py:344 msgid "Please type a name for this status message" msgstr "Введите Ð¸Ð¼Ñ Ð´Ð»Ñ Ñтого ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¾ ÑтатуÑе" -#: ../src/dialogs.py:369 +#: ../src/dialogs.py:391 #, python-format msgid "Please fill in the data of the contact you want to add in account %s" -msgstr "ПожалуйÑта, заполните данные о вашей уже ÑущеÑтвующей учетной запиÑи %s" +msgstr "" +"ПожалуйÑта, заполните данные о вашей уже ÑущеÑтвующей учетной запиÑи %s" -#: ../src/dialogs.py:371 +#: ../src/dialogs.py:393 msgid "Please fill in the data of the contact you want to add" msgstr "ПожалуйÑта, заполните данные Ð´Ð»Ñ ÐºÐ¾Ð½Ñ‚Ð°ÐºÑ‚Ð° который вы хотите добавить" -#. the user can be in mutiple groups, see in all of them -#: ../src/dialogs.py:380 ../src/disco.py:118 ../src/disco.py:119 -#: ../src/disco.py:1258 ../src/roster_window.py:214 -#: ../src/roster_window.py:275 ../src/roster_window.py:310 -#: ../src/roster_window.py:330 ../src/roster_window.py:354 -#: ../src/roster_window.py:2940 ../src/roster_window.py:2942 -#: ../src/systray.py:291 ../src/common/helpers.py:42 +#: ../src/dialogs.py:403 ../src/disco.py:109 ../src/disco.py:110 +#: ../src/disco.py:1249 ../src/roster_window.py:207 +#: ../src/roster_window.py:273 ../src/roster_window.py:309 +#: ../src/roster_window.py:329 ../src/roster_window.py:353 +#: ../src/roster_window.py:2973 ../src/roster_window.py:2975 +#: ../src/common/helpers.py:39 msgid "Transports" msgstr "ТранÑпорты" -#: ../src/dialogs.py:452 ../src/dialogs.py:458 +#: ../src/dialogs.py:493 ../src/dialogs.py:499 msgid "Invalid User ID" msgstr "Ðеверный ID пользователÑ" -#: ../src/dialogs.py:459 +#: ../src/dialogs.py:500 msgid "The user ID must not contain a resource." msgstr "ID Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð½Ðµ должен Ñодержать реÑурÑ." -#: ../src/dialogs.py:466 +#: ../src/dialogs.py:513 msgid "Contact already in roster" msgstr "Контакт уже в роÑтере" -#: ../src/dialogs.py:467 +#: ../src/dialogs.py:514 msgid "This contact is already listed in your roster." msgstr "Этот контакт уже ÑодержитÑÑ Ð² вашем роÑтере." -#: ../src/dialogs.py:528 +#: ../src/dialogs.py:576 msgid "A GTK+ jabber client" msgstr "Jabber-клиент на GTK+" -#: ../src/dialogs.py:539 +#: ../src/dialogs.py:577 +msgid "GTK+ Version:" +msgstr "" + +#: ../src/dialogs.py:578 +msgid "PyGTK Version:" +msgstr "" + +#: ../src/dialogs.py:586 +#, fuzzy +msgid "Current Developers:" +msgstr "Разработчики:" + +#: ../src/dialogs.py:588 msgid "Past Developers:" msgstr "Разработчики:" -#: ../src/dialogs.py:543 +#: ../src/dialogs.py:592 msgid "THANKS:" msgstr "БЛÐГОДÐРÐОСТИ:" -#. remove one english setence +#. remove one english sentence #. and add it manually as translatable -#: ../src/dialogs.py:550 +#: ../src/dialogs.py:598 msgid "Last but not least, we would like to thank all the package maintainers." -msgstr "И наконец, мы хотели бы поблагодарить вÑех мейтейнеров пакетов." +msgstr "И наконец, мы хотели бы поблагодарить вÑех мейнтейнеров пакетов." #. here you write your name in the form Name FamilyName -#: ../src/dialogs.py:564 +#: ../src/dialogs.py:612 msgid "translator-credits" msgstr "переводчики" -#: ../src/dialogs.py:826 +#: ../src/dialogs.py:738 +#, python-format +msgid "Unable to bind to port %s." +msgstr "" + +#: ../src/dialogs.py:739 +msgid "" +"Maybe you have another running instance of Gajim. File Transfer will be " +"canceled." +msgstr "" + +#: ../src/dialogs.py:881 #, python-format msgid "Subscription request for account %s from %s" msgstr "Ð—Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð° подпиÑку Ð´Ð»Ñ ÑƒÑ‡ÐµÑ‚Ð½Ð¾Ð¹ запиÑи %s от %s" -#: ../src/dialogs.py:829 +#: ../src/dialogs.py:884 #, python-format msgid "Subscription request from %s" msgstr "Ð—Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð° подпиÑку от %s" -#: ../src/dialogs.py:872 +#: ../src/dialogs.py:926 msgid "You can not join a group chat unless you are connected." msgstr "Ð’Ñ‹ не можете зайти в комнату без подключениÑ." -#: ../src/dialogs.py:885 +#: ../src/dialogs.py:939 #, python-format msgid "Join Group Chat with account %s" -msgstr "Войти в Комнату Ñ ÑƒÑ‡ÐµÑ‚Ð½Ð¾Ð¹ запиÑи %s" +msgstr "Войти в комнату Ñ ÑƒÑ‡ÐµÑ‚Ð½Ð¾Ð¹ запиÑи %s" -#: ../src/dialogs.py:887 ../src/gtkgui.glade.h:177 -msgid "Join Group Chat" -msgstr "Войти в Комнату" - -#: ../src/dialogs.py:976 +#: ../src/dialogs.py:1030 msgid "Invalid room or server name" msgstr "Ðеверное Ð¸Ð¼Ñ ÐºÐ¾Ð¼Ð½Ð°Ñ‚Ñ‹ или Ñервера" -#: ../src/dialogs.py:977 +#: ../src/dialogs.py:1031 msgid "The room name or server name has not allowed characters." msgstr "Ð’ имени комнаты или Ñервера ÑодержатÑÑ Ð½ÐµÐ´Ð¾Ð¿ÑƒÑтимые Ñимволы." -#: ../src/dialogs.py:996 +#: ../src/dialogs.py:1050 #, python-format msgid "Start Chat with account %s" -msgstr "Ðачать БеÑеду Ñ ÑƒÑ‡ÐµÑ‚Ð½Ð¾Ð¹ запиÑью %s" +msgstr "Ðачать беÑеду Ñ ÑƒÑ‡ÐµÑ‚Ð½Ð¾Ð¹ запиÑью %s" -#: ../src/dialogs.py:998 +#: ../src/dialogs.py:1052 msgid "Start Chat" -msgstr "Ðачать БеÑеду" +msgstr "Ðачать беÑеду" -#: ../src/dialogs.py:999 +#: ../src/dialogs.py:1053 +#, fuzzy msgid "" -"Fill in the contact ID of the contact you would like\n" +"Fill in the jid, or nick of the contact you would like\n" "to send a chat message to:" msgstr "Введите ID Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ð¾Ð¼Ñƒ вы хотите отправить Ñообщение:" #. if offline or connecting -#: ../src/dialogs.py:1007 ../src/dialogs.py:1330 ../src/dialogs.py:1450 +#: ../src/dialogs.py:1078 ../src/dialogs.py:1427 ../src/dialogs.py:1551 msgid "Connection not available" msgstr "Соединение невозможно" -#: ../src/dialogs.py:1008 ../src/dialogs.py:1331 ../src/dialogs.py:1451 +#: ../src/dialogs.py:1079 ../src/dialogs.py:1428 ../src/dialogs.py:1552 #, python-format msgid "Please make sure you are connected with \"%s\"." -msgstr "ПожалуйÑта, удоÑтоверьтеÑÑŒ что вы подключены к \"%s\"." +msgstr "ПожалуйÑта, удоÑтоверьтеÑÑŒ, что вы подключены к \"%s\"." -#: ../src/dialogs.py:1018 +#: ../src/dialogs.py:1088 ../src/dialogs.py:1091 +#, fuzzy +msgid "Invalid JID" +msgstr "Ðеверный Jabber ID" + +#: ../src/dialogs.py:1091 +#, python-format +msgid "Unable to parse \"%s\"." +msgstr "" + +#: ../src/dialogs.py:1100 msgid "Without a connection, you can not change your password." -msgstr "Ð”Ð»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¿Ð°Ñ€Ð¾Ð»ÑŒ необходимо подÑоединитьÑÑ Ðº Ñерверу." +msgstr "Чтобы изменить пароль, необходимо подÑоединитьÑÑ Ðº Ñерверу." -#: ../src/dialogs.py:1037 +#: ../src/dialogs.py:1119 msgid "You must enter a password." msgstr "Ð’Ñ‹ должны ввеÑти пароль." #. img to display #. default value -#: ../src/dialogs.py:1083 ../src/gajim.py:443 ../src/notify.py:129 +#: ../src/dialogs.py:1165 ../src/notify.py:126 ../src/notify.py:268 msgid "Contact Signed In" -msgstr "Контакт Ð’ Сети" +msgstr "Контакт в Ñети" -#: ../src/dialogs.py:1085 ../src/gajim.py:474 ../src/notify.py:131 +#: ../src/dialogs.py:1167 ../src/notify.py:134 ../src/notify.py:270 msgid "Contact Signed Out" -msgstr "Контакт ОтключилÑÑ" +msgstr "Контакт отключилÑÑ" #. chat message -#: ../src/dialogs.py:1087 ../src/gajim.py:609 ../src/notify.py:133 +#: ../src/dialogs.py:1169 ../src/notify.py:154 ../src/notify.py:272 msgid "New Message" -msgstr "Ðовое Сообшение" +msgstr "Ðовое Ñообщение" #. single message -#: ../src/dialogs.py:1087 ../src/gajim.py:603 ../src/notify.py:133 +#: ../src/dialogs.py:1169 ../src/notify.py:138 ../src/notify.py:272 msgid "New Single Message" -msgstr "Ðовое Ñообшение" +msgstr "Ðовое одиночное Ñообщение" -#: ../src/dialogs.py:1088 ../src/gajim.py:586 ../src/notify.py:134 +#. private message +#: ../src/dialogs.py:1170 ../src/notify.py:145 ../src/notify.py:273 msgid "New Private Message" -msgstr "Ðовое Личное Сообщение" +msgstr "Ðовое личное Ñообщение" -#: ../src/dialogs.py:1088 ../src/gajim.py:1049 ../src/notify.py:142 +#: ../src/dialogs.py:1170 ../src/gajim.py:1044 ../src/notify.py:281 msgid "New E-mail" msgstr "Ðовое пиÑьмо" -#: ../src/dialogs.py:1090 ../src/gajim.py:1187 ../src/notify.py:136 +#: ../src/dialogs.py:1172 ../src/gajim.py:1187 ../src/notify.py:275 msgid "File Transfer Request" -msgstr "Ð—Ð°Ð¿Ñ€Ð¾Ñ ÐŸÐµÑ€ÐµÐ´Ð°Ñ‡Ð¸" +msgstr "Ð—Ð°Ð¿Ñ€Ð¾Ñ Ð¿ÐµÑ€ÐµÐ´Ð°Ñ‡Ð¸" -#: ../src/dialogs.py:1092 ../src/gajim.py:1035 ../src/gajim.py:1164 -#: ../src/notify.py:138 +#: ../src/dialogs.py:1174 ../src/gajim.py:1022 ../src/gajim.py:1164 +#: ../src/notify.py:277 msgid "File Transfer Error" -msgstr "Ошибка Передачи" +msgstr "Ошибка передачи" -#: ../src/dialogs.py:1094 ../src/gajim.py:1222 ../src/gajim.py:1244 -#: ../src/gajim.py:1261 ../src/notify.py:140 +#: ../src/dialogs.py:1176 ../src/gajim.py:1222 ../src/gajim.py:1244 +#: ../src/gajim.py:1261 ../src/notify.py:279 msgid "File Transfer Completed" -msgstr "Передача Файла Завершена" +msgstr "Передача файла завершена" -#: ../src/dialogs.py:1095 ../src/gajim.py:1225 ../src/notify.py:140 +#: ../src/dialogs.py:1177 ../src/gajim.py:1225 ../src/notify.py:279 msgid "File Transfer Stopped" msgstr "Передача оÑтановлена" -#: ../src/dialogs.py:1097 ../src/gajim.py:953 ../src/notify.py:144 +#: ../src/dialogs.py:1179 ../src/gajim.py:920 ../src/notify.py:283 msgid "Groupchat Invitation" msgstr "Приглашение в Комнату" +#: ../src/dialogs.py:1181 ../src/notify.py:118 ../src/notify.py:285 +#, fuzzy +msgid "Contact Changed Status" +msgstr "Контакт отключилÑÑ" + #. FIXME: for Received with should become 'in' -#: ../src/dialogs.py:1262 +#: ../src/dialogs.py:1359 #, python-format msgid "Single Message with account %s" -msgstr "Ðовое Сообщение Ñ ÑƒÑ‡ÐµÑ‚Ð½Ð¾Ð¹ запиÑи %s" +msgstr "Ðовое Ñообщение Ñ ÑƒÑ‡ÐµÑ‚Ð½Ð¾Ð¹ запиÑи %s" -#: ../src/dialogs.py:1264 +#: ../src/dialogs.py:1361 msgid "Single Message" msgstr "Сообщение" #. prepare UI for Sending -#: ../src/dialogs.py:1267 +#: ../src/dialogs.py:1364 #, python-format msgid "Send %s" msgstr "Отправить %s" #. prepare UI for Receiving -#: ../src/dialogs.py:1290 +#: ../src/dialogs.py:1387 #, python-format msgid "Received %s" msgstr "Получено %s" #. we create a new blank window to send and we preset RE: and to jid -#: ../src/dialogs.py:1355 +#: ../src/dialogs.py:1454 #, python-format msgid "RE: %s" msgstr "RE: %s" -#: ../src/dialogs.py:1356 +#: ../src/dialogs.py:1455 #, python-format msgid "%s wrote:\n" msgstr "%s напиÑал:\n" -#: ../src/dialogs.py:1400 +#: ../src/dialogs.py:1499 #, python-format msgid "XML Console for %s" -msgstr "XML КонÑоль Ð´Ð»Ñ %s" +msgstr "КонÑоль XML Ð´Ð»Ñ %s" -#: ../src/dialogs.py:1402 +#: ../src/dialogs.py:1501 msgid "XML Console" -msgstr "XML КонÑоль" +msgstr "КонÑоль XML" + +#: ../src/dialogs.py:1620 +#, python-format +msgid "Privacy List %s" +msgstr "" + +#: ../src/dialogs.py:1624 +#, python-format +msgid "Privacy List for %s" +msgstr "" + +#: ../src/dialogs.py:1716 +#, fuzzy +msgid "Edit a rule" +msgstr "Формат Ñтроки" + +#: ../src/dialogs.py:1801 +#, fuzzy +msgid "Add a rule" +msgstr "Формат Ñтроки" + +#: ../src/dialogs.py:1897 +#, python-format +msgid "Privacy Lists for %s" +msgstr "" + +#: ../src/dialogs.py:1899 +#, fuzzy +msgid "Privacy Lists" +msgstr "Личные БеÑеды" #. FIXME: use nickname instead of contact_jid -#: ../src/dialogs.py:1488 +#: ../src/dialogs.py:1988 #, python-format msgid "%(contact_jid)s has invited you to %(room_jid)s room" msgstr "%(contact_jid)s приглаÑил Ð²Ð°Ñ Ð² комнату %(room_jid)s." #. only if not None and not '' -#: ../src/dialogs.py:1494 +#: ../src/dialogs.py:1994 #, python-format msgid "Comment: %s" msgstr "Комментарий: %s" -#: ../src/dialogs.py:1554 +#: ../src/dialogs.py:2054 msgid "Choose Sound" -msgstr "Выберите Звуковой Файл" +msgstr "Выберите звуковой файл" -#: ../src/dialogs.py:1564 ../src/dialogs.py:1607 +#: ../src/dialogs.py:2064 ../src/dialogs.py:2107 msgid "All files" msgstr "Ð’Ñе файлы" -#: ../src/dialogs.py:1569 +#: ../src/dialogs.py:2069 msgid "Wav Sounds" -msgstr "Ð’ Формате Wav" +msgstr "Ð’ формате Wav" -#: ../src/dialogs.py:1597 +#: ../src/dialogs.py:2097 msgid "Choose Image" -msgstr "Выбрать Картинку" +msgstr "Выбрать картинку" -#: ../src/dialogs.py:1612 +#: ../src/dialogs.py:2112 msgid "Images" msgstr "Картинки" -#: ../src/dialogs.py:1658 +#: ../src/dialogs.py:2157 #, python-format msgid "When %s becomes:" msgstr "Когда %s проиÑходит:" -#: ../src/dialogs.py:1660 +#: ../src/dialogs.py:2159 #, python-format msgid "Adding Special Notification for %s" -msgstr "Добавление Специального Ð£Ð²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð´Ð»Ñ %s" +msgstr "Добавление Ñпециального ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð´Ð»Ñ %s" -#: ../src/disco.py:117 +#: ../src/dialogs.py:2232 +#, fuzzy +msgid "Condition" +msgstr "Соединение" + +#: ../src/disco.py:108 msgid "Others" msgstr "Другие" #. conference is a category for listing mostly groupchats in service discovery -#: ../src/disco.py:121 +#: ../src/disco.py:112 msgid "Conference" msgstr "Комнаты" -#: ../src/disco.py:420 +#: ../src/disco.py:411 msgid "Without a connection, you can not browse available services" msgstr "Ð”Ð»Ñ Ð¿Ñ€Ð¾Ñмотра ÑервиÑов необходимо Ñначала подÑоединитьÑÑ Ðº Ñерверу" -#: ../src/disco.py:499 +#: ../src/disco.py:490 #, python-format msgid "Service Discovery using account %s" -msgstr "Обзор СервиÑов Ñ Ð¸Ñпользование аккаунта %s" +msgstr "Обзор ÑервиÑов Ñ Ð¸Ñпользование аккаунта %s" -#: ../src/disco.py:500 +#: ../src/disco.py:491 msgid "Service Discovery" -msgstr "Обзор СервиÑов" +msgstr "Обзор ÑервиÑов (discovery)" -#: ../src/disco.py:637 +#: ../src/disco.py:628 msgid "The service could not be found" msgstr "Ð¡ÐµÑ€Ð²Ð¸Ñ Ð½Ðµ обнаружен" -#: ../src/disco.py:638 +#: ../src/disco.py:629 msgid "" "There is no service at the address you entered, or it is not responding. " "Check the address and try again." @@ -922,171 +3066,174 @@ msgstr "" "По Ñтому адреÑу ÑервиÑÑ‹ отÑутÑтвуют или не отвечают. Проверьте Ð°Ð´Ñ€ÐµÑ Ð¸ " "попробуйте еще раз." -#: ../src/disco.py:642 ../src/disco.py:924 +#: ../src/disco.py:633 ../src/disco.py:915 msgid "The service is not browsable" msgstr "Ð¡ÐµÑ€Ð²Ð¸Ñ Ð½ÐµÐ´Ð¾Ñтупен Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñмотра" -#: ../src/disco.py:643 +#: ../src/disco.py:634 msgid "This type of service does not contain any items to browse." msgstr "Этот ÑÐµÑ€Ð²Ð¸Ñ Ð½Ðµ Ñодержит ничего, что можно было бы проÑмотреть." -#: ../src/disco.py:723 +#: ../src/disco.py:714 #, python-format msgid "Browsing %s using account %s" msgstr "ПроÑмотр %s Ñ ÑƒÑ‡ÐµÑ‚Ð½Ð¾Ð¹ запиÑью %s" -#: ../src/disco.py:762 +#: ../src/disco.py:753 msgid "_Browse" msgstr "_Браузер" -#: ../src/disco.py:925 +#: ../src/disco.py:916 msgid "This service does not contain any items to browse." msgstr "Этот ÑÐµÑ€Ð²Ð¸Ñ Ð½Ðµ Ñодержит ничего, что можно было бы проÑмотреть." -#: ../src/disco.py:1146 ../src/disco.py:1263 +#: ../src/disco.py:1137 ../src/disco.py:1254 msgid "Re_gister" msgstr "Пере_региÑтрировать" -#: ../src/disco.py:1154 ../src/disco.py:1516 ../src/gtkgui.glade.h:350 -msgid "_Join" -msgstr "_ПриÑоединитьÑÑ" - -#: ../src/disco.py:1261 ../src/gtkgui.glade.h:334 ../src/roster_window.py:1462 -msgid "_Edit" -msgstr "_Правка" - -#: ../src/disco.py:1300 +#: ../src/disco.py:1291 #, python-format msgid "Scanning %d / %d.." msgstr "Сканирую %d / %d.." #. Users column -#: ../src/disco.py:1482 +#: ../src/disco.py:1473 msgid "Users" msgstr "Пользователи" #. Description column -#: ../src/disco.py:1489 +#: ../src/disco.py:1480 msgid "Description" msgstr "ОпиÑание" -#: ../src/filetransfers_window.py:81 +#: ../src/filetransfers_window.py:72 msgid "File" msgstr "Файл" -#: ../src/filetransfers_window.py:96 +#: ../src/filetransfers_window.py:87 msgid "Time" msgstr "ВремÑ" -#: ../src/filetransfers_window.py:108 +#: ../src/filetransfers_window.py:99 msgid "Progress" msgstr "ПрогреÑÑ" -#: ../src/filetransfers_window.py:176 ../src/filetransfers_window.py:238 +#: ../src/filetransfers_window.py:163 ../src/filetransfers_window.py:223 #, python-format msgid "Filename: %s" msgstr "Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°: %s" -#: ../src/filetransfers_window.py:178 ../src/filetransfers_window.py:308 +#: ../src/filetransfers_window.py:164 ../src/filetransfers_window.py:291 #, python-format msgid "Size: %s" msgstr "Размер: %s" #. You is a reply of who sent a file #. You is a reply of who received a file -#: ../src/filetransfers_window.py:187 ../src/filetransfers_window.py:197 -#: ../src/history_manager.py:452 +#: ../src/filetransfers_window.py:173 ../src/filetransfers_window.py:183 +#: ../src/history_manager.py:454 msgid "You" msgstr "Ð’Ñ‹" -#: ../src/filetransfers_window.py:188 ../src/filetransfers_window.py:240 +#: ../src/filetransfers_window.py:174 ../src/filetransfers_window.py:224 #, python-format msgid "Sender: %s" msgstr "Отправитель: %s" -#: ../src/filetransfers_window.py:189 ../src/filetransfers_window.py:555 -#: ../src/tooltips.py:617 +#: ../src/filetransfers_window.py:175 ../src/filetransfers_window.py:556 +#: ../src/tooltips.py:639 msgid "Recipient: " msgstr "Получатель:" -#: ../src/filetransfers_window.py:200 +#: ../src/filetransfers_window.py:186 #, python-format msgid "Saved in: %s" msgstr "Сохранено в: %s" -#: ../src/filetransfers_window.py:203 +#: ../src/filetransfers_window.py:188 msgid "File transfer completed" msgstr "Передача завершена" -#: ../src/filetransfers_window.py:205 ../src/gtkgui.glade.h:366 -msgid "_Open Containing Folder" -msgstr "_Открыть Папку Ñ ÐŸÑ€Ð¸Ð½Ñтым Файлом" - -#: ../src/filetransfers_window.py:219 ../src/filetransfers_window.py:227 +#: ../src/filetransfers_window.py:204 ../src/filetransfers_window.py:212 msgid "File transfer canceled" msgstr "Передача отменена" -#: ../src/filetransfers_window.py:219 ../src/filetransfers_window.py:228 +#: ../src/filetransfers_window.py:204 ../src/filetransfers_window.py:213 msgid "Connection with peer cannot be established." msgstr "Соединение не может быть уÑтановлено." -#: ../src/filetransfers_window.py:242 +#: ../src/filetransfers_window.py:225 msgid "File transfer stopped by the contact of the other side" msgstr "Передача файла оÑтановлена контактом на той Ñтороне" -#: ../src/filetransfers_window.py:259 +#: ../src/filetransfers_window.py:242 msgid "Choose File to Send..." -msgstr "Выбрать Файл Ð´Ð»Ñ ÐžÑ‚Ð¿Ñ€Ð°Ð²ÐºÐ¸..." +msgstr "Выбрать файл Ð´Ð»Ñ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²ÐºÐ¸..." -#. Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector) -#: ../src/filetransfers_window.py:266 ../src/gtkgui.glade.h:390 -msgid "_Send" -msgstr "_Отправить" - -#: ../src/filetransfers_window.py:273 +#: ../src/filetransfers_window.py:256 msgid "Gajim cannot access this file" msgstr "Ðет доÑтупа к файлу" -#: ../src/filetransfers_window.py:274 +#: ../src/filetransfers_window.py:257 msgid "This file is being used by another process." msgstr "Файл занÑÑ‚ другим процеÑÑом." -#: ../src/filetransfers_window.py:306 +#: ../src/filetransfers_window.py:289 #, python-format msgid "File: %s" msgstr "Файл: %s" -#: ../src/filetransfers_window.py:311 +#: ../src/filetransfers_window.py:294 #, python-format msgid "Type: %s" msgstr "Тип: %s" -#: ../src/filetransfers_window.py:313 +#: ../src/filetransfers_window.py:296 #, python-format msgid "Description: %s" msgstr "ОпиÑание: %s" -#: ../src/filetransfers_window.py:314 +#: ../src/filetransfers_window.py:297 #, python-format msgid "%s wants to send you a file:" msgstr "%s хочет отправить вам файл:" -#: ../src/filetransfers_window.py:329 +#: ../src/filetransfers_window.py:311 +#, python-format +msgid "Cannot overwrite existing file \"%s\"" +msgstr "" + +#: ../src/filetransfers_window.py:312 +msgid "" +"A file with this name already exists and you do not have permission to " +"overwrite it." +msgstr "" + +#: ../src/filetransfers_window.py:319 ../src/gtkgui_helpers.py:685 msgid "This file already exists" msgstr "Файл уже ÑущеÑтвует" -#: ../src/filetransfers_window.py:329 +#: ../src/filetransfers_window.py:319 ../src/gtkgui_helpers.py:685 msgid "What do you want to do?" msgstr "Что вы хотите Ñделать?" -#: ../src/filetransfers_window.py:344 +#: ../src/filetransfers_window.py:331 +#, python-format +msgid "Directory \"%s\" is not writable" +msgstr "" + +#: ../src/filetransfers_window.py:331 +msgid "You do not have permission to create files in this directory." +msgstr "" + +#: ../src/filetransfers_window.py:341 msgid "Save File as..." -msgstr "Сохнанить Файл как..." +msgstr "Сохранить файл как..." #. Print remaining time in format 00:00:00 #. You can change the places of (hours), (minutes), (seconds) - #. they are not translatable. -#: ../src/filetransfers_window.py:419 +#: ../src/filetransfers_window.py:420 #, python-format msgid "%(hours)02.d:%(minutes)02.d:%(seconds)02.d" msgstr "%(hours)02.d:%(minutes)02.d:%(seconds)02.d" @@ -1094,29 +3241,29 @@ msgstr "%(hours)02.d:%(minutes)02.d:%(seconds)02.d" #. This should make the string Kb/s, #. where 'Kb' part is taken from %s. #. Only the 's' after / (which means second) should be translated. -#: ../src/filetransfers_window.py:491 +#: ../src/filetransfers_window.py:492 #, python-format msgid "(%(filesize_unit)s/s)" msgstr "(%(filesize_unit)s/s)" -#: ../src/filetransfers_window.py:527 ../src/filetransfers_window.py:530 +#: ../src/filetransfers_window.py:528 ../src/filetransfers_window.py:531 msgid "Invalid File" msgstr "Ðеверный файл" -#: ../src/filetransfers_window.py:527 +#: ../src/filetransfers_window.py:528 msgid "File: " msgstr "Файл: " -#: ../src/filetransfers_window.py:531 +#: ../src/filetransfers_window.py:532 msgid "It is not possible to send empty files" msgstr "ÐÐµÐ»ÑŒÐ·Ñ Ð¾Ñ‚Ñылать пуÑтые файлы" -#: ../src/filetransfers_window.py:551 ../src/tooltips.py:498 -#: ../src/tooltips.py:607 +#: ../src/filetransfers_window.py:552 ../src/tooltips.py:511 +#: ../src/tooltips.py:629 msgid "Name: " msgstr "ИмÑ: " -#: ../src/filetransfers_window.py:553 ../src/tooltips.py:611 +#: ../src/filetransfers_window.py:554 ../src/tooltips.py:633 msgid "Sender: " msgstr "Отправитель:" @@ -1124,32 +3271,28 @@ msgstr "Отправитель:" msgid "Pause" msgstr "Пауза" -#: ../src/filetransfers_window.py:753 ../src/gtkgui.glade.h:328 -msgid "_Continue" -msgstr "_Продолжить" - -#: ../src/gajim-remote.py:84 +#: ../src/gajim-remote.py:82 msgid "shows a help on specific command" msgstr "показывает помощь Ð´Ð»Ñ Ð´Ð°Ð½Ð½Ð¾Ð¹ команды" #. User gets help for the command, specified by this parameter -#: ../src/gajim-remote.py:87 +#: ../src/gajim-remote.py:85 msgid "command" msgstr "команда" -#: ../src/gajim-remote.py:88 +#: ../src/gajim-remote.py:86 msgid "show help on command" msgstr "показать помощь по команде" -#: ../src/gajim-remote.py:92 +#: ../src/gajim-remote.py:90 msgid "Shows or hides the roster window" msgstr "Скрывает или показывает окно роÑтера" -#: ../src/gajim-remote.py:96 +#: ../src/gajim-remote.py:94 msgid "Popups a window with the next unread message" msgstr "Показывать окно Ñ Ñледующим непрочитанным Ñообщением" -#: ../src/gajim-remote.py:100 +#: ../src/gajim-remote.py:98 msgid "" "Prints a list of all contacts in the roster. Each contact appear on a " "separate line" @@ -1157,43 +3300,47 @@ msgstr "" "Выводит ÑпиÑок вÑех контактов в роÑтере. Каждый контакт будет в отдельной " "Ñтроке" -#: ../src/gajim-remote.py:102 ../src/gajim-remote.py:115 -#: ../src/gajim-remote.py:125 ../src/gajim-remote.py:138 -#: ../src/gajim-remote.py:159 ../src/gajim-remote.py:189 -#: ../src/gajim-remote.py:197 ../src/gajim-remote.py:204 -#: ../src/gajim-remote.py:211 +#: ../src/gajim-remote.py:100 ../src/gajim-remote.py:114 +#: ../src/gajim-remote.py:124 ../src/gajim-remote.py:137 +#: ../src/gajim-remote.py:151 ../src/gajim-remote.py:172 +#: ../src/gajim-remote.py:202 ../src/gajim-remote.py:211 +#: ../src/gajim-remote.py:218 ../src/gajim-remote.py:225 +#: ../src/gajim-remote.py:236 msgid "account" msgstr "Учетные запиÑи" -#: ../src/gajim-remote.py:102 +#: ../src/gajim-remote.py:100 msgid "show only contacts of the given account" msgstr "показывать контакты только Ð´Ð»Ñ Ð´Ð°Ð½Ð½Ð¾Ð¹ учетной запиÑи" -#: ../src/gajim-remote.py:107 +#: ../src/gajim-remote.py:105 msgid "Prints a list of registered accounts" msgstr "Показывает ÑпиÑок зарегиÑтрированных учетных запиÑей" -#: ../src/gajim-remote.py:111 +#: ../src/gajim-remote.py:109 msgid "Changes the status of account or accounts" msgstr "Изменить ÑÑ‚Ð°Ñ‚ÑƒÑ ÑƒÑ‡ÐµÑ‚Ð½Ð¾Ð¹ запиÑи или запиÑей" -#: ../src/gajim-remote.py:113 +#. offline, online, chat, away, xa, dnd, invisible should not be translated +#: ../src/gajim-remote.py:112 msgid "status" msgstr "ÑтатуÑ" -#: ../src/gajim-remote.py:113 +#: ../src/gajim-remote.py:112 msgid "one of: offline, online, chat, away, xa, dnd, invisible " -msgstr "один из: отключен, в Ñети, чат, отошел, недоÑтупен, не беÑпокоить, невидимка" +msgstr "" +"один из: отключен, в Ñети, чат, отошел, недоÑтупен, не беÑпокоить, невидимка" -#: ../src/gajim-remote.py:114 ../src/gajim-remote.py:135 +#: ../src/gajim-remote.py:113 ../src/gajim-remote.py:134 +#: ../src/gajim-remote.py:148 msgid "message" msgstr "Ñообщение" -#: ../src/gajim-remote.py:114 +#: ../src/gajim-remote.py:113 msgid "status message" msgstr "Ñообщение Ñервера" -#: ../src/gajim-remote.py:115 +#: ../src/gajim-remote.py:114 msgid "" "change status of account \"account\". If not specified, try to change status " "of all accounts that have \"sync with global status\" option set" @@ -1202,146 +3349,187 @@ msgstr "" "изменить ÑÑ‚Ð°Ñ‚ÑƒÑ Ð²Ñех учетных запиÑей у которых уÑтановлена Ð¾Ð¿Ñ†Ð¸Ñ " "\"Ñинхронизировать Ñ Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ñ‹Ð¼ ÑтатуÑом\"" -#: ../src/gajim-remote.py:121 +#: ../src/gajim-remote.py:120 msgid "Shows the chat dialog so that you can send messages to a contact" msgstr "Показывает окно беÑеды, чтобы вы могли отправлÑÑ‚ÑŒ ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ ÐºÐ¾Ð½Ñ‚Ð°ÐºÑ‚Ñƒ" -#: ../src/gajim-remote.py:123 +#: ../src/gajim-remote.py:122 msgid "JID of the contact that you want to chat with" msgstr "JID контакта Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ð¼ вы хотели бы побеÑедовать" -#: ../src/gajim-remote.py:125 ../src/gajim-remote.py:189 +#: ../src/gajim-remote.py:124 ../src/gajim-remote.py:202 msgid "if specified, contact is taken from the contact list of this account" msgstr "еÑли указано, контакт будет взÑÑ‚ из контакт-лиÑта Ñтой учетной запиÑи" -#: ../src/gajim-remote.py:130 +#: ../src/gajim-remote.py:129 +#, fuzzy msgid "" -"Sends new message to a contact in the roster. Both OpenPGP key and account " -"are optional. If you want to set only 'account', without 'OpenPGP key', just " -"set 'OpenPGP key' to ''." +"Sends new chat message to a contact in the roster. Both OpenPGP key and " +"account are optional. If you want to set only 'account', without 'OpenPGP " +"key', just set 'OpenPGP key' to ''." msgstr "" "Отправить новое Ñообщение контакту в роÑтере. Как OpenPGP ключ, так и " "ÑƒÑ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ опциональны. ЕÑли вы хотите наÑтроить лишь 'учетную запиÑÑŒ', " "без 'OpenPGP ключа', проÑто уÑтановите 'OpenPGP ключ' в ''." -#: ../src/gajim-remote.py:134 +#: ../src/gajim-remote.py:133 ../src/gajim-remote.py:146 msgid "JID of the contact that will receive the message" msgstr "JID контакта, который получит Ñообщение" -#: ../src/gajim-remote.py:135 +#: ../src/gajim-remote.py:134 ../src/gajim-remote.py:148 msgid "message contents" msgstr "Ñодержимое ÑообщениÑ" -#: ../src/gajim-remote.py:136 +#: ../src/gajim-remote.py:135 ../src/gajim-remote.py:149 msgid "pgp key" msgstr "PGP ключ" -#: ../src/gajim-remote.py:136 +#: ../src/gajim-remote.py:135 ../src/gajim-remote.py:149 msgid "if specified, the message will be encrypted using this public key" -msgstr "еÑли указано, Ñообщение будет зашифровано Ñ Ð¸Ñпользованием открытого ключа" +msgstr "" +"еÑли указано, Ñообщение будет зашифровано Ñ Ð¸Ñпользованием открытого ключа" -#: ../src/gajim-remote.py:138 +#: ../src/gajim-remote.py:137 ../src/gajim-remote.py:151 msgid "if specified, the message will be sent using this account" -msgstr "еÑли указано, Ñообщение будет отправлено Ñ Ð¸Ñпользованием Ñтой учетной запиÑи" +msgstr "" +"еÑли указано, Ñообщение будет отправлено Ñ Ð¸Ñпользованием Ñтой учетной запиÑи" -#: ../src/gajim-remote.py:143 +#: ../src/gajim-remote.py:142 +#, fuzzy +msgid "" +"Sends new single message to a contact in the roster. Both OpenPGP key and " +"account are optional. If you want to set only 'account', without 'OpenPGP " +"key', just set 'OpenPGP key' to ''." +msgstr "" +"Отправить новое Ñообщение контакту в роÑтере. Как OpenPGP ключ, так и " +"ÑƒÑ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ опциональны. ЕÑли вы хотите наÑтроить лишь 'учетную запиÑÑŒ', " +"без 'OpenPGP ключа', проÑто уÑтановите 'OpenPGP ключ' в ''." + +#: ../src/gajim-remote.py:147 +#, fuzzy +msgid "subject" +msgstr "Тема" + +#: ../src/gajim-remote.py:147 +#, fuzzy +msgid "message subject" +msgstr "Сообщение отправлено" + +#: ../src/gajim-remote.py:156 msgid "Gets detailed info on a contact" msgstr "Получает детальную информацию о контакте" -#: ../src/gajim-remote.py:145 ../src/gajim-remote.py:158 -#: ../src/gajim-remote.py:188 +#: ../src/gajim-remote.py:158 ../src/gajim-remote.py:171 +#: ../src/gajim-remote.py:201 ../src/gajim-remote.py:210 msgid "JID of the contact" msgstr "JID контакта" -#: ../src/gajim-remote.py:149 +#: ../src/gajim-remote.py:162 msgid "Gets detailed info on a account" msgstr "Получает детальную информацию о учетной запиÑи" -#: ../src/gajim-remote.py:151 +#: ../src/gajim-remote.py:164 msgid "Name of the account" msgstr "Ð˜Ð¼Ñ ÑƒÑ‡ÐµÑ‚Ð½Ð¾Ð¹ запиÑи" -#: ../src/gajim-remote.py:155 +#: ../src/gajim-remote.py:168 msgid "Sends file to a contact" msgstr "ОтправлÑет контакту файл" -#: ../src/gajim-remote.py:157 +#: ../src/gajim-remote.py:170 msgid "file" msgstr "файл" -#: ../src/gajim-remote.py:157 +#: ../src/gajim-remote.py:170 msgid "File path" msgstr "Путь до файла" -#: ../src/gajim-remote.py:159 +#: ../src/gajim-remote.py:172 msgid "if specified, file will be sent using this account" -msgstr "еÑли указано, файл будет отправлен Ñ Ð¸Ñпользованием Ñтой учетной запиÑи" +msgstr "" +"еÑли указано, файл будет отправлен Ñ Ð¸Ñпользованием Ñтой учетной запиÑи" -#: ../src/gajim-remote.py:164 +#: ../src/gajim-remote.py:177 msgid "Lists all preferences and their values" msgstr "Показывает вÑе параметры Ñ Ð¸Ñ… значениÑми" -#: ../src/gajim-remote.py:168 +#: ../src/gajim-remote.py:181 msgid "Sets value of 'key' to 'value'." msgstr "ПриÑваивает 'ключу' в 'значение'" -#: ../src/gajim-remote.py:170 +#: ../src/gajim-remote.py:183 msgid "key=value" msgstr "ключ=значение" -#: ../src/gajim-remote.py:170 +#: ../src/gajim-remote.py:183 msgid "'key' is the name of the preference, 'value' is the value to set it to" -msgstr "'ключ' Ñто название параметра, а 'значение' Ñто то, что ему приÑваивают" +msgstr "" +"'ключ' Ñто название параметра, а 'значение' Ñто то, что ему приÑваивают" -#: ../src/gajim-remote.py:175 +#: ../src/gajim-remote.py:188 msgid "Deletes a preference item" msgstr "УдалÑет параметр" -#: ../src/gajim-remote.py:177 +#: ../src/gajim-remote.py:190 msgid "key" msgstr "ключ" -#: ../src/gajim-remote.py:177 +#: ../src/gajim-remote.py:190 msgid "name of the preference to be deleted" msgstr "Ð¸Ð¼Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° который нужно удалить" -#: ../src/gajim-remote.py:181 +#: ../src/gajim-remote.py:194 msgid "Writes the current state of Gajim preferences to the .config file" msgstr "СохранÑет текущее ÑоÑтоÑние наÑтроек Gajim в файл .config" -#: ../src/gajim-remote.py:186 +#: ../src/gajim-remote.py:199 msgid "Removes contact from roster" msgstr "УдалÑет контакт из роÑтера" -#: ../src/gajim-remote.py:195 +#: ../src/gajim-remote.py:208 msgid "Adds contact to roster" msgstr "ДобавлÑет контакт в роÑтер" -#: ../src/gajim-remote.py:197 -msgid "Adds new contact to this account." +#: ../src/gajim-remote.py:210 +msgid "jid" +msgstr "" + +#: ../src/gajim-remote.py:211 +#, fuzzy +msgid "Adds new contact to this account" msgstr "ДобавлÑет новый контакты Ð´Ð»Ñ Ð´Ð°Ð½Ð½Ð¾Ð¹ учетной запиÑи" -#: ../src/gajim-remote.py:202 +#: ../src/gajim-remote.py:216 msgid "Returns current status (the global one unless account is specified)" msgstr "" -"Возвращает текущий ÑÑ‚Ð°Ñ‚ÑƒÑ (по-умолчанию глобальный, еÑли не указана ÑƒÑ‡ÐµÑ‚Ð½Ð°Ñ " +"Возвращает текущий ÑÑ‚Ð°Ñ‚ÑƒÑ (по умолчанию глобальный, еÑли не указана ÑƒÑ‡ÐµÑ‚Ð½Ð°Ñ " "запиÑÑŒ)" -#: ../src/gajim-remote.py:209 -msgid "Returns current status message(the global one unless account is specified)" +#: ../src/gajim-remote.py:223 +msgid "" +"Returns current status message(the global one unless account is specified)" msgstr "" -"Возвращает текущий ÑÑ‚Ð°Ñ‚ÑƒÑ (по-умолчанию глобальный, еÑли не указана ÑƒÑ‡ÐµÑ‚Ð½Ð°Ñ " +"Возвращает текущий ÑÑ‚Ð°Ñ‚ÑƒÑ (по умолчанию глобальный, еÑли не указана ÑƒÑ‡ÐµÑ‚Ð½Ð°Ñ " "запиÑÑŒ)" -#: ../src/gajim-remote.py:216 +#: ../src/gajim-remote.py:230 msgid "Returns number of unreaded messages" msgstr "Возвращает количеÑтво непрочитанных Ñообщений" +#: ../src/gajim-remote.py:234 +msgid "Open 'Start Chat' dialog" +msgstr "" + #: ../src/gajim-remote.py:236 +#, fuzzy +msgid "Starts chat, using this account" +msgstr "Ðачать беÑеду Ñ ÑƒÑ‡ÐµÑ‚Ð½Ð¾Ð¹ запиÑью %s" + +#: ../src/gajim-remote.py:256 msgid "Missing argument \"contact_jid\"" msgstr "Пропущен аргумент \"JID контакта\"" -#: ../src/gajim-remote.py:255 +#: ../src/gajim-remote.py:275 #, python-format msgid "" "'%s' is not in your roster.\n" @@ -1350,16 +3538,16 @@ msgstr "" "'%s' не в вашем роÑтере\n" "ПожалуйÑта укажите учетную запиÑÑŒ Ð´Ð»Ñ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²ÐºÐ¸ ÑообщениÑ." -#: ../src/gajim-remote.py:258 +#: ../src/gajim-remote.py:278 msgid "You have no active account" msgstr "У Ð²Ð°Ñ Ð½ÐµÑ‚ активной учетной запиÑи" -#: ../src/gajim-remote.py:301 +#: ../src/gajim-remote.py:321 #, python-format msgid "Unknown D-Bus version: %s" msgstr "ÐеизвеÑÑ‚Ð½Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ D-Bus: %s" -#: ../src/gajim-remote.py:328 +#: ../src/gajim-remote.py:348 #, python-format msgid "" "Usage: %s %s %s \n" @@ -1368,16 +3556,16 @@ msgstr "" "ИÑпользование: %s %s %s \n" "\t %s" -#: ../src/gajim-remote.py:331 +#: ../src/gajim-remote.py:351 msgid "Arguments:" msgstr "Ðргументы:" -#: ../src/gajim-remote.py:335 +#: ../src/gajim-remote.py:355 #, python-format msgid "%s not found" msgstr "%s не найден" -#: ../src/gajim-remote.py:339 +#: ../src/gajim-remote.py:359 #, python-format msgid "" "Usage: %s command [arguments]\n" @@ -1386,7 +3574,7 @@ msgstr "" "ИÑпользование: %s команда [аргумента]\n" "Команда одна из:\n" -#: ../src/gajim-remote.py:413 +#: ../src/gajim-remote.py:433 #, python-format msgid "" "Argument \"%s\" is not specified. \n" @@ -1429,104 +3617,87 @@ msgstr "" "Ñтабильную верÑию Ñ %s" #: ../src/gajim.py:65 -msgid "Please make sure that GTK+ and PyGTK have libglade support in your system." +msgid "" +"Please make sure that GTK+ and PyGTK have libglade support in your system." msgstr "ПожалуйÑта, удоÑтоверьтеÑÑŒ что GTK+ и PyGTK поддерживают libglade." #: ../src/gajim.py:70 msgid "Gajim needs PySQLite2 to run" msgstr "Gajim Ð´Ð»Ñ Ð·Ð°Ð¿ÑƒÑка требуетÑÑ PySQLite2" -#: ../src/gajim.py:235 +#. set the icon to all newly opened wind +#: ../src/gajim.py:151 +msgid "Gajim is already running" +msgstr "" + +#: ../src/gajim.py:152 +msgid "" +"Another instance of Gajim seems to be running\n" +"Run anyway?" +msgstr "" + +#: ../src/gajim.py:267 #, python-format msgid "HTTP (%s) Authorization for %s (id: %s)" msgstr "HTTP (%s) ÐÐ²Ñ‚Ð¾Ñ€Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð´Ð»Ñ %s (id: %s)" -#: ../src/gajim.py:236 +#: ../src/gajim.py:268 msgid "Do you accept this request?" msgstr "Ð’Ñ‹ принимаете Ñтот запроÑ?" -#: ../src/gajim.py:438 -#, python-format -msgid "%(nickname)s Signed In" -msgstr "%(nickname)s ПодключилÑÑ" - -#: ../src/gajim.py:469 -#, python-format -msgid "%(nickname)s Signed Out" -msgstr "%(nickname)s ОтключилÑÑ" - -#: ../src/gajim.py:583 -#, python-format -msgid "New Private Message from room %s" -msgstr "Ðовое Личное Сообщение из комнаты %s" - -#: ../src/gajim.py:584 -#, python-format -msgid "%(nickname)s: %(message)s" -msgstr "%(nickname)s: %(message)s" - -#: ../src/gajim.py:606 -#, python-format -msgid "New Single Message from %(nickname)s" -msgstr "Ðовое Ñообшение от %(nickname)s" - -#: ../src/gajim.py:612 -#, python-format -msgid "New Message from %(nickname)s" -msgstr "Ðовое Ñообщение от %(nickname)s" - -#: ../src/gajim.py:660 +#: ../src/gajim.py:611 #, python-format msgid "error while sending %s ( %s )" msgstr "ошибка при отправке %s ( %s )" -#: ../src/gajim.py:700 +#: ../src/gajim.py:651 msgid "Authorization accepted" msgstr "ÐÐ²Ñ‚Ð¾Ñ€Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð¿Ñ€Ð¸Ð½Ñта" -#: ../src/gajim.py:701 +#: ../src/gajim.py:652 #, python-format msgid "The contact \"%s\" has authorized you to see his or her status." -msgstr "Контакт \"%s\" авторизовал ваÑ, теперь вы можете видеть его или её ÑтатуÑ." +msgstr "" +"Контакт \"%s\" авторизовал ваÑ, теперь вы можете видеть его или её ÑтатуÑ." -#: ../src/gajim.py:709 +#: ../src/gajim.py:660 #, python-format msgid "Contact \"%s\" removed subscription from you" msgstr "Контакт \"%s\" отозвал подпиÑку Ñ Ð²Ð°Ð¼Ð¸" -#: ../src/gajim.py:710 +#: ../src/gajim.py:661 msgid "You will always see him or her as offline." msgstr "Ð’Ñ‹ вÑегда будете видеть его или её в оффлайне." -#: ../src/gajim.py:736 +#: ../src/gajim.py:704 #, python-format msgid "Contact with \"%s\" cannot be established" msgstr "СвÑзь Ñ \"%s\" не может быть уÑтановлена" -#: ../src/gajim.py:737 ../src/common/connection.py:349 +#: ../src/gajim.py:705 ../src/common/connection.py:398 msgid "Check your connection or try again later." msgstr "Проверьте наÑтройки Ñети или попробуйте еще раз позже." -#: ../src/gajim.py:874 ../src/roster_window.py:1012 +#: ../src/gajim.py:849 ../src/roster_window.py:1025 #, python-format msgid "%s is now %s (%s)" msgstr "%s %s (%s)" -#: ../src/gajim.py:963 +#: ../src/gajim.py:930 msgid "Your passphrase is incorrect" msgstr "Ваша Ð¿Ð°Ñ€Ð¾Ð»ÑŒÐ½Ð°Ñ Ñ„Ñ€Ð°Ð·Ð° неверна" -#: ../src/gajim.py:964 +#: ../src/gajim.py:931 msgid "You are currently connected without your OpenPGP key." msgstr "Ð’Ñ‹ ÑÐµÐ¹Ñ‡Ð°Ñ Ñоединены без OpenPGP ключа." #. FIXME: find a better image -#: ../src/gajim.py:1045 +#: ../src/gajim.py:1033 #, python-format msgid "New E-mail on %(gmail_mail_address)s" msgstr "Ðовое ПиÑьмо на %(gmail_mail_address)s" -#: ../src/gajim.py:1047 +#: ../src/gajim.py:1035 #, python-format msgid "You have %d new E-mail message" msgid_plural "You have %d new E-mail messages" @@ -1534,10 +3705,18 @@ msgstr[0] "У Ð²Ð°Ñ ÐµÑÑ‚ÑŒ %d непрочитанное Ñообщение" msgstr[1] "У Ð²Ð°Ñ ÐµÑÑ‚ÑŒ %d непрочитанных ÑообщениÑ" msgstr[2] "У Ð²Ð°Ñ ÐµÑÑ‚ÑŒ %d непрочитанных Ñообщений" +#. each message has a 'From', 'Subject' and 'Snippet' field +#: ../src/gajim.py:1040 +#, python-format +msgid "" +"\n" +"From: %(from_address)s" +msgstr "" + #: ../src/gajim.py:1185 #, python-format msgid "%s wants to send you a file." -msgstr "%s хочет отправит вам файл." +msgstr "%s хочет отправить вам файл." #: ../src/gajim.py:1245 #, python-format @@ -1577,146 +3756,158 @@ msgstr "ÐŸÑƒÐ±Ð»Ð¸ÐºÐ°Ñ†Ð¸Ñ vCard не удалаÑÑŒ" msgid "" "There was an error while publishing your personal information, try again " "later." -msgstr "При публикации вашей личной информации произошла ошибка, попробуйте позже." +msgstr "" +"При публикации вашей личной информации произошла ошибка, попробуйте позже." #. it is good to notify the user #. in case he or she cannot see the output of the console -#: ../src/gajim.py:1634 +#: ../src/gajim.py:1683 msgid "Could not save your settings and preferences" msgstr "Ðе могу Ñохранить ваши уÑтановки и наÑтройки" -#: ../src/gajim.py:1848 +#: ../src/gajim.py:1903 msgid "Session Management support not available (missing gnome.ui module)" -msgstr "ОтÑутÑтвует поддержка Ð£Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¡ÐµÑÑиÑми (отÑутÑтвует модуль gnome.ui)" +msgstr "" +"ОтÑутÑтвует поддержка Ð£Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¡ÐµÑÑиÑми (отÑутÑтвует модуль gnome.ui)" -#: ../src/gajim.py:1878 +#: ../src/gajim.py:1932 msgid "Migrating Logs..." msgstr "Переношу ИÑторию..." -#: ../src/gajim.py:1879 +#: ../src/gajim.py:1933 msgid "Please wait while logs are being migrated..." msgstr "ПожалуйÑта, дождитеÑÑŒ Ð¾ÐºÐ¾Ð½Ñ‡Ð°Ð½Ð¸Ñ Ð¿ÐµÑ€ÐµÐ½Ð¾Ñа иÑтории..." -#: ../src/gajim_themes_window.py:67 +#: ../src/gajim_themes_window.py:59 msgid "Theme" msgstr "Тема" #. don't confuse translators -#: ../src/gajim_themes_window.py:149 +#: ../src/gajim_themes_window.py:141 msgid "theme name" msgstr "Ð¸Ð¼Ñ Ñ‚eмы" -#: ../src/gajim_themes_window.py:166 +#: ../src/gajim_themes_window.py:158 msgid "You cannot delete your current theme" msgstr "Ð’Ñ‹ не можете удалить вашу текущую тему" -#: ../src/gajim_themes_window.py:167 +#: ../src/gajim_themes_window.py:159 msgid "Please first choose another for your current theme." msgstr "ПожалуйÑта, выберите Ñначала другую тему." -#: ../src/groupchat_control.py:68 +#: ../src/groupchat_control.py:99 msgid "Private Chat" msgstr "Ð›Ð¸Ñ‡Ð½Ð°Ñ Ð‘ÐµÑеда" -#: ../src/groupchat_control.py:68 +#: ../src/groupchat_control.py:99 msgid "Private Chats" msgstr "Личные БеÑеды" -#: ../src/groupchat_control.py:84 +#: ../src/groupchat_control.py:115 msgid "Sending private message failed" msgstr "Ðе удалоÑÑŒ отправить личное Ñообщение" #. in second %s code replaces with nickname -#: ../src/groupchat_control.py:86 +#: ../src/groupchat_control.py:117 #, python-format msgid "You are no longer in room \"%s\" or \"%s\" has left." msgstr "Ð’Ñ‹ больше не находитеÑÑŒ в комнате \"%s\" или \"%s\" вышел." -#: ../src/groupchat_control.py:98 +#: ../src/groupchat_control.py:129 msgid "Group Chat" msgstr "Комната" -#: ../src/groupchat_control.py:98 +#: ../src/groupchat_control.py:129 msgid "Group Chats" msgstr "Комнаты" -#: ../src/groupchat_control.py:595 +#: ../src/groupchat_control.py:308 +#, fuzzy +msgid "Insert Nickname" +msgstr "Изменить _ник" + +#: ../src/groupchat_control.py:702 msgid "This room has no subject" msgstr "У комнаты нет темы" #. do not print 'kicked by None' -#: ../src/groupchat_control.py:693 +#: ../src/groupchat_control.py:801 #, python-format msgid "%(nick)s has been kicked: %(reason)s" msgstr "%(nick)s выгнали из комнаты: %(reason)s" -#: ../src/groupchat_control.py:697 +#: ../src/groupchat_control.py:805 #, python-format msgid "%(nick)s has been kicked by %(who)s: %(reason)s" msgstr "%(who)s выгнал %(nick)s из комнаты: %(reason)s" #. do not print 'banned by None' -#: ../src/groupchat_control.py:704 +#: ../src/groupchat_control.py:812 #, python-format msgid "%(nick)s has been banned: %(reason)s" msgstr "%(nick)s запретили заходить в комнату: %(reason)s" -#: ../src/groupchat_control.py:708 +#: ../src/groupchat_control.py:816 #, python-format msgid "%(nick)s has been banned by %(who)s: %(reason)s" msgstr "%(who)s запретил %(nick)s заходить в комнату: %(reason)s" -#: ../src/groupchat_control.py:716 +#: ../src/groupchat_control.py:824 #, python-format msgid "You are now known as %s" msgstr "Ð’Ñ‹ теперь извеÑтны как %s" -#: ../src/groupchat_control.py:718 +#: ../src/groupchat_control.py:826 #, python-format msgid "%s is now known as %s" msgstr "%s теперь извеÑтен как %s" -#: ../src/groupchat_control.py:757 +#: ../src/groupchat_control.py:897 #, python-format msgid "%s has left" msgstr "%s ушел" +#: ../src/groupchat_control.py:902 +#, python-format +msgid "%s has joined the room" +msgstr "" + #. No status message -#: ../src/groupchat_control.py:759 ../src/roster_window.py:1015 +#: ../src/groupchat_control.py:904 ../src/roster_window.py:1028 #, python-format msgid "%s is now %s" msgstr "%s %s" -#: ../src/groupchat_control.py:871 ../src/groupchat_control.py:888 -#: ../src/groupchat_control.py:981 ../src/groupchat_control.py:997 +#: ../src/groupchat_control.py:1022 ../src/groupchat_control.py:1039 +#: ../src/groupchat_control.py:1132 ../src/groupchat_control.py:1148 #, python-format msgid "Nickname not found: %s" msgstr "Ðик не обнаружен: %s" -#: ../src/groupchat_control.py:915 +#: ../src/groupchat_control.py:1066 #, python-format msgid "Invited %(contact_jid)s to %(room_jid)s." msgstr "ПриглаÑил %(contact_jid)s в %(room_jid)s." #. %s is something the user wrote but it is not a jid so we inform -#: ../src/groupchat_control.py:922 ../src/groupchat_control.py:952 +#: ../src/groupchat_control.py:1073 ../src/groupchat_control.py:1103 #, python-format msgid "%s does not appear to be a valid JID" msgstr "%s не ÑвлÑетÑÑ Ð½Ð¾Ñ€Ð¼Ð°Ð»ÑŒÐ½Ñ‹Ð¼ JID" -#: ../src/groupchat_control.py:1019 +#: ../src/groupchat_control.py:1185 #, python-format msgid "No such command: /%s (if you want to send this, prefix it with /say)" msgstr "" "Ðет такой команды: /%s (еÑли вы хотите её проÑто передать, то добавьте к ней " "Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ /say)" -#: ../src/groupchat_control.py:1041 +#: ../src/groupchat_control.py:1207 #, python-format msgid "Commands: %s" msgstr "Команды: %s" -#: ../src/groupchat_control.py:1043 +#: ../src/groupchat_control.py:1209 #, python-format msgid "" "Usage: /%s [reason], bans the JID from the room. The nickname " @@ -1729,17 +3920,19 @@ msgstr "" "данный момент находитÑÑ Ð² комнате, то он/она/оно так же будет выгнан. ÐЕ " "поддерживает пробелы в никах." -#: ../src/groupchat_control.py:1049 +#: ../src/groupchat_control.py:1215 #, python-format -msgid "Usage: /%s , opens a private chat window to the specified occupant." -msgstr "ИÑпользование: /%s <ник>, открывает окно привата Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ñ‹Ð¼ поÑетителем." +msgid "" +"Usage: /%s , opens a private chat window to the specified occupant." +msgstr "" +"ИÑпользование: /%s <ник>, открывает окно привата Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ñ‹Ð¼ поÑетителем." -#: ../src/groupchat_control.py:1053 +#: ../src/groupchat_control.py:1219 #, python-format msgid "Usage: /%s, clears the text window." msgstr "ИÑпользование: /%s, очищает текÑтовое окно." -#: ../src/groupchat_control.py:1055 +#: ../src/groupchat_control.py:1221 #, python-format msgid "" "Usage: /%s [reason], closes the current window or tab, displaying reason if " @@ -1748,12 +3941,12 @@ msgstr "" "ИÑпользование: /%s [причина], закрывает текущее окно или вкладку, Ñ Ð¿Ñ€Ð¸Ð²Ð¾Ð´Ñ " "причину, еÑли она указана." -#: ../src/groupchat_control.py:1058 +#: ../src/groupchat_control.py:1224 #, python-format msgid "Usage: /%s, hide the chat buttons." msgstr "ИÑпользование: /%s, Ñкрывает кнопки беÑеды." -#: ../src/groupchat_control.py:1060 +#: ../src/groupchat_control.py:1226 #, python-format msgid "" "Usage: /%s [reason], invites JID to the current room, optionally " @@ -1762,7 +3955,7 @@ msgstr "" "ИÑпользование: /%s [причина], приглашает JID в текущую комнату, Ñ " "возможным указанием причины." -#: ../src/groupchat_control.py:1064 +#: ../src/groupchat_control.py:1230 #, python-format msgid "" "Usage: /%s @[/nickname], offers to join room@server optionally " @@ -1771,7 +3964,7 @@ msgstr "" "ИÑпользование: /%s <комната>@<Ñервер>[/ник], предлагает приÑоединитьÑÑ Ðº " "комната@Ñервер, Ñ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ñ‹Ð¼ указанием ника." -#: ../src/groupchat_control.py:1068 +#: ../src/groupchat_control.py:1234 #, python-format msgid "" "Usage: /%s [reason], removes the occupant specified by nickname " @@ -1781,7 +3974,7 @@ msgstr "" "ИÑпользование: /%s <ник> [причина], удалÑет поÑÐµÑ‚Ð¸Ñ‚ÐµÐ»Ñ Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ñ‹Ð¼ ником из " "комнаты Ñ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ñ‹Ð¼ указанием причины. ÐЕ поддерживает пробелы в нике." -#: ../src/groupchat_control.py:1073 +#: ../src/groupchat_control.py:1239 #, python-format msgid "" "Usage: /%s , sends action to the current room. Use third person. (e." @@ -1790,104 +3983,112 @@ msgstr "" "ИÑпользование: /%s <дейÑтвие>, Ñовершает дейÑтвие в текущей комнате. " "ИÑпользуйте третье лицо (напр. /%s взрываетÑÑ.)" -#: ../src/groupchat_control.py:1077 +#: ../src/groupchat_control.py:1243 #, python-format msgid "" "Usage: /%s [message], opens a private message windowand sends " "message to the occupant specified by nickname." msgstr "" -"ИÑпользование: /%s <ник> [Ñообщение], открывает окно личной беÑеды и отÑылает " -"Ñообщение поÑетителю Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ñ‹Ð¼ ником." +"ИÑпользование: /%s <ник> [Ñообщение], открывает окно личной беÑеды и " +"отÑылает Ñообщение поÑетителю Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ñ‹Ð¼ ником." -#: ../src/groupchat_control.py:1082 +#: ../src/groupchat_control.py:1248 #, python-format msgid "Usage: /%s , changes your nickname in current room." msgstr "ИÑпользование: /%s <ник>, менÑет ваш ник в текущей комнате." -#: ../src/groupchat_control.py:1086 +#: ../src/groupchat_control.py:1252 +#, fuzzy, python-format +msgid "Usage: /%s , display the names of room occupants." +msgstr "" +"ИÑпользование: /%s [тема], показывает или изменÑет текущую тему комнаты." + +#: ../src/groupchat_control.py:1256 #, python-format msgid "Usage: /%s [topic], displays or updates the current room topic." -msgstr "ИÑпользование: /%s [тема], показывает или изменÑет текущую тему комнаты." +msgstr "" +"ИÑпользование: /%s [тема], показывает или изменÑет текущую тему комнаты." -#: ../src/groupchat_control.py:1089 +#: ../src/groupchat_control.py:1259 #, python-format -msgid "Usage: /%s , sends a message without looking for other commands." +msgid "" +"Usage: /%s , sends a message without looking for other commands." msgstr "" "ИÑпользование: /%s <Ñообщение>, отÑылает Ñообщение без поиÑка других команд " "в нем." -#: ../src/groupchat_control.py:1092 +#: ../src/groupchat_control.py:1262 #, python-format msgid "No help info for /%s" msgstr "Ðет подÑказки Ð´Ð»Ñ /%s" -#: ../src/groupchat_control.py:1128 +#: ../src/groupchat_control.py:1304 #, python-format msgid "Are you sure you want to leave room \"%s\"?" msgstr "Ð’Ñ‹ точно хотите покинуть комнату \"%s\"?" -#: ../src/groupchat_control.py:1129 +#: ../src/groupchat_control.py:1305 msgid "If you close this window, you will be disconnected from this room." msgstr "ЕÑли вы закроете Ñто окно, то вы выйдете из Ñтой комнаты." -#: ../src/groupchat_control.py:1133 +#: ../src/groupchat_control.py:1309 msgid "Do _not ask me again" msgstr "Ðе _переÑпрашивать" -#: ../src/groupchat_control.py:1167 +#: ../src/groupchat_control.py:1343 msgid "Changing Subject" msgstr "ИзменÑет Тему" -#: ../src/groupchat_control.py:1168 +#: ../src/groupchat_control.py:1344 msgid "Please specify the new subject:" msgstr "ПожалуйÑта, введите новую тему:" -#: ../src/groupchat_control.py:1176 +#: ../src/groupchat_control.py:1352 msgid "Changing Nickname" msgstr "ИзменÑет Ðик" -#: ../src/groupchat_control.py:1177 +#: ../src/groupchat_control.py:1353 msgid "Please specify the new nickname you want to use:" msgstr "ПожалуйÑта, введите новый ник который вы хотите иÑпользовать:" -#: ../src/groupchat_control.py:1202 +#: ../src/groupchat_control.py:1379 msgid "Bookmark already set" msgstr "Закладка уже уÑтановлена" -#: ../src/groupchat_control.py:1203 +#: ../src/groupchat_control.py:1380 #, python-format msgid "Room \"%s\" is already in your bookmarks." msgstr "Комната \"%s\" уже еÑÑ‚ÑŒ в ваших закладках." -#: ../src/groupchat_control.py:1212 +#: ../src/groupchat_control.py:1389 msgid "Bookmark has been added successfully" msgstr "Закладка уÑпешно добавлена" -#: ../src/groupchat_control.py:1213 +#: ../src/groupchat_control.py:1390 msgid "You can manage your bookmarks via Actions menu in your roster." msgstr "Ð’Ñ‹ можете управлÑÑ‚ÑŒ закладками через меню \"ДейÑтвиÑ\" в роÑтере." #. ask for reason -#: ../src/groupchat_control.py:1322 +#: ../src/groupchat_control.py:1500 #, python-format msgid "Kicking %s" msgstr "Кикнуть %s" -#: ../src/groupchat_control.py:1323 ../src/groupchat_control.py:1568 +#: ../src/groupchat_control.py:1501 ../src/groupchat_control.py:1779 msgid "You may specify a reason below:" msgstr "Ð’Ñ‹ можете указать причину ниже:" #. ask for reason -#: ../src/groupchat_control.py:1567 +#: ../src/groupchat_control.py:1778 #, python-format msgid "Banning %s" msgstr "Забанить %s" -#: ../src/gtkexcepthook.py:52 +#: ../src/gtkexcepthook.py:51 msgid "A programming error has been detected" msgstr "Обнаружена ошибка в программе" -#: ../src/gtkexcepthook.py:53 +#: ../src/gtkexcepthook.py:52 msgid "" "It probably is not fatal, but should be reported to the developers " "nonetheless." @@ -1895,1745 +4096,88 @@ msgstr "" "Возможно Ñто не так Ñтрашно, но вÑе равно Ñтоит Ñообщить об Ñтом " "разработчикам." -#: ../src/gtkexcepthook.py:59 +#: ../src/gtkexcepthook.py:58 msgid "_Report Bug" msgstr "_Сообщить об Ошибке" -#: ../src/gtkexcepthook.py:82 +#: ../src/gtkexcepthook.py:81 msgid "Details" msgstr "Детали" -#. this always tracebacks -#: ../src/gtkgui.glade.h:1 -msgid "0" -msgstr "0" - -#: ../src/gtkgui.glade.h:2 -msgid "" -"Account is being created\n" -"\n" -"Please wait..." -msgstr "" -"Была Ñоздана ÑƒÑ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ \n" -"\n" -"ПожалуйÑта подождите..." - -#: ../src/gtkgui.glade.h:5 -msgid "Advanced Configuration Editor" -msgstr "РаÑширенный Редактор ÐаÑтроек" - -#: ../src/gtkgui.glade.h:6 -msgid "Applications" -msgstr "ПриложениÑ" - -#: ../src/gtkgui.glade.h:7 -msgid "Chatstate Tab Colors" -msgstr "Цвета Вкладок СоÑтоÑÐ½Ð¸Ñ Ð‘ÐµÑеды" - -#. a header for custom browser/client/file manager. so translate sth like: Custom Settings -#: ../src/gtkgui.glade.h:9 -msgid "Custom" -msgstr "ПользовательÑкие наÑтройки" - -#: ../src/gtkgui.glade.h:10 -msgid "Description" -msgstr "ОпиÑание" - -#: ../src/gtkgui.glade.h:11 -msgid "Format of a line" -msgstr "Формат Ñтроки" - -#: ../src/gtkgui.glade.h:12 -msgid "Interface Customization" -msgstr "ÐаÑтройки интерфейÑа" - -#: ../src/gtkgui.glade.h:13 -msgid "Jabber Traffic" -msgstr "Jabber Траффик" - -#: ../src/gtkgui.glade.h:14 -msgid "Miscellaneous" -msgstr "Прочее" - -#: ../src/gtkgui.glade.h:15 -msgid "NOTE: You should restart gajim for some setting to take effect" -msgstr "ПРИМЕЧÐÐИЕ: Ð’Ñ‹ должны перезапуÑтить gajim чтобы некоторые наÑтройки были применены" - -#: ../src/gtkgui.glade.h:16 -msgid "OpenPGP" -msgstr "OpenPGP" - -#: ../src/gtkgui.glade.h:17 -msgid "Personal Information" -msgstr "Ð›Ð¸Ñ‡Ð½Ð°Ñ Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ" - -#: ../src/gtkgui.glade.h:18 -msgid "Please choose one of the options below:" -msgstr "ПожалуйÑта, выберите одну из опций из ÑпиÑка ниже:" - -#: ../src/gtkgui.glade.h:19 -msgid "Please fill in the data for your new account" -msgstr "ПожалуйÑта, заполните данные Ð´Ð»Ñ Ð²Ð°ÑˆÐµÐ¹ новой учетной запиÑи" - -#: ../src/gtkgui.glade.h:20 -msgid "Preset Status Messages" -msgstr "ПредуÑтановленные Ð¡Ð¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¾ СтатуÑе" - -#: ../src/gtkgui.glade.h:21 -msgid "Properties" -msgstr "СвойÑтва" - -#: ../src/gtkgui.glade.h:22 -msgid "Settings" -msgstr "Ðатройки" - -#: ../src/gtkgui.glade.h:23 -msgid "Sounds" -msgstr "Звуки" - -#: ../src/gtkgui.glade.h:24 -msgid "Type your new status message" -msgstr "Введите ваше новое Ñообщение о ÑтатуÑе" - -#: ../src/gtkgui.glade.h:25 -msgid "Visual Notifications" -msgstr "УведомлениÑ" - -#: ../src/gtkgui.glade.h:26 -msgid "What do you want to do?" -msgstr "Что вы хотите Ñделать?" - -#: ../src/gtkgui.glade.h:27 -msgid "XML Input" -msgstr "XML Ввод" - -#: ../src/gtkgui.glade.h:28 -msgid "A list of active, completed and stopped file transfers" -msgstr "СпиÑок активных, завершенных и оÑтановленных передач файлов" - -#: ../src/gtkgui.glade.h:29 -msgid "A_ccounts" -msgstr "Ð_ккаунты" - -#: ../src/gtkgui.glade.h:30 -msgid "A_fter nickname:" -msgstr "П_оÑле ника:" - -#. "About" is the text of a tab of vcard window -#: ../src/gtkgui.glade.h:32 -msgid "About" -msgstr "Подробнее" - -#: ../src/gtkgui.glade.h:33 -msgid "Accept" -msgstr "ПринÑÑ‚ÑŒ" - -#: ../src/gtkgui.glade.h:34 -msgid "Account" -msgstr "Учетные запиÑи" - -#: ../src/gtkgui.glade.h:35 -msgid "" -"Account\n" -"Group\n" -"Contact\n" -"Banner" -msgstr "" -"Ð£Ñ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ\n" -"Группа\n" -"Контакт\n" -"Баннер" - -#: ../src/gtkgui.glade.h:39 -msgid "Account Modification" -msgstr "Изменение Учетной запиÑи" - -#: ../src/gtkgui.glade.h:40 -msgid "Accounts" -msgstr "Учетные запиÑи" - -#: ../src/gtkgui.glade.h:42 -msgid "Add New Contact" -msgstr "Добавить Ðовый Контакт" - -#: ../src/gtkgui.glade.h:43 -msgid "Add Special _Notification" -msgstr "Добавить Специальное _Уведомление" - -#: ../src/gtkgui.glade.h:44 -msgid "Add _Contact" -msgstr "Добавить _Контакт" - -#: ../src/gtkgui.glade.h:45 -msgid "Address" -msgstr "ÐдреÑ" - -#: ../src/gtkgui.glade.h:46 -msgid "Advanced" -msgstr "РаÑширенный" - -#: ../src/gtkgui.glade.h:47 -msgid "Advanced Configuration Editor" -msgstr "РаÑширенный Редактор ÐаÑтроек" - -#: ../src/gtkgui.glade.h:48 -msgid "" -"All chat states\n" -"Composing only\n" -"Disabled" -msgstr "" -"Ð’Ñе ÑоÑтоÑÐ½Ð¸Ñ Ñ‡Ð°Ñ‚Ð°\n" -"Только печать\n" -"Отключено " - -#: ../src/gtkgui.glade.h:51 -msgid "Allow _OS information to be sent" -msgstr "ОтÑылать информацию об _ОС" - -#: ../src/gtkgui.glade.h:52 -msgid "Allow him/her to see my status" -msgstr "Позволить ему или ей видеть мой ÑтатуÑ" - -#: ../src/gtkgui.glade.h:53 -msgid "Allow popup/notifications when I'm _away/na/busy/invisible" -msgstr "ПозволÑÑ‚ÑŒ ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð² режиме _ушел/недоÑтупен/занÑÑ‚/невидимка" - -#: ../src/gtkgui.glade.h:54 -msgid "Also known as iChat style" -msgstr "как iChat Ñтиль" - -#: ../src/gtkgui.glade.h:55 -msgid "Ask status message when I:" -msgstr "Запрашивать Ñообщение о ÑтатуÑе в момент: " - -#: ../src/gtkgui.glade.h:56 -msgid "Ask to see his/her status" -msgstr "ПопроÑить возможноÑÑ‚ÑŒ видеть его или её ÑтатуÑ" - -#: ../src/gtkgui.glade.h:57 -msgid "Ask:" -msgstr "Спрашивать:" - -#: ../src/gtkgui.glade.h:58 -msgid "Assign Open_PGP Key" -msgstr "Ðазначить OpenPGP ключ" - -#: ../src/gtkgui.glade.h:59 -msgid "Authorize contact so he can know when you're connected" -msgstr "Ðвторизовать контакт (Он будет видеть ваш ÑтатуÑ)" - -#: ../src/gtkgui.glade.h:60 -msgid "Auto _away after:" -msgstr "Ðвто-_отошел поÑле:" - -#: ../src/gtkgui.glade.h:61 -msgid "Auto _not available after:" -msgstr "Ðвто-_недоÑтупен поÑле:" - -#: ../src/gtkgui.glade.h:62 -msgid "Auto join" -msgstr "ÐвтоматичеÑкое приÑоединение" - -#: ../src/gtkgui.glade.h:63 -msgid "" -"Autodetect on every Gajim startup\n" -"Always use GNOME default applications\n" -"Always use KDE default applications\n" -"Custom" -msgstr "" -"ОпределÑÑ‚ÑŒ автоматичеÑки при каждом запуÑке Gajim\n" -"Ð’Ñегда иÑпользовать Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ GNOME по умолчанию\n" -"Ð’Ñегда иÑпользовать Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ KDE по умолчанию\n" -"Другое" - -#: ../src/gtkgui.glade.h:67 -msgid "Automatically authorize contact" -msgstr "ÐвтоматичеÑки авторизовать контакт" - -#: ../src/gtkgui.glade.h:68 -msgid "Autoreconnect when connection is lost" -msgstr "Ðвтоподключение при разрыве ÑвÑзи" - -#: ../src/gtkgui.glade.h:69 -msgid "B_efore nickname:" -msgstr "_До ника:" - -#: ../src/gtkgui.glade.h:70 -msgid "Birthday:" -msgstr "День рождениÑ:" - -#: ../src/gtkgui.glade.h:71 -msgid "Bold" -msgstr "Жирный" - -#: ../src/gtkgui.glade.h:72 -msgid "Build custom query" -msgstr "СоÑтавить Ñвой запроÑ" - -#: ../src/gtkgui.glade.h:73 -msgid "C_onnect on Gajim startup" -msgstr "_СоединÑÑ‚ÑŒÑÑ Ð¿Ñ€Ð¸ запуÑке Gajim" - -#: ../src/gtkgui.glade.h:74 -msgid "Cancel file transfer" -msgstr "Отменить передачу" - -#: ../src/gtkgui.glade.h:75 -msgid "Cancels the selected file transfer" -msgstr "ОтменÑет выбранную передачу" - -#: ../src/gtkgui.glade.h:76 -msgid "Cancels the selected file transfer and removes incomplete file" -msgstr "ОтменÑет выбранную передачу и удалÑет неполные файлы" - -#: ../src/gtkgui.glade.h:77 -msgid "Chan_ge Password" -msgstr "И_зменить Пароль" - -#: ../src/gtkgui.glade.h:78 -msgid "Change Password" -msgstr "Изменить Пароль" - -#: ../src/gtkgui.glade.h:79 -msgid "Change _Nickname" -msgstr "Изменить _Ðик" - -#: ../src/gtkgui.glade.h:80 -msgid "Change _Subject" -msgstr "Изменить _Тему" - -#: ../src/gtkgui.glade.h:82 -msgid "Chat state noti_fications:" -msgstr "_Уведомление об изменении ÑоÑтоÑниÑ:" - -#: ../src/gtkgui.glade.h:83 -msgid "" -"Check this option, only if someone you don't have in the roster spams/annoys " -"you. Use with caution, cause it blocks all messages from any contact that is " -"not in the roster" -msgstr "" -"Отметьте Ñту опцию, только еÑли кто-то не из вашего роÑтера Ñпамит/доÑтает " -"ваÑ. ИÑпользуйте Ñ Ð¾ÑторожноÑтью, потому что Ñто заблокирует вÑе ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ " -"от контактов не из вашего ротера." - -#: ../src/gtkgui.glade.h:84 -msgid "" -"Check this so Gajim will connect in port 5223 where legacy servers are " -"expected to have SSL capabilities. Note that Gajim uses TLS encryption by " -"default if broadcasted by the server, and with this option enabled TLS will " -"be disabled" -msgstr "" -"ЕÑли отмечено, то Gajim будет ÑоединÑÑ‚ÑŒÑÑ Ñ Ð¿Ð¾Ñ€Ñ‚Ð¾Ð¼ 5223 на котором " -"правильные Ñервера обычно ожидают Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ð¿Ð¾ SSL. Заметьте, что Gajim " -"иÑпользует TLS шифрование по умолчанию еÑли Ñервер предоÑтавлÑет такую " -"возможноÑÑ‚ÑŒ, Ñ Ñтой же опцией TLS отключетÑÑ" - -#: ../src/gtkgui.glade.h:85 -msgid "Choose _Key..." -msgstr "ИÑпользовать _Ключ..." - -#: ../src/gtkgui.glade.h:86 -msgid "City:" -msgstr "Город:" - -#: ../src/gtkgui.glade.h:87 -msgid "Clean _up" -msgstr "_ОчиÑтить" - -#: ../src/gtkgui.glade.h:88 -msgid "Click to change account's password" -msgstr "Щелкните Ð´Ð»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¿Ð°Ñ€Ð¾Ð»ÑŒ" - -#: ../src/gtkgui.glade.h:89 -msgid "Click to insert an emoticon (Alt+M)" -msgstr "Щелкните, чтобы вÑтавить Ñмайлик (Alt+M)" - -#: ../src/gtkgui.glade.h:90 -msgid "Click to see features (like MSN, ICQ transports) of jabber servers" -msgstr "" -"Щелкните чтобы проÑмотреть ÑервиÑÑ‹ предоÑтавлÑемые jabber Ñервером (например " -"MSN, ICQ транÑпорты)" - -#: ../src/gtkgui.glade.h:91 -msgid "Click to see past conversation in this room" -msgstr "Щелкните Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñмотра беÑед Ñ Ñтим человеком" - -#: ../src/gtkgui.glade.h:92 -msgid "Click to see past conversations with this contact" -msgstr "Щелкните Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñмотра беÑед Ñ Ñтим человеком" - -#: ../src/gtkgui.glade.h:93 -msgid "Client:" -msgstr "Клиент:" - -#: ../src/gtkgui.glade.h:94 -msgid "Company:" -msgstr "КомпаниÑ:" - -#: ../src/gtkgui.glade.h:95 -msgid "Composing" -msgstr "Печатает" - -#: ../src/gtkgui.glade.h:96 -msgid "Configure _Room" -msgstr "ÐаÑтроить _Комнату" - -#: ../src/gtkgui.glade.h:97 -msgid "Connect when I press Finish" -msgstr "ПодключитьÑÑ ÐºÐ¾Ð³Ð´Ð° Ñ Ð½Ð°Ð¶Ð¼Ñƒ Конец" - -#: ../src/gtkgui.glade.h:98 -msgid "Connection" -msgstr "Соединение" - -#: ../src/gtkgui.glade.h:99 -msgid "Contact Information" -msgstr "Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ контакте" - -#: ../src/gtkgui.glade.h:100 -msgid "Contact _Info" -msgstr "_Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ Контакте" - -#: ../src/gtkgui.glade.h:101 -msgid "Conversation History" -msgstr "ИÑториÑ" - -#: ../src/gtkgui.glade.h:102 -msgid "Country:" -msgstr "Страна:" - -#: ../src/gtkgui.glade.h:103 -msgid "Default status _iconset:" -msgstr "_Иконки по умолчанию Ð´Ð»Ñ ÑтатуÑа:" - -#: ../src/gtkgui.glade.h:104 -msgid "Delete MOTD" -msgstr "Удалить СД" - -#: ../src/gtkgui.glade.h:105 -msgid "Deletes Message of the Day" -msgstr "УдалÑет Сообщение ДнÑ." - -#: ../src/gtkgui.glade.h:106 -msgid "Deny" -msgstr "Отклонить" - -#: ../src/gtkgui.glade.h:107 -msgid "Deny authorization from contact so he cannot know when you're connected" -msgstr "Отклонить авторизацию от контакта (Он не Ñможет видеть ваш ÑтатуÑ)" - -#: ../src/gtkgui.glade.h:108 -msgid "Department:" -msgstr "Отделение:" - -#: ../src/gtkgui.glade.h:109 -msgid "Display a_vatars of contacts in roster" -msgstr "Показавать а_ватары Ð´Ð»Ñ ÐºÐ¾Ð½Ñ‚Ð°ÐºÑ‚Ð¾Ð² в роÑтере" - -#: ../src/gtkgui.glade.h:110 -msgid "Display status _messages of contacts in roster" -msgstr "Показать _ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¾ ÑтатуÑе контакта в роÑтере" - -#: ../src/gtkgui.glade.h:111 -msgid "E-Mail:" -msgstr "Почта:" - -#: ../src/gtkgui.glade.h:112 -msgid "E_very 5 minutes" -msgstr "Каждые 5 _минут" - -#: ../src/gtkgui.glade.h:113 -msgid "Edit Groups" -msgstr "Редактировать Группы" - -#: ../src/gtkgui.glade.h:114 -msgid "Edit Personal Information..." -msgstr "Редактировать Личную Информацию..." - -#: ../src/gtkgui.glade.h:115 -msgid "Edit _Groups" -msgstr "Редактировать Группы" - -#: ../src/gtkgui.glade.h:116 -msgid "Emoticons:" -msgstr "Смайлики:" - -#. XML Console enable checkbutton -#: ../src/gtkgui.glade.h:118 -msgid "Enable" -msgstr "Включить" - -#: ../src/gtkgui.glade.h:119 -msgid "Enter it again for confirmation:" -msgstr "Введите опÑÑ‚ÑŒ Ð´Ð»Ñ Ð¿Ð¾Ð´Ñ‚Ð²ÐµÑ€Ð¶Ð´ÐµÐ½Ð¸Ñ:" - -#: ../src/gtkgui.glade.h:120 -msgid "Enter new password:" -msgstr "Введите новый пароль" - -#: ../src/gtkgui.glade.h:121 -msgid "Events" -msgstr "СобытиÑ" - -#: ../src/gtkgui.glade.h:122 -msgid "Extra Address:" -msgstr "Дополнительный ÐдреÑ:" - -#. Family Name -#: ../src/gtkgui.glade.h:124 -msgid "Family:" -msgstr "ФамилиÑ:" - -#: ../src/gtkgui.glade.h:125 -msgid "File Transfers" -msgstr "Передачи" - -#: ../src/gtkgui.glade.h:126 -msgid "File _Transfers" -msgstr "_Передачи" - -#: ../src/gtkgui.glade.h:127 -msgid "Filter:" -msgstr "Фильтр:" - -#: ../src/gtkgui.glade.h:128 -msgid "Font style:" -msgstr "Шрифт:" - -#: ../src/gtkgui.glade.h:129 -msgid "Forbid him/her to see my status" -msgstr "Запретить ему или ей видеть мой ÑтатуÑ" - -#: ../src/gtkgui.glade.h:130 -msgid "Format: YYYY-MM-DD" -msgstr "Формат: YYYY-MM-DD" - -#: ../src/gtkgui.glade.h:131 -msgid "Frequently Asked Questions (online)" -msgstr "ЧаÑтозадаваемые ВопроÑÑ‹ (в Ñети)" - -#: ../src/gtkgui.glade.h:132 -msgid "From:" -msgstr "От:" - -#: ../src/gtkgui.glade.h:133 -msgid "G_o" -msgstr "_Вперед" - -#: ../src/gtkgui.glade.h:134 ../src/notify.py:167 ../src/notify.py:189 -#: ../src/notify.py:201 ../src/tooltips.py:339 -msgid "Gajim" -msgstr "Gajim" - -#: ../src/gtkgui.glade.h:135 -msgid "Gajim Themes Customization" -msgstr "ÐаÑтройка Тем Ð´Ð»Ñ Gajim" - -#: ../src/gtkgui.glade.h:136 -msgid "" -"Gajim can send and receive meta-information related to a conversation you " -"may have with a contact. Here you can specify which chatstates you want to " -"send to the other party." -msgstr "Gajim может отÑылать и получать метаданные отноÑÑщиеÑÑ Ðº беÑеде Ñ ÐºÐ¾Ð½Ñ‚Ð°ÐºÑ‚Ð¾Ð¼. ЗдеÑÑŒ вы можете указать какие ÑоÑтоÑние беÑеды клиент будет отÑылать вашему реÑпонденту." - -#: ../src/gtkgui.glade.h:137 -msgid "Gajim will automatically show new events by poping up the relative window" -msgstr "Gajim будет автоматичеÑки показывать новые ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ñ Ð¿Ð¾Ð´Ð½Ð¸Ð¼Ð°Ñ ÑоответÑтвующее окно." - -#: ../src/gtkgui.glade.h:138 -msgid "" -"Gajim will notify you for new events via a popup in the bottom right of the " -"screen" -msgstr "Gajim будет уведомлÑÑ‚ÑŒ Ð²Ð°Ñ Ð¾ новых ÑобытиÑÑ… Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð² правом нижнем углу Ñкрана" - -#: ../src/gtkgui.glade.h:139 -msgid "" -"Gajim will notify you via a popup window in the bottom right of the screen " -"about contacts that just signed in" -msgstr "" -"Gajim будет уведомлÑÑ‚ÑŒ Ð²Ð°Ñ Ð¾ приÑоединившемÑÑ ÐºÐ¾Ð½Ñ‚Ð°ÐºÑ‚Ðµ Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð² " -"правом нижнем углу Ñкрана" - -#: ../src/gtkgui.glade.h:140 -msgid "" -"Gajim will notify you via a popup window in the bottom right of the screen " -"about contacts that just signed out" -msgstr "" -"Gajim будет уведомлÑÑ‚ÑŒ Ð²Ð°Ñ Ð¾ отÑоединившемÑÑ ÐºÐ¾Ð½Ñ‚Ð°ÐºÑ‚Ðµ Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð² " -"правом нижнем углу Ñкрана" - -#: ../src/gtkgui.glade.h:141 -msgid "Gajim will only change the icon of the contact that triggered the new event" -msgstr "Gajim будет лишь менÑÑ‚ÑŒ иконку у контакта, от которого пришло новое Ñообщение" - -#: ../src/gtkgui.glade.h:142 -msgid "Gajim: Account Creation Wizard" -msgstr "Gajim: МаÑтер Ð¡Ð¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð£Ñ‡ÐµÑ‚Ð½Ð¾Ð¹ ЗапиÑи" - -#. user has no group, print him in General -#: ../src/gtkgui.glade.h:143 ../src/roster_window.py:291 -#: ../src/roster_window.py:1183 ../src/roster_window.py:1405 -#: ../src/systray.py:286 -msgid "General" -msgstr "Общие" - -#. Given Name -#: ../src/gtkgui.glade.h:145 -msgid "Given:" -msgstr "ИмÑ:" - -#: ../src/gtkgui.glade.h:146 -msgid "Gone" -msgstr "Ушел" - -#: ../src/gtkgui.glade.h:147 -msgid "Group:" -msgstr "Группа:" - -#: ../src/gtkgui.glade.h:148 -msgid "HTTP Connect" -msgstr "HTTP Соединение" - -#: ../src/gtkgui.glade.h:149 -msgid "Help online" -msgstr "Помощь онлайн" - -#: ../src/gtkgui.glade.h:150 -msgid "Hides the window" -msgstr "Скрывает окно" - -#: ../src/gtkgui.glade.h:151 -msgid "Homepage:" -msgstr "Веб-Ñтраница:" - -#: ../src/gtkgui.glade.h:152 -msgid "Hostname: " -msgstr "ХоÑÑ‚: " - -#: ../src/gtkgui.glade.h:153 -msgid "I already have an account I want to use" -msgstr "У Ð¼ÐµÐ½Ñ ÑƒÐ¶Ðµ еÑÑ‚ÑŒ ÑƒÑ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ, которую Ñ Ñ…Ð¾Ñ‡Ñƒ иÑпользовать" - -#: ../src/gtkgui.glade.h:154 -msgid "I want to _register for a new account" -msgstr "Я хочу _зарегиÑтрировать новую учетную запиÑÑŒ" - -#: ../src/gtkgui.glade.h:155 -msgid "I would like to add you to my contact list." -msgstr "Ð’Ñ‹ не возражаете, еÑли Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÑŽ Ð’Ð°Ñ Ð² контакт лиÑÑ‚?" - -#: ../src/gtkgui.glade.h:156 -msgid "" -"If checked, Gajim will also broadcast some more IPs except from just your " -"IP, so file transfer has higher chances of working right." -msgstr "ЕÑли отмечено, Gajim будет передавать еще неÑколько IP адреÑов в дополнение к вашему, так что передача файла имеет больше шанÑов на уÑпех." - -#: ../src/gtkgui.glade.h:157 -msgid "" -"If checked, Gajim will display avatars of contacts in roster window and in " -"group chats" -msgstr "ЕÑли отмечено, то Gajim будет показывать аватары контактов в окне роÑтера и в окнах комнат" - -#: ../src/gtkgui.glade.h:158 -msgid "" -"If checked, Gajim will display status messages of contacts under the contact " -"name in roster window and in group chats" -msgstr "" -"ЕÑли отмечено, то Gajim будет отображать Ñообщение о ÑтатуÑе контакта под " -"его именем в окне роÑтера и в окнах комнат" - -#: ../src/gtkgui.glade.h:159 -msgid "If checked, Gajim will join this group chat on startup" -msgstr "ЕÑли отмечено, то Gajim будет входить в комнату при запуÑке" - -#: ../src/gtkgui.glade.h:160 -msgid "If checked, Gajim will remember the password for this account" -msgstr "ЕÑли отмечено, то Gajim запомнит пароль учетной запиÑи" - -#: ../src/gtkgui.glade.h:161 -msgid "" -"If checked, Gajim will remember the roster and chat window positions in the " -"screen and the sizes of them next time you run it" -msgstr "ЕÑли отмечено, то Gajim запомнит позицию и размер окна роÑтера" - -#: ../src/gtkgui.glade.h:162 -msgid "" -"If checked, Gajim will send keep-alive packets so it prevents connection " -"timeout which results in disconnection" -msgstr "" -"ЕÑли отмечено, то Gajim будет пинговать Ñервер чтобы избежать разрыва " -"ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð¿Ð¾ таймауту" - -#: ../src/gtkgui.glade.h:163 -msgid "" -"If checked, Gajim will store the password in ~/.gajim/config with 'read' " -"permission only for you" -msgstr "" -"ЕÑли отмечено, то Gajim Ñохранит пароль в ~/.gajim/config Ñ Ð´Ð¾Ñтупом на " -"чтение только Ð´Ð»Ñ Ð²Ð°Ñ" - -#: ../src/gtkgui.glade.h:164 -msgid "" -"If checked, Gajim will use protocol-specific status icons. (eg. A contact " -"from MSN will have the equivalent msn icon for status online, away, busy, " -"etc...)" -msgstr "" -"ЕÑли отмечено, то Gajim будет иÑпользовать Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ протокола Ñвои иконки " -"(например: Контакты Ñ MSN будут иметь ÑоответÑтвующие иконки msn Ð´Ð»Ñ " -"ÑтатуÑов в Ñети, ушел, занÑÑ‚ и Ñ‚.д....)" - -#: ../src/gtkgui.glade.h:165 -msgid "" -"If checked, Gajim, when launched, will automatically connect to jabber using " -"this account" -msgstr "" -"ЕÑли отмечено, Gajim, поÑле запуÑка, будет автоматичеÑки подÑоединÑÑ‚ÑŒÑÑ Ðº " -"jabber Ñерверу Ñ Ð¸Ñпользованием Ñтой учетной запиÑи" - -#: ../src/gtkgui.glade.h:166 -msgid "" -"If checked, any change to the global status (handled by the combobox at the " -"bottom of the roster window) will change the status of this account " -"accordingly" -msgstr "" -"ЕÑли отмечено, то любые Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ ÑтатуÑа (управлÑемого из " -"выпадающего ÑпиÑка внизу окна роÑтера) повлекут за Ñобой изменение ÑтатуÑа " -"Ñтой учетной запиÑи" - -#: ../src/gtkgui.glade.h:167 -msgid "" -"If not disabled, Gajim will replace ascii smilies like ':)' with equivalent " -"animated or static graphical emoticons" -msgstr "" -"ЕÑли отмечено, то Gajim будет заменÑÑ‚ÑŒ текÑтовые Ñмайлики, например ':)' их " -"графичеÑким или анимированным Ñквивалентом" - -#: ../src/gtkgui.glade.h:168 -msgid "" -"If you have 2 or more accounts and it is checked, Gajim will list all " -"contacts as if you had one account" -msgstr "" -"ЕÑли у Ð²Ð°Ñ 2 и более учетных запиÑей, то отметив здеÑÑŒ, вы заÑтавите Gajim " -"выводить вмеÑте контакты из вÑех учетных запиÑей" - -#: ../src/gtkgui.glade.h:169 -msgid "Inactive" -msgstr "Ðеактивен" - -#. Info/Query make the "IQ" initials. So translate like this 'YourLang/YourLang (Info/Query)'. Thanks (it's a tooltip so width is not a problem) -#: ../src/gtkgui.glade.h:171 -msgid "Info/Query" -msgstr "ИнформациÑ/ЗапроÑ" - -#: ../src/gtkgui.glade.h:172 -msgid "Information about you, as stored in the server" -msgstr "Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ ваÑ, как она хранитÑÑ Ð½Ð° Ñервере" - -#: ../src/gtkgui.glade.h:173 -msgid "Invitation Received" -msgstr "Получено Приглашение" - -#: ../src/gtkgui.glade.h:174 -msgid "Italic" -msgstr "КурÑив" - -#: ../src/gtkgui.glade.h:175 -msgid "Jabber" -msgstr "Jabber" - -#: ../src/gtkgui.glade.h:176 -msgid "Jabber ID:" -msgstr "Jabber ID:" - -#: ../src/gtkgui.glade.h:178 -msgid "Join _Group Chat" -msgstr "Войти в _Комнату" - -#: ../src/gtkgui.glade.h:179 -msgid "Location" -msgstr "РаÑположение" - -#: ../src/gtkgui.glade.h:180 -msgid "" -"MUC\n" -"Messages" -msgstr "" -"MUC\n" -"СообщениÑ" - -#: ../src/gtkgui.glade.h:182 -msgid "" -"MUC Directed\n" -"Messages" -msgstr "" -"Регулируемый MUC\n" -"СообщениÑ" - -#: ../src/gtkgui.glade.h:184 -msgid "Ma_nage..." -msgstr "_Управление..." - -#: ../src/gtkgui.glade.h:185 -msgid "Manage Accounts" -msgstr "Управление Учетными запиÑÑми" - -#: ../src/gtkgui.glade.h:186 -msgid "Manage Bookmarks" -msgstr "Управление Закладками" - -#: ../src/gtkgui.glade.h:187 -msgid "Manage Proxy Profiles" -msgstr "Управление ПрофилÑми ПрокÑи" - -#: ../src/gtkgui.glade.h:188 -msgid "Manage..." -msgstr "Управление..." - -#. Middle Name -#: ../src/gtkgui.glade.h:190 -msgid "Middle:" -msgstr "ОтчеÑтво:" - -#: ../src/gtkgui.glade.h:191 -msgid "Mo_derator" -msgstr "_Модератор" - -#: ../src/gtkgui.glade.h:192 -msgid "More" -msgstr "Еще" - -#: ../src/gtkgui.glade.h:193 -msgid "Name:" -msgstr "ИмÑ:" - -#: ../src/gtkgui.glade.h:194 -msgid "" -"Never\n" -"Always\n" -"Per account\n" -"Per type" -msgstr "" -"Ðикогда\n" -"Ð’Ñегда\n" -"По учетной запиÑи\n" -"По типу" - -#: ../src/gtkgui.glade.h:198 -msgid "Nickname:" -msgstr "Ðик:" - -#. None means no proxy profile selected -#: ../src/gtkgui.glade.h:201 -msgid "None" -msgstr "Ðет" - -#: ../src/gtkgui.glade.h:202 -msgid "Notify me about contacts that: " -msgstr "УведомлÑÑ‚ÑŒ о контактах которые: " - -#: ../src/gtkgui.glade.h:203 -msgid "Notify on new _Gmail e-mail" -msgstr "Сообщать о новых пиÑьмах в _Gmail" - -#: ../src/gtkgui.glade.h:204 -msgid "OS:" -msgstr "ОС:" - -#: ../src/gtkgui.glade.h:205 -msgid "On every _message" -msgstr "Ð’ _каждой Ñтроке" - -#: ../src/gtkgui.glade.h:206 -msgid "One message _window:" -msgstr "Одно _окно ÑообщениÑ:" - -#: ../src/gtkgui.glade.h:208 -msgid "Pass_word:" -msgstr "П_ароль" - -#: ../src/gtkgui.glade.h:209 -msgid "Passphrase" -msgstr "ÐŸÐ°Ñ€Ð¾Ð»ÑŒÐ½Ð°Ñ Ñ„Ñ€Ð°Ð·Ð°" - -#: ../src/gtkgui.glade.h:210 -msgid "Password:" -msgstr "Пароль:" - -#: ../src/gtkgui.glade.h:211 ../src/tooltips.py:645 -msgid "Paused" -msgstr "ПриоÑтановлено" - -#: ../src/gtkgui.glade.h:212 -msgid "Personal Information" -msgstr "Редактировать Личную Информацию" - -#: ../src/gtkgui.glade.h:213 -msgid "Phone No.:" -msgstr "Телефон:" - -#: ../src/gtkgui.glade.h:214 -msgid "Play _sounds" -msgstr "Проигрывать _звук" - -#: ../src/gtkgui.glade.h:215 -msgid "Port: " -msgstr "Порт: " - -#: ../src/gtkgui.glade.h:216 -msgid "Position:" -msgstr "ДолжноÑÑ‚ÑŒ:" - -#: ../src/gtkgui.glade.h:217 -msgid "Postal Code:" -msgstr "ИндекÑ:" - -#: ../src/gtkgui.glade.h:218 -msgid "Preferences" -msgstr "ÐаÑтройки" - -#. Prefix in Name -#: ../src/gtkgui.glade.h:220 -msgid "Prefix:" -msgstr "ПрефикÑ:" - -#: ../src/gtkgui.glade.h:221 -msgid "Preset messages:" -msgstr "ПредуÑтановленные ÑообщениÑ:" - -#: ../src/gtkgui.glade.h:222 -msgid "Print time:" -msgstr "Выводить времÑ:" - -#: ../src/gtkgui.glade.h:223 -msgid "Priori_ty:" -msgstr "Приори_тет:" - -#: ../src/gtkgui.glade.h:224 -msgid "" -"Priority is used in Jabber to determine who gets the events from the jabber " -"server when two or more clients are connected using the same account; The " -"client with the highest priority gets the events" -msgstr "" -"Приоритет иÑпользуетÑÑ Ð² Jabber Ð´Ð»Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ñ‚Ð¾Ð³Ð¾, кто будет получать " -"ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ñ Ð¾Ñ‚ jabber Ñервера когда подÑоединены два и более клиента Ñ Ð¾Ð´Ð½Ð¾Ð¹ и " -"той же учетной запиÑью. Клиент Ñ Ð½Ð°Ð¸Ð±Ð¾Ð»ÑŒÑˆÐ¸Ð¼ приоритетом будет получать " -"ÑобытиÑ" - -#: ../src/gtkgui.glade.h:225 -msgid "Profile, Avatar" -msgstr "Профиль, Ðватара" - -#: ../src/gtkgui.glade.h:226 -msgid "Protocol:" -msgstr "Протокол:" - -#: ../src/gtkgui.glade.h:227 -msgid "Proxy:" -msgstr "ПрокÑи:" - -#: ../src/gtkgui.glade.h:228 -msgid "Query Builder..." -msgstr "Редактор ЗапроÑов..." - -#: ../src/gtkgui.glade.h:229 -msgid "Recently:" -msgstr "Ðедавно:" - -#: ../src/gtkgui.glade.h:230 -msgid "Register to" -msgstr "ЗарегиÑтрировать в" - -#: ../src/gtkgui.glade.h:231 -msgid "Remove account _only from Gajim" -msgstr "Удалит учетную запиÑÑŒ _только из Gajim" - -#: ../src/gtkgui.glade.h:232 -msgid "Remove account from Gajim and from _server" -msgstr "Удалить учетную запиÑÑŒ из Gajim и Ñ _Ñервера" - -#: ../src/gtkgui.glade.h:233 -msgid "Remove file transfer from the list." -msgstr "Удалить передачу из ÑпиÑка." - -#: ../src/gtkgui.glade.h:234 -msgid "Removes completed, canceled and failed file transfers from the list" -msgstr "УдалÑет завершеные, отмененные и неудачные передачи из ÑпиÑка" - -#: ../src/gtkgui.glade.h:235 -msgid "Reply to this message" -msgstr "Ответить на Ñто Ñообщение" - -#: ../src/gtkgui.glade.h:236 -msgid "Resour_ce: " -msgstr "РеÑу_Ñ€Ñ: " - -#: ../src/gtkgui.glade.h:237 -msgid "" -"Resource is sent to the Jabber server in order to separate the same JID in " -"two or more parts depending on the number of the clients connected in the " -"same server with the same account. So you might be connected in the same " -"account with resource 'Home' and 'Work' at the same time. The resource which " -"has the highest priority will get the events. (see below)" -msgstr "" -"РеÑÑƒÑ€Ñ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²Ð»ÑетÑÑ Jabber Ñерверу Ð´Ð»Ñ Ñ‚Ð¾Ð³Ð¾, чтобы 'разделить' один и тот же " -"JID на две и более чаÑти в завиÑимоÑти от чиÑла клиентов приÑоединенных к " -"одному Ñерверу Ñ Ñ‚Ð¾Ð¹ же Ñамой учетной запиÑью. Так что вы можете быть " -"подÑоединены Ñ Ñ€ÐµÑурÑами 'Дом' или 'Работа' на одном учетной запиÑи " -"одновременно. РеÑурÑ, который имеет больший приоритет будет получать вÑе " -"ÑобытиÑ. (См. ниже)" - -#: ../src/gtkgui.glade.h:238 -msgid "Resource:" -msgstr "РеÑурÑ:" - -#: ../src/gtkgui.glade.h:239 -msgid "Role:" -msgstr "ОбÑзанноÑти:" - -#: ../src/gtkgui.glade.h:240 -msgid "Room Configuration" -msgstr "ÐаÑтройки Комнаты" - -#: ../src/gtkgui.glade.h:241 -msgid "Room:" -msgstr "Комната:" - -#: ../src/gtkgui.glade.h:242 -msgid "Save _passphrase (insecure)" -msgstr "Сохранить _парольную фразу (небезопаÑно)" - -#: ../src/gtkgui.glade.h:243 -msgid "Save _position and size for roster and chat windows" -msgstr "Сохранить _положение и размер роÑтера и окон беÑед" - -#: ../src/gtkgui.glade.h:244 -msgid "Save as Preset..." -msgstr "Сохранить как ПредуÑтановленный параметр..." - -#: ../src/gtkgui.glade.h:245 -msgid "Save conversation _logs for all contacts" -msgstr "_ИÑÑ‚Ð¾Ñ€Ð¸Ñ Ð²Ñех контактов Ð´Ð»Ñ Ñтой учетной запиÑи" - -#: ../src/gtkgui.glade.h:246 -msgid "Save pass_word" -msgstr "Сохранить _пароль" - -#: ../src/gtkgui.glade.h:247 -msgid "Search" -msgstr "ПоиÑк" - -#: ../src/gtkgui.glade.h:248 -msgid "Sen_d" -msgstr "_Отправить" - -#: ../src/gtkgui.glade.h:249 -msgid "Send File" -msgstr "_Отправить Файл" - -#: ../src/gtkgui.glade.h:250 -msgid "Send Single _Message" -msgstr "Отправить _Сообщение" - -#: ../src/gtkgui.glade.h:251 -msgid "Send Single _Message..." -msgstr "Отправить Одиночное _Сообщение..." - -#: ../src/gtkgui.glade.h:252 -msgid "Send _File" -msgstr "Отправить _Файл" - -#: ../src/gtkgui.glade.h:253 -msgid "Send keep-alive packets" -msgstr "Отправить пинг" - -#: ../src/gtkgui.glade.h:254 -msgid "Send message" -msgstr "Отправить Ñообщение" - -#: ../src/gtkgui.glade.h:255 -msgid "Send message and close window" -msgstr "Отправить Ñообщение и закрыть окно" - -#: ../src/gtkgui.glade.h:256 -msgid "Sends a message to currently connected users to this server" -msgstr "ОтправлÑет Ñообщение пользователÑм подÑоединенным к Ñерверу в данный момент" - -#: ../src/gtkgui.glade.h:257 -msgid "Server:" -msgstr "Сервер:" - -#: ../src/gtkgui.glade.h:258 -msgid "Servers Features" -msgstr "Параметры Сервера" - -#: ../src/gtkgui.glade.h:259 -msgid "Set MOTD" -msgstr "УÑтановить СД" - -#: ../src/gtkgui.glade.h:260 -msgid "Set _Avatar" -msgstr "УÑтановить _Ðватару" - -#: ../src/gtkgui.glade.h:261 -msgid "Set my profile when I connect" -msgstr "УÑтановить мой профиль при подÑоединении" - -#: ../src/gtkgui.glade.h:262 -msgid "Sets Message of the Day" -msgstr "УÑтанавливает фортунку" - -#: ../src/gtkgui.glade.h:263 -msgid "Show All Pending _Events" -msgstr "Показать ÐепроÑмотренные _СобытиÑ" - -#: ../src/gtkgui.glade.h:264 -msgid "Show _Offline Contacts" -msgstr "Показать _Отключенных" - -#: ../src/gtkgui.glade.h:265 -msgid "Show _Roster" -msgstr "Показать _РоÑтер" - -#: ../src/gtkgui.glade.h:266 -msgid "Show _XML Console" -msgstr "Показать _XML КонÑоль" - -#: ../src/gtkgui.glade.h:267 -msgid "Show only in _roster" -msgstr "Показывать только в _роÑтере" - -#: ../src/gtkgui.glade.h:268 -msgid "Shows a list of file transfers between you and other" -msgstr "Показывает ÑпиÑок передач между вами и оÑтальными" - -#: ../src/gtkgui.glade.h:269 -msgid "Sign _in" -msgstr "Ð’_ошли" - -#: ../src/gtkgui.glade.h:270 -msgid "Sign _out" -msgstr "Ð’_ышли" - -#: ../src/gtkgui.glade.h:271 -msgid "Sta_tus" -msgstr "Ста_туÑ" - -#: ../src/gtkgui.glade.h:272 -msgid "Start _Chat" -msgstr "Ðачать _Чат" - -#: ../src/gtkgui.glade.h:273 -msgid "State:" -msgstr "Штат:" - -#: ../src/gtkgui.glade.h:274 -msgid "Status" -msgstr "СтатуÑ" - -#: ../src/gtkgui.glade.h:275 -msgid "Status:" -msgstr "СтатуÑ:" - -#: ../src/gtkgui.glade.h:276 -msgid "Street:" -msgstr "Улица:" - -#: ../src/gtkgui.glade.h:277 -msgid "Subject:" -msgstr "Тема:" - -#: ../src/gtkgui.glade.h:278 -msgid "Subscription Request" -msgstr "Ð—Ð°Ð¿Ñ€Ð¾Ñ ÐŸÐ¾Ð´Ð¿Ð¸Ñки" - -#: ../src/gtkgui.glade.h:279 -msgid "Subscription:" -msgstr "ПодпиÑка:" - -#. Suffix in Name -#: ../src/gtkgui.glade.h:281 -msgid "Suffix:" -msgstr "СуффикÑ:" - -#: ../src/gtkgui.glade.h:282 -msgid "Synch_ronize account status with global status" -msgstr "Син_хронизировать ÑÑ‚Ð°Ñ‚ÑƒÑ ÑƒÑ‡ÐµÑ‚Ð½Ð¾Ð¹ запиÑи Ñ Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ñ‹Ð¼ ÑтатуÑом" - -#: ../src/gtkgui.glade.h:283 -msgid "T_heme:" -msgstr "_Тема:" - -#: ../src/gtkgui.glade.h:284 -msgid "Text _color:" -msgstr "Цвет _текÑта:" - -#: ../src/gtkgui.glade.h:285 -msgid "Text _font:" -msgstr "Цвет _шрифта:" - -#: ../src/gtkgui.glade.h:286 -msgid "The auto away status message" -msgstr "Сообщение о ÑтатуÑе Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾-отошел" - -#: ../src/gtkgui.glade.h:287 -msgid "The auto not available status message" -msgstr "Сообщение о ÑтатуÑе Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾-недоÑтупен" - -#: ../src/gtkgui.glade.h:288 -msgid "" -"This action removes single file transfer from the list. If the transfer is " -"active, it is first stopped and then removed" -msgstr "" -"Это дейÑтвие удалÑет единичную передачу из ÑпиÑка. ЕÑли передача еще " -"активна, она Ñначала оÑтанавливаетÑÑ Ð¸ поÑле удалÑетÑÑ" - -#: ../src/gtkgui.glade.h:289 -msgid "Title:" -msgstr "Заголовок:" - -#: ../src/gtkgui.glade.h:290 -msgid "To:" -msgstr "К:" - -#: ../src/gtkgui.glade.h:291 -msgid "Toggle Open_PGP Encryption" -msgstr "Включить Open_PGP Шифрование" - -#: ../src/gtkgui.glade.h:292 -msgid "Type:" -msgstr "Тип:" - -#: ../src/gtkgui.glade.h:293 -msgid "Underline" -msgstr "Подчеркивание" - -#: ../src/gtkgui.glade.h:294 -msgid "Update MOTD" -msgstr "Обновить СД" - -#: ../src/gtkgui.glade.h:295 -msgid "Updates Message of the Day" -msgstr "ОбновлÑет фортунку" - -#: ../src/gtkgui.glade.h:296 -msgid "Use _SSL (legacy)" -msgstr "ИÑпользовать _SSL (legacy)" - -#: ../src/gtkgui.glade.h:297 -msgid "Use _transports iconsets" -msgstr "ИÑпользовать иконки Ð´Ð»Ñ _транÑпортов" - -#: ../src/gtkgui.glade.h:298 -msgid "Use authentication" -msgstr "ИÑпользовать аутентификацию" - -#: ../src/gtkgui.glade.h:299 -msgid "Use custom hostname/port" -msgstr "ИÑпользовать пользовательÑкие хоÑÑ‚/порт" - -#: ../src/gtkgui.glade.h:300 -msgid "Use file transfer proxies" -msgstr "ИÑпользовать прокÑи Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ´Ð°Ñ‡Ð¸ файла" - -#: ../src/gtkgui.glade.h:301 -msgid "Use t_rayicon (aka. notification area icon)" -msgstr "Иконка в _трее (или в облаÑти уведомлениÑ)" - -#: ../src/gtkgui.glade.h:302 -msgid "User ID:" -msgstr "ID пользователÑ:" - -#: ../src/gtkgui.glade.h:303 -msgid "When a file transfer is complete show a popup notification" -msgstr "Показать уведомление по окончании загрузки" - -#: ../src/gtkgui.glade.h:304 -msgid "" -"When a new event (message, file transfer request etc..) is received, the " -"following methods may be used to inform you about it. Please note that " -"events about new messages only occur if it is a new message from a contact " -"you are not already chatting with" -msgstr "" -"Когда проиÑходит новое Ñобытие (приходит Ñообщение, Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð° передачу файла " -"и Ñ‚.д.) могут быть иÑпользованы Ñледующие ÑпоÑобы ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¾Ð± Ñтом. " -"Учтите что Ñобытие ÑоответÑтвующее новому Ñообщению, не проиÑходит еÑли вы уже " -"беÑедуете Ñ ÐºÐ¾Ð½Ñ‚Ð°ÐºÑ‚Ð¾Ð¼" - -#: ../src/gtkgui.glade.h:305 -msgid "When new event is received" -msgstr "Когда получено новое Ñообытие" - -#: ../src/gtkgui.glade.h:306 -msgid "Work" -msgstr "Работа" - -#: ../src/gtkgui.glade.h:307 -msgid "" -"You need to have an account in order to connect\n" -"to the Jabber network." -msgstr "" -"Ðеобходимо Ñоздать учетную запиÑÑŒ Ð´Ð»Ñ Ð¿Ñ€Ð¸ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ \n" -"к Jabber Ñети." - -#: ../src/gtkgui.glade.h:309 -msgid "Your JID:" -msgstr "Ваш JID:" - -#. Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector) -#: ../src/gtkgui.glade.h:311 -msgid "_Actions" -msgstr "_ДейÑтвиÑ" - -#: ../src/gtkgui.glade.h:312 -msgid "_Add Contact..." -msgstr "_Добавить Контакт..." - -#: ../src/gtkgui.glade.h:313 -msgid "_Add to Roster" -msgstr "Добавить в РоÑтер" - -#: ../src/gtkgui.glade.h:314 -msgid "_Address:" -msgstr "_ÐдреÑ:" - -#: ../src/gtkgui.glade.h:315 -msgid "_Admin" -msgstr "_Ðдмин" - -#: ../src/gtkgui.glade.h:316 -msgid "_Administrator" -msgstr "_ÐдминиÑтрирование" - -#: ../src/gtkgui.glade.h:317 -msgid "_Advanced" -msgstr "_Дополнительные дейÑтвиÑ" - -#: ../src/gtkgui.glade.h:318 -msgid "_After time:" -msgstr "_ПоÑле времени:" - -#: ../src/gtkgui.glade.h:319 -msgid "_Authorize" -msgstr "_Ðвторизовать" - -#: ../src/gtkgui.glade.h:320 -msgid "_Background:" -msgstr "Цвет _фона" - -#: ../src/gtkgui.glade.h:321 -msgid "_Ban" -msgstr "_Забанить" - -#: ../src/gtkgui.glade.h:322 -msgid "_Before time:" -msgstr "_До времени:" - -#: ../src/gtkgui.glade.h:323 -msgid "_Bookmark This Room" -msgstr "Добавить Эту Комнату в _Закладки" - -#: ../src/gtkgui.glade.h:324 -msgid "_Browser:" -msgstr "_Браузер:" - -#: ../src/gtkgui.glade.h:325 -msgid "_Cancel" -msgstr "О_тменить" - -#: ../src/gtkgui.glade.h:326 -msgid "_Compact View Alt+C" -msgstr "_Компактный Вид Alt-C" - -#: ../src/gtkgui.glade.h:327 -msgid "_Contents" -msgstr "_Содержание" - -#: ../src/gtkgui.glade.h:329 -msgid "_Copy JID/Email Address" -msgstr "_Скопировать JID/Почтовый ÐдреÑ" - -#: ../src/gtkgui.glade.h:330 -msgid "_Copy Link Location" -msgstr "_Копировать Ð°Ð´Ñ€ÐµÑ ÑÑылки" - -#: ../src/gtkgui.glade.h:331 -msgid "_Deny" -msgstr "_Отклонить" - -#: ../src/gtkgui.glade.h:332 -msgid "_Discover Services" -msgstr "_ПроÑмотреть СервиÑÑ‹" - -#: ../src/gtkgui.glade.h:333 -msgid "_Discover Services..." -msgstr "_ПроÑмотреть СервиÑÑ‹..." - -#: ../src/gtkgui.glade.h:335 -msgid "_FAQ" -msgstr "_ЧаВО" - -#: ../src/gtkgui.glade.h:336 -msgid "_File manager:" -msgstr "_Менеджер файлов:" - -#: ../src/gtkgui.glade.h:337 -msgid "_Filter:" -msgstr "_Фильтр:" - -#: ../src/gtkgui.glade.h:338 -msgid "_Finish" -msgstr "_Закончить" - -#: ../src/gtkgui.glade.h:339 -msgid "_Font:" -msgstr "_Шрифт:" - -#: ../src/gtkgui.glade.h:340 -msgid "_Group Chat" -msgstr "_Комната" - -#: ../src/gtkgui.glade.h:341 -msgid "_Help" -msgstr "_Помощь" - -#: ../src/gtkgui.glade.h:342 -msgid "_Highlight misspelled words" -msgstr "ВыделÑÑ‚ÑŒ _Ñлова Ñ Ð¾Ð¿ÐµÑ‡Ð°Ñ‚ÐºÐ°Ð¼Ð¸" - -#: ../src/gtkgui.glade.h:343 -msgid "_History" -msgstr "_ИÑториÑ" - -#: ../src/gtkgui.glade.h:344 -msgid "_Host:" -msgstr "_ХоÑÑ‚: " - -#. Info/Query: all(?) jabber xml start with Welcome to Gajim History Logs Manager\n" -"\n" -"You can select logs from the left and/or search database from below.\n" -"\n" -"WARNING:\n" -"If you plan to do massive deletions, please make sure Gajim is not running. " -"Generally avoid deletions with contacts you currently chat with." +#: ../src/gtkgui_helpers.py:717 +msgid "Extension not supported" msgstr "" -"Добро пожаловать в Менеджер ИÑтории Gajim'а\n" -"\n" -"Ð’Ñ‹ можете выбрать логи в левом поле и/или иÑкать в базе данных в форме внизу. " -"\n" -"\n" -"Ð’ÐИМÐÐИЕ:\n" -"ЕÑли вы ÑобираетеÑÑŒ уÑтроить маÑÑовую чиÑтку, пожалуйÑта удоÑтоверьтеÑÑŒ что Gajim не запущен. Избегайте удалений из логов контактов Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ð¼Ð¸ вы разговариваете в Ñтот момент." -#: ../src/history_manager.glade.h:7 -msgid "Delete" -msgstr "Удалить" +#: ../src/gtkgui_helpers.py:718 +#, python-format +msgid "Image cannot be saved in %(type)s format. Save as %(new_filename)s?" +msgstr "" -#: ../src/history_manager.glade.h:8 -msgid "Export" -msgstr "ЭкÑпорт" +#: ../src/gtkgui_helpers.py:727 +#, fuzzy +msgid "Save Image as..." +msgstr "Сохранить файл как..." -#: ../src/history_manager.glade.h:9 -msgid "Gajim History Logs Manager" -msgstr "Менеджер ИÑтории Gajim'а" - -#: ../src/history_manager.glade.h:10 -msgid "_Search Database" -msgstr "_ПоиÑк в Базе Данных" - -#: ../src/history_manager.py:58 +#: ../src/history_manager.py:61 msgid "Cannot find history logs database" msgstr "Ðе могу найти базу данных иÑтории" #. holds jid -#: ../src/history_manager.py:102 +#: ../src/history_manager.py:104 msgid "Contacts" msgstr "Контакты" #. holds time -#: ../src/history_manager.py:115 ../src/history_manager.py:155 -#: ../src/history_window.py:94 +#: ../src/history_manager.py:117 ../src/history_manager.py:157 +#: ../src/history_window.py:85 msgid "Date" msgstr "Дата" #. holds nickname -#: ../src/history_manager.py:121 ../src/history_manager.py:173 +#: ../src/history_manager.py:123 ../src/history_manager.py:175 msgid "Nickname" msgstr "Ðик" #. holds message -#: ../src/history_manager.py:129 ../src/history_manager.py:161 -#: ../src/history_window.py:102 +#: ../src/history_manager.py:131 ../src/history_manager.py:163 +#: ../src/history_window.py:93 msgid "Message" msgstr "Сообщение" #. holds subject -#: ../src/history_manager.py:136 ../src/history_manager.py:167 +#: ../src/history_manager.py:138 ../src/history_manager.py:169 msgid "Subject" msgstr "Тема" -#: ../src/history_manager.py:181 +#: ../src/history_manager.py:183 msgid "" "Do you want to clean up the database? (STRONGLY NOT RECOMMENDED IF GAJIM IS " "RUNNING)" -msgstr "Ð’Ñ‹ хотите очиÑтить базу данных? (КРÐЙÐЕ ÐЕ РЕКОМЕÐДУЕТСЯ ЕСЛИ GAJIM ЗÐПУЩЕÐ)" +msgstr "" +"Ð’Ñ‹ хотите очиÑтить базу данных? (КРÐЙÐЕ ÐЕ РЕКОМЕÐДУЕТСЯ ЕСЛИ GAJIM ЗÐПУЩЕÐ)" -#: ../src/history_manager.py:183 +#: ../src/history_manager.py:185 msgid "" "Normally allocated database size will not be freed, it will just become " "reusable. If you really want to reduce database filesize, click YES, else " @@ -3641,144 +4185,181 @@ msgid "" "\n" "In case you click YES, please wait..." msgstr "" -"Обычно размер файла базы данных не уменьшаетÑÑ Ð¿Ñ€Ð¸ очиÑтке, а переиÑпользуетÑÑ. ЕÑли вы хотите дейÑтвительно уменьшить размер файла, нажмите ДÐ, в противном Ñлучай нажмите ÐЕТ.\n" +"Обычно размер файла базы данных не уменьшаетÑÑ Ð¿Ñ€Ð¸ очиÑтке, а " +"переиÑпользуетÑÑ. ЕÑли вы хотите дейÑтвительно уменьшить размер файла, " +"нажмите ДÐ, в противном Ñлучай нажмите ÐЕТ.\n" "\n" "ЕÑли вы нажали ДÐ, пожалуйÑта подождите..." -#: ../src/history_manager.py:389 +#: ../src/history_manager.py:391 msgid "Exporting History Logs..." msgstr "ЭкÑпортирую ИÑторию..." -#: ../src/history_manager.py:465 +#: ../src/history_manager.py:467 #, python-format msgid "%(who)s on %(time)s said: %(message)s\n" msgstr "%(who)s в %(time)s Ñказал: %(message)s\n" -#: ../src/history_manager.py:465 +#: ../src/history_manager.py:467 msgid "who" msgstr "кто" -#: ../src/history_manager.py:503 +#: ../src/history_manager.py:505 msgid "Do you really want to delete logs of the selected contact?" msgid_plural "Do you really want to delete logs of the selected contacts?" msgstr[0] "Ð’Ñ‹ точно хотите удалить логи выделенного контакта?" msgstr[1] "Ð’Ñ‹ точно хотите удалить логи выделенных контактов?" msgstr[2] "Ð’Ñ‹ точно хотите удалить логи выделенных контактов?" -#: ../src/history_manager.py:507 ../src/history_manager.py:543 +#: ../src/history_manager.py:509 ../src/history_manager.py:545 msgid "This is an irreversible operation." msgstr "Это Ð½ÐµÐ¾Ð±Ñ€Ð°Ñ‚Ð¸Ð¼Ð°Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ" -#: ../src/history_manager.py:540 +#: ../src/history_manager.py:542 msgid "Do you really want to delete the selected message?" msgid_plural "Do you really want to delete the selected messages?" msgstr[0] "Ð’Ñ‹ точно хотите удалить выделенное Ñообщение?" msgstr[1] "Ð’Ñ‹ точно хотите удалить выделенные ÑообщениÑ?" msgstr[2] "Ð’Ñ‹ точно хотите удалить выделенные ÑообщениÑ?" -#: ../src/history_window.py:111 ../src/history_window.py:113 +#: ../src/history_window.py:102 ../src/history_window.py:104 #, python-format msgid "Conversation History with %s" msgstr "ИÑÑ‚Ð¾Ñ€Ð¸Ñ %s" -#: ../src/history_window.py:265 +#: ../src/history_window.py:258 #, python-format msgid "%(nick)s is now %(status)s: %(status_msg)s" msgstr "%(nick)s теперь %(status)s: %(status_msg)s" -#: ../src/history_window.py:269 +#: ../src/history_window.py:262 ../src/notify.py:113 #, python-format msgid "%(nick)s is now %(status)s" msgstr "%(nick)s теперь %(status)s" -#: ../src/history_window.py:275 +#: ../src/history_window.py:268 #, python-format msgid "Status is now: %(status)s: %(status_msg)s" msgstr "Ð¡Ñ‚Ð°Ñ‚ÑƒÑ ÑƒÑтановлен в: %(status)s: %(status_msg)s" -#: ../src/history_window.py:278 +#: ../src/history_window.py:271 #, python-format msgid "Status is now: %(status)s" msgstr "Ð¡Ñ‚Ð°Ñ‚ÑƒÑ ÑƒÑтановлен в: %(status)s" -#: ../src/message_window.py:233 +#: ../src/message_window.py:244 msgid "Messages" msgstr "СообщениÑ" -#: ../src/message_window.py:234 +#: ../src/message_window.py:245 #, python-format msgid "%s - Gajim" msgstr "%s - Gajim" -#: ../src/roster_window.py:140 +#: ../src/notify.py:111 +#, fuzzy, python-format +msgid "%(nick)s Changed Status" +msgstr "%(nick)s теперь %(status)s" + +#: ../src/notify.py:121 +#, python-format +msgid "%(nickname)s Signed In" +msgstr "%(nickname)s подключилÑÑ" + +#: ../src/notify.py:129 +#, python-format +msgid "%(nickname)s Signed Out" +msgstr "%(nickname)s отключилÑÑ" + +#: ../src/notify.py:141 +#, python-format +msgid "New Single Message from %(nickname)s" +msgstr "Ðовое Ñообщение от %(nickname)s" + +#: ../src/notify.py:150 +#, python-format +msgid "New Private Message from room %s" +msgstr "Ðовое Личное Сообщение из комнаты %s" + +#: ../src/notify.py:151 +#, python-format +msgid "%(nickname)s: %(message)s" +msgstr "%(nickname)s: %(message)s" + +#: ../src/notify.py:157 +#, python-format +msgid "New Message from %(nickname)s" +msgstr "Ðовое Ñообщение от %(nickname)s" + +#: ../src/roster_window.py:131 msgid "Merged accounts" msgstr "Объединенные учетные запиÑи" -#: ../src/roster_window.py:289 ../src/common/helpers.py:42 +#: ../src/roster_window.py:288 ../src/common/helpers.py:39 msgid "Observers" msgstr "Ðаблюдатели" -#: ../src/roster_window.py:542 +#: ../src/roster_window.py:544 #, python-format msgid "You are already in room %s" msgstr "Ð’Ñ‹ уже в комнате %s" -#: ../src/roster_window.py:546 ../src/roster_window.py:2262 +#: ../src/roster_window.py:548 ../src/roster_window.py:2280 msgid "You cannot join a room while you are invisible" -msgstr "Ð’Ñ‹ не можете зайти в комнату так как вы в режиме невидимоÑти." +msgstr "Ð’Ñ‹ не можете зайти в комнату, так как вы в режиме невидимоÑти." #. the 'manage gc bookmarks' item is showed #. below to avoid duplicate code #. add -#: ../src/roster_window.py:735 +#: ../src/roster_window.py:748 #, python-format msgid "to %s account" msgstr "учетной запиÑи %s" #. disco -#: ../src/roster_window.py:742 +#: ../src/roster_window.py:755 #, python-format msgid "using %s account" msgstr "иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ %s учетную запиÑÑŒ" -#. new message +#. new chat #. for chat_with #. for single message -#: ../src/roster_window.py:750 ../src/systray.py:194 ../src/systray.py:201 +#: ../src/roster_window.py:763 ../src/systray.py:193 ../src/systray.py:198 #, python-format msgid "using account %s" msgstr "иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ ÑƒÑ‡ÐµÑ‚Ð½ÑƒÑŽ запиÑÑŒ %s" #. profile, avatar -#: ../src/roster_window.py:759 +#: ../src/roster_window.py:772 #, python-format msgid "of account %s" msgstr "Ð´Ð»Ñ ÑƒÑ‡ÐµÑ‚Ð½Ð¾Ð¹ запиÑи %s" -#: ../src/roster_window.py:818 +#: ../src/roster_window.py:831 msgid "Manage Bookmarks..." -msgstr "Управление Закладками..." +msgstr "Управление закладками..." -#: ../src/roster_window.py:842 +#: ../src/roster_window.py:855 #, python-format msgid "for account %s" msgstr "Ð´Ð»Ñ ÑƒÑ‡ÐµÑ‚Ð½Ð¾Ð¹ запиÑи %s" #. History manager -#: ../src/roster_window.py:863 +#: ../src/roster_window.py:876 msgid "History Manager" -msgstr "Менеджер ИÑтории" +msgstr "Менеджер иÑтории" -#: ../src/roster_window.py:872 +#: ../src/roster_window.py:885 msgid "_Join New Room" -msgstr "_Войти в Ðовую Комнату" +msgstr "_Войти в новую комнату" -#: ../src/roster_window.py:1158 +#: ../src/roster_window.py:1159 #, python-format msgid "Transport \"%s\" will be removed" msgstr "ТранÑпорт \"%s\" будет удален" -#: ../src/roster_window.py:1158 +#: ../src/roster_window.py:1159 msgid "" "You will no longer be able to send and receive messages to contacts from " "this transport." @@ -3786,11 +4367,11 @@ msgstr "" "У Ð²Ð°Ñ Ñ‚ÐµÐ¿ÐµÑ€ÑŒ не будет возможноÑти приема и отправки ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ ÐºÐ¾Ð½Ñ‚Ð°ÐºÑ‚Ð°Ð¼ " "через Ñтот транÑпорт." -#: ../src/roster_window.py:1200 -msgid "Assign OpenPGP Key" -msgstr "Ðазначить OpenPGP Ключ" - #: ../src/roster_window.py:1201 +msgid "Assign OpenPGP Key" +msgstr "Ðазначить OpenPGP ключ" + +#: ../src/roster_window.py:1202 msgid "Select a key to apply to the contact" msgstr "Выберите ключ который будет применен к контакту" @@ -3812,49 +4393,49 @@ msgstr "_ОтключитьÑÑ" #: ../src/roster_window.py:1545 msgid "_Change Status Message" -msgstr "_Изменить Сообщение о СтатуÑе" +msgstr "_Изменить Ñообщение о ÑтатуÑе" -#: ../src/roster_window.py:1617 +#: ../src/roster_window.py:1621 msgid "Authorization has been sent" msgstr "Была отправлена авторизациÑ" -#: ../src/roster_window.py:1618 +#: ../src/roster_window.py:1622 #, python-format msgid "Now \"%s\" will know your status." msgstr "Теперь \"%s\" будет знать о вашем ÑтатуÑе." -#: ../src/roster_window.py:1642 +#: ../src/roster_window.py:1646 msgid "Subscription request has been sent" msgstr "Был отправлен Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð° подпиÑку " -#: ../src/roster_window.py:1643 +#: ../src/roster_window.py:1647 #, python-format msgid "If \"%s\" accepts this request you will know his or her status." msgstr "ЕÑли \"%s\" примет ваш запроÑ, вы будете знать его или её ÑтатуÑ" -#: ../src/roster_window.py:1654 +#: ../src/roster_window.py:1658 msgid "Authorization has been removed" msgstr "ÐÐ²Ñ‚Ð¾Ñ€Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð±Ñ‹Ð»Ð° удалена" -#: ../src/roster_window.py:1655 +#: ../src/roster_window.py:1659 #, python-format msgid "Now \"%s\" will always see you as offline." msgstr "Теперь \"%s\" вÑегда будет видеть Ð²Ð°Ñ Ð² оффлайне." -#: ../src/roster_window.py:1824 +#: ../src/roster_window.py:1822 #, python-format msgid "Contact \"%s\" will be removed from your roster" msgstr "Контакт \"%s\" будет удален из вашего роÑтера" -#: ../src/roster_window.py:1828 +#: ../src/roster_window.py:1826 msgid "" "By removing this contact you also remove authorization resulting in him or " "her always seeing you as offline." msgstr "" -"ЕÑли вы удалите контакт, вы так же удалите и авторизацию, то вы будете видеть " -"его или её вÑегда в оффлайне." +"ЕÑли вы удалите контакт, вы так же удалите и авторизацию, то вы будете " +"видеть его или её вÑегда в оффлайне." -#: ../src/roster_window.py:1832 +#: ../src/roster_window.py:1830 msgid "" "By removing this contact you also by default remove authorization resulting " "in him or her always seeing you as offline." @@ -3862,56 +4443,57 @@ msgstr "" "ЕÑли вы удалите контакт, вы так же удалите и авторизацию. Ð’Ñ‹ будете видеть " "его или её вÑегда в оффлайне." -#: ../src/roster_window.py:1833 +#: ../src/roster_window.py:1831 msgid "I want this contact to know my status after removal" msgstr "Я хочу чтобы Ñтот контакт видел мой ÑÑ‚Ð°Ñ‚ÑƒÑ Ð¿Ð¾Ñле удалениÑ" -#: ../src/roster_window.py:1901 +#: ../src/roster_window.py:1899 msgid "Passphrase Required" -msgstr "ТребуетÑÑ ÐŸÐ°Ñ€Ð¾Ð»ÑŒÐ½Ð°Ñ Ð¤Ñ€Ð°Ð·Ð°" +msgstr "ТребуетÑÑ Ð¿Ð°Ñ€Ð¾Ð»ÑŒÐ½Ð°Ñ Ñ„Ñ€Ð°Ð·Ð°" -#: ../src/roster_window.py:1902 +#: ../src/roster_window.py:1900 #, python-format msgid "Enter GPG key passphrase for account %s." msgstr "Введите парольную фразу GPG Ð´Ð»Ñ ÑƒÑ‡ÐµÑ‚Ð½Ð¾Ð¹ запиÑи %s" -#: ../src/roster_window.py:1907 +#: ../src/roster_window.py:1905 msgid "Save passphrase" msgstr "Сохранить парольную фразу (небезопаÑно)" -#: ../src/roster_window.py:1915 +#: ../src/roster_window.py:1913 msgid "Wrong Passphrase" -msgstr "ÐÐµÐ²ÐµÑ€Ð½Ð°Ñ ÐŸÐ°Ñ€Ð¾Ð»ÑŒÐ½Ð°Ñ Ð¤Ñ€Ð°Ð·Ð°" +msgstr "ÐÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð¿Ð°Ñ€Ð¾Ð»ÑŒÐ½Ð°Ñ Ñ„Ñ€Ð°Ð·Ð°" -#: ../src/roster_window.py:1916 +#: ../src/roster_window.py:1914 msgid "Please retype your GPG passphrase or press Cancel." msgstr "ПожалуйÑта введите парольную фразу Ð´Ð»Ñ GPG еще раз или нажмите Отмена." -#: ../src/roster_window.py:1964 ../src/roster_window.py:2021 +#: ../src/roster_window.py:1963 ../src/roster_window.py:2020 msgid "You are participating in one or more group chats" msgstr "Ð’Ñ‹ находитеÑÑŒ в одной или более комнатах" -#: ../src/roster_window.py:1965 ../src/roster_window.py:2022 +#: ../src/roster_window.py:1964 ../src/roster_window.py:2021 msgid "" "Changing your status to invisible will result in disconnection from those " "group chats. Are you sure you want to go invisible?" msgstr "" "Переход в ÑоÑтоÑние невидимоÑти приведет к выходу из Ñтих комнат. Ð’Ñ‹ точно " -"хотите Ñтать в невидимым?" +"хотите Ñтать невидимым?" -#: ../src/roster_window.py:1981 +#: ../src/roster_window.py:1980 msgid "No account available" msgstr "Ðеи доÑтупной учетной запиÑи" -#: ../src/roster_window.py:1982 +#: ../src/roster_window.py:1981 msgid "You must create an account before you can chat with other contacts." -msgstr "Ð”Ð»Ñ Ð½Ð°Ñ‡Ð°Ð»Ð° беÑеды Ñ Ð´Ñ€ÑƒÐ³Ð¸Ð¼Ð¸ людьми прежде необходимо Ñоздать учетную запиÑÑŒ." +msgstr "" +"Ð”Ð»Ñ Ð½Ð°Ñ‡Ð°Ð»Ð° беÑеды Ñ Ð´Ñ€ÑƒÐ³Ð¸Ð¼Ð¸ людьми прежде необходимо Ñоздать учетную запиÑÑŒ." -#: ../src/roster_window.py:2427 ../src/roster_window.py:2433 +#: ../src/roster_window.py:2452 ../src/roster_window.py:2458 msgid "You have unread messages" msgstr "У Ð²Ð°Ñ ÐµÑÑ‚ÑŒ непрочитанные ÑообщениÑ" -#: ../src/roster_window.py:2428 ../src/roster_window.py:2434 +#: ../src/roster_window.py:2453 ../src/roster_window.py:2459 msgid "" "Messages will only be available for reading them later if you have history " "enabled." @@ -3919,30 +4501,29 @@ msgstr "" "Ð¡Ð¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð±ÑƒÐ´ÑƒÑ‚ доÑтупны Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð·Ð¶Ðµ еÑли у Ð²Ð°Ñ Ð°ÐºÑ‚Ð¸Ð²Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð° Ð¾Ð¿Ñ†Ð¸Ñ " "иÑтории." -#: ../src/roster_window.py:3184 +#: ../src/roster_window.py:3231 #, python-format msgid "Drop %s in group %s" msgstr "СброÑить %s в группе %s" -#: ../src/roster_window.py:3191 +#: ../src/roster_window.py:3238 #, python-format msgid "Make %s and %s metacontacts" msgstr "Сделать %s и %s метаконтактами" -#: ../src/roster_window.py:3358 +#: ../src/roster_window.py:3408 msgid "Change Status Message..." msgstr "Изменить Сообщение о СтатуÑе..." -#: ../src/systray.py:155 +#: ../src/systray.py:154 msgid "_Change Status Message..." msgstr "_Изменить Сообщение о СтатуÑе..." -#: ../src/systray.py:236 +#: ../src/systray.py:231 msgid "Hide this menu" msgstr "Скрыть Ñто меню" -#: ../src/systraywin32.py:266 ../src/systraywin32.py:285 -#: ../src/tooltips.py:315 +#: ../src/systraywin32.py:261 ../src/systraywin32.py:280 #, python-format msgid "Gajim - %d unread message" msgid_plural "Gajim - %d unread messages" @@ -3950,112 +4531,120 @@ msgstr[0] "Gajim - %d непрочитанное Ñообщение" msgstr[1] "Gajim - %d непрочитанных ÑообщениÑ" msgstr[2] "Gajim - %d непрочитанных Ñообщений" -#: ../src/tooltips.py:321 -#, python-format -msgid "Gajim - %d unread single message" -msgid_plural "Gajim - %d unread single messages" +#: ../src/tooltips.py:326 +#, fuzzy, python-format +msgid " %d unread message" +msgid_plural " %d unread messages" +msgstr[0] "Gajim - %d непрочитанное Ñообщение" +msgstr[1] "Gajim - %d непрочитанных ÑообщениÑ" +msgstr[2] "Gajim - %d непрочитанных Ñообщений" + +#: ../src/tooltips.py:332 +#, fuzzy, python-format +msgid " %d unread single message" +msgid_plural " %d unread single messages" msgstr[0] "Gajim - %d непрочитанное одиночное Ñообщение" msgstr[1] "Gajim - %d непрочитанных одиночных ÑообщениÑ" msgstr[2] "Gajim - %d непрочитанных одиночных Ñообщений" -#: ../src/tooltips.py:327 -#, python-format -msgid "Gajim - %d unread group chat message" -msgid_plural "Gajim - %d unread group chat messages" +#: ../src/tooltips.py:338 +#, fuzzy, python-format +msgid " %d unread group chat message" +msgid_plural " %d unread group chat messages" msgstr[0] "Gajim - %d непрочитанное Ñообщение в комнате" msgstr[1] "Gajim - %d непрочитанных ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð² комнате" msgstr[2] "Gajim - %d непрочитанных Ñообщений в комнате" -#: ../src/tooltips.py:333 -#, python-format -msgid "Gajim - %d unread private message" -msgid_plural "Gajim - %d unread private messages" +#: ../src/tooltips.py:344 +#, fuzzy, python-format +msgid " %d unread private message" +msgid_plural " %d unread private messages" msgstr[0] "Gajim - %d непрочитанное личное Ñообщение" msgstr[1] "Gajim - %d непрочитанных личных ÑообщениÑ" msgstr[2] "Gajim - %d непрочитанных личных ÑообщениÑ" -#: ../src/tooltips.py:348 ../src/tooltips.py:350 +#: ../src/tooltips.py:359 ../src/tooltips.py:361 #, python-format msgid "Gajim - %s" msgstr "Gajim - %s" -#: ../src/tooltips.py:383 +#: ../src/tooltips.py:395 msgid "Role: " msgstr "ДолжноÑÑ‚ÑŒ: " -#: ../src/tooltips.py:384 +#: ../src/tooltips.py:396 msgid "Affiliation: " msgstr "Ранг: " -#: ../src/tooltips.py:386 ../src/tooltips.py:518 +#: ../src/tooltips.py:398 ../src/tooltips.py:537 msgid "Resource: " msgstr "РеÑурÑ: " -#: ../src/tooltips.py:394 ../src/tooltips.py:521 ../src/tooltips.py:543 -#: ../src/tooltips.py:654 +#: ../src/tooltips.py:407 ../src/tooltips.py:540 ../src/tooltips.py:565 +#: ../src/tooltips.py:676 msgid "Status: " msgstr "СтатуÑ: " -#: ../src/tooltips.py:501 +#: ../src/tooltips.py:514 msgid "Subscription: " msgstr "ПодпиÑка: " -#: ../src/tooltips.py:510 +#: ../src/tooltips.py:523 msgid "OpenPGP: " msgstr "OpenPGP: " -#: ../src/tooltips.py:548 +#: ../src/tooltips.py:570 #, python-format msgid "Last status on %s" msgstr "ПоÑледний ÑÑ‚Ð°Ñ‚ÑƒÑ Ð´Ð»Ñ %s" -#: ../src/tooltips.py:550 +#: ../src/tooltips.py:572 #, python-format msgid "Since %s" msgstr "C %s" -#: ../src/tooltips.py:610 +#: ../src/tooltips.py:632 msgid "Download" msgstr "Загрузить" -#: ../src/tooltips.py:616 +#: ../src/tooltips.py:638 msgid "Upload" msgstr "Upload" -#: ../src/tooltips.py:623 +#: ../src/tooltips.py:645 msgid "Type: " msgstr "Тип: " -#: ../src/tooltips.py:629 +#: ../src/tooltips.py:651 msgid "Transferred: " msgstr "Передано: " -#: ../src/tooltips.py:632 ../src/tooltips.py:653 +#: ../src/tooltips.py:654 ../src/tooltips.py:675 msgid "Not started" msgstr "Ðе начато" -#: ../src/tooltips.py:636 +#: ../src/tooltips.py:658 msgid "Stopped" msgstr "ОÑтановлено" -#: ../src/tooltips.py:638 ../src/tooltips.py:641 +#: ../src/tooltips.py:660 ../src/tooltips.py:663 msgid "Completed" msgstr "Завершено" #. stalled is not paused. it is like 'frozen' it stopped alone -#: ../src/tooltips.py:649 +#: ../src/tooltips.py:671 msgid "Stalled" msgstr "Ожидание" -#: ../src/tooltips.py:651 +#: ../src/tooltips.py:673 msgid "Transferring" msgstr "ПередаетÑÑ" -#: ../src/tooltips.py:683 +#: ../src/tooltips.py:705 msgid "This service has not yet responded with detailed information" msgstr "Этот ÑÐµÑ€Ð²Ð¸Ñ ÐµÑ‰Ðµ не Ñообщил информацию о Ñебе" -#: ../src/tooltips.py:686 +#: ../src/tooltips.py:708 msgid "" "This service could not respond with detailed information.\n" "It is most likely legacy or broken" @@ -4064,24 +4653,24 @@ msgstr "" "Похоже что он или неверно наÑтроен или Ñломан" #. keep identation -#: ../src/vcard.py:186 +#: ../src/vcard.py:188 msgid "Could not load image" msgstr "Ðе могу загрузить изображение" -#: ../src/vcard.py:262 +#: ../src/vcard.py:289 msgid "?Client:Unknown" msgstr "ÐеизвеÑтен" -#: ../src/vcard.py:264 +#: ../src/vcard.py:291 msgid "?OS:Unknown" msgstr "ÐеизвеÑтна" -#: ../src/vcard.py:281 +#: ../src/vcard.py:308 #, python-format msgid "since %s" msgstr "Ñ %s" -#: ../src/vcard.py:305 +#: ../src/vcard.py:332 msgid "" "This contact is interested in your presence information, but you are not " "interested in his/her presence" @@ -4089,7 +4678,7 @@ msgstr "" "Этот контакт хочет знать о вашем приÑутÑтвии, но вам Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ его или её " "приÑутÑтвии не интереÑна" -#: ../src/vcard.py:307 +#: ../src/vcard.py:334 msgid "" "You are interested in the contact's presence information, but he/she is not " "interested in yours" @@ -4097,77 +4686,78 @@ msgstr "" "Вам хочетÑÑ Ð¿Ð¾Ð»ÑƒÑ‡Ð°Ñ‚ÑŒ информацию о приÑутÑтвии контакта, но он или она не " "заинтереÑована в вашей." -#: ../src/vcard.py:309 +#: ../src/vcard.py:336 msgid "You and the contact are interested in each other's presence information" msgstr "Ð’Ñ‹ и контакт оба желаете знать о приÑутÑтвии друг друга" #. None -#: ../src/vcard.py:311 +#: ../src/vcard.py:338 msgid "" "You are not interested in the contact's presence, and neither he/she is " "interested in yours" -msgstr "Ðи вы ни ваш контакт не желаете знать о приÑутÑтвии друг друга" +msgstr "Ðи вы, ни ваш контакт не желаете знать о приÑутÑтвии друг друга" -#: ../src/vcard.py:320 +#: ../src/vcard.py:347 msgid "You are waiting contact's answer about your subscription request" msgstr "Ð’Ñ‹ ожидаете ответа контакта на Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð° подпиÑку" -#: ../src/vcard.py:332 ../src/vcard.py:355 +#: ../src/vcard.py:359 ../src/vcard.py:382 msgid " resource with priority " msgstr " реÑÑƒÑ€Ñ Ñ Ð¿Ñ€Ð¸Ð¾Ñ€Ð¸Ñ‚ÐµÑ‚Ð¾Ð¼ " -#: ../src/vcard.py:434 +#: ../src/vcard.py:458 msgid "Without a connection you can not publish your contact information." msgstr "Ðеобходимо приÑоединитьÑÑ Ðº Ñерверу Ð´Ð»Ñ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð»Ð¸Ñ‡Ð½Ð¾Ð¹ информации" -#: ../src/vcard.py:463 +#: ../src/vcard.py:491 msgid "Without a connection, you can not get your contact information." -msgstr "Ðеобходимо приÑоединитьÑÑ Ðº Ñерверу Ð´Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ð¸ о контакте" +msgstr "" +"Ðеобходимо приÑоединитьÑÑ Ðº Ñерверу Ð´Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ð¸ о контакте" -#: ../src/vcard.py:467 +#: ../src/vcard.py:495 msgid "Personal details" msgstr "Ð›Ð¸Ñ‡Ð½Ð°Ñ Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ" -#: ../src/common/check_paths.py:39 +#: ../src/common/check_paths.py:35 msgid "creating logs database" msgstr "ÑоздаетÑÑ Ð‘Ð” иÑтории" -#: ../src/common/check_paths.py:84 ../src/common/check_paths.py:95 -#: ../src/common/check_paths.py:102 +#: ../src/common/check_paths.py:82 ../src/common/check_paths.py:93 +#: ../src/common/check_paths.py:100 #, python-format msgid "%s is file but it should be a directory" msgstr "%s должен быть директорией, а не файлом" -#: ../src/common/check_paths.py:85 ../src/common/check_paths.py:96 -#: ../src/common/check_paths.py:103 ../src/common/check_paths.py:110 +#: ../src/common/check_paths.py:83 ../src/common/check_paths.py:94 +#: ../src/common/check_paths.py:101 ../src/common/check_paths.py:109 msgid "Gajim will now exit" msgstr "Закончить работу" -#: ../src/common/check_paths.py:109 +#: ../src/common/check_paths.py:108 #, python-format msgid "%s is directory but should be file" msgstr "%s должен быть файлом, а не директорией" -#: ../src/common/check_paths.py:125 +#: ../src/common/check_paths.py:124 #, python-format msgid "creating %s directory" msgstr "ÑоздаетÑÑ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ %s" -#: ../src/common/exceptions.py:35 +#: ../src/common/exceptions.py:32 msgid "pysqlite2 (aka python-pysqlite2) dependency is missing. Exiting..." msgstr "отÑутÑтвует библиотека pysqlite2 (или python-pysqlite2). Выхожу..." -#: ../src/common/exceptions.py:43 +#: ../src/common/exceptions.py:40 msgid "Service not available: Gajim is not running, or remote_control is False" msgstr "" "Ð¡ÐµÑ€Ð²Ð¸Ñ Ð½ÐµÐ´Ð¾Ñтупен: Gajim не запущен или отключена Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ ÑƒÐ´Ð°Ð»ÐµÐ½Ð½Ð¾Ð³Ð¾ " "управлениÑ" -#: ../src/common/exceptions.py:51 +#: ../src/common/exceptions.py:48 msgid "D-Bus is not present on this machine or python module is missing" msgstr "Ðа машине отÑутÑтвует D-Bus или модуль питона Ð´Ð»Ñ Ð½ÐµÐµ" -#: ../src/common/exceptions.py:59 +#: ../src/common/exceptions.py:56 msgid "" "Session bus is not available.\n" "Try reading http://trac.gajim.org/wiki/GajimDBus" @@ -4175,36 +4765,66 @@ msgstr "" "Шина D-Bus не доÑтупна.\n" "Попробуйте прочитать http://trac.gajim.org/wiki/GajimDBus" -#: ../src/common/config.py:53 +#: ../src/common/config.py:51 msgid "Use DBus and Notification-Daemon to show notifications" msgstr "ИÑпользовать DBus и Ð¡ÐµÑ€Ð²Ð¸Ñ Ð£Ð²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ð¹ Ð´Ð»Ñ Ð¿Ð¾ÐºÐ°Ð·Ð° уведомлений" -#: ../src/common/config.py:57 +#: ../src/common/config.py:55 msgid "Time in minutes, after which your status changes to away." msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð² минутах, поÑле которого ваш ÑÑ‚Ð°Ñ‚ÑƒÑ Ð¸Ð·Ð¼ÐµÐ½Ð¸Ñ‚ÑÑ Ð½Ð° Отошел." -#: ../src/common/config.py:58 +#: ../src/common/config.py:56 msgid "Away as a result of being idle" msgstr "ÐвтоÑÑ‚Ð°Ñ‚ÑƒÑ 'Отошел' из-за бездейÑÑ‚Ð²Ð¸Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ." -#: ../src/common/config.py:60 +#: ../src/common/config.py:58 msgid "Time in minutes, after which your status changes to not available." msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð² минутах, поÑле которого ваш ÑÑ‚Ð°Ñ‚ÑƒÑ Ð¸Ð·Ð¼ÐµÐ½Ð¸Ñ‚ÑÑ Ð½Ð° ÐедоÑтупен." -#: ../src/common/config.py:61 +#: ../src/common/config.py:59 msgid "Not available as a result of being idle" msgstr "ÐвтоÑÑ‚Ð°Ñ‚ÑƒÑ 'ÐедоÑтупен' из-за бездейÑÑ‚Ð²Ð¸Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ." -#: ../src/common/config.py:88 +#: ../src/common/config.py:77 +msgid "List (space separated) of rows (accounts and groups) that are collapsed" +msgstr "" + +#: ../src/common/config.py:83 +msgid "" +"'always' - print time for every message.\n" +"'sometimes' - print time every print_ichat_every_foo_minutes minute.\n" +"'never' - never print time." +msgstr "" + +#: ../src/common/config.py:84 +msgid "" +"Value of fuzziness from 1 to 4 or 0 to disable fuzzyclock. 1 is the most " +"precise clock, 4 the less precise one." +msgstr "" + +#: ../src/common/config.py:87 msgid "Treat * / _ pairs as possible formatting characters." msgstr "Обрабатывать пары * / _ как возможные форматирующие Ñимволы." -#: ../src/common/config.py:89 -msgid "If True, do not remove */_ . So *abc* will be bold but with * * not removed." +#: ../src/common/config.py:88 +msgid "" +"If True, do not remove */_ . So *abc* will be bold but with * * not removed." msgstr "" "ЕÑли True, то не будут удалÑÑ‚ÑŒÑÑ */_. Так что *фыва* будет напиÑано " "полужирным шрифтом, но * * удалены не будут" +#: ../src/common/config.py:98 +msgid "" +"Character to add after nickname when using nick completion (tab) in group " +"chat" +msgstr "" + +#: ../src/common/config.py:99 +msgid "" +"Character to propose to add after desired nickname when desired nickname is " +"used by someone else in group chat" +msgstr "" + #: ../src/common/config.py:131 msgid "Add * and [n] in roster title?" msgstr "ДобавлÑÑ‚ÑŒ * и [n] в окно роÑтера?" @@ -4248,6 +4868,12 @@ msgstr "" "ЕÑли отмечено, то Gajim'ом можно будет управлÑÑ‚ÑŒ удаленно Ñ Ð¸Ñпользованием " "gajim-remote." +#: ../src/common/config.py:145 +msgid "" +"When not printing time for every message (print_time==sometimes), print it " +"every x minutes" +msgstr "" + #: ../src/common/config.py:146 msgid "Ask before closing a group chat tab/window." msgstr "Спрашивать перед закрытием окна/вкладки комнаты." @@ -4256,20 +4882,24 @@ msgstr "Спрашивать перед закрытием окна/вкладк msgid "" "Always ask before closing group chat tab/window in this space separated list " "of room jids." -msgstr "Ð’Ñегда Ñпрашивать перед закрытием окна/вкладки комнаты в Ñтом ÑпиÑке комнат Ñ Ñ€Ð°Ð·Ð´ÐµÐ»Ð¸Ñ‚ÐµÐ¼ в виде пробела." +msgstr "" +"Ð’Ñегда Ñпрашивать перед закрытием окна/вкладки комнаты в Ñтом ÑпиÑке комнат " +"Ñ Ñ€Ð°Ð·Ð´ÐµÐ»Ð¸Ñ‚ÐµÐ¼ в виде пробела." #: ../src/common/config.py:148 msgid "" "Never ask before closing group chat tab/window in this space separated list " "of room jids." -msgstr "Ðикогда не Ñпрашивать перед закрытием окна/вкладки комнаты в Ñтом ÑпиÑке комнат Ñ Ñ€Ð°Ð·Ð´ÐµÐ»Ð¸Ñ‚ÐµÐ¼ в виде пробела." +msgstr "" +"Ðикогда не Ñпрашивать перед закрытием окна/вкладки комнаты в Ñтом ÑпиÑке " +"комнат Ñ Ñ€Ð°Ð·Ð´ÐµÐ»Ð¸Ñ‚ÐµÐ¼ в виде пробела." #: ../src/common/config.py:151 msgid "" "Overrides the host we send for File Transfer in case of address translation/" "port forwarding." msgstr "" -"Указвает Ð¸Ð¼Ñ Ñ…Ð¾Ñта, которое мы отÑылаем при Передаче Файлов, в Ñлучае еÑли " +"Указвает Ð¸Ð¼Ñ Ñ…Ð¾Ñта, которое мы отÑылаем при передаче файлов, в Ñлучае еÑли " "мы за NAT или иÑпользуетÑÑ Ð¿Ñ€Ð¾Ð±Ñ€Ð¾Ñ Ð¿Ð¾Ñ€Ñ‚Ð¾Ð²." #: ../src/common/config.py:153 @@ -4281,7 +4911,8 @@ msgid "Show tab when only one conversation?" msgstr "Показывать вкладку при одной беÑеде?" #: ../src/common/config.py:162 -msgid "Show tab border if one conversation?" +#, fuzzy +msgid "Show tabbed notebook border in chat windows?" msgstr "Показывать границу вкладки при одной беÑеде?" #: ../src/common/config.py:163 @@ -4292,7 +4923,8 @@ msgstr "Показывать кнопку Ð·Ð°ÐºÑ€Ñ‹Ñ‚Ð¸Ñ Ð½Ð° вкладке?" msgid "" "A semicolon-separated list of words that will be highlighted in multi-user " "chat." -msgstr "СпиÑок Ñлов Ñ ; в качеÑтве разделителÑ, которые будут выделÑÑ‚ÑŒÑÑ Ð² комнате." +msgstr "" +"СпиÑок Ñлов Ñ ; в качеÑтве разделителÑ, которые будут выделÑÑ‚ÑŒÑÑ Ð² комнате." #: ../src/common/config.py:177 msgid "" @@ -4330,15 +4962,28 @@ msgstr "" "ЕÑли True, то Gajim будет запрашивать аватару Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ контакта у " "которого её не было в поÑледний раз или она уже Ñлишком ÑтараÑ." -#. FIXME: remove you and make it Gajim will not; and/or his or *her* status messages -#: ../src/common/config.py:184 +#: ../src/common/config.py:183 +#, fuzzy msgid "" -"If False, you will no longer see status line in chats when a contact changes " -"his or her status and/or his status message." +"If False, Gajim will no longer print status line in chats when a contact " +"changes his or her status and/or his or her status message." msgstr "" "ЕÑли False, то вы больше не будете видеть ÑтатуÑную Ñтроку в окне беÑеды, " "когда контакт менÑет его или её ÑÑ‚Ð°Ñ‚ÑƒÑ Ð¸/или Ñообщение о ÑтатуÑе." +#: ../src/common/config.py:184 +msgid "" +"can be \"none\", \"all\" or \"in_and_out\". If \"none\", Gajim will no " +"longer print status line in groupchats when a member changes his or her " +"status and/or his or her status message. If \"all\" Gajim will print all " +"status messages. If \"in_and_out\", gajim will only print FOO enters/leaves " +"room" +msgstr "" + +#: ../src/common/config.py:187 +msgid "Don't show avatar for the transport itself." +msgstr "" + #: ../src/common/config.py:189 msgid "" "If True and installed GTK+ and PyGTK versions are at least 2.8, make the " @@ -4355,9 +5000,11 @@ msgid "" "Turn this option to False to stop sending sha info in groupchat presences" msgstr "" "Jabberd1.4 не понимает sha данные при входе в комнату, защищенную паролем. " -"УÑтановите Ñту опцию в False Ð´Ð»Ñ Ñ‚Ð¾Ð³Ð¾, чтобы запретить отÑылку sha данных в информации Ð´Ð»Ñ ÐºÐ¾Ð¼Ð½Ð°Ñ‚" +"УÑтановите Ñту опцию в False Ð´Ð»Ñ Ñ‚Ð¾Ð³Ð¾, чтобы запретить отÑылку sha данных в " +"информации Ð´Ð»Ñ ÐºÐ¾Ð¼Ð½Ð°Ñ‚" -#: ../src/common/config.py:193 +#. always, never, peracct, pertype should not be translated +#: ../src/common/config.py:194 msgid "" "Controls the window where new messages are placed.\n" "'always' - All messages are sent to a single window.\n" @@ -4370,208 +5017,225 @@ msgstr "" "УправлÑет окном, где помещаютÑÑ Ð½Ð¾Ð²Ñ‹Ðµ ÑообщениÑ.\n" "'вÑегда' - Ð’Ñе ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²Ð»ÑÑŽÑ‚ÑÑ Ð² одно окно.\n" "'никогда' - Ð’Ñе ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¸Ñ…Ð¾Ð´ÑÑ‚ в Ñвои отдельные окна.\n" -"'по учетным запиÑÑм' - Ð¡Ð¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ учетной запиÑи отÑылаютÑÑ Ð² Ñвои окна.\n" -"'по типу' - Каждый тип ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ (например, беÑеда или комната) отÑылаетÑÑ Ð² Ñвое окно. Заметьте, что при изменении Ñтого параметра требуетÑÑ Ð¿ÐµÑ€ÐµÐ·Ð°Ð¿ÑƒÑк Gajim чтобы Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð²Ð¾ÑˆÐ»Ð¸ в Ñилу." +"'по учетным запиÑÑм' - Ð¡Ð¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ учетной запиÑи отÑылаютÑÑ Ð² Ñвои " +"окна.\n" +"'по типу' - Каждый тип ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ (например, беÑеда или комната) отÑылаетÑÑ Ð² " +"Ñвое окно. Заметьте, что при изменении Ñтого параметра требуетÑÑ Ð¿ÐµÑ€ÐµÐ·Ð°Ð¿ÑƒÑк " +"Gajim чтобы Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð²Ð¾ÑˆÐ»Ð¸ в Ñилу." -#: ../src/common/config.py:194 +#: ../src/common/config.py:195 msgid "If False, you will no longer see the avatar in the chat window" msgstr "ЕÑли False, вы больше не будете видеть аватары в окне беÑеды" -#: ../src/common/config.py:195 +#: ../src/common/config.py:196 msgid "If True, pressing the escape key closes a tab/window" msgstr "ЕÑли True, то нажатие клавиши escape будет закрывать вкладку/окно" -#: ../src/common/config.py:196 +#: ../src/common/config.py:197 msgid "Hides the buttons in group chat window" msgstr "Скрывает кнопки окна комнаты" -#: ../src/common/config.py:197 +#: ../src/common/config.py:198 msgid "Hides the buttons in two persons chat window" msgstr "Скрывает кнопки в окне беÑеды" -#: ../src/common/config.py:198 +#: ../src/common/config.py:199 msgid "Hides the banner in a group chat window" msgstr "Скрывает баннер в окне комнаты" -#: ../src/common/config.py:199 +#: ../src/common/config.py:200 msgid "Hides the banner in two persons chat window" msgstr "Скрывает баннер в окне беÑеды" -#: ../src/common/config.py:200 +#: ../src/common/config.py:201 msgid "Hides the room occupants list in groupchat window" msgstr "Скрывает ÑпиÑок поÑетителей в окне комнаты" +#: ../src/common/config.py:202 +msgid "Merge consecutive nickname in chat window" +msgstr "" + +#: ../src/common/config.py:203 +msgid "Indentation when using merge consecutive nickame" +msgstr "" + +#: ../src/common/config.py:204 +msgid "List of colors that will be used to color nicknames in groupchats" +msgstr "" + #. yes, no, ask -#: ../src/common/config.py:233 +#: ../src/common/config.py:237 msgid "Jabberd2 workaround" msgstr "КоÑтыль Ð´Ð»Ñ jabberd2" -#: ../src/common/config.py:237 +#: ../src/common/config.py:241 msgid "" "If checked, Gajim will use your IP and proxies defined in " "file_transfer_proxies option for file transfer." -msgstr "ЕÑли отмечено, Gajim будет иÑпользовать ваш IP и прокÑи, определенные в параметре file_transfer_proxies Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ´Ð°Ñ‡Ð¸ файлов" +msgstr "" +"ЕÑли отмечено, Gajim будет иÑпользовать ваш IP и прокÑи, определенные в " +"параметре file_transfer_proxies Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ´Ð°Ñ‡Ð¸ файлов" -#: ../src/common/config.py:290 +#: ../src/common/config.py:297 msgid "Sleeping" msgstr "Сплю" -#: ../src/common/config.py:291 +#: ../src/common/config.py:298 msgid "Back soon" msgstr "Скоро буду" -#: ../src/common/config.py:291 +#: ../src/common/config.py:298 msgid "Back in some minutes." msgstr "ВернуÑÑŒ через неÑколько минут" -#: ../src/common/config.py:292 +#: ../src/common/config.py:299 msgid "Eating" msgstr "Ем" -#: ../src/common/config.py:292 +#: ../src/common/config.py:299 msgid "I'm eating, so leave me a message." msgstr "Кушаю, так что оÑтавьте Ñообщение Ñекретарю." -#: ../src/common/config.py:293 +#: ../src/common/config.py:300 msgid "Movie" msgstr "Ð’ кино" -#: ../src/common/config.py:293 +#: ../src/common/config.py:300 msgid "I'm watching a movie." msgstr "Смотрю кино" -#: ../src/common/config.py:294 +#: ../src/common/config.py:301 msgid "Working" msgstr "Работаю" -#: ../src/common/config.py:294 +#: ../src/common/config.py:301 msgid "I'm working." msgstr "Работаю" -#: ../src/common/config.py:295 +#: ../src/common/config.py:302 msgid "Phone" msgstr "Телефон" -#: ../src/common/config.py:295 +#: ../src/common/config.py:302 msgid "I'm on the phone." msgstr "Говорю по телефону" -#: ../src/common/config.py:296 +#: ../src/common/config.py:303 msgid "Out" msgstr "Вышел" -#: ../src/common/config.py:296 +#: ../src/common/config.py:303 msgid "I'm out enjoying life" msgstr "ÐаÑлаждаюÑÑŒ жизнью, чего и вам желаю." -#: ../src/common/config.py:305 +#: ../src/common/config.py:312 msgid "" "Sound to play when a MUC message contains one of the words in " "muc_highlight_words, or when a MUC message contains your nickname." msgstr "" -"Звук, который нужно воÑпроизвеÑти когда в MUC поÑвлÑетÑÑ Ñообщение, которое " +"Звук, который нужно воÑпроизвеÑти, когда в MUC поÑвлÑетÑÑ Ñообщение, которое " "Ñодержит Ñлово из ÑпиÑка muc_highlight_words, или когда Ñообщение Ñодержит " "ваш ник." -#: ../src/common/config.py:306 +#: ../src/common/config.py:313 msgid "" "Sound to play when any MUC message arrives. (This setting is taken into " "account only if notify_on_all_muc_messages is True)" msgstr "" -"Звук, который нужно воÑпроизводить когда приходит любое Ñообщение в MUC (Эта " -"Ð¾Ð¿Ñ†Ð¸Ñ ÑƒÑ‡Ð¸Ñ‚Ñ‹Ð²Ð°ÐµÑ‚ÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ тогда, когда notify_on_all_muc_messages уÑтановлено " -"в True)" +"Звук, который нужно воÑпроизводить, когда приходит любое Ñообщение в MUC " +"(Ñта Ð¾Ð¿Ñ†Ð¸Ñ ÑƒÑ‡Ð¸Ñ‚Ñ‹Ð²Ð°ÐµÑ‚ÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ тогда, когда notify_on_all_muc_messages " +"уÑтановлено в True)" -#: ../src/common/config.py:314 ../src/common/optparser.py:181 +#: ../src/common/config.py:321 ../src/common/optparser.py:185 msgid "green" msgstr "зеленый" -#: ../src/common/config.py:318 ../src/common/optparser.py:167 +#: ../src/common/config.py:325 ../src/common/optparser.py:171 msgid "grocery" -msgstr "овощой" +msgstr "овощной" -#: ../src/common/config.py:322 +#: ../src/common/config.py:329 msgid "human" msgstr "телеÑный" -#: ../src/common/config.py:326 +#: ../src/common/config.py:333 msgid "marine" msgstr "морÑкой" -#: ../src/common/connection.py:152 +#: ../src/common/connection.py:172 #, python-format msgid "Connection with account \"%s\" has been lost" msgstr "СвÑзь Ñ ÑƒÑ‡ÐµÑ‚Ð½Ð¾Ð¹ запиÑью \"%s\" была потерÑна" -#: ../src/common/connection.py:153 +#: ../src/common/connection.py:173 msgid "To continue sending and receiving messages, you will need to reconnect." msgstr "ТребуетÑÑ Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ðµ Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð´Ð¾Ð»Ð¶ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¸ÐµÐ¼Ð° и отправки Ñообщений." -#: ../src/common/connection.py:169 ../src/common/connection.py:195 +#: ../src/common/connection.py:185 ../src/common/connection.py:211 #, python-format msgid "Transport %s answered wrongly to register request." msgstr "ТранÑпорт %s неверно ответил на Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð¾ региÑтрации." #. wrong answer -#: ../src/common/connection.py:194 +#: ../src/common/connection.py:210 msgid "Invalid answer" msgstr "Ðеверный ответ" -#: ../src/common/connection.py:348 ../src/common/connection.py:384 -#: ../src/common/connection.py:754 +#: ../src/common/connection.py:397 ../src/common/connection.py:433 +#: ../src/common/connection.py:857 #, python-format msgid "Could not connect to \"%s\"" msgstr "Ðе могу ÑоединитьÑÑ Ñ \"%s\"" -#: ../src/common/connection.py:362 +#: ../src/common/connection.py:411 #, python-format msgid "Connected to server %s:%s with %s" msgstr "Подключен к Ñерверу %s: %s Ñ %s" -#: ../src/common/connection.py:385 +#: ../src/common/connection.py:434 msgid "Check your connection or try again later" msgstr "Проверьте наÑтройки Ñети или попробуйте еще раз позже" -#: ../src/common/connection.py:410 +#: ../src/common/connection.py:459 #, python-format msgid "Authentication failed with \"%s\"" msgstr "Ошибка аутентификации Ñ \"%s\"" -#: ../src/common/connection.py:411 +#: ../src/common/connection.py:460 msgid "Please check your login and password for correctness." msgstr "ПожалуйÑта, проверьте правильноÑÑ‚ÑŒ логина и паролÑ." #. We didn't set a passphrase -#: ../src/common/connection.py:487 +#: ../src/common/connection.py:573 msgid "OpenPGP passphrase was not given" msgstr "Ðе задана Ð¿Ð°Ñ€Ð¾Ð»ÑŒÐ½Ð°Ñ Ñ„Ñ€Ð°Ð·Ð° OpenPGP" #. %s is the account name here -#: ../src/common/connection.py:489 +#: ../src/common/connection.py:575 #, python-format msgid "You will be connected to %s without OpenPGP." msgstr "Ð’Ñ‹ будете подключены к %s без иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ OpenPGP." #. do not show I'm invisible! -#: ../src/common/connection.py:526 +#: ../src/common/connection.py:612 msgid "invisible" msgstr "невидимка" -#: ../src/common/connection.py:527 +#: ../src/common/connection.py:613 msgid "offline" msgstr "отключен" -#: ../src/common/connection.py:528 +#: ../src/common/connection.py:614 #, python-format msgid "I'm %s" msgstr "%s" #. we're not english -#: ../src/common/connection.py:611 +#: ../src/common/connection.py:699 msgid "[This message is encrypted]" -msgstr "[Это ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð·Ð°ÑˆÐ¸Ñ„Ñ€Ð¾Ð²Ð°Ð½Ð¾]" +msgstr "[Это Ñообщение зашифровано]" -#: ../src/common/connection.py:649 +#: ../src/common/connection.py:742 #, python-format msgid "" "Subject: %s\n" @@ -4580,220 +5244,301 @@ msgstr "" "Тема: %s\n" "%s" -#: ../src/common/connection.py:699 +#: ../src/common/connection.py:795 ../src/common/connection_handlers.py:1511 msgid "I would like to add you to my roster." msgstr "Ð’Ñ‹ не возражаете, еÑли Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÑŽ Ð’Ð°Ñ Ð² Ñвой роÑтер?" -#: ../src/common/helpers.py:103 +#: ../src/common/connection_handlers.py:49 +msgid "Unable to load idle module" +msgstr "" + +#: ../src/common/connection_handlers.py:581 +#, python-format +msgid "Registration information for transport %s has not arrived in time" +msgstr "" + +#. password required to join +#. we are banned +#. room does not exist +#: ../src/common/connection_handlers.py:1450 +#: ../src/common/connection_handlers.py:1453 +#: ../src/common/connection_handlers.py:1456 +#: ../src/common/connection_handlers.py:1459 +#: ../src/common/connection_handlers.py:1462 +#: ../src/common/connection_handlers.py:1465 +#: ../src/common/connection_handlers.py:1473 +msgid "Unable to join room" +msgstr "" + +#: ../src/common/connection_handlers.py:1451 +msgid "A password is required to join this room." +msgstr "" + +#: ../src/common/connection_handlers.py:1454 +#, fuzzy +msgid "You are banned from this room." +msgstr "Ð’Ñ‹ уже в комнате %s" + +#: ../src/common/connection_handlers.py:1457 +msgid "Such room does not exist." +msgstr "" + +#: ../src/common/connection_handlers.py:1460 +msgid "Room creation is restricted." +msgstr "" + +#: ../src/common/connection_handlers.py:1463 +msgid "Your registered nickname must be used." +msgstr "" + +#: ../src/common/connection_handlers.py:1466 +#, fuzzy +msgid "You are not in the members list." +msgstr "Ð’Ñ‹ не подключены к Ñерверу" + +#: ../src/common/connection_handlers.py:1474 +msgid "" +"Your desired nickname is in use or registered by another occupant.\n" +"Please specify another nickname below:" +msgstr "" + +#. BE CAREFUL: no con.updateRosterItem() in a callback +#: ../src/common/connection_handlers.py:1519 +#, python-format +msgid "we are now subscribed to %s" +msgstr "" + +#: ../src/common/connection_handlers.py:1521 +#, fuzzy, python-format +msgid "unsubscribe request from %s" +msgstr "Ð—Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð° подпиÑку от %s" + +#: ../src/common/connection_handlers.py:1523 +#, python-format +msgid "we are now unsubscribed from %s" +msgstr "" + +#: ../src/common/connection_handlers.py:1680 +#, python-format +msgid "" +"JID %s is not RFC compliant. It will not be added to your roster. Use roster " +"management tools such as http://jru.jabberstudio.org/ to remove it" +msgstr "" + +#: ../src/common/helpers.py:100 msgid "Invalid character in username." msgstr "Ðеверный Ñимвол в имени пользователÑ." -#: ../src/common/helpers.py:108 +#: ../src/common/helpers.py:105 msgid "Server address required." msgstr "ТребуетÑÑ Ð°Ð´Ñ€ÐµÑ Ñервера." -#: ../src/common/helpers.py:113 +#: ../src/common/helpers.py:110 msgid "Invalid character in hostname." msgstr "Ðеверный Ñимвол в имени Ñервера" -#: ../src/common/helpers.py:119 +#: ../src/common/helpers.py:116 msgid "Invalid character in resource." msgstr "Ðеверный Ñимвол в реÑурÑе" #. GiB means gibibyte -#: ../src/common/helpers.py:159 +#: ../src/common/helpers.py:156 #, python-format msgid "%s GiB" msgstr "%s GiB" #. GB means gigabyte -#: ../src/common/helpers.py:162 +#: ../src/common/helpers.py:159 #, python-format msgid "%s GB" msgstr "%s GB" #. MiB means mibibyte -#: ../src/common/helpers.py:166 +#: ../src/common/helpers.py:163 #, python-format msgid "%s MiB" msgstr "%s MiB" #. MB means megabyte -#: ../src/common/helpers.py:169 +#: ../src/common/helpers.py:166 #, python-format msgid "%s MB" msgstr "%s MB" #. KiB means kibibyte -#: ../src/common/helpers.py:173 +#: ../src/common/helpers.py:170 #, python-format msgid "%s KiB" msgstr "%s KiB" #. KB means kilo bytes -#: ../src/common/helpers.py:176 +#: ../src/common/helpers.py:173 #, python-format msgid "%s KB" msgstr "%s KB" #. B means bytes -#: ../src/common/helpers.py:179 +#: ../src/common/helpers.py:176 #, python-format msgid "%s B" msgstr "%s B" -#: ../src/common/helpers.py:189 +#: ../src/common/helpers.py:205 msgid "_Busy" msgstr "_ЗанÑÑ‚" -#: ../src/common/helpers.py:191 +#: ../src/common/helpers.py:207 msgid "Busy" msgstr "ЗанÑÑ‚" -#: ../src/common/helpers.py:194 +#: ../src/common/helpers.py:210 msgid "_Not Available" msgstr "_ÐедоÑтупен" -#: ../src/common/helpers.py:196 +#: ../src/common/helpers.py:212 msgid "Not Available" msgstr "ÐедоÑтупен" -#: ../src/common/helpers.py:199 +#: ../src/common/helpers.py:215 msgid "_Free for Chat" msgstr "_Готов Поболтать" -#: ../src/common/helpers.py:201 +#: ../src/common/helpers.py:217 msgid "Free for Chat" msgstr "Готов Поболтать" -#: ../src/common/helpers.py:204 +#: ../src/common/helpers.py:220 msgid "_Available" msgstr "_ДоÑтупен" -#: ../src/common/helpers.py:206 +#: ../src/common/helpers.py:222 msgid "Available" msgstr "ДоÑтупен" -#: ../src/common/helpers.py:208 +#: ../src/common/helpers.py:224 msgid "Connecting" msgstr "СоединÑÑŽÑÑŒ" -#: ../src/common/helpers.py:211 +#: ../src/common/helpers.py:227 msgid "A_way" msgstr "_Ушел" -#: ../src/common/helpers.py:213 +#: ../src/common/helpers.py:229 msgid "Away" msgstr "Ушел" -#: ../src/common/helpers.py:216 +#: ../src/common/helpers.py:232 msgid "_Offline" msgstr "_Отключен" -#: ../src/common/helpers.py:218 +#: ../src/common/helpers.py:234 msgid "Offline" msgstr "Отключен" -#: ../src/common/helpers.py:221 +#: ../src/common/helpers.py:237 msgid "_Invisible" msgstr "_Ðевидимка" -#: ../src/common/helpers.py:223 -msgid "Invisible" -msgstr "Ðевидимка" - -#: ../src/common/helpers.py:227 +#: ../src/common/helpers.py:243 msgid "?contact has status:Unknown" msgstr "ÐеизвеÑтен" -#: ../src/common/helpers.py:229 +#: ../src/common/helpers.py:245 msgid "?contact has status:Has errors" msgstr "Ошибка" -#: ../src/common/helpers.py:234 +#: ../src/common/helpers.py:250 msgid "?Subscription we already have:None" msgstr "Ðет" -#: ../src/common/helpers.py:236 +#: ../src/common/helpers.py:252 msgid "To" msgstr "К" -#: ../src/common/helpers.py:238 +#: ../src/common/helpers.py:254 msgid "From" msgstr "От" -#: ../src/common/helpers.py:240 +#: ../src/common/helpers.py:256 msgid "Both" msgstr "Оба" -#: ../src/common/helpers.py:248 +#: ../src/common/helpers.py:264 msgid "?Ask (for Subscription):None" msgstr "Ðет" -#: ../src/common/helpers.py:250 +#: ../src/common/helpers.py:266 msgid "Subscribe" msgstr "ПодпиÑатьÑÑ" -#: ../src/common/helpers.py:259 +#: ../src/common/helpers.py:275 msgid "?Group Chat Contact Role:None" msgstr "ОтÑутÑтвует" -#: ../src/common/helpers.py:262 +#: ../src/common/helpers.py:278 msgid "Moderators" msgstr "Модераторы" -#: ../src/common/helpers.py:264 +#: ../src/common/helpers.py:280 msgid "Moderator" msgstr "Модератор" -#: ../src/common/helpers.py:267 +#: ../src/common/helpers.py:283 msgid "Participants" msgstr "УчаÑтники" -#: ../src/common/helpers.py:269 +#: ../src/common/helpers.py:285 msgid "Participant" msgstr "УчаÑтник" -#: ../src/common/helpers.py:272 +#: ../src/common/helpers.py:288 msgid "Visitors" msgstr "ПоÑетители" -#: ../src/common/helpers.py:274 +#: ../src/common/helpers.py:290 msgid "Visitor" msgstr "ПоÑетитель" -#: ../src/common/helpers.py:310 +#: ../src/common/helpers.py:326 msgid "is paying attention to the conversation" msgstr "читает Ñообщение" -#: ../src/common/helpers.py:312 +#: ../src/common/helpers.py:328 msgid "is doing something else" msgstr "занÑÑ‚ чем-то еще" -#: ../src/common/helpers.py:314 +#: ../src/common/helpers.py:330 msgid "is composing a message..." msgstr "печатает Ñообщение..." #. paused means he or she was compoing but has stopped for a while -#: ../src/common/helpers.py:317 +#: ../src/common/helpers.py:333 msgid "paused composing a message" msgstr "прервал печать ÑообщениÑ" -#: ../src/common/helpers.py:319 +#: ../src/common/helpers.py:335 msgid "has closed the chat window or tab" msgstr "закрыл окно чата или вкладку" #. we talk about a file -#: ../src/common/optparser.py:62 +#: ../src/common/optparser.py:60 #, python-format msgid "error: cannot open %s for reading" msgstr "ошибка: не могу открыть %s Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ" -#: ../src/common/optparser.py:167 +#: ../src/common/optparser.py:171 msgid "gtk+" msgstr "gtk+" -#: ../src/common/optparser.py:176 ../src/common/optparser.py:177 +#: ../src/common/optparser.py:180 ../src/common/optparser.py:181 msgid "cyan" msgstr "Ñиний" +#~ msgid "Automatically authorize contact" +#~ msgstr "ÐвтоматичеÑки авторизовать контакт" + +#~ msgid "Send File" +#~ msgstr "_Отправить Файл" + +#~ msgid "Underline" +#~ msgstr "Подчеркивание" diff --git a/po/sk.po b/po/sk.po index fb8225a68..4be9bf709 100644 --- a/po/sk.po +++ b/po/sk.po @@ -3,18 +3,20 @@ # This file is distributed under the same license as the gajim package. # Juraj Michalek , 2005. # +#: ../src/gajim-remote.py:218 ../src/gajim-remote.py:225 msgid "" msgstr "" "Project-Id-Version: gajim\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2006-04-13 12:52+0200\n" -"PO-Revision-Date: 2006-04-14 22:14+0100\n" +"POT-Creation-Date: 2006-07-04 00:03+0200\n" +"PO-Revision-Date: 2006-06-19 22:44+0100\n" "Last-Translator: Juraj Michalek \n" "Language-Team: Slovak \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" +"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2\n" "X-Poedit-Language: Slovak\n" "X-Poedit-Country: SLOVAKIA\n" @@ -30,346 +32,2405 @@ msgstr "Gajim Instant Messenger" msgid "Jabber IM Client" msgstr "Jabber IM klient" -#: ../src/advanced.py:71 +#: ../data/glade/account_context_menu.glade.h:1 +#, fuzzy +msgid "Send Single _Message..." +msgstr "PoslaÅ¥ jednoduchú _správu" + +#: ../data/glade/account_context_menu.glade.h:2 +msgid "_Add Contact..." +msgstr "_PridaÅ¥ kontakt..." + +#: ../data/glade/account_context_menu.glade.h:3 +msgid "_Discover Services..." +msgstr "_PreskúmaÅ¥ služby..." + +#: ../data/glade/account_context_menu.glade.h:4 +#: ../data/glade/roster_window.glade.h:15 +#: ../data/glade/systray_context_menu.glade.h:5 +msgid "_Group Chat" +msgstr "Skupinový rozhovor" + +#: ../data/glade/account_context_menu.glade.h:5 +msgid "_Modify Account..." +msgstr "_UpraviÅ¥ úÄet..." + +#: ../data/glade/account_context_menu.glade.h:6 +msgid "_Status" +msgstr "_Stav" + +#: ../data/glade/account_creation_wizard_window.glade.h:1 +msgid "" +"Account is being created\n" +"\n" +"Please wait..." +msgstr "" +"ÚÄet je vytváraný\n" +"\n" +"Prosím Äakajte..." + +#: ../data/glade/account_creation_wizard_window.glade.h:4 +msgid "Please choose one of the options below:" +msgstr "Prosím, vyberte jednu z možností:" + +#: ../data/glade/account_creation_wizard_window.glade.h:5 +msgid "Please fill in the data for your new account" +msgstr "Prosím, vyplnte údaje o vaÅ¡om úÄte" + +#: ../data/glade/account_creation_wizard_window.glade.h:6 +msgid "Click to see features (like MSN, ICQ transports) of jabber servers" +msgstr "" +"Kliknite pre zistenie vlastností (ako MSN, ICQ transport) jabber serverov" + +#: ../data/glade/account_creation_wizard_window.glade.h:7 +msgid "Connect when I press Finish" +msgstr "PripojiÅ¥, keÄ stlaÄím DokonÄiÅ¥" + +#: ../data/glade/account_creation_wizard_window.glade.h:8 +msgid "Gajim: Account Creation Wizard" +msgstr "Gajim: Pomocník - Tvorba úÄtu" + +#: ../data/glade/account_creation_wizard_window.glade.h:9 +msgid "I already have an account I want to use" +msgstr "Už mám úÄet a chcem ho používaÅ¥" + +#: ../data/glade/account_creation_wizard_window.glade.h:10 +msgid "I want to _register for a new account" +msgstr "Chcem si za_registrovaÅ¥ nový úÄet" + +#: ../data/glade/account_creation_wizard_window.glade.h:11 +#: ../data/glade/account_modification_window.glade.h:18 +msgid "If checked, Gajim will remember the password for this account" +msgstr "Ak je zaÅ¡krtnuté, Gajim si zapamätá heslo pre tento úÄet" + +#: ../data/glade/account_creation_wizard_window.glade.h:12 +#: ../data/glade/manage_proxies_window.glade.h:6 +msgid "Pass_word:" +msgstr "He_slo:" + +#: ../data/glade/account_creation_wizard_window.glade.h:13 +#: ../data/glade/account_modification_window.glade.h:37 +msgid "Save pass_word" +msgstr "UložiÅ¥ hes_lo" + +#: ../data/glade/account_creation_wizard_window.glade.h:14 +msgid "Servers Features" +msgstr "Vlastnosti servera" + +#: ../data/glade/account_creation_wizard_window.glade.h:15 +#, fuzzy +msgid "Set my profile when I connect" +msgstr "NastaviÅ¥ avatara, keÄ som pripojený(á)" + +#: ../data/glade/account_creation_wizard_window.glade.h:16 +msgid "" +"You need to have an account in order to connect\n" +"to the Jabber network." +msgstr "" +"Potrebujete maÅ¥ úÄet, aby ste sa mohli pripojiÅ¥\n" +"do Jabbrovskej siete." + +#: ../data/glade/account_creation_wizard_window.glade.h:18 +msgid "Your JID:" +msgstr "VaÅ¡e JID:" + +#: ../data/glade/account_creation_wizard_window.glade.h:19 +#: ../data/glade/roster_window.glade.h:10 +msgid "_Advanced" +msgstr "_Rozšírené" + +#: ../data/glade/account_creation_wizard_window.glade.h:20 +msgid "_Finish" +msgstr "_DokonÄiÅ¥" + +#: ../data/glade/account_creation_wizard_window.glade.h:21 +#: ../data/glade/manage_proxies_window.glade.h:9 +msgid "_Host:" +msgstr "_Server:" + +#: ../data/glade/account_creation_wizard_window.glade.h:22 +#: ../data/glade/account_modification_window.glade.h:45 +msgid "_Password:" +msgstr "_Heslo:" + +#: ../data/glade/account_creation_wizard_window.glade.h:23 +#: ../data/glade/manage_proxies_window.glade.h:10 +msgid "_Port:" +msgstr "_Port:" + +#: ../data/glade/account_creation_wizard_window.glade.h:24 +msgid "_Retype Password:" +msgstr "_ZopakovaÅ¥ heslo:" + +#: ../data/glade/account_creation_wizard_window.glade.h:25 +msgid "_Server:" +msgstr "_Server:" + +#: ../data/glade/account_creation_wizard_window.glade.h:26 +msgid "_Use proxy" +msgstr "_PoužiÅ¥ proxy" + +#: ../data/glade/account_creation_wizard_window.glade.h:27 +#: ../data/glade/manage_proxies_window.glade.h:11 +msgid "_Username:" +msgstr "_Používateľské meno" + +#: ../data/glade/account_modification_window.glade.h:1 +#: ../data/glade/preferences_window.glade.h:8 +msgid "Miscellaneous" +msgstr "Rôzne" + +#: ../data/glade/account_modification_window.glade.h:2 +msgid "OpenPGP" +msgstr "OpenPGP" + +#: ../data/glade/account_modification_window.glade.h:3 +msgid "Personal Information" +msgstr "Osobné informácie" + +#: ../data/glade/account_modification_window.glade.h:4 +msgid "Account" +msgstr "ÚÄet" + +#: ../data/glade/account_modification_window.glade.h:5 +msgid "Account Modification" +msgstr "Modifikácia úÄtu" + +#: ../data/glade/account_modification_window.glade.h:6 +msgid "Autoreconnect when connection is lost" +msgstr "Automatické pripojenie po strate spojenia" + +#: ../data/glade/account_modification_window.glade.h:7 +msgid "C_onnect on Gajim startup" +msgstr "_PripojiÅ¥ Gajim pri Å¡tarte" + +#: ../data/glade/account_modification_window.glade.h:8 +msgid "Chan_ge Password" +msgstr "Zme_niÅ¥ hesla" + +#: ../data/glade/account_modification_window.glade.h:9 +msgid "" +"Check this so Gajim will connect in port 5223 where legacy servers are " +"expected to have SSL capabilities. Note that Gajim uses TLS encryption by " +"default if broadcasted by the server, and with this option enabled TLS will " +"be disabled" +msgstr "" +"PovoliÅ¥ - Gajim sa bude pripájaÅ¥ na port 5223, kde servery môžu poskytnúť " +"silné Å¡ifrované SSL spojenie. Gajim používa bežne TLS Å¡ifrovanie, pokiaľ je " +"poskytované serverom. Pri povolení tejto vlastnosti bude TLS deaktivované." + +#: ../data/glade/account_modification_window.glade.h:10 +msgid "Choose _Key..." +msgstr "Vyberte _kľúÄ" + +#: ../data/glade/account_modification_window.glade.h:11 +msgid "Click to change account's password" +msgstr "Kliknite pre zmenu hesla úÄtu" + +#: ../data/glade/account_modification_window.glade.h:12 +msgid "Connection" +msgstr "Spojenie" + +#: ../data/glade/account_modification_window.glade.h:13 +msgid "Edit Personal Information..." +msgstr "UpraviÅ¥ osobné informácie..." + +#: ../data/glade/account_modification_window.glade.h:14 +#: ../data/glade/roster_window.glade.h:5 ../src/notify.py:308 +#: ../src/notify.py:330 ../src/notify.py:342 ../src/tooltips.py:350 +msgid "Gajim" +msgstr "Gajim" + +#: ../data/glade/account_modification_window.glade.h:15 +#: ../data/glade/preferences_window.glade.h:44 +#: ../data/glade/vcard_information_window.glade.h:17 +#: ../src/roster_window.py:290 ../src/roster_window.py:1184 +#: ../src/roster_window.py:1405 +msgid "General" +msgstr "VÅ¡eobecné" + +#: ../data/glade/account_modification_window.glade.h:16 +msgid "Hostname: " +msgstr "Meno servera:" + +#: ../data/glade/account_modification_window.glade.h:17 +msgid "" +"If checked, Gajim will also broadcast some more IPs except from just your " +"IP, so file transfer has higher chances of working." +msgstr "" + +#: ../data/glade/account_modification_window.glade.h:19 +msgid "" +"If checked, Gajim will send keep-alive packets so it prevents connection " +"timeout which results in disconnection" +msgstr "" +"Ak je zaÅ¡krtnuté, Gajim bude posielaÅ¥ pakety na udržanie spojenia, Äím sa " +"predchádza vyprÅ¡aniu platnosti spojenia, ktorého výsledkom je odpojeni" + +#: ../data/glade/account_modification_window.glade.h:20 +msgid "" +"If checked, Gajim will store the password in ~/.gajim/config with 'read' " +"permission only for you" +msgstr "" +"Ak je zaÅ¡krtnuté, Gajim uloží heslo do ~/.gajim/config s oprávnením 'ÄitaÅ¥' " +"len pre vás" + +#: ../data/glade/account_modification_window.glade.h:21 +msgid "" +"If checked, Gajim, when launched, will automatically connect to jabber using " +"this account" +msgstr "" +"Ak je zaÅ¡krtnuté, Gajim sa pri spustení automatický pripojí na jabber na " +"tento úÄet" + +#: ../data/glade/account_modification_window.glade.h:22 +msgid "" +"If checked, any change to the global status (handled by the combobox at the " +"bottom of the roster window) will change the status of this account " +"accordingly" +msgstr "" +"Ak je zaÅ¡krtnuté, každá zmena globálneho stavu (realizovaná rozbaľovacím " +"menu na spodku zoznamu) spôsobí zmenu stavu aj v tomto úÄte" + +#: ../data/glade/account_modification_window.glade.h:23 +msgid "Information about you, as stored in the server" +msgstr "Informácie o vás sú uložené na serveri" + +#: ../data/glade/account_modification_window.glade.h:24 +msgid "Manage..." +msgstr "UpraviÅ¥..." + +#: ../data/glade/account_modification_window.glade.h:25 ../src/config.py:1448 +msgid "No key selected" +msgstr "Žiadny kÄ¾ÃºÄ nie je vybraný" + +#. None means no proxy profile selected +#: ../data/glade/account_modification_window.glade.h:27 ../src/config.py:1053 +#: ../src/config.py:1058 ../src/config.py:1230 ../src/config.py:1505 +#: ../src/config.py:1578 ../src/config.py:2282 +msgid "None" +msgstr "NiÄ" + +#: ../data/glade/account_modification_window.glade.h:28 +msgid "Personal Information" +msgstr "Osobné informácie" + +#: ../data/glade/account_modification_window.glade.h:29 +msgid "Port: " +msgstr "Port: " + +#: ../data/glade/account_modification_window.glade.h:30 +msgid "Priori_ty:" +msgstr "Priori_ta:" + +#: ../data/glade/account_modification_window.glade.h:31 +msgid "" +"Priority is used in Jabber to determine who gets the events from the jabber " +"server when two or more clients are connected using the same account; The " +"client with the highest priority gets the events" +msgstr "" +"Priorita v Jabberovi urÄuje, kto obdrží udalosÅ¥ od jabber servera, keÄ je " +"pripojených dvaja alebo viac klientov prostredníctvom jedného úÄtu; Klient s " +"najvyÅ¡Å¡ou priritou obdrží udalosÅ¥" + +#: ../data/glade/account_modification_window.glade.h:32 +msgid "Proxy:" +msgstr "Proxy:" + +#: ../data/glade/account_modification_window.glade.h:33 +msgid "Resour_ce: " +msgstr "Zd_roj:" + +#: ../data/glade/account_modification_window.glade.h:34 +msgid "" +"Resource is sent to the Jabber server in order to separate the same JID in " +"two or more parts depending on the number of the clients connected in the " +"same server with the same account. So you might be connected in the same " +"account with resource 'Home' and 'Work' at the same time. The resource which " +"has the highest priority will get the events. (see below)" +msgstr "" +"Zdroj je odoslaný na Jabber server, aby bolo možné odlíšiÅ¥ rovnaké JID v " +"dvoch alebo viacerých Äastiach závislých na Äísle klientov pripojených na " +"rovnaký server s rovnakým úÄtom. Takže môžete byÅ¥ pripojený na rovnaký úÄet " +"so zdrojmi ako 'Doma' alebo 'V práci', v rovnakom Äase. Zdroj z najvyÅ¡Å¡ou " +"prioritou získava udalosti (viÄ nižšie)" + +#: ../data/glade/account_modification_window.glade.h:35 +msgid "Save _passphrase (insecure)" +msgstr "UložiÅ¥ _passfrázy (nie je bezpeÄné)" + +#: ../data/glade/account_modification_window.glade.h:36 +msgid "Save conversation _logs for all contacts" +msgstr "UložiÅ¥ _záznam z rozhovoru pre vÅ¡etky úÄty" + +#: ../data/glade/account_modification_window.glade.h:38 +msgid "Send keep-alive packets" +msgstr "PoslaÅ¥ pakety na udržiavanie spojenia (keep-alive)" + +#: ../data/glade/account_modification_window.glade.h:39 +msgid "Synch_ronize account status with global status" +msgstr "Syhch_ronizovaÅ¥ stav úÄtu s globálnym stavom" + +#: ../data/glade/account_modification_window.glade.h:40 +msgid "Use _SSL (legacy)" +msgstr "PoužiÅ¥ _SSL (historické dôvody)" + +#: ../data/glade/account_modification_window.glade.h:41 +msgid "Use custom hostname/port" +msgstr "PoužiÅ¥ vlastné nastavenie server/port" + +#: ../data/glade/account_modification_window.glade.h:42 +#, fuzzy +msgid "Use file transfer proxies" +msgstr "zoznam prenosu súborov" + +#: ../data/glade/account_modification_window.glade.h:43 +#: ../data/glade/add_new_contact_window.glade.h:6 +msgid "_Jabber ID:" +msgstr "_Jabber ID:" + +#: ../data/glade/account_modification_window.glade.h:44 +msgid "_Name: " +msgstr "_Meno:" + +#: ../data/glade/accounts_window.glade.h:1 +msgid "Accounts" +msgstr "ÚÄty" + +#: ../data/glade/accounts_window.glade.h:2 +msgid "" +"If you have 2 or more accounts and it is checked, Gajim will list all " +"contacts as if you had one account" +msgstr "" +"Ak máte dva alebo viac úÄtov a je zaÅ¡krtnuté, Gajim bude vypisovaÅ¥ vÅ¡etky " +"kontakty akoby ste mali len jeden úÄet" + +#: ../data/glade/accounts_window.glade.h:3 +msgid "_Merge accounts" +msgstr "_ZlúÄiÅ¥ úÄty" + +#: ../data/glade/accounts_window.glade.h:4 +msgid "_Modify" +msgstr "_UpraviÅ¥" + +#: ../data/glade/accounts_window.glade.h:5 +#: ../data/glade/remove_account_window.glade.h:4 +msgid "_Remove" +msgstr "_OdstrániÅ¥" + +#: ../data/glade/add_new_contact_window.glade.h:1 +#, fuzzy +msgid "A_llow this contact to view my status" +msgstr "PovoliÅ¥ jemu/jej vidieÅ¥ môj stav" + +#: ../data/glade/add_new_contact_window.glade.h:2 +msgid "Add New Contact" +msgstr "PridaÅ¥ nový kontakt" + +#: ../data/glade/add_new_contact_window.glade.h:3 +msgid "I would like to add you to my contact list." +msgstr "Chcem si Å¥a pridaÅ¥ do môjho kontakt listu." + +#: ../data/glade/add_new_contact_window.glade.h:4 +#, fuzzy +msgid "_Account:" +msgstr "ÚÄet" + +#: ../data/glade/add_new_contact_window.glade.h:5 +#, fuzzy +msgid "_Group:" +msgstr "Skupina:" + +#: ../data/glade/add_new_contact_window.glade.h:7 +#, fuzzy +msgid "_Nickname:" +msgstr "Prezývka:" + +#: ../data/glade/add_new_contact_window.glade.h:8 +#, fuzzy +msgid "_Protocol:" +msgstr "Protokol:" + +#: ../data/glade/add_new_contact_window.glade.h:9 +msgid "_Subscribe" +msgstr "_ZapísaÅ¥" + +#: ../data/glade/add_new_contact_window.glade.h:10 +#, fuzzy +msgid "_User ID:" +msgstr "Používateľské ID:" + +#: ../data/glade/advanced_configuration_window.glade.h:1 +msgid "Description" +msgstr "Popis" + +#: ../data/glade/advanced_configuration_window.glade.h:2 +msgid "NOTE: You should restart gajim for some setting to take effect" +msgstr "" +"Poznámka: Mali by ste reÅ¡tartovaÅ¥ Gajim, aby sa mohli zmeny " +"nastavenia aplikovaÅ¥" + +#: ../data/glade/advanced_configuration_window.glade.h:3 +msgid "Advanced Configuration Editor" +msgstr "Rozšírený editor na editovanie konfigurácie" + +#: ../data/glade/advanced_configuration_window.glade.h:4 +msgid "Filter:" +msgstr "Filter:" + +#: ../data/glade/advanced_menuitem_menu.glade.h:1 +msgid "Delete MOTD" +msgstr "ZmazaÅ¥ správu dňa (MOTD)" + +#: ../data/glade/advanced_menuitem_menu.glade.h:2 +msgid "Deletes Message of the Day" +msgstr "ZmazaÅ¥ správy dňa" + +#: ../data/glade/advanced_menuitem_menu.glade.h:3 +msgid "Sends a message to currently connected users to this server" +msgstr "PosielaÅ¥ správy aktuálne pripojeným používateľom na tomto serveri" + +#: ../data/glade/advanced_menuitem_menu.glade.h:4 +msgid "Set MOTD" +msgstr "NastaviÅ¥ správu dňa" + +#: ../data/glade/advanced_menuitem_menu.glade.h:5 +msgid "Sets Message of the Day" +msgstr "NastavovaÅ¥ správu dňa" + +#: ../data/glade/advanced_menuitem_menu.glade.h:6 +msgid "Show _XML Console" +msgstr "ZobraziÅ¥ _XML konzolu" + +#: ../data/glade/advanced_menuitem_menu.glade.h:7 +msgid "Update MOTD" +msgstr "AktualizovaÅ¥ Správu dňa" + +#: ../data/glade/advanced_menuitem_menu.glade.h:8 +msgid "Updates Message of the Day" +msgstr "AktualizovaÅ¥ Správy dňa" + +#: ../data/glade/advanced_menuitem_menu.glade.h:9 +msgid "_Administrator" +msgstr "_Administrátor" + +#: ../data/glade/advanced_menuitem_menu.glade.h:10 +msgid "_Privacy Lists" +msgstr "" + +#: ../data/glade/advanced_menuitem_menu.glade.h:11 +msgid "_Send Server Message" +msgstr "_PoslaÅ¥ serverovú správu" + +#: ../data/glade/advanced_menuitem_menu.glade.h:12 +msgid "_Send Single Message" +msgstr "_PoslaÅ¥ jednoduchú správu" + +#: ../data/glade/advanced_notifications_window.glade.h:1 +msgid " a window/tab opened with that contact " +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:2 +#, fuzzy +msgid "Actions" +msgstr "Aplikácie" + +#: ../data/glade/advanced_notifications_window.glade.h:3 +#, fuzzy +msgid "Conditions" +msgstr "Zvuky" + +#: ../data/glade/advanced_notifications_window.glade.h:4 +#: ../data/glade/preferences_window.glade.h:10 +msgid "Sounds" +msgstr "Zvuky" + +#: ../data/glade/advanced_notifications_window.glade.h:5 +#, fuzzy +msgid "Add" +msgstr "Adresa" + +#: ../data/glade/advanced_notifications_window.glade.h:6 +#, fuzzy +msgid "Advanced Actions" +msgstr "_Rozšírené akcie" + +#: ../data/glade/advanced_notifications_window.glade.h:7 +#, fuzzy +msgid "Advanced Notifications Control" +msgstr "Rozšírený editor na editovanie konfigurácie" + +#: ../data/glade/advanced_notifications_window.glade.h:8 +#, fuzzy +msgid "All Status " +msgstr "Stav:" + +#: ../data/glade/advanced_notifications_window.glade.h:9 +msgid "And I " +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:10 +#, fuzzy +msgid "Away " +msgstr "PreÄ" + +#: ../data/glade/advanced_notifications_window.glade.h:11 +#, fuzzy +msgid "Busy " +msgstr "Zaneprázdnený" + +#: ../data/glade/advanced_notifications_window.glade.h:12 +msgid "Don't have " +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:13 +#, fuzzy +msgid "Down" +msgstr "StiahnuÅ¥" + +#: ../data/glade/advanced_notifications_window.glade.h:14 +msgid "Have " +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:15 +#: ../src/common/helpers.py:239 +msgid "Invisible" +msgstr "Neviditeľný" + +#: ../data/glade/advanced_notifications_window.glade.h:16 +#, fuzzy +msgid "Launch a command" +msgstr "príkaz" + +#: ../data/glade/advanced_notifications_window.glade.h:17 +#, fuzzy +msgid "List of special notifications settings" +msgstr "PridaÅ¥ Å¡peciálne na %s" + +#: ../data/glade/advanced_notifications_window.glade.h:18 +#, fuzzy +msgid "Not Available " +msgstr "Neprítomný" + +#: ../data/glade/advanced_notifications_window.glade.h:19 +#, fuzzy +msgid "Online / Free For Chat" +msgstr "Mám Äas na debatu" + +#: ../data/glade/advanced_notifications_window.glade.h:20 +#, fuzzy +msgid "Play a sound" +msgstr "PrehraÅ¥ _zvuky" + +#: ../data/glade/advanced_notifications_window.glade.h:21 +msgid "" +"Receive a Message\n" +"Contact Connected\n" +"Contact Disconnected\n" +"Contact Change Status\n" +"Group Chat Message Highlight\n" +"Group Chat Message Received\n" +"File Transfert Resquest\n" +"File Transfert Started\n" +"File Transfert Finished" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:30 +msgid "Some special(s) status..." +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:31 +msgid "Up" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:32 +msgid "When " +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:33 +msgid "_Activate Windows manager UrgencyHint to make chat taskbar to flash" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:34 +msgid "_Disable auto opening chat window" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:35 +msgid "_Disable existing popup window" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:36 +msgid "_Disable existing sound for this event" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:37 +msgid "_Disable showing event in roster" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:38 +msgid "_Disable showing event in systray" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:39 +msgid "_Inform me with a popup window" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:40 +#, fuzzy +msgid "_Open chat window with user" +msgstr "PoužiÅ¥ jedno okno na rozhovor so _záložkami" + +#: ../data/glade/advanced_notifications_window.glade.h:41 +#, fuzzy +msgid "_Show event in roster" +msgstr "ZobraziÅ¥ len v _zozname" + +#: ../data/glade/advanced_notifications_window.glade.h:42 +#, fuzzy +msgid "_Show event in systray" +msgstr "ZobraziÅ¥ len v _zozname" + +#: ../data/glade/advanced_notifications_window.glade.h:43 +msgid "" +"contact(s)\n" +"group(s)\n" +"everybody" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:46 +#, fuzzy +msgid "for " +msgstr "Port: " + +#: ../data/glade/advanced_notifications_window.glade.h:47 +msgid "when I'm " +msgstr "" + +#: ../data/glade/change_password_dialog.glade.h:1 +msgid "Change Password" +msgstr "ZmeniÅ¥ heslo" + +#: ../data/glade/change_password_dialog.glade.h:2 +msgid "Enter it again for confirmation:" +msgstr "Vložte eÅ¡te raz pre potvrdenie:" + +#: ../data/glade/change_password_dialog.glade.h:3 +msgid "Enter new password:" +msgstr "Vložte nové heslo:" + +#: ../data/glade/change_status_message_dialog.glade.h:1 +msgid "Type your new status message" +msgstr "Zadajte vaÅ¡u novú správu o stave" + +#: ../data/glade/change_status_message_dialog.glade.h:2 +msgid "Preset messages:" +msgstr "Prdnastavené správy" + +#: ../data/glade/change_status_message_dialog.glade.h:3 +msgid "Save as Preset..." +msgstr "UložiÅ¥ ako prednastavené..." + +#: ../data/glade/chat_context_menu.glade.h:1 +msgid "Join _Group Chat" +msgstr "_PripojiÅ¥ sa k skupinovej diskusii" + +#: ../data/glade/chat_context_menu.glade.h:2 +#: ../data/glade/chat_control_popup_menu.glade.h:4 +#: ../data/glade/gc_occupants_menu.glade.h:2 +#: ../data/glade/roster_contact_context_menu.glade.h:8 +msgid "_Add to Roster" +msgstr "_PridaÅ¥ do zoznamu" + +#: ../data/glade/chat_context_menu.glade.h:3 +msgid "_Copy JID/Email Address" +msgstr "_SkopírovaÅ¥ JID/E-mailovú adresu" + +#: ../data/glade/chat_context_menu.glade.h:4 +msgid "_Copy Link Location" +msgstr "_SkopírovaÅ¥ odkaz" + +#: ../data/glade/chat_context_menu.glade.h:5 +msgid "_Open Email Composer" +msgstr "_OtvoriÅ¥ nový e-mail" + +#: ../data/glade/chat_context_menu.glade.h:6 +msgid "_Open Link in Browser" +msgstr "_OtvoriÅ¥ vo web prehliadaÄi" + +#: ../data/glade/chat_context_menu.glade.h:7 +#: ../data/glade/roster_window.glade.h:19 +#: ../data/glade/systray_context_menu.glade.h:6 +msgid "_Start Chat" +msgstr "_ZaÄaÅ¥ rozhovor" + +#: ../data/glade/chat_control_popup_menu.glade.h:1 +msgid "Click to see past conversations with this contact" +msgstr "Kliknite pre zobrazenie poslednej konverzácie s kontaktom" + +#: ../data/glade/chat_control_popup_menu.glade.h:2 +#: ../data/glade/roster_contact_context_menu.glade.h:6 +msgid "Send _File" +msgstr "PoslaÅ¥ _súbor" + +#: ../data/glade/chat_control_popup_menu.glade.h:3 +msgid "Toggle Open_PGP Encryption" +msgstr "Zapnúť Open_PGP Å¡ifrovanie" + +#: ../data/glade/chat_control_popup_menu.glade.h:5 +#: ../data/glade/gc_control_popup_menu.glade.h:6 +msgid "_Compact View Alt+C" +msgstr "_Kompaktný pohľad Alt+C" + +#: ../data/glade/chat_control_popup_menu.glade.h:6 +#: ../data/glade/gc_control_popup_menu.glade.h:7 +#: ../data/glade/gc_occupants_menu.glade.h:5 +#: ../data/glade/roster_contact_context_menu.glade.h:11 +msgid "_History" +msgstr "_História" + +#: ../data/glade/data_form_window.glade.h:1 +msgid "Room Configuration" +msgstr "Konfigurácia miestnosti" + +#: ../data/glade/edit_groups_dialog.glade.h:1 +msgid "Edit Groups" +msgstr "UpraviÅ¥ skupiny" + +#: ../data/glade/filetransfers.glade.h:1 +msgid "A list of active, completed and stopped file transfers" +msgstr "Zoznam aktívnych, dokonÄených a zastavených prenosov súborov" + +#: ../data/glade/filetransfers.glade.h:2 +msgid "Cancel file transfer" +msgstr "ZruÅ¡iÅ¥ prenos súboru" + +#: ../data/glade/filetransfers.glade.h:3 +msgid "Cancels the selected file transfer" +msgstr "ZruÅ¡iÅ¥ prenos vybraných súborov" + +#: ../data/glade/filetransfers.glade.h:4 +msgid "Cancels the selected file transfer and removes incomplete file" +msgstr "ZruÅ¡iÅ¥ prenos vybraných súborov a odstrániÅ¥ nekompletné súbory" + +#: ../data/glade/filetransfers.glade.h:5 +msgid "Clean _up" +msgstr "_VyÄistiÅ¥" + +#: ../data/glade/filetransfers.glade.h:6 +msgid "File Transfers" +msgstr "Prenos súborov" + +#: ../data/glade/filetransfers.glade.h:7 +msgid "Hides the window" +msgstr "Skrývanie okien" + +#: ../data/glade/filetransfers.glade.h:8 +msgid "Remove file transfer from the list." +msgstr "OdstrániÅ¥ prenos súboru zo zoznamu" + +#: ../data/glade/filetransfers.glade.h:9 +msgid "Removes completed, canceled and failed file transfers from the list" +msgstr "OdstrániÅ¥ dokonÄené, zruÅ¡ené a neúspeÅ¡né prenosy súborov zo zoznamu" + +#: ../data/glade/filetransfers.glade.h:10 +msgid "Shows a list of file transfers between you and other" +msgstr "ZobraziÅ¥ zoznam súborov prenesených medzi vami a ostatnými" + +#: ../data/glade/filetransfers.glade.h:11 +msgid "" +"This action removes single file transfer from the list. If the transfer is " +"active, it is first stopped and then removed" +msgstr "" +"Táto akcia odstráni jeden prenos súborov zo zoznamu. Ak je prenos aktívny, " +"je najskôr zastavený a potom odstránený" + +#: ../data/glade/filetransfers.glade.h:12 +msgid "When a file transfer is complete show a popup notification" +msgstr "KeÄ je prenos súboru dokonÄené zobraziÅ¥ popup upozornenie" + +#: ../data/glade/filetransfers.glade.h:13 ../src/filetransfers_window.py:753 +msgid "_Continue" +msgstr "_PokraÄovaÅ¥" + +#: ../data/glade/filetransfers.glade.h:14 +msgid "_Notify me when a file transfer is complete" +msgstr "_Upozorni ma, keÄ sa dokonÄí prenos" + +#: ../data/glade/filetransfers.glade.h:15 ../src/filetransfers_window.py:190 +msgid "_Open Containing Folder" +msgstr "_OtvoriÅ¥ adresár" + +#: ../data/glade/filetransfers.glade.h:16 +msgid "_Pause" +msgstr "_Pauza" + +#: ../data/glade/filetransfers.glade.h:17 +msgid "file transfers list" +msgstr "zoznam prenosu súborov" + +#: ../data/glade/gajim_themes_window.glade.h:1 +msgid "Chatstate Tab Colors" +msgstr "" + +#: ../data/glade/gajim_themes_window.glade.h:2 +msgid "" +"Account\n" +"Group\n" +"Contact\n" +"Banner" +msgstr "" +"ÚÄet\n" +"Skupina\n" +"Kontakt\n" +"Transparent" + +#: ../data/glade/gajim_themes_window.glade.h:6 +#: ../data/glade/privacy_list_edit_window.glade.h:4 ../src/config.py:326 +msgid "Active" +msgstr "Aktívne" + +#: ../data/glade/gajim_themes_window.glade.h:7 +msgid "Bold" +msgstr "TuÄné" + +#: ../data/glade/gajim_themes_window.glade.h:8 +msgid "Composing" +msgstr "" + +#: ../data/glade/gajim_themes_window.glade.h:9 +msgid "Font style:" +msgstr "Å týl fontu:" + +#: ../data/glade/gajim_themes_window.glade.h:10 +msgid "Gajim Themes Customization" +msgstr "Úprava tém Gajimu" + +#: ../data/glade/gajim_themes_window.glade.h:11 +#, fuzzy +msgid "Gone" +msgstr "NiÄ" + +#: ../data/glade/gajim_themes_window.glade.h:12 +#, fuzzy +msgid "Inactive" +msgstr "Aktívne" + +#: ../data/glade/gajim_themes_window.glade.h:13 +msgid "Italic" +msgstr "Kurzíva" + +#: ../data/glade/gajim_themes_window.glade.h:14 +#, fuzzy +msgid "" +"MUC\n" +"Messages" +msgstr "Správy" + +#: ../data/glade/gajim_themes_window.glade.h:16 +msgid "" +"MUC Directed\n" +"Messages" +msgstr "" + +#: ../data/glade/gajim_themes_window.glade.h:18 ../src/tooltips.py:667 +msgid "Paused" +msgstr "Pauza" + +#: ../data/glade/gajim_themes_window.glade.h:19 +msgid "Text _color:" +msgstr "Farba _textu:" + +#: ../data/glade/gajim_themes_window.glade.h:20 +msgid "Text _font:" +msgstr "_Písmo:" + +#: ../data/glade/gajim_themes_window.glade.h:21 +msgid "_Background:" +msgstr "_Pozadie:" + +#: ../data/glade/gc_control_popup_menu.glade.h:1 +msgid "Change _Nickname" +msgstr "ZmeniÅ¥ _prezývku" + +#: ../data/glade/gc_control_popup_menu.glade.h:2 +msgid "Change _Subject" +msgstr "ZruÅ¡iÅ¥ _predmet" + +#: ../data/glade/gc_control_popup_menu.glade.h:3 +msgid "Click to see past conversation in this room" +msgstr "Kliknite pre zobrazenie predchádzajúcej konverzácie v miestnosti" + +#: ../data/glade/gc_control_popup_menu.glade.h:4 +msgid "Configure _Room" +msgstr "NastaviÅ¥ _miestnosÅ¥" + +#: ../data/glade/gc_control_popup_menu.glade.h:5 +msgid "_Bookmark This Room" +msgstr "_UložiÅ¥ do záložiek túto miestnosÅ¥" + +#: ../data/glade/gc_occupants_menu.glade.h:1 +msgid "Mo_derator" +msgstr "Mo_derátor" + +#: ../data/glade/gc_occupants_menu.glade.h:3 +msgid "_Admin" +msgstr "_Admin" + +#: ../data/glade/gc_occupants_menu.glade.h:4 +msgid "_Ban" +msgstr "_ZakázaÅ¥" + +#: ../data/glade/gc_occupants_menu.glade.h:6 +msgid "_Kick" +msgstr "_Vykopnúť" + +#: ../data/glade/gc_occupants_menu.glade.h:7 +msgid "_Member" +msgstr "_ÄŒlen" + +#: ../data/glade/gc_occupants_menu.glade.h:8 +msgid "_Occupant Actions" +msgstr "_Akcie Älena" + +#: ../data/glade/gc_occupants_menu.glade.h:9 +msgid "_Owner" +msgstr "_Vlastník" + +#: ../data/glade/gc_occupants_menu.glade.h:10 +msgid "_Send Private Message" +msgstr "_PoslaÅ¥ súkromnú správu" + +#: ../data/glade/gc_occupants_menu.glade.h:11 +msgid "_Voice" +msgstr "_Hlas" + +#: ../data/glade/history_manager.glade.h:1 +#, fuzzy +msgid "" +"Welcome to Gajim History Logs Manager\n" +"\n" +"You can select logs from the left and/or search database from below.\n" +"\n" +"WARNING:\n" +"If you plan to do massive deletions, please make sure Gajim is not running. " +"Generally avoid deletions with contacts you currently chat with." +msgstr "" +"Víta vás Gajim - správca histórie\n" +"\n" +"Môžete si vybraÅ¥ záznam z ľava, prípadne prehľadaÅ¥ databázu (dole).\n" +"\n" +"Poznámka: Ak máte v pláne rozsiahlejÅ¡ie mazanie, prosím uistite sa, " +"že Gajim nebeží." + +#: ../data/glade/history_manager.glade.h:7 +msgid "Delete" +msgstr "ZmazaÅ¥" + +#: ../data/glade/history_manager.glade.h:8 +msgid "Export" +msgstr "Export" + +#: ../data/glade/history_manager.glade.h:9 +msgid "Gajim History Logs Manager" +msgstr "Gajim - správca histórie" + +#: ../data/glade/history_manager.glade.h:10 +msgid "_Search Database" +msgstr "_HľadaÅ¥ v databáze" + +#: ../data/glade/history_window.glade.h:1 +msgid "Build custom query" +msgstr "VytvoriÅ¥ vlastnú požiadavku" + +#: ../data/glade/history_window.glade.h:2 +msgid "Conversation History" +msgstr "História konverzácie" + +#: ../data/glade/history_window.glade.h:3 +msgid "Query Builder..." +msgstr "ZostaviÅ¥ požiadavku..." + +#: ../data/glade/history_window.glade.h:4 +msgid "Search" +msgstr "HľadaÅ¥" + +#: ../data/glade/history_window.glade.h:5 +msgid "_Search" +msgstr "_HľadaÅ¥" + +#: ../data/glade/invitation_received_dialog.glade.h:1 +msgid "Accept" +msgstr "PrijaÅ¥" + +#: ../data/glade/invitation_received_dialog.glade.h:2 +#: ../data/glade/privacy_list_edit_window.glade.h:8 +msgid "Deny" +msgstr "ZakázaÅ¥" + +#: ../data/glade/invitation_received_dialog.glade.h:3 +msgid "Invitation Received" +msgstr "Prijaté pozvanie" + +#: ../data/glade/join_groupchat_window.glade.h:1 ../src/dialogs.py:941 +msgid "Join Group Chat" +msgstr "PripojiÅ¥ sa ku skupinovému rozhovoru" + +#: ../data/glade/join_groupchat_window.glade.h:2 +#: ../data/glade/manage_bookmarks_window.glade.h:4 +#: ../data/glade/vcard_information_window.glade.h:28 +msgid "Nickname:" +msgstr "Prezývka:" + +#: ../data/glade/join_groupchat_window.glade.h:3 +#: ../data/glade/manage_bookmarks_window.glade.h:5 +msgid "Password:" +msgstr "Heslo" + +#: ../data/glade/join_groupchat_window.glade.h:4 +msgid "Recently:" +msgstr "Posledné:" + +#: ../data/glade/join_groupchat_window.glade.h:5 +#: ../data/glade/manage_bookmarks_window.glade.h:7 +msgid "Room:" +msgstr "MiestnosÅ¥:" + +#: ../data/glade/join_groupchat_window.glade.h:6 +#: ../data/glade/manage_bookmarks_window.glade.h:8 +msgid "Server:" +msgstr "Server:" + +#: ../data/glade/join_groupchat_window.glade.h:7 ../src/disco.py:1145 +#: ../src/disco.py:1507 +msgid "_Join" +msgstr "_PripojiÅ¥" + +#: ../data/glade/manage_accounts_window.glade.h:1 +msgid "Manage Accounts" +msgstr "UpraviÅ¥ úÄty" + +#: ../data/glade/manage_bookmarks_window.glade.h:1 +msgid "Auto join" +msgstr "Automaticky pripojiÅ¥" + +#: ../data/glade/manage_bookmarks_window.glade.h:2 +msgid "If checked, Gajim will join this group chat on startup" +msgstr "Ak je zaÅ¡krtnuté, Gajim sa pripojí do diskusnej skupiny pri Å¡tarte" + +#: ../data/glade/manage_bookmarks_window.glade.h:3 +msgid "Manage Bookmarks" +msgstr "UpraviÅ¥ záložky" + +#: ../data/glade/manage_bookmarks_window.glade.h:6 +#, fuzzy +msgid "Print status:" +msgstr "ÄŒas tlaÄe:" + +#: ../data/glade/manage_bookmarks_window.glade.h:9 +msgid "Title:" +msgstr "Titul:" + +#: ../data/glade/manage_proxies_window.glade.h:1 +msgid "Properties" +msgstr "Vlastnosti" + +#: ../data/glade/manage_proxies_window.glade.h:2 +msgid "Settings" +msgstr "Nastavenia" + +#: ../data/glade/manage_proxies_window.glade.h:3 +msgid "HTTP Connect" +msgstr "HTTP spojenie" + +#: ../data/glade/manage_proxies_window.glade.h:4 +msgid "Manage Proxy Profiles" +msgstr "UpraviÅ¥ Proxy nastavenia" + +#: ../data/glade/manage_proxies_window.glade.h:5 +#: ../data/glade/vcard_information_window.glade.h:27 +msgid "Name:" +msgstr "Meno:" + +#: ../data/glade/manage_proxies_window.glade.h:7 +msgid "Type:" +msgstr "Typ:" + +#: ../data/glade/manage_proxies_window.glade.h:8 +msgid "Use authentication" +msgstr "PoužiÅ¥ autentifikáciu" + +#: ../data/glade/message_window.glade.h:1 +msgid "Click to insert an emoticon (Alt+M)" +msgstr "Kliknite pre vloženie emotikonu (Alt+M)" + +#: ../data/glade/message_window.glade.h:2 ../src/chat_control.py:966 +msgid "OpenPGP Encryption" +msgstr "OpenPGP Å¡ifrovanie" + +#. Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector) +#: ../data/glade/message_window.glade.h:4 +#: ../data/glade/roster_window.glade.h:9 +msgid "_Actions" +msgstr "_Akcie" + +#. Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector) +#: ../data/glade/message_window.glade.h:6 +#: ../data/glade/xml_console_window.glade.h:11 +#: ../src/filetransfers_window.py:249 +msgid "_Send" +msgstr "_PoslaÅ¥" + +#: ../data/glade/passphrase_dialog.glade.h:1 +msgid "Passphrase" +msgstr "Passfráza" + +#: ../data/glade/preferences_window.glade.h:1 +msgid "Advanced Configuration Editor" +msgstr "Editor rozšírenej konfigurácie" + +#: ../data/glade/preferences_window.glade.h:2 +msgid "Applications" +msgstr "Aplikácie" + +#. a header for custom browser/client/file manager. so translate sth like: Custom Settings +#: ../data/glade/preferences_window.glade.h:4 +msgid "Custom" +msgstr "Vlastné" + +#: ../data/glade/preferences_window.glade.h:5 +msgid "Format of a line" +msgstr "Formát riadku rozhovoru" + +#: ../data/glade/preferences_window.glade.h:6 +#, fuzzy +msgid "GMail Options" +msgstr "Aplikácie" + +#: ../data/glade/preferences_window.glade.h:7 +msgid "Interface Customization" +msgstr "Úprava rozhrania" + +#: ../data/glade/preferences_window.glade.h:9 +msgid "Preset Status Messages" +msgstr "VrátiÅ¥ pôvodnú správu o stave" + +#: ../data/glade/preferences_window.glade.h:11 +msgid "Visual Notifications" +msgstr "Vizuálne upozornenie" + +#: ../data/glade/preferences_window.glade.h:12 +#, fuzzy +msgid "A_fter nickname:" +msgstr "Po prezývke:" + +#: ../data/glade/preferences_window.glade.h:13 +msgid "Advanced" +msgstr "Rozšírené" + +#: ../data/glade/preferences_window.glade.h:14 +msgid "" +"All chat states\n" +"Composing only\n" +"Disabled" +msgstr "" +"VÅ¡etky stavy\n" +"Len pri písaní\n" +"Vypnuté" + +#: ../data/glade/preferences_window.glade.h:17 +msgid "Allow _OS information to be sent" +msgstr "PovoliÅ¥ _odosielanie informácie o operaÄnom systéme" + +#: ../data/glade/preferences_window.glade.h:18 +msgid "Allow popup/notifications when I'm _away/na/busy/invisible" +msgstr "" +"PovoliÅ¥ popup/upozornenia v stavoch _preÄ/nedostupný/zamestnaný/neviditeľný" + +#: ../data/glade/preferences_window.glade.h:19 +msgid "Also known as iChat style" +msgstr "Tiež známy ako iChat Å¡týl" + +#: ../data/glade/preferences_window.glade.h:20 +msgid "Ask status message when I:" +msgstr "VyžiadaÅ¥ správu o stave, keÄ som:" + +#: ../data/glade/preferences_window.glade.h:21 +msgid "Auto _away after:" +msgstr "Automaticky _preÄ po:" + +#: ../data/glade/preferences_window.glade.h:22 +msgid "Auto _not available after:" +msgstr "Automaticky _neprítomný(á) po:" + +#: ../data/glade/preferences_window.glade.h:23 +msgid "" +"Autodetect on every Gajim startup\n" +"Always use GNOME default applications\n" +"Always use KDE default applications\n" +"Custom" +msgstr "" +"Automaticky zistiÅ¥ pri každom Å¡tarte Gajim-u\n" +"Vždy použiÅ¥ aplikácie prostredia GNOME ako predvolené\n" +"Vždy použiÅ¥ aplikácie prostredia KDE ako predvolené\n" +"Vlastné" + +#: ../data/glade/preferences_window.glade.h:27 +#, fuzzy +msgid "B_efore nickname:" +msgstr "Pred prezývkou:" + +#: ../data/glade/preferences_window.glade.h:28 ../src/chat_control.py:718 +msgid "Chat" +msgstr "Rozhovor" + +#: ../data/glade/preferences_window.glade.h:29 +msgid "Chat state noti_fications:" +msgstr "ZmeniÅ¥ upozornen_ie na stav:" + +#: ../data/glade/preferences_window.glade.h:30 +msgid "" +"Check this option, only if someone you don't have in the roster spams/annoys " +"you. Use with caution, cause it blocks all messages from any contact that is " +"not in the roster" +msgstr "" +"Povoľte túto možnosÅ¥ len v prípade, že niekto, koho nemáte v zozname vás " +"spamuje/otravuje. Použitím tejto možnosti zablokujete vÅ¡etky správy od " +"kohokoľvek, koho nemáte v zozname." + +#: ../data/glade/preferences_window.glade.h:31 +#, fuzzy +msgid "Default status _iconset:" +msgstr "Základná _sada ikoniek:" + +#: ../data/glade/preferences_window.glade.h:32 +msgid "Display _extra email details" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:33 +#, fuzzy +msgid "Display a_vatars of contacts in roster" +msgstr "ZobraziÅ¥ avatarov kontaktov v zozname" + +#: ../data/glade/preferences_window.glade.h:34 +#, fuzzy +msgid "Display status _messages of contacts in roster" +msgstr "ZobraziÅ¥ stavovú správu kontaktov v zozname" + +#: ../data/glade/preferences_window.glade.h:35 +#, fuzzy +msgid "E_very 5 minutes" +msgstr "Každých 5 _minút" + +#: ../data/glade/preferences_window.glade.h:36 +msgid "Emoticons:" +msgstr "Emotikony:" + +#: ../data/glade/preferences_window.glade.h:37 +msgid "Events" +msgstr "Udalosti" + +#: ../data/glade/preferences_window.glade.h:38 +msgid "" +"Gajim can send and receive meta-information related to a conversation you " +"may have with a contact. Here you can specify which chatstates you want to " +"send to the other party." +msgstr "" +"Gajim môže odoslaÅ¥ a prijaÅ¥ meta-informácie vzÅ¥ahujúce sa ku konverzácii s " +"vaÅ¡im kontaktom. Tu môžete vybraÅ¥ stavy, o ktorých majú byÅ¥ odosielané " +"informácie druhej strane." + +#: ../data/glade/preferences_window.glade.h:39 +msgid "" +"Gajim will automatically show new events by poping up the relative window" +msgstr "Gajim automaticky zobrazí novo prijaté správy v pop-up okne" + +#: ../data/glade/preferences_window.glade.h:40 +msgid "" +"Gajim will notify you for new events via a popup in the bottom right of the " +"screen" +msgstr "" +"Gajim vás bude upozorňovaÅ¥ na nové udalosti prostredníctvom popup v pravej " +"spodnej Äasti obrazovky" + +#: ../data/glade/preferences_window.glade.h:41 +msgid "" +"Gajim will notify you via a popup window in the bottom right of the screen " +"about contacts that just signed in" +msgstr "" +"Gajim vás bude upozorňovaÅ¥ cez popup v pravej spodnej Äasti obrazovky o " +"kontaktoch, ktoré sa práve pripojili" + +#: ../data/glade/preferences_window.glade.h:42 +msgid "" +"Gajim will notify you via a popup window in the bottom right of the screen " +"about contacts that just signed out" +msgstr "" +"Gajim vás bude upozorňovaÅ¥ popup v pravej spodnej Äasti obrazovky na " +"kontakty, ktoré sa práve odpojili" + +#: ../data/glade/preferences_window.glade.h:43 +msgid "" +"Gajim will only change the icon of the contact that triggered the new event" +msgstr "Gajim bude len meniÅ¥ ikony kontaktov, ktoré spustili novú udalosÅ¥" + +#: ../data/glade/preferences_window.glade.h:45 +#, fuzzy +msgid "" +"If checked, Gajim will display avatars of contacts in roster window and in " +"group chats" +msgstr "Ak je zaÅ¡krtnuté, Gajim bude zobrazovaÅ¥ avatarov v zozname" + +#: ../data/glade/preferences_window.glade.h:46 +#, fuzzy +msgid "" +"If checked, Gajim will display status messages of contacts under the contact " +"name in roster window and in group chats" +msgstr "" +"Ak je zaÅ¡krtnuté, Gajim bude zobrazovaÅ¥ správu o stave kontaktov pod menom v " +"zozname" + +#: ../data/glade/preferences_window.glade.h:47 +msgid "" +"If checked, Gajim will remember the roster and chat window positions in the " +"screen and the sizes of them next time you run it" +msgstr "" +"Ak je zaÅ¡krtnuté, Gajim si bude pamätaÅ¥ pozície a veľkosÅ¥ zoznamu a " +"diskusných okien na obrazovke a pri ÄalÅ¡om spustení ich znova nastaví" + +#: ../data/glade/preferences_window.glade.h:48 +msgid "" +"If checked, Gajim will use protocol-specific status icons. (eg. A contact " +"from MSN will have the equivalent msn icon for status online, away, busy, " +"etc...)" +msgstr "" +"Ak je zaÅ¡krtnuté, Gajim bude používaÅ¥ ikonky Å¡pecifické pre protokol. (Napr. " +"kontakt z MSN bude maÅ¥ ekvivalentné ikonky pre stavy online, preÄ, " +"zaneprázdnený, atÄ...)" + +#: ../data/glade/preferences_window.glade.h:49 +msgid "" +"If not disabled, Gajim will replace ascii smilies like ':)' with equivalent " +"animated or static graphical emoticons" +msgstr "" +"Ak nie je zaÅ¡krtnuté, Gajim nahradí ascii emotikony ako ':)' ekvivalentným " +"grafickým obrázkom" + +#: ../data/glade/preferences_window.glade.h:50 +#, fuzzy +msgid "Ma_nage..." +msgstr "UpraviÅ¥..." + +#: ../data/glade/preferences_window.glade.h:51 +msgid "" +"Never\n" +"Always\n" +"Per account\n" +"Per type" +msgstr "" +"Nidy\n" +"Vždy\n" +"Podľa úÄtu\n" +"Podľa typu" + +#: ../data/glade/preferences_window.glade.h:55 +msgid "Notify me about contacts that: " +msgstr "Upozorni ma na kontakt, ktorý:" + +#: ../data/glade/preferences_window.glade.h:56 +#, fuzzy +msgid "Notify on new _GMail email" +msgstr "UpozorniÅ¥ keÄ príde _Gmail e-mail" + +#: ../data/glade/preferences_window.glade.h:57 +msgid "On every _message" +msgstr "Pri každej _správe" + +#: ../data/glade/preferences_window.glade.h:58 +msgid "One message _window:" +msgstr "Jedno _okno so správou:" + +#: ../data/glade/preferences_window.glade.h:59 +msgid "Play _sounds" +msgstr "PrehraÅ¥ _zvuky" + +#: ../data/glade/preferences_window.glade.h:60 +msgid "Preferences" +msgstr "Nastavenia" + +#: ../data/glade/preferences_window.glade.h:61 +msgid "Print time:" +msgstr "ÄŒas tlaÄe:" + +#: ../data/glade/preferences_window.glade.h:62 +msgid "Save _position and size for roster and chat windows" +msgstr "UložiÅ¥ _pozíciu a veľkosÅ¥ zoznamu a diskusného okna" + +#: ../data/glade/preferences_window.glade.h:63 +msgid "Show only in _roster" +msgstr "ZobraziÅ¥ len v _zozname" + +#: ../data/glade/preferences_window.glade.h:64 +msgid "Sign _in" +msgstr "PrihlásiÅ¥ _sa" + +#: ../data/glade/preferences_window.glade.h:65 +msgid "Sign _out" +msgstr "_OdhlásiÅ¥ sa" + +#: ../data/glade/preferences_window.glade.h:66 +msgid "Status" +msgstr "Stav" + +#: ../data/glade/preferences_window.glade.h:67 +#, fuzzy +msgid "T_heme:" +msgstr "Téma:" + +#: ../data/glade/preferences_window.glade.h:68 +msgid "The auto away status message" +msgstr "Správa pri automatickej zmene stavu na PreÄ" + +#: ../data/glade/preferences_window.glade.h:69 +msgid "The auto not available status message" +msgstr "Správa pri automatickej zmene stavu na Neprítomný(á)" + +#: ../data/glade/preferences_window.glade.h:70 +msgid "Use _transports iconsets" +msgstr "PoužiÅ¥ _transportnú sadu obrázkov" + +#: ../data/glade/preferences_window.glade.h:71 +msgid "Use system _default" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:72 +#, fuzzy +msgid "Use t_rayicon (aka. notification area icon)" +msgstr "_Ikonka v paneli (tj. v upozorňovacej oblasti)" + +#: ../data/glade/preferences_window.glade.h:73 +msgid "" +"When a new event (message, file transfer request etc..) is received, the " +"following methods may be used to inform you about it. Please note that " +"events about new messages only occur if it is a new message from a contact " +"you are not already chatting with" +msgstr "" +"KeÄ je prijatá nová udalosÅ¥ (správa, prenos súboru, atÄ..), nasledujúce " +"metódy môžu byÅ¥ použité, aby ste bold(a) informavaný(á). Poznámka: " +"Upozornenie na nové správy sa zobrazí len v prípade, ak s kontaktom už " +"nediskutujete" + +#: ../data/glade/preferences_window.glade.h:74 +msgid "When new event is received" +msgstr "KeÄ je prijatá nová udalosÅ¥" + +#: ../data/glade/preferences_window.glade.h:75 +#, fuzzy +msgid "_Advanced Notifications Control..." +msgstr "Rozšírený editor na editovanie konfigurácie" + +#: ../data/glade/preferences_window.glade.h:76 +#, fuzzy +msgid "_After time:" +msgstr "Po Äase:" + +#: ../data/glade/preferences_window.glade.h:77 +#, fuzzy +msgid "_Before time:" +msgstr "Pred Äasom:" + +#: ../data/glade/preferences_window.glade.h:78 +msgid "_Browser:" +msgstr "_PrechádzaÅ¥:" + +#: ../data/glade/preferences_window.glade.h:79 +#, fuzzy +msgid "_File manager:" +msgstr "Správca súborov:" + +#: ../data/glade/preferences_window.glade.h:80 +#, fuzzy +msgid "_Font:" +msgstr "Font:" + +#: ../data/glade/preferences_window.glade.h:81 +msgid "_Highlight misspelled words" +msgstr "_ZvýrazniÅ¥ zle napísané slová" + +#: ../data/glade/preferences_window.glade.h:82 +msgid "_Ignore events from contacts not in the roster" +msgstr "_IgnorovaÅ¥ udalosti od kontaktov, ktorí nie sú v zozname" + +#: ../data/glade/preferences_window.glade.h:83 +#, fuzzy +msgid "_Incoming message:" +msgstr "Prichádzajúca správa:" + +#: ../data/glade/preferences_window.glade.h:84 +msgid "_Log status changes of contacts" +msgstr "_ZaznamenaÅ¥ zmenu stavu kontaktu" + +#: ../data/glade/preferences_window.glade.h:85 +msgid "_Mail client:" +msgstr "_E-mailový klient:" + +#: ../data/glade/preferences_window.glade.h:86 +msgid "_Never" +msgstr "_Nikdy" + +#: ../data/glade/preferences_window.glade.h:87 +msgid "_Notify me about it" +msgstr "_Upozorni ma na to" + +#: ../data/glade/preferences_window.glade.h:88 +#, fuzzy +msgid "_Open..." +msgstr "OtvoriÅ¥..." + +#: ../data/glade/preferences_window.glade.h:89 +#, fuzzy +msgid "_Outgoing message:" +msgstr "Odchádzajúca správa:" + +#: ../data/glade/preferences_window.glade.h:90 +msgid "_Player:" +msgstr "_PrehrávaÄ:" + +#: ../data/glade/preferences_window.glade.h:91 +msgid "_Pop it up" +msgstr "_Popup" + +#: ../data/glade/preferences_window.glade.h:92 +#, fuzzy +msgid "_Reset to Default Colors" +msgstr "Návrat Pôvodného nastavenia farieb" + +#: ../data/glade/preferences_window.glade.h:93 +#, fuzzy +msgid "_Sort contacts by status" +msgstr "ZotriediÅ¥ kontakty podľa stavu" + +#: ../data/glade/preferences_window.glade.h:94 +#, fuzzy +msgid "_Status message:" +msgstr "Správa o stave:" + +#: ../data/glade/preferences_window.glade.h:95 +#, fuzzy +msgid "_URL:" +msgstr "URL:" + +#: ../data/glade/preferences_window.glade.h:96 +msgid "minutes" +msgstr "minuty" + +#: ../data/glade/privacy_list_edit_window.glade.h:1 +msgid "Add / Edit a rule" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:2 +#, fuzzy +msgid "List of rules" +msgstr "Formát riadku rozhovoru" + +#: ../data/glade/privacy_list_edit_window.glade.h:3 +msgid "Privacy List" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:5 ../src/config.py:2281 +msgid "All" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:6 +msgid "Allow" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:7 +#, fuzzy +msgid "Default" +msgstr "ZmazaÅ¥" + +#: ../data/glade/privacy_list_edit_window.glade.h:9 +#, fuzzy +msgid "JabberID" +msgstr "Jabber ID:" + +#: ../data/glade/privacy_list_edit_window.glade.h:10 +#, fuzzy +msgid "Order:" +msgstr "Server:" + +#: ../data/glade/privacy_list_edit_window.glade.h:11 ../src/dialogs.py:1626 +#, fuzzy +msgid "Privacy List" +msgstr "ÄŒierna listina" + +#: ../data/glade/privacy_list_edit_window.glade.h:12 +#, fuzzy +msgid "all by subscription" +msgstr "_Požiadavky" + +#: ../data/glade/privacy_list_edit_window.glade.h:13 +#, fuzzy +msgid "all in the group" +msgstr "V skupine" + +#: ../data/glade/privacy_list_edit_window.glade.h:14 +msgid "" +"none\n" +"both\n" +"from\n" +"to" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:18 +#, fuzzy +msgid "to send me messages" +msgstr "PoslaÅ¥ správu" + +#: ../data/glade/privacy_list_edit_window.glade.h:19 +msgid "to send me queries" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:20 +#, fuzzy +msgid "to send me status" +msgstr "PožiadaÅ¥ jeho/ju o súhlas pre zobrazenie stavu" + +#: ../data/glade/privacy_list_edit_window.glade.h:21 +#, fuzzy +msgid "to view my status" +msgstr "PovoliÅ¥ jemu/jej vidieÅ¥ môj stav" + +#: ../data/glade/privacy_lists_first_window.glade.h:1 +msgid "Create your own Privacy Lists" +msgstr "" + +#: ../data/glade/privacy_lists_first_window.glade.h:2 +msgid "Server-based Privacy Lists" +msgstr "" + +#: ../data/glade/remove_account_window.glade.h:1 +msgid "What do you want to do?" +msgstr "ÄŒo si prajete vykonaÅ¥?" + +#: ../data/glade/remove_account_window.glade.h:2 +msgid "Remove account _only from Gajim" +msgstr "_OdstrániÅ¥ úÄet iba z Gajima" + +#: ../data/glade/remove_account_window.glade.h:3 +msgid "Remove account from Gajim and from _server" +msgstr "OdstrániÅ¥ úÄet z Gajima a zo _serveru" + +#: ../data/glade/roster_contact_context_menu.glade.h:1 +#, fuzzy +msgid "A_sk to see his/her status" +msgstr "PožiadaÅ¥ jeho/ju o súhlas pre zobrazenie stavu" + +#: ../data/glade/roster_contact_context_menu.glade.h:2 +msgid "Add Special _Notification" +msgstr "PridaÅ¥ Å¡peciálne _upozornenie" + +#: ../data/glade/roster_contact_context_menu.glade.h:3 +msgid "Assign Open_PGP Key" +msgstr "PrideliÅ¥ Open_PGP kľúÄ" + +#: ../data/glade/roster_contact_context_menu.glade.h:4 +msgid "Edit _Groups" +msgstr "UpraviÅ¥ _Skupiny" + +#: ../data/glade/roster_contact_context_menu.glade.h:5 +#: ../data/glade/systray_context_menu.glade.h:1 +msgid "Send Single _Message" +msgstr "PoslaÅ¥ jednoduchú _správu" + +#: ../data/glade/roster_contact_context_menu.glade.h:7 +msgid "Start _Chat" +msgstr "ZaÄaÅ¥ _rozhovor" + +#: ../data/glade/roster_contact_context_menu.glade.h:9 +#, fuzzy +msgid "_Allow him/her to see my status" +msgstr "PovoliÅ¥ jemu/jej vidieÅ¥ môj stav" + +#: ../data/glade/roster_contact_context_menu.glade.h:10 +#, fuzzy +msgid "_Forbid him/her to see my status" +msgstr "OdmietnuÅ¥ zobraziÅ¥ stav" + +#: ../data/glade/roster_contact_context_menu.glade.h:12 +#: ../src/roster_window.py:1482 +msgid "_Remove from Roster" +msgstr "_OdstrániÅ¥ zo zoznamu" + +#: ../data/glade/roster_contact_context_menu.glade.h:13 +#: ../src/roster_window.py:1470 +msgid "_Rename" +msgstr "_PremenovaÅ¥" + +#: ../data/glade/roster_contact_context_menu.glade.h:14 +msgid "_Subscription" +msgstr "_Požiadavky" + +#: ../data/glade/roster_window.glade.h:1 +msgid "A_ccounts" +msgstr "ÚÄ_ty" + +#: ../data/glade/roster_window.glade.h:2 +msgid "Add _Contact" +msgstr "PridaÅ¥ _kontakt" + +#: ../data/glade/roster_window.glade.h:3 +msgid "File _Transfers" +msgstr "Prenos _súborov" + +#: ../data/glade/roster_window.glade.h:4 +msgid "Frequently Asked Questions (online)" +msgstr "ÄŒasto kladené otázky (FAQ - online)" + +#: ../data/glade/roster_window.glade.h:6 +msgid "Help online" +msgstr "Online pomoc" + +#: ../data/glade/roster_window.glade.h:7 +msgid "Profile, Avatar" +msgstr "Profil, Avatar" + +#: ../data/glade/roster_window.glade.h:8 +msgid "Show _Offline Contacts" +msgstr "ZobraziÅ¥ _offline kontakty" + +#: ../data/glade/roster_window.glade.h:11 +msgid "_Contents" +msgstr "_Obsah dokumentácie" + +#: ../data/glade/roster_window.glade.h:12 +msgid "_Discover Services" +msgstr "_PreskúmaÅ¥ služby" + +#: ../data/glade/roster_window.glade.h:13 ../src/disco.py:1252 +#: ../src/roster_window.py:1462 +msgid "_Edit" +msgstr "_UpraviÅ¥" + +#: ../data/glade/roster_window.glade.h:14 +msgid "_FAQ" +msgstr "_ÄŒasto kladené otázky" + +#: ../data/glade/roster_window.glade.h:16 +msgid "_Help" +msgstr "_Pomoc" + +#: ../data/glade/roster_window.glade.h:17 +msgid "_Preferences" +msgstr "_Nastavenia" + +#: ../data/glade/roster_window.glade.h:18 +msgid "_Quit" +msgstr "_Koniec" + +#: ../data/glade/service_discovery_window.glade.h:1 +msgid "G_o" +msgstr "Ch_oÄ" + +#: ../data/glade/service_discovery_window.glade.h:2 +msgid "_Address:" +msgstr "_Adresa:" + +#: ../data/glade/service_discovery_window.glade.h:3 +msgid "_Filter:" +msgstr "_Filter:" + +#: ../data/glade/service_registration_window.glade.h:1 +msgid "Register to" +msgstr "Registrovaný(á) k" + +#: ../data/glade/service_registration_window.glade.h:2 +msgid "_Cancel" +msgstr "_ZruÅ¡iÅ¥" + +#: ../data/glade/service_registration_window.glade.h:3 +msgid "_OK" +msgstr "_OK" + +#: ../data/glade/single_message_window.glade.h:1 +msgid "0" +msgstr "0" + +#: ../data/glade/single_message_window.glade.h:2 +msgid "From:" +msgstr "Od:" + +#: ../data/glade/single_message_window.glade.h:3 +msgid "Reply to this message" +msgstr "OdpoveÄ na túto správu" + +#: ../data/glade/single_message_window.glade.h:4 +msgid "Sen_d" +msgstr "PoÅ¡_li" + +#: ../data/glade/single_message_window.glade.h:5 +msgid "Send message" +msgstr "PoslaÅ¥ správu" + +#: ../data/glade/single_message_window.glade.h:6 +msgid "Send message and close window" +msgstr "PoslaÅ¥ správu a zatvoriÅ¥ okno" + +#: ../data/glade/single_message_window.glade.h:7 +msgid "Subject:" +msgstr "Predmet:" + +#: ../data/glade/single_message_window.glade.h:8 +msgid "To:" +msgstr "Pre:" + +#: ../data/glade/single_message_window.glade.h:9 +msgid "_Reply" +msgstr "_OdpovedaÅ¥" + +#: ../data/glade/single_message_window.glade.h:10 +msgid "_Send & Close" +msgstr "_PoslaÅ¥ a zatvoriÅ¥" + +#: ../data/glade/subscription_request_window.glade.h:1 +msgid "Authorize contact so he can know when you're connected" +msgstr "AutorizovaÅ¥ kontakt, od teraz vude vidieÅ¥ kedy ste pripojený(á)" + +#: ../data/glade/subscription_request_window.glade.h:2 +msgid "Contact _Info" +msgstr "Kontaktné _info" + +#: ../data/glade/subscription_request_window.glade.h:3 +msgid "Deny authorization from contact so he cannot know when you're connected" +msgstr "" +"ZamietnuÅ¥ autorizáciu od kontaktu, nebude tým pádom vedieÅ¥, kedy ste " +"pripojený(á)" + +#: ../data/glade/subscription_request_window.glade.h:4 +msgid "Subscription Request" +msgstr "Požiadavka o zapísanie" + +#: ../data/glade/subscription_request_window.glade.h:5 +msgid "_Authorize" +msgstr "_AutorizovaÅ¥" + +#: ../data/glade/subscription_request_window.glade.h:6 +msgid "_Deny" +msgstr "_ZakázaÅ¥" + +#: ../data/glade/systray_context_menu.glade.h:2 +msgid "Show All Pending _Events" +msgstr "ZobraziÅ¥ vÅ¡etky Äakajúce _udalosti" + +#: ../data/glade/systray_context_menu.glade.h:3 +msgid "Show _Roster" +msgstr "ZobraziÅ¥ _zoznam" + +#: ../data/glade/systray_context_menu.glade.h:4 +msgid "Sta_tus" +msgstr "S_tav" + +#. "About" is the text of a tab of vcard window +#: ../data/glade/vcard_information_window.glade.h:2 +msgid "About" +msgstr "Informácie" + +#: ../data/glade/vcard_information_window.glade.h:3 +msgid "Address" +msgstr "Adresa" + +#: ../data/glade/vcard_information_window.glade.h:4 +msgid "Ask:" +msgstr "PožiadaÅ¥:" + +#: ../data/glade/vcard_information_window.glade.h:5 +msgid "Birthday:" +msgstr "Narodeniny:" + +#: ../data/glade/vcard_information_window.glade.h:6 +msgid "City:" +msgstr "Mesto:" + +#: ../data/glade/vcard_information_window.glade.h:7 +msgid "Client:" +msgstr "Klient:" + +#: ../data/glade/vcard_information_window.glade.h:8 +msgid "Company:" +msgstr "SpoloÄnosÅ¥:" + +#: ../data/glade/vcard_information_window.glade.h:9 +msgid "Contact Information" +msgstr "Kontaktné informácie" + +#: ../data/glade/vcard_information_window.glade.h:10 +msgid "Country:" +msgstr "Krajina:" + +#: ../data/glade/vcard_information_window.glade.h:11 +msgid "Department:" +msgstr "Oddelenie:" + +#: ../data/glade/vcard_information_window.glade.h:12 +msgid "E-Mail:" +msgstr "E-Mail:" + +#: ../data/glade/vcard_information_window.glade.h:13 +msgid "Extra Address:" +msgstr "Extra adresa:" + +#. Family Name +#: ../data/glade/vcard_information_window.glade.h:15 +msgid "Family:" +msgstr "Priezvisko:" + +#: ../data/glade/vcard_information_window.glade.h:16 +msgid "Format: YYYY-MM-DD" +msgstr "Formát: YYYY-MM-DD" + +#. Given Name +#: ../data/glade/vcard_information_window.glade.h:19 +msgid "Given:" +msgstr "Meno:" + +#: ../data/glade/vcard_information_window.glade.h:20 +msgid "Homepage:" +msgstr "Domovská stránka:" + +#: ../data/glade/vcard_information_window.glade.h:21 +msgid "Jabber" +msgstr "Jabber" + +#: ../data/glade/vcard_information_window.glade.h:22 +msgid "Jabber ID:" +msgstr "Jabber ID:" + +#: ../data/glade/vcard_information_window.glade.h:23 +msgid "Location" +msgstr "Miesto" + +#. Middle Name +#: ../data/glade/vcard_information_window.glade.h:25 +msgid "Middle:" +msgstr "Prostredné meno:" + +#: ../data/glade/vcard_information_window.glade.h:26 +msgid "More" +msgstr "Viac" + +#: ../data/glade/vcard_information_window.glade.h:29 +msgid "OS:" +msgstr "OperaÄný systém:" + +#: ../data/glade/vcard_information_window.glade.h:30 +msgid "Phone No.:" +msgstr "Telefónne Ä.:" + +#: ../data/glade/vcard_information_window.glade.h:31 +msgid "Position:" +msgstr "Pozícia:" + +#: ../data/glade/vcard_information_window.glade.h:32 +msgid "Postal Code:" +msgstr "PSÄŒ:" + +#. Prefix in Name +#: ../data/glade/vcard_information_window.glade.h:34 +msgid "Prefix:" +msgstr "Prefix:" + +#: ../data/glade/vcard_information_window.glade.h:35 +msgid "Resource:" +msgstr "Zdroj:" + +#: ../data/glade/vcard_information_window.glade.h:36 +msgid "Role:" +msgstr "Rola:" + +#: ../data/glade/vcard_information_window.glade.h:37 +msgid "Set _Avatar" +msgstr "NastaviÅ¥ _avatara" + +#: ../data/glade/vcard_information_window.glade.h:38 +msgid "State:" +msgstr "Stav:" + +#: ../data/glade/vcard_information_window.glade.h:39 +msgid "Status:" +msgstr "Stav:" + +#: ../data/glade/vcard_information_window.glade.h:40 +msgid "Street:" +msgstr "Ulica:" + +#: ../data/glade/vcard_information_window.glade.h:41 +msgid "Subscription:" +msgstr "Zápis:" + +#. Suffix in Name +#: ../data/glade/vcard_information_window.glade.h:43 +msgid "Suffix:" +msgstr "Titul za:" + +#: ../data/glade/vcard_information_window.glade.h:44 +msgid "Work" +msgstr "Práca" + +#: ../data/glade/vcard_information_window.glade.h:45 +msgid "_Log conversation history" +msgstr "História _konverzácie" + +#: ../data/glade/vcard_information_window.glade.h:46 +msgid "_Publish" +msgstr "_ZverejniÅ¥" + +#: ../data/glade/vcard_information_window.glade.h:47 +msgid "_Retrieve" +msgstr "_ZískaÅ¥" + +#: ../data/glade/xml_console_window.glade.h:1 +msgid "Jabber Traffic" +msgstr "Prevádzka Jabber-a" + +#: ../data/glade/xml_console_window.glade.h:2 +msgid "XML Input" +msgstr "XML vstup" + +#. XML Console enable checkbutton +#: ../data/glade/xml_console_window.glade.h:4 +msgid "Enable" +msgstr "PovoliÅ¥" + +#. Info/Query make the "IQ" initials. So translate like this 'YourLang/YourLang (Info/Query)'. Thanks (it's a tooltip so width is not a problem) +#: ../data/glade/xml_console_window.glade.h:6 +msgid "Info/Query" +msgstr "Info/Požiadavka" + +#. Info/Query: all(?) jabber xml start with Whom do you want to ban?\n" "\n" @@ -377,11 +2438,11 @@ msgstr "" "Koho chcete zakázaÅ¥?\n" "\n" -#: ../src/config.py:2023 +#: ../src/config.py:2062 msgid "Adding Member..." -msgstr "Pridávanie Älena..." +msgstr "Pridáva sa Älen..." -#: ../src/config.py:2024 +#: ../src/config.py:2063 msgid "" "Whom do you want to make a member?\n" "\n" @@ -389,11 +2450,11 @@ msgstr "" "Koho chcete pridaÅ¥ k Älenom?\n" "\n" -#: ../src/config.py:2026 +#: ../src/config.py:2065 msgid "Adding Owner..." -msgstr "Pridávanie vlastníka..." +msgstr "Pridáva sa vlastník..." -#: ../src/config.py:2027 +#: ../src/config.py:2066 msgid "" "Whom do you want to make a owner?\n" "\n" @@ -401,11 +2462,11 @@ msgstr "" "Koho chcete urÄiÅ¥ za vlastníka?\n" "\n" -#: ../src/config.py:2029 +#: ../src/config.py:2068 msgid "Adding Administrator..." -msgstr "Pridávanie Administrátora..." +msgstr "Pridáva sa Administrátor..." -#: ../src/config.py:2030 +#: ../src/config.py:2069 msgid "" "Whom do you want to make an administrator?\n" "\n" @@ -413,7 +2474,7 @@ msgstr "" "koho chcete urÄiÅ¥ za vlastníka?\n" "\n" -#: ../src/config.py:2031 +#: ../src/config.py:2070 msgid "" "Can be one of the following:\n" "1. user@domain/resource (only that resource matches).\n" @@ -429,715 +2490,759 @@ msgstr "" "4. doména (doména sama o sebe, ľubovoľný používateľ@doména,\n" "doména/zdroj, alebo adresa obsahujúca subdoménu." -#: ../src/config.py:2127 +#: ../src/config.py:2166 #, python-format msgid "Removing %s account" -msgstr "OdstrániÅ¥ %s úÄet" +msgstr "Odstraňuje sa úÄet %s" -#: ../src/config.py:2144 -#: ../src/roster_window.py:1859 +#: ../src/config.py:2183 ../src/roster_window.py:1857 msgid "Password Required" msgstr "Heslo je požadované" -#: ../src/config.py:2145 -#: ../src/roster_window.py:1860 +#: ../src/config.py:2184 ../src/roster_window.py:1858 #, python-format msgid "Enter your password for account %s" msgstr "Vložte heslo pre váš úÄet %s" -#: ../src/config.py:2146 -#: ../src/roster_window.py:1861 +#: ../src/config.py:2185 ../src/roster_window.py:1859 msgid "Save password" msgstr "UložiÅ¥ heslo" -#: ../src/config.py:2159 +#: ../src/config.py:2198 #, python-format msgid "Account \"%s\" is connected to the server" msgstr "ÚÄet \"%s\" je pripojený na server" -#: ../src/config.py:2160 +#: ../src/config.py:2199 msgid "If you remove it, the connection will be lost." msgstr "Ak dôjde k odstráneniu, stratíte spojenie." -#: ../src/config.py:2295 +#: ../src/config.py:2282 +msgid "Enter and leave only" +msgstr "" + +#: ../src/config.py:2352 msgid "New Room" msgstr "Nová miestnosÅ¥" -#: ../src/config.py:2326 +#: ../src/config.py:2383 msgid "This bookmark has invalid data" msgstr "Táto záložka obsahuje chybné údaje" -#: ../src/config.py:2327 -msgid "Please be sure to fill out server and room fields or remove this bookmark." -msgstr "Prosim, uistite sa, že je vyplnená položka server a miestnosÅ¥ alebo odstránte túto záložku." +#: ../src/config.py:2384 +msgid "" +"Please be sure to fill out server and room fields or remove this bookmark." +msgstr "" +"Prosim, uistite sa, že je vyplnená položka server a miestnosÅ¥ alebo " +"odstráňte túto záložku." -#: ../src/config.py:2564 +#: ../src/config.py:2638 msgid "Invalid username" msgstr "Nesprávne meno používateľa" -#: ../src/config.py:2565 +#: ../src/config.py:2639 msgid "You must provide a username to configure this account." msgstr "Musíte vložiÅ¥ meno používateľa pre konfuguráciu tohoto úÄtu." -#: ../src/config.py:2574 -#: ../src/dialogs.py:1036 +#: ../src/config.py:2648 ../src/dialogs.py:1118 msgid "Invalid password" msgstr "Nesprávne heslo" -#: ../src/config.py:2575 +#: ../src/config.py:2649 msgid "You must enter a password for the new account." msgstr "Musíte vložiÅ¥ heslo pre nový úÄet." -#: ../src/config.py:2579 -#: ../src/dialogs.py:1041 +#: ../src/config.py:2653 ../src/dialogs.py:1123 msgid "Passwords do not match" msgstr "Heslá sa nezhodujú" -#: ../src/config.py:2580 -#: ../src/dialogs.py:1042 +#: ../src/config.py:2654 ../src/dialogs.py:1124 msgid "The passwords typed in both fields must be identical." -msgstr "Heslá vložené do oboch polí musia byÅ¥ rovnaké." +msgstr "Heslá vložené do oboch polí musia zhodovaÅ¥." -#: ../src/config.py:2599 +#: ../src/config.py:2673 +#, fuzzy msgid "Duplicate Jabber ID" -msgstr "Duplicitné Jabber ID" +msgstr "Nespravné Jabber ID" -#: ../src/config.py:2600 +#: ../src/config.py:2674 +#, fuzzy msgid "This account is already configured in Gajim." -msgstr "Tento úÄet je už v Gajime nastavený." +msgstr "Tento kontakt je už uvedený v zozname." -#: ../src/config.py:2617 +#: ../src/config.py:2691 msgid "Account has been added successfully" msgstr "ÚÄet bol úspeÅ¡ne pridaný" -#: ../src/config.py:2618 -#: ../src/config.py:2651 -msgid "You can set advanced account options by pressing Advanced button, or later by clicking in Accounts menuitem under Edit menu from the main window." -msgstr "Môžete nastaviÅ¥ rozšírené možnosti úÄtu stlaÄením tlaÄidla Rozšírené možnosti, alebo neskôr kliknutím na položku v menu ÚÄty pod záložkou UpraviÅ¥, v hlavnom okne" +#: ../src/config.py:2692 ../src/config.py:2725 +msgid "" +"You can set advanced account options by pressing Advanced button, or later " +"by clicking in Accounts menuitem under Edit menu from the main window." +msgstr "" +"Môžete nastaviÅ¥ rozšírené možnosti úÄtu stlaÄením tlaÄidla Rozšírené " +"možnosti, alebo neskôr kliknutím na položku ÚÄty v menu UpraviÅ¥, v hlavnom " +"okne" -#: ../src/config.py:2650 +#: ../src/config.py:2724 msgid "Your new account has been created successfully" msgstr "Váš nový úÄet bol vytvorený úspeÅ¡ne" -#: ../src/config.py:2666 +#: ../src/config.py:2740 msgid "An error occured during account creation" msgstr "Nastala chyba pri vytváraní úÄtu" -#: ../src/config.py:2723 +#: ../src/config.py:2797 msgid "Account name is in use" -msgstr "Meno úÄtu je už používané" +msgstr "Názov úÄtu je už používané" -#: ../src/config.py:2724 +#: ../src/config.py:2798 msgid "You already have an account using this name." -msgstr "Už máte úÄet s týmto menom." +msgstr "Už máte úÄet s týmto názvom." -#: ../src/conversation_textview.py:182 -msgid "Text below this line is what has been said since the last time you paid attention to this group chat" -msgstr "Text pod touto Äiarou bol povedaný v skupine pokiaľ ste jej nevenovali pozornosÅ¥ rozhovoru v skupine" +#: ../src/conversation_textview.py:205 +msgid "" +"Text below this line is what has been said since the last time you paid " +"attention to this group chat" +msgstr "" +"Text pod touto Äiarou bol povedaný za dobu Äo ste jej nevenovali pozornosÅ¥ " +"skupinovému rozhovoru" -#: ../src/conversation_textview.py:239 +#: ../src/conversation_textview.py:263 #, python-format msgid "Actions for \"%s\"" -msgstr "Akcia pre \"%s\"" +msgstr "Akcie pre \"%s\"" -#: ../src/conversation_textview.py:251 +#: ../src/conversation_textview.py:275 msgid "Read _Wikipedia Article" msgstr "ČítaÅ¥ Älánok na _Wikipédii" -#: ../src/conversation_textview.py:255 +#: ../src/conversation_textview.py:280 msgid "Look it up in _Dictionary" -msgstr "PozrieÅ¥ sa do _Slovníka" +msgstr "VyhľadaÅ¥ to v _Slovníku" #. we must have %s in the url if not WIKTIONARY -#: ../src/conversation_textview.py:270 +#: ../src/conversation_textview.py:296 #, python-format msgid "Dictionary URL is missing an \"%s\" and it is not WIKTIONARY" -msgstr "Slovníkové URL chýba \"%s\" a nie je WIKTIONÃRNE" +msgstr "URL Slovníka chýba \"%s\" a nie je WIKTIONÃRNE" #. we must have %s in the url -#: ../src/conversation_textview.py:281 +#: ../src/conversation_textview.py:308 #, python-format msgid "Web Search URL is missing an \"%s\"" msgstr "URL pre web vyhľadávanie chýba \"%s\"" -#: ../src/conversation_textview.py:284 +#: ../src/conversation_textview.py:311 msgid "Web _Search for it" msgstr "_HľadaÅ¥ na webe" -#: ../src/conversation_textview.py:574 +#: ../src/conversation_textview.py:607 msgid "Yesterday" msgstr "VÄera" #. the number is >= 2 #. %i is day in year (1-365), %d (1-31) we want %i -#: ../src/conversation_textview.py:578 +#: ../src/conversation_textview.py:611 #, python-format msgid "%i days ago" msgstr "Pred %i dňami" #. if we have subject, show it too! -#: ../src/conversation_textview.py:634 +#: ../src/conversation_textview.py:686 #, python-format msgid "Subject: %s\n" msgstr "Predmet: %s\n" #. only say that to non Windows users -#: ../src/dbus_support.py:34 +#: ../src/dbus_support.py:32 msgid "D-Bus python bindings are missing in this computer" -msgstr "D-Bus python väzba chýba na tomto poÄítaÄi" +msgstr "D-Bus python väzby chýbajú na tomto poÄítaÄi" -#: ../src/dbus_support.py:35 +#: ../src/dbus_support.py:33 msgid "D-Bus capabilities of Gajim cannot be used" -msgstr "D-Bus vlastnosti Gajimu nemôžu byÅ¥ použité" +msgstr "D-Bus vlastnosti programu Gajim nemôžu byÅ¥ použité" -#: ../src/dialogs.py:64 +#: ../src/dialogs.py:55 #, python-format msgid "Contact's name: %s" msgstr "Meno kontaktu: %s" -#: ../src/dialogs.py:66 +#: ../src/dialogs.py:57 #, python-format msgid "JID: %s" msgstr "JID: %s" -#: ../src/dialogs.py:169 +#. Group name +#. In group boolean +#: ../src/dialogs.py:173 msgid "Group" msgstr "Skupina" -#: ../src/dialogs.py:176 +#: ../src/dialogs.py:180 msgid "In the group" msgstr "V skupine" -#: ../src/dialogs.py:226 +#: ../src/dialogs.py:230 msgid "KeyID" msgstr "ID kľúÄa" -#: ../src/dialogs.py:229 +#: ../src/dialogs.py:233 msgid "Contact name" msgstr "Kontaktné meno" -#: ../src/dialogs.py:263 +#: ../src/dialogs.py:266 #, python-format msgid "%s Status Message" msgstr "%s Správa o stave" -#: ../src/dialogs.py:265 +#: ../src/dialogs.py:268 msgid "Status Message" msgstr "Správa o stave" -#: ../src/dialogs.py:340 +#: ../src/dialogs.py:343 msgid "Save as Preset Status Message" msgstr "UložiÅ¥ ako prednastavenú správu o stave" -#: ../src/dialogs.py:341 +#: ../src/dialogs.py:344 msgid "Please type a name for this status message" -msgstr "Prosím, zadajte VaÅ¡e meno pre túto správu o stave" +msgstr "Zadajte prosím názov pre túto stavovú správu" -#: ../src/dialogs.py:369 +#: ../src/dialogs.py:391 #, python-format msgid "Please fill in the data of the contact you want to add in account %s" msgstr "Prosím vyplnte údaje o kontakte, ktorý chcete pridaÅ¥ do úÄtu %s" -#: ../src/dialogs.py:371 +#: ../src/dialogs.py:393 msgid "Please fill in the data of the contact you want to add" msgstr "Prosím vyplnte údaje o kontakte, ktorý chcete pridaÅ¥" -#. the user can be in mutiple groups, see in all of them -#: ../src/dialogs.py:380 -#: ../src/disco.py:118 -#: ../src/disco.py:119 -#: ../src/disco.py:1258 -#: ../src/roster_window.py:214 -#: ../src/roster_window.py:275 -#: ../src/roster_window.py:310 -#: ../src/roster_window.py:330 -#: ../src/roster_window.py:354 -#: ../src/roster_window.py:2940 -#: ../src/roster_window.py:2942 -#: ../src/systray.py:291 -#: ../src/common/helpers.py:42 +#: ../src/dialogs.py:403 ../src/disco.py:109 ../src/disco.py:110 +#: ../src/disco.py:1249 ../src/roster_window.py:207 +#: ../src/roster_window.py:273 ../src/roster_window.py:309 +#: ../src/roster_window.py:329 ../src/roster_window.py:353 +#: ../src/roster_window.py:2973 ../src/roster_window.py:2975 +#: ../src/common/helpers.py:39 msgid "Transports" -msgstr "Transport" +msgstr "Transporty" -#: ../src/dialogs.py:452 -#: ../src/dialogs.py:458 +#: ../src/dialogs.py:493 ../src/dialogs.py:499 msgid "Invalid User ID" -msgstr "Nespravné používateľské ID" +msgstr "Nespravné ID používateľa" -#: ../src/dialogs.py:459 +#: ../src/dialogs.py:500 msgid "The user ID must not contain a resource." msgstr "ID používateľa nesmie obsahovaÅ¥ zdroj." -#: ../src/dialogs.py:466 +#: ../src/dialogs.py:513 msgid "Contact already in roster" msgstr "Kontakt je už v zozname" -#: ../src/dialogs.py:467 +#: ../src/dialogs.py:514 msgid "This contact is already listed in your roster." -msgstr "Kontakt je už zanesený v zozname." +msgstr "Tento kontakt je už uvedený v zozname." -#: ../src/dialogs.py:528 +#: ../src/dialogs.py:576 msgid "A GTK+ jabber client" msgstr "GTK+ jabber klient" -#: ../src/dialogs.py:539 +#: ../src/dialogs.py:577 +msgid "GTK+ Version:" +msgstr "" + +#: ../src/dialogs.py:578 +msgid "PyGTK Version:" +msgstr "" + +#: ../src/dialogs.py:586 +#, fuzzy +msgid "Current Developers:" +msgstr "Bývalí vývojári:" + +#: ../src/dialogs.py:588 msgid "Past Developers:" msgstr "Bývalí vývojári:" -#: ../src/dialogs.py:543 +#: ../src/dialogs.py:592 msgid "THANKS:" msgstr "POÄŽAKOVANIE:" -#. remove one english setence +#. remove one english sentence #. and add it manually as translatable -#: ../src/dialogs.py:550 +#: ../src/dialogs.py:598 msgid "Last but not least, we would like to thank all the package maintainers." -msgstr "V neposlednej rade Äakujeme vÅ¡etkým správcom balíkov (package maintainers)." +msgstr "" +"V neposlednom rade Äakujeme vÅ¡etkým správcom balíkov (package maintainers)" #. here you write your name in the form Name FamilyName -#: ../src/dialogs.py:564 +#: ../src/dialogs.py:612 msgid "translator-credits" -msgstr "Juraj Michálek " +msgstr "" +"Juraj Michálek (juraj.michalek AT asinus.org)\n" +"Peter TrÅ¡ko (dogmat AT dogmat.us)" -#: ../src/dialogs.py:826 +#: ../src/dialogs.py:738 +#, fuzzy, python-format +msgid "Unable to bind to port %s." +msgstr "Nie je možné vstúpiÅ¥ do miestnosti" + +#: ../src/dialogs.py:739 +msgid "" +"Maybe you have another running instance of Gajim. File Transfer will be " +"canceled." +msgstr "" + +#: ../src/dialogs.py:881 #, python-format msgid "Subscription request for account %s from %s" -msgstr "Požiadavka na prihlásenie úÄtu %s od %s" +msgstr "Požiadavka na prihlásenie pre úÄet %s od %s" -#: ../src/dialogs.py:829 +#: ../src/dialogs.py:884 #, python-format msgid "Subscription request from %s" msgstr "Požiadavka na prihlásenie od %s" -#: ../src/dialogs.py:872 +#: ../src/dialogs.py:926 msgid "You can not join a group chat unless you are connected." -msgstr "Nemôžete sa pripojiÅ¥ do diskusnej skupiny, pokiaľ nie ste prihlásený(á)" +msgstr "" +"Nemôžete sa pripojiÅ¥ do diskusnej skupiny, pokiaľ nie ste prihlásený(á)" -#: ../src/dialogs.py:885 +#: ../src/dialogs.py:939 #, python-format msgid "Join Group Chat with account %s" -msgstr "PripojiÅ¥ do diskusnej skupiny s úÄtom %s" +msgstr "PripojiÅ¥ sa ku skupinovému rozhovoru s úÄtom %s" -#: ../src/dialogs.py:887 -#: ../src/gtkgui.glade.h:177 -msgid "Join Group Chat" -msgstr "PripojiÅ¥ do diskusnej skupiny" - -#: ../src/dialogs.py:976 +#: ../src/dialogs.py:1030 msgid "Invalid room or server name" -msgstr "Nesprávne meno miestnosti alebo serveru" +msgstr "Nesprávny názov miestnosti alebo serveru" -#: ../src/dialogs.py:977 +#: ../src/dialogs.py:1031 msgid "The room name or server name has not allowed characters." -msgstr "Meno miestnosti alebo meno servera obsahuje nepovolené znaky" +msgstr "Názov miestnosti alebo meno servera obsahuje nepovolené znaky" -#: ../src/dialogs.py:996 +#: ../src/dialogs.py:1050 #, python-format msgid "Start Chat with account %s" msgstr "ZaÄaÅ¥ rozhovor s úÄtom %s" -#: ../src/dialogs.py:998 +#: ../src/dialogs.py:1052 msgid "Start Chat" msgstr "ZaÄaÅ¥ rozhovor" -#: ../src/dialogs.py:999 +#: ../src/dialogs.py:1053 +#, fuzzy msgid "" -"Fill in the contact ID of the contact you would like\n" +"Fill in the jid, or nick of the contact you would like\n" "to send a chat message to:" msgstr "" "Vyplnte ID kontaktu, ktorému chcete\n" "odoslaÅ¥ správu:" #. if offline or connecting -#: ../src/dialogs.py:1007 -#: ../src/dialogs.py:1330 -#: ../src/dialogs.py:1450 +#: ../src/dialogs.py:1078 ../src/dialogs.py:1427 ../src/dialogs.py:1551 msgid "Connection not available" msgstr "Pripojenie nie je dostupné" -#: ../src/dialogs.py:1008 -#: ../src/dialogs.py:1331 -#: ../src/dialogs.py:1451 +#: ../src/dialogs.py:1079 ../src/dialogs.py:1428 ../src/dialogs.py:1552 #, python-format msgid "Please make sure you are connected with \"%s\"." msgstr "Prosím, uistite sa, že ste pripojený(á) k \"%s\"." -#: ../src/dialogs.py:1018 +#: ../src/dialogs.py:1088 ../src/dialogs.py:1091 +#, fuzzy +msgid "Invalid JID" +msgstr "Nespravné Jabber ID" + +#: ../src/dialogs.py:1091 +#, python-format +msgid "Unable to parse \"%s\"." +msgstr "" + +#: ../src/dialogs.py:1100 msgid "Without a connection, you can not change your password." msgstr "Bez pripojenia nemôžete meniÅ¥ heslo." -#: ../src/dialogs.py:1037 +#: ../src/dialogs.py:1119 msgid "You must enter a password." msgstr "Musíte vložiÅ¥ heslo." #. img to display #. default value -#: ../src/dialogs.py:1083 -#: ../src/gajim.py:443 -#: ../src/notify.py:129 +#: ../src/dialogs.py:1165 ../src/notify.py:126 ../src/notify.py:268 msgid "Contact Signed In" -msgstr "Kontakt sa pripojil" +msgstr "Kontakt sa prihlasil" -#: ../src/dialogs.py:1085 -#: ../src/gajim.py:474 -#: ../src/notify.py:131 +#: ../src/dialogs.py:1167 ../src/notify.py:134 ../src/notify.py:270 msgid "Contact Signed Out" -msgstr "Kontakt sa odpojil" +msgstr "Kontakt sa odhlásil" #. chat message -#: ../src/dialogs.py:1087 -#: ../src/gajim.py:609 -#: ../src/notify.py:133 +#: ../src/dialogs.py:1169 ../src/notify.py:154 ../src/notify.py:272 msgid "New Message" msgstr "Nová správa" #. single message -#: ../src/dialogs.py:1087 -#: ../src/gajim.py:603 -#: ../src/notify.py:133 +#: ../src/dialogs.py:1169 ../src/notify.py:138 ../src/notify.py:272 msgid "New Single Message" -msgstr "Nová krátka správa" +msgstr "Nová jednoduchá správa" -#: ../src/dialogs.py:1088 -#: ../src/gajim.py:586 -#: ../src/notify.py:134 +#. private message +#: ../src/dialogs.py:1170 ../src/notify.py:145 ../src/notify.py:273 msgid "New Private Message" msgstr "Nová privátna správa" -#: ../src/dialogs.py:1088 -#: ../src/gajim.py:1049 -#: ../src/notify.py:142 +#: ../src/dialogs.py:1170 ../src/gajim.py:1044 ../src/notify.py:281 msgid "New E-mail" msgstr "Nový E-mail" -#: ../src/dialogs.py:1090 -#: ../src/gajim.py:1187 -#: ../src/notify.py:136 +#: ../src/dialogs.py:1172 ../src/gajim.py:1187 ../src/notify.py:275 msgid "File Transfer Request" msgstr "Požiadavka na prenos súboru" -#: ../src/dialogs.py:1092 -#: ../src/gajim.py:1035 -#: ../src/gajim.py:1164 -#: ../src/notify.py:138 +#: ../src/dialogs.py:1174 ../src/gajim.py:1022 ../src/gajim.py:1164 +#: ../src/notify.py:277 msgid "File Transfer Error" msgstr "Chyba pri prenose súboru" -#: ../src/dialogs.py:1094 -#: ../src/gajim.py:1222 -#: ../src/gajim.py:1244 -#: ../src/gajim.py:1261 -#: ../src/notify.py:140 +#: ../src/dialogs.py:1176 ../src/gajim.py:1222 ../src/gajim.py:1244 +#: ../src/gajim.py:1261 ../src/notify.py:279 msgid "File Transfer Completed" msgstr "Prenos súboru dokonÄený" -#: ../src/dialogs.py:1095 -#: ../src/gajim.py:1225 -#: ../src/notify.py:140 +#: ../src/dialogs.py:1177 ../src/gajim.py:1225 ../src/notify.py:279 msgid "File Transfer Stopped" msgstr "Prenos súboru zastavený" -#: ../src/dialogs.py:1097 -#: ../src/gajim.py:953 -#: ../src/notify.py:144 +#: ../src/dialogs.py:1179 ../src/gajim.py:920 ../src/notify.py:283 +#, fuzzy msgid "Groupchat Invitation" -msgstr "Pozvánka do skupinovej diskusie" +msgstr "?Skupinová diskusia - rola: NiÄ" + +#: ../src/dialogs.py:1181 ../src/notify.py:118 ../src/notify.py:285 +#, fuzzy +msgid "Contact Changed Status" +msgstr "Kontakt sa odhlásil" #. FIXME: for Received with should become 'in' -#: ../src/dialogs.py:1262 +#: ../src/dialogs.py:1359 #, python-format msgid "Single Message with account %s" -msgstr "Krátka správa s úÄtom %s" +msgstr "Jednoduchá správa s úÄtom %s" -#: ../src/dialogs.py:1264 +#: ../src/dialogs.py:1361 msgid "Single Message" -msgstr "Krátka správa" +msgstr "Jednoduchá správa" #. prepare UI for Sending -#: ../src/dialogs.py:1267 +#: ../src/dialogs.py:1364 #, python-format msgid "Send %s" msgstr "PoslaÅ¥ %s" #. prepare UI for Receiving -#: ../src/dialogs.py:1290 +#: ../src/dialogs.py:1387 #, python-format msgid "Received %s" msgstr "Prijatý %s" #. we create a new blank window to send and we preset RE: and to jid -#: ../src/dialogs.py:1355 +#: ../src/dialogs.py:1454 #, python-format msgid "RE: %s" msgstr "RE: %s" -#: ../src/dialogs.py:1356 +#: ../src/dialogs.py:1455 #, python-format msgid "%s wrote:\n" msgstr "%s napísal:\n" -#: ../src/dialogs.py:1400 +#: ../src/dialogs.py:1499 #, python-format msgid "XML Console for %s" msgstr "XML konzola pre %s" -#: ../src/dialogs.py:1402 +#: ../src/dialogs.py:1501 msgid "XML Console" msgstr "XML konzola" +#: ../src/dialogs.py:1620 +#, python-format +msgid "Privacy List %s" +msgstr "" + +#: ../src/dialogs.py:1624 +#, python-format +msgid "Privacy List for %s" +msgstr "" + +#: ../src/dialogs.py:1716 +#, fuzzy +msgid "Edit a rule" +msgstr "Formát riadku rozhovoru" + +#: ../src/dialogs.py:1801 +#, fuzzy +msgid "Add a rule" +msgstr "Formát riadku rozhovoru" + +#: ../src/dialogs.py:1897 +#, python-format +msgid "Privacy Lists for %s" +msgstr "" + +#: ../src/dialogs.py:1899 +#, fuzzy +msgid "Privacy Lists" +msgstr "Súkromné rozhovory" + #. FIXME: use nickname instead of contact_jid -#: ../src/dialogs.py:1488 +#: ../src/dialogs.py:1988 #, python-format msgid "%(contact_jid)s has invited you to %(room_jid)s room" -msgstr "%(contact_jid)s Vás pozval do %(room_jid)s miestnosti" +msgstr "%(contact_jid)s vás pozval do miestnosti %(room_jid)s" #. only if not None and not '' -#: ../src/dialogs.py:1494 +#: ../src/dialogs.py:1994 #, python-format msgid "Comment: %s" msgstr "Komentár: %s" -#: ../src/dialogs.py:1554 +#: ../src/dialogs.py:2054 msgid "Choose Sound" msgstr "VybraÅ¥ zvuk" -#: ../src/dialogs.py:1564 -#: ../src/dialogs.py:1607 +#: ../src/dialogs.py:2064 ../src/dialogs.py:2107 msgid "All files" msgstr "VÅ¡etky súbory" -#: ../src/dialogs.py:1569 +#: ../src/dialogs.py:2069 msgid "Wav Sounds" -msgstr "Wav zvuk" +msgstr "Wav zvuky" -#: ../src/dialogs.py:1597 +#: ../src/dialogs.py:2097 msgid "Choose Image" msgstr "Vyberte obrázok" -#: ../src/dialogs.py:1612 +#: ../src/dialogs.py:2112 msgid "Images" msgstr "Obrázky" -#: ../src/dialogs.py:1658 +#: ../src/dialogs.py:2157 #, python-format msgid "When %s becomes:" -msgstr "KeÄ %s bude:" +msgstr "KeÄ %s sa stane:" -#: ../src/dialogs.py:1660 +#: ../src/dialogs.py:2159 #, python-format msgid "Adding Special Notification for %s" -msgstr "Pridanie Å¡peciálneho upozornenia pre %s" +msgstr "PridaÅ¥ Å¡peciálne na %s" -#: ../src/disco.py:117 +#: ../src/dialogs.py:2232 +#, fuzzy +msgid "Condition" +msgstr "Spojenie" + +#: ../src/disco.py:108 msgid "Others" msgstr "Ostatný" #. conference is a category for listing mostly groupchats in service discovery -#: ../src/disco.py:121 +#: ../src/disco.py:112 msgid "Conference" msgstr "Konferencia" -#: ../src/disco.py:420 +#: ../src/disco.py:411 msgid "Without a connection, you can not browse available services" msgstr "Bez pripojenia, nemôžete prehľadávaÅ¥ dostupné služby" -#: ../src/disco.py:499 +#: ../src/disco.py:490 #, python-format msgid "Service Discovery using account %s" msgstr "Prehľadávanie služieb s použitím úÄtu %s" -#: ../src/disco.py:500 +#: ../src/disco.py:491 msgid "Service Discovery" msgstr "Prehľadávanie služieb" -#: ../src/disco.py:637 +#: ../src/disco.py:628 msgid "The service could not be found" msgstr "Služba nebola nájdená" -#: ../src/disco.py:638 -msgid "There is no service at the address you entered, or it is not responding. Check the address and try again." -msgstr "Nie je k dispozícii žiadna služba na zadanej adrese alebo neodpovedá. Skontrolujte adresu a skúste neskôr." +#: ../src/disco.py:629 +msgid "" +"There is no service at the address you entered, or it is not responding. " +"Check the address and try again." +msgstr "" +"Žiadna služba Nie je k dispozícii na zadanej adrese alebo neodpovedá. " +"Skontrolujte adresu a skúste opäť." -#: ../src/disco.py:642 -#: ../src/disco.py:924 +#: ../src/disco.py:633 ../src/disco.py:915 msgid "The service is not browsable" -msgstr "Služba nie je prechádzateľná" +msgstr "Služba nie je prehľadávateľná" -#: ../src/disco.py:643 +#: ../src/disco.py:634 msgid "This type of service does not contain any items to browse." -msgstr "Tento typ služby neobsahuje žiadne položky na prechádzanie." +msgstr "Tento typ služby neobsahuje žiadne položky na prehľadávanie." -#: ../src/disco.py:723 +#: ../src/disco.py:714 #, python-format msgid "Browsing %s using account %s" -msgstr "PrechádzaÅ¥ %s s použitím úÄtu %s" +msgstr "Prehľadávanie %s s použitím úÄtu %s" -#: ../src/disco.py:762 +#: ../src/disco.py:753 msgid "_Browse" -msgstr "_PrechádzaÅ¥" +msgstr "_PrehľadávaÅ¥" -#: ../src/disco.py:925 +#: ../src/disco.py:916 msgid "This service does not contain any items to browse." msgstr "Táto služba neobsahuje žiadne položky." -#: ../src/disco.py:1146 -#: ../src/disco.py:1263 +#: ../src/disco.py:1137 ../src/disco.py:1254 msgid "Re_gister" msgstr "Re_gistrácia" -#: ../src/disco.py:1154 -#: ../src/disco.py:1516 -#: ../src/gtkgui.glade.h:350 -msgid "_Join" -msgstr "_PripojiÅ¥" - -#: ../src/disco.py:1261 -#: ../src/gtkgui.glade.h:334 -#: ../src/roster_window.py:1462 -msgid "_Edit" -msgstr "_UpraviÅ¥" - -#: ../src/disco.py:1300 +#: ../src/disco.py:1291 #, python-format msgid "Scanning %d / %d.." msgstr "Prieskum %d / %d.." #. Users column -#: ../src/disco.py:1482 +#: ../src/disco.py:1473 msgid "Users" msgstr "Používatelia" #. Description column -#: ../src/disco.py:1489 +#: ../src/disco.py:1480 msgid "Description" msgstr "Popis" -#: ../src/filetransfers_window.py:81 +#: ../src/filetransfers_window.py:72 msgid "File" msgstr "Súbor" -#: ../src/filetransfers_window.py:96 +#: ../src/filetransfers_window.py:87 msgid "Time" msgstr "ÄŒas" -#: ../src/filetransfers_window.py:108 +#: ../src/filetransfers_window.py:99 msgid "Progress" msgstr "Stav" -#: ../src/filetransfers_window.py:176 -#: ../src/filetransfers_window.py:238 +#: ../src/filetransfers_window.py:163 ../src/filetransfers_window.py:223 #, python-format msgid "Filename: %s" -msgstr "Meno súboru: %s" +msgstr "Názov súboru: %s" -#: ../src/filetransfers_window.py:178 -#: ../src/filetransfers_window.py:308 +#: ../src/filetransfers_window.py:164 ../src/filetransfers_window.py:291 #, python-format msgid "Size: %s" msgstr "VeľkosÅ¥: %s" #. You is a reply of who sent a file #. You is a reply of who received a file -#: ../src/filetransfers_window.py:187 -#: ../src/filetransfers_window.py:197 -#: ../src/history_manager.py:452 +#: ../src/filetransfers_window.py:173 ../src/filetransfers_window.py:183 +#: ../src/history_manager.py:454 msgid "You" msgstr "Vy" -#: ../src/filetransfers_window.py:188 -#: ../src/filetransfers_window.py:240 +#: ../src/filetransfers_window.py:174 ../src/filetransfers_window.py:224 #, python-format msgid "Sender: %s" msgstr "Odosielateľ: %s" -#: ../src/filetransfers_window.py:189 -#: ../src/filetransfers_window.py:555 -#: ../src/tooltips.py:617 +#: ../src/filetransfers_window.py:175 ../src/filetransfers_window.py:556 +#: ../src/tooltips.py:639 msgid "Recipient: " msgstr "Príjemca:" -#: ../src/filetransfers_window.py:200 +#: ../src/filetransfers_window.py:186 #, python-format msgid "Saved in: %s" msgstr "Uložené do: %s" -#: ../src/filetransfers_window.py:203 +#: ../src/filetransfers_window.py:188 msgid "File transfer completed" msgstr "Prenos súboru dokonÄený" -#: ../src/filetransfers_window.py:205 -#: ../src/gtkgui.glade.h:366 -msgid "_Open Containing Folder" -msgstr "_OtvoriÅ¥ adresár" - -#: ../src/filetransfers_window.py:219 -#: ../src/filetransfers_window.py:227 +#: ../src/filetransfers_window.py:204 ../src/filetransfers_window.py:212 msgid "File transfer canceled" msgstr "Prenos súboru bol zruÅ¡ený" -#: ../src/filetransfers_window.py:219 -#: ../src/filetransfers_window.py:228 +#: ../src/filetransfers_window.py:204 ../src/filetransfers_window.py:213 msgid "Connection with peer cannot be established." msgstr "Spojenie s druhou stranou nie je možné nadviazaÅ¥." -#: ../src/filetransfers_window.py:242 +#: ../src/filetransfers_window.py:225 msgid "File transfer stopped by the contact of the other side" msgstr "Prenos súboru bol zastavený druhou stranou" -#: ../src/filetransfers_window.py:259 +#: ../src/filetransfers_window.py:242 msgid "Choose File to Send..." msgstr "Vyberte súbor na odoslanie..." -#. Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector) -#: ../src/filetransfers_window.py:266 -#: ../src/gtkgui.glade.h:390 -msgid "_Send" -msgstr "_PoslaÅ¥" - -#: ../src/filetransfers_window.py:273 +#: ../src/filetransfers_window.py:256 msgid "Gajim cannot access this file" -msgstr "Gajim nemôže pracovaÅ¥ s týmto súborom" +msgstr "Gajim nemôže pristupovaÅ¥ k tomuto súboru" -#: ../src/filetransfers_window.py:274 +#: ../src/filetransfers_window.py:257 msgid "This file is being used by another process." msgstr "Tento súbor je používaný iným procesom." -#: ../src/filetransfers_window.py:306 +#: ../src/filetransfers_window.py:289 #, python-format msgid "File: %s" msgstr "Súbor: %s" -#: ../src/filetransfers_window.py:311 +#: ../src/filetransfers_window.py:294 #, python-format msgid "Type: %s" msgstr "Typ: %s" -#: ../src/filetransfers_window.py:313 +#: ../src/filetransfers_window.py:296 #, python-format msgid "Description: %s" msgstr "Popis: %s" -#: ../src/filetransfers_window.py:314 +#: ../src/filetransfers_window.py:297 #, python-format msgid "%s wants to send you a file:" msgstr "%s vám chce poslaÅ¥ súbor:" -#: ../src/filetransfers_window.py:329 +#: ../src/filetransfers_window.py:311 +#, python-format +msgid "Cannot overwrite existing file \"%s\"" +msgstr "" + +#: ../src/filetransfers_window.py:312 +msgid "" +"A file with this name already exists and you do not have permission to " +"overwrite it." +msgstr "" + +#: ../src/filetransfers_window.py:319 ../src/gtkgui_helpers.py:685 msgid "This file already exists" msgstr "Tento súbor už existuje" -#: ../src/filetransfers_window.py:329 +#: ../src/filetransfers_window.py:319 ../src/gtkgui_helpers.py:685 msgid "What do you want to do?" msgstr "ÄŒo si prajete vykonaÅ¥?" -#: ../src/filetransfers_window.py:344 +#: ../src/filetransfers_window.py:331 +#, python-format +msgid "Directory \"%s\" is not writable" +msgstr "" + +#: ../src/filetransfers_window.py:331 +msgid "You do not have permission to create files in this directory." +msgstr "" + +#: ../src/filetransfers_window.py:341 msgid "Save File as..." -msgstr "UložiÅ¥ ako..." +msgstr "UložiÅ¥ súbor ako..." #. Print remaining time in format 00:00:00 #. You can change the places of (hours), (minutes), (seconds) - #. they are not translatable. -#: ../src/filetransfers_window.py:419 +#: ../src/filetransfers_window.py:420 #, python-format msgid "%(hours)02.d:%(minutes)02.d:%(seconds)02.d" msgstr "%(hours)02.d:%(minutes)02.d:%(seconds)02.d" @@ -1145,264 +3250,308 @@ msgstr "%(hours)02.d:%(minutes)02.d:%(seconds)02.d" #. This should make the string Kb/s, #. where 'Kb' part is taken from %s. #. Only the 's' after / (which means second) should be translated. -#: ../src/filetransfers_window.py:491 +#: ../src/filetransfers_window.py:492 #, python-format msgid "(%(filesize_unit)s/s)" msgstr "(%(filesize_unit)s/s)" -#: ../src/filetransfers_window.py:527 -#: ../src/filetransfers_window.py:530 +#: ../src/filetransfers_window.py:528 ../src/filetransfers_window.py:531 msgid "Invalid File" msgstr "Nesprávny súbor" -#: ../src/filetransfers_window.py:527 +#: ../src/filetransfers_window.py:528 msgid "File: " -msgstr "Súbor:" +msgstr "Súbor: " -#: ../src/filetransfers_window.py:531 +#: ../src/filetransfers_window.py:532 msgid "It is not possible to send empty files" msgstr "Nie je možné poslaÅ¥ prázdne súbory" -#: ../src/filetransfers_window.py:551 -#: ../src/tooltips.py:498 -#: ../src/tooltips.py:607 +#: ../src/filetransfers_window.py:552 ../src/tooltips.py:511 +#: ../src/tooltips.py:629 msgid "Name: " -msgstr "Meno:" +msgstr "Meno: " -#: ../src/filetransfers_window.py:553 -#: ../src/tooltips.py:611 +#: ../src/filetransfers_window.py:554 ../src/tooltips.py:633 msgid "Sender: " -msgstr "Odosielateľ:" +msgstr "Odosielateľ: " #: ../src/filetransfers_window.py:742 msgid "Pause" msgstr "Pauza" -#: ../src/filetransfers_window.py:753 -#: ../src/gtkgui.glade.h:328 -msgid "_Continue" -msgstr "_PokraÄovaÅ¥" - -#: ../src/gajim-remote.py:84 +#: ../src/gajim-remote.py:82 msgid "shows a help on specific command" -msgstr "ukáž dokumentáciu pre Å¡pecifikovaný príkaz" +msgstr "ukáže pomoc pre konkrétný príkaz" #. User gets help for the command, specified by this parameter -#: ../src/gajim-remote.py:87 +#: ../src/gajim-remote.py:85 msgid "command" msgstr "príkaz" -#: ../src/gajim-remote.py:88 +#: ../src/gajim-remote.py:86 msgid "show help on command" msgstr "ukáž pomoc pre príkaz" -#: ../src/gajim-remote.py:92 +#: ../src/gajim-remote.py:90 msgid "Shows or hides the roster window" msgstr "UkázaÅ¥ alebo skryÅ¥ okno so zoznamom" -#: ../src/gajim-remote.py:96 +#: ../src/gajim-remote.py:94 msgid "Popups a window with the next unread message" msgstr "Zobraz popup okno s ÄalÅ¡ou nepreÄítanou správou" -#: ../src/gajim-remote.py:100 -msgid "Prints a list of all contacts in the roster. Each contact appear on a separate line" -msgstr "VytlaÄiÅ¥ zoznam vÅ¡etkých kontaktov v zozname. Každý kontakt bude na samostatnom riadku" +#: ../src/gajim-remote.py:98 +msgid "" +"Prints a list of all contacts in the roster. Each contact appear on a " +"separate line" +msgstr "" +"Vypíše zoznam vÅ¡etkých kontaktov v zozname. Každý kontakt bude na " +"samostatnom riadku" -#: ../src/gajim-remote.py:102 -#: ../src/gajim-remote.py:115 -#: ../src/gajim-remote.py:125 -#: ../src/gajim-remote.py:138 -#: ../src/gajim-remote.py:159 -#: ../src/gajim-remote.py:189 -#: ../src/gajim-remote.py:197 -#: ../src/gajim-remote.py:204 -#: ../src/gajim-remote.py:211 +#: ../src/gajim-remote.py:100 ../src/gajim-remote.py:114 +#: ../src/gajim-remote.py:124 ../src/gajim-remote.py:137 +#: ../src/gajim-remote.py:151 ../src/gajim-remote.py:172 +#: ../src/gajim-remote.py:202 ../src/gajim-remote.py:211 +#: ../src/gajim-remote.py:218 ../src/gajim-remote.py:225 +#: ../src/gajim-remote.py:236 msgid "account" msgstr "úÄet" -#: ../src/gajim-remote.py:102 +#: ../src/gajim-remote.py:100 msgid "show only contacts of the given account" msgstr "zobraziÅ¥ len kontakty daného úÄtu" -#: ../src/gajim-remote.py:107 +#: ../src/gajim-remote.py:105 msgid "Prints a list of registered accounts" -msgstr "VytlaÄiÅ¥ zoznam registrovaných úÄtov" +msgstr "Vypíše zoznam registrovaných úÄtov" -#: ../src/gajim-remote.py:111 +#: ../src/gajim-remote.py:109 msgid "Changes the status of account or accounts" msgstr "ZmeniÅ¥ stav úÄtu alebo úÄtov" -#: ../src/gajim-remote.py:113 +#. offline, online, chat, away, xa, dnd, invisible should not be translated +#: ../src/gajim-remote.py:112 msgid "status" msgstr "stav" -#: ../src/gajim-remote.py:113 +#: ../src/gajim-remote.py:112 msgid "one of: offline, online, chat, away, xa, dnd, invisible " -msgstr "jeden z: offline, online, chat, preÄ, diskutovaÅ¥, zaneprázdnený, neviditeľný" +msgstr "" +"jeden z: offline, online, chat, preÄ, diskutovaÅ¥, zaneprázdnený, neviditeľný" -#: ../src/gajim-remote.py:114 -#: ../src/gajim-remote.py:135 +#: ../src/gajim-remote.py:113 ../src/gajim-remote.py:134 +#: ../src/gajim-remote.py:148 msgid "message" msgstr "správa" -#: ../src/gajim-remote.py:114 +#: ../src/gajim-remote.py:113 msgid "status message" msgstr "správa o stave" -#: ../src/gajim-remote.py:115 -msgid "change status of account \"account\". If not specified, try to change status of all accounts that have \"sync with global status\" option set" -msgstr "zmeniÅ¥ stav úÄtu \"úÄet\". Ak nie je Å¡pecifikovaný, pokús sa zmeniÅ¥ vÅ¡etky úÄty, ktoré majú nastavenú vlastnosÅ¥ \"synchronizácia s globálnym stavom\"" +#: ../src/gajim-remote.py:114 +msgid "" +"change status of account \"account\". If not specified, try to change status " +"of all accounts that have \"sync with global status\" option set" +msgstr "" +"zmeniÅ¥ stav úÄtu \"úÄet\". Ak nie je Å¡pecifikovaný, pokús sa zmeniÅ¥ vÅ¡etky " +"úÄty, ktoré majú nastavenú vlastnosÅ¥ \"synchronizácia s globálnym stavom\"" -#: ../src/gajim-remote.py:121 +#: ../src/gajim-remote.py:120 msgid "Shows the chat dialog so that you can send messages to a contact" msgstr "Zobrazí diskusné okno, takže môžete odoslaÅ¥ správu kontaktu" -#: ../src/gajim-remote.py:123 +#: ../src/gajim-remote.py:122 msgid "JID of the contact that you want to chat with" msgstr "JID kontaktu, s ktorým chcete komunikovaÅ¥" -#: ../src/gajim-remote.py:125 -#: ../src/gajim-remote.py:189 +#: ../src/gajim-remote.py:124 ../src/gajim-remote.py:202 msgid "if specified, contact is taken from the contact list of this account" msgstr "ak je Å¡pecifikované, kontakt je zobraný zo zoznamu pre tento úÄet" -#: ../src/gajim-remote.py:130 -msgid "Sends new message to a contact in the roster. Both OpenPGP key and account are optional. If you want to set only 'account', without 'OpenPGP key', just set 'OpenPGP key' to ''." -msgstr "PoslaÅ¥ novú správu kontaktu v zozname. Oboje OpenPGP kÄ¾ÃºÄ a úÄet sú nepovinné. Ak chcete nastaviÅ¥ iba 'úÄet', bez 'OpenPGP kľúÄa', nastavte 'OpenPGP kľúÄ' na ''" +#: ../src/gajim-remote.py:129 +#, fuzzy +msgid "" +"Sends new chat message to a contact in the roster. Both OpenPGP key and " +"account are optional. If you want to set only 'account', without 'OpenPGP " +"key', just set 'OpenPGP key' to ''." +msgstr "" +"PoslaÅ¥ novú správu kontaktu v zozname. Oboje OpenPGP kÄ¾ÃºÄ a úÄet sú " +"nepovinné. Ak chcete nastaviÅ¥ iba 'úÄet', bez 'OpenPGP kľúÄa', nastavte " +"'OpenPGP kľúÄ' na ''." -#: ../src/gajim-remote.py:134 +#: ../src/gajim-remote.py:133 ../src/gajim-remote.py:146 msgid "JID of the contact that will receive the message" msgstr "JID kontaktu, ktorý prijme správu" -#: ../src/gajim-remote.py:135 +#: ../src/gajim-remote.py:134 ../src/gajim-remote.py:148 msgid "message contents" msgstr "obsah správy" -#: ../src/gajim-remote.py:136 +#: ../src/gajim-remote.py:135 ../src/gajim-remote.py:149 msgid "pgp key" msgstr "pgp kľúÄ" -#: ../src/gajim-remote.py:136 +#: ../src/gajim-remote.py:135 ../src/gajim-remote.py:149 msgid "if specified, the message will be encrypted using this public key" -msgstr "ak je Å¡pecifikovaný, správa bude zaÅ¡ifrovaná s použitím verejného kľúÄa" +msgstr "" +"ak je Å¡pecifikovaný, správa bude zaÅ¡ifrovaná s použitím verejného kľúÄa" -#: ../src/gajim-remote.py:138 +#: ../src/gajim-remote.py:137 ../src/gajim-remote.py:151 msgid "if specified, the message will be sent using this account" msgstr "ak je Å¡pecifikovaný, správa bude odoslaná s použitím tohoto úÄtu" -#: ../src/gajim-remote.py:143 +#: ../src/gajim-remote.py:142 +#, fuzzy +msgid "" +"Sends new single message to a contact in the roster. Both OpenPGP key and " +"account are optional. If you want to set only 'account', without 'OpenPGP " +"key', just set 'OpenPGP key' to ''." +msgstr "" +"PoslaÅ¥ novú správu kontaktu v zozname. Oboje OpenPGP kÄ¾ÃºÄ a úÄet sú " +"nepovinné. Ak chcete nastaviÅ¥ iba 'úÄet', bez 'OpenPGP kľúÄa', nastavte " +"'OpenPGP kľúÄ' na ''." + +#: ../src/gajim-remote.py:147 +#, fuzzy +msgid "subject" +msgstr "Predmet:" + +#: ../src/gajim-remote.py:147 +#, fuzzy +msgid "message subject" +msgstr "Správa odoslaná" + +#: ../src/gajim-remote.py:156 msgid "Gets detailed info on a contact" msgstr "ZískaÅ¥ detailné informácie o kontakte" -#: ../src/gajim-remote.py:145 -#: ../src/gajim-remote.py:158 -#: ../src/gajim-remote.py:188 +#: ../src/gajim-remote.py:158 ../src/gajim-remote.py:171 +#: ../src/gajim-remote.py:201 ../src/gajim-remote.py:210 msgid "JID of the contact" msgstr "JID kontaktu" -#: ../src/gajim-remote.py:149 +#: ../src/gajim-remote.py:162 msgid "Gets detailed info on a account" -msgstr "Získa detailné informácie o kontakte" +msgstr "ZískaÅ¥ detailné informácie o úÄte" -#: ../src/gajim-remote.py:151 +#: ../src/gajim-remote.py:164 msgid "Name of the account" -msgstr "Meno úÄtu" +msgstr "Názov úÄtu" -#: ../src/gajim-remote.py:155 +#: ../src/gajim-remote.py:168 msgid "Sends file to a contact" msgstr "PoslaÅ¥ súbor kontaktu" -#: ../src/gajim-remote.py:157 +#: ../src/gajim-remote.py:170 msgid "file" msgstr "súbor" -#: ../src/gajim-remote.py:157 +#: ../src/gajim-remote.py:170 msgid "File path" msgstr "Cesta k súboru" -#: ../src/gajim-remote.py:159 +#: ../src/gajim-remote.py:172 msgid "if specified, file will be sent using this account" -msgstr "ak je Å¡pecifikovaný, súbor bude odoslaný pod týmto úÄtom" +msgstr "ak je Å¡pecifikovaný, súbor bude odoslaný s použitím tohto úÄtom" -#: ../src/gajim-remote.py:164 +#: ../src/gajim-remote.py:177 msgid "Lists all preferences and their values" -msgstr "Výpis vÅ¡etkých nastavení a hodnôt" +msgstr "Výpis vÅ¡etkých nastavení a ich hodnôt" -#: ../src/gajim-remote.py:168 +#: ../src/gajim-remote.py:181 msgid "Sets value of 'key' to 'value'." -msgstr "NastaviÅ¥ hodnotu 'kľúÄa' na 'hodnotu'." +msgstr "Nastavuje hodnotu 'kľúÄa' na 'hodnotu'." -#: ../src/gajim-remote.py:170 +#: ../src/gajim-remote.py:183 msgid "key=value" msgstr "kľúÄ=hodnota" -#: ../src/gajim-remote.py:170 +#: ../src/gajim-remote.py:183 msgid "'key' is the name of the preference, 'value' is the value to set it to" -msgstr "'kľúÄ' je meno vlastnosti, 'hodnota' je hodnota, na ktorú má byÅ¥ nastavený" +msgstr "" +"'kľúÄ' je meno vlastnosti, 'hodnota' je hodnota, na ktorú má byÅ¥ nastavený" -#: ../src/gajim-remote.py:175 +#: ../src/gajim-remote.py:188 msgid "Deletes a preference item" msgstr "ZmazaÅ¥ položku z nastavenia" -#: ../src/gajim-remote.py:177 +#: ../src/gajim-remote.py:190 msgid "key" msgstr "kľúÄ" -#: ../src/gajim-remote.py:177 +#: ../src/gajim-remote.py:190 msgid "name of the preference to be deleted" -msgstr "meno nastavenia bolo zmazané" +msgstr "názov nastavenia ktoré má byÅ¥ zmazané" -#: ../src/gajim-remote.py:181 +#: ../src/gajim-remote.py:194 msgid "Writes the current state of Gajim preferences to the .config file" -msgstr "Zapíš aktuálny stav Gajimu do súboru s nastavením .config" +msgstr "Zapíše aktuálny stav nastavení programu Gajim do súboru .config" -#: ../src/gajim-remote.py:186 +#: ../src/gajim-remote.py:199 msgid "Removes contact from roster" -msgstr "OdstrániÅ¥ kontakt zo zoznamu" +msgstr "Odstráni kontakt zo zoznamu" -#: ../src/gajim-remote.py:195 +#: ../src/gajim-remote.py:208 msgid "Adds contact to roster" -msgstr "PridaÅ¥ kontakt do zoznamu" +msgstr "Pridá kontakt do zoznamu" -#: ../src/gajim-remote.py:197 -msgid "Adds new contact to this account." -msgstr "PridaÅ¥ nový kontakt pre tento úÄet" +#: ../src/gajim-remote.py:210 +msgid "jid" +msgstr "" -#: ../src/gajim-remote.py:202 -msgid "Returns current status (the global one unless account is specified)" -msgstr "VrátiÅ¥ aktuálny stav (použije sa globálny, pokiaľ nie je vybraný úÄet)" - -#: ../src/gajim-remote.py:209 -msgid "Returns current status message(the global one unless account is specified)" -msgstr "VrátiÅ¥ aktuálnu správu o stave (použije sa globálny, pokiaľ nie je vybraný úÄet)" +#: ../src/gajim-remote.py:211 +#, fuzzy +msgid "Adds new contact to this account" +msgstr "Pridá nový kontakt pre tento úÄet" #: ../src/gajim-remote.py:216 +msgid "Returns current status (the global one unless account is specified)" +msgstr "Vráti aktuálny stav (použije sa globálny, pokiaľ nie je vybraný úÄet)" + +#: ../src/gajim-remote.py:223 +msgid "" +"Returns current status message(the global one unless account is specified)" +msgstr "" +"Vráti aktuálnu správu o stave (použije sa globálny, pokiaľ nie je vybraný " +"úÄet)" + +#: ../src/gajim-remote.py:230 msgid "Returns number of unreaded messages" msgstr "Vráti poÄet nepreÄítaných správ" +#: ../src/gajim-remote.py:234 +msgid "Open 'Start Chat' dialog" +msgstr "" + #: ../src/gajim-remote.py:236 +#, fuzzy +msgid "Starts chat, using this account" +msgstr "ZaÄaÅ¥ rozhovor s úÄtom %s" + +#: ../src/gajim-remote.py:256 msgid "Missing argument \"contact_jid\"" msgstr "Chýbajúci argument \"contact_jid\"" -#: ../src/gajim-remote.py:255 +#: ../src/gajim-remote.py:275 #, python-format msgid "" "'%s' is not in your roster.\n" "Please specify account for sending the message." msgstr "" "'%s' nie je vo vaÅ¡om zozname.\n" -"Prosím, Å¡pecifikujte úÄet, ktorému správu posielate." +"Prosím, Å¡pecifikujte úÄet, z ktorého odoslaÅ¥ správu." -#: ../src/gajim-remote.py:258 +#: ../src/gajim-remote.py:278 msgid "You have no active account" msgstr "Nemáte žiadny aktívny úÄet" -#: ../src/gajim-remote.py:301 +#: ../src/gajim-remote.py:321 #, python-format msgid "Unknown D-Bus version: %s" -msgstr "Neznáma D-Bus verzia: %s" +msgstr "Neznáma verzia D-Bus: %s" -#: ../src/gajim-remote.py:328 +#: ../src/gajim-remote.py:348 #, python-format msgid "" "Usage: %s %s %s \n" @@ -1411,16 +3560,16 @@ msgstr "" "Použitie: %s %s %s \n" "\t %s" -#: ../src/gajim-remote.py:331 +#: ../src/gajim-remote.py:351 msgid "Arguments:" msgstr "Argumenty:" -#: ../src/gajim-remote.py:335 +#: ../src/gajim-remote.py:355 #, python-format msgid "%s not found" msgstr "%s nenájdený" -#: ../src/gajim-remote.py:339 +#: ../src/gajim-remote.py:359 #, python-format msgid "" "Usage: %s command [arguments]\n" @@ -1429,7 +3578,7 @@ msgstr "" "Použitie: %s príkaz [argumenty]\n" "Príkaz je jeden z:\n" -#: ../src/gajim-remote.py:413 +#: ../src/gajim-remote.py:433 #, python-format msgid "" "Argument \"%s\" is not specified. \n" @@ -1440,134 +3589,121 @@ msgstr "" #: ../src/gajim.py:48 msgid "Gajim needs Xserver to run. Quiting..." -msgstr "Gajim potrebuje Xserver pre svoj beh. UkonÄenie..." +msgstr "Gajim potrebuje Xserver pre svoj beh. UkonÄujem..." #: ../src/gajim.py:52 msgid "Gajim needs PyGTK 2.6 or above" -msgstr "Gajim potrebuje PyGTK 2.6+ alebo novÅ¡iu" +msgstr "Gajim potrebuje PyGTK 2.6+ alebo novÅ¡ie" #: ../src/gajim.py:53 msgid "Gajim needs PyGTK 2.6 or above to run. Quiting..." -msgstr "Gajim potrebuje PyGTK 2.6+ alebo novÅ¡iu pre svoj beh. UkonÄenie..." +msgstr "Gajim potrebuje PyGTK 2.6+ alebo novÅ¡ie pre svoj beh. UkonÄujem..." #: ../src/gajim.py:55 msgid "Gajim needs GTK 2.6 or above" -msgstr "Gajim potrebuje GTK 2.6+ alebo novÅ¡ia" +msgstr "Gajim potrebuje GTK 2.6+ alebo novÅ¡ie" #: ../src/gajim.py:56 msgid "Gajim needs GTK 2.6 or above to run. Quiting..." -msgstr "Gajim potrebuje GTK 2.6+ alebo novÅ¡iu pre svoj beh. UkonÄenie..." +msgstr "Gajim potrebuje GTK 2.6+ alebo novÅ¡iu pre svoj beh. UkonÄujem..." #: ../src/gajim.py:61 msgid "GTK+ runtime is missing libglade support" -msgstr "GTK+ runtimu chýba podpora libglade" +msgstr "GTK+ prostredie nemá podporu libglade" #: ../src/gajim.py:63 #, python-format -msgid "Please remove your current GTK+ runtime and install the latest stable version from %s" -msgstr "Prosím, odstráňte vaÅ¡u aktuálnu verziu GTK+ prostredia a nainÅ¡talujte si poslednú stabilnú verziu z %s" +msgid "" +"Please remove your current GTK+ runtime and install the latest stable " +"version from %s" +msgstr "" +"Prosím, odstráňte vaÅ¡u aktuálnu verziu GTK+ prostredia a nainÅ¡talujte si " +"poslednú stabilnú verziu z %s" #: ../src/gajim.py:65 -msgid "Please make sure that GTK+ and PyGTK have libglade support in your system." -msgstr "Prosím, uistite sa, že GTK+ a PyGTK majú podporu pre libglade vo vaÅ¡om systéme." +msgid "" +"Please make sure that GTK+ and PyGTK have libglade support in your system." +msgstr "" +"Prosím, uistite sa, že GTK+ a PyGTK majú podporu pre libglade vo vaÅ¡om " +"systéme." #: ../src/gajim.py:70 msgid "Gajim needs PySQLite2 to run" -msgstr "Gajim potrebuje PySQLite2 pre svoj beh" +msgstr "Gajim potrebuje PySQLite2 pre svoj beh" -#: ../src/gajim.py:235 +#. set the icon to all newly opened wind +#: ../src/gajim.py:151 +msgid "Gajim is already running" +msgstr "" + +#: ../src/gajim.py:152 +msgid "" +"Another instance of Gajim seems to be running\n" +"Run anyway?" +msgstr "" + +#: ../src/gajim.py:267 #, python-format msgid "HTTP (%s) Authorization for %s (id: %s)" msgstr "HTTP (%s) Autorizácia pre %s (id: %s)" -#: ../src/gajim.py:236 +#: ../src/gajim.py:268 msgid "Do you accept this request?" msgstr "Akceptujete túto požiadavku?" -#: ../src/gajim.py:438 -#, python-format -msgid "%(nickname)s Signed In" -msgstr "%(nickname)s sa pripojil(a)" - -#: ../src/gajim.py:469 -#, python-format -msgid "%(nickname)s Signed Out" -msgstr "%(nickname)s sa odpojil(a)" - -#: ../src/gajim.py:583 -#, python-format -msgid "New Private Message from room %s" -msgstr "Nová súkromná správa z miestnosti %s" - -#: ../src/gajim.py:584 -#, python-format -msgid "%(nickname)s: %(message)s" -msgstr "%(nickname)s: %(message)s" - -#: ../src/gajim.py:606 -#, python-format -msgid "New Single Message from %(nickname)s" -msgstr "Nová krátka správa od %(nickname)s" - -#: ../src/gajim.py:612 -#, python-format -msgid "New Message from %(nickname)s" -msgstr "Nová správa od %(nickname)s" - -#: ../src/gajim.py:660 -#, python-format +#: ../src/gajim.py:611 +#, fuzzy, python-format msgid "error while sending %s ( %s )" -msgstr "chyba pri odosielaní %s ( %s )" +msgstr "chyba pri odosielaní" -#: ../src/gajim.py:700 +#: ../src/gajim.py:651 msgid "Authorization accepted" msgstr "Autorizácia akceptovaná" -#: ../src/gajim.py:701 +#: ../src/gajim.py:652 #, python-format msgid "The contact \"%s\" has authorized you to see his or her status." -msgstr "Kontakt \"%s\" bol autorizovaný, takže uvidíte jeho alebo jej stav." +msgstr "" +"Kontakt \"%s\" vás autorizoval, aby ste mohol(a) vidieÅ¥ jeho alebo jej stav." -#: ../src/gajim.py:709 +#: ../src/gajim.py:660 #, python-format msgid "Contact \"%s\" removed subscription from you" msgstr "Kontakt \"%s\" vás odobral zo svojho zoznamu" -#: ../src/gajim.py:710 +#: ../src/gajim.py:661 msgid "You will always see him or her as offline." msgstr "Vždy uvidíte jeho alebo ju ako offline." -#: ../src/gajim.py:736 +#: ../src/gajim.py:704 #, python-format msgid "Contact with \"%s\" cannot be established" msgstr "Spojenie s \"%s\" nie je možné nadviazaÅ¥" -#: ../src/gajim.py:737 -#: ../src/common/connection.py:349 +#: ../src/gajim.py:705 ../src/common/connection.py:398 msgid "Check your connection or try again later." msgstr "Skontrolujte svoje pripojenie alebo skúste neskôr." -#: ../src/gajim.py:874 -#: ../src/roster_window.py:1012 +#: ../src/gajim.py:849 ../src/roster_window.py:1025 #, python-format msgid "%s is now %s (%s)" msgstr "%s je teraz %s (%s)" -#: ../src/gajim.py:963 +#: ../src/gajim.py:930 msgid "Your passphrase is incorrect" msgstr "VaÅ¡a passfráza je nesprávna" -#: ../src/gajim.py:964 +#: ../src/gajim.py:931 msgid "You are currently connected without your OpenPGP key." -msgstr "Momentálne ste pripojení(á) bez vášho OpenPGP kľúÄa." +msgstr "Momentálne ste pripojený(á) bez vášho OpenPGP kľúÄa." #. FIXME: find a better image -#: ../src/gajim.py:1045 -#, python-format +#: ../src/gajim.py:1033 +#, fuzzy, python-format msgid "New E-mail on %(gmail_mail_address)s" -msgstr "Nový e-mail na %(gmail_mail_address)s" +msgstr "%(new_mail_gajim_ui_msg)s na %(gmail_mail_address)s" -#: ../src/gajim.py:1047 +#: ../src/gajim.py:1035 #, python-format msgid "You have %d new E-mail message" msgid_plural "You have %d new E-mail messages" @@ -1575,10 +3711,18 @@ msgstr[0] "Máte %d novú E-mailovú správu" msgstr[1] "Máte %d nových E-mailových správ" msgstr[2] "Máte %d nových E-mailových správ" +#. each message has a 'From', 'Subject' and 'Snippet' field +#: ../src/gajim.py:1040 +#, python-format +msgid "" +"\n" +"From: %(from_address)s" +msgstr "" + #: ../src/gajim.py:1185 #, python-format msgid "%s wants to send you a file." -msgstr "%s chce vám poslaÅ¥ súbor." +msgstr "%s vám chce poslaÅ¥ súbor." #: ../src/gajim.py:1245 #, python-format @@ -1615,2093 +3759,627 @@ msgid "vCard publication failed" msgstr "zverejnenia vCard zlyhalo" #: ../src/gajim.py:1304 -msgid "There was an error while publishing your personal information, try again later." -msgstr "Nastala chyba pri zverejňovaní vaÅ¡ich osobných údajov, skúste prosím neskôr." +msgid "" +"There was an error while publishing your personal information, try again " +"later." +msgstr "" +"Nastala chyba pri zverejňovaní vaÅ¡ich osobných údajov, skúste prosím neskôr." #. it is good to notify the user #. in case he or she cannot see the output of the console -#: ../src/gajim.py:1634 +#: ../src/gajim.py:1683 msgid "Could not save your settings and preferences" msgstr "Nie je možné uložiÅ¥ nastavenia." -#: ../src/gajim.py:1848 +#: ../src/gajim.py:1903 msgid "Session Management support not available (missing gnome.ui module)" -msgstr "Podpora Správy sedenia nie je dostupná (chýba gnome.ui modul)" +msgstr "Podpora Správy sedenia nie je dostupná (chýba modul gnome.ui)" -#: ../src/gajim.py:1878 +#: ../src/gajim.py:1932 msgid "Migrating Logs..." -msgstr "Presun záznamov histórie..." +msgstr "Presúvanie záznamov histórie..." -#: ../src/gajim.py:1879 +#: ../src/gajim.py:1933 msgid "Please wait while logs are being migrated..." msgstr "Prosím poÄkajte, pokým prebieha migrácia záznamov z komunikácie..." -#: ../src/gajim_themes_window.py:67 +#: ../src/gajim_themes_window.py:59 msgid "Theme" msgstr "Téma" #. don't confuse translators -#: ../src/gajim_themes_window.py:149 +#: ../src/gajim_themes_window.py:141 msgid "theme name" -msgstr "meno témy" +msgstr "názov témy" -#: ../src/gajim_themes_window.py:166 +#: ../src/gajim_themes_window.py:158 msgid "You cannot delete your current theme" msgstr "Nemôžete zmazaÅ¥ aktuálnu tému" -#: ../src/gajim_themes_window.py:167 +#: ../src/gajim_themes_window.py:159 msgid "Please first choose another for your current theme." msgstr "Prosím, vyberte najskôr inú tému." -#: ../src/groupchat_control.py:68 +#: ../src/groupchat_control.py:99 msgid "Private Chat" -msgstr "Súkromná diskusia" +msgstr "Súkromný rozhovor" -#: ../src/groupchat_control.py:68 +#: ../src/groupchat_control.py:99 msgid "Private Chats" -msgstr "Súkromné diskusie" +msgstr "Súkromné rozhovory" -#: ../src/groupchat_control.py:84 +#: ../src/groupchat_control.py:115 msgid "Sending private message failed" msgstr "Odoslanie súkromnej správy sa nepodarilo" #. in second %s code replaces with nickname -#: ../src/groupchat_control.py:86 +#: ../src/groupchat_control.py:117 #, python-format msgid "You are no longer in room \"%s\" or \"%s\" has left." -msgstr "Nie ste už pripojený(á) to miestnosti \"%s\" alebo \"%s\" odiÅ¡iel(a)." +msgstr "Nie ste už pripojený(á) do miestnosti \"%s\" alebo \"%s\" odiÅ¡iel(a)." -#: ../src/groupchat_control.py:98 +#: ../src/groupchat_control.py:129 msgid "Group Chat" msgstr "Skupinový rozhovor" -#: ../src/groupchat_control.py:98 +#: ../src/groupchat_control.py:129 msgid "Group Chats" -msgstr "Skupinová diskusia" +msgstr "Skupinové diskusie" -#: ../src/groupchat_control.py:595 +#: ../src/groupchat_control.py:308 +#, fuzzy +msgid "Insert Nickname" +msgstr "ZmeniÅ¥ _prezývku" + +#: ../src/groupchat_control.py:702 msgid "This room has no subject" msgstr "Táto miestnosÅ¥ nemá nastavenú tému" #. do not print 'kicked by None' -#: ../src/groupchat_control.py:693 +#: ../src/groupchat_control.py:801 #, python-format msgid "%(nick)s has been kicked: %(reason)s" msgstr "%(nick)s bol vykopnutý: %(reason)s" -#: ../src/groupchat_control.py:697 +#: ../src/groupchat_control.py:805 #, python-format msgid "%(nick)s has been kicked by %(who)s: %(reason)s" msgstr "%(nick)s bol vykopnutý - %(who)s: %(reason)s" #. do not print 'banned by None' -#: ../src/groupchat_control.py:704 +#: ../src/groupchat_control.py:812 #, python-format msgid "%(nick)s has been banned: %(reason)s" msgstr "%(nick)s bol zakázaný: %(reason)s" -#: ../src/groupchat_control.py:708 +#: ../src/groupchat_control.py:816 #, python-format msgid "%(nick)s has been banned by %(who)s: %(reason)s" msgstr "%(nick)s bol zakázaný - %(who)s: %(reason)s" -#: ../src/groupchat_control.py:716 +#: ../src/groupchat_control.py:824 #, python-format msgid "You are now known as %s" msgstr "Teraz ste známy(a) ako %s" -#: ../src/groupchat_control.py:718 +#: ../src/groupchat_control.py:826 #, python-format msgid "%s is now known as %s" msgstr "%s je známy(a) ako %s" -#: ../src/groupchat_control.py:757 +#: ../src/groupchat_control.py:897 #, python-format msgid "%s has left" msgstr "%s odiÅ¡iel" +#: ../src/groupchat_control.py:902 +#, python-format +msgid "%s has joined the room" +msgstr "" + #. No status message -#: ../src/groupchat_control.py:759 -#: ../src/roster_window.py:1015 +#: ../src/groupchat_control.py:904 ../src/roster_window.py:1028 #, python-format msgid "%s is now %s" msgstr "%s je teraz %s" -#: ../src/groupchat_control.py:871 -#: ../src/groupchat_control.py:888 -#: ../src/groupchat_control.py:981 -#: ../src/groupchat_control.py:997 +#: ../src/groupchat_control.py:1022 ../src/groupchat_control.py:1039 +#: ../src/groupchat_control.py:1132 ../src/groupchat_control.py:1148 #, python-format msgid "Nickname not found: %s" msgstr "Prezývka nenájdená: %s" -#: ../src/groupchat_control.py:915 +#: ../src/groupchat_control.py:1066 #, python-format msgid "Invited %(contact_jid)s to %(room_jid)s." msgstr "Pozvaný(á) %(contact_jid)s do %(room_jid)s." #. %s is something the user wrote but it is not a jid so we inform -#: ../src/groupchat_control.py:922 -#: ../src/groupchat_control.py:952 +#: ../src/groupchat_control.py:1073 ../src/groupchat_control.py:1103 #, python-format msgid "%s does not appear to be a valid JID" msgstr "%s nevyzerá ako správny JID" -#: ../src/groupchat_control.py:1019 +#: ../src/groupchat_control.py:1185 #, python-format msgid "No such command: /%s (if you want to send this, prefix it with /say)" -msgstr "Neznámy príkaz: /%s (ak chcete toto odoslaÅ¥, zaraÄte znak / pred to, Äo hovoríte)" +msgstr "" +"Neznámy príkaz: /%s (ak chcete toto odoslaÅ¥, zaraÄte /say pred to, Äo " +"hovoríte)" -#: ../src/groupchat_control.py:1041 +#: ../src/groupchat_control.py:1207 #, python-format msgid "Commands: %s" msgstr "Príkazy: %s" -#: ../src/groupchat_control.py:1043 +#: ../src/groupchat_control.py:1209 #, python-format -msgid "Usage: /%s [reason], bans the JID from the room. The nickname of an occupant may be substituted, but not if it contains \"@\". If the JID is currently in the room, he/she/it will also be kicked. Does NOT support spaces in nickname." -msgstr "Použitie: /%s [dôvod], zakáže JID v miestnosti. Prezývka Äloveka môže byÅ¥ zmenená, ale nesmie obsahovaÅ¥ \"@\". Ak je JID práve v miestnosti, on/ona/ono bude vykoponutý(á). Nepodporuje medzery v prezývkach." +msgid "" +"Usage: /%s [reason], bans the JID from the room. The nickname " +"of an occupant may be substituted, but not if it contains \"@\". If the JID " +"is currently in the room, he/she/it will also be kicked. Does NOT support " +"spaces in nickname." +msgstr "" +"Použitie: /%s [dôvod], zakáže JID v miestnosti. Prezývka " +"Äloveka môže byÅ¥ zmenená, ale nesmie obsahovaÅ¥ \"@\". Ak je JID práve v " +"miestnosti, on/ona/ono bude vykoponutý(á). Nepodporuje medzery v prezývkach." -#: ../src/groupchat_control.py:1049 +#: ../src/groupchat_control.py:1215 #, python-format -msgid "Usage: /%s , opens a private chat window to the specified occupant." -msgstr "Použitie: /%s , otvorí okno na súkromnú komunikáciu s Älovekom." +msgid "" +"Usage: /%s , opens a private chat window to the specified occupant." +msgstr "" +"Použitie: /%s , otvorí okno na súkromnú komunikáciu s Älovekom." -#: ../src/groupchat_control.py:1053 +#: ../src/groupchat_control.py:1219 #, python-format msgid "Usage: /%s, clears the text window." msgstr "Použiteie: /%s, vyÄistí textové okno." -#: ../src/groupchat_control.py:1055 +#: ../src/groupchat_control.py:1221 #, python-format -msgid "Usage: /%s [reason], closes the current window or tab, displaying reason if specified." -msgstr "Použitie: /%s [dôvod], zatvorí aktuálnu záložku v okne a zobrazí zdôvodnenie, pokiaľ je Å¡pecifikované." +msgid "" +"Usage: /%s [reason], closes the current window or tab, displaying reason if " +"specified." +msgstr "" +"Použitie: /%s [dôvod], zatvorí aktuálnu záložku v okne a zobrazí " +"zdôvodnenie, pokiaľ je Å¡pecifikované." -#: ../src/groupchat_control.py:1058 -#, python-format +#: ../src/groupchat_control.py:1224 +#, fuzzy, python-format msgid "Usage: /%s, hide the chat buttons." -msgstr "Použitie: /%s, ukryje tlaÄidlá z diskusného okna." +msgstr "Použiteie: /%s, vyÄistí textové okno." -#: ../src/groupchat_control.py:1060 +#: ../src/groupchat_control.py:1226 #, python-format -msgid "Usage: /%s [reason], invites JID to the current room, optionally providing a reason." -msgstr "Použitie: /%s [dôvod], pozve JID do aktuálnej miestosti, prípadne sa zobrazí aj oddôvodnenie." +msgid "" +"Usage: /%s [reason], invites JID to the current room, optionally " +"providing a reason." +msgstr "" +"Použitie: /%s [dôvod], pozve JID do aktuálnej miestosti, prípadne sa " +"zobrazí aj oddôvodnenie." -#: ../src/groupchat_control.py:1064 +#: ../src/groupchat_control.py:1230 #, python-format -msgid "Usage: /%s @[/nickname], offers to join room@server optionally using specified nickname." -msgstr "Použitie: /%s @[/prezývka], ponúkne možnosÅ¥ pripojiÅ¥ sa do miestnosÅ¥@server pre nick, ak je Å¡pecifikovaný." +msgid "" +"Usage: /%s @[/nickname], offers to join room@server optionally " +"using specified nickname." +msgstr "" +"Použitie: /%s @[/prezývka], ponúkne možnosÅ¥ pripojiÅ¥ sa " +"do miestnosÅ¥@server pre nick, ak je Å¡pecifikovaný." -#: ../src/groupchat_control.py:1068 +#: ../src/groupchat_control.py:1234 #, python-format -msgid "Usage: /%s [reason], removes the occupant specified by nickname from the room and optionally displays a reason. Does NOT support spaces in nickname." -msgstr "Použitie: /%s [dôvod], odstráni navÅ¡tevníka z miestnosti podľa prezývky, prípadne zobrazí dôvod. Nepodporuje medzery v menách." +msgid "" +"Usage: /%s [reason], removes the occupant specified by nickname " +"from the room and optionally displays a reason. Does NOT support spaces in " +"nickname." +msgstr "" +"Použitie: /%s [dôvod], odstráni navÅ¡tevníka z miestnosti podľa " +"prezývky, prípadne zobrazí dôvod. Nepodporuje medzery v menách." -#: ../src/groupchat_control.py:1073 +#: ../src/groupchat_control.py:1239 #, python-format -msgid "Usage: /%s , sends action to the current room. Use third person. (e.g. /%s explodes.)" -msgstr "Použitie: /%s , odoÅ¡le akciu pre aktuálnu miestnosÅ¥. Používajte tretiu osobu. (napr. /%s exlodoval(a).)" +msgid "" +"Usage: /%s , sends action to the current room. Use third person. (e." +"g. /%s explodes.)" +msgstr "" +"Použitie: /%s , odoÅ¡le akciu pre aktuálnu miestnosÅ¥. Používajte " +"tretiu osobu. (napr. /%s exlodoval(a).)" -#: ../src/groupchat_control.py:1077 +#: ../src/groupchat_control.py:1243 #, python-format -msgid "Usage: /%s [message], opens a private message windowand sends message to the occupant specified by nickname." -msgstr "Použitie: /%s [správa], otvorí okno na súkromnú komunikáciu a prípadne odoÅ¡le správu." +msgid "" +"Usage: /%s [message], opens a private message windowand sends " +"message to the occupant specified by nickname." +msgstr "" +"Použitie: /%s [správa], otvorí okno na súkromnú komunikáciu a " +"prípadne odoÅ¡le správu Älenovi s prezývkou." -#: ../src/groupchat_control.py:1082 +#: ../src/groupchat_control.py:1248 #, python-format msgid "Usage: /%s , changes your nickname in current room." msgstr "Použitie: /%s , zmení prezývku v aktuálnej miestnosti." -#: ../src/groupchat_control.py:1086 +#: ../src/groupchat_control.py:1252 +#, fuzzy, python-format +msgid "Usage: /%s , display the names of room occupants." +msgstr "Použitie: /%s [téma], zobrazí alebo zaktualizuje tému v miestnosti." + +#: ../src/groupchat_control.py:1256 #, python-format msgid "Usage: /%s [topic], displays or updates the current room topic." msgstr "Použitie: /%s [téma], zobrazí alebo zaktualizuje tému v miestnosti." -#: ../src/groupchat_control.py:1089 +#: ../src/groupchat_control.py:1259 #, python-format -msgid "Usage: /%s , sends a message without looking for other commands." +msgid "" +"Usage: /%s , sends a message without looking for other commands." msgstr "Použitie: /%s , odoÅ¡le správu, bezohľadu na ÄalÅ¡ie príkazy." -#: ../src/groupchat_control.py:1092 +#: ../src/groupchat_control.py:1262 #, python-format msgid "No help info for /%s" msgstr "Žiadne informácie s pomocou pre /%s" -#: ../src/groupchat_control.py:1128 +#: ../src/groupchat_control.py:1304 #, python-format msgid "Are you sure you want to leave room \"%s\"?" msgstr "Ste si istý(á), že chcete opustiÅ¥ miestnosÅ¥ \"%s\"?" -#: ../src/groupchat_control.py:1129 +#: ../src/groupchat_control.py:1305 msgid "If you close this window, you will be disconnected from this room." msgstr "Ak zatvoríte okno, budete odpojený(á) z tejto miestnosti." -#: ../src/groupchat_control.py:1133 +#: ../src/groupchat_control.py:1309 msgid "Do _not ask me again" -msgstr "Viac sa už nepýtaÅ¥" +msgstr "Znovu sa už _nepýtaÅ¥" -#: ../src/groupchat_control.py:1167 +#: ../src/groupchat_control.py:1343 msgid "Changing Subject" msgstr "Zmena predmetu" -#: ../src/groupchat_control.py:1168 +#: ../src/groupchat_control.py:1344 msgid "Please specify the new subject:" msgstr "Prosím, Å¡pecifikujte nový predmet:" -#: ../src/groupchat_control.py:1176 +#: ../src/groupchat_control.py:1352 msgid "Changing Nickname" msgstr "Zmena prezývky" -#: ../src/groupchat_control.py:1177 +#: ../src/groupchat_control.py:1353 msgid "Please specify the new nickname you want to use:" msgstr "Prosím Å¡pecifikujte novú prezývku, ktorú chcete používaÅ¥:" -#: ../src/groupchat_control.py:1202 +#: ../src/groupchat_control.py:1379 msgid "Bookmark already set" msgstr "Záložka je už nastavená" -#: ../src/groupchat_control.py:1203 +#: ../src/groupchat_control.py:1380 #, python-format msgid "Room \"%s\" is already in your bookmarks." msgstr "MiestnosÅ¥ \"%s\" je už vo vaÅ¡ich záložkách." -#: ../src/groupchat_control.py:1212 +#: ../src/groupchat_control.py:1389 msgid "Bookmark has been added successfully" msgstr "Záložka bola úspeÅ¡ne pridaná" -#: ../src/groupchat_control.py:1213 +#: ../src/groupchat_control.py:1390 msgid "You can manage your bookmarks via Actions menu in your roster." msgstr "Môžete spravovaÅ¥ záložky cez Akcie v menu vo vaÅ¡om zozname." #. ask for reason -#: ../src/groupchat_control.py:1322 +#: ../src/groupchat_control.py:1500 #, python-format msgid "Kicking %s" msgstr "Vykopnúť %s" -#: ../src/groupchat_control.py:1323 -#: ../src/groupchat_control.py:1568 +#: ../src/groupchat_control.py:1501 ../src/groupchat_control.py:1779 msgid "You may specify a reason below:" msgstr "Môžete Å¡pecifikovaÅ¥ dôvod:" #. ask for reason -#: ../src/groupchat_control.py:1567 +#: ../src/groupchat_control.py:1778 #, python-format msgid "Banning %s" msgstr "ZakázaÅ¥ %s" -#: ../src/gtkexcepthook.py:52 +#: ../src/gtkexcepthook.py:51 msgid "A programming error has been detected" msgstr "Bola detekovaná chyba v programe" -#: ../src/gtkexcepthook.py:53 -msgid "It probably is not fatal, but should be reported to the developers nonetheless." -msgstr "Pravdepodobne nie je fatálna, ale mala aj napriek tomu by mala byÅ¥ oznámená vývojárom." +#: ../src/gtkexcepthook.py:52 +msgid "" +"It probably is not fatal, but should be reported to the developers " +"nonetheless." +msgstr "" +"Pravdepodobne nie je fatálna, ale mala aj napriek tomu by mala byÅ¥ oznámená " +"vývojárom." -#: ../src/gtkexcepthook.py:59 +#: ../src/gtkexcepthook.py:58 msgid "_Report Bug" msgstr "Sp_ráva o chybe" -#: ../src/gtkexcepthook.py:82 +#: ../src/gtkexcepthook.py:81 msgid "Details" msgstr "Podrobnosti" -#. this always tracebacks -#: ../src/gtkgui.glade.h:1 -msgid "0" -msgstr "0" - -#: ../src/gtkgui.glade.h:2 -msgid "" -"Account is being created\n" -"\n" -"Please wait..." -msgstr "" -"ÚÄet je vytváraný\n" -"\n" -"Prosím Äakajte..." - -#: ../src/gtkgui.glade.h:5 -msgid "Advanced Configuration Editor" -msgstr "Editor rozšírenej konfigurácie" - -#: ../src/gtkgui.glade.h:6 -msgid "Applications" -msgstr "Aplikácie" - -#: ../src/gtkgui.glade.h:7 -msgid "Chatstate Tab Colors" -msgstr "Tabuľka farieb pre" - -#. a header for custom browser/client/file manager. so translate sth like: Custom Settings -#: ../src/gtkgui.glade.h:9 -msgid "Custom" -msgstr "Vlastné" - -#: ../src/gtkgui.glade.h:10 -msgid "Description" -msgstr "Popis" - -#: ../src/gtkgui.glade.h:11 -msgid "Format of a line" -msgstr "Formát riadku rozhovoru" - -#: ../src/gtkgui.glade.h:12 -msgid "Interface Customization" -msgstr "Úprava rozhrania" - -#: ../src/gtkgui.glade.h:13 -msgid "Jabber Traffic" -msgstr "Prevádzka Jabber-a" - -#: ../src/gtkgui.glade.h:14 -msgid "Miscellaneous" -msgstr "Rôzne" - -#: ../src/gtkgui.glade.h:15 -msgid "NOTE: You should restart gajim for some setting to take effect" -msgstr "Poznámka: Mali by ste reÅ¡tartovaÅ¥ Gajim, aby doÅ¡lo k aplikácii tohoto nastavenia" - -#: ../src/gtkgui.glade.h:16 -msgid "OpenPGP" -msgstr "OpenPGP" - -#: ../src/gtkgui.glade.h:17 -msgid "Personal Information" -msgstr "Osobné informácie" - -#: ../src/gtkgui.glade.h:18 -msgid "Please choose one of the options below:" -msgstr "Prosím, vyberte jednu z možností:" - -#: ../src/gtkgui.glade.h:19 -msgid "Please fill in the data for your new account" -msgstr "Prosím, vyplnte údaje o vaÅ¡om úÄte" - -#: ../src/gtkgui.glade.h:20 -msgid "Preset Status Messages" -msgstr "VrátiÅ¥ pôvodnú správu o stave" - -#: ../src/gtkgui.glade.h:21 -msgid "Properties" -msgstr "Vlastnosti" - -#: ../src/gtkgui.glade.h:22 -msgid "Settings" -msgstr "Nastavenia" - -#: ../src/gtkgui.glade.h:23 -msgid "Sounds" -msgstr "Zvuky" - -#: ../src/gtkgui.glade.h:24 -msgid "Type your new status message" -msgstr "Zadajte novú správu o stave" - -#: ../src/gtkgui.glade.h:25 -msgid "Visual Notifications" -msgstr "Vizuálne upozornenie" - -#: ../src/gtkgui.glade.h:26 -msgid "What do you want to do?" -msgstr "ÄŒo si prajete vykonaÅ¥?" - -#: ../src/gtkgui.glade.h:27 -msgid "XML Input" -msgstr "XML vstup" - -#: ../src/gtkgui.glade.h:28 -msgid "A list of active, completed and stopped file transfers" -msgstr "Zoznam aktívnych, dokonÄených a zastavených prenosov súborov" - -#: ../src/gtkgui.glade.h:29 -msgid "A_ccounts" -msgstr "ÚÄ_ty" - -#: ../src/gtkgui.glade.h:30 -msgid "A_fter nickname:" -msgstr "P_o prezývke:" - -#. "About" is the text of a tab of vcard window -#: ../src/gtkgui.glade.h:32 -msgid "About" -msgstr "Informácie" - -#: ../src/gtkgui.glade.h:33 -msgid "Accept" -msgstr "PrijaÅ¥" - -#: ../src/gtkgui.glade.h:34 -msgid "Account" -msgstr "ÚÄet" - -#: ../src/gtkgui.glade.h:35 -msgid "" -"Account\n" -"Group\n" -"Contact\n" -"Banner" -msgstr "" -"ÚÄet\n" -"Skupina\n" -"Kontakt\n" -"Transparent" - -#: ../src/gtkgui.glade.h:39 -msgid "Account Modification" -msgstr "Modifikácia úÄtu" - -#: ../src/gtkgui.glade.h:40 -msgid "Accounts" -msgstr "ÚÄty" - -#: ../src/gtkgui.glade.h:42 -msgid "Add New Contact" -msgstr "PridaÅ¥ nový kontakt" - -#: ../src/gtkgui.glade.h:43 -msgid "Add Special _Notification" -msgstr "PridaÅ¥ Å¡peciálne _upozornenie" - -#: ../src/gtkgui.glade.h:44 -msgid "Add _Contact" -msgstr "PridaÅ¥ _kontakt" - -#: ../src/gtkgui.glade.h:45 -msgid "Address" -msgstr "Adresa" - -#: ../src/gtkgui.glade.h:46 -msgid "Advanced" -msgstr "Rozšírené" - -#: ../src/gtkgui.glade.h:47 -msgid "Advanced Configuration Editor" -msgstr "Rozšírený editor na editovanie konfigurácie" - -#: ../src/gtkgui.glade.h:48 -msgid "" -"All chat states\n" -"Composing only\n" -"Disabled" -msgstr "" -"VÅ¡etky stavy\n" -"Len pri písaní\n" -"Vypnuté" - -#: ../src/gtkgui.glade.h:51 -msgid "Allow _OS information to be sent" -msgstr "PovoliÅ¥ _odosielanie informácie o operaÄnom systéme" - -#: ../src/gtkgui.glade.h:52 -msgid "Allow him/her to see my status" -msgstr "PovoliÅ¥ jemu/jej vidieÅ¥ môj stav" - -#: ../src/gtkgui.glade.h:53 -msgid "Allow popup/notifications when I'm _away/na/busy/invisible" -msgstr "PovoliÅ¥ popup/upozornenia v stavoch _preÄ/nedostupný/zamestnaný/neviditeľný" - -#: ../src/gtkgui.glade.h:54 -msgid "Also known as iChat style" -msgstr "Tiež známy ako iChat Å¡týl" - -#: ../src/gtkgui.glade.h:55 -msgid "Ask status message when I:" -msgstr "VyžiadaÅ¥ správu o stave, keÄ som:" - -#: ../src/gtkgui.glade.h:56 -msgid "Ask to see his/her status" -msgstr "PožiadaÅ¥ jeho/ju o súhlas pre zobrazenie stavu" - -#: ../src/gtkgui.glade.h:57 -msgid "Ask:" -msgstr "PožiadaÅ¥:" - -#: ../src/gtkgui.glade.h:58 -msgid "Assign Open_PGP Key" -msgstr "PrideliÅ¥ Open_PGP kľúÄ" - -#: ../src/gtkgui.glade.h:59 -msgid "Authorize contact so he can know when you're connected" -msgstr "AutorizovaÅ¥ kontakt, od teraz vude vidieÅ¥ kedy ste pripojený(á)" - -#: ../src/gtkgui.glade.h:60 -msgid "Auto _away after:" -msgstr "Automaticky _preÄ po:" - -#: ../src/gtkgui.glade.h:61 -msgid "Auto _not available after:" -msgstr "Automaticky _neprítomný(á) po:" - -#: ../src/gtkgui.glade.h:62 -msgid "Auto join" -msgstr "Automaticky pripojiÅ¥" - -#: ../src/gtkgui.glade.h:63 -msgid "" -"Autodetect on every Gajim startup\n" -"Always use GNOME default applications\n" -"Always use KDE default applications\n" -"Custom" -msgstr "" -"Automaticky zistiÅ¥ pri každom Å¡tarte Gajim-u\n" -"Vždy použiÅ¥ aplikácie prostredia GNOME ako predvolené\n" -"Vždy použiÅ¥ aplikácie prostredia KDE ako predvolené\n" -"Vlastné" - -#: ../src/gtkgui.glade.h:67 -msgid "Automatically authorize contact" -msgstr "Automaticky autorizovaÅ¥ kontakt" - -#: ../src/gtkgui.glade.h:68 -msgid "Autoreconnect when connection is lost" -msgstr "Automatické pripojenie po strate spojenia" - -#: ../src/gtkgui.glade.h:69 -msgid "B_efore nickname:" -msgstr "Pr_ed prezývkou:" - -#: ../src/gtkgui.glade.h:70 -msgid "Birthday:" -msgstr "Narodeniny:" - -#: ../src/gtkgui.glade.h:71 -msgid "Bold" -msgstr "TuÄné" - -#: ../src/gtkgui.glade.h:72 -msgid "Build custom query" -msgstr "VytvoriÅ¥ vlastnú požiadavku" - -#: ../src/gtkgui.glade.h:73 -msgid "C_onnect on Gajim startup" -msgstr "_PripojiÅ¥ Gajim pri Å¡tarte" - -#: ../src/gtkgui.glade.h:74 -msgid "Cancel file transfer" -msgstr "ZruÅ¡iÅ¥ prenos súboru" - -#: ../src/gtkgui.glade.h:75 -msgid "Cancels the selected file transfer" -msgstr "ZruÅ¡iÅ¥ prenos vybraných súborov" - -#: ../src/gtkgui.glade.h:76 -msgid "Cancels the selected file transfer and removes incomplete file" -msgstr "ZruÅ¡iÅ¥ prenos vybraných súborov a odstrániÅ¥ nekompletné súbory" - -#: ../src/gtkgui.glade.h:77 -msgid "Chan_ge Password" -msgstr "Zme_niÅ¥ hesla" - -#: ../src/gtkgui.glade.h:78 -msgid "Change Password" -msgstr "ZmeniÅ¥ heslo" - -#: ../src/gtkgui.glade.h:79 -msgid "Change _Nickname" -msgstr "ZmeniÅ¥ _prezývku" - -#: ../src/gtkgui.glade.h:80 -msgid "Change _Subject" -msgstr "ZruÅ¡iÅ¥ _predmet" - -#: ../src/gtkgui.glade.h:82 -msgid "Chat state noti_fications:" -msgstr "ZmeniÅ¥ upozornen_ie na stav:" - -#: ../src/gtkgui.glade.h:83 -msgid "Check this option, only if someone you don't have in the roster spams/annoys you. Use with caution, cause it blocks all messages from any contact that is not in the roster" -msgstr "Povoľte túto možnosÅ¥ len v prípade, že niekto, koho nemáte v zozname vás spamuje/otravuje. Použitím tejto možnosti zablokujete vÅ¡etky správy od kohokoľvek, koho nemáte v zozname." - -#: ../src/gtkgui.glade.h:84 -msgid "Check this so Gajim will connect in port 5223 where legacy servers are expected to have SSL capabilities. Note that Gajim uses TLS encryption by default if broadcasted by the server, and with this option enabled TLS will be disabled" -msgstr "PovoliÅ¥ - Gajim sa bude pripájaÅ¥ na port 5223, kde servery môžu poskytnúť silné Å¡ifrované SSL spojenie. Gajim používa bežne TLS Å¡ifrovanie, pokiaľ je poskytované serverom. Pri povolení tejto vlastnosti bude TLS deaktivované." - -#: ../src/gtkgui.glade.h:85 -msgid "Choose _Key..." -msgstr "Vyberte _kľúÄ" - -#: ../src/gtkgui.glade.h:86 -msgid "City:" -msgstr "Mesto:" - -#: ../src/gtkgui.glade.h:87 -msgid "Clean _up" -msgstr "_VyÄistiÅ¥" - -#: ../src/gtkgui.glade.h:88 -msgid "Click to change account's password" -msgstr "Kliknite pre zmenu hesla úÄtu" - -#: ../src/gtkgui.glade.h:89 -msgid "Click to insert an emoticon (Alt+M)" -msgstr "Kliknite pre vloženie emotikonu (Alt+M)" - -#: ../src/gtkgui.glade.h:90 -msgid "Click to see features (like MSN, ICQ transports) of jabber servers" -msgstr "Kliknite pre zistenie vlastností (ako MSN, ICQ transport) jabber serverov" - -#: ../src/gtkgui.glade.h:91 -msgid "Click to see past conversation in this room" -msgstr "Kliknite pre zobrazenie predchádzajúcej konverzácie v miestnosti" - -#: ../src/gtkgui.glade.h:92 -msgid "Click to see past conversations with this contact" -msgstr "Kliknite pre zobrazenie poslednej konverzácie s kontaktom" - -#: ../src/gtkgui.glade.h:93 -msgid "Client:" -msgstr "Klient:" - -#: ../src/gtkgui.glade.h:94 -msgid "Company:" -msgstr "SpoloÄnosÅ¥:" - -#: ../src/gtkgui.glade.h:95 -msgid "Composing" -msgstr "Píše" - -#: ../src/gtkgui.glade.h:96 -msgid "Configure _Room" -msgstr "NastaviÅ¥ _miestnosÅ¥" - -#: ../src/gtkgui.glade.h:97 -msgid "Connect when I press Finish" -msgstr "PripojiÅ¥, keÄ stlaÄím DokonÄiÅ¥" - -#: ../src/gtkgui.glade.h:98 -msgid "Connection" -msgstr "Spojenie" - -#: ../src/gtkgui.glade.h:99 -msgid "Contact Information" -msgstr "Kontaktné informácie" - -#: ../src/gtkgui.glade.h:100 -msgid "Contact _Info" -msgstr "Kontaktné _info" - -#: ../src/gtkgui.glade.h:101 -msgid "Conversation History" -msgstr "História konverzácie" - -#: ../src/gtkgui.glade.h:102 -msgid "Country:" -msgstr "Krajina:" - -#: ../src/gtkgui.glade.h:103 -msgid "Default status _iconset:" -msgstr "Základná _sada ikoniek:" - -#: ../src/gtkgui.glade.h:104 -msgid "Delete MOTD" -msgstr "ZmazaÅ¥ správu dňa (MOTD)" - -#: ../src/gtkgui.glade.h:105 -msgid "Deletes Message of the Day" -msgstr "ZmazaÅ¥ správy dňa" - -#: ../src/gtkgui.glade.h:106 -msgid "Deny" -msgstr "ZakázaÅ¥" - -#: ../src/gtkgui.glade.h:107 -msgid "Deny authorization from contact so he cannot know when you're connected" -msgstr "ZamietnuÅ¥ autorizáciu od kontaktu, nebude tým pádom vedieÅ¥, kedy ste pripojený(á)" - -#: ../src/gtkgui.glade.h:108 -msgid "Department:" -msgstr "Oddelenie:" - -#: ../src/gtkgui.glade.h:109 -msgid "Display a_vatars of contacts in roster" -msgstr "ZobraziÅ¥ a_vatarov v zozname kontaktov" - -#: ../src/gtkgui.glade.h:110 -msgid "Display status _messages of contacts in roster" -msgstr "ZobraziÅ¥ s_tavovú správu pre kontakty v zozname" - -#: ../src/gtkgui.glade.h:111 -msgid "E-Mail:" -msgstr "E-Mail:" - -#: ../src/gtkgui.glade.h:112 -msgid "E_very 5 minutes" -msgstr "Každých 5 _minút" - -#: ../src/gtkgui.glade.h:113 -msgid "Edit Groups" -msgstr "UpraviÅ¥ skupiny" - -#: ../src/gtkgui.glade.h:114 -msgid "Edit Personal Information..." -msgstr "UpraviÅ¥ osobné informácie..." - -#: ../src/gtkgui.glade.h:115 -msgid "Edit _Groups" -msgstr "UpraviÅ¥ _Skupiny" - -#: ../src/gtkgui.glade.h:116 -msgid "Emoticons:" -msgstr "Sada emotikonov:" - -#. XML Console enable checkbutton -#: ../src/gtkgui.glade.h:118 -msgid "Enable" -msgstr "PovoliÅ¥" - -#: ../src/gtkgui.glade.h:119 -msgid "Enter it again for confirmation:" -msgstr "Vložte eÅ¡te raz pre potvrdenie:" - -#: ../src/gtkgui.glade.h:120 -msgid "Enter new password:" -msgstr "Vložte nové heslo:" - -#: ../src/gtkgui.glade.h:121 -msgid "Events" -msgstr "Udalosti" - -#: ../src/gtkgui.glade.h:122 -msgid "Extra Address:" -msgstr "Extra adresa:" - -#. Family Name -#: ../src/gtkgui.glade.h:124 -msgid "Family:" -msgstr "Priezvysko:" - -#: ../src/gtkgui.glade.h:125 -msgid "File Transfers" -msgstr "Prenos súborov" - -#: ../src/gtkgui.glade.h:126 -msgid "File _Transfers" -msgstr "Prenos _súborov" - -#: ../src/gtkgui.glade.h:127 -msgid "Filter:" -msgstr "Filter:" - -#: ../src/gtkgui.glade.h:128 -msgid "Font style:" -msgstr "Å týl fontu:" - -#: ../src/gtkgui.glade.h:129 -msgid "Forbid him/her to see my status" -msgstr "OdmietnuÅ¥ zobraziÅ¥ stav" - -#: ../src/gtkgui.glade.h:130 -msgid "Format: YYYY-MM-DD" -msgstr "Formát: YYYY-MM-DD" - -#: ../src/gtkgui.glade.h:131 -msgid "Frequently Asked Questions (online)" -msgstr "ÄŒasto kladené otázky (FAQ - online)" - -#: ../src/gtkgui.glade.h:132 -msgid "From:" -msgstr "Od:" - -#: ../src/gtkgui.glade.h:133 -msgid "G_o" -msgstr "Ch_oÄ" - -#: ../src/gtkgui.glade.h:134 -#: ../src/notify.py:167 -#: ../src/notify.py:189 -#: ../src/notify.py:201 -#: ../src/tooltips.py:339 -msgid "Gajim" -msgstr "Gajim" - -#: ../src/gtkgui.glade.h:135 -msgid "Gajim Themes Customization" -msgstr "Úprava tém Gajimu" - -#: ../src/gtkgui.glade.h:136 -msgid "Gajim can send and receive meta-information related to a conversation you may have with a contact. Here you can specify which chatstates you want to send to the other party." -msgstr "Gajim môže odoslaÅ¥ a prijaÅ¥ meta-informácie vzÅ¥ahujúce sa ku konverzácii s vaÅ¡im kontaktom. Tu môžete uviesÅ¥, ktoré stavy chcete odosielaÅ¥." - -#: ../src/gtkgui.glade.h:137 -msgid "Gajim will automatically show new events by poping up the relative window" -msgstr "Gajim automaticky zobrazí novo prijaté správy v doÄasnom vyskakovacom okne" - -#: ../src/gtkgui.glade.h:138 -msgid "Gajim will notify you for new events via a popup in the bottom right of the screen" -msgstr "Gajim vás bude upozorňovaÅ¥ na nové správy cez popup v pravej spodnej Äasti obrazovky" - -#: ../src/gtkgui.glade.h:139 -msgid "Gajim will notify you via a popup window in the bottom right of the screen about contacts that just signed in" -msgstr "Gajim vás bude upozorňovaÅ¥ cez popup v pravej spodnej Äasti obrazovky o kontaktoch, ktoré sa práve pripojili" - -#: ../src/gtkgui.glade.h:140 -msgid "Gajim will notify you via a popup window in the bottom right of the screen about contacts that just signed out" -msgstr "Gajim vás bude upozorňovaÅ¥ popup v pravej spodnej Äasti obrazovky na kontakty, ktoré sa práve odpojili" - -#: ../src/gtkgui.glade.h:141 -msgid "Gajim will only change the icon of the contact that triggered the new event" -msgstr "Gajim bude len meniÅ¥ ikony kontaktov, ktoré vám odoslali nové informácie" - -#: ../src/gtkgui.glade.h:142 -msgid "Gajim: Account Creation Wizard" -msgstr "Gajim: Pomocník - Tvorba úÄtu" - -#. user has no group, print him in General -#: ../src/gtkgui.glade.h:143 -#: ../src/roster_window.py:291 -#: ../src/roster_window.py:1183 -#: ../src/roster_window.py:1405 -#: ../src/systray.py:286 -msgid "General" -msgstr "VÅ¡eobecné" - -#. Given Name -#: ../src/gtkgui.glade.h:145 -msgid "Given:" -msgstr "Meno:" - -#: ../src/gtkgui.glade.h:146 -msgid "Gone" -msgstr "PreÄ" - -#: ../src/gtkgui.glade.h:147 -msgid "Group:" -msgstr "Skupina:" - -#: ../src/gtkgui.glade.h:148 -msgid "HTTP Connect" -msgstr "HTTP spojenie" - -#: ../src/gtkgui.glade.h:149 -msgid "Help online" -msgstr "Online pomoc" - -#: ../src/gtkgui.glade.h:150 -msgid "Hides the window" -msgstr "Skrývanie okien" - -#: ../src/gtkgui.glade.h:151 -msgid "Homepage:" -msgstr "Domovská stránka:" - -#: ../src/gtkgui.glade.h:152 -msgid "Hostname: " -msgstr "Meno servera:" - -#: ../src/gtkgui.glade.h:153 -msgid "I already have an account I want to use" -msgstr "Už mám úÄet a chcem ho používaÅ¥" - -#: ../src/gtkgui.glade.h:154 -msgid "I want to _register for a new account" -msgstr "Chcem si za_registrovaÅ¥ nový úÄet" - -#: ../src/gtkgui.glade.h:155 -msgid "I would like to add you to my contact list." -msgstr "Chcem si Å¥a pridaÅ¥ do môjho kontakt listu." - -#: ../src/gtkgui.glade.h:156 -msgid "If checked, Gajim will also broadcast some more IPs except from just your IP, so file transfer has higher chances of working right." -msgstr "Ak je zaÅ¡krtnuté, Gajim bude rozosielaÅ¥ viac IP adries vrátane vaÅ¡ej, tým pádom má operácia prenos súboru väÄÅ¡iu Å¡ancu na úspech." - -#: ../src/gtkgui.glade.h:157 -msgid "If checked, Gajim will display avatars of contacts in roster window and in group chats" -msgstr "Ak je zaÅ¡krtnuté, Gajim bude zobrazovaÅ¥ avatarov v zozname kontaktov a v okne pre skupinovú diskusiu" - -#: ../src/gtkgui.glade.h:158 -msgid "If checked, Gajim will display status messages of contacts under the contact name in roster window and in group chats" -msgstr "Ak je zaÅ¡krtnuté, Gajim bude zobrazovaÅ¥ správu o stave kontaktov pod menom v zozname a v okne pre skupinovú diskusiu" - -#: ../src/gtkgui.glade.h:159 -msgid "If checked, Gajim will join this group chat on startup" -msgstr "Ak je zaÅ¡krtnuté, Gajim sa pripojí do diskusnej skupiny pri Å¡tarte" - -#: ../src/gtkgui.glade.h:160 -msgid "If checked, Gajim will remember the password for this account" -msgstr "Ak je zaÅ¡krtnuté, Gajim si zapamätá heslo pre tento úÄet" - -#: ../src/gtkgui.glade.h:161 -msgid "If checked, Gajim will remember the roster and chat window positions in the screen and the sizes of them next time you run it" -msgstr "Ak je zaÅ¡krtnuté, Gajim si bude pamätaÅ¥ pozície a veľkosÅ¥ zoznamu a diskusných okien na obrazovke a pri ÄalÅ¡om spustení ich znova nastaví" - -#: ../src/gtkgui.glade.h:162 -msgid "If checked, Gajim will send keep-alive packets so it prevents connection timeout which results in disconnection" -msgstr "Ak je zaÅ¡krtnuté, Gajim bude posielaÅ¥ pakety na udržanie spojenia, Äím sa predchádza vyprÅ¡aniu platnosti spojenia, ktorého výsledkom je odpojeni" - -#: ../src/gtkgui.glade.h:163 -msgid "If checked, Gajim will store the password in ~/.gajim/config with 'read' permission only for you" -msgstr "Ak je zaÅ¡krtnuté, Gajim uloží heslo do ~/.gajim/config s oprávnením 'ÄitaÅ¥' len pre vás" - -#: ../src/gtkgui.glade.h:164 -msgid "If checked, Gajim will use protocol-specific status icons. (eg. A contact from MSN will have the equivalent msn icon for status online, away, busy, etc...)" -msgstr "Ak je zaÅ¡krtnuté, Gajim bude používaÅ¥ ikonky Å¡pecifické pre protokol. (Napr. kontakt z MSN bude maÅ¥ ekvivalentné ikonky pre stavy online, preÄ, zaneprázdnený, atÄ...)" - -#: ../src/gtkgui.glade.h:165 -msgid "If checked, Gajim, when launched, will automatically connect to jabber using this account" -msgstr "Ak je zaÅ¡krtnuté, Gajim sa pri spustení automatický pripojí na jabber na tento úÄet" - -#: ../src/gtkgui.glade.h:166 -msgid "If checked, any change to the global status (handled by the combobox at the bottom of the roster window) will change the status of this account accordingly" -msgstr "Ak je zaÅ¡krtnuté, každá zmena globálneho stavu (realizovaná rozbaľovacím menu na spodku zoznamu) spôsobí zmenu stavu aj v tomto úÄte" - -#: ../src/gtkgui.glade.h:167 -msgid "If not disabled, Gajim will replace ascii smilies like ':)' with equivalent animated or static graphical emoticons" -msgstr "Ak nie je aktivované, Gajim nahradí ascii emotikony ako ':)' ekvivalentným grafickým obrázkom" - -#: ../src/gtkgui.glade.h:168 -msgid "If you have 2 or more accounts and it is checked, Gajim will list all contacts as if you had one account" -msgstr "Ak máte dva alebo viac úÄtov a je zaÅ¡krtnuté, Gajim bude vypisovaÅ¥ vÅ¡etky kontakty akoby ste mali len jeden úÄet" - -#: ../src/gtkgui.glade.h:169 -msgid "Inactive" -msgstr "Neaktívny" - -#. Info/Query make the "IQ" initials. So translate like this 'YourLang/YourLang (Info/Query)'. Thanks (it's a tooltip so width is not a problem) -#: ../src/gtkgui.glade.h:171 -msgid "Info/Query" -msgstr "Info/Požiadavka" - -#: ../src/gtkgui.glade.h:172 -msgid "Information about you, as stored in the server" -msgstr "Informácie o vás sú uložené na serveri" - -#: ../src/gtkgui.glade.h:173 -msgid "Invitation Received" -msgstr "Prijaté pozvanie" - -#: ../src/gtkgui.glade.h:174 -msgid "Italic" -msgstr "Kurzíva" - -#: ../src/gtkgui.glade.h:175 -msgid "Jabber" -msgstr "Jabber" - -#: ../src/gtkgui.glade.h:176 -msgid "Jabber ID:" -msgstr "Jabber ID:" - -#: ../src/gtkgui.glade.h:178 -msgid "Join _Group Chat" -msgstr "_PripojiÅ¥ sa k skupinovej diskusii" - -#: ../src/gtkgui.glade.h:179 -msgid "Location" -msgstr "Miesto" - -#: ../src/gtkgui.glade.h:180 -msgid "" -"MUC\n" -"Messages" -msgstr "" -"MUC\n" -"Správy" - -#: ../src/gtkgui.glade.h:182 -msgid "" -"MUC Directed\n" -"Messages" -msgstr "" -"MUC Smerovanie\n" -"Správy" - -#: ../src/gtkgui.glade.h:184 -msgid "Ma_nage..." -msgstr "U_praviÅ¥..." - -#: ../src/gtkgui.glade.h:185 -msgid "Manage Accounts" -msgstr "UpraviÅ¥ úÄty" - -#: ../src/gtkgui.glade.h:186 -msgid "Manage Bookmarks" -msgstr "UpraviÅ¥ záložky" - -#: ../src/gtkgui.glade.h:187 -msgid "Manage Proxy Profiles" -msgstr "UpraviÅ¥ Proxy nastavenia" - -#: ../src/gtkgui.glade.h:188 -msgid "Manage..." -msgstr "UpraviÅ¥..." - -#. Middle Name -#: ../src/gtkgui.glade.h:190 -msgid "Middle:" -msgstr "Prostredné meno:" - -#: ../src/gtkgui.glade.h:191 -msgid "Mo_derator" -msgstr "Mo_derátor" - -#: ../src/gtkgui.glade.h:192 -msgid "More" -msgstr "Viac" - -#: ../src/gtkgui.glade.h:193 -msgid "Name:" -msgstr "Meno:" - -#: ../src/gtkgui.glade.h:194 -msgid "" -"Never\n" -"Always\n" -"Per account\n" -"Per type" -msgstr "" -"Nidy\n" -"Vždy\n" -"Podľa úÄtu\n" -"Podľa typu" - -#: ../src/gtkgui.glade.h:198 -msgid "Nickname:" -msgstr "Prezývka:" - -#. None means no proxy profile selected -#: ../src/gtkgui.glade.h:201 -msgid "None" -msgstr "NiÄ" - -#: ../src/gtkgui.glade.h:202 -msgid "Notify me about contacts that: " -msgstr "Upozorni ma na kontakt, ktorý:" - -#: ../src/gtkgui.glade.h:203 -msgid "Notify on new _Gmail e-mail" -msgstr "UpozorniÅ¥ keÄ príde _Gmail e-mail" - -#: ../src/gtkgui.glade.h:204 -msgid "OS:" -msgstr "OperaÄný systém:" - -#: ../src/gtkgui.glade.h:205 -msgid "On every _message" -msgstr "Pri každej _správe" - -#: ../src/gtkgui.glade.h:206 -msgid "One message _window:" -msgstr "Jedno _okno so správou:" - -#: ../src/gtkgui.glade.h:208 -msgid "Pass_word:" -msgstr "He_slo:" - -#: ../src/gtkgui.glade.h:209 -msgid "Passphrase" -msgstr "Passfráza" - -#: ../src/gtkgui.glade.h:210 -msgid "Password:" -msgstr "Heslo" - -#: ../src/gtkgui.glade.h:211 -#: ../src/tooltips.py:645 -msgid "Paused" -msgstr "Pauza" - -#: ../src/gtkgui.glade.h:212 -msgid "Personal Information" -msgstr "Osobné informácie" - -#: ../src/gtkgui.glade.h:213 -msgid "Phone No.:" -msgstr "Telefónne Ä.:" - -#: ../src/gtkgui.glade.h:214 -msgid "Play _sounds" -msgstr "PrehraÅ¥ _zvuky" - -#: ../src/gtkgui.glade.h:215 -msgid "Port: " -msgstr "Port: " - -#: ../src/gtkgui.glade.h:216 -msgid "Position:" -msgstr "Pozícia:" - -#: ../src/gtkgui.glade.h:217 -msgid "Postal Code:" -msgstr "PSÄŒ:" - -#: ../src/gtkgui.glade.h:218 -msgid "Preferences" -msgstr "Nastavenia" - -#. Prefix in Name -#: ../src/gtkgui.glade.h:220 -msgid "Prefix:" -msgstr "Prefix:" - -#: ../src/gtkgui.glade.h:221 -msgid "Preset messages:" -msgstr "Prednastavené správy:" - -#: ../src/gtkgui.glade.h:222 -msgid "Print time:" -msgstr "ÄŒas tlaÄe:" - -#: ../src/gtkgui.glade.h:223 -msgid "Priori_ty:" -msgstr "Priori_ta:" - -#: ../src/gtkgui.glade.h:224 -msgid "Priority is used in Jabber to determine who gets the events from the jabber server when two or more clients are connected using the same account; The client with the highest priority gets the events" -msgstr "Priorita v Jabberovi urÄuje, kto obdrží udalosÅ¥ od jabber servera, keÄ je pripojených dvaja alebo viac klientov prostredníctvom jedného úÄtu; Klient s najvyÅ¡Å¡ou priritou obdrží udalosÅ¥" - -#: ../src/gtkgui.glade.h:225 -msgid "Profile, Avatar" -msgstr "Profil, Avatar" - -#: ../src/gtkgui.glade.h:226 -msgid "Protocol:" -msgstr "Protokol:" - -#: ../src/gtkgui.glade.h:227 -msgid "Proxy:" -msgstr "Proxy:" - -#: ../src/gtkgui.glade.h:228 -msgid "Query Builder..." -msgstr "ZostaviÅ¥ požiadavku..." - -#: ../src/gtkgui.glade.h:229 -msgid "Recently:" -msgstr "Posledné:" - -#: ../src/gtkgui.glade.h:230 -msgid "Register to" -msgstr "Registrovaný(á) k" - -#: ../src/gtkgui.glade.h:231 -msgid "Remove account _only from Gajim" -msgstr "_OdstrániÅ¥ úÄet iba z Gajima" - -#: ../src/gtkgui.glade.h:232 -msgid "Remove account from Gajim and from _server" -msgstr "OdstrániÅ¥ úÄet z Gajima a zo _serveru" - -#: ../src/gtkgui.glade.h:233 -msgid "Remove file transfer from the list." -msgstr "OdstrániÅ¥ prenos súboru zo zoznamu" - -#: ../src/gtkgui.glade.h:234 -msgid "Removes completed, canceled and failed file transfers from the list" -msgstr "OdstrániÅ¥ dokonÄené, zruÅ¡ené a neúspeÅ¡né prenosy súborov zo zoznamu" - -#: ../src/gtkgui.glade.h:235 -msgid "Reply to this message" -msgstr "OdpoveÄ na túto správu" - -#: ../src/gtkgui.glade.h:236 -msgid "Resour_ce: " -msgstr "Zd_roj:" - -#: ../src/gtkgui.glade.h:237 -msgid "Resource is sent to the Jabber server in order to separate the same JID in two or more parts depending on the number of the clients connected in the same server with the same account. So you might be connected in the same account with resource 'Home' and 'Work' at the same time. The resource which has the highest priority will get the events. (see below)" -msgstr "Zdroj je odoslaný na Jabber server, aby bolo možné odlíšiÅ¥ rovnaké JID v dvoch alebo viacerých Äastiach závislých na Äísle klientov pripojených na rovnaký server s rovnakým úÄtom. Takže môžete byÅ¥ pripojený na rovnaký úÄet so zdrojmi ako 'Doma' alebo 'V práci', v rovnakom Äase. Zdroj z najvyÅ¡Å¡ou prioritou získava udalosti (viÄ nižšie)" - -#: ../src/gtkgui.glade.h:238 -msgid "Resource:" -msgstr "Zdroj:" - -#: ../src/gtkgui.glade.h:239 -msgid "Role:" -msgstr "Rola:" - -#: ../src/gtkgui.glade.h:240 -msgid "Room Configuration" -msgstr "Konfigurácia miestnosti" - -#: ../src/gtkgui.glade.h:241 -msgid "Room:" -msgstr "MiestnosÅ¥:" - -#: ../src/gtkgui.glade.h:242 -msgid "Save _passphrase (insecure)" -msgstr "UložiÅ¥ _passfrázy (nie je bezpeÄné)" - -#: ../src/gtkgui.glade.h:243 -msgid "Save _position and size for roster and chat windows" -msgstr "UložiÅ¥ _pozíciu a veľkosÅ¥ zoznamu a diskusného okna" - -#: ../src/gtkgui.glade.h:244 -msgid "Save as Preset..." -msgstr "UložiÅ¥ ako prednastavené..." - -#: ../src/gtkgui.glade.h:245 -msgid "Save conversation _logs for all contacts" -msgstr "UložiÅ¥ _záznam z rozhovoru pre vÅ¡etky úÄty" - -#: ../src/gtkgui.glade.h:246 -msgid "Save pass_word" -msgstr "UložiÅ¥ hes_lo" - -#: ../src/gtkgui.glade.h:247 -msgid "Search" -msgstr "HľadaÅ¥" - -#: ../src/gtkgui.glade.h:248 -msgid "Sen_d" -msgstr "PoÅ¡_li" - -#: ../src/gtkgui.glade.h:249 -msgid "Send File" -msgstr "PoslaÅ¥ súbor" - -#: ../src/gtkgui.glade.h:250 -msgid "Send Single _Message" -msgstr "PoslaÅ¥ krátku _správu" - -#: ../src/gtkgui.glade.h:251 -msgid "Send Single _Message..." -msgstr "PoslaÅ¥ krátku _správu..." - -#: ../src/gtkgui.glade.h:252 -msgid "Send _File" -msgstr "PoslaÅ¥ _súbor" - -#: ../src/gtkgui.glade.h:253 -msgid "Send keep-alive packets" -msgstr "PoslaÅ¥ pakety na udržiavanie spojenia (keep-alive)" - -#: ../src/gtkgui.glade.h:254 -msgid "Send message" -msgstr "PoslaÅ¥ správu" - -#: ../src/gtkgui.glade.h:255 -msgid "Send message and close window" -msgstr "PoslaÅ¥ správu a zatvoriÅ¥ okno" - -#: ../src/gtkgui.glade.h:256 -msgid "Sends a message to currently connected users to this server" -msgstr "PosielaÅ¥ správy aktuálne pripojeným používateľom na tomto serveri" - -#: ../src/gtkgui.glade.h:257 -msgid "Server:" -msgstr "Server:" - -#: ../src/gtkgui.glade.h:258 -msgid "Servers Features" -msgstr "Vlastnosti servera" - -#: ../src/gtkgui.glade.h:259 -msgid "Set MOTD" -msgstr "NastaviÅ¥ správu dňa" - -#: ../src/gtkgui.glade.h:260 -msgid "Set _Avatar" -msgstr "NastaviÅ¥ _avatara" - -#: ../src/gtkgui.glade.h:261 -msgid "Set my profile when I connect" -msgstr "NastaviÅ¥ môj profil, keÄ som pripojený(á)" - -#: ../src/gtkgui.glade.h:262 -msgid "Sets Message of the Day" -msgstr "NastavovaÅ¥ správu dňa" - -#: ../src/gtkgui.glade.h:263 -msgid "Show All Pending _Events" -msgstr "ZobraziÅ¥ vÅ¡etky Äakajúce _udalosti" - -#: ../src/gtkgui.glade.h:264 -msgid "Show _Offline Contacts" -msgstr "ZobraziÅ¥ _offline kontakty" - -#: ../src/gtkgui.glade.h:265 -msgid "Show _Roster" -msgstr "ZobraziÅ¥ _zoznam" - -#: ../src/gtkgui.glade.h:266 -msgid "Show _XML Console" -msgstr "ZobraziÅ¥ _XML konzolu" - -#: ../src/gtkgui.glade.h:267 -msgid "Show only in _roster" -msgstr "ZobraziÅ¥ len v _zozname" - -#: ../src/gtkgui.glade.h:268 -msgid "Shows a list of file transfers between you and other" -msgstr "ZobraziÅ¥ zoznam súborov prenesených medzi vami a ostatnými" - -#: ../src/gtkgui.glade.h:269 -msgid "Sign _in" -msgstr "PrihlásiÅ¥ _sa" - -#: ../src/gtkgui.glade.h:270 -msgid "Sign _out" -msgstr "_OdhlásiÅ¥ sa" - -#: ../src/gtkgui.glade.h:271 -msgid "Sta_tus" -msgstr "S_tav" - -#: ../src/gtkgui.glade.h:272 -msgid "Start _Chat" -msgstr "ZaÄaÅ¥ _rozhovor" - -#: ../src/gtkgui.glade.h:273 -msgid "State:" -msgstr "Stav:" - -#: ../src/gtkgui.glade.h:274 -msgid "Status" -msgstr "Stav" - -#: ../src/gtkgui.glade.h:275 -msgid "Status:" -msgstr "Stav:" - -#: ../src/gtkgui.glade.h:276 -msgid "Street:" -msgstr "Ulica:" - -#: ../src/gtkgui.glade.h:277 -msgid "Subject:" -msgstr "Predmet:" - -#: ../src/gtkgui.glade.h:278 -msgid "Subscription Request" -msgstr "Požiadavka o zapísanie" - -#: ../src/gtkgui.glade.h:279 -msgid "Subscription:" -msgstr "Zápis:" - -#. Suffix in Name -#: ../src/gtkgui.glade.h:281 -msgid "Suffix:" -msgstr "Titul za:" - -#: ../src/gtkgui.glade.h:282 -msgid "Synch_ronize account status with global status" -msgstr "Syhch_ronizovaÅ¥ stav úÄtu s globálnym stavom" - -#: ../src/gtkgui.glade.h:283 -msgid "T_heme:" -msgstr "Té_ma:" - -#: ../src/gtkgui.glade.h:284 -msgid "Text _color:" -msgstr "Farba _textu:" - -#: ../src/gtkgui.glade.h:285 -msgid "Text _font:" -msgstr "_Písmo:" - -#: ../src/gtkgui.glade.h:286 -msgid "The auto away status message" -msgstr "Správa pri automatickej zmene stavu na PreÄ" - -#: ../src/gtkgui.glade.h:287 -msgid "The auto not available status message" -msgstr "Správa pri automatickej zmene stavu na Neprítomný(á)" - -#: ../src/gtkgui.glade.h:288 -msgid "This action removes single file transfer from the list. If the transfer is active, it is first stopped and then removed" -msgstr "Táto akcia odstráni jeden prenos súborov zo zoznamu. Ak je prenos aktívny, je najskôr zastavený a potom odstránený" - -#: ../src/gtkgui.glade.h:289 -msgid "Title:" -msgstr "Titul:" - -#: ../src/gtkgui.glade.h:290 -msgid "To:" -msgstr "Pre:" - -#: ../src/gtkgui.glade.h:291 -msgid "Toggle Open_PGP Encryption" -msgstr "Zapnúť Open_PGP Å¡ifrovanie" - -#: ../src/gtkgui.glade.h:292 -msgid "Type:" -msgstr "Typ:" - -#: ../src/gtkgui.glade.h:293 -msgid "Underline" -msgstr "PodÄiarknutie" - -#: ../src/gtkgui.glade.h:294 -msgid "Update MOTD" -msgstr "AktualizovaÅ¥ Správu dňa" - -#: ../src/gtkgui.glade.h:295 -msgid "Updates Message of the Day" -msgstr "AktualizovaÅ¥ Správy dňa" - -#: ../src/gtkgui.glade.h:296 -msgid "Use _SSL (legacy)" -msgstr "PoužiÅ¥ _SSL (historické dôvody)" - -#: ../src/gtkgui.glade.h:297 -msgid "Use _transports iconsets" -msgstr "PoužiÅ¥ _transportnú sadu obrázkov" - -#: ../src/gtkgui.glade.h:298 -msgid "Use authentication" -msgstr "PoužiÅ¥ autentifikáciu" - -#: ../src/gtkgui.glade.h:299 -msgid "Use custom hostname/port" -msgstr "PoužiÅ¥ vlastné nastavenie server/port" - -#: ../src/gtkgui.glade.h:300 -msgid "Use file transfer proxies" -msgstr "PoužiÅ¥ proxy pre prenos súborov" - -#: ../src/gtkgui.glade.h:301 -msgid "Use t_rayicon (aka. notification area icon)" -msgstr "_Ikonka v paneli (tj. v upozorňovacej oblasti)" - -#: ../src/gtkgui.glade.h:302 -msgid "User ID:" -msgstr "Používateľské ID:" - -#: ../src/gtkgui.glade.h:303 -msgid "When a file transfer is complete show a popup notification" -msgstr "KeÄ je prenos súboru dokonÄené zobraziÅ¥ popup upozornenie" - -#: ../src/gtkgui.glade.h:304 -msgid "When a new event (message, file transfer request etc..) is received, the following methods may be used to inform you about it. Please note that events about new messages only occur if it is a new message from a contact you are not already chatting with" -msgstr "KeÄ je prijatá nová udalosÅ¥ (správa, prenos súboru, atÄ..), nasledujúce metódy môžu byÅ¥ použité, aby ste boli(a) informavaný(á). Poznámka: Upozornenie na nové správy sa zobrazí len v prípade, že s kontaktom práve nediskutujete" - -#: ../src/gtkgui.glade.h:305 -msgid "When new event is received" -msgstr "KeÄ je prijatá nová udalosÅ¥" - -#: ../src/gtkgui.glade.h:306 -msgid "Work" -msgstr "Práca" - -#: ../src/gtkgui.glade.h:307 -msgid "" -"You need to have an account in order to connect\n" -"to the Jabber network." -msgstr "" -"Potrebujete maÅ¥ úÄet, aby ste sa mohli pripojiÅ¥\n" -"do Jabbrovskej siete." - -#: ../src/gtkgui.glade.h:309 -msgid "Your JID:" -msgstr "VaÅ¡e JID:" - -#. Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector) -#: ../src/gtkgui.glade.h:311 -msgid "_Actions" -msgstr "_Akcie" - -#: ../src/gtkgui.glade.h:312 -msgid "_Add Contact..." -msgstr "_PridaÅ¥ kontakt..." - -#: ../src/gtkgui.glade.h:313 -msgid "_Add to Roster" -msgstr "_PridaÅ¥ do zoznamu" - -#: ../src/gtkgui.glade.h:314 -msgid "_Address:" -msgstr "_Adresa:" - -#: ../src/gtkgui.glade.h:315 -msgid "_Admin" -msgstr "_Admin" - -#: ../src/gtkgui.glade.h:316 -msgid "_Administrator" -msgstr "_Administrátor" - -#: ../src/gtkgui.glade.h:317 -msgid "_Advanced" -msgstr "_Rozšírené" - -#: ../src/gtkgui.glade.h:318 -msgid "_After time:" -msgstr "_Po:" - -#: ../src/gtkgui.glade.h:319 -msgid "_Authorize" -msgstr "_AutorizovaÅ¥" - -#: ../src/gtkgui.glade.h:320 -msgid "_Background:" -msgstr "_Pozadie:" - -#: ../src/gtkgui.glade.h:321 -msgid "_Ban" -msgstr "_ZakázaÅ¥" - -#: ../src/gtkgui.glade.h:322 -msgid "_Before time:" -msgstr "Pred:" - -#: ../src/gtkgui.glade.h:323 -msgid "_Bookmark This Room" -msgstr "_UložiÅ¥ do záložiek túto miestnosÅ¥" - -#: ../src/gtkgui.glade.h:324 -msgid "_Browser:" -msgstr "_PrechádzaÅ¥:" - -#: ../src/gtkgui.glade.h:325 -msgid "_Cancel" -msgstr "_ZruÅ¡iÅ¥" - -#: ../src/gtkgui.glade.h:326 -msgid "_Compact View Alt+C" -msgstr "_Kompaktný pohľad Alt+C" - -#: ../src/gtkgui.glade.h:327 -msgid "_Contents" -msgstr "_Obsah dokumentácie" - -#: ../src/gtkgui.glade.h:329 -msgid "_Copy JID/Email Address" -msgstr "_SkopírovaÅ¥ JID/E-mailovú adresu" - -#: ../src/gtkgui.glade.h:330 -msgid "_Copy Link Location" -msgstr "_SkopírovaÅ¥ odkaz" - -#: ../src/gtkgui.glade.h:331 -msgid "_Deny" -msgstr "_ZakázaÅ¥" - -#: ../src/gtkgui.glade.h:332 -msgid "_Discover Services" -msgstr "_PreskúmaÅ¥ služby" - -#: ../src/gtkgui.glade.h:333 -msgid "_Discover Services..." -msgstr "_PreskúmaÅ¥ služby..." - -#: ../src/gtkgui.glade.h:335 -msgid "_FAQ" -msgstr "_ÄŒasto kladené otázky" - -#: ../src/gtkgui.glade.h:336 -msgid "_File manager:" -msgstr "_Správca súborov:" - -#: ../src/gtkgui.glade.h:337 -msgid "_Filter:" -msgstr "_Filter:" - -#: ../src/gtkgui.glade.h:338 -msgid "_Finish" -msgstr "_DokonÄiÅ¥" - -#: ../src/gtkgui.glade.h:339 -msgid "_Font:" -msgstr "_Font:" - -#: ../src/gtkgui.glade.h:340 -msgid "_Group Chat" -msgstr "Skupinový rozhovor" - -#: ../src/gtkgui.glade.h:341 -msgid "_Help" -msgstr "_Pomoc" - -#: ../src/gtkgui.glade.h:342 -msgid "_Highlight misspelled words" -msgstr "_ZvýrazniÅ¥ zle napísané slová" - -#: ../src/gtkgui.glade.h:343 -msgid "_History" -msgstr "_História" - -#: ../src/gtkgui.glade.h:344 -msgid "_Host:" -msgstr "_Server:" - -#. Info/Query: all(?) jabber xml start with Welcome to Gajim History Logs Manager\n" -"\n" -"You can select logs from the left and/or search database from below.\n" -"\n" -"WARNING:\n" -"If you plan to do massive deletions, please make sure Gajim is not running. Generally avoid deletions with contacts you currently chat with." +#: ../src/gtkgui_helpers.py:717 +#, fuzzy +msgid "Extension not supported" +msgstr "Dbus nie je podporovaný." + +#: ../src/gtkgui_helpers.py:718 +#, python-format +msgid "Image cannot be saved in %(type)s format. Save as %(new_filename)s?" msgstr "" -"Víta Vás Gajim History Logs Manager\n" -"\n" -"Môžete si vybraÅ¥ zo záznamov vľavo alebo môžete prehľadávaÅ¥ databázu.\n" -"\n" -"VAROVANIE:\n" -"Ak chete previesÅ¥ rozsiahlejÅ¡ie mazanie, prosím uistite sa, že Gajim nebeží. Zamedzíte tak prípadnému odstráneniu kontaktov, s ktorými práve komunikujete." -#: ../src/history_manager.glade.h:7 -msgid "Delete" -msgstr "ZmazaÅ¥" +#: ../src/gtkgui_helpers.py:727 +#, fuzzy +msgid "Save Image as..." +msgstr "UložiÅ¥ súbor ako..." -#: ../src/history_manager.glade.h:8 -msgid "Export" -msgstr "Export" - -#: ../src/history_manager.glade.h:9 -msgid "Gajim History Logs Manager" -msgstr "Gajim History Logs Manager" - -#: ../src/history_manager.glade.h:10 -msgid "_Search Database" -msgstr "_HľadaÅ¥ v databáze" - -#: ../src/history_manager.py:58 +#: ../src/history_manager.py:61 msgid "Cannot find history logs database" -msgstr "Nie je možné nájsÅ¥ databázu so záznamom histórie" +msgstr "Nie je možné nájsÅ¥ databázu so záznamami o histórii" #. holds jid -#: ../src/history_manager.py:102 +#: ../src/history_manager.py:104 +#, fuzzy msgid "Contacts" -msgstr "Kontakty" +msgstr "_Obsah dokumentácie" #. holds time -#: ../src/history_manager.py:115 -#: ../src/history_manager.py:155 -#: ../src/history_window.py:94 +#: ../src/history_manager.py:117 ../src/history_manager.py:157 +#: ../src/history_window.py:85 msgid "Date" msgstr "Dátum" #. holds nickname -#: ../src/history_manager.py:121 -#: ../src/history_manager.py:173 +#: ../src/history_manager.py:123 ../src/history_manager.py:175 +#, fuzzy msgid "Nickname" -msgstr "Prezývka" +msgstr "Prezývka:" #. holds message -#: ../src/history_manager.py:129 -#: ../src/history_manager.py:161 -#: ../src/history_window.py:102 +#: ../src/history_manager.py:131 ../src/history_manager.py:163 +#: ../src/history_window.py:93 msgid "Message" msgstr "Správa" #. holds subject -#: ../src/history_manager.py:136 -#: ../src/history_manager.py:167 +#: ../src/history_manager.py:138 ../src/history_manager.py:169 +#, fuzzy msgid "Subject" -msgstr "Predmet" - -#: ../src/history_manager.py:181 -msgid "Do you want to clean up the database? (STRONGLY NOT RECOMMENDED IF GAJIM IS RUNNING)" -msgstr "SkutoÄne si želáte vyprázdniÅ¥ celú databázu? (SILNE SA NEODPORÚČA SPÚŠŤAŤ V PRÃPADE, ŽE GAJIM BEŽÃ)" +msgstr "Predmet:" #: ../src/history_manager.py:183 +#, fuzzy msgid "" -"Normally allocated database size will not be freed, it will just become reusable. If you really want to reduce database filesize, click YES, else click NO.\n" +"Do you want to clean up the database? (STRONGLY NOT RECOMMENDED IF GAJIM IS " +"RUNNING)" +msgstr "SkutoÄne si želáte vyÄistiÅ¥ databázu?" + +#: ../src/history_manager.py:185 +msgid "" +"Normally allocated database size will not be freed, it will just become " +"reusable. If you really want to reduce database filesize, click YES, else " +"click NO.\n" "\n" "In case you click YES, please wait..." msgstr "" -"Za normálnych okolností kapacita, ktorú zaberá databáza nevude uvoľnená, ale bude pripravená na znovupoužitie. Ak si prajete skutoÄne zredukovaÅ¥ veľkosÅ¥ databázy Zvoľte Ãno, v opaÄnom prípade zvoľte Nie.\n" +"Za bežných okolností alokovaná kapacita pre databázu nebude uvoľnená, stane " +"sa len znovu použiteľná. Ak si želáte skutoÄne zredukovaÅ¥ veľkosÅ¥ súborov s " +"databázov, kliknite na Ãno, v opaÄnom prípade Nie.\n" "\n" -"V prípade, že zvolíte Ãno, prosíme o chvíľku strpeniat..." +"V prípade, že zvolite Ãno, prosíme o strpenie..." -#: ../src/history_manager.py:389 +#: ../src/history_manager.py:391 msgid "Exporting History Logs..." msgstr "Export záznamov histórie..." -#: ../src/history_manager.py:465 +#: ../src/history_manager.py:467 #, python-format msgid "%(who)s on %(time)s said: %(message)s\n" -msgstr "%(who)s na %(time)s povedal: %(message)s\n" +msgstr "%(who)s o %(time)s povedal(a): %(message)s\n" -#: ../src/history_manager.py:465 +#: ../src/history_manager.py:467 msgid "who" msgstr "kto" -#: ../src/history_manager.py:503 +#: ../src/history_manager.py:505 msgid "Do you really want to delete logs of the selected contact?" msgid_plural "Do you really want to delete logs of the selected contacts?" -msgstr[0] "SkutoÄne si prajete zmazaÅ¥ záznam histórie pre vybraný kontakt?" -msgstr[1] "SkutoÄne si prajete zmazaÅ¥ záznam histórie pre vybraný kontakty?" +msgstr[0] "" +"SkutoÄne si želáte zmazaÅ¥ záznamy histórie súvisiace s vybrabraným kontaktom?" +msgstr[1] "" +"SkutoÄne si želáte zmazaÅ¥ záznamy histórie súvisiace s vybrabranými " +"kontaktmi?" msgstr[2] "" -#: ../src/history_manager.py:507 -#: ../src/history_manager.py:543 +#: ../src/history_manager.py:509 ../src/history_manager.py:545 msgid "This is an irreversible operation." msgstr "Toto je nevratná operácia." -#: ../src/history_manager.py:540 +#: ../src/history_manager.py:542 msgid "Do you really want to delete the selected message?" msgid_plural "Do you really want to delete the selected messages?" -msgstr[0] "SkutoÄne si prajete odstrániÅ¥ vybranú správu?" -msgstr[1] "SkutoÄne si prajete odstrániÅ¥ vybrané správy?" +msgstr[0] "SkutoÄne si želáte zmazaÅ¥ vybranú správu?" +msgstr[1] "SkutoÄne si želáte zmazaÅ¥ vybrané správy?" msgstr[2] "" -#: ../src/history_window.py:111 -#: ../src/history_window.py:113 +#: ../src/history_window.py:102 ../src/history_window.py:104 #, python-format msgid "Conversation History with %s" msgstr "História konverzácie s %s" -#: ../src/history_window.py:265 +#: ../src/history_window.py:258 #, python-format msgid "%(nick)s is now %(status)s: %(status_msg)s" msgstr "%(nick)s je teraz %(status)s: %(status_msg)s" -#: ../src/history_window.py:269 +#: ../src/history_window.py:262 ../src/notify.py:113 #, python-format msgid "%(nick)s is now %(status)s" msgstr "%(nick)s je teraz %(status)s" -#: ../src/history_window.py:275 +#: ../src/history_window.py:268 #, python-format msgid "Status is now: %(status)s: %(status_msg)s" msgstr "Stav je teraz: %(status)s: %(status_msg)s" -#: ../src/history_window.py:278 +#: ../src/history_window.py:271 #, python-format msgid "Status is now: %(status)s" msgstr "Stav je teraz: %(status)s" -#: ../src/message_window.py:233 +#: ../src/message_window.py:244 msgid "Messages" msgstr "Správy" -#: ../src/message_window.py:234 +#: ../src/message_window.py:245 #, python-format msgid "%s - Gajim" msgstr "%s - Gajim" -#: ../src/roster_window.py:140 +#: ../src/notify.py:111 +#, fuzzy, python-format +msgid "%(nick)s Changed Status" +msgstr "%(nick)s je teraz %(status)s" + +#: ../src/notify.py:121 +#, fuzzy, python-format +msgid "%(nickname)s Signed In" +msgstr "Kontakt sa prihlasil" + +#: ../src/notify.py:129 +#, fuzzy, python-format +msgid "%(nickname)s Signed Out" +msgstr "Kontakt sa odhlásil" + +#: ../src/notify.py:141 +#, fuzzy, python-format +msgid "New Single Message from %(nickname)s" +msgstr "Nová jednoduchá správa" + +#: ../src/notify.py:150 +#, fuzzy, python-format +msgid "New Private Message from room %s" +msgstr "Nová privátna správa" + +#: ../src/notify.py:151 +#, fuzzy, python-format +msgid "%(nickname)s: %(message)s" +msgstr "%(who)s o %(time)s povedal(a): %(message)s\n" + +#: ../src/notify.py:157 +#, fuzzy, python-format +msgid "New Message from %(nickname)s" +msgstr "Nová správa ako %s" + +#: ../src/roster_window.py:131 msgid "Merged accounts" msgstr "SpojiÅ¥ úÄty" -#: ../src/roster_window.py:289 -#: ../src/common/helpers.py:42 +#: ../src/roster_window.py:288 ../src/common/helpers.py:39 msgid "Observers" msgstr "Pozorovatelia" -#: ../src/roster_window.py:542 +#: ../src/roster_window.py:544 #, python-format msgid "You are already in room %s" msgstr "Už ste v miestnosti %s" -#: ../src/roster_window.py:546 -#: ../src/roster_window.py:2262 +#: ../src/roster_window.py:548 ../src/roster_window.py:2280 msgid "You cannot join a room while you are invisible" msgstr "Nemôžete sa pripojiÅ¥ do miestnosti, pokiaľ ste neviditeľný(á)" #. the 'manage gc bookmarks' item is showed #. below to avoid duplicate code #. add -#: ../src/roster_window.py:735 +#: ../src/roster_window.py:748 #, python-format msgid "to %s account" msgstr "pre %s úÄet" #. disco -#: ../src/roster_window.py:742 +#: ../src/roster_window.py:755 #, python-format msgid "using %s account" msgstr "použiÅ¥ %s úÄet" -#. new message +#. new chat #. for chat_with #. for single message -#: ../src/roster_window.py:750 -#: ../src/systray.py:194 -#: ../src/systray.py:201 +#: ../src/roster_window.py:763 ../src/systray.py:193 ../src/systray.py:198 #, python-format msgid "using account %s" msgstr "použiÅ¥ %s úÄet" #. profile, avatar -#: ../src/roster_window.py:759 -#, python-format +#: ../src/roster_window.py:772 +#, fuzzy, python-format msgid "of account %s" -msgstr "úÄetu %s" +msgstr "pre úÄet %s" -#: ../src/roster_window.py:818 +#: ../src/roster_window.py:831 msgid "Manage Bookmarks..." msgstr "SpravovaÅ¥ záložky..." -#: ../src/roster_window.py:842 +#: ../src/roster_window.py:855 #, python-format msgid "for account %s" msgstr "pre úÄet %s" #. History manager -#: ../src/roster_window.py:863 +#: ../src/roster_window.py:876 +#, fuzzy msgid "History Manager" -msgstr "_Správca histórie" +msgstr "Gajim - správca histórie" -#: ../src/roster_window.py:872 +#: ../src/roster_window.py:885 msgid "_Join New Room" msgstr "_PripojiÅ¥ do novej miestnosti" -#: ../src/roster_window.py:1158 +#: ../src/roster_window.py:1159 #, python-format msgid "Transport \"%s\" will be removed" msgstr "Transport \"%s\" bude odstránený" -#: ../src/roster_window.py:1158 -msgid "You will no longer be able to send and receive messages to contacts from this transport." -msgstr "Už nebudete môcÅ¥ prijímaÅ¥ a odosielaÅ¥ správy k tomuto kontaktu cez tento transport." +#: ../src/roster_window.py:1159 +msgid "" +"You will no longer be able to send and receive messages to contacts from " +"this transport." +msgstr "" +"Už nebudete môcÅ¥ prijímaÅ¥ a odosielaÅ¥ správy k tomuto kontaktu cez tento " +"transport." -#: ../src/roster_window.py:1200 +#: ../src/roster_window.py:1201 msgid "Assign OpenPGP Key" msgstr "PriradiÅ¥ OpenPGP kľúÄ" -#: ../src/roster_window.py:1201 +#: ../src/roster_window.py:1202 msgid "Select a key to apply to the contact" msgstr "VybraÅ¥ kÄ¾ÃºÄ a aplikovaÅ¥ ho na kontakt" @@ -3725,124 +4403,135 @@ msgstr "_OdhlásiÅ¥" msgid "_Change Status Message" msgstr "_ZmeniÅ¥ správu o stave" -#: ../src/roster_window.py:1617 +#: ../src/roster_window.py:1621 msgid "Authorization has been sent" msgstr "Autorizácia bola odoslaná" -#: ../src/roster_window.py:1618 +#: ../src/roster_window.py:1622 #, python-format msgid "Now \"%s\" will know your status." msgstr "Od teraz bude \"%s\" vidieÅ¥ váš stav." -#: ../src/roster_window.py:1642 +#: ../src/roster_window.py:1646 msgid "Subscription request has been sent" msgstr "ŽiadosÅ¥ o zapísanie bola odoslaná" -#: ../src/roster_window.py:1643 +#: ../src/roster_window.py:1647 #, python-format msgid "If \"%s\" accepts this request you will know his or her status." msgstr "Ak \"%s\" akceptuje túto požiadavku, budete vidieÅ¥ jeho/jej stav." -#: ../src/roster_window.py:1654 +#: ../src/roster_window.py:1658 msgid "Authorization has been removed" msgstr "Autorizácia bola odstránená" -#: ../src/roster_window.py:1655 +#: ../src/roster_window.py:1659 #, python-format msgid "Now \"%s\" will always see you as offline." msgstr "Odteraz \"%s\" vás uvidí len v stave offline." -#: ../src/roster_window.py:1824 +#: ../src/roster_window.py:1822 #, python-format msgid "Contact \"%s\" will be removed from your roster" msgstr "Kontakt \"%s\" bude odstránený zo zoznamu" -#: ../src/roster_window.py:1828 -msgid "By removing this contact you also remove authorization resulting in him or her always seeing you as offline." -msgstr "Odstránením tohoto kontaktu, automaticky odstránite aj autorizáciu, to znamená, že ona/on vás vždy uvidí ako offline." +#: ../src/roster_window.py:1826 +#, fuzzy +msgid "" +"By removing this contact you also remove authorization resulting in him or " +"her always seeing you as offline." +msgstr "" +"Odstránením tohoto kontaktu, automaticky odstránite aj autorizáciu, to " +"znamená, že ona/on vás vždy uvidí ako offline." -#: ../src/roster_window.py:1832 -msgid "By removing this contact you also by default remove authorization resulting in him or her always seeing you as offline." -msgstr "Odstránením tohoto kontaktu, automaticky odstránite aj autorizáciu, to znamená, že ona/on vás vždy uvidí ako offline." +#: ../src/roster_window.py:1830 +msgid "" +"By removing this contact you also by default remove authorization resulting " +"in him or her always seeing you as offline." +msgstr "" +"Odstránením tohoto kontaktu, automaticky odstránite aj autorizáciu, to " +"znamená, že ona/on vás vždy uvidí ako offline." -#: ../src/roster_window.py:1833 +#: ../src/roster_window.py:1831 msgid "I want this contact to know my status after removal" msgstr "Chcem upozorniÅ¥ kontakt, na to, že bol odstránený" -#: ../src/roster_window.py:1901 +#: ../src/roster_window.py:1899 msgid "Passphrase Required" msgstr "Passfráza je požadovaná" -#: ../src/roster_window.py:1902 +#: ../src/roster_window.py:1900 #, python-format msgid "Enter GPG key passphrase for account %s." -msgstr "ZadaÅ¥ passfrázu GPG kÄ¾ÃºÄ pre úÄet %s." +msgstr "VložiÅ¥ passfrázu ku GPG kľúÄu pre úÄet %s." -#: ../src/roster_window.py:1907 +#: ../src/roster_window.py:1905 msgid "Save passphrase" msgstr "UložiÅ¥ passfrázu" -#: ../src/roster_window.py:1915 +#: ../src/roster_window.py:1913 msgid "Wrong Passphrase" -msgstr "Zlá passfráza" +msgstr "Nesprávna passfráza" -#: ../src/roster_window.py:1916 +#: ../src/roster_window.py:1914 msgid "Please retype your GPG passphrase or press Cancel." -msgstr "Prosím zadajte znova GPG passfrázu alebo stlaÄte ZruÅ¡iÅ¥." +msgstr "Prosím zadajte znova vaÅ¡u GPG passfrázu alebo stlaÄte ZruÅ¡iÅ¥." -#: ../src/roster_window.py:1964 -#: ../src/roster_window.py:2021 +#: ../src/roster_window.py:1963 ../src/roster_window.py:2020 msgid "You are participating in one or more group chats" msgstr "Ste v jednej alebo viacerých diskusných skupinách" -#: ../src/roster_window.py:1965 -#: ../src/roster_window.py:2022 -msgid "Changing your status to invisible will result in disconnection from those group chats. Are you sure you want to go invisible?" -msgstr "Zmena stavu na neviditeľný, automaticky spôsobí, že budete odpojený(á) zo skupinových diskusií. Ste si skutoÄne istý(á), že chcete zmeniÅ¥ stav na neviditeľný?" +#: ../src/roster_window.py:1964 ../src/roster_window.py:2021 +msgid "" +"Changing your status to invisible will result in disconnection from those " +"group chats. Are you sure you want to go invisible?" +msgstr "" +"Zmena stavu na neviditeľný, automaticky spôsobí, že budete odpojený(á) zo " +"skupinových diskusií. Ste si skutoÄne istý(á), že chcete zmeniÅ¥ stav na " +"neviditeľný?" -#: ../src/roster_window.py:1981 +#: ../src/roster_window.py:1980 msgid "No account available" msgstr "Žiadne úÄty nie sú dostupné" -#: ../src/roster_window.py:1982 +#: ../src/roster_window.py:1981 msgid "You must create an account before you can chat with other contacts." -msgstr "Musíte si vytvoriÅ¥ úÄet predtým, než budete môcÅ¥ komunikovaÅ¥ s ostatnými." +msgstr "" +"Musíte si vytvoriÅ¥ úÄet predtým, než budete môcÅ¥ komunikovaÅ¥ s ostatnými." -#: ../src/roster_window.py:2427 -#: ../src/roster_window.py:2433 +#: ../src/roster_window.py:2452 ../src/roster_window.py:2458 msgid "You have unread messages" msgstr "Máte nepreÄítané správy" -#: ../src/roster_window.py:2428 -#: ../src/roster_window.py:2434 -msgid "Messages will only be available for reading them later if you have history enabled." +#: ../src/roster_window.py:2453 ../src/roster_window.py:2459 +msgid "" +"Messages will only be available for reading them later if you have history " +"enabled." msgstr "Správu bude možné preÄítaÅ¥, ak máte povolenú históriu." -#: ../src/roster_window.py:3184 +#: ../src/roster_window.py:3231 #, python-format msgid "Drop %s in group %s" -msgstr "UmiestniÅ¥ %s do skupiy %s" +msgstr "VložiÅ¥ %s do skupiny %s" -#: ../src/roster_window.py:3191 -#, python-format +#: ../src/roster_window.py:3238 +#, fuzzy, python-format msgid "Make %s and %s metacontacts" -msgstr "VytvoriÅ¥ %s a %s meta-kontakty" +msgstr "ZmeniÅ¥ %s ako podkontakt pre %s" -#: ../src/roster_window.py:3358 +#: ../src/roster_window.py:3408 msgid "Change Status Message..." msgstr "ZmeniÅ¥ Správu o stave..." -#: ../src/systray.py:155 +#: ../src/systray.py:154 msgid "_Change Status Message..." msgstr "_ZmeniÅ¥ správu o stave..." -#: ../src/systray.py:236 +#: ../src/systray.py:231 msgid "Hide this menu" msgstr "UkryÅ¥ toto menu" -#: ../src/systraywin32.py:266 -#: ../src/systraywin32.py:285 -#: ../src/tooltips.py:315 +#: ../src/systraywin32.py:261 ../src/systraywin32.py:280 #, python-format msgid "Gajim - %d unread message" msgid_plural "Gajim - %d unread messages" @@ -3850,118 +4539,120 @@ msgstr[0] "Gajim - %d nepreÄítaná správa" msgstr[1] "Gajim - %d nepreÄítaných správ" msgstr[2] "" -#: ../src/tooltips.py:321 -#, python-format -msgid "Gajim - %d unread single message" -msgid_plural "Gajim - %d unread single messages" -msgstr[0] "Gajim - %d nepreÄítaná krátka správa" -msgstr[1] "Gajim - %d nepreÄítané krátke správy" +#: ../src/tooltips.py:326 +#, fuzzy, python-format +msgid " %d unread message" +msgid_plural " %d unread messages" +msgstr[0] "Gajim - %d nepreÄítaná správa" +msgstr[1] "Gajim - %d nepreÄítaných správ" msgstr[2] "" -#: ../src/tooltips.py:327 -#, python-format -msgid "Gajim - %d unread group chat message" -msgid_plural "Gajim - %d unread group chat messages" +#: ../src/tooltips.py:332 +#, fuzzy, python-format +msgid " %d unread single message" +msgid_plural " %d unread single messages" +msgstr[0] "Gajim - %d nepreÄítaná jednoduchá správa" +msgstr[1] "Gajim - %d nepreÄítané jednoduché správy" +msgstr[2] "" + +#: ../src/tooltips.py:338 +#, fuzzy, python-format +msgid " %d unread group chat message" +msgid_plural " %d unread group chat messages" msgstr[0] "Gajim - %d nepreÄítaná správa zo skupinovej diskusie" msgstr[1] "Gajim - %d nepreÄítané správy zo skupinovej diskusie" msgstr[2] "" -#: ../src/tooltips.py:333 -#, python-format -msgid "Gajim - %d unread private message" -msgid_plural "Gajim - %d unread private messages" +#: ../src/tooltips.py:344 +#, fuzzy, python-format +msgid " %d unread private message" +msgid_plural " %d unread private messages" msgstr[0] "Gajim - %d nepreÄítaná súkromná správa" msgstr[1] "Gajim - %d nepreÄítané súkromné správy" msgstr[2] "" -#: ../src/tooltips.py:348 -#: ../src/tooltips.py:350 +#: ../src/tooltips.py:359 ../src/tooltips.py:361 #, python-format msgid "Gajim - %s" msgstr "Gajim - %s" -#: ../src/tooltips.py:383 +#: ../src/tooltips.py:395 msgid "Role: " msgstr "Rola:" -#: ../src/tooltips.py:384 +#: ../src/tooltips.py:396 msgid "Affiliation: " msgstr "Pripojenie:" -#: ../src/tooltips.py:386 -#: ../src/tooltips.py:518 +#: ../src/tooltips.py:398 ../src/tooltips.py:537 msgid "Resource: " msgstr "Zdroj:" -#: ../src/tooltips.py:394 -#: ../src/tooltips.py:521 -#: ../src/tooltips.py:543 -#: ../src/tooltips.py:654 +#: ../src/tooltips.py:407 ../src/tooltips.py:540 ../src/tooltips.py:565 +#: ../src/tooltips.py:676 msgid "Status: " msgstr "Stav:" -#: ../src/tooltips.py:501 +#: ../src/tooltips.py:514 msgid "Subscription: " msgstr "Zápis:" -#: ../src/tooltips.py:510 +#: ../src/tooltips.py:523 msgid "OpenPGP: " msgstr "OpenPGP: " -#: ../src/tooltips.py:548 +#: ../src/tooltips.py:570 #, python-format msgid "Last status on %s" -msgstr "Posledný stav - %s" +msgstr "Posledná informácia o %s" -#: ../src/tooltips.py:550 +#: ../src/tooltips.py:572 #, python-format msgid "Since %s" -msgstr "Od: %s" +msgstr "Od %s" -#: ../src/tooltips.py:610 +#: ../src/tooltips.py:632 msgid "Download" msgstr "StiahnuÅ¥" -#: ../src/tooltips.py:616 +#: ../src/tooltips.py:638 msgid "Upload" msgstr "Upload" -#: ../src/tooltips.py:623 +#: ../src/tooltips.py:645 msgid "Type: " msgstr "Typ: " -#: ../src/tooltips.py:629 +#: ../src/tooltips.py:651 msgid "Transferred: " msgstr "Prenesené:" -#: ../src/tooltips.py:632 -#: ../src/tooltips.py:653 +#: ../src/tooltips.py:654 ../src/tooltips.py:675 msgid "Not started" msgstr "NezaÄal" -#: ../src/tooltips.py:636 +#: ../src/tooltips.py:658 msgid "Stopped" msgstr "Zastavený" -#: ../src/tooltips.py:638 -#: ../src/tooltips.py:641 +#: ../src/tooltips.py:660 ../src/tooltips.py:663 msgid "Completed" msgstr "DokonÄený" #. stalled is not paused. it is like 'frozen' it stopped alone -#: ../src/tooltips.py:649 +#: ../src/tooltips.py:671 msgid "Stalled" msgstr "Uviaznutý" -#: ../src/tooltips.py:651 +#: ../src/tooltips.py:673 msgid "Transferring" msgstr "Prenášanie" -#: ../src/tooltips.py:683 +#: ../src/tooltips.py:705 msgid "This service has not yet responded with detailed information" msgstr "Táto služba neodpovedala podrobnejšími informáciami" -#: ../src/tooltips.py:686 +#: ../src/tooltips.py:708 msgid "" "This service could not respond with detailed information.\n" "It is most likely legacy or broken" @@ -3970,152 +4661,202 @@ msgstr "" "Je pravdepodobne zastaralá alebo poÅ¡kodená" #. keep identation -#: ../src/vcard.py:186 +#: ../src/vcard.py:188 msgid "Could not load image" -msgstr "Nie je možné naÄítaÅ¥ obrázok." +msgstr "Nie je možné naÄítaÅ¥ obrázok" -#: ../src/vcard.py:262 +#: ../src/vcard.py:289 msgid "?Client:Unknown" msgstr "?Klient: Neznámy" -#: ../src/vcard.py:264 +#: ../src/vcard.py:291 msgid "?OS:Unknown" msgstr "?OS:Neznámy" -#: ../src/vcard.py:281 +#: ../src/vcard.py:308 #, python-format msgid "since %s" msgstr "od %s" -#: ../src/vcard.py:305 -msgid "This contact is interested in your presence information, but you are not interested in his/her presence" -msgstr "Tento kontakt sa zaujíma o vaÅ¡e informácie o prítomnosti, ale vy sa nezaujímate o jeho/jej informácie o prítomnosti" +#: ../src/vcard.py:332 +msgid "" +"This contact is interested in your presence information, but you are not " +"interested in his/her presence" +msgstr "" +"Tento kontakt sa zaujíma o vaÅ¡e informácie o prítomnosti, ale vy sa " +"nezaujímate o jeho/jej informácie o prítomnosti" -#: ../src/vcard.py:307 -msgid "You are interested in the contact's presence information, but he/she is not interested in yours" -msgstr "Zaujímate sa o informácie o prítomnosti vášho kontaktu, ale on/ona sa nezaujíma o vaÅ¡e" +#: ../src/vcard.py:334 +msgid "" +"You are interested in the contact's presence information, but he/she is not " +"interested in yours" +msgstr "" +"Zaujímate sa o informácie o prítomnosti vášho kontaktu, ale on/ona sa " +"nezaujíma o vaÅ¡e" -#: ../src/vcard.py:309 +#: ../src/vcard.py:336 msgid "You and the contact are interested in each other's presence information" -msgstr "Vy aj váš kontakt sa vzájomne zaujímate o informácie o vaÅ¡ej a jeho/jej prítomnosti" +msgstr "" +"Vy aj váš kontakt sa vzájomne zaujímate o informácie o vaÅ¡ej a jeho/jej " +"prítomnosti" #. None -#: ../src/vcard.py:311 -msgid "You are not interested in the contact's presence, and neither he/she is interested in yours" -msgstr "Nezaujímate sa o informácie o prítomnosti vášho kontaktu a ani on/ona sa nezaujíma o vaÅ¡e" +#: ../src/vcard.py:338 +msgid "" +"You are not interested in the contact's presence, and neither he/she is " +"interested in yours" +msgstr "" +"Nezaujímate sa o informácie o prítomnosti vášho kontaktu a ani on/ona sa " +"nezaujíma o vaÅ¡e" -#: ../src/vcard.py:320 +#: ../src/vcard.py:347 msgid "You are waiting contact's answer about your subscription request" msgstr "ÄŒakáte na odpoveÄ od kontaktu - ohľadne vaÅ¡ej požiadavky na zápis" -#: ../src/vcard.py:332 -#: ../src/vcard.py:355 +#: ../src/vcard.py:359 ../src/vcard.py:382 msgid " resource with priority " msgstr "priorita zdroja" -#: ../src/vcard.py:434 +#: ../src/vcard.py:458 msgid "Without a connection you can not publish your contact information." msgstr "Bez pripojenie nemôžete publikovaÅ¥ informácie o vaÅ¡om kontakte." -#: ../src/vcard.py:463 +#: ../src/vcard.py:491 msgid "Without a connection, you can not get your contact information." msgstr "Bez pripojenia, nemôžete získaÅ¥ informácie o kontakte." -#: ../src/vcard.py:467 +#: ../src/vcard.py:495 msgid "Personal details" msgstr "Osobné detaily" -#: ../src/common/check_paths.py:39 +#: ../src/common/check_paths.py:35 msgid "creating logs database" msgstr "vytváranie záznamov databáz" -#: ../src/common/check_paths.py:84 -#: ../src/common/check_paths.py:95 -#: ../src/common/check_paths.py:102 +#: ../src/common/check_paths.py:82 ../src/common/check_paths.py:93 +#: ../src/common/check_paths.py:100 #, python-format msgid "%s is file but it should be a directory" msgstr "%s je súbor, ale mal by to byÅ¥ adresár" -#: ../src/common/check_paths.py:85 -#: ../src/common/check_paths.py:96 -#: ../src/common/check_paths.py:103 -#: ../src/common/check_paths.py:110 +#: ../src/common/check_paths.py:83 ../src/common/check_paths.py:94 +#: ../src/common/check_paths.py:101 ../src/common/check_paths.py:109 msgid "Gajim will now exit" msgstr "Gajim bude ukonÄený" -#: ../src/common/check_paths.py:109 +#: ../src/common/check_paths.py:108 #, python-format msgid "%s is directory but should be file" msgstr "%s je adresár, ale mal by byÅ¥ súbor" -#: ../src/common/check_paths.py:125 +#: ../src/common/check_paths.py:124 #, python-format msgid "creating %s directory" msgstr "vytvorenie %s adresára" -#: ../src/common/exceptions.py:35 +#: ../src/common/exceptions.py:32 msgid "pysqlite2 (aka python-pysqlite2) dependency is missing. Exiting..." msgstr "chýbajúca závislosÅ¥ na pysqlite2 (aka python-pysqlite2). UkonÄenie..." -#: ../src/common/exceptions.py:43 +#: ../src/common/exceptions.py:40 msgid "Service not available: Gajim is not running, or remote_control is False" -msgstr "Služba nie je dostupná: Gajim nebeží alebo ovládanie vzdialeného Gajimu vrátilo False" +msgstr "" +"Služba nie je dostupná: Gajim nebeží alebo ovládanie vzdialeného Gajimu " +"vrátilo False" -#: ../src/common/exceptions.py:51 +#: ../src/common/exceptions.py:48 msgid "D-Bus is not present on this machine or python module is missing" msgstr "D-Bus nie je prítomný na tomto stroji alebo chýba modul pre Python" -#: ../src/common/exceptions.py:59 +#: ../src/common/exceptions.py:56 msgid "" "Session bus is not available.\n" "Try reading http://trac.gajim.org/wiki/GajimDBus" msgstr "" -"Session bus nie je dostupný.\n" -"Viac informácií nájdete na http://trac.gajim.org/wiki/GajimDBus" -#: ../src/common/config.py:53 +#: ../src/common/config.py:51 msgid "Use DBus and Notification-Daemon to show notifications" msgstr "PoužiÅ¥ DBus a Notification-Daemon pre zobrazenie upozornení" -#: ../src/common/config.py:57 +#: ../src/common/config.py:55 msgid "Time in minutes, after which your status changes to away." msgstr "ÄŒas v minútach, po ktorých sa zmení stav na PreÄ." -#: ../src/common/config.py:58 +#: ../src/common/config.py:56 msgid "Away as a result of being idle" msgstr "PreÄ ako výsledok neÄinnosti" -#: ../src/common/config.py:60 +#: ../src/common/config.py:58 msgid "Time in minutes, after which your status changes to not available." msgstr "ÄŒas v minútach, po ktorých sa zmení stav na Neprítomný(á)" -#: ../src/common/config.py:61 +#: ../src/common/config.py:59 msgid "Not available as a result of being idle" msgstr "Neprítomný(á) ako výsledok neÄinnosti" -#: ../src/common/config.py:88 -msgid "Treat * / _ pairs as possible formatting characters." -msgstr "PoužiÅ¥ * / _ páry ako možné formátovacie reÅ¥azce." +#: ../src/common/config.py:77 +msgid "List (space separated) of rows (accounts and groups) that are collapsed" +msgstr "" -#: ../src/common/config.py:89 -msgid "If True, do not remove */_ . So *abc* will be bold but with * * not removed." -msgstr "Ak je pravda, neodstaňuj */_ . Takže *abc* bude teÄné a * * nebude odstránené." +#: ../src/common/config.py:83 +msgid "" +"'always' - print time for every message.\n" +"'sometimes' - print time every print_ichat_every_foo_minutes minute.\n" +"'never' - never print time." +msgstr "" + +#: ../src/common/config.py:84 +msgid "" +"Value of fuzziness from 1 to 4 or 0 to disable fuzzyclock. 1 is the most " +"precise clock, 4 the less precise one." +msgstr "" + +#: ../src/common/config.py:87 +msgid "Treat * / _ pairs as possible formatting characters." +msgstr "PoužiÅ¥ * / _ pár znakov ako možné formátovacie znaky." + +#: ../src/common/config.py:88 +msgid "" +"If True, do not remove */_ . So *abc* will be bold but with * * not removed." +msgstr "" +"Ak je pravda, neodstaňuj */_ . Takže *abc* bude teÄné a * * nebude " +"odstránené." + +#: ../src/common/config.py:98 +msgid "" +"Character to add after nickname when using nick completion (tab) in group " +"chat" +msgstr "" + +#: ../src/common/config.py:99 +msgid "" +"Character to propose to add after desired nickname when desired nickname is " +"used by someone else in group chat" +msgstr "" #: ../src/common/config.py:131 msgid "Add * and [n] in roster title?" msgstr "PridaÅ¥ * a [n] do titulku zoznamu?" #: ../src/common/config.py:132 -msgid "How many lines to remember from previous conversation when a chat tab/window is reopened." -msgstr "Koľko riadkov si pamätaÅ¥ z predchádzajúceho rozhovoru, keÄ bude okno/záložka znovu otvorená." +msgid "" +"How many lines to remember from previous conversation when a chat tab/window " +"is reopened." +msgstr "" +"Koľko riadkov si pamätaÅ¥ z predchádzajúceho rozhovoru, keÄ bude okno/záložka " +"znovu otvorená." #: ../src/common/config.py:133 msgid "How many minutes should last lines from previous conversation last." msgstr "Koľko minút má maÅ¥ posledný riadok z poslednej konverzácie." #: ../src/common/config.py:134 -msgid "Send message on Ctrl+Enter and with Enter make new line (Mirabilis ICQ Client default behaviour)." -msgstr "PoslaÅ¥ správu pri stlaÄení Ctrl+Enter a pri Enter spraviÅ¥ nový riadok (chovanie podobné ako Mirabilis ICQ klient)" +msgid "" +"Send message on Ctrl+Enter and with Enter make new line (Mirabilis ICQ " +"Client default behaviour)." +msgstr "" +"PoslaÅ¥ správu pri stlaÄení Ctrl+Enter a pri Enter spraviÅ¥ nový riadok " +"(chovanie podobné ako Mirabilis ICQ klient)" #: ../src/common/config.py:136 msgid "How many lines to store for Ctrl+KeyUP." @@ -4123,27 +4864,48 @@ msgstr "Koľko riadkov posunúť pri stlaÄení Ctrl+šípka hore." #: ../src/common/config.py:139 #, python-format -msgid "Either custom url with %s in it where %s is the word/phrase or 'WIKTIONARY' which means use wiktionary." -msgstr "Ani url s %s kde je %s slovo/fráza alebo 'WIKTIONARY' Äo znamená použitie wiktionary." +msgid "" +"Either custom url with %s in it where %s is the word/phrase or 'WIKTIONARY' " +"which means use wiktionary." +msgstr "" +"Ani url s %s kde je %s slovo/fráza alebo 'WIKTIONARY' Äo znamená použitie " +"wiktionary." #: ../src/common/config.py:142 msgid "If checked, Gajim can be controlled remotely using gajim-remote." -msgstr "Ak je zaÅ¡krtnuté, Gajim môže byÅ¥ ovládaný na diaľku s použitím gajim-remote." +msgstr "" +"Ak je zaÅ¡krtnuté, Gajim môže byÅ¥ ovládaný na diaľku s použitím gajim-remote." + +#: ../src/common/config.py:145 +msgid "" +"When not printing time for every message (print_time==sometimes), print it " +"every x minutes" +msgstr "" #: ../src/common/config.py:146 msgid "Ask before closing a group chat tab/window." msgstr "SpýtaÅ¥ sa pred zatvorením okna/záložky pre skupinovú diskusiu." #: ../src/common/config.py:147 -msgid "Always ask before closing group chat tab/window in this space separated list of room jids." -msgstr "Vždy sa spýtaÅ¥ sa pred zatvorením okna/záložky pre skupinovú diskusiu." +msgid "" +"Always ask before closing group chat tab/window in this space separated list " +"of room jids." +msgstr "" +"SpýtaÅ¥ sa vždy pred zatvorením okna/záložky pre skupinový rozhovor, ktorej " +"meno je uvedené v zozname oddelenom medzerov." #: ../src/common/config.py:148 -msgid "Never ask before closing group chat tab/window in this space separated list of room jids." -msgstr "Nikdy sa nepýtaÅ¥ sa pred zatvorením okna/záložky pre skupinovú diskusiu." +msgid "" +"Never ask before closing group chat tab/window in this space separated list " +"of room jids." +msgstr "" +"Nikdy sa nepýtaÅ¥ pred zatvorením okna/záložky pre skupinovú diskusiu, ktorej " +"meno je Å¡pecifikované v zozname oddelenom medzerami" #: ../src/common/config.py:151 -msgid "Overrides the host we send for File Transfer in case of address translation/port forwarding." +msgid "" +"Overrides the host we send for File Transfer in case of address translation/" +"port forwarding." msgstr "PotlaÄí server pre Prenos súborov, pri preklade/forwarde portu." #: ../src/common/config.py:153 @@ -4155,7 +4917,8 @@ msgid "Show tab when only one conversation?" msgstr "UkázaÅ¥ záložku len ak prebieha konverzácia?" #: ../src/common/config.py:162 -msgid "Show tab border if one conversation?" +#, fuzzy +msgid "Show tabbed notebook border in chat windows?" msgstr "ZobraziÅ¥ okraj ak niekto konverzuje?" #: ../src/common/config.py:163 @@ -4163,247 +4926,322 @@ msgid "Show close button in tab?" msgstr "ZobraziÅ¥ zatváracie tlaÄidlo v záložke?" #: ../src/common/config.py:176 -msgid "A semicolon-separated list of words that will be highlighted in multi-user chat." -msgstr "BodkoÄiarkou oddelený zoznam slov bude zvýraznený rozhovore s viacerými používateľmi." +msgid "" +"A semicolon-separated list of words that will be highlighted in multi-user " +"chat." +msgstr "" +"BodkoÄiarkou oddelený zoznam slov bude zvýraznený rozhovore s viacerými " +"používateľmi." #: ../src/common/config.py:177 -msgid "If True, quits Gajim when X button of Window Manager is clicked. This setting is taken into account only if trayicon is used." -msgstr "Ak je pravda, Gajim skonÄí keÄ bude X tlaÄidlo vo Window manažéri stlaÄené. Toto nastavenie je použíté, len v prípade, že sa používa trayicon. " +msgid "" +"If True, quits Gajim when X button of Window Manager is clicked. This " +"setting is taken into account only if trayicon is used." +msgstr "" +"Ak je pravda, Gajim skonÄí keÄ bude X tlaÄidlo vo Window manažéri stlaÄené. " +"Toto nastavenie je použíté, len v prípade, že sa používa trayicon. " #: ../src/common/config.py:178 msgid "If True, Gajim registers for xmpp:// on each startup." msgstr "Ak je pravda, Gajim bude registrovaný pre xmpp:// pri každom spustení." #: ../src/common/config.py:179 -msgid "If True, Gajim will display an icon on each tab containing unread messages. Depending on the theme, this icon may be animated." -msgstr "Ak je pravda, Gajim zobrazí ikonku na každej záložke obsahujúcej nepreÄítané správy. Závisí na téme, ikonka môže byÅ¥ animovaná." +msgid "" +"If True, Gajim will display an icon on each tab containing unread messages. " +"Depending on the theme, this icon may be animated." +msgstr "" +"Ak je pravda, Gajim zobrazí ikonku na každej záložke obsahujúcej nepreÄítané " +"správy. Závisí na téme, ikonka môže byÅ¥ animovaná." #: ../src/common/config.py:180 -msgid "If True, Gajim will display the status message, if not empty, for every contact under the contact name in roster window" -msgstr "Ak je pravda, Gajim zobrazí stavovú správu, ak nie je prázdna, pre každý kontakt v zozname." +msgid "" +"If True, Gajim will display the status message, if not empty, for every " +"contact under the contact name in roster window" +msgstr "" +"Ak je pravda, Gajim zobrazí stavovú správu, ak nie je prázdna, pre každý " +"kontakt v zozname." #: ../src/common/config.py:182 -msgid "If True, Gajim will ask for avatar each contact that did not have an avatar last time or has one cached that is too old." -msgstr "Ak je pravda, Gajim si vyžiada avatara, pre každý kontakt, ktorý nemá avatara z posledného spojenia, alebo ak nie je cache príliÅ¡ zastaralá." +msgid "" +"If True, Gajim will ask for avatar each contact that did not have an avatar " +"last time or has one cached that is too old." +msgstr "" +"Ak je pravda, Gajim si vyžiada avatara, pre každý kontakt, ktorý nemá " +"avatara z posledného spojenia, alebo ak nie je cache príliÅ¡ zastaralá." + +#: ../src/common/config.py:183 +#, fuzzy +msgid "" +"If False, Gajim will no longer print status line in chats when a contact " +"changes his or her status and/or his or her status message." +msgstr "" +"Ak nie je pravda, nebudete vidieÅ¥ riadok o zmene stavu kontaktu a jeho/jej " +"stavovú správu" -#. FIXME: remove you and make it Gajim will not; and/or his or *her* status messages #: ../src/common/config.py:184 -msgid "If False, you will no longer see status line in chats when a contact changes his or her status and/or his status message." -msgstr "Ak nie je pravda, nebudete vidieÅ¥ riadok o zmene stavu kontaktu a jeho/jej stavovú správu" +msgid "" +"can be \"none\", \"all\" or \"in_and_out\". If \"none\", Gajim will no " +"longer print status line in groupchats when a member changes his or her " +"status and/or his or her status message. If \"all\" Gajim will print all " +"status messages. If \"in_and_out\", gajim will only print FOO enters/leaves " +"room" +msgstr "" + +#: ../src/common/config.py:187 +msgid "Don't show avatar for the transport itself." +msgstr "" #: ../src/common/config.py:189 -msgid "If True and installed GTK+ and PyGTK versions are at least 2.8, make the window flash (the default behaviour in most Window Managers) when holding pending events." -msgstr "Ak je Pravda a GTK+ je nainÅ¡talované a PyGTK nainÅ¡talované vo verzii aspoň 2.8, potom bude okno blikaÅ¥ (bežné správanie pre väÄÅ¡inu Window manažérov), keÄ sa udeje nejaká udalosÅ¥." +msgid "" +"If True and installed GTK+ and PyGTK versions are at least 2.8, make the " +"window flash (the default behaviour in most Window Managers) when holding " +"pending events." +msgstr "" +"Ak je Pravda a GTK+ je nainÅ¡talované a PyGTK nainÅ¡talované vo verzii aspoň " +"2.8, potom bude okno blikaÅ¥ (bežné správanie pre väÄÅ¡inu Window manažérov), " +"keÄ sa udeje nejaká udalosÅ¥." #: ../src/common/config.py:191 -msgid "Jabberd1.4 does not like sha info when one join a password protected room. Turn this option to False to stop sending sha info in groupchat presences" -msgstr "Jabberd1.4 nezdieľa informácie, keÄ sa používateľ pripojí do miestnosti chránenej heslom. Zmeňte túto možnosÅ¥ na Vypnuté, aby sa neposielali informácie o prítomnosti v diskusnej skupine." +msgid "" +"Jabberd1.4 does not like sha info when one join a password protected room. " +"Turn this option to False to stop sending sha info in groupchat presences" +msgstr "" +"Jabberd1.4 nezdieľa informácie, keÄ sa používateľ pripojí do miestnosti " +"chránenej heslom. Zmeňte túto možnosÅ¥ na Vypnuté, aby sa neposielali " +"informácie o prítomnosti v diskusnej skupine." -#: ../src/common/config.py:193 +#. always, never, peracct, pertype should not be translated +#: ../src/common/config.py:194 msgid "" "Controls the window where new messages are placed.\n" "'always' - All messages are sent to a single window.\n" "'never' - All messages get their own window.\n" "'peracct' - Messages for each account are sent to a specific window.\n" -"'pertype' - Each message type (e.g., chats vs. groupchats) are sent to a specific window. Note, changing this option requires restarting Gajim before the changes will take effect" +"'pertype' - Each message type (e.g., chats vs. groupchats) are sent to a " +"specific window. Note, changing this option requires restarting Gajim before " +"the changes will take effect" msgstr "" "Nastavuje okno, kam sú umiestňované nové správy.\n" "'vždy' - VÅ¡etky správy sa zobrazia v jednom okne.\n" "'nikdy' - Každá správa má svoje vlastné okno.\n" -"'podľa úÄtu' - Správy pre jednotlivé úÄty sú zobrazované v jednotlivých oknách.\n" -"'podľa typu' - Každý typ správy (e.g., rozhovor vs. skupinová diskusia) sú zobrazené v samostatnom okne. Poznámka: pre aplikovanie zmeny tohoto nastavenia, je nutné reÅ¡tartovaÅ¥ Gajim" +"'podľa úÄtu' - Správy pre jednotlivé úÄty sú zobrazované v jednotlivých " +"oknách.\n" +"'podľa typu' - Každý typ správy (e.g., rozhovor vs. skupinová diskusia) sú " +"zobrazené v samostatnom okne. Poznámka: pre aplikovanie zmeny tohoto " +"nastavenia, je nutné reÅ¡tartovaÅ¥ Gajim" -#: ../src/common/config.py:194 +#: ../src/common/config.py:195 msgid "If False, you will no longer see the avatar in the chat window" msgstr "Ak je Vypnuté, neuvidíte avatarov v diskusnom okne" -#: ../src/common/config.py:195 -msgid "If True, pressing the escape key closes a tab/window" -msgstr "Ak je pravda, stlaÄením klávesy ESC bude zatvorená záložka/okno" - #: ../src/common/config.py:196 -msgid "Hides the buttons in group chat window" -msgstr "Ukryje tlaÄidlá pri skupinovej diskusii" +msgid "If True, pressing the escape key closes a tab/window" +msgstr "Ak je pravda, stlaÄením escape klávesy zatvoríte tab/okno" #: ../src/common/config.py:197 -msgid "Hides the buttons in two persons chat window" -msgstr "Ukryje tlaÄidlá pri diskusii medzi dvoma osobami" +#, fuzzy +msgid "Hides the buttons in group chat window" +msgstr "SpýtaÅ¥ sa pred zatvorením okna/záložky pre skupinovú diskusiu." #: ../src/common/config.py:198 -msgid "Hides the banner in a group chat window" -msgstr "Ukryje banner v okne so skupinovou diskusiou" +msgid "Hides the buttons in two persons chat window" +msgstr "" #: ../src/common/config.py:199 -msgid "Hides the banner in two persons chat window" -msgstr "Skryje banner pri diskusií medzi dvoma osobami" +#, fuzzy +msgid "Hides the banner in a group chat window" +msgstr "SpýtaÅ¥ sa pred zatvorením okna/záložky pre skupinovú diskusiu." #: ../src/common/config.py:200 +msgid "Hides the banner in two persons chat window" +msgstr "" + +#: ../src/common/config.py:201 msgid "Hides the room occupants list in groupchat window" -msgstr "Skryje zoznam návÅ¡tevníkov v miestnosti v okne so skupinovou diskusiou." +msgstr "" + +#: ../src/common/config.py:202 +msgid "Merge consecutive nickname in chat window" +msgstr "" + +#: ../src/common/config.py:203 +msgid "Indentation when using merge consecutive nickame" +msgstr "" + +#: ../src/common/config.py:204 +msgid "List of colors that will be used to color nicknames in groupchats" +msgstr "" #. yes, no, ask -#: ../src/common/config.py:233 -msgid "Jabberd2 workaround" -msgstr "Jabberd2 rozšírenie" - #: ../src/common/config.py:237 -msgid "If checked, Gajim will use your IP and proxies defined in file_transfer_proxies option for file transfer." -msgstr "Ak je zaÅ¡krtnuté, Gajim použije vaÅ¡u IP adresu a adresy proxy definovaných v file_transfer_proxies, pre prenos súborov." +msgid "Jabberd2 workaround" +msgstr "" -#: ../src/common/config.py:290 +#: ../src/common/config.py:241 +msgid "" +"If checked, Gajim will use your IP and proxies defined in " +"file_transfer_proxies option for file transfer." +msgstr "" + +#: ../src/common/config.py:297 msgid "Sleeping" -msgstr "Spiaci" +msgstr "Spím" -#: ../src/common/config.py:291 +#: ../src/common/config.py:298 msgid "Back soon" msgstr "HneÄ som späť" -#: ../src/common/config.py:291 +#: ../src/common/config.py:298 msgid "Back in some minutes." msgstr "Som späť za pár minút." -#: ../src/common/config.py:292 +#: ../src/common/config.py:299 msgid "Eating" msgstr "Jedlo" -#: ../src/common/config.py:292 +#: ../src/common/config.py:299 msgid "I'm eating, so leave me a message." msgstr "Práve jem, prosím nechajte mi odkaz." -#: ../src/common/config.py:293 +#: ../src/common/config.py:300 msgid "Movie" msgstr "Film" -#: ../src/common/config.py:293 +#: ../src/common/config.py:300 msgid "I'm watching a movie." msgstr "Pozerám film." -#: ../src/common/config.py:294 +#: ../src/common/config.py:301 msgid "Working" msgstr "Pracujem" -#: ../src/common/config.py:294 +#: ../src/common/config.py:301 msgid "I'm working." msgstr "Pracujem." -#: ../src/common/config.py:295 +#: ../src/common/config.py:302 msgid "Phone" -msgstr "Telefón" +msgstr "Telefónujem" -#: ../src/common/config.py:295 +#: ../src/common/config.py:302 msgid "I'm on the phone." msgstr "Mám hovor." -#: ../src/common/config.py:296 +#: ../src/common/config.py:303 msgid "Out" msgstr "Vonku" -#: ../src/common/config.py:296 +#: ../src/common/config.py:303 msgid "I'm out enjoying life" msgstr "Å iel som von užívaÅ¥ si život." -#: ../src/common/config.py:305 -msgid "Sound to play when a MUC message contains one of the words in muc_highlight_words, or when a MUC message contains your nickname." -msgstr "PrehraÅ¥ zvuk keÄ MUC správa obsahuje slová, ktoré sú v moc_highlihgt_words, alebo keÄ MUC správa obsahuje vaÅ¡u prezývku." +#: ../src/common/config.py:312 +msgid "" +"Sound to play when a MUC message contains one of the words in " +"muc_highlight_words, or when a MUC message contains your nickname." +msgstr "" +"PrehraÅ¥ zvuk keÄ MUC správa obsahuje slová, ktoré sú v moc_highlihgt_words, " +"alebo keÄ MUC správa obsahuje vaÅ¡u prezývku." -#: ../src/common/config.py:306 -msgid "Sound to play when any MUC message arrives. (This setting is taken into account only if notify_on_all_muc_messages is True)" -msgstr "PrehraÅ¥ zvuk keÄ príde akákoľvek MUC správa (Toto nastavenie sa vzÅ¥ahuje len na úÄet, ak notify_on_all_muc_message je pravda)" +#: ../src/common/config.py:313 +msgid "" +"Sound to play when any MUC message arrives. (This setting is taken into " +"account only if notify_on_all_muc_messages is True)" +msgstr "" +"PrehraÅ¥ zvuk keÄ príde akákoľvek MUC správa (Toto nastavenie sa vzÅ¥ahuje len " +"na úÄet, ak notify_on_all_muc_message je pravda)" -#: ../src/common/config.py:314 -#: ../src/common/optparser.py:181 +#: ../src/common/config.py:321 ../src/common/optparser.py:185 msgid "green" msgstr "zelená" -#: ../src/common/config.py:318 -#: ../src/common/optparser.py:167 +#: ../src/common/config.py:325 ../src/common/optparser.py:171 msgid "grocery" msgstr "obchod s potravinami" -#: ../src/common/config.py:322 +#: ../src/common/config.py:329 msgid "human" msgstr "Älovek" -#: ../src/common/config.py:326 +#: ../src/common/config.py:333 msgid "marine" msgstr "námornícka" -#: ../src/common/connection.py:152 +#: ../src/common/connection.py:172 #, python-format msgid "Connection with account \"%s\" has been lost" msgstr "Spojenie s úÄtom \"%s\" bolo stratené" -#: ../src/common/connection.py:153 +#: ../src/common/connection.py:173 msgid "To continue sending and receiving messages, you will need to reconnect." -msgstr "Pre pokraÄovanie odosielania a prijímania správ, sa musíte znovu pripojiÅ¥." +msgstr "" +"Pre pokraÄovanie odosielania a prijímania správ, sa musíte znovu pripojiÅ¥." -#: ../src/common/connection.py:169 -#: ../src/common/connection.py:195 +#: ../src/common/connection.py:185 ../src/common/connection.py:211 #, python-format msgid "Transport %s answered wrongly to register request." -msgstr "Transport %s vrátil nekorektnú odpoveÄ na požiadavku o registráciu." +msgstr "Transport %s odpovedal nekorektne na registraÄnú požiadavky." #. wrong answer -#: ../src/common/connection.py:194 +#: ../src/common/connection.py:210 msgid "Invalid answer" msgstr "Nesprávna odpoveÄ" -#: ../src/common/connection.py:348 -#: ../src/common/connection.py:384 -#: ../src/common/connection.py:754 +#: ../src/common/connection.py:397 ../src/common/connection.py:433 +#: ../src/common/connection.py:857 #, python-format msgid "Could not connect to \"%s\"" msgstr "Nie je možné pripojiÅ¥ sa k \"%s\"" -#: ../src/common/connection.py:362 +#: ../src/common/connection.py:411 #, python-format msgid "Connected to server %s:%s with %s" msgstr "Pripojený na server %s:%s s %s" -#: ../src/common/connection.py:385 +#: ../src/common/connection.py:434 msgid "Check your connection or try again later" msgstr "Skontrolujte svoje pripojenie alebo skúste neskôr" -#: ../src/common/connection.py:410 +#: ../src/common/connection.py:459 #, python-format msgid "Authentication failed with \"%s\"" msgstr "Autentifikácia bola neúspeÅ¡ná s \"%s\"" -#: ../src/common/connection.py:411 +#: ../src/common/connection.py:460 msgid "Please check your login and password for correctness." msgstr "Prosím, skontrolujte správnosÅ¥ prihlasovacieho mena a hesla." #. We didn't set a passphrase -#: ../src/common/connection.py:487 +#: ../src/common/connection.py:573 msgid "OpenPGP passphrase was not given" msgstr "OpenPGP passfráza nebola zadaná" #. %s is the account name here -#: ../src/common/connection.py:489 +#: ../src/common/connection.py:575 #, python-format msgid "You will be connected to %s without OpenPGP." msgstr "Budete pripojený(á) k %s bez OpenPGP." #. do not show I'm invisible! -#: ../src/common/connection.py:526 +#: ../src/common/connection.py:612 msgid "invisible" msgstr "neviditeľný" -#: ../src/common/connection.py:527 +#: ../src/common/connection.py:613 msgid "offline" msgstr "offline" -#: ../src/common/connection.py:528 +#: ../src/common/connection.py:614 #, python-format msgid "I'm %s" msgstr "Som %s" #. we're not english -#: ../src/common/connection.py:611 +#: ../src/common/connection.py:699 msgid "[This message is encrypted]" msgstr "[Táto správa je Å¡ifrovaná]" -#: ../src/common/connection.py:649 +#: ../src/common/connection.py:742 #, python-format msgid "" "Subject: %s\n" @@ -4412,271 +5250,314 @@ msgstr "" "Predmet: %s\n" "%s" -#: ../src/common/connection.py:699 +#: ../src/common/connection.py:795 ../src/common/connection_handlers.py:1511 msgid "I would like to add you to my roster." msgstr "Chcel by som si Å¥a pridaÅ¥ do môjho zoznamu." -#: ../src/common/helpers.py:103 +#: ../src/common/connection_handlers.py:49 +msgid "Unable to load idle module" +msgstr "Nie je možné nahraÅ¥ idle modul" + +#: ../src/common/connection_handlers.py:581 +#, python-format +msgid "Registration information for transport %s has not arrived in time" +msgstr "RedistraÄné informácie pre službu %s nedorazili vÄas" + +#. password required to join +#. we are banned +#. room does not exist +#: ../src/common/connection_handlers.py:1450 +#: ../src/common/connection_handlers.py:1453 +#: ../src/common/connection_handlers.py:1456 +#: ../src/common/connection_handlers.py:1459 +#: ../src/common/connection_handlers.py:1462 +#: ../src/common/connection_handlers.py:1465 +#: ../src/common/connection_handlers.py:1473 +msgid "Unable to join room" +msgstr "Nie je možné vstúpiÅ¥ do miestnosti" + +#: ../src/common/connection_handlers.py:1451 +msgid "A password is required to join this room." +msgstr "Pre vstup do miestnosti je požadované heslo." + +#: ../src/common/connection_handlers.py:1454 +msgid "You are banned from this room." +msgstr "Vstup do miestnosti vám bol zakázaný." + +#: ../src/common/connection_handlers.py:1457 +msgid "Such room does not exist." +msgstr "Takáto miestnosÅ¥ neexistuje." + +#: ../src/common/connection_handlers.py:1460 +msgid "Room creation is restricted." +msgstr "Vytváranie miestností je obmedzené." + +#: ../src/common/connection_handlers.py:1463 +msgid "Your registered nickname must be used." +msgstr "Musíte použiÅ¥ vaÅ¡u zaregistrovanú prezývku." + +#: ../src/common/connection_handlers.py:1466 +msgid "You are not in the members list." +msgstr "Nie ste v zozname." + +#: ../src/common/connection_handlers.py:1474 +msgid "" +"Your desired nickname is in use or registered by another occupant.\n" +"Please specify another nickname below:" +msgstr "" +"Požadovaná prezývka je používaná alebo už je registrovaná iným Älenom.\n" +"Prosím zadajte inú prezývku:" + +#. BE CAREFUL: no con.updateRosterItem() in a callback +#: ../src/common/connection_handlers.py:1519 +#, python-format +msgid "we are now subscribed to %s" +msgstr "sme prihlásení k %s" + +#: ../src/common/connection_handlers.py:1521 +#, python-format +msgid "unsubscribe request from %s" +msgstr "požiadavka na odhlásenie od %s" + +#: ../src/common/connection_handlers.py:1523 +#, python-format +msgid "we are now unsubscribed from %s" +msgstr "sme odhlásení od %s" + +#: ../src/common/connection_handlers.py:1680 +#, python-format +msgid "" +"JID %s is not RFC compliant. It will not be added to your roster. Use roster " +"management tools such as http://jru.jabberstudio.org/ to remove it" +msgstr "" +"JID %s nevyhovuje RFC Å¡pecifikácii. Nebude pridaný do vášho zoznamu. Použite " +"nástroje na správu zoznamu, napríklad: http://jru.jabberstudio.org/ pre jeho " +"odstránenie" + +#: ../src/common/helpers.py:100 msgid "Invalid character in username." msgstr "Nepovolený znak v mene úÄtu." -#: ../src/common/helpers.py:108 +#: ../src/common/helpers.py:105 msgid "Server address required." msgstr "Adresa serveru je požadovaná:" -#: ../src/common/helpers.py:113 +#: ../src/common/helpers.py:110 msgid "Invalid character in hostname." msgstr "Nesprávny znak v mene servera." -#: ../src/common/helpers.py:119 +#: ../src/common/helpers.py:116 msgid "Invalid character in resource." msgstr "Nepovolený znak v zdroji." #. GiB means gibibyte -#: ../src/common/helpers.py:159 +#: ../src/common/helpers.py:156 #, python-format msgid "%s GiB" msgstr "%s GiB" #. GB means gigabyte -#: ../src/common/helpers.py:162 +#: ../src/common/helpers.py:159 #, python-format msgid "%s GB" msgstr "%s GB" #. MiB means mibibyte -#: ../src/common/helpers.py:166 +#: ../src/common/helpers.py:163 #, python-format msgid "%s MiB" msgstr "%s MiB" #. MB means megabyte -#: ../src/common/helpers.py:169 +#: ../src/common/helpers.py:166 #, python-format msgid "%s MB" msgstr "%s MB" #. KiB means kibibyte -#: ../src/common/helpers.py:173 +#: ../src/common/helpers.py:170 #, python-format msgid "%s KiB" msgstr "%s KiB" #. KB means kilo bytes -#: ../src/common/helpers.py:176 +#: ../src/common/helpers.py:173 #, python-format msgid "%s KB" msgstr "%s KB" #. B means bytes -#: ../src/common/helpers.py:179 +#: ../src/common/helpers.py:176 #, python-format msgid "%s B" msgstr "%s B" -#: ../src/common/helpers.py:189 +#: ../src/common/helpers.py:205 msgid "_Busy" msgstr "_Zaneprázdnený" -#: ../src/common/helpers.py:191 +#: ../src/common/helpers.py:207 msgid "Busy" msgstr "Zaneprázdnený" -#: ../src/common/helpers.py:194 +#: ../src/common/helpers.py:210 msgid "_Not Available" msgstr "_Neprítomný" -#: ../src/common/helpers.py:196 +#: ../src/common/helpers.py:212 msgid "Not Available" msgstr "Neprítomný" -#: ../src/common/helpers.py:199 +#: ../src/common/helpers.py:215 msgid "_Free for Chat" -msgstr "_Chcem si podebatovaÅ¥" +msgstr "_Mám Äas na debatu" -#: ../src/common/helpers.py:201 +#: ../src/common/helpers.py:217 msgid "Free for Chat" -msgstr "Chcem si podebatovaÅ¥" +msgstr "Mám Äas na debatu" -#: ../src/common/helpers.py:204 +#: ../src/common/helpers.py:220 msgid "_Available" msgstr "_Prítomný" -#: ../src/common/helpers.py:206 +#: ../src/common/helpers.py:222 msgid "Available" msgstr "Prítomný" -#: ../src/common/helpers.py:208 +#: ../src/common/helpers.py:224 msgid "Connecting" msgstr "Pripájanie" -#: ../src/common/helpers.py:211 +#: ../src/common/helpers.py:227 msgid "A_way" msgstr "PreÄ" -#: ../src/common/helpers.py:213 +#: ../src/common/helpers.py:229 msgid "Away" msgstr "PreÄ" -#: ../src/common/helpers.py:216 +#: ../src/common/helpers.py:232 msgid "_Offline" msgstr "_Offline" -#: ../src/common/helpers.py:218 +#: ../src/common/helpers.py:234 msgid "Offline" msgstr "Offline" -#: ../src/common/helpers.py:221 +#: ../src/common/helpers.py:237 msgid "_Invisible" msgstr "_Neviditeľný" -#: ../src/common/helpers.py:223 -msgid "Invisible" -msgstr "Neviditeľný" - -#: ../src/common/helpers.py:227 +#: ../src/common/helpers.py:243 msgid "?contact has status:Unknown" msgstr "?kontakt má stav:Neznámy" -#: ../src/common/helpers.py:229 +#: ../src/common/helpers.py:245 msgid "?contact has status:Has errors" msgstr "?kontakt má stav:Chyba" -#: ../src/common/helpers.py:234 +#: ../src/common/helpers.py:250 msgid "?Subscription we already have:None" msgstr "?Zápis už máme:NiÄ" -#: ../src/common/helpers.py:236 +#: ../src/common/helpers.py:252 msgid "To" msgstr "Pre" -#: ../src/common/helpers.py:238 +#: ../src/common/helpers.py:254 msgid "From" msgstr "Od" -#: ../src/common/helpers.py:240 +#: ../src/common/helpers.py:256 msgid "Both" msgstr "Oba" -#: ../src/common/helpers.py:248 +#: ../src/common/helpers.py:264 msgid "?Ask (for Subscription):None" msgstr "?VyžiadaÅ¥ (zápis): NiÄ" -#: ../src/common/helpers.py:250 +#: ../src/common/helpers.py:266 msgid "Subscribe" msgstr "ZapísaÅ¥" -#: ../src/common/helpers.py:259 +#: ../src/common/helpers.py:275 msgid "?Group Chat Contact Role:None" msgstr "?Skupinová diskusia - rola: NiÄ" -#: ../src/common/helpers.py:262 +#: ../src/common/helpers.py:278 msgid "Moderators" msgstr "Moderátori" -#: ../src/common/helpers.py:264 +#: ../src/common/helpers.py:280 msgid "Moderator" msgstr "Moderátor" -#: ../src/common/helpers.py:267 +#: ../src/common/helpers.py:283 msgid "Participants" msgstr "ÚÄastníci" -#: ../src/common/helpers.py:269 +#: ../src/common/helpers.py:285 msgid "Participant" msgstr "ÚÄastník" -#: ../src/common/helpers.py:272 +#: ../src/common/helpers.py:288 msgid "Visitors" msgstr "NávÅ¡tevníci" -#: ../src/common/helpers.py:274 +#: ../src/common/helpers.py:290 msgid "Visitor" msgstr "NávÅ¡tevník" -#: ../src/common/helpers.py:310 +#: ../src/common/helpers.py:326 msgid "is paying attention to the conversation" msgstr "sleduje konverzáciu" -#: ../src/common/helpers.py:312 +#: ../src/common/helpers.py:328 msgid "is doing something else" msgstr "robí nieÄo iné" -#: ../src/common/helpers.py:314 +#: ../src/common/helpers.py:330 msgid "is composing a message..." msgstr "píše správu..." #. paused means he or she was compoing but has stopped for a while -#: ../src/common/helpers.py:317 +#: ../src/common/helpers.py:333 msgid "paused composing a message" msgstr "prestal písaÅ¥ správu" -#: ../src/common/helpers.py:319 +#: ../src/common/helpers.py:335 msgid "has closed the chat window or tab" msgstr "zatvoril okno alebo záložku" #. we talk about a file -#: ../src/common/optparser.py:62 +#: ../src/common/optparser.py:60 #, python-format msgid "error: cannot open %s for reading" msgstr "chyba: nie je možné otvoriÅ¥ %s na Äítanie" -#: ../src/common/optparser.py:167 +#: ../src/common/optparser.py:171 msgid "gtk+" -msgstr "gtk+" +msgstr "" -#: ../src/common/optparser.py:176 -#: ../src/common/optparser.py:177 +#: ../src/common/optparser.py:180 ../src/common/optparser.py:181 msgid "cyan" msgstr "azúrová" -#~ msgid "Would you like to overwrite it?" -#~ msgstr "Prajete si prepísaÅ¥ ho?" -#~ msgid "_Join New Room..." -#~ msgstr "_PripojiÅ¥ sa do novej miestnosti..." -#~ msgid "Usage: /%s, sets the groupchat window to compact mode." -#~ msgstr "" -#~ "Použitie: /%s, nastaví okno pre skupinový rozhovor do kompaktného módu." - -#, fuzzy -#~ msgid "Please modify your special notification below" -#~ msgstr "Prosím, vyberte jednu z možností:" -#~ msgid "Ad_vanced Actions" -#~ msgstr "_Rozšírené akcie" -#~ msgid "Delete Message of the Day" -#~ msgstr "ZmazaÅ¥ správu dňa" - -#, fuzzy -#~ msgid "I want a notification popup:" -#~ msgstr "ZmeniÅ¥ upozornen_ie na stav:" - -#, fuzzy -#~ msgid "I want to listen to:" -#~ msgstr "%s vám chce poslaÅ¥ súbor:" -#~ msgid "Send _New Message..." -#~ msgstr "PoslaÅ¥ _novú správu..." -#~ msgid "Set Message of the Day" -#~ msgstr "NastaviÅ¥ správu dňa" -#~ msgid "Update Message of the Day" -#~ msgstr "AktualizovaÅ¥ Správu dňa" -#~ msgid "_XML Console..." -#~ msgstr "_XML konzola" -#~ msgid "Choose Avatar" -#~ msgstr "VybraÅ¥ avatara" -#~ msgid "Use compact view when you open a chat window" -#~ msgstr "PoužiÅ¥ kompaktný pohľad pri otvorení nového diskusného okna" -#~ msgid "Use compact view when you open a group chat window" -#~ msgstr "PoužiÅ¥ kompaktný pohľad pri otvorení okna skupinovej diskusie" -#~ msgid "plain" -#~ msgstr "jednoduchá" #~ msgid "Send" #~ msgstr "PoslaÅ¥" + +#~ msgid "Would you like to overwrite it?" +#~ msgstr "Prajete si ho prepísaÅ¥?" + #~ msgid "%(nickname)s in room %(room_name)s has sent you a new message." #~ msgstr "%(nickname)s v miestnosti %(room_name)s vám poslal(a) správu." + #~ msgid "%s has sent you a new message." #~ msgstr "%s vám poslal(a) správu." + #~ msgid "GUI Migration failed" -#~ msgstr "Migrácia prostredníctvo grafického rozhrania zlyhala" +#~ msgstr "Migrácia prostredníctvom grafického rozhrania zlyhala" + #~ msgid "" #~ "Logs migration through graphical interface failed. The migration process " #~ "will start in the background. Please wait a few minutes for Gajim to " @@ -4685,126 +5566,208 @@ msgstr "azúrová" #~ "Migrácia záznamov konverzácie prostredníctvom grafického nástroja " #~ "neuspela. Proces migrácie bude spustený na pozadí. Prosím poÄkajte pár " #~ "minút, kým sa Gajim spustí." + #~ msgid "Logs have been successfully migrated to the database." #~ msgstr "Záznamy boli úspeÅ¡ne prenesené do databázy." + +#~ msgid "Usage: /%s, sets the groupchat window to compact mode." +#~ msgstr "" +#~ "Použitie: /%s, nastaví okno pre skupinový rozhovor do kompaktného módu." + +#~ msgid "Please modify your special notification below" +#~ msgstr "Prosím, zmente upozornenie na jedno z uvedeného zoznamu:" + +#~ msgid "Automatically authorize contact" +#~ msgstr "Automaticky autorizovaÅ¥ kontakt" + +#~ msgid "" +#~ "Available\n" +#~ "Free for Chat\n" +#~ "Available or Free for Chat\n" +#~ "Away\n" +#~ "Not Available\n" +#~ "Away or Not Available\n" +#~ "Busy\n" +#~ "Not Available or Busy\n" +#~ "Offline" +#~ msgstr "" +#~ "Prítomný(á)\n" +#~ "Mám Äas na debatu\n" +#~ "Prítomný(á) alebo má Äas na debatu\n" +#~ "PreÄ\n" +#~ "Neprítomný(á)\n" +#~ "PreÄ alebo neprítomný(á)\n" +#~ "Zaneprázdnený(á)\n" +#~ "Neprítomný(á) alebo zaneprázdnený(á)\n" +#~ "Offline" + +#~ msgid "Delete Message of the Day" +#~ msgstr "ZmazaÅ¥ správu dňa" + +#~ msgid "I want a notification popup:" +#~ msgstr "Chcem byÅ¥ upozornený(á) prostredníctvom popup:" + +#~ msgid "I want to listen to:" +#~ msgstr "Chcem poÄúvaÅ¥ na:" + #~ msgid "If checked, Gajim will also have a trayicon" #~ msgstr "Ak je zaÅ¡krtnuté, Gajim bude zobrazovaÅ¥ trayicon" + +#~ msgid "" +#~ "No Sound\n" +#~ "Select Sound..." +#~ msgstr "" +#~ "Bez zvuku\n" +#~ "VybraÅ¥ zvuk..." + +#~ msgid "Send File" +#~ msgstr "PoslaÅ¥ súbor" + +#~ msgid "Send _New Message..." +#~ msgstr "PoslaÅ¥ _novú správu..." + +#~ msgid "Set Message of the Day" +#~ msgstr "NastaviÅ¥ správu dňa" + +#~ msgid "Underline" +#~ msgstr "PodÄiarknutie" + +#~ msgid "Update Message of the Day" +#~ msgstr "AktualizovaÅ¥ Správu dňa" + +#~ msgid "" +#~ "Yes\n" +#~ "No" +#~ msgstr "" +#~ "Ãno\n" +#~ "Nie" + +#~ msgid "_Join New Room..." +#~ msgstr "_PripojiÅ¥ sa do novej miestnosti..." + #~ msgid "_Online Users" #~ msgstr "_Onlien používatelia" -#, fuzzy +#~ msgid "_XML Console..." +#~ msgstr "_XML konzola" + #~ msgid "Start Chat with Contact" -#~ msgstr "ZaÄaÅ¥ rozhovor s úÄtom %s" +#~ msgstr "ZaÄaÅ¥ rozhovor s kontaktom %s" + #~ msgid "All contacts in this group are offline or have errors" #~ msgstr "VÅ¡etky kontakty v tejto skupine sú offline, alebo doÅ¡lo k chybe" + #~ msgid "Size: " #~ msgstr "VeľkosÅ¥:" + +#~ msgid "Choose Avatar" +#~ msgstr "VybraÅ¥ avatara" + #~ msgid "Session bus is not available" #~ msgstr "Session bus nie je prístupný" -#~ msgid "Unable to load idle module" -#~ msgstr "Nie je možné nahraÅ¥ idle modul" -#~ msgid "Unable to join room" -#~ msgstr "Nie je možné vstúpiÅ¥ do miestnosti" -#~ msgid "A password is required to join this room." -#~ msgstr "Pre vstup do miestnosti je požadované heslo." -#~ msgid "You are banned from this room." -#~ msgstr "Vstup do miestnosti vám bol zakázaný." -#~ msgid "Such room does not exist." -#~ msgstr "Takáto miestnosÅ¥ neexistuje." -#~ msgid "Room creation is restricted." -#~ msgstr "Vytváranie miestností je obmedzené." -#~ msgid "Your registered nickname must be used." -#~ msgstr "Musíte použiÅ¥ vaÅ¡u zaregistrovanú prezývku." -#~ msgid "You are not in the members list." -#~ msgstr "Nie ste v zozname." -#~ msgid "" -#~ "Your desired nickname is in use or registered by another occupant.\n" -#~ "Please specify another nickname below:" -#~ msgstr "" -#~ "Požadovaná prezývka je používaná alebo už je registrovaná iným Älenom.\n" -#~ "Prosím zadajte inú prezývku:" -#~ msgid "we are now subscribed to %s" -#~ msgstr "sme prihlásení k %s" -#~ msgid "unsubscribe request from %s" -#~ msgstr "požiadavka na odhlásenie od %s" -#~ msgid "we are now unsubscribed from %s" -#~ msgstr "sme odhlásení od %s" -#~ msgid "" -#~ "JID %s is not RFC compliant. It will not be added to your roster. Use " -#~ "roster management tools such as http://jru.jabberstudio.org/ to remove it" -#~ msgstr "" -#~ "JID %s nevyhovuje RFC Å¡pecifikácii. Nebude pridaný do vášho zoznamu. " -#~ "Použite nástroje na správu zoznamu, napríklad: http://jru.jabberstudio." -#~ "org/ pre jeho odstránenie" -#~ msgid "Registration information for transport %s has not arrived in time" -#~ msgstr "RedistraÄné informácie pre službu %s nedorazili vÄas" + +#~ msgid "Use compact view when you open a chat window" +#~ msgstr "PoužiÅ¥ kompaktný pohľad pri otvorení nového diskusného okna" + +#~ msgid "Use compact view when you open a group chat window" +#~ msgstr "PoužiÅ¥ kompaktný pohľad pri otvorení okna skupinovej diskusie" + +#~ msgid "plain" +#~ msgstr "jednoduchá" + #~ msgid "Sound" #~ msgstr "Zvuk" + #~ msgid "Text" #~ msgstr "Text" + #~ msgid "Image" #~ msgstr "Obrázok" + #~ msgid "Read AUTHORS file for full list including past developers" #~ msgstr "" #~ "PreÄítajte si súbor AUTHORS, kde je uvedený zoznam vÅ¡etkých vývojárov" + #~ msgid "From %s" #~ msgstr "Od %s" + #~ msgid "To %s" #~ msgstr "Pre %s" + #~ msgid "You have been invited to the %(room_jid)s room by %(contact_jid)s" #~ msgstr "Boli ste pozvaný(á) do %(room_jid)s miestnosti - %(contact_jid)s" + #~ msgid "" #~ "Animated\n" #~ "Static" #~ msgstr "" #~ "Animovaný\n" #~ "Statický" + #~ msgid "Manage Emoticons" #~ msgstr "UpraviÅ¥ emotikony" + #~ msgid "Or choose a preset message:" #~ msgstr "Alebo vyberte jednu zo správ:" + #~ msgid "Use _emoticons" #~ msgstr "PoužiÅ¥ _emotikony" + #~ msgid "_Set Image..." #~ msgstr "_NastaviÅ¥ obrázok..." + #~ msgid "Switch to %s" #~ msgstr "Prepnúť na %s" + #~ msgid "using account " #~ msgstr "použiÅ¥ úÄet" + #~ msgid "The filesize of image \"%s\" is too large" #~ msgstr "Obrázok \"%s\" je príliÅ¡ veľký" + #~ msgid "The file must not be more than 32 kilobytes." #~ msgstr "Súbor nemôže maÅ¥ viac než 32 kilobatov." + #~ msgid "A list of rooms that do not require confirmation before closing" #~ msgstr "Zoznam miestností, ktoré nevyžadujú potvrdenie pred zatvorením" + #~ msgid "Timeout" #~ msgstr "ÄŒas vyprÅ¡al" + #~ msgid "A protocol error has occured:" #~ msgstr "Objavila sa chyba v protokole:" + #~ msgid "account: " #~ msgstr "úÄet:" + #~ msgid "Are you sure you want to leave rooms \"%s\"?" #~ msgstr "Ste si istý, že chcete opustiÅ¥ miestnosti \"%s\"?" + #~ msgid "If you close this window, you will be disconnected from these rooms." #~ msgstr "Ak zatvoríte toto okno, budete odpojený(á) z týchto miestností." + #~ msgid "Activate/Disable notification for when a file transfer is complete" #~ msgstr "AktivovaÅ¥/deaktivovaÅ¥ upozorňovanie pri dokonÄení penosu súboru" + #~ msgid "Removing selected file transfer" #~ msgstr "Odstraňovanie vybraných prenosov súborov" + #~ msgid "Stoping selected file transfer" #~ msgstr "Zastavovanie vybraných prenosov súborov" -#~ msgid "Use a single chat window with _tabs" -#~ msgstr "PoužiÅ¥ jedno okno na rozhovor so _záložkami" + #~ msgid "" #~ "If you close this tab and you have history disabled, the message will be " #~ "lost." #~ msgstr "" #~ "Ak zatvoríte túto záložku a máte deaktivovanú históriu, správa bude " #~ "stratená." + #~ msgid "Cannot remove last group" #~ msgstr "Nie je možné odstrániÅ¥ poslednú skupinu" + #~ msgid "At least one contact group must be present." #~ msgstr "Minimálne jedna skupina kontaktov musí zostaÅ¥." + #~ msgid "" #~ "pysqlite2 (aka python-pysqlite2) dependency is missing. After you install " #~ "pysqlite3, if you want to migrate your logs to the new database, please " @@ -4814,30 +5777,38 @@ msgstr "azúrová" #~ "záznamy rozhovorov, po inÅ¡talácii pysqlite3, do novej databázy, prosím " #~ "preÄítajte si dokument: http://trac.gajim.org/wiki/MigrateLogToDot9DB " #~ "UkonÄovanie..." + #~ msgid "Image is too big" #~ msgstr "Obrázok je príliÅ¡ veľký" + #~ msgid "" #~ "Image for emoticon has to be less than or equal to 24 pixels in width and " #~ "24 in height." #~ msgstr "" #~ "Obrázok pre emotikon má menej alebo práve 24 pixelov šírku a 24 pixelov " #~ "výšku." + #~ msgid "Changes in latest version" #~ msgstr "Zmeny v poslednej verzii" + #~ msgid "Check for new _version on Gajim startup" #~ msgstr "SkontrolovaÅ¥ nové _verzie Gajimu pri Å¡tarte" + #~ msgid "Log history" #~ msgstr "Záznam histórie" + #~ msgid "New version of Gajim available" #~ msgstr "Je dostupná nová verzia Gajimu" + #~ msgid "Open Download Page" #~ msgstr "Otvor SÅ¥ahovaciu stránku" + #~ msgid "(%s/s)" #~ msgstr "(%s/s)" -#~ msgid "Dbus is not supported." -#~ msgstr "Dbus nie je podporovaný." + #~ msgid "Service not available" #~ msgstr "Služba nie je dostupná" + #~ msgid "Session bus is not available." #~ msgstr "Session bus nie je dostupný." @@ -4848,22 +5819,30 @@ msgstr "azúrová" #, fuzzy #~ msgid "with account " #~ msgstr "úÄet:" + #~ msgid "Chat with" #~ msgstr "RozprávaÅ¥ sa s" + #~ msgid "Send New Message" #~ msgstr "PoslaÅ¥ novú správu" + #~ msgid "as %s" #~ msgstr "ako %s" + #~ msgid "as " #~ msgstr "ako" + #~ msgid "Re_quest Authorization from" #~ msgstr "Pož_iadavka na autorizáciu od" + #~ msgid "Send Authorization to" #~ msgstr "PoslaÅ¥ autorizáciu" + #~ msgid "Send _New Message" #~ msgstr "PoslaÅ¥ _novú sprábu" + #~ msgid "Error:" #~ msgstr "Chyba:" + #~ msgid "error appeared while processing xmpp:" #~ msgstr "objavila sa chyba pri spracovaní xmpp:" - diff --git a/po/sv.po b/po/sv.po index c484c0a52..4af5d4fe2 100644 --- a/po/sv.po +++ b/po/sv.po @@ -3,11 +3,12 @@ # This file is distributed under the same license as the gajim package. # FIRST AUTHOR , 2005. # +#: ../src/gajim-remote.py:218 ../src/gajim-remote.py:225 msgid "" msgstr "" "Project-Id-Version: gajim\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2006-04-13 12:52+0200\n" +"POT-Creation-Date: 2006-07-04 00:03+0200\n" "PO-Revision-Date: 2006-05-01 16:10+0200\n" "Last-Translator: Oscar Hellström \n" "Language-Team: Swedish \n" @@ -31,344 +32,2393 @@ msgstr "Gajim IM-klient" msgid "Jabber IM Client" msgstr "Jabber IM-klient" -#: ../src/advanced.py:71 +#: ../data/glade/account_context_menu.glade.h:1 +msgid "Send Single _Message..." +msgstr "Skicka Enstaka _Meddelande" + +#: ../data/glade/account_context_menu.glade.h:2 +msgid "_Add Contact..." +msgstr "_Lägg till kontakt..." + +#: ../data/glade/account_context_menu.glade.h:3 +msgid "_Discover Services..." +msgstr "_Upptäck tjänster" + +#: ../data/glade/account_context_menu.glade.h:4 +#: ../data/glade/roster_window.glade.h:15 +#: ../data/glade/systray_context_menu.glade.h:5 +msgid "_Group Chat" +msgstr "_Gruppchatt" + +#: ../data/glade/account_context_menu.glade.h:5 +msgid "_Modify Account..." +msgstr "_Redigera Konto..." + +#: ../data/glade/account_context_menu.glade.h:6 +msgid "_Status" +msgstr "_Status" + +#: ../data/glade/account_creation_wizard_window.glade.h:1 +msgid "" +"Account is being created\n" +"\n" +"Please wait..." +msgstr "" +"konto skapas\n" +"\n" +"Vänligen vänta..." + +#: ../data/glade/account_creation_wizard_window.glade.h:4 +msgid "Please choose one of the options below:" +msgstr "Vänligen välj ett av alternativen nedan:" + +#: ../data/glade/account_creation_wizard_window.glade.h:5 +msgid "Please fill in the data for your new account" +msgstr "Vänligen fyll i informationen för ditt nya konto" + +#: ../data/glade/account_creation_wizard_window.glade.h:6 +msgid "Click to see features (like MSN, ICQ transports) of jabber servers" +msgstr "" +"Klicka för att visa funktioner (som MSN, ICQ transporter) pÃ¥ jabberservrar" + +#: ../data/glade/account_creation_wizard_window.glade.h:7 +msgid "Connect when I press Finish" +msgstr "Anslut när jag trycker Slutför" + +#: ../data/glade/account_creation_wizard_window.glade.h:8 +msgid "Gajim: Account Creation Wizard" +msgstr "Gajim: Första-gÃ¥ngen guide" + +#: ../data/glade/account_creation_wizard_window.glade.h:9 +msgid "I already have an account I want to use" +msgstr "Jag har redan ett konto jag vill använda" + +#: ../data/glade/account_creation_wizard_window.glade.h:10 +msgid "I want to _register for a new account" +msgstr "Jag vill _registrera ett nytt konto" + +#: ../data/glade/account_creation_wizard_window.glade.h:11 +#: ../data/glade/account_modification_window.glade.h:18 +msgid "If checked, Gajim will remember the password for this account" +msgstr "Om ibockad kommer Gajim komma ihÃ¥g lösenordet för det här kontot" + +#: ../data/glade/account_creation_wizard_window.glade.h:12 +#: ../data/glade/manage_proxies_window.glade.h:6 +msgid "Pass_word:" +msgstr "Lösen_ord:" + +#: ../data/glade/account_creation_wizard_window.glade.h:13 +#: ../data/glade/account_modification_window.glade.h:37 +msgid "Save pass_word" +msgstr "Spara lösen_ord" + +#: ../data/glade/account_creation_wizard_window.glade.h:14 +msgid "Servers Features" +msgstr "Serverns funktioner" + +#: ../data/glade/account_creation_wizard_window.glade.h:15 +msgid "Set my profile when I connect" +msgstr "Ställ in min profil när jag ansluter" + +#: ../data/glade/account_creation_wizard_window.glade.h:16 +msgid "" +"You need to have an account in order to connect\n" +"to the Jabber network." +msgstr "" +"Du behöver ett konto för att kunna ansluta till\n" +"Jabber-nätverket." + +#: ../data/glade/account_creation_wizard_window.glade.h:18 +msgid "Your JID:" +msgstr "Ditt JID:" + +#: ../data/glade/account_creation_wizard_window.glade.h:19 +#: ../data/glade/roster_window.glade.h:10 +msgid "_Advanced" +msgstr "_Avancerat" + +#: ../data/glade/account_creation_wizard_window.glade.h:20 +msgid "_Finish" +msgstr "_Slutför" + +#: ../data/glade/account_creation_wizard_window.glade.h:21 +#: ../data/glade/manage_proxies_window.glade.h:9 +msgid "_Host:" +msgstr "_Värd:" + +#: ../data/glade/account_creation_wizard_window.glade.h:22 +#: ../data/glade/account_modification_window.glade.h:45 +msgid "_Password:" +msgstr "_Lösenord:" + +#: ../data/glade/account_creation_wizard_window.glade.h:23 +#: ../data/glade/manage_proxies_window.glade.h:10 +msgid "_Port:" +msgstr "_Port:" + +#: ../data/glade/account_creation_wizard_window.glade.h:24 +msgid "_Retype Password:" +msgstr "Skriv om _Lösenord:" + +#: ../data/glade/account_creation_wizard_window.glade.h:25 +msgid "_Server:" +msgstr "_Server:" + +#: ../data/glade/account_creation_wizard_window.glade.h:26 +msgid "_Use proxy" +msgstr "_Använd proxy" + +#: ../data/glade/account_creation_wizard_window.glade.h:27 +#: ../data/glade/manage_proxies_window.glade.h:11 +msgid "_Username:" +msgstr "_Användarnamn:" + +#: ../data/glade/account_modification_window.glade.h:1 +#: ../data/glade/preferences_window.glade.h:8 +msgid "Miscellaneous" +msgstr "Diverse" + +#: ../data/glade/account_modification_window.glade.h:2 +msgid "OpenPGP" +msgstr "OpenPGP" + +#: ../data/glade/account_modification_window.glade.h:3 +msgid "Personal Information" +msgstr "Personlig Information" + +#: ../data/glade/account_modification_window.glade.h:4 +msgid "Account" +msgstr "Konto" + +#: ../data/glade/account_modification_window.glade.h:5 +msgid "Account Modification" +msgstr "Kontomodifiering" + +#: ../data/glade/account_modification_window.glade.h:6 +msgid "Autoreconnect when connection is lost" +msgstr "Ã…teranslut när anslutningen förloras" + +#: ../data/glade/account_modification_window.glade.h:7 +msgid "C_onnect on Gajim startup" +msgstr "Anslut vid start av Gajim" + +#: ../data/glade/account_modification_window.glade.h:8 +msgid "Chan_ge Password" +msgstr "Byt lösenord" + +#: ../data/glade/account_modification_window.glade.h:9 +msgid "" +"Check this so Gajim will connect in port 5223 where legacy servers are " +"expected to have SSL capabilities. Note that Gajim uses TLS encryption by " +"default if broadcasted by the server, and with this option enabled TLS will " +"be disabled" +msgstr "" +"Kryssa i det här sÃ¥ att Gajim kommer ansluta till port 5223 där tidigare " +"servrar förväntades ha SSL-support. Notera att Gajim använder TLS kryptering " +"som standard om servern stödjer det och med det här valet kommer TLS bli " +"avslaget" + +#: ../data/glade/account_modification_window.glade.h:10 +msgid "Choose _Key..." +msgstr "Välj nyc_kel..." + +#: ../data/glade/account_modification_window.glade.h:11 +msgid "Click to change account's password" +msgstr "Klicka för att byta kontots lösenord" + +#: ../data/glade/account_modification_window.glade.h:12 +msgid "Connection" +msgstr "Förbindelse" + +#: ../data/glade/account_modification_window.glade.h:13 +msgid "Edit Personal Information..." +msgstr "Redigera personlig information..." + +#: ../data/glade/account_modification_window.glade.h:14 +#: ../data/glade/roster_window.glade.h:5 ../src/notify.py:308 +#: ../src/notify.py:330 ../src/notify.py:342 ../src/tooltips.py:350 +msgid "Gajim" +msgstr "Gajim" + +#: ../data/glade/account_modification_window.glade.h:15 +#: ../data/glade/preferences_window.glade.h:44 +#: ../data/glade/vcard_information_window.glade.h:17 +#: ../src/roster_window.py:290 ../src/roster_window.py:1184 +#: ../src/roster_window.py:1405 +msgid "General" +msgstr "Generellt" + +#: ../data/glade/account_modification_window.glade.h:16 +msgid "Hostname: " +msgstr "Värdnamn: " + +#: ../data/glade/account_modification_window.glade.h:17 +#, fuzzy +msgid "" +"If checked, Gajim will also broadcast some more IPs except from just your " +"IP, so file transfer has higher chances of working." +msgstr "" +"Om ibockad kommer gajim att broadcasta fler IP-adresser än bara ditt IP. " +"Detta för att öka möjligheten att filöverföring fungerar som den skall." + +#: ../data/glade/account_modification_window.glade.h:19 +msgid "" +"If checked, Gajim will send keep-alive packets so it prevents connection " +"timeout which results in disconnection" +msgstr "" +"Om ibockad kommer Gajim skicka hÃ¥ll-vid-liv paket som förhindrar att " +"anslutningen gör timeout vilket leder till frÃ¥nkoppling" + +#: ../data/glade/account_modification_window.glade.h:20 +msgid "" +"If checked, Gajim will store the password in ~/.gajim/config with 'read' " +"permission only for you" +msgstr "" +"Om ibockad kommer Gajim spara lösenordet i ~/.gajim/config med \"läs\"-" +"rättigheter enbart för dig och din administratör" + +#: ../data/glade/account_modification_window.glade.h:21 +msgid "" +"If checked, Gajim, when launched, will automatically connect to jabber using " +"this account" +msgstr "" +"Om ibockad kommer Gajim att vid start automatiskt ansluta till jabber genom " +"det här kontot" + +#: ../data/glade/account_modification_window.glade.h:22 +msgid "" +"If checked, any change to the global status (handled by the combobox at the " +"bottom of the roster window) will change the status of this account " +"accordingly" +msgstr "" +"Om ibockad kommer global status (hanteras av comboboxen i botten av " +"registerfönstret) att pÃ¥verka även detta konto" + +#: ../data/glade/account_modification_window.glade.h:23 +msgid "Information about you, as stored in the server" +msgstr "Information om dig, som den är sparad pÃ¥ servern" + +#: ../data/glade/account_modification_window.glade.h:24 +msgid "Manage..." +msgstr "Hantera..." + +#: ../data/glade/account_modification_window.glade.h:25 ../src/config.py:1448 +msgid "No key selected" +msgstr "Ingen nyckel vald" + +#. None means no proxy profile selected +#: ../data/glade/account_modification_window.glade.h:27 ../src/config.py:1053 +#: ../src/config.py:1058 ../src/config.py:1230 ../src/config.py:1505 +#: ../src/config.py:1578 ../src/config.py:2282 +msgid "None" +msgstr "Ingen" + +#: ../data/glade/account_modification_window.glade.h:28 +msgid "Personal Information" +msgstr "Personlig Information" + +#: ../data/glade/account_modification_window.glade.h:29 +msgid "Port: " +msgstr "Port: " + +#: ../data/glade/account_modification_window.glade.h:30 +msgid "Priori_ty:" +msgstr "Priori_tet:" + +#: ../data/glade/account_modification_window.glade.h:31 +msgid "" +"Priority is used in Jabber to determine who gets the events from the jabber " +"server when two or more clients are connected using the same account; The " +"client with the highest priority gets the events" +msgstr "" +"Prioritet används i Jabber för att fastställa vem som fÃ¥r händelser frÃ¥n " +"jabberservern när tvÃ¥ eller flera klienter är anslutna pÃ¥ samma konto: " +"Klienten med den högsta prioriteten fÃ¥r händelserna" + +#: ../data/glade/account_modification_window.glade.h:32 +msgid "Proxy:" +msgstr "Proxy:" + +#: ../data/glade/account_modification_window.glade.h:33 +msgid "Resour_ce: " +msgstr "Resur_s: " + +#: ../data/glade/account_modification_window.glade.h:34 +msgid "" +"Resource is sent to the Jabber server in order to separate the same JID in " +"two or more parts depending on the number of the clients connected in the " +"same server with the same account. So you might be connected in the same " +"account with resource 'Home' and 'Work' at the same time. The resource which " +"has the highest priority will get the events. (see below)" +msgstr "" +"Resurs skickas till Jabberservern för att separera samma JID i tvÃ¥ eller " +"flera delar beroende pÃ¥ antalet klienter anslutna till samma server med " +"samma konto. SÃ¥ du kan vara ansluten till samma konto med resurserna \"Hem\" " +"och \"Jobb\" samtidigt. Resursen med högst prioritet kommer fÃ¥ händelserna. " +"(se undertill)" + +#: ../data/glade/account_modification_window.glade.h:35 +msgid "Save _passphrase (insecure)" +msgstr "Spara _lösenfras (osäkert)" + +#: ../data/glade/account_modification_window.glade.h:36 +msgid "Save conversation _logs for all contacts" +msgstr "Spara konversations_loggar för alla kontakter" + +#: ../data/glade/account_modification_window.glade.h:38 +msgid "Send keep-alive packets" +msgstr "Skicka hÃ¥ll-vid-liv paket" + +#: ../data/glade/account_modification_window.glade.h:39 +msgid "Synch_ronize account status with global status" +msgstr "Synk_ronisera kontostatus med global status" + +#: ../data/glade/account_modification_window.glade.h:40 +msgid "Use _SSL (legacy)" +msgstr "Använd _SSL (förÃ¥ldrat)" + +#: ../data/glade/account_modification_window.glade.h:41 +msgid "Use custom hostname/port" +msgstr "Använd anpassat värdnamn/port" + +#: ../data/glade/account_modification_window.glade.h:42 +msgid "Use file transfer proxies" +msgstr "Använd proxy för filöverföringar" + +#: ../data/glade/account_modification_window.glade.h:43 +#: ../data/glade/add_new_contact_window.glade.h:6 +msgid "_Jabber ID:" +msgstr "_Jabber-ID:" + +#: ../data/glade/account_modification_window.glade.h:44 +msgid "_Name: " +msgstr "_Namn: " + +#: ../data/glade/accounts_window.glade.h:1 +msgid "Accounts" +msgstr "Konton" + +#: ../data/glade/accounts_window.glade.h:2 +msgid "" +"If you have 2 or more accounts and it is checked, Gajim will list all " +"contacts as if you had one account" +msgstr "" +"Om du har 2 eller fler konton och det här är ibockad kommer Gajim lista alla " +"kontakter som om du hade ett konto" + +#: ../data/glade/accounts_window.glade.h:3 +msgid "_Merge accounts" +msgstr "Sa_mmanfoga konton" + +#: ../data/glade/accounts_window.glade.h:4 +msgid "_Modify" +msgstr "_Modifiera" + +#: ../data/glade/accounts_window.glade.h:5 +#: ../data/glade/remove_account_window.glade.h:4 +msgid "_Remove" +msgstr "Ta _bort" + +#: ../data/glade/add_new_contact_window.glade.h:1 +#, fuzzy +msgid "A_llow this contact to view my status" +msgstr "TillÃ¥t henne/honom att se min status" + +#: ../data/glade/add_new_contact_window.glade.h:2 +msgid "Add New Contact" +msgstr "Lägg till ny kontakt" + +#: ../data/glade/add_new_contact_window.glade.h:3 +msgid "I would like to add you to my contact list." +msgstr "Jag vill lägga till dig i min kontaktlista." + +#: ../data/glade/add_new_contact_window.glade.h:4 +#, fuzzy +msgid "_Account:" +msgstr "Konto:" + +#: ../data/glade/add_new_contact_window.glade.h:5 +#, fuzzy +msgid "_Group:" +msgstr "Grupp:" + +#: ../data/glade/add_new_contact_window.glade.h:7 +msgid "_Nickname:" +msgstr "_Smeknamn:" + +#: ../data/glade/add_new_contact_window.glade.h:8 +#, fuzzy +msgid "_Protocol:" +msgstr "Protokoll:" + +#: ../data/glade/add_new_contact_window.glade.h:9 +msgid "_Subscribe" +msgstr "_Prenumerera" + +#: ../data/glade/add_new_contact_window.glade.h:10 +#, fuzzy +msgid "_User ID:" +msgstr "Användar-ID:" + +#: ../data/glade/advanced_configuration_window.glade.h:1 +msgid "Description" +msgstr "Beskrivning" + +#: ../data/glade/advanced_configuration_window.glade.h:2 +msgid "NOTE: You should restart gajim for some setting to take effect" +msgstr "" +"NOTERA: Du bör starta om gajim för att vissa inställningar skall ge " +"effekt" + +#: ../data/glade/advanced_configuration_window.glade.h:3 +msgid "Advanced Configuration Editor" +msgstr "Avancerad konfigurationsredigerare" + +#: ../data/glade/advanced_configuration_window.glade.h:4 +msgid "Filter:" +msgstr "Filter:" + +#: ../data/glade/advanced_menuitem_menu.glade.h:1 +msgid "Delete MOTD" +msgstr "Radera MOTD" + +#: ../data/glade/advanced_menuitem_menu.glade.h:2 +msgid "Deletes Message of the Day" +msgstr "Raderar dagens meddelande" + +#: ../data/glade/advanced_menuitem_menu.glade.h:3 +msgid "Sends a message to currently connected users to this server" +msgstr "" +"Skickar ett meddelande till nuvarande anslutna klienter pÃ¥ den här servern" + +#: ../data/glade/advanced_menuitem_menu.glade.h:4 +msgid "Set MOTD" +msgstr "Ställ in MOTD" + +#: ../data/glade/advanced_menuitem_menu.glade.h:5 +msgid "Sets Message of the Day" +msgstr "Ställer in dagens meddelande" + +#: ../data/glade/advanced_menuitem_menu.glade.h:6 +msgid "Show _XML Console" +msgstr "Visa _XML konsol" + +#: ../data/glade/advanced_menuitem_menu.glade.h:7 +msgid "Update MOTD" +msgstr "Uppdatera MOTD" + +#: ../data/glade/advanced_menuitem_menu.glade.h:8 +msgid "Updates Message of the Day" +msgstr "Uppdaterar dagens meddelande" + +#: ../data/glade/advanced_menuitem_menu.glade.h:9 +msgid "_Administrator" +msgstr "_Administratör" + +#: ../data/glade/advanced_menuitem_menu.glade.h:10 +msgid "_Privacy Lists" +msgstr "" + +#: ../data/glade/advanced_menuitem_menu.glade.h:11 +msgid "_Send Server Message" +msgstr "_Skicka servermeddelande" + +#: ../data/glade/advanced_menuitem_menu.glade.h:12 +msgid "_Send Single Message" +msgstr "_Skicka enstaka meddelande" + +#: ../data/glade/advanced_notifications_window.glade.h:1 +msgid " a window/tab opened with that contact " +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:2 +#, fuzzy +msgid "Actions" +msgstr "Program" + +#: ../data/glade/advanced_notifications_window.glade.h:3 +#, fuzzy +msgid "Conditions" +msgstr "Ljud" + +#: ../data/glade/advanced_notifications_window.glade.h:4 +#: ../data/glade/preferences_window.glade.h:10 +msgid "Sounds" +msgstr "Ljud" + +#: ../data/glade/advanced_notifications_window.glade.h:5 +#, fuzzy +msgid "Add" +msgstr "Adress" + +#: ../data/glade/advanced_notifications_window.glade.h:6 +#, fuzzy +msgid "Advanced Actions" +msgstr "A_vancerade Ã¥tgärder" + +#: ../data/glade/advanced_notifications_window.glade.h:7 +#, fuzzy +msgid "Advanced Notifications Control" +msgstr "Avancerad konfigurationsredigerare" + +#: ../data/glade/advanced_notifications_window.glade.h:8 +#, fuzzy +msgid "All Status " +msgstr "Status: " + +#: ../data/glade/advanced_notifications_window.glade.h:9 +msgid "And I " +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:10 +#, fuzzy +msgid "Away " +msgstr "Borta" + +#: ../data/glade/advanced_notifications_window.glade.h:11 +#, fuzzy +msgid "Busy " +msgstr "Upptagen" + +#: ../data/glade/advanced_notifications_window.glade.h:12 +msgid "Don't have " +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:13 +#, fuzzy +msgid "Down" +msgstr "Nerladdning" + +#: ../data/glade/advanced_notifications_window.glade.h:14 +msgid "Have " +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:15 +#: ../src/common/helpers.py:239 +msgid "Invisible" +msgstr "Osynlig" + +#: ../data/glade/advanced_notifications_window.glade.h:16 +#, fuzzy +msgid "Launch a command" +msgstr "kommando" + +#: ../data/glade/advanced_notifications_window.glade.h:17 +#, fuzzy +msgid "List of special notifications settings" +msgstr "Lägger Till Speciellt Meddelande För %s" + +#: ../data/glade/advanced_notifications_window.glade.h:18 +#, fuzzy +msgid "Not Available " +msgstr "Inte tillgänglig" + +#: ../data/glade/advanced_notifications_window.glade.h:19 +#, fuzzy +msgid "Online / Free For Chat" +msgstr "Ledig för chatt" + +#: ../data/glade/advanced_notifications_window.glade.h:20 +#, fuzzy +msgid "Play a sound" +msgstr "_Spela ljud" + +#: ../data/glade/advanced_notifications_window.glade.h:21 +msgid "" +"Receive a Message\n" +"Contact Connected\n" +"Contact Disconnected\n" +"Contact Change Status\n" +"Group Chat Message Highlight\n" +"Group Chat Message Received\n" +"File Transfert Resquest\n" +"File Transfert Started\n" +"File Transfert Finished" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:30 +msgid "Some special(s) status..." +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:31 +msgid "Up" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:32 +msgid "When " +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:33 +msgid "_Activate Windows manager UrgencyHint to make chat taskbar to flash" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:34 +#, fuzzy +msgid "_Disable auto opening chat window" +msgstr "Gömmer knapparna i gruppchattfönstret" + +#: ../data/glade/advanced_notifications_window.glade.h:35 +msgid "_Disable existing popup window" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:36 +msgid "_Disable existing sound for this event" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:37 +msgid "_Disable showing event in roster" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:38 +msgid "_Disable showing event in systray" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:39 +msgid "_Inform me with a popup window" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:40 +#, fuzzy +msgid "_Open chat window with user" +msgstr "Använd ett enkelt chattfönster med _flikar" + +#: ../data/glade/advanced_notifications_window.glade.h:41 +#, fuzzy +msgid "_Show event in roster" +msgstr "Visa enbart i _registret" + +#: ../data/glade/advanced_notifications_window.glade.h:42 +#, fuzzy +msgid "_Show event in systray" +msgstr "Visa enbart i _registret" + +#: ../data/glade/advanced_notifications_window.glade.h:43 +msgid "" +"contact(s)\n" +"group(s)\n" +"everybody" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:46 +#, fuzzy +msgid "for " +msgstr "Port: " + +#: ../data/glade/advanced_notifications_window.glade.h:47 +msgid "when I'm " +msgstr "" + +#: ../data/glade/change_password_dialog.glade.h:1 +msgid "Change Password" +msgstr "Byt lösenord" + +#: ../data/glade/change_password_dialog.glade.h:2 +msgid "Enter it again for confirmation:" +msgstr "Skriv in det igen för att bekräfta:" + +#: ../data/glade/change_password_dialog.glade.h:3 +msgid "Enter new password:" +msgstr "Skriv nytt lösenord:" + +#: ../data/glade/change_status_message_dialog.glade.h:1 +msgid "Type your new status message" +msgstr "Skriv ditt nya statusmeddelande" + +#: ../data/glade/change_status_message_dialog.glade.h:2 +msgid "Preset messages:" +msgstr "Sparade meddelanden:" + +#: ../data/glade/change_status_message_dialog.glade.h:3 +msgid "Save as Preset..." +msgstr "Spara Meddeande..." + +#: ../data/glade/chat_context_menu.glade.h:1 +msgid "Join _Group Chat" +msgstr "Anslut till _gruppchatt" + +#: ../data/glade/chat_context_menu.glade.h:2 +#: ../data/glade/chat_control_popup_menu.glade.h:4 +#: ../data/glade/gc_occupants_menu.glade.h:2 +#: ../data/glade/roster_contact_context_menu.glade.h:8 +msgid "_Add to Roster" +msgstr "_Lägg till registret" + +#: ../data/glade/chat_context_menu.glade.h:3 +msgid "_Copy JID/Email Address" +msgstr "_Kopiera JID/e-postadress" + +#: ../data/glade/chat_context_menu.glade.h:4 +msgid "_Copy Link Location" +msgstr "_Kopiera länkadress" + +#: ../data/glade/chat_context_menu.glade.h:5 +msgid "_Open Email Composer" +msgstr "_Öppna e-postförfattning" + +#: ../data/glade/chat_context_menu.glade.h:6 +msgid "_Open Link in Browser" +msgstr "_Öppna länk i webbläsare" + +#: ../data/glade/chat_context_menu.glade.h:7 +#: ../data/glade/roster_window.glade.h:19 +#: ../data/glade/systray_context_menu.glade.h:6 +msgid "_Start Chat" +msgstr "_Starta chatt" + +#: ../data/glade/chat_control_popup_menu.glade.h:1 +msgid "Click to see past conversations with this contact" +msgstr "Klicka för att via tidigare konversationer med den här kontakten" + +#: ../data/glade/chat_control_popup_menu.glade.h:2 +#: ../data/glade/roster_contact_context_menu.glade.h:6 +msgid "Send _File" +msgstr "Skicka _Fil" + +#: ../data/glade/chat_control_popup_menu.glade.h:3 +msgid "Toggle Open_PGP Encryption" +msgstr "SlÃ¥ pÃ¥/av Open_PGP kryptering" + +#: ../data/glade/chat_control_popup_menu.glade.h:5 +#: ../data/glade/gc_control_popup_menu.glade.h:6 +msgid "_Compact View Alt+C" +msgstr "_Kompakt vy Alt+C" + +#: ../data/glade/chat_control_popup_menu.glade.h:6 +#: ../data/glade/gc_control_popup_menu.glade.h:7 +#: ../data/glade/gc_occupants_menu.glade.h:5 +#: ../data/glade/roster_contact_context_menu.glade.h:11 +msgid "_History" +msgstr "_Historik" + +#: ../data/glade/data_form_window.glade.h:1 +msgid "Room Configuration" +msgstr "Rumkonfiguration" + +#: ../data/glade/edit_groups_dialog.glade.h:1 +msgid "Edit Groups" +msgstr "Redigera grupper" + +#: ../data/glade/filetransfers.glade.h:1 +msgid "A list of active, completed and stopped file transfers" +msgstr "En lista pÃ¥ aktiva, kompletta och stoppade filöverföringar" + +#: ../data/glade/filetransfers.glade.h:2 +msgid "Cancel file transfer" +msgstr "Avbryt filöverföring" + +#: ../data/glade/filetransfers.glade.h:3 +msgid "Cancels the selected file transfer" +msgstr "Avbryter den valda filöverföringen" + +#: ../data/glade/filetransfers.glade.h:4 +msgid "Cancels the selected file transfer and removes incomplete file" +msgstr "" +"Avbryter den valda filöverföringen och tar bort den icke-kompletta filen" + +#: ../data/glade/filetransfers.glade.h:5 +msgid "Clean _up" +msgstr "Städa _upp" + +#: ../data/glade/filetransfers.glade.h:6 +msgid "File Transfers" +msgstr "Filöverföringar" + +#: ../data/glade/filetransfers.glade.h:7 +msgid "Hides the window" +msgstr "Gömmer fönstret" + +#: ../data/glade/filetransfers.glade.h:8 +msgid "Remove file transfer from the list." +msgstr "Ta bort filöverföring frÃ¥n listan." + +#: ../data/glade/filetransfers.glade.h:9 +msgid "Removes completed, canceled and failed file transfers from the list" +msgstr "Tar bort klara, avbrutna och felaktiga filöverföringar frÃ¥n listan" + +#: ../data/glade/filetransfers.glade.h:10 +msgid "Shows a list of file transfers between you and other" +msgstr "Visar en lista med filöverföringar mellan dig och andra" + +#: ../data/glade/filetransfers.glade.h:11 +msgid "" +"This action removes single file transfer from the list. If the transfer is " +"active, it is first stopped and then removed" +msgstr "" +"Den här handlingen tar bort en enstaka filöverföring frÃ¥n listan. Om " +"överföringen är aktiv, stoppas den först och tas sen bort" + +#: ../data/glade/filetransfers.glade.h:12 +msgid "When a file transfer is complete show a popup notification" +msgstr "När en filöverföring är färdig, visa ett popupmeddelande" + +#: ../data/glade/filetransfers.glade.h:13 ../src/filetransfers_window.py:753 +msgid "_Continue" +msgstr "_Fortsätt" + +#: ../data/glade/filetransfers.glade.h:14 +msgid "_Notify me when a file transfer is complete" +msgstr "_Meddela mig när en filöverföring är färdig" + +#: ../data/glade/filetransfers.glade.h:15 ../src/filetransfers_window.py:190 +msgid "_Open Containing Folder" +msgstr "_Öppna behÃ¥llande mapp" + +#: ../data/glade/filetransfers.glade.h:16 +msgid "_Pause" +msgstr "_Paus" + +#: ../data/glade/filetransfers.glade.h:17 +msgid "file transfers list" +msgstr "filöverföringslista" + +#: ../data/glade/gajim_themes_window.glade.h:1 +msgid "Chatstate Tab Colors" +msgstr "Tabfärger För Chatstatus" + +#: ../data/glade/gajim_themes_window.glade.h:2 +msgid "" +"Account\n" +"Group\n" +"Contact\n" +"Banner" +msgstr "" +"Konto\n" +"Grupp\n" +"Kontakt\n" +"Banner" + +#: ../data/glade/gajim_themes_window.glade.h:6 +#: ../data/glade/privacy_list_edit_window.glade.h:4 ../src/config.py:326 +msgid "Active" +msgstr "Aktiv" + +#: ../data/glade/gajim_themes_window.glade.h:7 +msgid "Bold" +msgstr "Fetstil" + +#: ../data/glade/gajim_themes_window.glade.h:8 +msgid "Composing" +msgstr "Skriver" + +#: ../data/glade/gajim_themes_window.glade.h:9 +msgid "Font style:" +msgstr "Teckensnitt-stil:" + +#: ../data/glade/gajim_themes_window.glade.h:10 +msgid "Gajim Themes Customization" +msgstr "Gajim Temaanpassare" + +#: ../data/glade/gajim_themes_window.glade.h:11 +msgid "Gone" +msgstr "Borta" + +#: ../data/glade/gajim_themes_window.glade.h:12 +msgid "Inactive" +msgstr "Inaktiv" + +#: ../data/glade/gajim_themes_window.glade.h:13 +msgid "Italic" +msgstr "Kursiv" + +#: ../data/glade/gajim_themes_window.glade.h:14 +msgid "" +"MUC\n" +"Messages" +msgstr "" +"MUC\n" +"Meddelande" + +#: ../data/glade/gajim_themes_window.glade.h:16 +msgid "" +"MUC Directed\n" +"Messages" +msgstr "" +"MUC-dirigerade\n" +"Meddelanden" + +#: ../data/glade/gajim_themes_window.glade.h:18 ../src/tooltips.py:667 +msgid "Paused" +msgstr "Pausad" + +#: ../data/glade/gajim_themes_window.glade.h:19 +msgid "Text _color:" +msgstr "Textfärg:" + +#: ../data/glade/gajim_themes_window.glade.h:20 +msgid "Text _font:" +msgstr "Text-teckensnitt:" + +#: ../data/glade/gajim_themes_window.glade.h:21 +msgid "_Background:" +msgstr "_Bakgrund:" + +#: ../data/glade/gc_control_popup_menu.glade.h:1 +msgid "Change _Nickname" +msgstr "Byt smek_namn" + +#: ../data/glade/gc_control_popup_menu.glade.h:2 +msgid "Change _Subject" +msgstr "Byt ämne" + +#: ../data/glade/gc_control_popup_menu.glade.h:3 +msgid "Click to see past conversation in this room" +msgstr "Klicka för att visa tidigare konversationer i det här rummet" + +#: ../data/glade/gc_control_popup_menu.glade.h:4 +msgid "Configure _Room" +msgstr "Konfigurera _rum" + +#: ../data/glade/gc_control_popup_menu.glade.h:5 +msgid "_Bookmark This Room" +msgstr "_Bokmärk det här rummet" + +#: ../data/glade/gc_occupants_menu.glade.h:1 +msgid "Mo_derator" +msgstr "Mo_derator" + +#: ../data/glade/gc_occupants_menu.glade.h:3 +msgid "_Admin" +msgstr "_Admin" + +#: ../data/glade/gc_occupants_menu.glade.h:4 +msgid "_Ban" +msgstr "_Bannlys" + +#: ../data/glade/gc_occupants_menu.glade.h:6 +msgid "_Kick" +msgstr "_Sparka ut" + +#: ../data/glade/gc_occupants_menu.glade.h:7 +msgid "_Member" +msgstr "_Medlem" + +#: ../data/glade/gc_occupants_menu.glade.h:8 +msgid "_Occupant Actions" +msgstr "_Innehavarhandlingar" + +#: ../data/glade/gc_occupants_menu.glade.h:9 +msgid "_Owner" +msgstr "_Ägare" + +#: ../data/glade/gc_occupants_menu.glade.h:10 +msgid "_Send Private Message" +msgstr "_Skicka privat meddelande" + +#: ../data/glade/gc_occupants_menu.glade.h:11 +msgid "_Voice" +msgstr "_Röst" + +#: ../data/glade/history_manager.glade.h:1 +msgid "" +"Welcome to Gajim History Logs Manager\n" +"\n" +"You can select logs from the left and/or search database from below.\n" +"\n" +"WARNING:\n" +"If you plan to do massive deletions, please make sure Gajim is not running. " +"Generally avoid deletions with contacts you currently chat with." +msgstr "" +"Välkommen till Gajims Historikhanterare\n" +"\n" +"Du kan välja loggar frÃ¥n vänster och/eller söka i databasen under.\n" +"VARNING:\n" +"Se till att Gajim inte är startat om du planerar att radera mycket. Undvik i " +"regel att radera för kontakter du just nu chattar med." + +#: ../data/glade/history_manager.glade.h:7 +msgid "Delete" +msgstr "Radera" + +#: ../data/glade/history_manager.glade.h:8 +msgid "Export" +msgstr "Exportera" + +#: ../data/glade/history_manager.glade.h:9 +msgid "Gajim History Logs Manager" +msgstr "Historikhanterare" + +#: ../data/glade/history_manager.glade.h:10 +msgid "_Search Database" +msgstr "_Sök I Databasen" + +#: ../data/glade/history_window.glade.h:1 +msgid "Build custom query" +msgstr "Bygg egen frÃ¥ga" + +#: ../data/glade/history_window.glade.h:2 +msgid "Conversation History" +msgstr "Konversationshistorik" + +#: ../data/glade/history_window.glade.h:3 +msgid "Query Builder..." +msgstr "FrÃ¥gebyggare..." + +#: ../data/glade/history_window.glade.h:4 +msgid "Search" +msgstr "Sök" + +#: ../data/glade/history_window.glade.h:5 +msgid "_Search" +msgstr "_Sök" + +#: ../data/glade/invitation_received_dialog.glade.h:1 +msgid "Accept" +msgstr "Acceptera" + +#: ../data/glade/invitation_received_dialog.glade.h:2 +#: ../data/glade/privacy_list_edit_window.glade.h:8 +msgid "Deny" +msgstr "Neka" + +#: ../data/glade/invitation_received_dialog.glade.h:3 +msgid "Invitation Received" +msgstr "Inbjudan mottagen" + +#: ../data/glade/join_groupchat_window.glade.h:1 ../src/dialogs.py:941 +msgid "Join Group Chat" +msgstr "Anslut till gruppchatt" + +#: ../data/glade/join_groupchat_window.glade.h:2 +#: ../data/glade/manage_bookmarks_window.glade.h:4 +#: ../data/glade/vcard_information_window.glade.h:28 +msgid "Nickname:" +msgstr "Smeknamn:" + +#: ../data/glade/join_groupchat_window.glade.h:3 +#: ../data/glade/manage_bookmarks_window.glade.h:5 +msgid "Password:" +msgstr "Lösenord:" + +#: ../data/glade/join_groupchat_window.glade.h:4 +msgid "Recently:" +msgstr "Nyligen:" + +#: ../data/glade/join_groupchat_window.glade.h:5 +#: ../data/glade/manage_bookmarks_window.glade.h:7 +msgid "Room:" +msgstr "Rum:" + +#: ../data/glade/join_groupchat_window.glade.h:6 +#: ../data/glade/manage_bookmarks_window.glade.h:8 +msgid "Server:" +msgstr "Server:" + +#: ../data/glade/join_groupchat_window.glade.h:7 ../src/disco.py:1145 +#: ../src/disco.py:1507 +msgid "_Join" +msgstr "_Anslut till" + +#: ../data/glade/manage_accounts_window.glade.h:1 +msgid "Manage Accounts" +msgstr "Hantera konton" + +#: ../data/glade/manage_bookmarks_window.glade.h:1 +msgid "Auto join" +msgstr "Anslut automatiskt" + +#: ../data/glade/manage_bookmarks_window.glade.h:2 +msgid "If checked, Gajim will join this group chat on startup" +msgstr "Om ibockad kommer Gajim ansluta till den här gruppchatten vid start" + +#: ../data/glade/manage_bookmarks_window.glade.h:3 +msgid "Manage Bookmarks" +msgstr "Hantera bokmärken" + +#: ../data/glade/manage_bookmarks_window.glade.h:6 +#, fuzzy +msgid "Print status:" +msgstr "Skriv ut tid:" + +#: ../data/glade/manage_bookmarks_window.glade.h:9 +msgid "Title:" +msgstr "Titel:" + +#: ../data/glade/manage_proxies_window.glade.h:1 +msgid "Properties" +msgstr "Egenskaper" + +#: ../data/glade/manage_proxies_window.glade.h:2 +msgid "Settings" +msgstr "Inställningar" + +#: ../data/glade/manage_proxies_window.glade.h:3 +msgid "HTTP Connect" +msgstr "HTTP anslut" + +#: ../data/glade/manage_proxies_window.glade.h:4 +msgid "Manage Proxy Profiles" +msgstr "Hantera proxyprofiler" + +#: ../data/glade/manage_proxies_window.glade.h:5 +#: ../data/glade/vcard_information_window.glade.h:27 +msgid "Name:" +msgstr "Namn:" + +#: ../data/glade/manage_proxies_window.glade.h:7 +msgid "Type:" +msgstr "Typ:" + +#: ../data/glade/manage_proxies_window.glade.h:8 +msgid "Use authentication" +msgstr "Använd autentisering" + +#: ../data/glade/message_window.glade.h:1 +msgid "Click to insert an emoticon (Alt+M)" +msgstr "Klicka för att sätta in en känsloikoner (Alt+M)" + +#: ../data/glade/message_window.glade.h:2 ../src/chat_control.py:966 +msgid "OpenPGP Encryption" +msgstr "OpenPGP-kryptering" + +#. Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector) +#: ../data/glade/message_window.glade.h:4 +#: ../data/glade/roster_window.glade.h:9 +msgid "_Actions" +msgstr "_Ã…tgärder" + +#. Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector) +#: ../data/glade/message_window.glade.h:6 +#: ../data/glade/xml_console_window.glade.h:11 +#: ../src/filetransfers_window.py:249 +msgid "_Send" +msgstr "_Skicka" + +#: ../data/glade/passphrase_dialog.glade.h:1 +msgid "Passphrase" +msgstr "Lösenfras" + +#: ../data/glade/preferences_window.glade.h:1 +msgid "Advanced Configuration Editor" +msgstr "Avancerad konfigurationsredigerare" + +#: ../data/glade/preferences_window.glade.h:2 +msgid "Applications" +msgstr "Program" + +#. a header for custom browser/client/file manager. so translate sth like: Custom Settings +#: ../data/glade/preferences_window.glade.h:4 +msgid "Custom" +msgstr "Anpassa" + +#: ../data/glade/preferences_window.glade.h:5 +msgid "Format of a line" +msgstr "Format av en rad" + +#: ../data/glade/preferences_window.glade.h:6 +#, fuzzy +msgid "GMail Options" +msgstr "Program" + +#: ../data/glade/preferences_window.glade.h:7 +msgid "Interface Customization" +msgstr "Gränssnittsanpassning" + +#: ../data/glade/preferences_window.glade.h:9 +msgid "Preset Status Messages" +msgstr "Sparade Statusmeddelanden" + +#: ../data/glade/preferences_window.glade.h:11 +msgid "Visual Notifications" +msgstr "Visuella Meddelanden" + +#: ../data/glade/preferences_window.glade.h:12 +msgid "A_fter nickname:" +msgstr "E_fter smeknamn:" + +#: ../data/glade/preferences_window.glade.h:13 +msgid "Advanced" +msgstr "Avancerad" + +#: ../data/glade/preferences_window.glade.h:14 +msgid "" +"All chat states\n" +"Composing only\n" +"Disabled" +msgstr "" +"Alla chattlägen\n" +"Författande enbart\n" +"FrÃ¥nslagen" + +#: ../data/glade/preferences_window.glade.h:17 +msgid "Allow _OS information to be sent" +msgstr "TillÃ¥t _OS-information att skickas" + +#: ../data/glade/preferences_window.glade.h:18 +msgid "Allow popup/notifications when I'm _away/na/busy/invisible" +msgstr "" +"TillÃ¥t popup/meddelanden när jag är bort_a/inte tillgänglig/upptagen/osynlig" + +#: ../data/glade/preferences_window.glade.h:19 +msgid "Also known as iChat style" +msgstr "OcksÃ¥ känt som iChat-stil" + +#: ../data/glade/preferences_window.glade.h:20 +msgid "Ask status message when I:" +msgstr "FrÃ¥ga efter statusmeddelande när jag:" + +#: ../data/glade/preferences_window.glade.h:21 +msgid "Auto _away after:" +msgstr "Automatiskt bort_a efter:" + +#: ../data/glade/preferences_window.glade.h:22 +msgid "Auto _not available after:" +msgstr "Automatiskt ej tillgä_nglig efter:" + +#: ../data/glade/preferences_window.glade.h:23 +msgid "" +"Autodetect on every Gajim startup\n" +"Always use GNOME default applications\n" +"Always use KDE default applications\n" +"Custom" +msgstr "" +"Detektera vid varje Gajimstart\n" +"Använd alltid GNOMEs standardprogram\n" +"Använd alltid KDEs standardprogram\n" +"Anpassa" + +#: ../data/glade/preferences_window.glade.h:27 +msgid "B_efore nickname:" +msgstr "För_e smeknamn:" + +#: ../data/glade/preferences_window.glade.h:28 ../src/chat_control.py:718 +msgid "Chat" +msgstr "Chatt" + +#: ../data/glade/preferences_window.glade.h:29 +msgid "Chat state noti_fications:" +msgstr "Chattstatusmeddelanden:" + +#: ../data/glade/preferences_window.glade.h:30 +msgid "" +"Check this option, only if someone you don't have in the roster spams/annoys " +"you. Use with caution, cause it blocks all messages from any contact that is " +"not in the roster" +msgstr "" +"Kryssa i det här valet enbart om nÃ¥gon du inte har i registret spammar/" +"irriterar dig. Använd med förstÃ¥nd, för det blockerar alla meddelanden frÃ¥n " +"alla kontakter som inte finns i ditt register" + +#: ../data/glade/preferences_window.glade.h:31 +msgid "Default status _iconset:" +msgstr "Standarduppsättning av _statusikoner:" + +#: ../data/glade/preferences_window.glade.h:32 +msgid "Display _extra email details" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:33 +msgid "Display a_vatars of contacts in roster" +msgstr "Visa a_vatarer för kontakter i registret" + +#: ../data/glade/preferences_window.glade.h:34 +msgid "Display status _messages of contacts in roster" +msgstr "Visa status_meddelanden för kontakter i registret" + +#: ../data/glade/preferences_window.glade.h:35 +msgid "E_very 5 minutes" +msgstr "_Var 5:e minut" + +#: ../data/glade/preferences_window.glade.h:36 +msgid "Emoticons:" +msgstr "Känsloikoner:" + +#: ../data/glade/preferences_window.glade.h:37 +msgid "Events" +msgstr "Händelser" + +#: ../data/glade/preferences_window.glade.h:38 +msgid "" +"Gajim can send and receive meta-information related to a conversation you " +"may have with a contact. Here you can specify which chatstates you want to " +"send to the other party." +msgstr "" +"Gajim kan skicka och ta emot meta-information relaterad till en konversation " +"som du har med en kontakt: Här kan du specificera vilka " +"chattstatusmeddelanden du vill skicka till den andra parten." + +#: ../data/glade/preferences_window.glade.h:39 +msgid "" +"Gajim will automatically show new events by poping up the relative window" +msgstr "" +"Gajim kommer automatiskt visa nya inkommande meddelanden genom att öppna " +"relevant fönster" + +#: ../data/glade/preferences_window.glade.h:40 +msgid "" +"Gajim will notify you for new events via a popup in the bottom right of the " +"screen" +msgstr "" +"Gajim kommer att meddela dig om nya händelser via en popup i höger nederkant " +"av skärmen" + +#: ../data/glade/preferences_window.glade.h:41 +msgid "" +"Gajim will notify you via a popup window in the bottom right of the screen " +"about contacts that just signed in" +msgstr "" +"Gajim kommer säga till dig via ett popupfönster i det nedre högra hörnet av " +"skärmen om kontakter som just loggat in" + +#: ../data/glade/preferences_window.glade.h:42 +msgid "" +"Gajim will notify you via a popup window in the bottom right of the screen " +"about contacts that just signed out" +msgstr "" +"Gajim kommer säga till dig via ett popupfönster i det nedre högra hörnet av " +"skärmen om kontakter som just loggat ut" + +#: ../data/glade/preferences_window.glade.h:43 +msgid "" +"Gajim will only change the icon of the contact that triggered the new event" +msgstr "" +"Gajim kommer endast byta ikonen för kontakten som skickade den nya händelsen" + +#: ../data/glade/preferences_window.glade.h:45 +msgid "" +"If checked, Gajim will display avatars of contacts in roster window and in " +"group chats" +msgstr "" +"Om ibockad kommer Gajim att visa kontakters avatarer i register- och " +"gruppchatfönstret" + +#: ../data/glade/preferences_window.glade.h:46 +msgid "" +"If checked, Gajim will display status messages of contacts under the contact " +"name in roster window and in group chats" +msgstr "" +"Om ibockad kommer Gajim att visa statusmeddelanden för kontakter under " +"kontaktens namn i register- och gruppchatfönstret" + +#: ../data/glade/preferences_window.glade.h:47 +msgid "" +"If checked, Gajim will remember the roster and chat window positions in the " +"screen and the sizes of them next time you run it" +msgstr "" +"Om ibockad kommer Gajim komma ihÃ¥g registrets och chatfönstrets positioner " +"och storlekar pÃ¥ skärmen nästa gÃ¥ng de används" + +#: ../data/glade/preferences_window.glade.h:48 +msgid "" +"If checked, Gajim will use protocol-specific status icons. (eg. A contact " +"from MSN will have the equivalent msn icon for status online, away, busy, " +"etc...)" +msgstr "" +"Om ibockad kommer Gajim använda protokoll-specifika statusikoner (t.ex. en " +"kontakt för MSN kommer ha msn:s ikon för status online, borta, upptagen, " +"osv...)" + +#: ../data/glade/preferences_window.glade.h:49 +msgid "" +"If not disabled, Gajim will replace ascii smilies like ':)' with equivalent " +"animated or static graphical emoticons" +msgstr "" +"Om inte avstängd kommer Gajim ersätta ascii smilies som ':)' med motsvarande " +"grafiska känsloikoner" + +#: ../data/glade/preferences_window.glade.h:50 +msgid "Ma_nage..." +msgstr "Ha_ntera..." + +#: ../data/glade/preferences_window.glade.h:51 +msgid "" +"Never\n" +"Always\n" +"Per account\n" +"Per type" +msgstr "" +"Aldrig\n" +"Alltid\n" +"Per konto\n" +"Per typ" + +#: ../data/glade/preferences_window.glade.h:55 +msgid "Notify me about contacts that: " +msgstr "Meddela när kontakter: " + +#: ../data/glade/preferences_window.glade.h:56 +#, fuzzy +msgid "Notify on new _GMail email" +msgstr "Meddela om ny _Gmail e-post" + +#: ../data/glade/preferences_window.glade.h:57 +msgid "On every _message" +msgstr "Vid varje _meddelande" + +#: ../data/glade/preferences_window.glade.h:58 +msgid "One message _window:" +msgstr "Ett meddelandefönster:" + +#: ../data/glade/preferences_window.glade.h:59 +msgid "Play _sounds" +msgstr "_Spela ljud" + +#: ../data/glade/preferences_window.glade.h:60 +msgid "Preferences" +msgstr "Inställningar" + +#: ../data/glade/preferences_window.glade.h:61 +msgid "Print time:" +msgstr "Skriv ut tid:" + +#: ../data/glade/preferences_window.glade.h:62 +msgid "Save _position and size for roster and chat windows" +msgstr "Spara _position och storlek för register- och chattfönster" + +#: ../data/glade/preferences_window.glade.h:63 +msgid "Show only in _roster" +msgstr "Visa enbart i _registret" + +#: ../data/glade/preferences_window.glade.h:64 +msgid "Sign _in" +msgstr "Loggar _in" + +#: ../data/glade/preferences_window.glade.h:65 +msgid "Sign _out" +msgstr "Loggar _ut" + +#: ../data/glade/preferences_window.glade.h:66 +msgid "Status" +msgstr "Status" + +#: ../data/glade/preferences_window.glade.h:67 +msgid "T_heme:" +msgstr "Tema:" + +#: ../data/glade/preferences_window.glade.h:68 +msgid "The auto away status message" +msgstr "Det automatiska statusmeddelandet när du är borta" + +#: ../data/glade/preferences_window.glade.h:69 +msgid "The auto not available status message" +msgstr "Det automatiska statusmeddelandet när du inte är tillgänglig" + +#: ../data/glade/preferences_window.glade.h:70 +msgid "Use _transports iconsets" +msgstr "" +"Använd _transporternas\n" +"ikonuppsättningar" + +#: ../data/glade/preferences_window.glade.h:71 +msgid "Use system _default" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:72 +msgid "Use t_rayicon (aka. notification area icon)" +msgstr "Använd aktivitetsfältet (aka. notifieringsyta)" + +#: ../data/glade/preferences_window.glade.h:73 +msgid "" +"When a new event (message, file transfer request etc..) is received, the " +"following methods may be used to inform you about it. Please note that " +"events about new messages only occur if it is a new message from a contact " +"you are not already chatting with" +msgstr "" +"När en ny händelse (meddelande, filöverföringförfrÃ¥gan etc...) mottas kan " +"följande metoder användas för att informera dig om det. Obeservera att " +"händelser rörande nya meddelanden endast används om det är ett nytt " +"meddelande frÃ¥n en kontakt du inte redan chattar med" + +#: ../data/glade/preferences_window.glade.h:74 +msgid "When new event is received" +msgstr "När en ny händelse är mottagen" + +#: ../data/glade/preferences_window.glade.h:75 +#, fuzzy +msgid "_Advanced Notifications Control..." +msgstr "Avancerad konfigurationsredigerare" + +#: ../data/glade/preferences_window.glade.h:76 +msgid "_After time:" +msgstr "Efter tid:" + +#: ../data/glade/preferences_window.glade.h:77 +msgid "_Before time:" +msgstr "Före tid:" + +#: ../data/glade/preferences_window.glade.h:78 +msgid "_Browser:" +msgstr "_Webbläsare:" + +#: ../data/glade/preferences_window.glade.h:79 +msgid "_File manager:" +msgstr "_Filhanterare:" + +#: ../data/glade/preferences_window.glade.h:80 +msgid "_Font:" +msgstr "Teckensnitt:" + +#: ../data/glade/preferences_window.glade.h:81 +msgid "_Highlight misspelled words" +msgstr "_Markera felstavade ord" + +#: ../data/glade/preferences_window.glade.h:82 +msgid "_Ignore events from contacts not in the roster" +msgstr "_Ignorera händelser frÃ¥n kontakter som inte finns i registret" + +#: ../data/glade/preferences_window.glade.h:83 +msgid "_Incoming message:" +msgstr "_Inkommande meddelande:" + +#: ../data/glade/preferences_window.glade.h:84 +msgid "_Log status changes of contacts" +msgstr "_Logga statusändringar hos kontakter" + +#: ../data/glade/preferences_window.glade.h:85 +msgid "_Mail client:" +msgstr "_E-postklient:" + +#: ../data/glade/preferences_window.glade.h:86 +msgid "_Never" +msgstr "_Aldrig" + +#: ../data/glade/preferences_window.glade.h:87 +msgid "_Notify me about it" +msgstr "_Meddela mig" + +#: ../data/glade/preferences_window.glade.h:88 +msgid "_Open..." +msgstr "Öppna..." + +#: ../data/glade/preferences_window.glade.h:89 +msgid "_Outgoing message:" +msgstr "UtgÃ¥ende meddelande:" + +#: ../data/glade/preferences_window.glade.h:90 +msgid "_Player:" +msgstr "_Spelare:" + +#: ../data/glade/preferences_window.glade.h:91 +msgid "_Pop it up" +msgstr "_Öppna det" + +#: ../data/glade/preferences_window.glade.h:92 +msgid "_Reset to Default Colors" +msgstr "Ã…terställ till Standardfärger" + +#: ../data/glade/preferences_window.glade.h:93 +msgid "_Sort contacts by status" +msgstr "_Sortera kontakter efter status" + +#: ../data/glade/preferences_window.glade.h:94 +msgid "_Status message:" +msgstr "_Statusmeddelande:" + +#: ../data/glade/preferences_window.glade.h:95 +msgid "_URL:" +msgstr "_URL:" + +#: ../data/glade/preferences_window.glade.h:96 +msgid "minutes" +msgstr "minuter" + +#: ../data/glade/privacy_list_edit_window.glade.h:1 +msgid "Add / Edit a rule" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:2 +#, fuzzy +msgid "List of rules" +msgstr "Format av en rad" + +#: ../data/glade/privacy_list_edit_window.glade.h:3 +msgid "Privacy List" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:5 ../src/config.py:2281 +msgid "All" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:6 +msgid "Allow" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:7 +#, fuzzy +msgid "Default" +msgstr "Radera" + +#: ../data/glade/privacy_list_edit_window.glade.h:9 +#, fuzzy +msgid "JabberID" +msgstr "Jabber-ID:" + +#: ../data/glade/privacy_list_edit_window.glade.h:10 +#, fuzzy +msgid "Order:" +msgstr "Server:" + +#: ../data/glade/privacy_list_edit_window.glade.h:11 ../src/dialogs.py:1626 +#, fuzzy +msgid "Privacy List" +msgstr "Ban-lista" + +#: ../data/glade/privacy_list_edit_window.glade.h:12 +#, fuzzy +msgid "all by subscription" +msgstr "_Prenumeration" + +#: ../data/glade/privacy_list_edit_window.glade.h:13 +#, fuzzy +msgid "all in the group" +msgstr "I gruppen" + +#: ../data/glade/privacy_list_edit_window.glade.h:14 +msgid "" +"none\n" +"both\n" +"from\n" +"to" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:18 +#, fuzzy +msgid "to send me messages" +msgstr "Skicka meddelande" + +#: ../data/glade/privacy_list_edit_window.glade.h:19 +msgid "to send me queries" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:20 +#, fuzzy +msgid "to send me status" +msgstr "Be om att fÃ¥ se hans/hennes status" + +#: ../data/glade/privacy_list_edit_window.glade.h:21 +#, fuzzy +msgid "to view my status" +msgstr "TillÃ¥t henne/honom att se min status" + +#: ../data/glade/privacy_lists_first_window.glade.h:1 +msgid "Create your own Privacy Lists" +msgstr "" + +#: ../data/glade/privacy_lists_first_window.glade.h:2 +msgid "Server-based Privacy Lists" +msgstr "" + +#: ../data/glade/remove_account_window.glade.h:1 +msgid "What do you want to do?" +msgstr "Vad vill du?" + +#: ../data/glade/remove_account_window.glade.h:2 +msgid "Remove account _only from Gajim" +msgstr "Ta bort konto enbart frÃ¥n Gajim" + +#: ../data/glade/remove_account_window.glade.h:3 +msgid "Remove account from Gajim and from _server" +msgstr "Ta bort konto frÃ¥n Gajim och frÃ¥n _servern" + +#: ../data/glade/roster_contact_context_menu.glade.h:1 +#, fuzzy +msgid "A_sk to see his/her status" +msgstr "Be om att fÃ¥ se hans/hennes status" + +#: ../data/glade/roster_contact_context_menu.glade.h:2 +msgid "Add Special _Notification" +msgstr "Lägg till Visuella Meddelanden" + +#: ../data/glade/roster_contact_context_menu.glade.h:3 +msgid "Assign Open_PGP Key" +msgstr "Tilldela Open_PGP-nyckel" + +#: ../data/glade/roster_contact_context_menu.glade.h:4 +msgid "Edit _Groups" +msgstr "Redigera _grupper" + +#: ../data/glade/roster_contact_context_menu.glade.h:5 +#: ../data/glade/systray_context_menu.glade.h:1 +msgid "Send Single _Message" +msgstr "Skicka enstaka _meddelande" + +#: ../data/glade/roster_contact_context_menu.glade.h:7 +msgid "Start _Chat" +msgstr "Starta _Chatt" + +#: ../data/glade/roster_contact_context_menu.glade.h:9 +#, fuzzy +msgid "_Allow him/her to see my status" +msgstr "TillÃ¥t henne/honom att se min status" + +#: ../data/glade/roster_contact_context_menu.glade.h:10 +#, fuzzy +msgid "_Forbid him/her to see my status" +msgstr "Förbjud henne/honom att se min status" + +#: ../data/glade/roster_contact_context_menu.glade.h:12 +#: ../src/roster_window.py:1482 +msgid "_Remove from Roster" +msgstr "Ta bo_rt frÃ¥n register" + +#: ../data/glade/roster_contact_context_menu.glade.h:13 +#: ../src/roster_window.py:1470 +msgid "_Rename" +msgstr "Byt _namn" + +#: ../data/glade/roster_contact_context_menu.glade.h:14 +msgid "_Subscription" +msgstr "_Prenumeration" + +#: ../data/glade/roster_window.glade.h:1 +msgid "A_ccounts" +msgstr "_Konton" + +#: ../data/glade/roster_window.glade.h:2 +msgid "Add _Contact" +msgstr "Lägg till _kontakt" + +#: ../data/glade/roster_window.glade.h:3 +msgid "File _Transfers" +msgstr "_Filöverföringar" + +#: ../data/glade/roster_window.glade.h:4 +msgid "Frequently Asked Questions (online)" +msgstr "Vanliga frÃ¥gor (webb)" + +#: ../data/glade/roster_window.glade.h:6 +msgid "Help online" +msgstr "Hjälp online" + +#: ../data/glade/roster_window.glade.h:7 +msgid "Profile, Avatar" +msgstr "Profil, avatar" + +#: ../data/glade/roster_window.glade.h:8 +msgid "Show _Offline Contacts" +msgstr "Visa _FrÃ¥nkopplade Kontakter" + +#: ../data/glade/roster_window.glade.h:11 +msgid "_Contents" +msgstr "_InnehÃ¥ll" + +#: ../data/glade/roster_window.glade.h:12 +msgid "_Discover Services" +msgstr "_Upptäck tjänster" + +#: ../data/glade/roster_window.glade.h:13 ../src/disco.py:1252 +#: ../src/roster_window.py:1462 +msgid "_Edit" +msgstr "R_edigera" + +#: ../data/glade/roster_window.glade.h:14 +msgid "_FAQ" +msgstr "_FAQ" + +#: ../data/glade/roster_window.glade.h:16 +msgid "_Help" +msgstr "_Hjälp" + +#: ../data/glade/roster_window.glade.h:17 +msgid "_Preferences" +msgstr "_Inställningar" + +#: ../data/glade/roster_window.glade.h:18 +msgid "_Quit" +msgstr "_Avsluta" + +#: ../data/glade/service_discovery_window.glade.h:1 +msgid "G_o" +msgstr "Kör" + +#: ../data/glade/service_discovery_window.glade.h:2 +msgid "_Address:" +msgstr "_Adress:" + +#: ../data/glade/service_discovery_window.glade.h:3 +msgid "_Filter:" +msgstr "_Filter:" + +#: ../data/glade/service_registration_window.glade.h:1 +msgid "Register to" +msgstr "Registrera till" + +#: ../data/glade/service_registration_window.glade.h:2 +msgid "_Cancel" +msgstr "_Avbryt" + +#: ../data/glade/service_registration_window.glade.h:3 +msgid "_OK" +msgstr "_OK" + +#: ../data/glade/single_message_window.glade.h:1 +msgid "0" +msgstr "0" + +#: ../data/glade/single_message_window.glade.h:2 +msgid "From:" +msgstr "FrÃ¥n:" + +#: ../data/glade/single_message_window.glade.h:3 +msgid "Reply to this message" +msgstr "Svara pÃ¥ detta meddelande" + +#: ../data/glade/single_message_window.glade.h:4 +msgid "Sen_d" +msgstr "Skick_a" + +#: ../data/glade/single_message_window.glade.h:5 +msgid "Send message" +msgstr "Skicka meddelande" + +#: ../data/glade/single_message_window.glade.h:6 +msgid "Send message and close window" +msgstr "Skicka meddelande och stäng fönster" + +#: ../data/glade/single_message_window.glade.h:7 +msgid "Subject:" +msgstr "Ämne:" + +#: ../data/glade/single_message_window.glade.h:8 +msgid "To:" +msgstr "Till:" + +#: ../data/glade/single_message_window.glade.h:9 +msgid "_Reply" +msgstr "_Svara" + +#: ../data/glade/single_message_window.glade.h:10 +msgid "_Send & Close" +msgstr "_Skicka & stäng" + +#: ../data/glade/subscription_request_window.glade.h:1 +msgid "Authorize contact so he can know when you're connected" +msgstr "Auktorisera kontakt sÃ¥ han kan veta när du är ansluten" + +#: ../data/glade/subscription_request_window.glade.h:2 +msgid "Contact _Info" +msgstr "Kontakt_info" + +#: ../data/glade/subscription_request_window.glade.h:3 +msgid "Deny authorization from contact so he cannot know when you're connected" +msgstr "" +"Avvisa auktorisering frÃ¥n kontakt sÃ¥ att han inte kan veta när du är ansluten" + +#: ../data/glade/subscription_request_window.glade.h:4 +msgid "Subscription Request" +msgstr "PrenumerationsförfrÃ¥gan" + +#: ../data/glade/subscription_request_window.glade.h:5 +msgid "_Authorize" +msgstr "_Auktorisera" + +#: ../data/glade/subscription_request_window.glade.h:6 +msgid "_Deny" +msgstr "_Neka" + +#: ../data/glade/systray_context_menu.glade.h:2 +msgid "Show All Pending _Events" +msgstr "Visa Alla Väntande Händelser" + +#: ../data/glade/systray_context_menu.glade.h:3 +msgid "Show _Roster" +msgstr "Visa _Registret" + +#: ../data/glade/systray_context_menu.glade.h:4 +msgid "Sta_tus" +msgstr "Sta_tus" + +#. "About" is the text of a tab of vcard window +#: ../data/glade/vcard_information_window.glade.h:2 +msgid "About" +msgstr "Om" + +#: ../data/glade/vcard_information_window.glade.h:3 +msgid "Address" +msgstr "Adress" + +#: ../data/glade/vcard_information_window.glade.h:4 +msgid "Ask:" +msgstr "FrÃ¥ga:" + +#: ../data/glade/vcard_information_window.glade.h:5 +msgid "Birthday:" +msgstr "Födelsedag:" + +#: ../data/glade/vcard_information_window.glade.h:6 +msgid "City:" +msgstr "Ort:" + +#: ../data/glade/vcard_information_window.glade.h:7 +msgid "Client:" +msgstr "Klient:" + +#: ../data/glade/vcard_information_window.glade.h:8 +msgid "Company:" +msgstr "Företag:" + +#: ../data/glade/vcard_information_window.glade.h:9 +msgid "Contact Information" +msgstr "Kontaktinformation" + +#: ../data/glade/vcard_information_window.glade.h:10 +msgid "Country:" +msgstr "Land:" + +#: ../data/glade/vcard_information_window.glade.h:11 +msgid "Department:" +msgstr "Avdelning:" + +#: ../data/glade/vcard_information_window.glade.h:12 +msgid "E-Mail:" +msgstr "E-post:" + +#: ../data/glade/vcard_information_window.glade.h:13 +msgid "Extra Address:" +msgstr "Extra adress:" + +#. Family Name +#: ../data/glade/vcard_information_window.glade.h:15 +msgid "Family:" +msgstr "Efternamn:" + +#: ../data/glade/vcard_information_window.glade.h:16 +msgid "Format: YYYY-MM-DD" +msgstr "Format: Ã…Ã…Ã…Ã…-MM-DD" + +#. Given Name +#: ../data/glade/vcard_information_window.glade.h:19 +msgid "Given:" +msgstr "Förnamn:" + +#: ../data/glade/vcard_information_window.glade.h:20 +msgid "Homepage:" +msgstr "Hemsida:" + +#: ../data/glade/vcard_information_window.glade.h:21 +msgid "Jabber" +msgstr "Jabber" + +#: ../data/glade/vcard_information_window.glade.h:22 +msgid "Jabber ID:" +msgstr "Jabber-ID:" + +#: ../data/glade/vcard_information_window.glade.h:23 +msgid "Location" +msgstr "Plats" + +#. Middle Name +#: ../data/glade/vcard_information_window.glade.h:25 +msgid "Middle:" +msgstr "Mellannamn:" + +#: ../data/glade/vcard_information_window.glade.h:26 +msgid "More" +msgstr "Mer" + +#: ../data/glade/vcard_information_window.glade.h:29 +msgid "OS:" +msgstr "OS:" + +#: ../data/glade/vcard_information_window.glade.h:30 +msgid "Phone No.:" +msgstr "Telefonnr.:" + +#: ../data/glade/vcard_information_window.glade.h:31 +msgid "Position:" +msgstr "Position:" + +#: ../data/glade/vcard_information_window.glade.h:32 +msgid "Postal Code:" +msgstr "Postnummer:" + +#. Prefix in Name +#: ../data/glade/vcard_information_window.glade.h:34 +msgid "Prefix:" +msgstr "Prefix:" + +#: ../data/glade/vcard_information_window.glade.h:35 +msgid "Resource:" +msgstr "Resurs:" + +#: ../data/glade/vcard_information_window.glade.h:36 +msgid "Role:" +msgstr "Roll:" + +#: ../data/glade/vcard_information_window.glade.h:37 +msgid "Set _Avatar" +msgstr "Ställ in _Avatar" + +#: ../data/glade/vcard_information_window.glade.h:38 +msgid "State:" +msgstr "Delstat:" + +#: ../data/glade/vcard_information_window.glade.h:39 +msgid "Status:" +msgstr "Status:" + +#: ../data/glade/vcard_information_window.glade.h:40 +msgid "Street:" +msgstr "Gatuadress:" + +#: ../data/glade/vcard_information_window.glade.h:41 +msgid "Subscription:" +msgstr "Prenumeration:" + +#. Suffix in Name +#: ../data/glade/vcard_information_window.glade.h:43 +msgid "Suffix:" +msgstr "Suffix:" + +#: ../data/glade/vcard_information_window.glade.h:44 +msgid "Work" +msgstr "Jobb" + +#: ../data/glade/vcard_information_window.glade.h:45 +msgid "_Log conversation history" +msgstr "_Logga konversationshistorik" + +#: ../data/glade/vcard_information_window.glade.h:46 +msgid "_Publish" +msgstr "_Publicera" + +#: ../data/glade/vcard_information_window.glade.h:47 +msgid "_Retrieve" +msgstr "_Hämta" + +#: ../data/glade/xml_console_window.glade.h:1 +msgid "Jabber Traffic" +msgstr "Jabbertrafik" + +#: ../data/glade/xml_console_window.glade.h:2 +msgid "XML Input" +msgstr "XML inskrivning" + +#. XML Console enable checkbutton +#: ../data/glade/xml_console_window.glade.h:4 +msgid "Enable" +msgstr "Aktivera" + +#. Info/Query make the "IQ" initials. So translate like this 'YourLang/YourLang (Info/Query)'. Thanks (it's a tooltip so width is not a problem) +#: ../data/glade/xml_console_window.glade.h:6 +msgid "Info/Query" +msgstr "Info/FörfrÃ¥gan (Info/Query)" + +#. Info/Query: all(?) jabber xml start with Whom do you want to ban?\n" "\n" @@ -376,11 +2426,11 @@ msgstr "" "Vem vill du bannlysa?\n" "\n" -#: ../src/config.py:2023 +#: ../src/config.py:2062 msgid "Adding Member..." msgstr "Lägger till medlem..." -#: ../src/config.py:2024 +#: ../src/config.py:2063 msgid "" "Whom do you want to make a member?\n" "\n" @@ -388,21 +2438,21 @@ msgstr "" "Vem vill du göra till medlem?\n" "\n" -#: ../src/config.py:2026 +#: ../src/config.py:2065 msgid "Adding Owner..." msgstr "Lägger till ägare..." -#: ../src/config.py:2027 +#: ../src/config.py:2066 msgid "" "Whom do you want to make a owner?\n" "\n" msgstr "Vem vill du göra till ägare?\n" -#: ../src/config.py:2029 +#: ../src/config.py:2068 msgid "Adding Administrator..." msgstr "Lägger till Administratör..." -#: ../src/config.py:2030 +#: ../src/config.py:2069 msgid "" "Whom do you want to make an administrator?\n" "\n" @@ -410,7 +2460,7 @@ msgstr "" "Vem vill du göra till administratör?\n" "\n" -#: ../src/config.py:2031 +#: ../src/config.py:2070 msgid "" "Can be one of the following:\n" "1. user@domain/resource (only that resource matches).\n" @@ -426,712 +2476,751 @@ msgstr "" "4. domän (domänen i sig matchar, sÃ¥ gör även alla användare@domän,\n" "domän/resurs, eller adress som innehÃ¥ller en underdomän." -#: ../src/config.py:2127 +#: ../src/config.py:2166 #, python-format msgid "Removing %s account" msgstr "Tar bort %s konto" -#: ../src/config.py:2144 -#: ../src/roster_window.py:1859 +#: ../src/config.py:2183 ../src/roster_window.py:1857 msgid "Password Required" msgstr "Lösenord Krävs" -#: ../src/config.py:2145 -#: ../src/roster_window.py:1860 +#: ../src/config.py:2184 ../src/roster_window.py:1858 #, python-format msgid "Enter your password for account %s" msgstr "Skriv in lösenordet för konto %s" -#: ../src/config.py:2146 -#: ../src/roster_window.py:1861 +#: ../src/config.py:2185 ../src/roster_window.py:1859 msgid "Save password" msgstr "Spara lösenord" -#: ../src/config.py:2159 +#: ../src/config.py:2198 #, python-format msgid "Account \"%s\" is connected to the server" msgstr "Konto \"%s\" är anslutet till servern" -#: ../src/config.py:2160 +#: ../src/config.py:2199 msgid "If you remove it, the connection will be lost." msgstr "Om du tar bort det kommer anslutningen att förloras." -#: ../src/config.py:2295 +#: ../src/config.py:2282 +msgid "Enter and leave only" +msgstr "" + +#: ../src/config.py:2352 msgid "New Room" msgstr "Nytt rum" -#: ../src/config.py:2326 +#: ../src/config.py:2383 msgid "This bookmark has invalid data" msgstr "Det här bokmärket har ogiltig data" -#: ../src/config.py:2327 -msgid "Please be sure to fill out server and room fields or remove this bookmark." +#: ../src/config.py:2384 +msgid "" +"Please be sure to fill out server and room fields or remove this bookmark." msgstr "Fyll i server- och rumfälten eller ta bort det här bokmärket." -#: ../src/config.py:2564 +#: ../src/config.py:2638 msgid "Invalid username" msgstr "Ogiltigt användarnamn" -#: ../src/config.py:2565 +#: ../src/config.py:2639 msgid "You must provide a username to configure this account." msgstr "Du behöver ange ett användarnamn för att konfigurera detta konto." -#: ../src/config.py:2574 -#: ../src/dialogs.py:1036 +#: ../src/config.py:2648 ../src/dialogs.py:1118 msgid "Invalid password" msgstr "Ogiltigt lösenord" -#: ../src/config.py:2575 +#: ../src/config.py:2649 msgid "You must enter a password for the new account." msgstr "Du mÃ¥ste skriva in ett lösenord för det nya kontot." -#: ../src/config.py:2579 -#: ../src/dialogs.py:1041 +#: ../src/config.py:2653 ../src/dialogs.py:1123 msgid "Passwords do not match" msgstr "Lösenorden stämmer inte överens" -#: ../src/config.py:2580 -#: ../src/dialogs.py:1042 +#: ../src/config.py:2654 ../src/dialogs.py:1124 msgid "The passwords typed in both fields must be identical." msgstr "Lösenorden skrivna i bÃ¥da fälten mÃ¥ste vara identiska." -#: ../src/config.py:2599 +#: ../src/config.py:2673 msgid "Duplicate Jabber ID" msgstr "Dubblett av Jabber-ID" -#: ../src/config.py:2600 +#: ../src/config.py:2674 msgid "This account is already configured in Gajim." msgstr "Detta kontot är redan konfigurerat i Gajim." -#: ../src/config.py:2617 +#: ../src/config.py:2691 msgid "Account has been added successfully" msgstr "Kontot har blivit tillagt" -#: ../src/config.py:2618 -#: ../src/config.py:2651 -msgid "You can set advanced account options by pressing Advanced button, or later by clicking in Accounts menuitem under Edit menu from the main window." -msgstr "Du kan ställa in avancerade alternativ genom att trycka pÃ¥ \"Avancerat\", eller senare genom att använda \"Redigera->Konton\" frÃ¥n huvudfönstret." +#: ../src/config.py:2692 ../src/config.py:2725 +msgid "" +"You can set advanced account options by pressing Advanced button, or later " +"by clicking in Accounts menuitem under Edit menu from the main window." +msgstr "" +"Du kan ställa in avancerade alternativ genom att trycka pÃ¥ \"Avancerat\", " +"eller senare genom att använda \"Redigera->Konton\" frÃ¥n huvudfönstret." -#: ../src/config.py:2650 +#: ../src/config.py:2724 msgid "Your new account has been created successfully" msgstr "Ditt nya konto har skapats" -#: ../src/config.py:2666 +#: ../src/config.py:2740 msgid "An error occured during account creation" msgstr "Ett fel uppstod när kontot skulle skapas" -#: ../src/config.py:2723 +#: ../src/config.py:2797 msgid "Account name is in use" msgstr "Kontonamnet används redan" -#: ../src/config.py:2724 +#: ../src/config.py:2798 msgid "You already have an account using this name." msgstr "Du har redan ett konto med det namnet." -#: ../src/conversation_textview.py:182 -msgid "Text below this line is what has been said since the last time you paid attention to this group chat" -msgstr "Texten under denna linje är vad som har sagts sedan du senast hade fokus pÃ¥ denna gruppchatt" +#: ../src/conversation_textview.py:205 +msgid "" +"Text below this line is what has been said since the last time you paid " +"attention to this group chat" +msgstr "" +"Texten under denna linje är vad som har sagts sedan du senast hade fokus pÃ¥ " +"denna gruppchatt" -#: ../src/conversation_textview.py:239 +#: ../src/conversation_textview.py:263 #, python-format msgid "Actions for \"%s\"" msgstr "Ã…tgärder för \"%s\"" -#: ../src/conversation_textview.py:251 +#: ../src/conversation_textview.py:275 msgid "Read _Wikipedia Article" msgstr "Läs _Wikipedia Artikel" -#: ../src/conversation_textview.py:255 +#: ../src/conversation_textview.py:280 msgid "Look it up in _Dictionary" msgstr "Kolla upp det i _Uppslagsbok" #. we must have %s in the url if not WIKTIONARY -#: ../src/conversation_textview.py:270 +#: ../src/conversation_textview.py:296 #, python-format msgid "Dictionary URL is missing an \"%s\" and it is not WIKTIONARY" msgstr "URL för uppslagsbok saknar ett \"%s\" och det är inte en WIKTIONARY" #. we must have %s in the url -#: ../src/conversation_textview.py:281 +#: ../src/conversation_textview.py:308 #, python-format msgid "Web Search URL is missing an \"%s\"" msgstr "URL för webbsökning saknar ett \"%s\"" -#: ../src/conversation_textview.py:284 +#: ../src/conversation_textview.py:311 msgid "Web _Search for it" msgstr "_Sök pÃ¥ webben efter det" -#: ../src/conversation_textview.py:574 +#: ../src/conversation_textview.py:607 msgid "Yesterday" msgstr "IgÃ¥r" #. the number is >= 2 #. %i is day in year (1-365), %d (1-31) we want %i -#: ../src/conversation_textview.py:578 +#: ../src/conversation_textview.py:611 #, python-format msgid "%i days ago" msgstr "%i dagar sen" #. if we have subject, show it too! -#: ../src/conversation_textview.py:634 +#: ../src/conversation_textview.py:686 #, python-format msgid "Subject: %s\n" msgstr "Ämne: %s\n" #. only say that to non Windows users -#: ../src/dbus_support.py:34 +#: ../src/dbus_support.py:32 msgid "D-Bus python bindings are missing in this computer" msgstr "D-Bus python-bindningar saknas pÃ¥ den här datorn" -#: ../src/dbus_support.py:35 +#: ../src/dbus_support.py:33 msgid "D-Bus capabilities of Gajim cannot be used" msgstr "Gajims D-Bus-egenskaper kan inte användas" -#: ../src/dialogs.py:64 +#: ../src/dialogs.py:55 #, python-format msgid "Contact's name: %s" msgstr "Kontaktens namn: %s" -#: ../src/dialogs.py:66 +#: ../src/dialogs.py:57 #, python-format msgid "JID: %s" msgstr "JID: %s" -#: ../src/dialogs.py:169 +#. Group name +#. In group boolean +#: ../src/dialogs.py:173 msgid "Group" msgstr "Grupp" -#: ../src/dialogs.py:176 +#: ../src/dialogs.py:180 msgid "In the group" msgstr "I gruppen" -#: ../src/dialogs.py:226 +#: ../src/dialogs.py:230 msgid "KeyID" msgstr "Nyckel-ID" -#: ../src/dialogs.py:229 +#: ../src/dialogs.py:233 msgid "Contact name" msgstr "Kontaktnamn" -#: ../src/dialogs.py:263 +#: ../src/dialogs.py:266 #, python-format msgid "%s Status Message" msgstr "Statusmeddelande för %s" -#: ../src/dialogs.py:265 +#: ../src/dialogs.py:268 msgid "Status Message" msgstr "Statusmeddelande" -#: ../src/dialogs.py:340 +#: ../src/dialogs.py:343 msgid "Save as Preset Status Message" msgstr "Spara som Valbart Statusmeddelande" -#: ../src/dialogs.py:341 +#: ../src/dialogs.py:344 msgid "Please type a name for this status message" msgstr "Skriv ett namn för detta statusmeddelande" -#: ../src/dialogs.py:369 +#: ../src/dialogs.py:391 #, python-format msgid "Please fill in the data of the contact you want to add in account %s" msgstr "Fyll i informationen om kontakten du vill lägga till i konto %s" -#: ../src/dialogs.py:371 +#: ../src/dialogs.py:393 msgid "Please fill in the data of the contact you want to add" msgstr "Fyll i informationen om kontakten du vill lägga till" -#. the user can be in mutiple groups, see in all of them -#: ../src/dialogs.py:380 -#: ../src/disco.py:118 -#: ../src/disco.py:119 -#: ../src/disco.py:1258 -#: ../src/roster_window.py:214 -#: ../src/roster_window.py:275 -#: ../src/roster_window.py:310 -#: ../src/roster_window.py:330 -#: ../src/roster_window.py:354 -#: ../src/roster_window.py:2940 -#: ../src/roster_window.py:2942 -#: ../src/systray.py:291 -#: ../src/common/helpers.py:42 +#: ../src/dialogs.py:403 ../src/disco.py:109 ../src/disco.py:110 +#: ../src/disco.py:1249 ../src/roster_window.py:207 +#: ../src/roster_window.py:273 ../src/roster_window.py:309 +#: ../src/roster_window.py:329 ../src/roster_window.py:353 +#: ../src/roster_window.py:2973 ../src/roster_window.py:2975 +#: ../src/common/helpers.py:39 msgid "Transports" msgstr "Transporter" -#: ../src/dialogs.py:452 -#: ../src/dialogs.py:458 +#: ../src/dialogs.py:493 ../src/dialogs.py:499 msgid "Invalid User ID" msgstr "Ogiltigt Jabber-ID" -#: ../src/dialogs.py:459 +#: ../src/dialogs.py:500 msgid "The user ID must not contain a resource." msgstr "Användarens ID fÃ¥r inte innehÃ¥lla en resurs." -#: ../src/dialogs.py:466 +#: ../src/dialogs.py:513 msgid "Contact already in roster" msgstr "Kontakten finns redan i registret" -#: ../src/dialogs.py:467 +#: ../src/dialogs.py:514 msgid "This contact is already listed in your roster." msgstr "Den här kontakten finns redan i ditt register." -#: ../src/dialogs.py:528 +#: ../src/dialogs.py:576 msgid "A GTK+ jabber client" msgstr "En GTK+ jabberklient" -#: ../src/dialogs.py:539 +#: ../src/dialogs.py:577 +msgid "GTK+ Version:" +msgstr "" + +#: ../src/dialogs.py:578 +msgid "PyGTK Version:" +msgstr "" + +#: ../src/dialogs.py:586 +#, fuzzy +msgid "Current Developers:" +msgstr "Tidigare utvecklare:" + +#: ../src/dialogs.py:588 msgid "Past Developers:" msgstr "Tidigare utvecklare:" -#: ../src/dialogs.py:543 +#: ../src/dialogs.py:592 msgid "THANKS:" msgstr "TACK:" -#. remove one english setence +#. remove one english sentence #. and add it manually as translatable -#: ../src/dialogs.py:550 +#: ../src/dialogs.py:598 msgid "Last but not least, we would like to thank all the package maintainers." msgstr "Sist men inte minst vill vi tacka alla anvsraiga paketerare." #. here you write your name in the form Name FamilyName -#: ../src/dialogs.py:564 +#: ../src/dialogs.py:612 msgid "translator-credits" msgstr "" "Christian Bjälevik \n" "Oscar Hellström " -#: ../src/dialogs.py:826 +#: ../src/dialogs.py:738 +#, fuzzy, python-format +msgid "Unable to bind to port %s." +msgstr "Lyckades inte gÃ¥ med i rummet" + +#: ../src/dialogs.py:739 +msgid "" +"Maybe you have another running instance of Gajim. File Transfer will be " +"canceled." +msgstr "" + +#: ../src/dialogs.py:881 #, python-format msgid "Subscription request for account %s from %s" msgstr "PrenumerationsförfrÃ¥gan för konto %s frÃ¥n %s" -#: ../src/dialogs.py:829 +#: ../src/dialogs.py:884 #, python-format msgid "Subscription request from %s" msgstr "PrenumerationsförfrÃ¥gan frÃ¥n %s" -#: ../src/dialogs.py:872 +#: ../src/dialogs.py:926 msgid "You can not join a group chat unless you are connected." msgstr "Du kan inte gÃ¥ med i en gruppchatt utan att vara ansluten." -#: ../src/dialogs.py:885 +#: ../src/dialogs.py:939 #, python-format msgid "Join Group Chat with account %s" msgstr "Anslut till gruppchatt med konto %s" -#: ../src/dialogs.py:887 -#: ../src/gtkgui.glade.h:177 -msgid "Join Group Chat" -msgstr "Anslut till gruppchatt" - -#: ../src/dialogs.py:976 +#: ../src/dialogs.py:1030 msgid "Invalid room or server name" msgstr "Ogiltigt rum- eller servernamn" -#: ../src/dialogs.py:977 +#: ../src/dialogs.py:1031 msgid "The room name or server name has not allowed characters." msgstr "Rums- eller servernamnet innehÃ¥ller icke tillÃ¥tna tecken." -#: ../src/dialogs.py:996 +#: ../src/dialogs.py:1050 #, python-format msgid "Start Chat with account %s" msgstr "Starta Chatt med konto %s" -#: ../src/dialogs.py:998 +#: ../src/dialogs.py:1052 msgid "Start Chat" msgstr "Starta Chatt" -#: ../src/dialogs.py:999 +#: ../src/dialogs.py:1053 +#, fuzzy msgid "" -"Fill in the contact ID of the contact you would like\n" +"Fill in the jid, or nick of the contact you would like\n" "to send a chat message to:" msgstr "" "Fyll i kontakt-ID för kontakten du vill\n" "skicka ett chattmeddelande till:" #. if offline or connecting -#: ../src/dialogs.py:1007 -#: ../src/dialogs.py:1330 -#: ../src/dialogs.py:1450 +#: ../src/dialogs.py:1078 ../src/dialogs.py:1427 ../src/dialogs.py:1551 msgid "Connection not available" msgstr "Förbindelse inte tillgänglig" -#: ../src/dialogs.py:1008 -#: ../src/dialogs.py:1331 -#: ../src/dialogs.py:1451 +#: ../src/dialogs.py:1079 ../src/dialogs.py:1428 ../src/dialogs.py:1552 #, python-format msgid "Please make sure you are connected with \"%s\"." msgstr "Kontrollera att du är ansluten med \"%s\"." -#: ../src/dialogs.py:1018 +#: ../src/dialogs.py:1088 ../src/dialogs.py:1091 +#, fuzzy +msgid "Invalid JID" +msgstr "Ogiltigt Jabber-ID" + +#: ../src/dialogs.py:1091 +#, fuzzy, python-format +msgid "Unable to parse \"%s\"." +msgstr "Lyckades inte skriva fil i %s" + +#: ../src/dialogs.py:1100 msgid "Without a connection, you can not change your password." msgstr "Utan en förbindelse kan du inte ändra ditt lösenord." -#: ../src/dialogs.py:1037 +#: ../src/dialogs.py:1119 msgid "You must enter a password." msgstr "Du mÃ¥ste skriva in ett lösenord." #. img to display #. default value -#: ../src/dialogs.py:1083 -#: ../src/gajim.py:443 -#: ../src/notify.py:129 +#: ../src/dialogs.py:1165 ../src/notify.py:126 ../src/notify.py:268 msgid "Contact Signed In" msgstr "Kontakt Loggade In" -#: ../src/dialogs.py:1085 -#: ../src/gajim.py:474 -#: ../src/notify.py:131 +#: ../src/dialogs.py:1167 ../src/notify.py:134 ../src/notify.py:270 msgid "Contact Signed Out" msgstr "Kontakt Loggade Ut" #. chat message -#: ../src/dialogs.py:1087 -#: ../src/gajim.py:609 -#: ../src/notify.py:133 +#: ../src/dialogs.py:1169 ../src/notify.py:154 ../src/notify.py:272 msgid "New Message" msgstr "Nytt Meddelande" #. single message -#: ../src/dialogs.py:1087 -#: ../src/gajim.py:603 -#: ../src/notify.py:133 +#: ../src/dialogs.py:1169 ../src/notify.py:138 ../src/notify.py:272 msgid "New Single Message" msgstr "Nytt Enstaka Meddelande" -#: ../src/dialogs.py:1088 -#: ../src/gajim.py:586 -#: ../src/notify.py:134 +#. private message +#: ../src/dialogs.py:1170 ../src/notify.py:145 ../src/notify.py:273 msgid "New Private Message" msgstr "Skicka Privat Meddelande" -#: ../src/dialogs.py:1088 -#: ../src/gajim.py:1049 -#: ../src/notify.py:142 +#: ../src/dialogs.py:1170 ../src/gajim.py:1044 ../src/notify.py:281 msgid "New E-mail" msgstr "Ny E-post" -#: ../src/dialogs.py:1090 -#: ../src/gajim.py:1187 -#: ../src/notify.py:136 +#: ../src/dialogs.py:1172 ../src/gajim.py:1187 ../src/notify.py:275 msgid "File Transfer Request" msgstr "FörfrÃ¥gan om Filöverföring" -#: ../src/dialogs.py:1092 -#: ../src/gajim.py:1035 -#: ../src/gajim.py:1164 -#: ../src/notify.py:138 +#: ../src/dialogs.py:1174 ../src/gajim.py:1022 ../src/gajim.py:1164 +#: ../src/notify.py:277 msgid "File Transfer Error" msgstr "Fel i Filöverföring" -#: ../src/dialogs.py:1094 -#: ../src/gajim.py:1222 -#: ../src/gajim.py:1244 -#: ../src/gajim.py:1261 -#: ../src/notify.py:140 +#: ../src/dialogs.py:1176 ../src/gajim.py:1222 ../src/gajim.py:1244 +#: ../src/gajim.py:1261 ../src/notify.py:279 msgid "File Transfer Completed" msgstr "Filöverföring Klar" -#: ../src/dialogs.py:1095 -#: ../src/gajim.py:1225 -#: ../src/notify.py:140 +#: ../src/dialogs.py:1177 ../src/gajim.py:1225 ../src/notify.py:279 msgid "File Transfer Stopped" msgstr "Filöverföring Stoppad" -#: ../src/dialogs.py:1097 -#: ../src/gajim.py:953 -#: ../src/notify.py:144 +#: ../src/dialogs.py:1179 ../src/gajim.py:920 ../src/notify.py:283 msgid "Groupchat Invitation" msgstr "Inbjudan till Gruppchatt" +#: ../src/dialogs.py:1181 ../src/notify.py:118 ../src/notify.py:285 +#, fuzzy +msgid "Contact Changed Status" +msgstr "Kontakt Loggade Ut" + #. FIXME: for Received with should become 'in' -#: ../src/dialogs.py:1262 +#: ../src/dialogs.py:1359 #, python-format msgid "Single Message with account %s" msgstr "Enstaka Meddelande med konto %s" -#: ../src/dialogs.py:1264 +#: ../src/dialogs.py:1361 msgid "Single Message" msgstr "Enstaka meddelande" #. prepare UI for Sending -#: ../src/dialogs.py:1267 +#: ../src/dialogs.py:1364 #, python-format msgid "Send %s" msgstr "Skicka %s" #. prepare UI for Receiving -#: ../src/dialogs.py:1290 +#: ../src/dialogs.py:1387 #, python-format msgid "Received %s" msgstr "Mottog %s" #. we create a new blank window to send and we preset RE: and to jid -#: ../src/dialogs.py:1355 +#: ../src/dialogs.py:1454 #, python-format msgid "RE: %s" msgstr "SV: %s" -#: ../src/dialogs.py:1356 +#: ../src/dialogs.py:1455 #, python-format msgid "%s wrote:\n" msgstr "%s skrev:\n" -#: ../src/dialogs.py:1400 +#: ../src/dialogs.py:1499 #, python-format msgid "XML Console for %s" msgstr "XML-konsol för %s" -#: ../src/dialogs.py:1402 +#: ../src/dialogs.py:1501 msgid "XML Console" msgstr "XML-konsol" +#: ../src/dialogs.py:1620 +#, python-format +msgid "Privacy List %s" +msgstr "" + +#: ../src/dialogs.py:1624 +#, python-format +msgid "Privacy List for %s" +msgstr "" + +#: ../src/dialogs.py:1716 +#, fuzzy +msgid "Edit a rule" +msgstr "Format av en rad" + +#: ../src/dialogs.py:1801 +#, fuzzy +msgid "Add a rule" +msgstr "Format av en rad" + +#: ../src/dialogs.py:1897 +#, python-format +msgid "Privacy Lists for %s" +msgstr "" + +#: ../src/dialogs.py:1899 +#, fuzzy +msgid "Privacy Lists" +msgstr "Privat Chatt" + #. FIXME: use nickname instead of contact_jid -#: ../src/dialogs.py:1488 +#: ../src/dialogs.py:1988 +#, python-format msgid "%(contact_jid)s has invited you to %(room_jid)s room" msgstr "%(contact_jid)s har bjudit in dig till %(room_jid)s" #. only if not None and not '' -#: ../src/dialogs.py:1494 +#: ../src/dialogs.py:1994 #, python-format msgid "Comment: %s" msgstr "Kommentar: %s" -#: ../src/dialogs.py:1554 +#: ../src/dialogs.py:2054 msgid "Choose Sound" msgstr "Välj ljud" -#: ../src/dialogs.py:1564 -#: ../src/dialogs.py:1607 +#: ../src/dialogs.py:2064 ../src/dialogs.py:2107 msgid "All files" msgstr "Alla filer" -#: ../src/dialogs.py:1569 +#: ../src/dialogs.py:2069 msgid "Wav Sounds" msgstr "Wav-ljud" -#: ../src/dialogs.py:1597 +#: ../src/dialogs.py:2097 msgid "Choose Image" msgstr "Välj Bild" -#: ../src/dialogs.py:1612 +#: ../src/dialogs.py:2112 msgid "Images" msgstr "Bilder" -#: ../src/dialogs.py:1658 +#: ../src/dialogs.py:2157 +#, python-format msgid "When %s becomes:" msgstr "När %s blir:" -#: ../src/dialogs.py:1660 +#: ../src/dialogs.py:2159 +#, python-format msgid "Adding Special Notification for %s" msgstr "Lägger Till Speciellt Meddelande För %s" -#: ../src/disco.py:117 +#: ../src/dialogs.py:2232 +#, fuzzy +msgid "Condition" +msgstr "Förbindelse" + +#: ../src/disco.py:108 msgid "Others" msgstr "Andra" #. conference is a category for listing mostly groupchats in service discovery -#: ../src/disco.py:121 +#: ../src/disco.py:112 msgid "Conference" msgstr "Konferens" -#: ../src/disco.py:420 +#: ../src/disco.py:411 msgid "Without a connection, you can not browse available services" msgstr "Utan en förbindelse kan du inte bläddra bland tillgängliga tjänster" -#: ../src/disco.py:499 +#: ../src/disco.py:490 +#, python-format msgid "Service Discovery using account %s" msgstr "Söker tjänster med konto %s" -#: ../src/disco.py:500 +#: ../src/disco.py:491 msgid "Service Discovery" msgstr "Tjänstefinnare" -#: ../src/disco.py:637 +#: ../src/disco.py:628 msgid "The service could not be found" msgstr "Denna tjänst kunde inte hittas" -#: ../src/disco.py:638 -msgid "There is no service at the address you entered, or it is not responding. Check the address and try again." -msgstr "Adressen du angav är ingen tjänstadress eller sÃ¥ svarar inte tjänsten. Kontrollera adressen och försök igen." +#: ../src/disco.py:629 +msgid "" +"There is no service at the address you entered, or it is not responding. " +"Check the address and try again." +msgstr "" +"Adressen du angav är ingen tjänstadress eller sÃ¥ svarar inte tjänsten. " +"Kontrollera adressen och försök igen." -#: ../src/disco.py:642 -#: ../src/disco.py:924 +#: ../src/disco.py:633 ../src/disco.py:915 msgid "The service is not browsable" msgstr "Tjänst är inte bläddringsbar" -#: ../src/disco.py:643 +#: ../src/disco.py:634 msgid "This type of service does not contain any items to browse." msgstr "Denna typ av tjänst innehÃ¥ller inga objekt att bläddra genom." -#: ../src/disco.py:723 +#: ../src/disco.py:714 +#, python-format msgid "Browsing %s using account %s" msgstr "Bläddrar %s med konto %s" -#: ../src/disco.py:762 +#: ../src/disco.py:753 msgid "_Browse" msgstr "_Bläddra" -#: ../src/disco.py:925 +#: ../src/disco.py:916 msgid "This service does not contain any items to browse." msgstr "Denna tjänst innehÃ¥ller inga objekt att bläddra genom." -#: ../src/disco.py:1146 -#: ../src/disco.py:1263 +#: ../src/disco.py:1137 ../src/disco.py:1254 msgid "Re_gister" msgstr "Re_gistrera" -#: ../src/disco.py:1154 -#: ../src/disco.py:1516 -#: ../src/gtkgui.glade.h:350 -msgid "_Join" -msgstr "_Anslut till" - -#: ../src/disco.py:1261 -#: ../src/gtkgui.glade.h:334 -#: ../src/roster_window.py:1462 -msgid "_Edit" -msgstr "R_edigera" - -#: ../src/disco.py:1300 +#: ../src/disco.py:1291 #, python-format msgid "Scanning %d / %d.." msgstr "Undersöker %d / %d.." #. Users column -#: ../src/disco.py:1482 +#: ../src/disco.py:1473 msgid "Users" msgstr "Användare" #. Description column -#: ../src/disco.py:1489 +#: ../src/disco.py:1480 msgid "Description" msgstr "Beskrivning" -#: ../src/filetransfers_window.py:81 +#: ../src/filetransfers_window.py:72 msgid "File" msgstr "Fil" -#: ../src/filetransfers_window.py:96 +#: ../src/filetransfers_window.py:87 msgid "Time" msgstr "Tid" -#: ../src/filetransfers_window.py:108 +#: ../src/filetransfers_window.py:99 msgid "Progress" msgstr "Förlopp" -#: ../src/filetransfers_window.py:176 -#: ../src/filetransfers_window.py:238 +#: ../src/filetransfers_window.py:163 ../src/filetransfers_window.py:223 #, python-format msgid "Filename: %s" msgstr "Filnamn: %s" -#: ../src/filetransfers_window.py:178 -#: ../src/filetransfers_window.py:308 +#: ../src/filetransfers_window.py:164 ../src/filetransfers_window.py:291 #, python-format msgid "Size: %s" msgstr "Storlek: %s" #. You is a reply of who sent a file #. You is a reply of who received a file -#: ../src/filetransfers_window.py:187 -#: ../src/filetransfers_window.py:197 -#: ../src/history_manager.py:452 +#: ../src/filetransfers_window.py:173 ../src/filetransfers_window.py:183 +#: ../src/history_manager.py:454 msgid "You" msgstr "Du" -#: ../src/filetransfers_window.py:188 -#: ../src/filetransfers_window.py:240 +#: ../src/filetransfers_window.py:174 ../src/filetransfers_window.py:224 #, python-format msgid "Sender: %s" msgstr "Avsändare: %s" -#: ../src/filetransfers_window.py:189 -#: ../src/filetransfers_window.py:555 -#: ../src/tooltips.py:617 +#: ../src/filetransfers_window.py:175 ../src/filetransfers_window.py:556 +#: ../src/tooltips.py:639 msgid "Recipient: " msgstr "Mottagare: " -#: ../src/filetransfers_window.py:200 +#: ../src/filetransfers_window.py:186 #, python-format msgid "Saved in: %s" msgstr "Sparad i: %s" -#: ../src/filetransfers_window.py:203 +#: ../src/filetransfers_window.py:188 msgid "File transfer completed" msgstr "Filöverföring färdig" -#: ../src/filetransfers_window.py:205 -#: ../src/gtkgui.glade.h:366 -msgid "_Open Containing Folder" -msgstr "_Öppna behÃ¥llande mapp" - -#: ../src/filetransfers_window.py:219 -#: ../src/filetransfers_window.py:227 +#: ../src/filetransfers_window.py:204 ../src/filetransfers_window.py:212 msgid "File transfer canceled" msgstr "Filöverföring avbruten" -#: ../src/filetransfers_window.py:219 -#: ../src/filetransfers_window.py:228 +#: ../src/filetransfers_window.py:204 ../src/filetransfers_window.py:213 msgid "Connection with peer cannot be established." msgstr "Förbindelse med motpart kan inte etableras." -#: ../src/filetransfers_window.py:242 +#: ../src/filetransfers_window.py:225 msgid "File transfer stopped by the contact of the other side" msgstr "Filöverföring stoppad av motparten" -#: ../src/filetransfers_window.py:259 +#: ../src/filetransfers_window.py:242 msgid "Choose File to Send..." msgstr "Välj fil att skicka..." -#. Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector) -#: ../src/filetransfers_window.py:266 -#: ../src/gtkgui.glade.h:390 -msgid "_Send" -msgstr "_Skicka" - -#: ../src/filetransfers_window.py:273 +#: ../src/filetransfers_window.py:256 msgid "Gajim cannot access this file" msgstr "Gajim kan inte komma Ã¥t denna fil" -#: ../src/filetransfers_window.py:274 +#: ../src/filetransfers_window.py:257 msgid "This file is being used by another process." msgstr "Denna fil används av en annan process." -#: ../src/filetransfers_window.py:306 +#: ../src/filetransfers_window.py:289 #, python-format msgid "File: %s" msgstr "Fil: %s" -#: ../src/filetransfers_window.py:311 +#: ../src/filetransfers_window.py:294 #, python-format msgid "Type: %s" msgstr "Typ: %s" -#: ../src/filetransfers_window.py:313 +#: ../src/filetransfers_window.py:296 #, python-format msgid "Description: %s" msgstr "Beskrivning: %s" -#: ../src/filetransfers_window.py:314 +#: ../src/filetransfers_window.py:297 #, python-format msgid "%s wants to send you a file:" msgstr "%s vill skicka en fil till dig:" -#: ../src/filetransfers_window.py:329 +#: ../src/filetransfers_window.py:311 +#, python-format +msgid "Cannot overwrite existing file \"%s\"" +msgstr "" + +#: ../src/filetransfers_window.py:312 +msgid "" +"A file with this name already exists and you do not have permission to " +"overwrite it." +msgstr "" + +#: ../src/filetransfers_window.py:319 ../src/gtkgui_helpers.py:685 msgid "This file already exists" msgstr "Den här filen finns redan" -#: ../src/filetransfers_window.py:329 +#: ../src/filetransfers_window.py:319 ../src/gtkgui_helpers.py:685 msgid "What do you want to do?" msgstr "Vad vill du göra?" -#: ../src/filetransfers_window.py:344 +#: ../src/filetransfers_window.py:331 +#, python-format +msgid "Directory \"%s\" is not writable" +msgstr "" + +#: ../src/filetransfers_window.py:331 +msgid "You do not have permission to create files in this directory." +msgstr "" + +#: ../src/filetransfers_window.py:341 msgid "Save File as..." msgstr "Spara fil som..." #. Print remaining time in format 00:00:00 #. You can change the places of (hours), (minutes), (seconds) - #. they are not translatable. -#: ../src/filetransfers_window.py:419 +#: ../src/filetransfers_window.py:420 #, python-format msgid "%(hours)02.d:%(minutes)02.d:%(seconds)02.d" msgstr "%(hours)02.d:%(minutes)02.d:%(seconds)02.d" @@ -1139,32 +3228,29 @@ msgstr "%(hours)02.d:%(minutes)02.d:%(seconds)02.d" #. This should make the string Kb/s, #. where 'Kb' part is taken from %s. #. Only the 's' after / (which means second) should be translated. -#: ../src/filetransfers_window.py:491 +#: ../src/filetransfers_window.py:492 #, python-format msgid "(%(filesize_unit)s/s)" msgstr "(%(filesize_unit)s/s)" -#: ../src/filetransfers_window.py:527 -#: ../src/filetransfers_window.py:530 +#: ../src/filetransfers_window.py:528 ../src/filetransfers_window.py:531 msgid "Invalid File" msgstr "Ogiltig Fil" -#: ../src/filetransfers_window.py:527 +#: ../src/filetransfers_window.py:528 msgid "File: " msgstr "Fil: " -#: ../src/filetransfers_window.py:531 +#: ../src/filetransfers_window.py:532 msgid "It is not possible to send empty files" msgstr "Det är inte möjligt att skicka tomma filer" -#: ../src/filetransfers_window.py:551 -#: ../src/tooltips.py:498 -#: ../src/tooltips.py:607 +#: ../src/filetransfers_window.py:552 ../src/tooltips.py:511 +#: ../src/tooltips.py:629 msgid "Name: " msgstr "Namn: " -#: ../src/filetransfers_window.py:553 -#: ../src/tooltips.py:611 +#: ../src/filetransfers_window.py:554 ../src/tooltips.py:633 msgid "Sender: " msgstr "Sändare: " @@ -1172,213 +3258,261 @@ msgstr "Sändare: " msgid "Pause" msgstr "Paus" -#: ../src/filetransfers_window.py:753 -#: ../src/gtkgui.glade.h:328 -msgid "_Continue" -msgstr "_Fortsätt" - -#: ../src/gajim-remote.py:84 +#: ../src/gajim-remote.py:82 msgid "shows a help on specific command" msgstr "visar hjälp för ett specifikt kommando" #. User gets help for the command, specified by this parameter -#: ../src/gajim-remote.py:87 +#: ../src/gajim-remote.py:85 msgid "command" msgstr "kommando" -#: ../src/gajim-remote.py:88 +#: ../src/gajim-remote.py:86 msgid "show help on command" msgstr "visar hjälp för kommando" -#: ../src/gajim-remote.py:92 +#: ../src/gajim-remote.py:90 msgid "Shows or hides the roster window" msgstr "Visar eller gömmer registerfönstret" -#: ../src/gajim-remote.py:96 +#: ../src/gajim-remote.py:94 msgid "Popups a window with the next unread message" msgstr "Öppnar ett fönster med nästa olästa meddelande" -#: ../src/gajim-remote.py:100 -msgid "Prints a list of all contacts in the roster. Each contact appear on a separate line" -msgstr "Skriv ut en lista pÃ¥ alla kontakter i registret. Varje kontakt hamnar pÃ¥ en egen rad" +#: ../src/gajim-remote.py:98 +msgid "" +"Prints a list of all contacts in the roster. Each contact appear on a " +"separate line" +msgstr "" +"Skriv ut en lista pÃ¥ alla kontakter i registret. Varje kontakt hamnar pÃ¥ en " +"egen rad" -#: ../src/gajim-remote.py:102 -#: ../src/gajim-remote.py:115 -#: ../src/gajim-remote.py:125 -#: ../src/gajim-remote.py:138 -#: ../src/gajim-remote.py:159 -#: ../src/gajim-remote.py:189 -#: ../src/gajim-remote.py:197 -#: ../src/gajim-remote.py:204 -#: ../src/gajim-remote.py:211 +#: ../src/gajim-remote.py:100 ../src/gajim-remote.py:114 +#: ../src/gajim-remote.py:124 ../src/gajim-remote.py:137 +#: ../src/gajim-remote.py:151 ../src/gajim-remote.py:172 +#: ../src/gajim-remote.py:202 ../src/gajim-remote.py:211 +#: ../src/gajim-remote.py:218 ../src/gajim-remote.py:225 +#: ../src/gajim-remote.py:236 msgid "account" msgstr "konto" -#: ../src/gajim-remote.py:102 +#: ../src/gajim-remote.py:100 msgid "show only contacts of the given account" msgstr "visa bara kontakter för det givna kontot" -#: ../src/gajim-remote.py:107 +#: ../src/gajim-remote.py:105 msgid "Prints a list of registered accounts" msgstr "Skriver ut en lista över registrerade konton" -#: ../src/gajim-remote.py:111 +#: ../src/gajim-remote.py:109 msgid "Changes the status of account or accounts" msgstr "Ändrar status för konto eller konton" -#: ../src/gajim-remote.py:113 +#. offline, online, chat, away, xa, dnd, invisible should not be translated +#: ../src/gajim-remote.py:112 msgid "status" msgstr "status" -#: ../src/gajim-remote.py:113 +#: ../src/gajim-remote.py:112 msgid "one of: offline, online, chat, away, xa, dnd, invisible " msgstr "en av: offline, online, chat, away, xa, dnd, invisible " -#: ../src/gajim-remote.py:114 -#: ../src/gajim-remote.py:135 +#: ../src/gajim-remote.py:113 ../src/gajim-remote.py:134 +#: ../src/gajim-remote.py:148 msgid "message" msgstr "meddelande" -#: ../src/gajim-remote.py:114 +#: ../src/gajim-remote.py:113 msgid "status message" msgstr "statusmeddelande" -#: ../src/gajim-remote.py:115 -msgid "change status of account \"account\". If not specified, try to change status of all accounts that have \"sync with global status\" option set" -msgstr "ändra status för konto \"konto\". Om inte specificerad, försök ändra status pÃ¥ alla konton som har \"synka med global status\" satt" +#: ../src/gajim-remote.py:114 +msgid "" +"change status of account \"account\". If not specified, try to change status " +"of all accounts that have \"sync with global status\" option set" +msgstr "" +"ändra status för konto \"konto\". Om inte specificerad, försök ändra status " +"pÃ¥ alla konton som har \"synka med global status\" satt" -#: ../src/gajim-remote.py:121 +#: ../src/gajim-remote.py:120 msgid "Shows the chat dialog so that you can send messages to a contact" msgstr "Visa chattdialogen sÃ¥ att du kan skicka meddelanden till en kontakt" -#: ../src/gajim-remote.py:123 +#: ../src/gajim-remote.py:122 msgid "JID of the contact that you want to chat with" msgstr "JID för kontakten som du vill chatta med" -#: ../src/gajim-remote.py:125 -#: ../src/gajim-remote.py:189 +#: ../src/gajim-remote.py:124 ../src/gajim-remote.py:202 msgid "if specified, contact is taken from the contact list of this account" -msgstr "om specificerat tas kontakten bort frÃ¥n kontaktlistan för det här kontot" +msgstr "" +"om specificerat tas kontakten bort frÃ¥n kontaktlistan för det här kontot" -#: ../src/gajim-remote.py:130 -msgid "Sends new message to a contact in the roster. Both OpenPGP key and account are optional. If you want to set only 'account', without 'OpenPGP key', just set 'OpenPGP key' to ''." -msgstr "Skicka nytt meddelande till en kontakt i registret. BÃ¥de OpenPGP-nyckel och konto är valfria. Om du vill sätta bara \"konto\", utan \"OpenPGP-nyckel\", sätt bara \"OpenPGP-nyckel\" till \"\"." +#: ../src/gajim-remote.py:129 +#, fuzzy +msgid "" +"Sends new chat message to a contact in the roster. Both OpenPGP key and " +"account are optional. If you want to set only 'account', without 'OpenPGP " +"key', just set 'OpenPGP key' to ''." +msgstr "" +"Skicka nytt meddelande till en kontakt i registret. BÃ¥de OpenPGP-nyckel och " +"konto är valfria. Om du vill sätta bara \"konto\", utan \"OpenPGP-nyckel\", " +"sätt bara \"OpenPGP-nyckel\" till \"\"." -#: ../src/gajim-remote.py:134 +#: ../src/gajim-remote.py:133 ../src/gajim-remote.py:146 msgid "JID of the contact that will receive the message" msgstr "JID för kontakten som kommer ta emot meddelandet" -#: ../src/gajim-remote.py:135 +#: ../src/gajim-remote.py:134 ../src/gajim-remote.py:148 msgid "message contents" msgstr "meddelandeinnehÃ¥ll" -#: ../src/gajim-remote.py:136 +#: ../src/gajim-remote.py:135 ../src/gajim-remote.py:149 msgid "pgp key" msgstr "pgp-nyckel" -#: ../src/gajim-remote.py:136 +#: ../src/gajim-remote.py:135 ../src/gajim-remote.py:149 msgid "if specified, the message will be encrypted using this public key" -msgstr "om specificerat kommer meddelandet bli krypterat med den här publika nyckeln" +msgstr "" +"om specificerat kommer meddelandet bli krypterat med den här publika nyckeln" -#: ../src/gajim-remote.py:138 +#: ../src/gajim-remote.py:137 ../src/gajim-remote.py:151 msgid "if specified, the message will be sent using this account" msgstr "om specificerat kommer meddelandet bli skickat genom det här kontot" -#: ../src/gajim-remote.py:143 +#: ../src/gajim-remote.py:142 +#, fuzzy +msgid "" +"Sends new single message to a contact in the roster. Both OpenPGP key and " +"account are optional. If you want to set only 'account', without 'OpenPGP " +"key', just set 'OpenPGP key' to ''." +msgstr "" +"Skicka nytt meddelande till en kontakt i registret. BÃ¥de OpenPGP-nyckel och " +"konto är valfria. Om du vill sätta bara \"konto\", utan \"OpenPGP-nyckel\", " +"sätt bara \"OpenPGP-nyckel\" till \"\"." + +#: ../src/gajim-remote.py:147 +#, fuzzy +msgid "subject" +msgstr "Ämne" + +#: ../src/gajim-remote.py:147 +#, fuzzy +msgid "message subject" +msgstr "Meddelande Skickat" + +#: ../src/gajim-remote.py:156 msgid "Gets detailed info on a contact" msgstr "Hämta detaljerad information om kontakt" -#: ../src/gajim-remote.py:145 -#: ../src/gajim-remote.py:158 -#: ../src/gajim-remote.py:188 +#: ../src/gajim-remote.py:158 ../src/gajim-remote.py:171 +#: ../src/gajim-remote.py:201 ../src/gajim-remote.py:210 msgid "JID of the contact" msgstr "JID för kontakten" -#: ../src/gajim-remote.py:149 +#: ../src/gajim-remote.py:162 msgid "Gets detailed info on a account" msgstr "Hämtar detaljerad information för kontakt" -#: ../src/gajim-remote.py:151 +#: ../src/gajim-remote.py:164 msgid "Name of the account" msgstr "Namn för kontot" -#: ../src/gajim-remote.py:155 +#: ../src/gajim-remote.py:168 msgid "Sends file to a contact" msgstr "Skicka fil till en kontakt" -#: ../src/gajim-remote.py:157 +#: ../src/gajim-remote.py:170 msgid "file" msgstr "fil" -#: ../src/gajim-remote.py:157 +#: ../src/gajim-remote.py:170 msgid "File path" msgstr "Sökväg" -#: ../src/gajim-remote.py:159 +#: ../src/gajim-remote.py:172 msgid "if specified, file will be sent using this account" msgstr "om specificerat kommer filen bli skickad genom det här kontot" -#: ../src/gajim-remote.py:164 +#: ../src/gajim-remote.py:177 msgid "Lists all preferences and their values" msgstr "Listar alla inställningar och deras värden" -#: ../src/gajim-remote.py:168 +#: ../src/gajim-remote.py:181 msgid "Sets value of 'key' to 'value'." msgstr "Sätter värdet av \"nyckel\" till \"värde\"." -#: ../src/gajim-remote.py:170 +#: ../src/gajim-remote.py:183 msgid "key=value" msgstr "nyckel=värde" -#: ../src/gajim-remote.py:170 +#: ../src/gajim-remote.py:183 msgid "'key' is the name of the preference, 'value' is the value to set it to" -msgstr "\"nyckel\" är namnet pÃ¥ inställningen, \"värde\" är värdet att sätta den till" +msgstr "" +"\"nyckel\" är namnet pÃ¥ inställningen, \"värde\" är värdet att sätta den till" -#: ../src/gajim-remote.py:175 +#: ../src/gajim-remote.py:188 msgid "Deletes a preference item" msgstr "Tar bort en inställning" -#: ../src/gajim-remote.py:177 +#: ../src/gajim-remote.py:190 msgid "key" msgstr "nyckel" -#: ../src/gajim-remote.py:177 +#: ../src/gajim-remote.py:190 msgid "name of the preference to be deleted" msgstr "namnet pÃ¥ inställningen som skall tas bort" -#: ../src/gajim-remote.py:181 +#: ../src/gajim-remote.py:194 msgid "Writes the current state of Gajim preferences to the .config file" msgstr "Skriver Gajims nuvarande inställningar till .config-filen" -#: ../src/gajim-remote.py:186 +#: ../src/gajim-remote.py:199 msgid "Removes contact from roster" msgstr "Ta bort en kontakt frÃ¥n register" -#: ../src/gajim-remote.py:195 +#: ../src/gajim-remote.py:208 msgid "Adds contact to roster" msgstr "Lägger till en kontakt till registret" -#: ../src/gajim-remote.py:197 -msgid "Adds new contact to this account." +#: ../src/gajim-remote.py:210 +msgid "jid" +msgstr "" + +#: ../src/gajim-remote.py:211 +#, fuzzy +msgid "Adds new contact to this account" msgstr "Lägger till ny kontakt till detta kontot." -#: ../src/gajim-remote.py:202 -msgid "Returns current status (the global one unless account is specified)" -msgstr "Returnerar nuvarande status (global status om inget konto specificerats)" - -#: ../src/gajim-remote.py:209 -msgid "Returns current status message(the global one unless account is specified)" -msgstr "Returnerar nuvarande statusmeddelande (det globala om inget konto specificerats)" - #: ../src/gajim-remote.py:216 +msgid "Returns current status (the global one unless account is specified)" +msgstr "" +"Returnerar nuvarande status (global status om inget konto specificerats)" + +#: ../src/gajim-remote.py:223 +msgid "" +"Returns current status message(the global one unless account is specified)" +msgstr "" +"Returnerar nuvarande statusmeddelande (det globala om inget konto " +"specificerats)" + +#: ../src/gajim-remote.py:230 msgid "Returns number of unreaded messages" msgstr "Returnerar antalet olästa meddelanden" +#: ../src/gajim-remote.py:234 +msgid "Open 'Start Chat' dialog" +msgstr "" + #: ../src/gajim-remote.py:236 +#, fuzzy +msgid "Starts chat, using this account" +msgstr "Starta Chatt med konto %s" + +#: ../src/gajim-remote.py:256 msgid "Missing argument \"contact_jid\"" msgstr "Saknar argument \"contact_jid\"" -#: ../src/gajim-remote.py:255 +#: ../src/gajim-remote.py:275 #, python-format msgid "" "'%s' is not in your roster.\n" @@ -1387,16 +3521,17 @@ msgstr "" "\"%s\" finns inte i ditt register.\n" "Specificera konto för att skicka meddelandet." -#: ../src/gajim-remote.py:258 +#: ../src/gajim-remote.py:278 msgid "You have no active account" msgstr "Du har inget aktivt konto" -#: ../src/gajim-remote.py:301 +#: ../src/gajim-remote.py:321 #, python-format msgid "Unknown D-Bus version: %s" msgstr "Okänd D-Busversion: %s" -#: ../src/gajim-remote.py:328 +#: ../src/gajim-remote.py:348 +#, python-format msgid "" "Usage: %s %s %s \n" "\t %s" @@ -1404,16 +3539,16 @@ msgstr "" "Användning: %s %s %s \n" "\t %s" -#: ../src/gajim-remote.py:331 +#: ../src/gajim-remote.py:351 msgid "Arguments:" msgstr "Parametrar:" -#: ../src/gajim-remote.py:335 +#: ../src/gajim-remote.py:355 #, python-format msgid "%s not found" msgstr "%s kunde inte hittas" -#: ../src/gajim-remote.py:339 +#: ../src/gajim-remote.py:359 #, python-format msgid "" "Usage: %s command [arguments]\n" @@ -1422,7 +3557,7 @@ msgstr "" "Användning: %s kommando [parametrar]\n" "Kommando är en av:\n" -#: ../src/gajim-remote.py:413 +#: ../src/gajim-remote.py:433 #, python-format msgid "" "Argument \"%s\" is not specified. \n" @@ -1457,109 +3592,109 @@ msgstr "GTK+ runtime saknar libgladestöd" #: ../src/gajim.py:63 #, python-format -msgid "Please remove your current GTK+ runtime and install the latest stable version from %s" -msgstr "Vänligen ta bort din nuvarande GTK+ runtime och installera senaste stabila version frÃ¥n %s" +msgid "" +"Please remove your current GTK+ runtime and install the latest stable " +"version from %s" +msgstr "" +"Vänligen ta bort din nuvarande GTK+ runtime och installera senaste stabila " +"version frÃ¥n %s" #: ../src/gajim.py:65 -msgid "Please make sure that GTK+ and PyGTK have libglade support in your system." -msgstr "Vänligen kontrollera att GTK+ och PyGTK har libgladestöd i ditt system." +msgid "" +"Please make sure that GTK+ and PyGTK have libglade support in your system." +msgstr "" +"Vänligen kontrollera att GTK+ och PyGTK har libgladestöd i ditt system." #: ../src/gajim.py:70 msgid "Gajim needs PySQLite2 to run" msgstr "Gajim behöver PySQLite2 för att fungera" -#: ../src/gajim.py:235 +#. set the icon to all newly opened wind +#: ../src/gajim.py:151 +msgid "Gajim is already running" +msgstr "" + +#: ../src/gajim.py:152 +msgid "" +"Another instance of Gajim seems to be running\n" +"Run anyway?" +msgstr "" + +#: ../src/gajim.py:267 #, python-format msgid "HTTP (%s) Authorization for %s (id: %s)" msgstr "HTTP (%s) Auktorisering för %s (id: %s)" -#: ../src/gajim.py:236 +#: ../src/gajim.py:268 msgid "Do you accept this request?" msgstr "Accepterar du den här förfrÃ¥gan?" -#: ../src/gajim.py:438 -msgid "%(nickname)s Signed In" -msgstr "%(nickname)s Loggade In" - -#: ../src/gajim.py:469 -msgid "%(nickname)s Signed Out" -msgstr "%(nickname)s Loggade Ut" - -#: ../src/gajim.py:583 -msgid "New Private Message from room %s" -msgstr "Nytt Privat Meddelande frÃ¥n rum %s" - -#: ../src/gajim.py:584 +#: ../src/gajim.py:611 #, python-format -msgid "%(nickname)s: %(message)s" -msgstr "%(nickname)s: %(message)s" - -#: ../src/gajim.py:606 -msgid "New Single Message from %(nickname)s" -msgstr "Nytt Enstaka Meddelande %(nickname)s" - -#: ../src/gajim.py:612 -msgid "New Message from %(nickname)s" -msgstr "Nytt meddelande frÃ¥n %(nickname)s" - -#: ../src/gajim.py:660 msgid "error while sending %s ( %s )" msgstr "problem vid sändning %s ( %s )" -#: ../src/gajim.py:700 +#: ../src/gajim.py:651 msgid "Authorization accepted" msgstr "Auktorisering accepterad" -#: ../src/gajim.py:701 +#: ../src/gajim.py:652 #, python-format msgid "The contact \"%s\" has authorized you to see his or her status." msgstr "Kontakten \"%s\" har auktoriserat dig att se hans eller hennes status." -#: ../src/gajim.py:709 +#: ../src/gajim.py:660 #, python-format msgid "Contact \"%s\" removed subscription from you" msgstr "Kontakten \"%s\" tog bort prenumerationen frÃ¥n dig" -#: ../src/gajim.py:710 +#: ../src/gajim.py:661 msgid "You will always see him or her as offline." msgstr "Du kommer alltid se honom eller henne som frÃ¥nkopplad." -#: ../src/gajim.py:736 +#: ../src/gajim.py:704 #, python-format msgid "Contact with \"%s\" cannot be established" msgstr "Kontakt med \"%s\" kan inte etableras" -#: ../src/gajim.py:737 -#: ../src/common/connection.py:349 +#: ../src/gajim.py:705 ../src/common/connection.py:398 msgid "Check your connection or try again later." msgstr "Kontrollera din förbindelse eller försök igen senare." -#: ../src/gajim.py:874 -#: ../src/roster_window.py:1012 +#: ../src/gajim.py:849 ../src/roster_window.py:1025 #, python-format msgid "%s is now %s (%s)" msgstr "%s är nu %s (%s)" -#: ../src/gajim.py:963 +#: ../src/gajim.py:930 msgid "Your passphrase is incorrect" msgstr "Din lösenfras är inkorrekt." -#: ../src/gajim.py:964 +#: ../src/gajim.py:931 msgid "You are currently connected without your OpenPGP key." msgstr "Du är för närvarande ansluten utan din OpenPGP-nyckel." #. FIXME: find a better image -#: ../src/gajim.py:1045 +#: ../src/gajim.py:1033 +#, python-format msgid "New E-mail on %(gmail_mail_address)s" msgstr "Ny Epost pÃ¥ %(gmail_mail_address)s" -#: ../src/gajim.py:1047 +#: ../src/gajim.py:1035 #, python-format msgid "You have %d new E-mail message" msgid_plural "You have %d new E-mail messages" msgstr[0] "Du har %d oläst E-postmeddelanden" msgstr[1] "Du har %d olästa E-postmeddelanden" +#. each message has a 'From', 'Subject' and 'Snippet' field +#: ../src/gajim.py:1040 +#, python-format +msgid "" +"\n" +"From: %(from_address)s" +msgstr "" + #: ../src/gajim.py:1185 #, python-format msgid "%s wants to send you a file." @@ -1600,2088 +3735,622 @@ msgid "vCard publication failed" msgstr "publicering av vCard misslyckades" #: ../src/gajim.py:1304 -msgid "There was an error while publishing your personal information, try again later." -msgstr "Det uppstod ett fel vid publiceringen av er personliga information, var vänlig försök igen senare." +msgid "" +"There was an error while publishing your personal information, try again " +"later." +msgstr "" +"Det uppstod ett fel vid publiceringen av er personliga information, var " +"vänlig försök igen senare." #. it is good to notify the user #. in case he or she cannot see the output of the console -#: ../src/gajim.py:1634 +#: ../src/gajim.py:1683 msgid "Could not save your settings and preferences" msgstr "Kunde inte spara dina inställningar" -#: ../src/gajim.py:1848 +#: ../src/gajim.py:1903 msgid "Session Management support not available (missing gnome.ui module)" msgstr "Session Management-stöd inte tillgängligt (saknar gnome.ui-modul)" -#: ../src/gajim.py:1878 +#: ../src/gajim.py:1932 msgid "Migrating Logs..." msgstr "Migrerar Logfiler" -#: ../src/gajim.py:1879 +#: ../src/gajim.py:1933 msgid "Please wait while logs are being migrated..." msgstr "Vänligen vänta medan logfiler blir migrerade..." -#: ../src/gajim_themes_window.py:67 +#: ../src/gajim_themes_window.py:59 msgid "Theme" msgstr "Tema" #. don't confuse translators -#: ../src/gajim_themes_window.py:149 +#: ../src/gajim_themes_window.py:141 msgid "theme name" msgstr "temanamn" -#: ../src/gajim_themes_window.py:166 +#: ../src/gajim_themes_window.py:158 msgid "You cannot delete your current theme" msgstr "Du kan inte ta bort ditt nuvarande tema" -#: ../src/gajim_themes_window.py:167 +#: ../src/gajim_themes_window.py:159 msgid "Please first choose another for your current theme." msgstr "Vänligen välj ett annat tema först." -#: ../src/groupchat_control.py:68 +#: ../src/groupchat_control.py:99 msgid "Private Chat" msgstr "Privat Chatt" -#: ../src/groupchat_control.py:68 +#: ../src/groupchat_control.py:99 msgid "Private Chats" msgstr "Privat Chatt" -#: ../src/groupchat_control.py:84 +#: ../src/groupchat_control.py:115 msgid "Sending private message failed" msgstr "Skicka privat meddelande misslyckades" #. in second %s code replaces with nickname -#: ../src/groupchat_control.py:86 +#: ../src/groupchat_control.py:117 #, python-format msgid "You are no longer in room \"%s\" or \"%s\" has left." msgstr "Du är inte längre i rummet \"%s\" eller \"%s\" har lämnat." -#: ../src/groupchat_control.py:98 +#: ../src/groupchat_control.py:129 msgid "Group Chat" msgstr "Gruppchatt" -#: ../src/groupchat_control.py:98 +#: ../src/groupchat_control.py:129 msgid "Group Chats" msgstr "Gruppchatt" -#: ../src/groupchat_control.py:595 +#: ../src/groupchat_control.py:308 +#, fuzzy +msgid "Insert Nickname" +msgstr "Byt smek_namn" + +#: ../src/groupchat_control.py:702 msgid "This room has no subject" msgstr "Det här rummet har inget ämne" #. do not print 'kicked by None' -#: ../src/groupchat_control.py:693 +#: ../src/groupchat_control.py:801 #, python-format msgid "%(nick)s has been kicked: %(reason)s" msgstr "%(nick)s har blivit sparkad: %(reason)s" -#: ../src/groupchat_control.py:697 +#: ../src/groupchat_control.py:805 #, python-format msgid "%(nick)s has been kicked by %(who)s: %(reason)s" msgstr "%(nick)s har blivit sparkad av %(who)s: %(reason)s" #. do not print 'banned by None' -#: ../src/groupchat_control.py:704 +#: ../src/groupchat_control.py:812 #, python-format msgid "%(nick)s has been banned: %(reason)s" msgstr "%(nick)s har blivit bannlyst: %(reason)s" -#: ../src/groupchat_control.py:708 +#: ../src/groupchat_control.py:816 #, python-format msgid "%(nick)s has been banned by %(who)s: %(reason)s" msgstr "%(nick)s har blivit bannlyst av %(who)s: %(reason)s" -#: ../src/groupchat_control.py:716 +#: ../src/groupchat_control.py:824 #, python-format msgid "You are now known as %s" msgstr "Du är nu känd som %s" -#: ../src/groupchat_control.py:718 +#: ../src/groupchat_control.py:826 #, python-format msgid "%s is now known as %s" msgstr "%s är nu känd som %s" -#: ../src/groupchat_control.py:757 +#: ../src/groupchat_control.py:897 #, python-format msgid "%s has left" msgstr "%s har lämnat" +#: ../src/groupchat_control.py:902 +#, python-format +msgid "%s has joined the room" +msgstr "" + #. No status message -#: ../src/groupchat_control.py:759 -#: ../src/roster_window.py:1015 +#: ../src/groupchat_control.py:904 ../src/roster_window.py:1028 #, python-format msgid "%s is now %s" msgstr "%s är nu %s" -#: ../src/groupchat_control.py:871 -#: ../src/groupchat_control.py:888 -#: ../src/groupchat_control.py:981 -#: ../src/groupchat_control.py:997 +#: ../src/groupchat_control.py:1022 ../src/groupchat_control.py:1039 +#: ../src/groupchat_control.py:1132 ../src/groupchat_control.py:1148 #, python-format msgid "Nickname not found: %s" msgstr "Smeknamnet kunde inte hittas: %s" -#: ../src/groupchat_control.py:915 +#: ../src/groupchat_control.py:1066 #, python-format msgid "Invited %(contact_jid)s to %(room_jid)s." msgstr "Bjöd in %(contact_jid)s till %(room_jid)s." #. %s is something the user wrote but it is not a jid so we inform -#: ../src/groupchat_control.py:922 -#: ../src/groupchat_control.py:952 +#: ../src/groupchat_control.py:1073 ../src/groupchat_control.py:1103 #, python-format msgid "%s does not appear to be a valid JID" msgstr "%s verkar inte vara ett giltigt JID" -#: ../src/groupchat_control.py:1019 +#: ../src/groupchat_control.py:1185 #, python-format msgid "No such command: /%s (if you want to send this, prefix it with /say)" -msgstr "Inget sÃ¥dant kommondo: /%s (om du vill skicka detta, använd /say som prefix)" +msgstr "" +"Inget sÃ¥dant kommondo: /%s (om du vill skicka detta, använd /say som prefix)" -#: ../src/groupchat_control.py:1041 +#: ../src/groupchat_control.py:1207 #, python-format msgid "Commands: %s" msgstr "Kommandon: %s" -#: ../src/groupchat_control.py:1043 +#: ../src/groupchat_control.py:1209 #, python-format -msgid "Usage: /%s [reason], bans the JID from the room. The nickname of an occupant may be substituted, but not if it contains \"@\". If the JID is currently in the room, he/she/it will also be kicked. Does NOT support spaces in nickname." -msgstr "Användning: /%s [reason], bannlyser JID frÃ¥n rummet. Smeknamnet kan substitueras, men inte om det innehÃ¥ller \"@\". Of JID befinner sig i rummet kommer han/hon/den/det ocksÃ¥ att att bli sparkad. Stödjer INTE mellanslag i smeknamn." +msgid "" +"Usage: /%s [reason], bans the JID from the room. The nickname " +"of an occupant may be substituted, but not if it contains \"@\". If the JID " +"is currently in the room, he/she/it will also be kicked. Does NOT support " +"spaces in nickname." +msgstr "" +"Användning: /%s [reason], bannlyser JID frÃ¥n rummet. " +"Smeknamnet kan substitueras, men inte om det innehÃ¥ller \"@\". Of JID " +"befinner sig i rummet kommer han/hon/den/det ocksÃ¥ att att bli sparkad. " +"Stödjer INTE mellanslag i smeknamn." -#: ../src/groupchat_control.py:1049 +#: ../src/groupchat_control.py:1215 #, python-format -msgid "Usage: /%s , opens a private chat window to the specified occupant." -msgstr "Användning: /%s , öppnar ett privat chattfönster till den specificerade deltagaren." +msgid "" +"Usage: /%s , opens a private chat window to the specified occupant." +msgstr "" +"Användning: /%s , öppnar ett privat chattfönster till den " +"specificerade deltagaren." -#: ../src/groupchat_control.py:1053 +#: ../src/groupchat_control.py:1219 #, python-format msgid "Usage: /%s, clears the text window." msgstr "Användning: /%s, tömmer fönstret frÃ¥n text." -#: ../src/groupchat_control.py:1055 +#: ../src/groupchat_control.py:1221 #, python-format -msgid "Usage: /%s [reason], closes the current window or tab, displaying reason if specified." -msgstr "Användning: /%s [anledning], stänger aktuellt fönster eller flik och visar anledning om sÃ¥dan specificerades." +msgid "" +"Usage: /%s [reason], closes the current window or tab, displaying reason if " +"specified." +msgstr "" +"Användning: /%s [anledning], stänger aktuellt fönster eller flik och visar " +"anledning om sÃ¥dan specificerades." -#: ../src/groupchat_control.py:1058 +#: ../src/groupchat_control.py:1224 +#, python-format msgid "Usage: /%s, hide the chat buttons." msgstr "Användning: /%s, gömmer knapparna." -#: ../src/groupchat_control.py:1060 +#: ../src/groupchat_control.py:1226 #, python-format -msgid "Usage: /%s [reason], invites JID to the current room, optionally providing a reason." -msgstr "Användning: /%s [anledning], bjuder in JID till aktivt rum med en valbar anledning." +msgid "" +"Usage: /%s [reason], invites JID to the current room, optionally " +"providing a reason." +msgstr "" +"Användning: /%s [anledning], bjuder in JID till aktivt rum med en " +"valbar anledning." -#: ../src/groupchat_control.py:1064 +#: ../src/groupchat_control.py:1230 #, python-format -msgid "Usage: /%s @[/nickname], offers to join room@server optionally using specified nickname." -msgstr "Användning: /%s @[/smeknamn], erbjuder att delta i rum@server med valbart smeknamn" +msgid "" +"Usage: /%s @[/nickname], offers to join room@server optionally " +"using specified nickname." +msgstr "" +"Användning: /%s @[/smeknamn], erbjuder att delta i rum@server " +"med valbart smeknamn" -#: ../src/groupchat_control.py:1068 +#: ../src/groupchat_control.py:1234 #, python-format -msgid "Usage: /%s [reason], removes the occupant specified by nickname from the room and optionally displays a reason. Does NOT support spaces in nickname." -msgstr "Användning: /%s [anledning], tar bort medlemmen specificerad med smeknamn och visar en valbar anledning. Stödjer INTE mellanslag i smeknamnet." +msgid "" +"Usage: /%s [reason], removes the occupant specified by nickname " +"from the room and optionally displays a reason. Does NOT support spaces in " +"nickname." +msgstr "" +"Användning: /%s [anledning], tar bort medlemmen specificerad med " +"smeknamn och visar en valbar anledning. Stödjer INTE mellanslag i smeknamnet." -#: ../src/groupchat_control.py:1073 +#: ../src/groupchat_control.py:1239 #, python-format -msgid "Usage: /%s , sends action to the current room. Use third person. (e.g. /%s explodes.)" -msgstr "Användning: /%s , skickar handling till aktivt rum. Använd tredje person. (t.ex. /%s exploderar.)" +msgid "" +"Usage: /%s , sends action to the current room. Use third person. (e." +"g. /%s explodes.)" +msgstr "" +"Användning: /%s , skickar handling till aktivt rum. Använd tredje " +"person. (t.ex. /%s exploderar.)" -#: ../src/groupchat_control.py:1077 -msgid "Usage: /%s [message], opens a private message windowand sends message to the occupant specified by nickname." -msgstr "Användning: /%s [meddelande], öppnar ett privat meddelandefönster och skickar ett meddelande till medlemmen specificerad med smeknamn." +#: ../src/groupchat_control.py:1243 +#, python-format +msgid "" +"Usage: /%s [message], opens a private message windowand sends " +"message to the occupant specified by nickname." +msgstr "" +"Användning: /%s [meddelande], öppnar ett privat meddelandefönster " +"och skickar ett meddelande till medlemmen specificerad med smeknamn." -#: ../src/groupchat_control.py:1082 +#: ../src/groupchat_control.py:1248 #, python-format msgid "Usage: /%s , changes your nickname in current room." msgstr "Användning /%s , byter ditt smeknamn i aktivt rum." -#: ../src/groupchat_control.py:1086 +#: ../src/groupchat_control.py:1252 +#, fuzzy, python-format +msgid "Usage: /%s , display the names of room occupants." +msgstr "Användning /%s [ämne], visar eller uppdaterar nuvarande ämne." + +#: ../src/groupchat_control.py:1256 #, python-format msgid "Usage: /%s [topic], displays or updates the current room topic." msgstr "Användning /%s [ämne], visar eller uppdaterar nuvarande ämne." -#: ../src/groupchat_control.py:1089 +#: ../src/groupchat_control.py:1259 #, python-format -msgid "Usage: /%s , sends a message without looking for other commands." -msgstr "Användning: /%s , skickar meddelande utan att leta efter andra kommandon." +msgid "" +"Usage: /%s , sends a message without looking for other commands." +msgstr "" +"Användning: /%s , skickar meddelande utan att leta efter andra " +"kommandon." -#: ../src/groupchat_control.py:1092 +#: ../src/groupchat_control.py:1262 #, python-format msgid "No help info for /%s" msgstr "Ingen hjälp för /%s" -#: ../src/groupchat_control.py:1128 +#: ../src/groupchat_control.py:1304 #, python-format msgid "Are you sure you want to leave room \"%s\"?" msgstr "Är du säker pÃ¥ att du vill lämna rum \"%s\"?" -#: ../src/groupchat_control.py:1129 +#: ../src/groupchat_control.py:1305 msgid "If you close this window, you will be disconnected from this room." -msgstr "Om du stänger det här fönstret kommer du bli frÃ¥nkopplad frÃ¥n det här rummet." +msgstr "" +"Om du stänger det här fönstret kommer du bli frÃ¥nkopplad frÃ¥n det här rummet." -#: ../src/groupchat_control.py:1133 +#: ../src/groupchat_control.py:1309 msgid "Do _not ask me again" msgstr "FrÃ¥ga mig i_nte igen" -#: ../src/groupchat_control.py:1167 +#: ../src/groupchat_control.py:1343 msgid "Changing Subject" msgstr "Ändrar Ämne" -#: ../src/groupchat_control.py:1168 +#: ../src/groupchat_control.py:1344 msgid "Please specify the new subject:" msgstr "Ange det nya ämnet:" -#: ../src/groupchat_control.py:1176 +#: ../src/groupchat_control.py:1352 msgid "Changing Nickname" msgstr "Byter Smeknamn" -#: ../src/groupchat_control.py:1177 +#: ../src/groupchat_control.py:1353 msgid "Please specify the new nickname you want to use:" msgstr "Ange det nya smeknamnet du vill använda:" -#: ../src/groupchat_control.py:1202 +#: ../src/groupchat_control.py:1379 msgid "Bookmark already set" msgstr "Bokmärke finns redan" -#: ../src/groupchat_control.py:1203 +#: ../src/groupchat_control.py:1380 #, python-format msgid "Room \"%s\" is already in your bookmarks." msgstr "Rummet \"%s\" finns redan i dina bokmärken." -#: ../src/groupchat_control.py:1212 +#: ../src/groupchat_control.py:1389 msgid "Bookmark has been added successfully" msgstr "Bokmärke har blivit ordentligt tillagt" -#: ../src/groupchat_control.py:1213 +#: ../src/groupchat_control.py:1390 msgid "You can manage your bookmarks via Actions menu in your roster." msgstr "Du kan hantera dina bokmärken via Ã¥tgärdsmenyn i ditt register." #. ask for reason -#: ../src/groupchat_control.py:1322 +#: ../src/groupchat_control.py:1500 #, python-format msgid "Kicking %s" msgstr "Sparkar %s" -#: ../src/groupchat_control.py:1323 -#: ../src/groupchat_control.py:1568 +#: ../src/groupchat_control.py:1501 ../src/groupchat_control.py:1779 msgid "You may specify a reason below:" msgstr "Du kan ange en orsak här under:" #. ask for reason -#: ../src/groupchat_control.py:1567 +#: ../src/groupchat_control.py:1778 #, python-format msgid "Banning %s" msgstr "Bannlyser %s" -#: ../src/gtkexcepthook.py:52 +#: ../src/gtkexcepthook.py:51 msgid "A programming error has been detected" msgstr "Ett programmeringsfel har upptäckts" -#: ../src/gtkexcepthook.py:53 -msgid "It probably is not fatal, but should be reported to the developers nonetheless." -msgstr "Det är antagligen inte förödande, men det bör rapporteras till utvecklarna likafullt." +#: ../src/gtkexcepthook.py:52 +msgid "" +"It probably is not fatal, but should be reported to the developers " +"nonetheless." +msgstr "" +"Det är antagligen inte förödande, men det bör rapporteras till utvecklarna " +"likafullt." -#: ../src/gtkexcepthook.py:59 +#: ../src/gtkexcepthook.py:58 msgid "_Report Bug" msgstr "_Rapportera Bug" -#: ../src/gtkexcepthook.py:82 +#: ../src/gtkexcepthook.py:81 msgid "Details" msgstr "Detaljer" -#. this always tracebacks -#: ../src/gtkgui.glade.h:1 -msgid "0" -msgstr "0" - -#: ../src/gtkgui.glade.h:2 -msgid "" -"Account is being created\n" -"\n" -"Please wait..." -msgstr "" -"konto skapas\n" -"\n" -"Vänligen vänta..." - -#: ../src/gtkgui.glade.h:5 -msgid "Advanced Configuration Editor" -msgstr "Avancerad konfigurationsredigerare" - -#: ../src/gtkgui.glade.h:6 -msgid "Applications" -msgstr "Program" - -#: ../src/gtkgui.glade.h:7 -msgid "Chatstate Tab Colors" -msgstr "Tabfärger För Chatstatus" - -#. a header for custom browser/client/file manager. so translate sth like: Custom Settings -#: ../src/gtkgui.glade.h:9 -msgid "Custom" -msgstr "Anpassa" - -#: ../src/gtkgui.glade.h:10 -msgid "Description" -msgstr "Beskrivning" - -#: ../src/gtkgui.glade.h:11 -msgid "Format of a line" -msgstr "Format av en rad" - -#: ../src/gtkgui.glade.h:12 -msgid "Interface Customization" -msgstr "Gränssnittsanpassning" - -#: ../src/gtkgui.glade.h:13 -msgid "Jabber Traffic" -msgstr "Jabbertrafik" - -#: ../src/gtkgui.glade.h:14 -msgid "Miscellaneous" -msgstr "Diverse" - -#: ../src/gtkgui.glade.h:15 -msgid "NOTE: You should restart gajim for some setting to take effect" -msgstr "NOTERA: Du bör starta om gajim för att vissa inställningar skall ge effekt" - -#: ../src/gtkgui.glade.h:16 -msgid "OpenPGP" -msgstr "OpenPGP" - -#: ../src/gtkgui.glade.h:17 -msgid "Personal Information" -msgstr "Personlig Information" - -#: ../src/gtkgui.glade.h:18 -msgid "Please choose one of the options below:" -msgstr "Vänligen välj ett av alternativen nedan:" - -#: ../src/gtkgui.glade.h:19 -msgid "Please fill in the data for your new account" -msgstr "Vänligen fyll i informationen för ditt nya konto" - -#: ../src/gtkgui.glade.h:20 -msgid "Preset Status Messages" -msgstr "Sparade Statusmeddelanden" - -#: ../src/gtkgui.glade.h:21 -msgid "Properties" -msgstr "Egenskaper" - -#: ../src/gtkgui.glade.h:22 -msgid "Settings" -msgstr "Inställningar" - -#: ../src/gtkgui.glade.h:23 -msgid "Sounds" -msgstr "Ljud" - -#: ../src/gtkgui.glade.h:24 -msgid "Type your new status message" -msgstr "Skriv ditt nya statusmeddelande" - -#: ../src/gtkgui.glade.h:25 -msgid "Visual Notifications" -msgstr "Visuella Meddelanden" - -#: ../src/gtkgui.glade.h:26 -msgid "What do you want to do?" -msgstr "Vad vill du?" - -#: ../src/gtkgui.glade.h:27 -msgid "XML Input" -msgstr "XML inskrivning" - -#: ../src/gtkgui.glade.h:28 -msgid "A list of active, completed and stopped file transfers" -msgstr "En lista pÃ¥ aktiva, kompletta och stoppade filöverföringar" - -#: ../src/gtkgui.glade.h:29 -msgid "A_ccounts" -msgstr "_Konton" - -#: ../src/gtkgui.glade.h:30 -msgid "A_fter nickname:" -msgstr "E_fter smeknamn:" - -#. "About" is the text of a tab of vcard window -#: ../src/gtkgui.glade.h:32 -msgid "About" -msgstr "Om" - -#: ../src/gtkgui.glade.h:33 -msgid "Accept" -msgstr "Acceptera" - -#: ../src/gtkgui.glade.h:34 -msgid "Account" -msgstr "Konto" - -#: ../src/gtkgui.glade.h:35 -msgid "" -"Account\n" -"Group\n" -"Contact\n" -"Banner" -msgstr "" -"Konto\n" -"Grupp\n" -"Kontakt\n" -"Banner" - -#: ../src/gtkgui.glade.h:39 -msgid "Account Modification" -msgstr "Kontomodifiering" - -#: ../src/gtkgui.glade.h:40 -msgid "Accounts" -msgstr "Konton" - -#: ../src/gtkgui.glade.h:42 -msgid "Add New Contact" -msgstr "Lägg till ny kontakt" - -#: ../src/gtkgui.glade.h:43 -msgid "Add Special _Notification" -msgstr "Lägg till Visuella Meddelanden" - -#: ../src/gtkgui.glade.h:44 -msgid "Add _Contact" -msgstr "Lägg till _kontakt" - -#: ../src/gtkgui.glade.h:45 -msgid "Address" -msgstr "Adress" - -#: ../src/gtkgui.glade.h:46 -msgid "Advanced" -msgstr "Avancerad" - -#: ../src/gtkgui.glade.h:47 -msgid "Advanced Configuration Editor" -msgstr "Avancerad konfigurationsredigerare" - -#: ../src/gtkgui.glade.h:48 -msgid "" -"All chat states\n" -"Composing only\n" -"Disabled" -msgstr "" -"Alla chattlägen\n" -"Författande enbart\n" -"FrÃ¥nslagen" - -#: ../src/gtkgui.glade.h:51 -msgid "Allow _OS information to be sent" -msgstr "TillÃ¥t _OS-information att skickas" - -#: ../src/gtkgui.glade.h:52 -msgid "Allow him/her to see my status" -msgstr "TillÃ¥t henne/honom att se min status" - -#: ../src/gtkgui.glade.h:53 -msgid "Allow popup/notifications when I'm _away/na/busy/invisible" -msgstr "TillÃ¥t popup/meddelanden när jag är bort_a/inte tillgänglig/upptagen/osynlig" - -#: ../src/gtkgui.glade.h:54 -msgid "Also known as iChat style" -msgstr "OcksÃ¥ känt som iChat-stil" - -#: ../src/gtkgui.glade.h:55 -msgid "Ask status message when I:" -msgstr "FrÃ¥ga efter statusmeddelande när jag:" - -#: ../src/gtkgui.glade.h:56 -msgid "Ask to see his/her status" -msgstr "Be om att fÃ¥ se hans/hennes status" - -#: ../src/gtkgui.glade.h:57 -msgid "Ask:" -msgstr "FrÃ¥ga:" - -#: ../src/gtkgui.glade.h:58 -msgid "Assign Open_PGP Key" -msgstr "Tilldela Open_PGP-nyckel" - -#: ../src/gtkgui.glade.h:59 -msgid "Authorize contact so he can know when you're connected" -msgstr "Auktorisera kontakt sÃ¥ han kan veta när du är ansluten" - -#: ../src/gtkgui.glade.h:60 -msgid "Auto _away after:" -msgstr "Automatiskt bort_a efter:" - -#: ../src/gtkgui.glade.h:61 -msgid "Auto _not available after:" -msgstr "Automatiskt ej tillgä_nglig efter:" - -#: ../src/gtkgui.glade.h:62 -msgid "Auto join" -msgstr "Anslut automatiskt" - -#: ../src/gtkgui.glade.h:63 -msgid "" -"Autodetect on every Gajim startup\n" -"Always use GNOME default applications\n" -"Always use KDE default applications\n" -"Custom" -msgstr "" -"Detektera vid varje Gajimstart\n" -"Använd alltid GNOMEs standardprogram\n" -"Använd alltid KDEs standardprogram\n" -"Anpassa" - -#: ../src/gtkgui.glade.h:67 -msgid "Automatically authorize contact" -msgstr "Auktorisera kontakt automatiskt" - -#: ../src/gtkgui.glade.h:68 -msgid "Autoreconnect when connection is lost" -msgstr "Ã…teranslut när anslutningen förloras" - -#: ../src/gtkgui.glade.h:69 -msgid "B_efore nickname:" -msgstr "För_e smeknamn:" - -#: ../src/gtkgui.glade.h:70 -msgid "Birthday:" -msgstr "Födelsedag:" - -#: ../src/gtkgui.glade.h:71 -msgid "Bold" -msgstr "Fetstil" - -#: ../src/gtkgui.glade.h:72 -msgid "Build custom query" -msgstr "Bygg egen frÃ¥ga" - -#: ../src/gtkgui.glade.h:73 -msgid "C_onnect on Gajim startup" -msgstr "Anslut vid start av Gajim" - -#: ../src/gtkgui.glade.h:74 -msgid "Cancel file transfer" -msgstr "Avbryt filöverföring" - -#: ../src/gtkgui.glade.h:75 -msgid "Cancels the selected file transfer" -msgstr "Avbryter den valda filöverföringen" - -#: ../src/gtkgui.glade.h:76 -msgid "Cancels the selected file transfer and removes incomplete file" -msgstr "Avbryter den valda filöverföringen och tar bort den icke-kompletta filen" - -#: ../src/gtkgui.glade.h:77 -msgid "Chan_ge Password" -msgstr "Byt lösenord" - -#: ../src/gtkgui.glade.h:78 -msgid "Change Password" -msgstr "Byt lösenord" - -#: ../src/gtkgui.glade.h:79 -msgid "Change _Nickname" -msgstr "Byt smek_namn" - -#: ../src/gtkgui.glade.h:80 -msgid "Change _Subject" -msgstr "Byt ämne" - -#: ../src/gtkgui.glade.h:82 -msgid "Chat state noti_fications:" -msgstr "Chattstatusmeddelanden:" - -#: ../src/gtkgui.glade.h:83 -msgid "Check this option, only if someone you don't have in the roster spams/annoys you. Use with caution, cause it blocks all messages from any contact that is not in the roster" -msgstr "Kryssa i det här valet enbart om nÃ¥gon du inte har i registret spammar/irriterar dig. Använd med förstÃ¥nd, för det blockerar alla meddelanden frÃ¥n alla kontakter som inte finns i ditt register" - -#: ../src/gtkgui.glade.h:84 -msgid "Check this so Gajim will connect in port 5223 where legacy servers are expected to have SSL capabilities. Note that Gajim uses TLS encryption by default if broadcasted by the server, and with this option enabled TLS will be disabled" -msgstr "Kryssa i det här sÃ¥ att Gajim kommer ansluta till port 5223 där tidigare servrar förväntades ha SSL-support. Notera att Gajim använder TLS kryptering som standard om servern stödjer det och med det här valet kommer TLS bli avslaget" - -#: ../src/gtkgui.glade.h:85 -msgid "Choose _Key..." -msgstr "Välj nyc_kel..." - -#: ../src/gtkgui.glade.h:86 -msgid "City:" -msgstr "Ort:" - -#: ../src/gtkgui.glade.h:87 -msgid "Clean _up" -msgstr "Städa _upp" - -#: ../src/gtkgui.glade.h:88 -msgid "Click to change account's password" -msgstr "Klicka för att byta kontots lösenord" - -#: ../src/gtkgui.glade.h:89 -msgid "Click to insert an emoticon (Alt+M)" -msgstr "Klicka för att sätta in en känsloikoner (Alt+M)" - -#: ../src/gtkgui.glade.h:90 -msgid "Click to see features (like MSN, ICQ transports) of jabber servers" -msgstr "Klicka för att visa funktioner (som MSN, ICQ transporter) pÃ¥ jabberservrar" - -#: ../src/gtkgui.glade.h:91 -msgid "Click to see past conversation in this room" -msgstr "Klicka för att visa tidigare konversationer i det här rummet" - -#: ../src/gtkgui.glade.h:92 -msgid "Click to see past conversations with this contact" -msgstr "Klicka för att via tidigare konversationer med den här kontakten" - -#: ../src/gtkgui.glade.h:93 -msgid "Client:" -msgstr "Klient:" - -#: ../src/gtkgui.glade.h:94 -msgid "Company:" -msgstr "Företag:" - -#: ../src/gtkgui.glade.h:95 -msgid "Composing" -msgstr "Skriver" - -#: ../src/gtkgui.glade.h:96 -msgid "Configure _Room" -msgstr "Konfigurera _rum" - -#: ../src/gtkgui.glade.h:97 -msgid "Connect when I press Finish" -msgstr "Anslut när jag trycker Slutför" - -#: ../src/gtkgui.glade.h:98 -msgid "Connection" -msgstr "Förbindelse" - -#: ../src/gtkgui.glade.h:99 -msgid "Contact Information" -msgstr "Kontaktinformation" - -#: ../src/gtkgui.glade.h:100 -msgid "Contact _Info" -msgstr "Kontakt_info" - -#: ../src/gtkgui.glade.h:101 -msgid "Conversation History" -msgstr "Konversationshistorik" - -#: ../src/gtkgui.glade.h:102 -msgid "Country:" -msgstr "Land:" - -#: ../src/gtkgui.glade.h:103 -msgid "Default status _iconset:" -msgstr "Standarduppsättning av _statusikoner:" - -#: ../src/gtkgui.glade.h:104 -msgid "Delete MOTD" -msgstr "Radera MOTD" - -#: ../src/gtkgui.glade.h:105 -msgid "Deletes Message of the Day" -msgstr "Raderar dagens meddelande" - -#: ../src/gtkgui.glade.h:106 -msgid "Deny" -msgstr "Neka" - -#: ../src/gtkgui.glade.h:107 -msgid "Deny authorization from contact so he cannot know when you're connected" -msgstr "Avvisa auktorisering frÃ¥n kontakt sÃ¥ att han inte kan veta när du är ansluten" - -#: ../src/gtkgui.glade.h:108 -msgid "Department:" -msgstr "Avdelning:" - -#: ../src/gtkgui.glade.h:109 -msgid "Display a_vatars of contacts in roster" -msgstr "Visa a_vatarer för kontakter i registret" - -#: ../src/gtkgui.glade.h:110 -msgid "Display status _messages of contacts in roster" -msgstr "Visa status_meddelanden för kontakter i registret" - -#: ../src/gtkgui.glade.h:111 -msgid "E-Mail:" -msgstr "E-post:" - -#: ../src/gtkgui.glade.h:112 -msgid "E_very 5 minutes" -msgstr "_Var 5:e minut" - -#: ../src/gtkgui.glade.h:113 -msgid "Edit Groups" -msgstr "Redigera grupper" - -#: ../src/gtkgui.glade.h:114 -msgid "Edit Personal Information..." -msgstr "Redigera personlig information..." - -#: ../src/gtkgui.glade.h:115 -msgid "Edit _Groups" -msgstr "Redigera _grupper" - -#: ../src/gtkgui.glade.h:116 -msgid "Emoticons:" -msgstr "Känsloikoner:" - -#. XML Console enable checkbutton -#: ../src/gtkgui.glade.h:118 -msgid "Enable" -msgstr "Aktivera" - -#: ../src/gtkgui.glade.h:119 -msgid "Enter it again for confirmation:" -msgstr "Skriv in det igen för att bekräfta:" - -#: ../src/gtkgui.glade.h:120 -msgid "Enter new password:" -msgstr "Skriv nytt lösenord:" - -#: ../src/gtkgui.glade.h:121 -msgid "Events" -msgstr "Händelser" - -#: ../src/gtkgui.glade.h:122 -msgid "Extra Address:" -msgstr "Extra adress:" - -#. Family Name -#: ../src/gtkgui.glade.h:124 -msgid "Family:" -msgstr "Efternamn:" - -#: ../src/gtkgui.glade.h:125 -msgid "File Transfers" -msgstr "Filöverföringar" - -#: ../src/gtkgui.glade.h:126 -msgid "File _Transfers" -msgstr "_Filöverföringar" - -#: ../src/gtkgui.glade.h:127 -msgid "Filter:" -msgstr "Filter:" - -#: ../src/gtkgui.glade.h:128 -msgid "Font style:" -msgstr "Teckensnitt-stil:" - -#: ../src/gtkgui.glade.h:129 -msgid "Forbid him/her to see my status" -msgstr "Förbjud henne/honom att se min status" - -#: ../src/gtkgui.glade.h:130 -msgid "Format: YYYY-MM-DD" -msgstr "Format: Ã…Ã…Ã…Ã…-MM-DD" - -#: ../src/gtkgui.glade.h:131 -msgid "Frequently Asked Questions (online)" -msgstr "Vanliga frÃ¥gor (webb)" - -#: ../src/gtkgui.glade.h:132 -msgid "From:" -msgstr "FrÃ¥n:" - -#: ../src/gtkgui.glade.h:133 -msgid "G_o" -msgstr "Kör" - -#: ../src/gtkgui.glade.h:134 -#: ../src/notify.py:167 -#: ../src/notify.py:189 -#: ../src/notify.py:201 -#: ../src/tooltips.py:339 -msgid "Gajim" -msgstr "Gajim" - -#: ../src/gtkgui.glade.h:135 -msgid "Gajim Themes Customization" -msgstr "Gajim Temaanpassare" - -#: ../src/gtkgui.glade.h:136 -msgid "Gajim can send and receive meta-information related to a conversation you may have with a contact. Here you can specify which chatstates you want to send to the other party." -msgstr "Gajim kan skicka och ta emot meta-information relaterad till en konversation som du har med en kontakt: Här kan du specificera vilka chattstatusmeddelanden du vill skicka till den andra parten." - -#: ../src/gtkgui.glade.h:137 -msgid "Gajim will automatically show new events by poping up the relative window" -msgstr "Gajim kommer automatiskt visa nya inkommande meddelanden genom att öppna relevant fönster" - -#: ../src/gtkgui.glade.h:138 -msgid "Gajim will notify you for new events via a popup in the bottom right of the screen" -msgstr "Gajim kommer att meddela dig om nya händelser via en popup i höger nederkant av skärmen" - -#: ../src/gtkgui.glade.h:139 -msgid "Gajim will notify you via a popup window in the bottom right of the screen about contacts that just signed in" -msgstr "Gajim kommer säga till dig via ett popupfönster i det nedre högra hörnet av skärmen om kontakter som just loggat in" - -#: ../src/gtkgui.glade.h:140 -msgid "Gajim will notify you via a popup window in the bottom right of the screen about contacts that just signed out" -msgstr "Gajim kommer säga till dig via ett popupfönster i det nedre högra hörnet av skärmen om kontakter som just loggat ut" - -#: ../src/gtkgui.glade.h:141 -msgid "Gajim will only change the icon of the contact that triggered the new event" -msgstr "Gajim kommer endast byta ikonen för kontakten som skickade den nya händelsen" - -#: ../src/gtkgui.glade.h:142 -msgid "Gajim: Account Creation Wizard" -msgstr "Gajim: Första-gÃ¥ngen guide" - -#. user has no group, print him in General -#: ../src/gtkgui.glade.h:143 -#: ../src/roster_window.py:291 -#: ../src/roster_window.py:1183 -#: ../src/roster_window.py:1405 -#: ../src/systray.py:286 -msgid "General" -msgstr "Generellt" - -#. Given Name -#: ../src/gtkgui.glade.h:145 -msgid "Given:" -msgstr "Förnamn:" - -#: ../src/gtkgui.glade.h:146 -msgid "Gone" -msgstr "Borta" - -#: ../src/gtkgui.glade.h:147 -msgid "Group:" -msgstr "Grupp:" - -#: ../src/gtkgui.glade.h:148 -msgid "HTTP Connect" -msgstr "HTTP anslut" - -#: ../src/gtkgui.glade.h:149 -msgid "Help online" -msgstr "Hjälp online" - -#: ../src/gtkgui.glade.h:150 -msgid "Hides the window" -msgstr "Gömmer fönstret" - -#: ../src/gtkgui.glade.h:151 -msgid "Homepage:" -msgstr "Hemsida:" - -#: ../src/gtkgui.glade.h:152 -msgid "Hostname: " -msgstr "Värdnamn: " - -#: ../src/gtkgui.glade.h:153 -msgid "I already have an account I want to use" -msgstr "Jag har redan ett konto jag vill använda" - -#: ../src/gtkgui.glade.h:154 -msgid "I want to _register for a new account" -msgstr "Jag vill _registrera ett nytt konto" - -#: ../src/gtkgui.glade.h:155 -msgid "I would like to add you to my contact list." -msgstr "Jag vill lägga till dig i min kontaktlista." - -#: ../src/gtkgui.glade.h:156 -msgid "If checked, Gajim will also broadcast some more IPs except from just your IP, so file transfer has higher chances of working right." -msgstr "Om ibockad kommer gajim att broadcasta fler IP-adresser än bara ditt IP. Detta för att öka möjligheten att filöverföring fungerar som den skall." - -#: ../src/gtkgui.glade.h:157 -msgid "If checked, Gajim will display avatars of contacts in roster window and in group chats" -msgstr "Om ibockad kommer Gajim att visa kontakters avatarer i register- och gruppchatfönstret" - -#: ../src/gtkgui.glade.h:158 -msgid "If checked, Gajim will display status messages of contacts under the contact name in roster window and in group chats" -msgstr "Om ibockad kommer Gajim att visa statusmeddelanden för kontakter under kontaktens namn i register- och gruppchatfönstret" - -#: ../src/gtkgui.glade.h:159 -msgid "If checked, Gajim will join this group chat on startup" -msgstr "Om ibockad kommer Gajim ansluta till den här gruppchatten vid start" - -#: ../src/gtkgui.glade.h:160 -msgid "If checked, Gajim will remember the password for this account" -msgstr "Om ibockad kommer Gajim komma ihÃ¥g lösenordet för det här kontot" - -#: ../src/gtkgui.glade.h:161 -msgid "If checked, Gajim will remember the roster and chat window positions in the screen and the sizes of them next time you run it" -msgstr "Om ibockad kommer Gajim komma ihÃ¥g registrets och chatfönstrets positioner och storlekar pÃ¥ skärmen nästa gÃ¥ng de används" - -#: ../src/gtkgui.glade.h:162 -msgid "If checked, Gajim will send keep-alive packets so it prevents connection timeout which results in disconnection" -msgstr "Om ibockad kommer Gajim skicka hÃ¥ll-vid-liv paket som förhindrar att anslutningen gör timeout vilket leder till frÃ¥nkoppling" - -#: ../src/gtkgui.glade.h:163 -msgid "If checked, Gajim will store the password in ~/.gajim/config with 'read' permission only for you" -msgstr "Om ibockad kommer Gajim spara lösenordet i ~/.gajim/config med \"läs\"-rättigheter enbart för dig och din administratör" - -#: ../src/gtkgui.glade.h:164 -msgid "If checked, Gajim will use protocol-specific status icons. (eg. A contact from MSN will have the equivalent msn icon for status online, away, busy, etc...)" -msgstr "Om ibockad kommer Gajim använda protokoll-specifika statusikoner (t.ex. en kontakt för MSN kommer ha msn:s ikon för status online, borta, upptagen, osv...)" - -#: ../src/gtkgui.glade.h:165 -msgid "If checked, Gajim, when launched, will automatically connect to jabber using this account" -msgstr "Om ibockad kommer Gajim att vid start automatiskt ansluta till jabber genom det här kontot" - -#: ../src/gtkgui.glade.h:166 -msgid "If checked, any change to the global status (handled by the combobox at the bottom of the roster window) will change the status of this account accordingly" -msgstr "Om ibockad kommer global status (hanteras av comboboxen i botten av registerfönstret) att pÃ¥verka även detta konto" - -#: ../src/gtkgui.glade.h:167 -msgid "If not disabled, Gajim will replace ascii smilies like ':)' with equivalent animated or static graphical emoticons" -msgstr "Om inte avstängd kommer Gajim ersätta ascii smilies som ':)' med motsvarande grafiska känsloikoner" - -#: ../src/gtkgui.glade.h:168 -msgid "If you have 2 or more accounts and it is checked, Gajim will list all contacts as if you had one account" -msgstr "Om du har 2 eller fler konton och det här är ibockad kommer Gajim lista alla kontakter som om du hade ett konto" - -#: ../src/gtkgui.glade.h:169 -msgid "Inactive" -msgstr "Inaktiv" - -#. Info/Query make the "IQ" initials. So translate like this 'YourLang/YourLang (Info/Query)'. Thanks (it's a tooltip so width is not a problem) -#: ../src/gtkgui.glade.h:171 -msgid "Info/Query" -msgstr "Info/FörfrÃ¥gan (Info/Query)" - -#: ../src/gtkgui.glade.h:172 -msgid "Information about you, as stored in the server" -msgstr "Information om dig, som den är sparad pÃ¥ servern" - -#: ../src/gtkgui.glade.h:173 -msgid "Invitation Received" -msgstr "Inbjudan mottagen" - -#: ../src/gtkgui.glade.h:174 -msgid "Italic" -msgstr "Kursiv" - -#: ../src/gtkgui.glade.h:175 -msgid "Jabber" -msgstr "Jabber" - -#: ../src/gtkgui.glade.h:176 -msgid "Jabber ID:" -msgstr "Jabber-ID:" - -#: ../src/gtkgui.glade.h:178 -msgid "Join _Group Chat" -msgstr "Anslut till _gruppchatt" - -#: ../src/gtkgui.glade.h:179 -msgid "Location" -msgstr "Plats" - -#: ../src/gtkgui.glade.h:180 -msgid "" -"MUC\n" -"Messages" -msgstr "" -"MUC\n" -"Meddelande" - -#: ../src/gtkgui.glade.h:182 -msgid "" -"MUC Directed\n" -"Messages" -msgstr "" -"MUC-dirigerade\n" -"Meddelanden" - -#: ../src/gtkgui.glade.h:184 -msgid "Ma_nage..." -msgstr "Ha_ntera..." - -#: ../src/gtkgui.glade.h:185 -msgid "Manage Accounts" -msgstr "Hantera konton" - -#: ../src/gtkgui.glade.h:186 -msgid "Manage Bookmarks" -msgstr "Hantera bokmärken" - -#: ../src/gtkgui.glade.h:187 -msgid "Manage Proxy Profiles" -msgstr "Hantera proxyprofiler" - -#: ../src/gtkgui.glade.h:188 -msgid "Manage..." -msgstr "Hantera..." - -#. Middle Name -#: ../src/gtkgui.glade.h:190 -msgid "Middle:" -msgstr "Mellannamn:" - -#: ../src/gtkgui.glade.h:191 -msgid "Mo_derator" -msgstr "Mo_derator" - -#: ../src/gtkgui.glade.h:192 -msgid "More" -msgstr "Mer" - -#: ../src/gtkgui.glade.h:193 -msgid "Name:" -msgstr "Namn:" - -#: ../src/gtkgui.glade.h:194 -msgid "" -"Never\n" -"Always\n" -"Per account\n" -"Per type" -msgstr "" -"Aldrig\n" -"Alltid\n" -"Per konto\n" -"Per typ" - -#: ../src/gtkgui.glade.h:198 -msgid "Nickname:" -msgstr "Smeknamn:" - -#. None means no proxy profile selected -#: ../src/gtkgui.glade.h:201 -msgid "None" -msgstr "Ingen" - -#: ../src/gtkgui.glade.h:202 -msgid "Notify me about contacts that: " -msgstr "Meddela när kontakter: " - -#: ../src/gtkgui.glade.h:203 -msgid "Notify on new _Gmail e-mail" -msgstr "Meddela om ny _Gmail e-post" - -#: ../src/gtkgui.glade.h:204 -msgid "OS:" -msgstr "OS:" - -#: ../src/gtkgui.glade.h:205 -msgid "On every _message" -msgstr "Vid varje _meddelande" - -#: ../src/gtkgui.glade.h:206 -msgid "One message _window:" -msgstr "Ett meddelandefönster:" - -#: ../src/gtkgui.glade.h:208 -msgid "Pass_word:" -msgstr "Lösen_ord:" - -#: ../src/gtkgui.glade.h:209 -msgid "Passphrase" -msgstr "Lösenfras" - -#: ../src/gtkgui.glade.h:210 -msgid "Password:" -msgstr "Lösenord:" - -#: ../src/gtkgui.glade.h:211 -#: ../src/tooltips.py:645 -msgid "Paused" -msgstr "Pausad" - -#: ../src/gtkgui.glade.h:212 -msgid "Personal Information" -msgstr "Personlig Information" - -#: ../src/gtkgui.glade.h:213 -msgid "Phone No.:" -msgstr "Telefonnr.:" - -#: ../src/gtkgui.glade.h:214 -msgid "Play _sounds" -msgstr "_Spela ljud" - -#: ../src/gtkgui.glade.h:215 -msgid "Port: " -msgstr "Port: " - -#: ../src/gtkgui.glade.h:216 -msgid "Position:" -msgstr "Position:" - -#: ../src/gtkgui.glade.h:217 -msgid "Postal Code:" -msgstr "Postnummer:" - -#: ../src/gtkgui.glade.h:218 -msgid "Preferences" -msgstr "Inställningar" - -#. Prefix in Name -#: ../src/gtkgui.glade.h:220 -msgid "Prefix:" -msgstr "Prefix:" - -#: ../src/gtkgui.glade.h:221 -msgid "Preset messages:" -msgstr "Sparade meddelanden:" - -#: ../src/gtkgui.glade.h:222 -msgid "Print time:" -msgstr "Skriv ut tid:" - -#: ../src/gtkgui.glade.h:223 -msgid "Priori_ty:" -msgstr "Priori_tet:" - -#: ../src/gtkgui.glade.h:224 -msgid "Priority is used in Jabber to determine who gets the events from the jabber server when two or more clients are connected using the same account; The client with the highest priority gets the events" -msgstr "Prioritet används i Jabber för att fastställa vem som fÃ¥r händelser frÃ¥n jabberservern när tvÃ¥ eller flera klienter är anslutna pÃ¥ samma konto: Klienten med den högsta prioriteten fÃ¥r händelserna" - -#: ../src/gtkgui.glade.h:225 -msgid "Profile, Avatar" -msgstr "Profil, avatar" - -#: ../src/gtkgui.glade.h:226 -msgid "Protocol:" -msgstr "Protokoll:" - -#: ../src/gtkgui.glade.h:227 -msgid "Proxy:" -msgstr "Proxy:" - -#: ../src/gtkgui.glade.h:228 -msgid "Query Builder..." -msgstr "FrÃ¥gebyggare..." - -#: ../src/gtkgui.glade.h:229 -msgid "Recently:" -msgstr "Nyligen:" - -#: ../src/gtkgui.glade.h:230 -msgid "Register to" -msgstr "Registrera till" - -#: ../src/gtkgui.glade.h:231 -msgid "Remove account _only from Gajim" -msgstr "Ta bort konto enbart frÃ¥n Gajim" - -#: ../src/gtkgui.glade.h:232 -msgid "Remove account from Gajim and from _server" -msgstr "Ta bort konto frÃ¥n Gajim och frÃ¥n _servern" - -#: ../src/gtkgui.glade.h:233 -msgid "Remove file transfer from the list." -msgstr "Ta bort filöverföring frÃ¥n listan." - -#: ../src/gtkgui.glade.h:234 -msgid "Removes completed, canceled and failed file transfers from the list" -msgstr "Tar bort klara, avbrutna och felaktiga filöverföringar frÃ¥n listan" - -#: ../src/gtkgui.glade.h:235 -msgid "Reply to this message" -msgstr "Svara pÃ¥ detta meddelande" - -#: ../src/gtkgui.glade.h:236 -msgid "Resour_ce: " -msgstr "Resur_s: " - -#: ../src/gtkgui.glade.h:237 -msgid "Resource is sent to the Jabber server in order to separate the same JID in two or more parts depending on the number of the clients connected in the same server with the same account. So you might be connected in the same account with resource 'Home' and 'Work' at the same time. The resource which has the highest priority will get the events. (see below)" -msgstr "Resurs skickas till Jabberservern för att separera samma JID i tvÃ¥ eller flera delar beroende pÃ¥ antalet klienter anslutna till samma server med samma konto. SÃ¥ du kan vara ansluten till samma konto med resurserna \"Hem\" och \"Jobb\" samtidigt. Resursen med högst prioritet kommer fÃ¥ händelserna. (se undertill)" - -#: ../src/gtkgui.glade.h:238 -msgid "Resource:" -msgstr "Resurs:" - -#: ../src/gtkgui.glade.h:239 -msgid "Role:" -msgstr "Roll:" - -#: ../src/gtkgui.glade.h:240 -msgid "Room Configuration" -msgstr "Rumkonfiguration" - -#: ../src/gtkgui.glade.h:241 -msgid "Room:" -msgstr "Rum:" - -#: ../src/gtkgui.glade.h:242 -msgid "Save _passphrase (insecure)" -msgstr "Spara _lösenfras (osäkert)" - -#: ../src/gtkgui.glade.h:243 -msgid "Save _position and size for roster and chat windows" -msgstr "Spara _position och storlek för register- och chattfönster" - -#: ../src/gtkgui.glade.h:244 -msgid "Save as Preset..." -msgstr "Spara Meddeande..." - -#: ../src/gtkgui.glade.h:245 -msgid "Save conversation _logs for all contacts" -msgstr "Spara konversations_loggar för alla kontakter" - -#: ../src/gtkgui.glade.h:246 -msgid "Save pass_word" -msgstr "Spara lösen_ord" - -#: ../src/gtkgui.glade.h:247 -msgid "Search" -msgstr "Sök" - -#: ../src/gtkgui.glade.h:248 -msgid "Sen_d" -msgstr "Skick_a" - -#: ../src/gtkgui.glade.h:249 -msgid "Send File" -msgstr "Skicka fil" - -#: ../src/gtkgui.glade.h:250 -msgid "Send Single _Message" -msgstr "Skicka enstaka _meddelande" - -#: ../src/gtkgui.glade.h:251 -msgid "Send Single _Message..." -msgstr "Skicka Enstaka _Meddelande" - -#: ../src/gtkgui.glade.h:252 -msgid "Send _File" -msgstr "Skicka _Fil" - -#: ../src/gtkgui.glade.h:253 -msgid "Send keep-alive packets" -msgstr "Skicka hÃ¥ll-vid-liv paket" - -#: ../src/gtkgui.glade.h:254 -msgid "Send message" -msgstr "Skicka meddelande" - -#: ../src/gtkgui.glade.h:255 -msgid "Send message and close window" -msgstr "Skicka meddelande och stäng fönster" - -#: ../src/gtkgui.glade.h:256 -msgid "Sends a message to currently connected users to this server" -msgstr "Skickar ett meddelande till nuvarande anslutna klienter pÃ¥ den här servern" - -#: ../src/gtkgui.glade.h:257 -msgid "Server:" -msgstr "Server:" - -#: ../src/gtkgui.glade.h:258 -msgid "Servers Features" -msgstr "Serverns funktioner" - -#: ../src/gtkgui.glade.h:259 -msgid "Set MOTD" -msgstr "Ställ in MOTD" - -#: ../src/gtkgui.glade.h:260 -msgid "Set _Avatar" -msgstr "Ställ in _Avatar" - -#: ../src/gtkgui.glade.h:261 -msgid "Set my profile when I connect" -msgstr "Ställ in min profil när jag ansluter" - -#: ../src/gtkgui.glade.h:262 -msgid "Sets Message of the Day" -msgstr "Ställer in dagens meddelande" - -#: ../src/gtkgui.glade.h:263 -msgid "Show All Pending _Events" -msgstr "Visa Alla Väntande Händelser" - -#: ../src/gtkgui.glade.h:264 -msgid "Show _Offline Contacts" -msgstr "Visa _FrÃ¥nkopplade Kontakter" - -#: ../src/gtkgui.glade.h:265 -msgid "Show _Roster" -msgstr "Visa _Registret" - -#: ../src/gtkgui.glade.h:266 -msgid "Show _XML Console" -msgstr "Visa _XML konsol" - -#: ../src/gtkgui.glade.h:267 -msgid "Show only in _roster" -msgstr "Visa enbart i _registret" - -#: ../src/gtkgui.glade.h:268 -msgid "Shows a list of file transfers between you and other" -msgstr "Visar en lista med filöverföringar mellan dig och andra" - -#: ../src/gtkgui.glade.h:269 -msgid "Sign _in" -msgstr "Loggar _in" - -#: ../src/gtkgui.glade.h:270 -msgid "Sign _out" -msgstr "Loggar _ut" - -#: ../src/gtkgui.glade.h:271 -msgid "Sta_tus" -msgstr "Sta_tus" - -#: ../src/gtkgui.glade.h:272 -msgid "Start _Chat" -msgstr "Starta _Chatt" - -#: ../src/gtkgui.glade.h:273 -msgid "State:" -msgstr "Delstat:" - -#: ../src/gtkgui.glade.h:274 -msgid "Status" -msgstr "Status" - -#: ../src/gtkgui.glade.h:275 -msgid "Status:" -msgstr "Status:" - -#: ../src/gtkgui.glade.h:276 -msgid "Street:" -msgstr "Gatuadress:" - -#: ../src/gtkgui.glade.h:277 -msgid "Subject:" -msgstr "Ämne:" - -#: ../src/gtkgui.glade.h:278 -msgid "Subscription Request" -msgstr "PrenumerationsförfrÃ¥gan" - -#: ../src/gtkgui.glade.h:279 -msgid "Subscription:" -msgstr "Prenumeration:" - -#. Suffix in Name -#: ../src/gtkgui.glade.h:281 -msgid "Suffix:" -msgstr "Suffix:" - -#: ../src/gtkgui.glade.h:282 -msgid "Synch_ronize account status with global status" -msgstr "Synk_ronisera kontostatus med global status" - -#: ../src/gtkgui.glade.h:283 -msgid "T_heme:" -msgstr "Tema:" - -#: ../src/gtkgui.glade.h:284 -msgid "Text _color:" -msgstr "Textfärg:" - -#: ../src/gtkgui.glade.h:285 -msgid "Text _font:" -msgstr "Text-teckensnitt:" - -#: ../src/gtkgui.glade.h:286 -msgid "The auto away status message" -msgstr "Det automatiska statusmeddelandet när du är borta" - -#: ../src/gtkgui.glade.h:287 -msgid "The auto not available status message" -msgstr "Det automatiska statusmeddelandet när du inte är tillgänglig" - -#: ../src/gtkgui.glade.h:288 -msgid "This action removes single file transfer from the list. If the transfer is active, it is first stopped and then removed" -msgstr "Den här handlingen tar bort en enstaka filöverföring frÃ¥n listan. Om överföringen är aktiv, stoppas den först och tas sen bort" - -#: ../src/gtkgui.glade.h:289 -msgid "Title:" -msgstr "Titel:" - -#: ../src/gtkgui.glade.h:290 -msgid "To:" -msgstr "Till:" - -#: ../src/gtkgui.glade.h:291 -msgid "Toggle Open_PGP Encryption" -msgstr "SlÃ¥ pÃ¥/av Open_PGP kryptering" - -#: ../src/gtkgui.glade.h:292 -msgid "Type:" -msgstr "Typ:" - -#: ../src/gtkgui.glade.h:293 -msgid "Underline" -msgstr "Understrykning" - -#: ../src/gtkgui.glade.h:294 -msgid "Update MOTD" -msgstr "Uppdatera MOTD" - -#: ../src/gtkgui.glade.h:295 -msgid "Updates Message of the Day" -msgstr "Uppdaterar dagens meddelande" - -#: ../src/gtkgui.glade.h:296 -msgid "Use _SSL (legacy)" -msgstr "Använd _SSL (förÃ¥ldrat)" - -#: ../src/gtkgui.glade.h:297 -msgid "Use _transports iconsets" -msgstr "" -"Använd _transporternas\n" -"ikonuppsättningar" - -#: ../src/gtkgui.glade.h:298 -msgid "Use authentication" -msgstr "Använd autentisering" - -#: ../src/gtkgui.glade.h:299 -msgid "Use custom hostname/port" -msgstr "Använd anpassat värdnamn/port" - -#: ../src/gtkgui.glade.h:300 -msgid "Use file transfer proxies" -msgstr "Använd proxy för filöverföringar" - -#: ../src/gtkgui.glade.h:301 -msgid "Use t_rayicon (aka. notification area icon)" -msgstr "Använd aktivitetsfältet (aka. notifieringsyta)" - -#: ../src/gtkgui.glade.h:302 -msgid "User ID:" -msgstr "Användar-ID:" - -#: ../src/gtkgui.glade.h:303 -msgid "When a file transfer is complete show a popup notification" -msgstr "När en filöverföring är färdig, visa ett popupmeddelande" - -#: ../src/gtkgui.glade.h:304 -msgid "When a new event (message, file transfer request etc..) is received, the following methods may be used to inform you about it. Please note that events about new messages only occur if it is a new message from a contact you are not already chatting with" -msgstr "När en ny händelse (meddelande, filöverföringförfrÃ¥gan etc...) mottas kan följande metoder användas för att informera dig om det. Obeservera att händelser rörande nya meddelanden endast används om det är ett nytt meddelande frÃ¥n en kontakt du inte redan chattar med" - -#: ../src/gtkgui.glade.h:305 -msgid "When new event is received" -msgstr "När en ny händelse är mottagen" - -#: ../src/gtkgui.glade.h:306 -msgid "Work" -msgstr "Jobb" - -#: ../src/gtkgui.glade.h:307 -msgid "" -"You need to have an account in order to connect\n" -"to the Jabber network." -msgstr "" -"Du behöver ett konto för att kunna ansluta till\n" -"Jabber-nätverket." - -#: ../src/gtkgui.glade.h:309 -msgid "Your JID:" -msgstr "Ditt JID:" - -#. Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector) -#: ../src/gtkgui.glade.h:311 -msgid "_Actions" -msgstr "_Ã…tgärder" - -#: ../src/gtkgui.glade.h:312 -msgid "_Add Contact..." -msgstr "_Lägg till kontakt..." - -#: ../src/gtkgui.glade.h:313 -msgid "_Add to Roster" -msgstr "_Lägg till registret" - -#: ../src/gtkgui.glade.h:314 -msgid "_Address:" -msgstr "_Adress:" - -#: ../src/gtkgui.glade.h:315 -msgid "_Admin" -msgstr "_Admin" - -#: ../src/gtkgui.glade.h:316 -msgid "_Administrator" -msgstr "_Administratör" - -#: ../src/gtkgui.glade.h:317 -msgid "_Advanced" -msgstr "_Avancerat" - -#: ../src/gtkgui.glade.h:318 -msgid "_After time:" -msgstr "Efter tid:" - -#: ../src/gtkgui.glade.h:319 -msgid "_Authorize" -msgstr "_Auktorisera" - -#: ../src/gtkgui.glade.h:320 -msgid "_Background:" -msgstr "_Bakgrund:" - -#: ../src/gtkgui.glade.h:321 -msgid "_Ban" -msgstr "_Bannlys" - -#: ../src/gtkgui.glade.h:322 -msgid "_Before time:" -msgstr "Före tid:" - -#: ../src/gtkgui.glade.h:323 -msgid "_Bookmark This Room" -msgstr "_Bokmärk det här rummet" - -#: ../src/gtkgui.glade.h:324 -msgid "_Browser:" -msgstr "_Webbläsare:" - -#: ../src/gtkgui.glade.h:325 -msgid "_Cancel" -msgstr "_Avbryt" - -#: ../src/gtkgui.glade.h:326 -msgid "_Compact View Alt+C" -msgstr "_Kompakt vy Alt+C" - -#: ../src/gtkgui.glade.h:327 -msgid "_Contents" -msgstr "_InnehÃ¥ll" - -#: ../src/gtkgui.glade.h:329 -msgid "_Copy JID/Email Address" -msgstr "_Kopiera JID/e-postadress" - -#: ../src/gtkgui.glade.h:330 -msgid "_Copy Link Location" -msgstr "_Kopiera länkadress" - -#: ../src/gtkgui.glade.h:331 -msgid "_Deny" -msgstr "_Neka" - -#: ../src/gtkgui.glade.h:332 -msgid "_Discover Services" -msgstr "_Upptäck tjänster" - -#: ../src/gtkgui.glade.h:333 -msgid "_Discover Services..." -msgstr "_Upptäck tjänster" - -#: ../src/gtkgui.glade.h:335 -msgid "_FAQ" -msgstr "_FAQ" - -#: ../src/gtkgui.glade.h:336 -msgid "_File manager:" -msgstr "_Filhanterare:" - -#: ../src/gtkgui.glade.h:337 -msgid "_Filter:" -msgstr "_Filter:" - -#: ../src/gtkgui.glade.h:338 -msgid "_Finish" -msgstr "_Slutför" - -#: ../src/gtkgui.glade.h:339 -msgid "_Font:" -msgstr "Teckensnitt:" - -#: ../src/gtkgui.glade.h:340 -msgid "_Group Chat" -msgstr "_Gruppchatt" - -#: ../src/gtkgui.glade.h:341 -msgid "_Help" -msgstr "_Hjälp" - -#: ../src/gtkgui.glade.h:342 -msgid "_Highlight misspelled words" -msgstr "_Markera felstavade ord" - -#: ../src/gtkgui.glade.h:343 -msgid "_History" -msgstr "_Historik" - -#: ../src/gtkgui.glade.h:344 -msgid "_Host:" -msgstr "_Värd:" - -#. Info/Query: all(?) jabber xml start with Welcome to Gajim History Logs Manager\n" -"\n" -"You can select logs from the left and/or search database from below.\n" -"\n" -"WARNING:\n" -"If you plan to do massive deletions, please make sure Gajim is not running. Generally avoid deletions with contacts you currently chat with." msgstr "" -"Välkommen till Gajims Historikhanterare\n" -"\n" -"Du kan välja loggar frÃ¥n vänster och/eller söka i databasen under.\n" -"VARNING:\n" -"Se till att Gajim inte är startat om du planerar att radera mycket. Undvik i regel att radera för kontakter du just nu chattar med." +"Kunde inte skriva till %s. Session Management-stöd kommer inte att fungera" -#: ../src/history_manager.glade.h:7 -msgid "Delete" -msgstr "Radera" +#: ../src/gtkgui_helpers.py:717 +msgid "Extension not supported" +msgstr "" -#: ../src/history_manager.glade.h:8 -msgid "Export" -msgstr "Exportera" +#: ../src/gtkgui_helpers.py:718 +#, python-format +msgid "Image cannot be saved in %(type)s format. Save as %(new_filename)s?" +msgstr "" -#: ../src/history_manager.glade.h:9 -msgid "Gajim History Logs Manager" -msgstr "Historikhanterare" +#: ../src/gtkgui_helpers.py:727 +#, fuzzy +msgid "Save Image as..." +msgstr "Spara fil som..." -#: ../src/history_manager.glade.h:10 -msgid "_Search Database" -msgstr "_Sök I Databasen" - -#: ../src/history_manager.py:58 +#: ../src/history_manager.py:61 msgid "Cannot find history logs database" msgstr "Kan inte hitta historie- och logdatabas" #. holds jid -#: ../src/history_manager.py:102 +#: ../src/history_manager.py:104 msgid "Contacts" msgstr "Kontakter" #. holds time -#: ../src/history_manager.py:115 -#: ../src/history_manager.py:155 -#: ../src/history_window.py:94 +#: ../src/history_manager.py:117 ../src/history_manager.py:157 +#: ../src/history_window.py:85 msgid "Date" msgstr "Datum" #. holds nickname -#: ../src/history_manager.py:121 -#: ../src/history_manager.py:173 +#: ../src/history_manager.py:123 ../src/history_manager.py:175 msgid "Nickname" msgstr "Smeknamn" #. holds message -#: ../src/history_manager.py:129 -#: ../src/history_manager.py:161 -#: ../src/history_window.py:102 +#: ../src/history_manager.py:131 ../src/history_manager.py:163 +#: ../src/history_window.py:93 msgid "Message" msgstr "Meddelande" #. holds subject -#: ../src/history_manager.py:136 -#: ../src/history_manager.py:167 +#: ../src/history_manager.py:138 ../src/history_manager.py:169 msgid "Subject" msgstr "Ämne" -#: ../src/history_manager.py:181 -msgid "Do you want to clean up the database? (STRONGLY NOT RECOMMENDED IF GAJIM IS RUNNING)" -msgstr "Vill du städa upp databasen? (DU AVRÃ…DS ATT GÖRA DETTA OM GAJIM KÖRS)" - #: ../src/history_manager.py:183 msgid "" -"Normally allocated database size will not be freed, it will just become reusable. If you really want to reduce database filesize, click YES, else click NO.\n" +"Do you want to clean up the database? (STRONGLY NOT RECOMMENDED IF GAJIM IS " +"RUNNING)" +msgstr "Vill du städa upp databasen? (DU AVRÃ…DS ATT GÖRA DETTA OM GAJIM KÖRS)" + +#: ../src/history_manager.py:185 +msgid "" +"Normally allocated database size will not be freed, it will just become " +"reusable. If you really want to reduce database filesize, click YES, else " +"click NO.\n" "\n" "In case you click YES, please wait..." msgstr "" -"Normalt sÃ¥ förgörst inte den allokerade databasen, den blir bara Ã¥teranvändbar. Om du verkligen vill minska databasens storlok, klicka JA, klicka NAJ annars.\n" +"Normalt sÃ¥ förgörst inte den allokerade databasen, den blir bara " +"Ã¥teranvändbar. Om du verkligen vill minska databasens storlok, klicka JA, " +"klicka NAJ annars.\n" "\n" "Om du väljer JA, vänligen vänta..." -#: ../src/history_manager.py:389 +#: ../src/history_manager.py:391 msgid "Exporting History Logs..." msgstr "Exporterar Loggar..." -#: ../src/history_manager.py:465 +#: ../src/history_manager.py:467 #, python-format msgid "%(who)s on %(time)s said: %(message)s\n" msgstr "%(who)s pÃ¥ %(time)s sa: %(message)s\n" -#: ../src/history_manager.py:465 +#: ../src/history_manager.py:467 msgid "who" msgstr "vem" -#: ../src/history_manager.py:503 +#: ../src/history_manager.py:505 msgid "Do you really want to delete logs of the selected contact?" msgid_plural "Do you really want to delete logs of the selected contacts?" msgstr[0] "Vill du verkligen ta bort loggar för den valda kontakten?" msgstr[1] "Vill du verkligen ta bort loggar för de valda kontakterna?" -#: ../src/history_manager.py:507 -#: ../src/history_manager.py:543 +#: ../src/history_manager.py:509 ../src/history_manager.py:545 msgid "This is an irreversible operation." msgstr "Denna operation kan inte göras ogjord." -#: ../src/history_manager.py:540 +#: ../src/history_manager.py:542 msgid "Do you really want to delete the selected message?" msgid_plural "Do you really want to delete the selected messages?" msgstr[0] "Vill du verkligen ta bort det valda meddelandet?" msgstr[1] "Vill du verkligen ta bort det valda meddelandena?" -#: ../src/history_window.py:111 -#: ../src/history_window.py:113 +#: ../src/history_window.py:102 ../src/history_window.py:104 #, python-format msgid "Conversation History with %s" msgstr "Konversationshistorik med %s" -#: ../src/history_window.py:265 +#: ../src/history_window.py:258 #, python-format msgid "%(nick)s is now %(status)s: %(status_msg)s" msgstr "%(nick)s är nu %(status)s:%(status_msg)s" -#: ../src/history_window.py:269 +#: ../src/history_window.py:262 ../src/notify.py:113 #, python-format msgid "%(nick)s is now %(status)s" msgstr "%(nick)s är nu %(status)s" -#: ../src/history_window.py:275 +#: ../src/history_window.py:268 #, python-format msgid "Status is now: %(status)s: %(status_msg)s" msgstr "Status är nu: %(status)s: %(status_msg)s" -#: ../src/history_window.py:278 +#: ../src/history_window.py:271 #, python-format msgid "Status is now: %(status)s" msgstr "Status är nu: %(status)s" -#: ../src/message_window.py:233 +#: ../src/message_window.py:244 msgid "Messages" msgstr "Meddelanden" -#: ../src/message_window.py:234 +#: ../src/message_window.py:245 +#, python-format msgid "%s - Gajim" msgstr "%s - Gajim" -#: ../src/roster_window.py:140 +#: ../src/notify.py:111 +#, fuzzy, python-format +msgid "%(nick)s Changed Status" +msgstr "%(nick)s är nu %(status)s" + +#: ../src/notify.py:121 +#, python-format +msgid "%(nickname)s Signed In" +msgstr "%(nickname)s Loggade In" + +#: ../src/notify.py:129 +#, python-format +msgid "%(nickname)s Signed Out" +msgstr "%(nickname)s Loggade Ut" + +#: ../src/notify.py:141 +#, python-format +msgid "New Single Message from %(nickname)s" +msgstr "Nytt Enstaka Meddelande %(nickname)s" + +#: ../src/notify.py:150 +#, python-format +msgid "New Private Message from room %s" +msgstr "Nytt Privat Meddelande frÃ¥n rum %s" + +#: ../src/notify.py:151 +#, python-format +msgid "%(nickname)s: %(message)s" +msgstr "%(nickname)s: %(message)s" + +#: ../src/notify.py:157 +#, python-format +msgid "New Message from %(nickname)s" +msgstr "Nytt meddelande frÃ¥n %(nickname)s" + +#: ../src/roster_window.py:131 msgid "Merged accounts" msgstr "Sammanfoga konton" -#: ../src/roster_window.py:289 -#: ../src/common/helpers.py:42 +#: ../src/roster_window.py:288 ../src/common/helpers.py:39 msgid "Observers" msgstr "Observerande" -#: ../src/roster_window.py:542 +#: ../src/roster_window.py:544 #, python-format msgid "You are already in room %s" msgstr "Du är redan i rummet %s" -#: ../src/roster_window.py:546 -#: ../src/roster_window.py:2262 +#: ../src/roster_window.py:548 ../src/roster_window.py:2280 msgid "You cannot join a room while you are invisible" msgstr "Du kan inte ansluta till ett rum när du är osynlig" #. the 'manage gc bookmarks' item is showed #. below to avoid duplicate code #. add -#: ../src/roster_window.py:735 +#: ../src/roster_window.py:748 #, python-format msgid "to %s account" msgstr "till %s konto" #. disco -#: ../src/roster_window.py:742 +#: ../src/roster_window.py:755 #, python-format msgid "using %s account" msgstr "använder %s konto" -#. new message +#. new chat #. for chat_with #. for single message -#: ../src/roster_window.py:750 -#: ../src/systray.py:194 -#: ../src/systray.py:201 +#: ../src/roster_window.py:763 ../src/systray.py:193 ../src/systray.py:198 #, python-format msgid "using account %s" msgstr "använder konto %s" #. profile, avatar -#: ../src/roster_window.py:759 +#: ../src/roster_window.py:772 +#, python-format msgid "of account %s" msgstr "för konto %s" -#: ../src/roster_window.py:818 +#: ../src/roster_window.py:831 msgid "Manage Bookmarks..." msgstr "Hantera bokmärken..." -#: ../src/roster_window.py:842 +#: ../src/roster_window.py:855 #, python-format msgid "for account %s" msgstr "för konto %s" #. History manager -#: ../src/roster_window.py:863 +#: ../src/roster_window.py:876 msgid "History Manager" msgstr "Hantera Historik" -#: ../src/roster_window.py:872 +#: ../src/roster_window.py:885 msgid "_Join New Room" msgstr "Anslut till nytt _rum" -#: ../src/roster_window.py:1158 +#: ../src/roster_window.py:1159 #, python-format msgid "Transport \"%s\" will be removed" msgstr "Transporten \"%s\" kommer tas bort" -#: ../src/roster_window.py:1158 -msgid "You will no longer be able to send and receive messages to contacts from this transport." -msgstr "Du kommer inte längre kunna ta emot eller skicka meddelanden till kontakter frÃ¥n denna transport." +#: ../src/roster_window.py:1159 +msgid "" +"You will no longer be able to send and receive messages to contacts from " +"this transport." +msgstr "" +"Du kommer inte längre kunna ta emot eller skicka meddelanden till kontakter " +"frÃ¥n denna transport." -#: ../src/roster_window.py:1200 +#: ../src/roster_window.py:1201 msgid "Assign OpenPGP Key" msgstr "Tilldela OpenPGP-nyckel" -#: ../src/roster_window.py:1201 +#: ../src/roster_window.py:1202 msgid "Select a key to apply to the contact" msgstr "Välj en nyckel att tilldela kontakten" @@ -3705,234 +4374,254 @@ msgstr "K_oppla frÃ¥n" msgid "_Change Status Message" msgstr "Byt _Statusmeddelande" -#: ../src/roster_window.py:1617 +#: ../src/roster_window.py:1621 msgid "Authorization has been sent" msgstr "Auktorisering har sänts" -#: ../src/roster_window.py:1618 +#: ../src/roster_window.py:1622 #, python-format msgid "Now \"%s\" will know your status." msgstr "Nu kommer \"%s\" veta din status." -#: ../src/roster_window.py:1642 +#: ../src/roster_window.py:1646 msgid "Subscription request has been sent" msgstr "PrenumerationsförfrÃ¥gan har sänts" -#: ../src/roster_window.py:1643 +#: ../src/roster_window.py:1647 #, python-format msgid "If \"%s\" accepts this request you will know his or her status." -msgstr "Om \"%s\" accepterar din förfrÃ¥gan kommer du att känna till hans eller hennes status." +msgstr "" +"Om \"%s\" accepterar din förfrÃ¥gan kommer du att känna till hans eller " +"hennes status." -#: ../src/roster_window.py:1654 +#: ../src/roster_window.py:1658 msgid "Authorization has been removed" msgstr "Auktorisering har tagits bort" -#: ../src/roster_window.py:1655 +#: ../src/roster_window.py:1659 #, python-format msgid "Now \"%s\" will always see you as offline." msgstr "Nu kommer \"%s\" alltid se dig som offline." -#: ../src/roster_window.py:1824 +#: ../src/roster_window.py:1822 #, python-format msgid "Contact \"%s\" will be removed from your roster" msgstr "Kontakt \"%s\" kommer bli borttagen frÃ¥n registret" -#: ../src/roster_window.py:1828 -msgid "By removing this contact you also remove authorization resulting in him or her always seeing you as offline." -msgstr "Genom att ta bort den här kontakten kommer du ocksÃ¥ ta bort auktoriseringen vilket resulterar i att kontakten kommer alltid se dig som frÃ¥nkopplad." +#: ../src/roster_window.py:1826 +msgid "" +"By removing this contact you also remove authorization resulting in him or " +"her always seeing you as offline." +msgstr "" +"Genom att ta bort den här kontakten kommer du ocksÃ¥ ta bort auktoriseringen " +"vilket resulterar i att kontakten kommer alltid se dig som frÃ¥nkopplad." -#: ../src/roster_window.py:1832 -msgid "By removing this contact you also by default remove authorization resulting in him or her always seeing you as offline." -msgstr "Genom att ta bort den här kontakten kommer du ocksÃ¥ ta bort auktoriseringen. Kontakten kommer alltid se dig som frÃ¥nkopplad." +#: ../src/roster_window.py:1830 +msgid "" +"By removing this contact you also by default remove authorization resulting " +"in him or her always seeing you as offline." +msgstr "" +"Genom att ta bort den här kontakten kommer du ocksÃ¥ ta bort auktoriseringen. " +"Kontakten kommer alltid se dig som frÃ¥nkopplad." -#: ../src/roster_window.py:1833 +#: ../src/roster_window.py:1831 msgid "I want this contact to know my status after removal" -msgstr "Jag vill att denna kontakten skall känna till min status även efter borttagningen" +msgstr "" +"Jag vill att denna kontakten skall känna till min status även efter " +"borttagningen" -#: ../src/roster_window.py:1901 +#: ../src/roster_window.py:1899 msgid "Passphrase Required" msgstr "Lösenfras krävs" -#: ../src/roster_window.py:1902 +#: ../src/roster_window.py:1900 +#, python-format msgid "Enter GPG key passphrase for account %s." msgstr "Skriv in GPG-nyckelns lösenfras för konto %s." -#: ../src/roster_window.py:1907 +#: ../src/roster_window.py:1905 msgid "Save passphrase" msgstr "Spara lösenfras" -#: ../src/roster_window.py:1915 +#: ../src/roster_window.py:1913 msgid "Wrong Passphrase" msgstr "Fel Lösenfras" -#: ../src/roster_window.py:1916 +#: ../src/roster_window.py:1914 msgid "Please retype your GPG passphrase or press Cancel." msgstr "Vänligen skriv om ditt GPG-lösenord eller tryck Avbryt." -#: ../src/roster_window.py:1964 -#: ../src/roster_window.py:2021 +#: ../src/roster_window.py:1963 ../src/roster_window.py:2020 msgid "You are participating in one or more group chats" msgstr "Du deltar i en eller flera guppchatter" -#: ../src/roster_window.py:1965 -#: ../src/roster_window.py:2022 -msgid "Changing your status to invisible will result in disconnection from those group chats. Are you sure you want to go invisible?" -msgstr "Om du byter status till osynlig kommer du att förlora anslutningen till gruppchatterna. Är du säker pÃ¥ att du vill byta status till osynlig?" +#: ../src/roster_window.py:1964 ../src/roster_window.py:2021 +msgid "" +"Changing your status to invisible will result in disconnection from those " +"group chats. Are you sure you want to go invisible?" +msgstr "" +"Om du byter status till osynlig kommer du att förlora anslutningen till " +"gruppchatterna. Är du säker pÃ¥ att du vill byta status till osynlig?" -#: ../src/roster_window.py:1981 +#: ../src/roster_window.py:1980 msgid "No account available" msgstr "Inget konto tillgängligt" -#: ../src/roster_window.py:1982 +#: ../src/roster_window.py:1981 msgid "You must create an account before you can chat with other contacts." msgstr "Du mÃ¥ste skapa ett konto innan du kan chatta med andra kontakter." -#: ../src/roster_window.py:2427 -#: ../src/roster_window.py:2433 +#: ../src/roster_window.py:2452 ../src/roster_window.py:2458 msgid "You have unread messages" msgstr "Du har olästa meddelanden" -#: ../src/roster_window.py:2428 -#: ../src/roster_window.py:2434 -msgid "Messages will only be available for reading them later if you have history enabled." -msgstr "Meddelanden kommer bara vara tillgängliga för läsning senare om du har historik pÃ¥slagen." +#: ../src/roster_window.py:2453 ../src/roster_window.py:2459 +msgid "" +"Messages will only be available for reading them later if you have history " +"enabled." +msgstr "" +"Meddelanden kommer bara vara tillgängliga för läsning senare om du har " +"historik pÃ¥slagen." -#: ../src/roster_window.py:3184 +#: ../src/roster_window.py:3231 +#, python-format msgid "Drop %s in group %s" msgstr "Placera %s i grupp %s" -#: ../src/roster_window.py:3191 +#: ../src/roster_window.py:3238 +#, python-format msgid "Make %s and %s metacontacts" msgstr "Gör %s till en metakontakt för %s" -#: ../src/roster_window.py:3358 +#: ../src/roster_window.py:3408 msgid "Change Status Message..." msgstr "Byt Statusmeddelande..." -#: ../src/systray.py:155 +#: ../src/systray.py:154 msgid "_Change Status Message..." msgstr "_Byt Statusmeddelande..." -#: ../src/systray.py:236 +#: ../src/systray.py:231 msgid "Hide this menu" msgstr "Gömmer denna meny" -#: ../src/systraywin32.py:266 -#: ../src/systraywin32.py:285 -#: ../src/tooltips.py:315 +#: ../src/systraywin32.py:261 ../src/systraywin32.py:280 #, python-format msgid "Gajim - %d unread message" msgid_plural "Gajim - %d unread messages" msgstr[0] "Gajim - ett oläst meddelande" msgstr[1] "Gajim - %d olästa meddelanden" -#: ../src/tooltips.py:321 -#, python-format -msgid "Gajim - %d unread single message" -msgid_plural "Gajim - %d unread single messages" +#: ../src/tooltips.py:326 +#, fuzzy, python-format +msgid " %d unread message" +msgid_plural " %d unread messages" +msgstr[0] "Gajim - ett oläst meddelande" +msgstr[1] "Gajim - %d olästa meddelanden" + +#: ../src/tooltips.py:332 +#, fuzzy, python-format +msgid " %d unread single message" +msgid_plural " %d unread single messages" msgstr[0] "Gajim - ett oläst enstaka meddelande" msgstr[1] "Gajim - %d olästa enstaka meddelanden" -#: ../src/tooltips.py:327 -#, python-format -msgid "Gajim - %d unread group chat message" -msgid_plural "Gajim - %d unread group chat messages" +#: ../src/tooltips.py:338 +#, fuzzy, python-format +msgid " %d unread group chat message" +msgid_plural " %d unread group chat messages" msgstr[0] "Gajim - ett oläst gruppchatmeddelande" msgstr[1] "Gajim - %d olästa gruppchatmeddelanden" -#: ../src/tooltips.py:333 -#, python-format -msgid "Gajim - %d unread private message" -msgid_plural "Gajim - %d unread private messages" +#: ../src/tooltips.py:344 +#, fuzzy, python-format +msgid " %d unread private message" +msgid_plural " %d unread private messages" msgstr[0] "Gajim - ett oläst privat meddelande" msgstr[1] "Gajim - %d olästa privata meddelanden" -#: ../src/tooltips.py:348 -#: ../src/tooltips.py:350 +#: ../src/tooltips.py:359 ../src/tooltips.py:361 #, python-format msgid "Gajim - %s" msgstr "Gajim - %s" -#: ../src/tooltips.py:383 +#: ../src/tooltips.py:395 msgid "Role: " msgstr "Roll: " -#: ../src/tooltips.py:384 +#: ../src/tooltips.py:396 msgid "Affiliation: " msgstr "Anknytning: " -#: ../src/tooltips.py:386 -#: ../src/tooltips.py:518 +#: ../src/tooltips.py:398 ../src/tooltips.py:537 msgid "Resource: " msgstr "Resurs: " -#: ../src/tooltips.py:394 -#: ../src/tooltips.py:521 -#: ../src/tooltips.py:543 -#: ../src/tooltips.py:654 +#: ../src/tooltips.py:407 ../src/tooltips.py:540 ../src/tooltips.py:565 +#: ../src/tooltips.py:676 msgid "Status: " msgstr "Status: " -#: ../src/tooltips.py:501 +#: ../src/tooltips.py:514 msgid "Subscription: " msgstr "Prenumeration: " -#: ../src/tooltips.py:510 +#: ../src/tooltips.py:523 msgid "OpenPGP: " msgstr "OpenPGP: " -#: ../src/tooltips.py:548 +#: ../src/tooltips.py:570 +#, python-format msgid "Last status on %s" msgstr "Senaste status pÃ¥ %s" -#: ../src/tooltips.py:550 +#: ../src/tooltips.py:572 +#, python-format msgid "Since %s" msgstr "FrÃ¥n %s" -#: ../src/tooltips.py:610 +#: ../src/tooltips.py:632 msgid "Download" msgstr "Nerladdning" -#: ../src/tooltips.py:616 +#: ../src/tooltips.py:638 msgid "Upload" msgstr "Uppladdning" -#: ../src/tooltips.py:623 +#: ../src/tooltips.py:645 msgid "Type: " msgstr "Typ: " -#: ../src/tooltips.py:629 +#: ../src/tooltips.py:651 msgid "Transferred: " msgstr "Överfört: " -#: ../src/tooltips.py:632 -#: ../src/tooltips.py:653 +#: ../src/tooltips.py:654 ../src/tooltips.py:675 msgid "Not started" msgstr "Inte startad" -#: ../src/tooltips.py:636 +#: ../src/tooltips.py:658 msgid "Stopped" msgstr "Stoppad" -#: ../src/tooltips.py:638 -#: ../src/tooltips.py:641 +#: ../src/tooltips.py:660 ../src/tooltips.py:663 msgid "Completed" msgstr "Färdig" #. stalled is not paused. it is like 'frozen' it stopped alone -#: ../src/tooltips.py:649 +#: ../src/tooltips.py:671 msgid "Stalled" msgstr "Avstannad" -#: ../src/tooltips.py:651 +#: ../src/tooltips.py:673 msgid "Transferring" msgstr "Överför" -#: ../src/tooltips.py:683 +#: ../src/tooltips.py:705 msgid "This service has not yet responded with detailed information" msgstr "Denna tjänst har ännu inte svarat med detaljerad information" -#: ../src/tooltips.py:686 +#: ../src/tooltips.py:708 msgid "" "This service could not respond with detailed information.\n" "It is most likely legacy or broken" @@ -3941,101 +4630,110 @@ msgstr "" "Tjänsten är antagligen förÃ¥ldrad eller trasig." #. keep identation -#: ../src/vcard.py:186 +#: ../src/vcard.py:188 msgid "Could not load image" msgstr "Kunde inte ladda bild" -#: ../src/vcard.py:262 +#: ../src/vcard.py:289 msgid "?Client:Unknown" msgstr "?Klient:Okänd" -#: ../src/vcard.py:264 +#: ../src/vcard.py:291 msgid "?OS:Unknown" msgstr "?OS:Okänt" -#: ../src/vcard.py:281 +#: ../src/vcard.py:308 +#, python-format msgid "since %s" msgstr "frÃ¥n %s" -#: ../src/vcard.py:305 -msgid "This contact is interested in your presence information, but you are not interested in his/her presence" -msgstr "Denna kontakt är intresserad av din närvaroinformation, men du är inte intresserad av hans/hennes" +#: ../src/vcard.py:332 +msgid "" +"This contact is interested in your presence information, but you are not " +"interested in his/her presence" +msgstr "" +"Denna kontakt är intresserad av din närvaroinformation, men du är inte " +"intresserad av hans/hennes" -#: ../src/vcard.py:307 -msgid "You are interested in the contact's presence information, but he/she is not interested in yours" -msgstr "Du är intresserad av denna kontakts närvaroinformation, men han/hon är inte intresserad av din" +#: ../src/vcard.py:334 +msgid "" +"You are interested in the contact's presence information, but he/she is not " +"interested in yours" +msgstr "" +"Du är intresserad av denna kontakts närvaroinformation, men han/hon är inte " +"intresserad av din" -#: ../src/vcard.py:309 +#: ../src/vcard.py:336 msgid "You and the contact are interested in each other's presence information" msgstr "Du och kontakten är intresserade av varandras närvaroinformation" #. None -#: ../src/vcard.py:311 -msgid "You are not interested in the contact's presence, and neither he/she is interested in yours" -msgstr "Varken du eller kontakten är intresserad av varandras närvaroinformation" +#: ../src/vcard.py:338 +msgid "" +"You are not interested in the contact's presence, and neither he/she is " +"interested in yours" +msgstr "" +"Varken du eller kontakten är intresserad av varandras närvaroinformation" -#: ../src/vcard.py:320 +#: ../src/vcard.py:347 msgid "You are waiting contact's answer about your subscription request" msgstr "Du väntar pÃ¥ kontaktens svar pÃ¥ din förfrÃ¥gan om prenumeration" -#: ../src/vcard.py:332 -#: ../src/vcard.py:355 +#: ../src/vcard.py:359 ../src/vcard.py:382 msgid " resource with priority " msgstr " resurs med prioritet " -#: ../src/vcard.py:434 +#: ../src/vcard.py:458 msgid "Without a connection you can not publish your contact information." msgstr "Utan en förbindelse kan du inte publicera din kontaktinformation." -#: ../src/vcard.py:463 +#: ../src/vcard.py:491 msgid "Without a connection, you can not get your contact information." msgstr "Utan en förbindelse kan du inte hämta din kontaktinformation." -#: ../src/vcard.py:467 +#: ../src/vcard.py:495 msgid "Personal details" msgstr "Personliga detaljer" -#: ../src/common/check_paths.py:39 +#: ../src/common/check_paths.py:35 msgid "creating logs database" msgstr "skapar logdatabas" -#: ../src/common/check_paths.py:84 -#: ../src/common/check_paths.py:95 -#: ../src/common/check_paths.py:102 +#: ../src/common/check_paths.py:82 ../src/common/check_paths.py:93 +#: ../src/common/check_paths.py:100 #, python-format msgid "%s is file but it should be a directory" msgstr "%s är en fil, men borde vara en katalog" -#: ../src/common/check_paths.py:85 -#: ../src/common/check_paths.py:96 -#: ../src/common/check_paths.py:103 -#: ../src/common/check_paths.py:110 +#: ../src/common/check_paths.py:83 ../src/common/check_paths.py:94 +#: ../src/common/check_paths.py:101 ../src/common/check_paths.py:109 msgid "Gajim will now exit" msgstr "Gajim kommer nu avslutas" -#: ../src/common/check_paths.py:109 +#: ../src/common/check_paths.py:108 #, python-format msgid "%s is directory but should be file" msgstr "%s är en katalog, men borde vara en fil" -#: ../src/common/check_paths.py:125 +#: ../src/common/check_paths.py:124 #, python-format msgid "creating %s directory" msgstr "skapar katalogen %s" -#: ../src/common/exceptions.py:35 +#: ../src/common/exceptions.py:32 msgid "pysqlite2 (aka python-pysqlite2) dependency is missing. Exiting..." msgstr "pysqlite2- (aka python-pysqlite2) beroende saknas. Stänger av..." -#: ../src/common/exceptions.py:43 +#: ../src/common/exceptions.py:40 msgid "Service not available: Gajim is not running, or remote_control is False" -msgstr "Tjänsten ej tillgänglig: Gajim körs inte, eller sÃ¥ är remote_control False" +msgstr "" +"Tjänsten ej tillgänglig: Gajim körs inte, eller sÃ¥ är remote_control False" -#: ../src/common/exceptions.py:51 +#: ../src/common/exceptions.py:48 msgid "D-Bus is not present on this machine or python module is missing" msgstr "D-Bus finns inte pÃ¥ den här maskinen eller sÃ¥ saknas pythonmodulen" -#: ../src/common/exceptions.py:59 +#: ../src/common/exceptions.py:56 msgid "" "Session bus is not available.\n" "Try reading http://trac.gajim.org/wiki/GajimDBus" @@ -4043,49 +4741,89 @@ msgstr "" "Sessionsbussen är inte tillgänglig.\n" "Läs http://trac.gajim.org/wiki/GajimDBus för hjälp" -#: ../src/common/config.py:53 +#: ../src/common/config.py:51 msgid "Use DBus and Notification-Daemon to show notifications" msgstr "Använd DBus och Notification-Daemon för att visa meddelanden" -#: ../src/common/config.py:57 +#: ../src/common/config.py:55 msgid "Time in minutes, after which your status changes to away." msgstr "Tid i minuter tills din status ändras till borta." -#: ../src/common/config.py:58 +#: ../src/common/config.py:56 msgid "Away as a result of being idle" msgstr "Borta pÃ¥ grund av inaktivitet" -#: ../src/common/config.py:60 +#: ../src/common/config.py:58 msgid "Time in minutes, after which your status changes to not available." msgstr "Tid i minuter tills din status ändras till inte tillgänglig." -#: ../src/common/config.py:61 +#: ../src/common/config.py:59 msgid "Not available as a result of being idle" msgstr "Inte tillgänglig pÃ¥ grund av inaktivitet" -#: ../src/common/config.py:88 +#: ../src/common/config.py:77 +msgid "List (space separated) of rows (accounts and groups) that are collapsed" +msgstr "" + +#: ../src/common/config.py:83 +msgid "" +"'always' - print time for every message.\n" +"'sometimes' - print time every print_ichat_every_foo_minutes minute.\n" +"'never' - never print time." +msgstr "" + +#: ../src/common/config.py:84 +msgid "" +"Value of fuzziness from 1 to 4 or 0 to disable fuzzyclock. 1 is the most " +"precise clock, 4 the less precise one." +msgstr "" + +#: ../src/common/config.py:87 msgid "Treat * / _ pairs as possible formatting characters." msgstr "Behandla par av * / _ som möliga formateringstecken." -#: ../src/common/config.py:89 -msgid "If True, do not remove */_ . So *abc* will be bold but with * * not removed." -msgstr "Om True tas inte */_ bort. *abc* blir fetstil men * * / / _ _ inte borttagna." +#: ../src/common/config.py:88 +msgid "" +"If True, do not remove */_ . So *abc* will be bold but with * * not removed." +msgstr "" +"Om True tas inte */_ bort. *abc* blir fetstil men * * / / _ _ inte borttagna." + +#: ../src/common/config.py:98 +msgid "" +"Character to add after nickname when using nick completion (tab) in group " +"chat" +msgstr "" + +#: ../src/common/config.py:99 +msgid "" +"Character to propose to add after desired nickname when desired nickname is " +"used by someone else in group chat" +msgstr "" #: ../src/common/config.py:131 msgid "Add * and [n] in roster title?" msgstr "Lägg till * och [n] i registerfönstrets titel." #: ../src/common/config.py:132 -msgid "How many lines to remember from previous conversation when a chat tab/window is reopened." -msgstr "Hur mÃ¥nga rader som skall kommas ihÃ¥g frÃ¥n tidigare konversation när en chatt-flik/fönster öppnas igen." +msgid "" +"How many lines to remember from previous conversation when a chat tab/window " +"is reopened." +msgstr "" +"Hur mÃ¥nga rader som skall kommas ihÃ¥g frÃ¥n tidigare konversation när en " +"chatt-flik/fönster öppnas igen." #: ../src/common/config.py:133 msgid "How many minutes should last lines from previous conversation last." -msgstr "Mur mÃ¥nga minuter skall de sista raderna frÃ¥n tidigare konversation sparas." +msgstr "" +"Mur mÃ¥nga minuter skall de sista raderna frÃ¥n tidigare konversation sparas." #: ../src/common/config.py:134 -msgid "Send message on Ctrl+Enter and with Enter make new line (Mirabilis ICQ Client default behaviour)." -msgstr "Skicka meddelande med Ctrl+Enter och gör radbryt med Enter (Mirabilis ICQ Klientens standardbeteende)." +msgid "" +"Send message on Ctrl+Enter and with Enter make new line (Mirabilis ICQ " +"Client default behaviour)." +msgstr "" +"Skicka meddelande med Ctrl+Enter och gör radbryt med Enter (Mirabilis ICQ " +"Klientens standardbeteende)." #: ../src/common/config.py:136 msgid "How many lines to store for Ctrl+KeyUP." @@ -4093,28 +4831,50 @@ msgstr "Hur mÃ¥nga rader skall sparas för Ctrl+KeyUP." #: ../src/common/config.py:139 #, python-format -msgid "Either custom url with %s in it where %s is the word/phrase or 'WIKTIONARY' which means use wiktionary." -msgstr "Skriv in url med %s i där %s är ordet/frasen eller 'WIKTIONARY' vilket betyder att wiktionary skall användas." +msgid "" +"Either custom url with %s in it where %s is the word/phrase or 'WIKTIONARY' " +"which means use wiktionary." +msgstr "" +"Skriv in url med %s i där %s är ordet/frasen eller 'WIKTIONARY' vilket " +"betyder att wiktionary skall användas." #: ../src/common/config.py:142 msgid "If checked, Gajim can be controlled remotely using gajim-remote." msgstr "Om ibockad kan Gajim bli fjärrstyrd med gajim-remote." +#: ../src/common/config.py:145 +msgid "" +"When not printing time for every message (print_time==sometimes), print it " +"every x minutes" +msgstr "" + #: ../src/common/config.py:146 msgid "Ask before closing a group chat tab/window." msgstr "FrÃ¥ga innan gruppchattflik eller -fönster stängs." #: ../src/common/config.py:147 -msgid "Always ask before closing group chat tab/window in this space separated list of room jids." -msgstr "FrÃ¥ga alltid innan guppchattab/-förster i denna kommaseparerade lista med rum (jid) stängs." +msgid "" +"Always ask before closing group chat tab/window in this space separated list " +"of room jids." +msgstr "" +"FrÃ¥ga alltid innan guppchattab/-förster i denna kommaseparerade lista med " +"rum (jid) stängs." #: ../src/common/config.py:148 -msgid "Never ask before closing group chat tab/window in this space separated list of room jids." -msgstr "FrÃ¥ga aldrig innan guppchattab/-förster i denna kommaseparerade lista med rum (jid) stängs." +msgid "" +"Never ask before closing group chat tab/window in this space separated list " +"of room jids." +msgstr "" +"FrÃ¥ga aldrig innan guppchattab/-förster i denna kommaseparerade lista med " +"rum (jid) stängs." #: ../src/common/config.py:151 -msgid "Overrides the host we send for File Transfer in case of address translation/port forwarding." -msgstr "Ã…tsidosätter vilket värdnamn vi skickar vid filöverföring, t.ex. vid NAT och port forwarding." +msgid "" +"Overrides the host we send for File Transfer in case of address translation/" +"port forwarding." +msgstr "" +"Ã…tsidosätter vilket värdnamn vi skickar vid filöverföring, t.ex. vid NAT och " +"port forwarding." #: ../src/common/config.py:153 msgid "IEC standard says KiB = 1024 bytes, KB = 1000 bytes." @@ -4125,7 +4885,8 @@ msgid "Show tab when only one conversation?" msgstr "Visa flik när endast en konversation är aktiv?" #: ../src/common/config.py:162 -msgid "Show tab border if one conversation?" +#, fuzzy +msgid "Show tabbed notebook border in chat windows?" msgstr "Visa flikkant om endast en konversation är aktiv?" #: ../src/common/config.py:163 @@ -4133,247 +4894,318 @@ msgid "Show close button in tab?" msgstr "Visa stängknapp i flik?" #: ../src/common/config.py:176 -msgid "A semicolon-separated list of words that will be highlighted in multi-user chat." +msgid "" +"A semicolon-separated list of words that will be highlighted in multi-user " +"chat." msgstr "En semikolonseparerad lista av ord som blir upplysta i gruppchatt." #: ../src/common/config.py:177 -msgid "If True, quits Gajim when X button of Window Manager is clicked. This setting is taken into account only if trayicon is used." -msgstr "Om True avslutar Gajim när fönsterhanterarens X-knapp trycks pÃ¥. Denna inställning behandlas bara när aktivitetsfältet används." +msgid "" +"If True, quits Gajim when X button of Window Manager is clicked. This " +"setting is taken into account only if trayicon is used." +msgstr "" +"Om True avslutar Gajim när fönsterhanterarens X-knapp trycks pÃ¥. Denna " +"inställning behandlas bara när aktivitetsfältet används." #: ../src/common/config.py:178 msgid "If True, Gajim registers for xmpp:// on each startup." msgstr "Om True registreras Gajim för xmpp:// vid varje uppstart." #: ../src/common/config.py:179 -msgid "If True, Gajim will display an icon on each tab containing unread messages. Depending on the theme, this icon may be animated." -msgstr "Om True kommer Gajim att visa en ikon pÃ¥ varje flik som innehÃ¥ller olästa meddelanden. Beroende pÃ¥ tema kan denna ikon vara animerad." +msgid "" +"If True, Gajim will display an icon on each tab containing unread messages. " +"Depending on the theme, this icon may be animated." +msgstr "" +"Om True kommer Gajim att visa en ikon pÃ¥ varje flik som innehÃ¥ller olästa " +"meddelanden. Beroende pÃ¥ tema kan denna ikon vara animerad." #: ../src/common/config.py:180 -msgid "If True, Gajim will display the status message, if not empty, for every contact under the contact name in roster window" -msgstr "Om True kommer Gajim att visa statusmeddelande, om inte tomt, för varje kontakt under dess namn i registerfönstret" +msgid "" +"If True, Gajim will display the status message, if not empty, for every " +"contact under the contact name in roster window" +msgstr "" +"Om True kommer Gajim att visa statusmeddelande, om inte tomt, för varje " +"kontakt under dess namn i registerfönstret" #: ../src/common/config.py:182 -msgid "If True, Gajim will ask for avatar each contact that did not have an avatar last time or has one cached that is too old." -msgstr "Om True kommer Gajim att frÃ¥ga alla kontakter som antingen inte hade en avatar, eller som har en för gammal cachad avatar om deras nuvarande avatar." +msgid "" +"If True, Gajim will ask for avatar each contact that did not have an avatar " +"last time or has one cached that is too old." +msgstr "" +"Om True kommer Gajim att frÃ¥ga alla kontakter som antingen inte hade en " +"avatar, eller som har en för gammal cachad avatar om deras nuvarande avatar." + +#: ../src/common/config.py:183 +#, fuzzy +msgid "" +"If False, Gajim will no longer print status line in chats when a contact " +"changes his or her status and/or his or her status message." +msgstr "" +"Om False kommer du inte längre att se en statusrad i chattfönstret när en " +"kontakt byter hans eller hennes status och/eller statusmeddelande." -#. FIXME: remove you and make it Gajim will not; and/or his or *her* status messages #: ../src/common/config.py:184 -msgid "If False, you will no longer see status line in chats when a contact changes his or her status and/or his status message." -msgstr "Om False kommer du inte längre att se en statusrad i chattfönstret när en kontakt byter hans eller hennes status och/eller statusmeddelande." +msgid "" +"can be \"none\", \"all\" or \"in_and_out\". If \"none\", Gajim will no " +"longer print status line in groupchats when a member changes his or her " +"status and/or his or her status message. If \"all\" Gajim will print all " +"status messages. If \"in_and_out\", gajim will only print FOO enters/leaves " +"room" +msgstr "" + +#: ../src/common/config.py:187 +msgid "Don't show avatar for the transport itself." +msgstr "" #: ../src/common/config.py:189 -msgid "If True and installed GTK+ and PyGTK versions are at least 2.8, make the window flash (the default behaviour in most Window Managers) when holding pending events." -msgstr "Om True och GTK+ och PyGTK är av version 2.8 eller högre kommer fönstret att blinka (standardbeteende i de flesta fönsterhanterare) när det finns väntande händelser." +msgid "" +"If True and installed GTK+ and PyGTK versions are at least 2.8, make the " +"window flash (the default behaviour in most Window Managers) when holding " +"pending events." +msgstr "" +"Om True och GTK+ och PyGTK är av version 2.8 eller högre kommer fönstret att " +"blinka (standardbeteende i de flesta fönsterhanterare) när det finns " +"väntande händelser." #: ../src/common/config.py:191 -msgid "Jabberd1.4 does not like sha info when one join a password protected room. Turn this option to False to stop sending sha info in groupchat presences" -msgstr "Jabberd1.4 tycker inte om SHA-info när man ansluter till ett lösenordsskyddat rum. Sätt denna inställning till False för att inte skicka SHA-info i gruppchattnärvaroinformation" +msgid "" +"Jabberd1.4 does not like sha info when one join a password protected room. " +"Turn this option to False to stop sending sha info in groupchat presences" +msgstr "" +"Jabberd1.4 tycker inte om SHA-info när man ansluter till ett " +"lösenordsskyddat rum. Sätt denna inställning till False för att inte skicka " +"SHA-info i gruppchattnärvaroinformation" -#: ../src/common/config.py:193 +#. always, never, peracct, pertype should not be translated +#: ../src/common/config.py:194 msgid "" "Controls the window where new messages are placed.\n" "'always' - All messages are sent to a single window.\n" "'never' - All messages get their own window.\n" "'peracct' - Messages for each account are sent to a specific window.\n" -"'pertype' - Each message type (e.g., chats vs. groupchats) are sent to a specific window. Note, changing this option requires restarting Gajim before the changes will take effect" +"'pertype' - Each message type (e.g., chats vs. groupchats) are sent to a " +"specific window. Note, changing this option requires restarting Gajim before " +"the changes will take effect" msgstr "" "Kontrollerar fönstret där nya meddelanden placeras.\n" "'always' - Alla meddelanden öppnas i ett gemensamt fönster.\n" "'never' - Alla meddelanden öppnas i sitt eget fönster.\n" "'peracct' - Meddelanden frÃ¥n varje konto skickas till specifikt fönster.\n" -"'pertype' - Varje meddelandetyp (t.ex. enstaka meddelande eller gruppchatt) visas i ett specifikt fönster. OBS: Gajim mÃ¥ste startas om för att denna inställning skall börja gälla." +"'pertype' - Varje meddelandetyp (t.ex. enstaka meddelande eller gruppchatt) " +"visas i ett specifikt fönster. OBS: Gajim mÃ¥ste startas om för att denna " +"inställning skall börja gälla." -#: ../src/common/config.py:194 +#: ../src/common/config.py:195 msgid "If False, you will no longer see the avatar in the chat window" msgstr "Of False kommer du inte längre att se avatarer i chattfönstret" -#: ../src/common/config.py:195 +#: ../src/common/config.py:196 msgid "If True, pressing the escape key closes a tab/window" msgstr "Om True kommer escape att stänga en tabb eller ett fönster" -#: ../src/common/config.py:196 +#: ../src/common/config.py:197 msgid "Hides the buttons in group chat window" msgstr "Gömmer knapparna i gruppchattfönstret" -#: ../src/common/config.py:197 +#: ../src/common/config.py:198 msgid "Hides the buttons in two persons chat window" msgstr "Gömmer knapparna i tvÃ¥personers chattfönster" -#: ../src/common/config.py:198 +#: ../src/common/config.py:199 msgid "Hides the banner in a group chat window" msgstr "Gömmer bannern i gruppchatfönstret" -#: ../src/common/config.py:199 +#: ../src/common/config.py:200 msgid "Hides the banner in two persons chat window" msgstr "Gömmer bannern i tvÃ¥personers chattfönster" -#: ../src/common/config.py:200 +#: ../src/common/config.py:201 msgid "Hides the room occupants list in groupchat window" msgstr "Gömmer deltagarelistan i gruppchatfönstret" +#: ../src/common/config.py:202 +msgid "Merge consecutive nickname in chat window" +msgstr "" + +#: ../src/common/config.py:203 +msgid "Indentation when using merge consecutive nickame" +msgstr "" + +#: ../src/common/config.py:204 +msgid "List of colors that will be used to color nicknames in groupchats" +msgstr "" + #. yes, no, ask -#: ../src/common/config.py:233 +#: ../src/common/config.py:237 msgid "Jabberd2 workaround" msgstr "Jabberd2 workaround" -#: ../src/common/config.py:237 -msgid "If checked, Gajim will use your IP and proxies defined in file_transfer_proxies option for file transfer." -msgstr "If ibockad kommer Gajim kommer gajim att använda ditt IP och proxies definerade i file_transfer_proxies under inställningar för filöverföringar." +#: ../src/common/config.py:241 +msgid "" +"If checked, Gajim will use your IP and proxies defined in " +"file_transfer_proxies option for file transfer." +msgstr "" +"If ibockad kommer Gajim kommer gajim att använda ditt IP och proxies " +"definerade i file_transfer_proxies under inställningar för filöverföringar." -#: ../src/common/config.py:290 +#: ../src/common/config.py:297 msgid "Sleeping" msgstr "Sover" -#: ../src/common/config.py:291 +#: ../src/common/config.py:298 msgid "Back soon" msgstr "Snart tillbaka" -#: ../src/common/config.py:291 +#: ../src/common/config.py:298 msgid "Back in some minutes." msgstr "Tillbaka om nÃ¥gra minuter." -#: ../src/common/config.py:292 +#: ../src/common/config.py:299 msgid "Eating" msgstr "Äter" -#: ../src/common/config.py:292 +#: ../src/common/config.py:299 msgid "I'm eating, so leave me a message." msgstr "Jag äter, sÃ¥ lämna ett meddelande." -#: ../src/common/config.py:293 +#: ../src/common/config.py:300 msgid "Movie" msgstr "Film" -#: ../src/common/config.py:293 +#: ../src/common/config.py:300 msgid "I'm watching a movie." msgstr "Jag tittar pÃ¥ film." -#: ../src/common/config.py:294 +#: ../src/common/config.py:301 msgid "Working" msgstr "Arbetar" -#: ../src/common/config.py:294 +#: ../src/common/config.py:301 msgid "I'm working." msgstr "Jag arbetar." -#: ../src/common/config.py:295 +#: ../src/common/config.py:302 msgid "Phone" msgstr "Telefon" -#: ../src/common/config.py:295 +#: ../src/common/config.py:302 msgid "I'm on the phone." msgstr "Jag pratar i telefon." -#: ../src/common/config.py:296 +#: ../src/common/config.py:303 msgid "Out" msgstr "Ute" -#: ../src/common/config.py:296 +#: ../src/common/config.py:303 msgid "I'm out enjoying life" msgstr "Jag är ute och njuter av livet." -#: ../src/common/config.py:305 -msgid "Sound to play when a MUC message contains one of the words in muc_highlight_words, or when a MUC message contains your nickname." -msgstr "Ljud att spela när MUC-meddelande innehÃ¥ller ett av orden i muc_highlight_words, eller när MUC-meddelande innehÃ¥ller ditt smeknamn." +#: ../src/common/config.py:312 +msgid "" +"Sound to play when a MUC message contains one of the words in " +"muc_highlight_words, or when a MUC message contains your nickname." +msgstr "" +"Ljud att spela när MUC-meddelande innehÃ¥ller ett av orden i " +"muc_highlight_words, eller när MUC-meddelande innehÃ¥ller ditt smeknamn." -#: ../src/common/config.py:306 -msgid "Sound to play when any MUC message arrives. (This setting is taken into account only if notify_on_all_muc_messages is True)" -msgstr "Ljud att spela när MUC-meddelande anländer. (Denna inställning behandlas endast om notify_on_all_muc_messages är satt till True)" +#: ../src/common/config.py:313 +msgid "" +"Sound to play when any MUC message arrives. (This setting is taken into " +"account only if notify_on_all_muc_messages is True)" +msgstr "" +"Ljud att spela när MUC-meddelande anländer. (Denna inställning behandlas " +"endast om notify_on_all_muc_messages är satt till True)" -#: ../src/common/config.py:314 -#: ../src/common/optparser.py:181 +#: ../src/common/config.py:321 ../src/common/optparser.py:185 msgid "green" msgstr "grön" -#: ../src/common/config.py:318 -#: ../src/common/optparser.py:167 +#: ../src/common/config.py:325 ../src/common/optparser.py:171 msgid "grocery" msgstr "grönsaker" -#: ../src/common/config.py:322 +#: ../src/common/config.py:329 msgid "human" msgstr "mänsklig" -#: ../src/common/config.py:326 +#: ../src/common/config.py:333 msgid "marine" msgstr "marin" -#: ../src/common/connection.py:152 +#: ../src/common/connection.py:172 #, python-format msgid "Connection with account \"%s\" has been lost" msgstr "Anslutningen med konto \"%s\" har brutits" -#: ../src/common/connection.py:153 +#: ../src/common/connection.py:173 msgid "To continue sending and receiving messages, you will need to reconnect." msgstr "För att fortsätta skicka och ta emot meddelanden mÃ¥ste du Ã¥teransluta." -#: ../src/common/connection.py:169 -#: ../src/common/connection.py:195 +#: ../src/common/connection.py:185 ../src/common/connection.py:211 #, python-format msgid "Transport %s answered wrongly to register request." msgstr "Transporten %s svarade felaktigt pÃ¥ en registreringsbegäran." #. wrong answer -#: ../src/common/connection.py:194 +#: ../src/common/connection.py:210 msgid "Invalid answer" msgstr "Ogiltigt lösenord" -#: ../src/common/connection.py:348 -#: ../src/common/connection.py:384 -#: ../src/common/connection.py:754 +#: ../src/common/connection.py:397 ../src/common/connection.py:433 +#: ../src/common/connection.py:857 #, python-format msgid "Could not connect to \"%s\"" msgstr "Kunde inte ansluta till \"%s\"" -#: ../src/common/connection.py:362 +#: ../src/common/connection.py:411 #, python-format msgid "Connected to server %s:%s with %s" msgstr "Ansluten till server %s:%s med %s" -#: ../src/common/connection.py:385 +#: ../src/common/connection.py:434 msgid "Check your connection or try again later" msgstr "Kontrollera din förbindelse eller försök igen" -#: ../src/common/connection.py:410 +#: ../src/common/connection.py:459 #, python-format msgid "Authentication failed with \"%s\"" msgstr "Inloggning misslyckades med \"%s\"" -#: ../src/common/connection.py:411 +#: ../src/common/connection.py:460 msgid "Please check your login and password for correctness." msgstr "Kontrollera ditt inloggningsnamn och lösenord." #. We didn't set a passphrase -#: ../src/common/connection.py:487 +#: ../src/common/connection.py:573 msgid "OpenPGP passphrase was not given" msgstr "Lösenordsfras för OpenPGP angavs inte" #. %s is the account name here -#: ../src/common/connection.py:489 +#: ../src/common/connection.py:575 #, python-format msgid "You will be connected to %s without OpenPGP." msgstr "Du kommer ansluta till %s utan OpenPGP." #. do not show I'm invisible! -#: ../src/common/connection.py:526 +#: ../src/common/connection.py:612 msgid "invisible" msgstr "osynlig" -#: ../src/common/connection.py:527 +#: ../src/common/connection.py:613 msgid "offline" msgstr "frÃ¥nkopplad" -#: ../src/common/connection.py:528 +#: ../src/common/connection.py:614 #, python-format msgid "I'm %s" msgstr "Jag är %s" #. we're not english -#: ../src/common/connection.py:611 +#: ../src/common/connection.py:699 msgid "[This message is encrypted]" msgstr "[Det här meddelandet är krypterat]" -#: ../src/common/connection.py:649 +#: ../src/common/connection.py:742 #, python-format msgid "" "Subject: %s\n" @@ -4382,236 +5214,322 @@ msgstr "" "Ämne: %s\n" "%s" -#: ../src/common/connection.py:699 +#: ../src/common/connection.py:795 ../src/common/connection_handlers.py:1511 msgid "I would like to add you to my roster." msgstr "Jag skulle vilja lägga till dig i mitt register." -#: ../src/common/helpers.py:103 +#: ../src/common/connection_handlers.py:49 +msgid "Unable to load idle module" +msgstr "Lyckades inte ladda tomgÃ¥ngsmodul" + +#: ../src/common/connection_handlers.py:581 +#, python-format +msgid "Registration information for transport %s has not arrived in time" +msgstr "Registreringsinformation för transport %s har inte kommit fram i tid" + +#. password required to join +#. we are banned +#. room does not exist +#: ../src/common/connection_handlers.py:1450 +#: ../src/common/connection_handlers.py:1453 +#: ../src/common/connection_handlers.py:1456 +#: ../src/common/connection_handlers.py:1459 +#: ../src/common/connection_handlers.py:1462 +#: ../src/common/connection_handlers.py:1465 +#: ../src/common/connection_handlers.py:1473 +msgid "Unable to join room" +msgstr "Lyckades inte gÃ¥ med i rummet" + +#: ../src/common/connection_handlers.py:1451 +msgid "A password is required to join this room." +msgstr "Det krävs en lösenfras för att ansluta till detta rum." + +#: ../src/common/connection_handlers.py:1454 +msgid "You are banned from this room." +msgstr "Du är bannlyst frÃ¥n detta rummet." + +#: ../src/common/connection_handlers.py:1457 +msgid "Such room does not exist." +msgstr "Det finns inget sÃ¥dant rum." + +#: ../src/common/connection_handlers.py:1460 +msgid "Room creation is restricted." +msgstr "Möjligheten att skapa rum är begränsad." + +#: ../src/common/connection_handlers.py:1463 +msgid "Your registered nickname must be used." +msgstr "Ditt registrerade smeknamn mÃ¥ste användas." + +#: ../src/common/connection_handlers.py:1466 +msgid "You are not in the members list." +msgstr "Du är inte med i medlemslistan." + +#: ../src/common/connection_handlers.py:1474 +msgid "" +"Your desired nickname is in use or registered by another occupant.\n" +"Please specify another nickname below:" +msgstr "" +"Ditt önskade smeknamn används redan eller är registrerat av en annan " +"deltagare.\n" +"Vänligen ange ett annat smeknamn nedan:" + +#. BE CAREFUL: no con.updateRosterItem() in a callback +#: ../src/common/connection_handlers.py:1519 +#, python-format +msgid "we are now subscribed to %s" +msgstr "vi prenumererar nu pÃ¥ %s" + +#: ../src/common/connection_handlers.py:1521 +#, python-format +msgid "unsubscribe request from %s" +msgstr "avprenumerationsförfrÃ¥gan frÃ¥n %s" + +#: ../src/common/connection_handlers.py:1523 +#, python-format +msgid "we are now unsubscribed from %s" +msgstr "vi prenumererar inte längre pÃ¥ %s" + +#: ../src/common/connection_handlers.py:1680 +#, python-format +msgid "" +"JID %s is not RFC compliant. It will not be added to your roster. Use roster " +"management tools such as http://jru.jabberstudio.org/ to remove it" +msgstr "" +"JID %s följer inte RFC. Dt kommer inte att läggas till till ditt register. " +"Använd registerhanteringsverktyg sÃ¥ som http://jru.jabberstudio.org/ för " +"att ta bort det" + +#: ../src/common/helpers.py:100 msgid "Invalid character in username." msgstr "Ogiltigt tecken i användarnamn" -#: ../src/common/helpers.py:108 +#: ../src/common/helpers.py:105 msgid "Server address required." msgstr "Serveradress krävs." -#: ../src/common/helpers.py:113 +#: ../src/common/helpers.py:110 msgid "Invalid character in hostname." msgstr "Ogiltigt tecken i värdnamn." -#: ../src/common/helpers.py:119 +#: ../src/common/helpers.py:116 msgid "Invalid character in resource." msgstr "Ogiltigt tecken i resurs." #. GiB means gibibyte -#: ../src/common/helpers.py:159 +#: ../src/common/helpers.py:156 #, python-format msgid "%s GiB" msgstr "%s GiB" #. GB means gigabyte -#: ../src/common/helpers.py:162 +#: ../src/common/helpers.py:159 #, python-format msgid "%s GB" msgstr "%s GB" #. MiB means mibibyte -#: ../src/common/helpers.py:166 +#: ../src/common/helpers.py:163 #, python-format msgid "%s MiB" msgstr "%s MiB" #. MB means megabyte -#: ../src/common/helpers.py:169 +#: ../src/common/helpers.py:166 #, python-format msgid "%s MB" msgstr "%s MB" #. KiB means kibibyte -#: ../src/common/helpers.py:173 +#: ../src/common/helpers.py:170 #, python-format msgid "%s KiB" msgstr "%s KiB" #. KB means kilo bytes -#: ../src/common/helpers.py:176 +#: ../src/common/helpers.py:173 #, python-format msgid "%s KB" msgstr "%s KB" #. B means bytes -#: ../src/common/helpers.py:179 +#: ../src/common/helpers.py:176 #, python-format msgid "%s B" msgstr "%s B" -#: ../src/common/helpers.py:189 +#: ../src/common/helpers.py:205 msgid "_Busy" msgstr "_Upptagen" -#: ../src/common/helpers.py:191 +#: ../src/common/helpers.py:207 msgid "Busy" msgstr "Upptagen" -#: ../src/common/helpers.py:194 +#: ../src/common/helpers.py:210 msgid "_Not Available" msgstr "_Inte tillgänglig" -#: ../src/common/helpers.py:196 +#: ../src/common/helpers.py:212 msgid "Not Available" msgstr "Inte tillgänglig" -#: ../src/common/helpers.py:199 +#: ../src/common/helpers.py:215 msgid "_Free for Chat" msgstr "_Ledig för chatt" -#: ../src/common/helpers.py:201 +#: ../src/common/helpers.py:217 msgid "Free for Chat" msgstr "Ledig för chatt" -#: ../src/common/helpers.py:204 +#: ../src/common/helpers.py:220 msgid "_Available" msgstr "_Tillgänglig" -#: ../src/common/helpers.py:206 +#: ../src/common/helpers.py:222 msgid "Available" msgstr "Tillgänglig" -#: ../src/common/helpers.py:208 +#: ../src/common/helpers.py:224 msgid "Connecting" msgstr "Upprättar förbindelse" -#: ../src/common/helpers.py:211 +#: ../src/common/helpers.py:227 msgid "A_way" msgstr "_Borta" -#: ../src/common/helpers.py:213 +#: ../src/common/helpers.py:229 msgid "Away" msgstr "Borta" -#: ../src/common/helpers.py:216 +#: ../src/common/helpers.py:232 msgid "_Offline" msgstr "_FrÃ¥nkopplad" -#: ../src/common/helpers.py:218 +#: ../src/common/helpers.py:234 msgid "Offline" msgstr "FrÃ¥nkopplad" -#: ../src/common/helpers.py:221 +#: ../src/common/helpers.py:237 msgid "_Invisible" msgstr "_Osynlig" -#: ../src/common/helpers.py:223 -msgid "Invisible" -msgstr "Osynlig" - -#: ../src/common/helpers.py:227 +#: ../src/common/helpers.py:243 msgid "?contact has status:Unknown" msgstr "?kontakt har status:Okänd" -#: ../src/common/helpers.py:229 +#: ../src/common/helpers.py:245 msgid "?contact has status:Has errors" msgstr "?kontakt har status:Har fel" -#: ../src/common/helpers.py:234 +#: ../src/common/helpers.py:250 msgid "?Subscription we already have:None" msgstr "?Prenumeration vi redan har:Ingen" -#: ../src/common/helpers.py:236 +#: ../src/common/helpers.py:252 msgid "To" msgstr "Till" -#: ../src/common/helpers.py:238 +#: ../src/common/helpers.py:254 msgid "From" msgstr "FrÃ¥n" -#: ../src/common/helpers.py:240 +#: ../src/common/helpers.py:256 msgid "Both" msgstr "BÃ¥da" -#: ../src/common/helpers.py:248 +#: ../src/common/helpers.py:264 msgid "?Ask (for Subscription):None" msgstr "?FrÃ¥ga (för prenumeration):Ingen" -#: ../src/common/helpers.py:250 +#: ../src/common/helpers.py:266 msgid "Subscribe" msgstr "Prenumerera" -#: ../src/common/helpers.py:259 +#: ../src/common/helpers.py:275 msgid "?Group Chat Contact Role:None" msgstr "?Gruppchatt kontaktroll:Ingen" -#: ../src/common/helpers.py:262 +#: ../src/common/helpers.py:278 msgid "Moderators" msgstr "Moderatorer" -#: ../src/common/helpers.py:264 +#: ../src/common/helpers.py:280 msgid "Moderator" msgstr "Moderator" -#: ../src/common/helpers.py:267 +#: ../src/common/helpers.py:283 msgid "Participants" msgstr "Deltagare" -#: ../src/common/helpers.py:269 +#: ../src/common/helpers.py:285 msgid "Participant" msgstr "Deltagare" -#: ../src/common/helpers.py:272 +#: ../src/common/helpers.py:288 msgid "Visitors" msgstr "Besökare" -#: ../src/common/helpers.py:274 +#: ../src/common/helpers.py:290 msgid "Visitor" msgstr "Besökare" -#: ../src/common/helpers.py:310 +#: ../src/common/helpers.py:326 msgid "is paying attention to the conversation" msgstr "uppmärksammar konversationen" -#: ../src/common/helpers.py:312 +#: ../src/common/helpers.py:328 msgid "is doing something else" msgstr "gör nÃ¥got annat" -#: ../src/common/helpers.py:314 +#: ../src/common/helpers.py:330 msgid "is composing a message..." msgstr "skriver ett meddelande..." #. paused means he or she was compoing but has stopped for a while -#: ../src/common/helpers.py:317 +#: ../src/common/helpers.py:333 msgid "paused composing a message" msgstr "tog en paus i skrivandet" -#: ../src/common/helpers.py:319 +#: ../src/common/helpers.py:335 msgid "has closed the chat window or tab" msgstr "har stängt chattfönstret eller fliken" #. we talk about a file -#: ../src/common/optparser.py:62 +#: ../src/common/optparser.py:60 #, python-format msgid "error: cannot open %s for reading" msgstr "fel: kan inte öppna %s för läsning" -#: ../src/common/optparser.py:167 +#: ../src/common/optparser.py:171 msgid "gtk+" msgstr "gtk+" -#: ../src/common/optparser.py:176 -#: ../src/common/optparser.py:177 +#: ../src/common/optparser.py:180 ../src/common/optparser.py:181 msgid "cyan" msgstr "cyan" +#~ msgid "Automatically authorize contact" +#~ msgstr "Auktorisera kontakt automatiskt" + +#~ msgid "Send File" +#~ msgstr "Skicka fil" + +#~ msgid "Underline" +#~ msgstr "Understrykning" + #~ msgid "Would you like to overwrite it?" #~ msgstr "Vill du skriva över den?" + #~ msgid "_Join New Room..." #~ msgstr "Anslut till nytt _rum..." + #~ msgid "Usage: /%s, sets the groupchat window to compact mode." #~ msgstr "Användning: /%s, ställer om ett gruppchatfönster till kompaktvy." #, fuzzy #~ msgid "Please modify your special notification below" #~ msgstr "Vänligen välj ett av alternativen nedan:" -#~ msgid "Ad_vanced Actions" -#~ msgstr "A_vancerade Ã¥tgärder" + #~ msgid "Delete Message of the Day" #~ msgstr "Radera dagens meddelande" @@ -4622,30 +5540,43 @@ msgstr "cyan" #, fuzzy #~ msgid "I want to listen to:" #~ msgstr "%s vill skicka en fil till dig:" + #~ msgid "Send _New Message..." #~ msgstr "Skicka _Nytt Meddelande..." + #~ msgid "Set Message of the Day" #~ msgstr "Ställ in dagens meddelande" + #~ msgid "Update Message of the Day" #~ msgstr "Uppdatera dagens meddelande" + #~ msgid "_XML Console..." #~ msgstr "_XML konsol..." + #~ msgid "Choose Avatar" #~ msgstr "Välj avatar" + #~ msgid "Use compact view when you open a chat window" #~ msgstr "Använd kompaktvy när ett chattfönster öppnas" + #~ msgid "Use compact view when you open a group chat window" #~ msgstr "Använd kompaktvy när ett gruppchattfönster öppnas" + #~ msgid "plain" #~ msgstr "enkel" + #~ msgid "Send" #~ msgstr "Sänd" + #~ msgid "%(nickname)s in room %(room_name)s has sent you a new message." #~ msgstr "%(nickname)s i rum %(room_name)s har skickat dig ett meddelande." + #~ msgid "%s has sent you a new message." #~ msgstr "%s har skickat dig ett nytt meddelande." + #~ msgid "GUI Migration failed" #~ msgstr "GUI Migration misslyckades" + #~ msgid "" #~ "Logs migration through graphical interface failed. The migration process " #~ "will start in the background. Please wait a few minutes for Gajim to " @@ -4654,103 +5585,90 @@ msgstr "cyan" #~ "Migration av logfiler genom grafiskt gränssnitt misslyckades. " #~ "Migrationsprocessen kommer att startas i bakgrunden. Vänligen tillÃ¥t " #~ "nÃ¥gra minuter för Gajim att starta." + #~ msgid "Logs have been successfully migrated to the database." #~ msgstr "Migrationen av logfiler till databasen lyckades." + #~ msgid "If checked, Gajim will also have a trayicon" #~ msgstr "Om ibockad kommer Gajim ocksÃ¥ att ha en aktivitetsfältsikon" + #~ msgid "_Online Users" #~ msgstr "_Anslutna användare" #, fuzzy #~ msgid "Start Chat with Contact" #~ msgstr "Starta Chatt med konto %s" + #~ msgid "All contacts in this group are offline or have errors" #~ msgstr "Alla kontakter i den här gruppen är frÃ¥nkopplade eller har fel" + #~ msgid "Size: " #~ msgstr "Storlek: " + #~ msgid "Session bus is not available" #~ msgstr "Sessionsbus inte tillgänglig" -#~ msgid "Unable to load idle module" -#~ msgstr "Lyckades inte ladda tomgÃ¥ngsmodul" -#~ msgid "Unable to join room" -#~ msgstr "Lyckades inte gÃ¥ med i rummet" -#~ msgid "A password is required to join this room." -#~ msgstr "Det krävs en lösenfras för att ansluta till detta rum." -#~ msgid "You are banned from this room." -#~ msgstr "Du är bannlyst frÃ¥n detta rummet." -#~ msgid "Such room does not exist." -#~ msgstr "Det finns inget sÃ¥dant rum." -#~ msgid "Room creation is restricted." -#~ msgstr "Möjligheten att skapa rum är begränsad." -#~ msgid "Your registered nickname must be used." -#~ msgstr "Ditt registrerade smeknamn mÃ¥ste användas." -#~ msgid "You are not in the members list." -#~ msgstr "Du är inte med i medlemslistan." -#~ msgid "" -#~ "Your desired nickname is in use or registered by another occupant.\n" -#~ "Please specify another nickname below:" -#~ msgstr "" -#~ "Ditt önskade smeknamn används redan eller är registrerat av en annan " -#~ "deltagare.\n" -#~ "Vänligen ange ett annat smeknamn nedan:" -#~ msgid "we are now subscribed to %s" -#~ msgstr "vi prenumererar nu pÃ¥ %s" -#~ msgid "unsubscribe request from %s" -#~ msgstr "avprenumerationsförfrÃ¥gan frÃ¥n %s" -#~ msgid "we are now unsubscribed from %s" -#~ msgstr "vi prenumererar inte längre pÃ¥ %s" -#~ msgid "" -#~ "JID %s is not RFC compliant. It will not be added to your roster. Use " -#~ "roster management tools such as http://jru.jabberstudio.org/ to remove it" -#~ msgstr "" -#~ "JID %s följer inte RFC. Dt kommer inte att läggas till till ditt " -#~ "register. Använd registerhanteringsverktyg sÃ¥ som http://jru.jabberstudio." -#~ "org/ för att ta bort det" -#~ msgid "Registration information for transport %s has not arrived in time" -#~ msgstr "" -#~ "Registreringsinformation för transport %s har inte kommit fram i tid" + #~ msgid "Sound" #~ msgstr "Ljud" + #~ msgid "Text" #~ msgstr "Text" + #~ msgid "Image" #~ msgstr "Bild" + #~ msgid "Read AUTHORS file for full list including past developers" #~ msgstr "Läs AUTHORS-filen för en komplett lista över tidigare utvecklare" + #~ msgid "From %s" #~ msgstr "FrÃ¥n %s" + #~ msgid "To %s" #~ msgstr "Till %s" + #~ msgid "You have been invited to the %(room_jid)s room by %(contact_jid)s" #~ msgstr "Du har blivit inbjuden till rum %(room_jid)s av %(contact_jid)s" + #~ msgid "" #~ "Animated\n" #~ "Static" #~ msgstr "" #~ "Animerad\n" #~ "Statisk" + #~ msgid "Manage Emoticons" #~ msgstr "Hantera känsloikoner" + #~ msgid "Or choose a preset message:" #~ msgstr "Eller välj ett förinställt meddelande:" + #~ msgid "Use _emoticons" #~ msgstr "Använd _känsloikoner" + #~ msgid "_Set Image..." #~ msgstr "_Ange bild..." + #~ msgid "Switch to %s" #~ msgstr "Växla till %s" + #~ msgid "using account " #~ msgstr "använder konto " + #~ msgid "The filesize of image \"%s\" is too large" #~ msgstr "Filstorleken för bilden \"%s\" är för stor" + #~ msgid "The file must not be more than 32 kilobytes." #~ msgstr "Filen fÃ¥r inte vara mer än 32 kilobytes." + #~ msgid "A list of rooms that do not require confirmation before closing" #~ msgstr "En lista pÃ¥ rum som inte kräver konfirmation innan de stängs" + #~ msgid "Timeout" #~ msgstr "Timeout" + #~ msgid "A protocol error has occured:" #~ msgstr "Ett protokollfel har inträffat:" + #~ msgid "account: " #~ msgstr "konto: " @@ -4763,44 +5681,57 @@ msgstr "cyan" #~ msgstr "" #~ "Om du stänger det här fönstret kommer du bli frÃ¥nkopplad frÃ¥n det här " #~ "rummet." + #~ msgid "Activate/Disable notification for when a file transfer is complete" #~ msgstr "Aktivera/Deaktivera notifiering för färdiga filöverföringar" + #~ msgid "Removing selected file transfer" #~ msgstr "Tar bort vald filöverföring" + #~ msgid "Stoping selected file transfer" #~ msgstr "Stoppar vald filöverföring" -#~ msgid "Use a single chat window with _tabs" -#~ msgstr "Använd ett enkelt chattfönster med _flikar" + #~ msgid "" #~ "If you close this tab and you have history disabled, the message will be " #~ "lost." #~ msgstr "" #~ "Om du stänger den här tabben och du har historik avstängt kommer " #~ "meddelandet försvinna." + #~ msgid "Cannot remove last group" #~ msgstr "Kan inte ta bort den sista gruppen" + #~ msgid "At least one contact group must be present." #~ msgstr "Ã…tminstone en kontaktgrupp mÃ¥ste finnas." + #~ msgid "Image is too big" #~ msgstr "Bild är för stor" + #~ msgid "" #~ "Image for emoticon has to be less than or equal to 24 pixels in width and " #~ "24 in height." #~ msgstr "" #~ "Bilden för känsloikonen mÃ¥ste vara mindre än eller lika med 24 pixlar i " #~ "bredd och 24 i höjd." + #~ msgid "Changes in latest version" #~ msgstr "Ändringar i den senaste versionen" + #~ msgid "Check for new _version on Gajim startup" #~ msgstr "Titta efter ny _version vid Gajimstart" + #~ msgid "Log history" #~ msgstr "Logghistorik" + #~ msgid "New version of Gajim available" #~ msgstr "Ny version av Gajim släppt" + #~ msgid "Open Download Page" #~ msgstr "Öppna nerladdningssida" + #~ msgid "Service not available" #~ msgstr "Tjänst är inte tillgänglig" + #~ msgid "Session bus is not available." #~ msgstr "Sessionsbus finns inte tillgänglig." @@ -4811,32 +5742,38 @@ msgstr "cyan" #, fuzzy #~ msgid "with account " #~ msgstr "konto: " + #~ msgid "Chat with" #~ msgstr "Chatta med" #, fuzzy #~ msgid "Send New Message" #~ msgstr "Nytt meddelande" + #~ msgid "as %s" #~ msgstr "som %s" + #~ msgid "as " #~ msgstr "som " #, fuzzy #~ msgid "Send _New Message" #~ msgstr "_Nytt meddelande" + #~ msgid "Re_quest Authorization from" #~ msgstr "Be_gär auktorisering frÃ¥n" + #~ msgid "Send Authorization to" #~ msgstr "Skicka auktorisering till" + #~ msgid "Log" #~ msgstr "Logg" + #~ msgid "Log presences in _contact's log file" #~ msgstr "Logga närvaro i _kontaktens logfil" + #~ msgid "Log presences in an _external file" #~ msgstr "Logga närvaro i en _extern fil" -#~ msgid "Unable to write file in %s" -#~ msgstr "Lyckades inte skriva fil i %s" #, fuzzy #~ msgid "" @@ -4846,6 +5783,7 @@ msgstr "cyan" #~ "Konto har blivit tillagt ordentligt.\n" #~ "Du kan ställa in avancerade alternativ genom att använda \"Redigera-" #~ ">Konton\" frÃ¥n huvudfönstret." + #~ msgid "" #~ "When a new message is received which is not from a contact already in a " #~ "chat window, the three following actions may happen in order for you to " @@ -4854,14 +5792,19 @@ msgstr "cyan" #~ "När ett nytt meddelande tas emot av en kontakt som inte redan finns i ett " #~ "chatfönster kan de tre följande handlingarna hända för att du ska fÃ¥r " #~ "reda pÃ¥ det" + #~ msgid "_Earliest" #~ msgstr "_Tidigast" + #~ msgid "_Latest" #~ msgstr "_Tidigaste" + #~ msgid "_Previous" #~ msgstr "_FöregÃ¥ende" + #~ msgid "%s is now %s: %s" #~ msgstr "%s är nu %s: %s" + #~ msgid "" #~ "\n" #~ "\n" @@ -4885,10 +5828,13 @@ msgstr "cyan" #~ "Konto har blivit tillagt ordentligt.\n" #~ "Du kan ställa in avancerade alternativ genom att använda \"Redigera-" #~ ">Konton\" frÃ¥n huvudfönstret." + #~ msgid "Error:" #~ msgstr "Fel:" + #~ msgid "Node" #~ msgstr "Nod" + #~ msgid "" #~ "Your new account has been created and added to your gajim configuration.\n" #~ "You can set advanced account options using \"Edit->Accounts\" in the main " @@ -4897,67 +5843,88 @@ msgstr "cyan" #~ "Ditt nya konto har skapats och lagts till i din gajimkonfiguration.\n" #~ "Du kan ställa in avancerade kontoalternativ genom att använda \"Redigera-" #~ ">Konton\" frÃ¥n menyn i registerfönstret." + #~ msgid "You need to enter a valid server address to add an account." #~ msgstr "" #~ "Du mÃ¥ste ange en giltig serveradress för att kunna lägga till ett konto." + #~ msgid "Contact names must be of the form \"user@servername\"." #~ msgstr "Kontaktnamn mÃ¥ste vara i formen \"användare@server\"." + #~ msgid "Invalid contact ID" #~ msgstr "Ogiltigt kontakt-ID" + #~ msgid "Contact ID must be of the form \"username@servername\"." #~ msgstr "Kontakt-ID mÃ¥ste vara i formen \"användare@server\"." + #~ msgid "Account registration successful" #~ msgstr "Kontoregistrering lyckades" + #~ msgid "The account \"%s\" has been registered with the Jabber server." #~ msgstr "Kontot \"%s\" har blivit registrerat med Jabberservern." + #~ msgid "theme_name" #~ msgstr "tema_namn" + #~ msgid "Edit" #~ msgstr "Redigera" + #~ msgid "Please fill in the data for your existing account" #~ msgstr "Fyll i informationen för ditt existerande konto" + #~ msgid "Check if you want to register for a new jabber account" #~ msgstr "Kryssa i om du vill registrera ett nytt jabberkonto" + #~ msgid "Click to get contact's extended information" #~ msgstr "Klicka för att fÃ¥ kontaktens utökade information" + #~ msgid "Enter your message:" #~ msgstr "Skriv ditt meddelande:" + #~ msgid "_Compact View" #~ msgstr "_Kompakt vy" -#~ msgid "_Nickname:" -#~ msgstr "_Smeknamn:" + #~ msgid "_Refresh" #~ msgstr "_Uppdatera" + #~ msgid "_Register new account" #~ msgstr "_Registrera nytt konto" + #~ msgid "error appeared while processing xmpp:" #~ msgstr "fel dök upp medans xmpp processade:" + #~ msgid "Gajim - a GTK+ Jabber client" #~ msgstr "Gajim - en GTK+ Jabberklient" + #~ msgid "You just received a new message in room \"%s\"" #~ msgstr "Du har mottagit ett nytt meddelande i rummet \"%s\"" + #~ msgid "" #~ "If you close this window and you have history disabled, this message will " #~ "be lost." #~ msgstr "" #~ "Om du stänger det här fönstret och du har historik avstängd, kommer ditt " #~ "meddelande försvinna." + #~ msgid "New _Room" #~ msgstr "Nytt _rum" -#~ msgid "Account:" -#~ msgstr "Konto:" + #~ msgid "Always use compact _view" #~ msgstr "Visa alltid kompakt _vy" + #~ msgid "Banner:" #~ msgstr "Banderoll:" + #~ msgid "" #~ "Cancels the selected file transfer. If there is an incomplete file, kept " #~ "in the file system it will be removed. This operation is not reversable" #~ msgstr "" #~ "Avbryter den valda filöverföringen. Om det finns en inkomplett fil kvar " #~ "pÃ¥ filsystem kommer den tas bort. Den här handlingen gÃ¥r inte att Ã¥ngra" + #~ msgid "Chan_ge" #~ msgstr "_Ändra" + #~ msgid "" #~ "If checked, all chat and group chat windows will have the information " #~ "area in the top and the buttons area in the bottom hidden. You can quick " @@ -4968,14 +5935,18 @@ msgstr "cyan" #~ "informationsytan upptill och knappytan nertill gömda. Du kan snabbt ändra " #~ "pÃ¥ kompaktvy med Alt+C. NOTIS: Statusen du lämnar ett fönster/en flik i " #~ "är inte permanent" + #~ msgid "Join _Group Chat..." #~ msgstr "Anslut till _gruppchatt..." + #~ msgid "Show roster window on Gajim startup" #~ msgstr "Visa registerfönstret när Gajim startar" + #~ msgid "_Join Group Chat" #~ msgstr "_Anslut till gruppchatt" + #~ msgid "_Service Discovery" #~ msgstr "_Tjänstefinnare" + #~ msgid "_Service Discovery..." #~ msgstr "_Tjänstefinnare..." - diff --git a/po/zh_CN.po b/po/zh_CN.po index 8d1d49557..ba86eca61 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -5,12 +5,12 @@ # wwld , 2005. # kangkang , 2005. # -#: ../src/gajim-remote.py:204 ../src/gajim-remote.py:211 +#: ../src/gajim-remote.py:218 ../src/gajim-remote.py:225 msgid "" msgstr "" "Project-Id-Version: Gajim\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2006-04-13 12:52+0200\n" +"POT-Creation-Date: 2006-07-04 00:03+0200\n" "PO-Revision-Date: 2006-04-13 11:38+0800\n" "Last-Translator: kangkang \n" "Language-Team: sIyU \n" @@ -33,30 +33,2061 @@ msgstr "Gajim å³æ—¶æ¶ˆæ¯è½¯ä»¶" msgid "Jabber IM Client" msgstr "Jabber å³æ—¶æ¶ˆæ¯å®¢æˆ·ç«¯" -#: ../src/advanced.py:71 +#: ../data/glade/account_context_menu.glade.h:1 +msgid "Send Single _Message..." +msgstr "å‘é€ä¸€æ¡æ¶ˆæ¯...(_M)" + +#: ../data/glade/account_context_menu.glade.h:2 +msgid "_Add Contact..." +msgstr "添加è”系人(_A)..." + +#: ../data/glade/account_context_menu.glade.h:3 +msgid "_Discover Services..." +msgstr "å‘掘æœåŠ¡(_D)..." + +#: ../data/glade/account_context_menu.glade.h:4 +#: ../data/glade/roster_window.glade.h:15 +#: ../data/glade/systray_context_menu.glade.h:5 +msgid "_Group Chat" +msgstr "群èŠ(_G)" + +#: ../data/glade/account_context_menu.glade.h:5 +msgid "_Modify Account..." +msgstr "修改å¸æˆ·(_M)..." + +#: ../data/glade/account_context_menu.glade.h:6 +msgid "_Status" +msgstr "状æ€(_S)" + +#: ../data/glade/account_creation_wizard_window.glade.h:1 +msgid "" +"Account is being created\n" +"\n" +"Please wait..." +msgstr "" +"正在创建å¸æˆ·\n" +"\n" +"请等待..." + +#: ../data/glade/account_creation_wizard_window.glade.h:4 +msgid "Please choose one of the options below:" +msgstr "请选择一个选项:" + +#: ../data/glade/account_creation_wizard_window.glade.h:5 +msgid "Please fill in the data for your new account" +msgstr "请填写您新åŒè´¦æˆ·çš„æ•°æ®" + +#: ../data/glade/account_creation_wizard_window.glade.h:6 +msgid "Click to see features (like MSN, ICQ transports) of jabber servers" +msgstr "点击查看 jabber æœåŠ¡å™¨ç‰¹æ€§(如 MSN, ICQ 代ç†)" + +#: ../data/glade/account_creation_wizard_window.glade.h:7 +msgid "Connect when I press Finish" +msgstr "当我点击“结æŸâ€æ—¶è¿žæŽ¥" + +#: ../data/glade/account_creation_wizard_window.glade.h:8 +msgid "Gajim: Account Creation Wizard" +msgstr "Gajim: å¸æˆ·åˆ›å»ºå‘导" + +#: ../data/glade/account_creation_wizard_window.glade.h:9 +msgid "I already have an account I want to use" +msgstr "我已ç»æ‹¥æœ‰äº†ä¸€ä¸ªå¸æˆ·" + +#: ../data/glade/account_creation_wizard_window.glade.h:10 +msgid "I want to _register for a new account" +msgstr "我想注册一个新å¸æˆ·(_R)" + +#: ../data/glade/account_creation_wizard_window.glade.h:11 +#: ../data/glade/account_modification_window.glade.h:18 +msgid "If checked, Gajim will remember the password for this account" +msgstr "如果选定,Gajim 会记录本å¸æˆ·å¯†ç " + +#: ../data/glade/account_creation_wizard_window.glade.h:12 +#: ../data/glade/manage_proxies_window.glade.h:6 +msgid "Pass_word:" +msgstr "密ç (_W)" + +#: ../data/glade/account_creation_wizard_window.glade.h:13 +#: ../data/glade/account_modification_window.glade.h:37 +msgid "Save pass_word" +msgstr "ä¿å­˜å¯†ç (_W)" + +#: ../data/glade/account_creation_wizard_window.glade.h:14 +msgid "Servers Features" +msgstr "æœåŠ¡å™¨è®¾å®š" + +#: ../data/glade/account_creation_wizard_window.glade.h:15 +msgid "Set my profile when I connect" +msgstr "当连接上时设置我的模版" + +#: ../data/glade/account_creation_wizard_window.glade.h:16 +msgid "" +"You need to have an account in order to connect\n" +"to the Jabber network." +msgstr "" +"您需è¦ä¸€ä¸ªå¸æˆ·æ¥è¿žæŽ¥\n" +"Jabber 网络" + +#: ../data/glade/account_creation_wizard_window.glade.h:18 +msgid "Your JID:" +msgstr "您的 JID:" + +#: ../data/glade/account_creation_wizard_window.glade.h:19 +#: ../data/glade/roster_window.glade.h:10 +msgid "_Advanced" +msgstr "高级(_A)" + +#: ../data/glade/account_creation_wizard_window.glade.h:20 +msgid "_Finish" +msgstr "完æˆ(_F)" + +#: ../data/glade/account_creation_wizard_window.glade.h:21 +#: ../data/glade/manage_proxies_window.glade.h:9 +msgid "_Host:" +msgstr "主机(_H):" + +#: ../data/glade/account_creation_wizard_window.glade.h:22 +#: ../data/glade/account_modification_window.glade.h:45 +msgid "_Password:" +msgstr "密ç (_P):" + +#: ../data/glade/account_creation_wizard_window.glade.h:23 +#: ../data/glade/manage_proxies_window.glade.h:10 +msgid "_Port:" +msgstr "端å£(_P)" + +#: ../data/glade/account_creation_wizard_window.glade.h:24 +msgid "_Retype Password:" +msgstr "é‡æ–°é”®å…¥å¯†ç ï¼š(_R)" + +#: ../data/glade/account_creation_wizard_window.glade.h:25 +msgid "_Server:" +msgstr "æœåŠ¡å™¨(_S):" + +#: ../data/glade/account_creation_wizard_window.glade.h:26 +msgid "_Use proxy" +msgstr "使用代ç†æœåŠ¡å™¨(_U)" + +#: ../data/glade/account_creation_wizard_window.glade.h:27 +#: ../data/glade/manage_proxies_window.glade.h:11 +msgid "_Username:" +msgstr "用户å(_U):" + +#: ../data/glade/account_modification_window.glade.h:1 +#: ../data/glade/preferences_window.glade.h:8 +msgid "Miscellaneous" +msgstr "æ‚项" + +#: ../data/glade/account_modification_window.glade.h:2 +msgid "OpenPGP" +msgstr "OpenPGP" + +#: ../data/glade/account_modification_window.glade.h:3 +msgid "Personal Information" +msgstr "个人信æ¯" + +#: ../data/glade/account_modification_window.glade.h:4 +msgid "Account" +msgstr "账户" + +#: ../data/glade/account_modification_window.glade.h:5 +msgid "Account Modification" +msgstr "å¸æˆ·ä¿®æ”¹" + +#: ../data/glade/account_modification_window.glade.h:6 +msgid "Autoreconnect when connection is lost" +msgstr "连接丢失åŽè‡ªåŠ¨é‡æ–°è¿žæŽ¥" + +#: ../data/glade/account_modification_window.glade.h:7 +msgid "C_onnect on Gajim startup" +msgstr "Gajim å¯åŠ¨æ˜¯è¿žæŽ¥(_O)" + +#: ../data/glade/account_modification_window.glade.h:8 +msgid "Chan_ge Password" +msgstr "æ›´æ¢å¯†ç (_G)" + +#: ../data/glade/account_modification_window.glade.h:9 +msgid "" +"Check this so Gajim will connect in port 5223 where legacy servers are " +"expected to have SSL capabilities. Note that Gajim uses TLS encryption by " +"default if broadcasted by the server, and with this option enabled TLS will " +"be disabled" +msgstr "" +"检查这里, Gajim 将连接代ç†æœåŠ¡å™¨å…·æœ‰ SSL 能力的 5523 端å£ã€‚注æ„, Gajim 使" +"用 TLS 加密接å—æœåŠ¡å™¨å¹¿æ’­ï¼Œè€Œä½¿ç”¨è¯¥é€‰é¡¹å°†ç¦ç”¨ TLS" + +#: ../data/glade/account_modification_window.glade.h:10 +msgid "Choose _Key..." +msgstr "选择您的 OpenPGP 钥匙(_K)..." + +#: ../data/glade/account_modification_window.glade.h:11 +msgid "Click to change account's password" +msgstr "点击å˜æ›´å¸æˆ·å¯†ç " + +#: ../data/glade/account_modification_window.glade.h:12 +msgid "Connection" +msgstr "连接" + +#: ../data/glade/account_modification_window.glade.h:13 +msgid "Edit Personal Information..." +msgstr "编辑个人信æ¯..." + +#: ../data/glade/account_modification_window.glade.h:14 +#: ../data/glade/roster_window.glade.h:5 ../src/notify.py:308 +#: ../src/notify.py:330 ../src/notify.py:342 ../src/tooltips.py:350 +msgid "Gajim" +msgstr "Gajim" + +#: ../data/glade/account_modification_window.glade.h:15 +#: ../data/glade/preferences_window.glade.h:44 +#: ../data/glade/vcard_information_window.glade.h:17 +#: ../src/roster_window.py:290 ../src/roster_window.py:1184 +#: ../src/roster_window.py:1405 +msgid "General" +msgstr "常规" + +#: ../data/glade/account_modification_window.glade.h:16 +msgid "Hostname: " +msgstr "主机å:" + +#: ../data/glade/account_modification_window.glade.h:17 +#, fuzzy +msgid "" +"If checked, Gajim will also broadcast some more IPs except from just your " +"IP, so file transfer has higher chances of working." +msgstr "如选定, Gajim " + +#: ../data/glade/account_modification_window.glade.h:19 +msgid "" +"If checked, Gajim will send keep-alive packets so it prevents connection " +"timeout which results in disconnection" +msgstr "如果选定,Gajim 会å‘é€æ•°æ®åŒ…防止超时造æˆçš„连接断开" + +#: ../data/glade/account_modification_window.glade.h:20 +msgid "" +"If checked, Gajim will store the password in ~/.gajim/config with 'read' " +"permission only for you" +msgstr "" +"如果选定,Gajim 会以已读许å¯æ–¹å¼ä¸ºæ‚¨ä¸ªäººæŠŠå¯†ç ä¿å­˜åœ¨ ~/.gajim/config 文件中" + +#: ../data/glade/account_modification_window.glade.h:21 +msgid "" +"If checked, Gajim, when launched, will automatically connect to jabber using " +"this account" +msgstr "如果选定,Gajim 会在è¿è¡Œæ—¶ä½¿ç”¨æœ¬å¸æˆ·è‡ªåŠ¨è¿žæŽ¥ jabber" + +#: ../data/glade/account_modification_window.glade.h:22 +msgid "" +"If checked, any change to the global status (handled by the combobox at the " +"bottom of the roster window) will change the status of this account " +"accordingly" +msgstr "" +"如果选定,改å˜å…¨å±€çŠ¶æ€(在åå•çª—å£ä¸‹æ–¹å¤é€‰æ¡†ä¸­è°ƒèŠ‚)就会相应地改å˜å½“å‰å¸æˆ·çš„状" +"æ€" + +#: ../data/glade/account_modification_window.glade.h:23 +msgid "Information about you, as stored in the server" +msgstr "æœåŠ¡å™¨ä¸­ä¿å­˜çš„关于您的信æ¯" + +#: ../data/glade/account_modification_window.glade.h:24 +msgid "Manage..." +msgstr "管ç†..." + +#: ../data/glade/account_modification_window.glade.h:25 ../src/config.py:1448 +msgid "No key selected" +msgstr "没有选择钥匙" + +#. None means no proxy profile selected +#: ../data/glade/account_modification_window.glade.h:27 ../src/config.py:1053 +#: ../src/config.py:1058 ../src/config.py:1230 ../src/config.py:1505 +#: ../src/config.py:1578 ../src/config.py:2282 +msgid "None" +msgstr "(æ— )" + +#: ../data/glade/account_modification_window.glade.h:28 +msgid "Personal Information" +msgstr "个人信æ¯" + +#: ../data/glade/account_modification_window.glade.h:29 +msgid "Port: " +msgstr "端å£ï¼š" + +#: ../data/glade/account_modification_window.glade.h:30 +msgid "Priori_ty:" +msgstr "优先级(_T):" + +#: ../data/glade/account_modification_window.glade.h:31 +msgid "" +"Priority is used in Jabber to determine who gets the events from the jabber " +"server when two or more clients are connected using the same account; The " +"client with the highest priority gets the events" +msgstr "" +"优先级是当多个客户端使用åŒä¸€å¸æˆ·è¿žæŽ¥åˆ°æœåŠ¡å™¨æ—¶ï¼Œ Jabber 决定事件å“应对象的ä¾" +"æ®ã€‚" + +#: ../data/glade/account_modification_window.glade.h:32 +msgid "Proxy:" +msgstr "代ç†æœåŠ¡å™¨ï¼š" + +#: ../data/glade/account_modification_window.glade.h:33 +msgid "Resour_ce: " +msgstr "资æº(_C):" + +#: ../data/glade/account_modification_window.glade.h:34 +msgid "" +"Resource is sent to the Jabber server in order to separate the same JID in " +"two or more parts depending on the number of the clients connected in the " +"same server with the same account. So you might be connected in the same " +"account with resource 'Home' and 'Work' at the same time. The resource which " +"has the highest priority will get the events. (see below)" +msgstr "" +"资æºè¢«å‘å¾€ Jabber æœåŠ¡å™¨åŽï¼Œé€šè¿‡åŒæ—¶è¿žæŽ¥åˆ°æœåŠ¡å™¨çš„多个客户端将 JID 分æˆè‹¥å¹²éƒ¨" +"分。您å¯ä»¥åˆ©ç”¨â€œå®¶åº­â€å’Œâ€œå·¥ä½œâ€ä¸¤ä¸ªèµ„æºåŒæ—¶è¿žæŽ¥åˆ°æœåŠ¡å™¨ã€‚拥有更高优先级的资æºå¾—" +"到æœåŠ¡å™¨çš„事件å“应。" + +#: ../data/glade/account_modification_window.glade.h:35 +msgid "Save _passphrase (insecure)" +msgstr "ä¿å­˜å¯†æ–‡(_P)(ä¸å®‰å…¨)" + +#: ../data/glade/account_modification_window.glade.h:36 +msgid "Save conversation _logs for all contacts" +msgstr "ä¿å­˜ä¸Žæ‰€æœ‰è”系人的èŠå¤©è®°å½•(_L)" + +#: ../data/glade/account_modification_window.glade.h:38 +msgid "Send keep-alive packets" +msgstr "å‘é€é˜²è¶…时数æ®åŒ…" + +#: ../data/glade/account_modification_window.glade.h:39 +msgid "Synch_ronize account status with global status" +msgstr "å°†å¸æˆ·çŠ¶æ€ä¸Žå…¨å±€çŠ¶æ€åŒæ­¥(_R)" + +#: ../data/glade/account_modification_window.glade.h:40 +msgid "Use _SSL (legacy)" +msgstr "使用 SSL(_S) (优先)" + +#: ../data/glade/account_modification_window.glade.h:41 +msgid "Use custom hostname/port" +msgstr "使用自定义主机å/端å£å·" + +#: ../data/glade/account_modification_window.glade.h:42 +msgid "Use file transfer proxies" +msgstr "使用文件传输代ç†æœåŠ¡å™¨" + +#: ../data/glade/account_modification_window.glade.h:43 +#: ../data/glade/add_new_contact_window.glade.h:6 +msgid "_Jabber ID:" +msgstr "Jabber ID(_J):" + +#: ../data/glade/account_modification_window.glade.h:44 +msgid "_Name: " +msgstr "å称(_N):" + +#: ../data/glade/accounts_window.glade.h:1 +msgid "Accounts" +msgstr "å¸æˆ·" + +#: ../data/glade/accounts_window.glade.h:2 +msgid "" +"If you have 2 or more accounts and it is checked, Gajim will list all " +"contacts as if you had one account" +msgstr "" +"如果选定,当您拥有多个å¸æˆ·æ—¶ï¼ŒGajim 会在列表中列出所有è”系人,而看上去他们就" +"åƒå±žäºŽåŒä¸€ä¸ªå¸æˆ·" + +#: ../data/glade/accounts_window.glade.h:3 +msgid "_Merge accounts" +msgstr "åˆå¹¶å¸æˆ·(_M)" + +#: ../data/glade/accounts_window.glade.h:4 +msgid "_Modify" +msgstr "修改(_M)" + +#: ../data/glade/accounts_window.glade.h:5 +#: ../data/glade/remove_account_window.glade.h:4 +msgid "_Remove" +msgstr "移除(_R)" + +#: ../data/glade/add_new_contact_window.glade.h:1 +#, fuzzy +msgid "A_llow this contact to view my status" +msgstr "å…许他人看到我的状æ€" + +#: ../data/glade/add_new_contact_window.glade.h:2 +msgid "Add New Contact" +msgstr "添加è”系人" + +#: ../data/glade/add_new_contact_window.glade.h:3 +msgid "I would like to add you to my contact list." +msgstr "我想添加您到我的è”系人åå•" + +#: ../data/glade/add_new_contact_window.glade.h:4 +#, fuzzy +msgid "_Account:" +msgstr "账户" + +#: ../data/glade/add_new_contact_window.glade.h:5 +#, fuzzy +msgid "_Group:" +msgstr "群组" + +#: ../data/glade/add_new_contact_window.glade.h:7 +#, fuzzy +msgid "_Nickname:" +msgstr "昵称:" + +#: ../data/glade/add_new_contact_window.glade.h:8 +#, fuzzy +msgid "_Protocol:" +msgstr "å议:" + +#: ../data/glade/add_new_contact_window.glade.h:9 +msgid "_Subscribe" +msgstr "认è¯(_S)" + +#: ../data/glade/add_new_contact_window.glade.h:10 +#, fuzzy +msgid "_User ID:" +msgstr "用户 ID" + +#: ../data/glade/advanced_configuration_window.glade.h:1 +msgid "Description" +msgstr "æè¿°" + +#: ../data/glade/advanced_configuration_window.glade.h:2 +msgid "NOTE: You should restart gajim for some setting to take effect" +msgstr "注æ„:您必须é‡æ–°å¯åŠ¨ gajim 使设置生效" + +#: ../data/glade/advanced_configuration_window.glade.h:3 +msgid "Advanced Configuration Editor" +msgstr "高级设置编辑器" + +#: ../data/glade/advanced_configuration_window.glade.h:4 +msgid "Filter:" +msgstr "过滤器:" + +#: ../data/glade/advanced_menuitem_menu.glade.h:1 +msgid "Delete MOTD" +msgstr "删除 MOTD" + +#: ../data/glade/advanced_menuitem_menu.glade.h:2 +msgid "Deletes Message of the Day" +msgstr "删除æ¯æ—¥æ¶ˆæ¯" + +#: ../data/glade/advanced_menuitem_menu.glade.h:3 +msgid "Sends a message to currently connected users to this server" +msgstr "å‘é€æ¶ˆæ¯è‡³è¿žæŽ¥åˆ°å½“å‰æœåŠ¡å™¨çš„用户" + +#: ../data/glade/advanced_menuitem_menu.glade.h:4 +msgid "Set MOTD" +msgstr "设定 MOTD" + +#: ../data/glade/advanced_menuitem_menu.glade.h:5 +msgid "Sets Message of the Day" +msgstr "设定æ¯æ—¥æ¶ˆæ¯" + +#: ../data/glade/advanced_menuitem_menu.glade.h:6 +msgid "Show _XML Console" +msgstr "显示 XML 控制å°(_X)" + +#: ../data/glade/advanced_menuitem_menu.glade.h:7 +msgid "Update MOTD" +msgstr "æ›´æ–° MOTD" + +#: ../data/glade/advanced_menuitem_menu.glade.h:8 +msgid "Updates Message of the Day" +msgstr "æ›´æ–°æ¯æ—¥æ¶ˆæ¯" + +#: ../data/glade/advanced_menuitem_menu.glade.h:9 +msgid "_Administrator" +msgstr "管ç†å‘˜(_A)" + +#: ../data/glade/advanced_menuitem_menu.glade.h:10 +msgid "_Privacy Lists" +msgstr "" + +#: ../data/glade/advanced_menuitem_menu.glade.h:11 +msgid "_Send Server Message" +msgstr "å‘é€æœåŠ¡å™¨æ¶ˆæ¯(_S)" + +#: ../data/glade/advanced_menuitem_menu.glade.h:12 +msgid "_Send Single Message" +msgstr "å‘é€å•æ¡æ¶ˆæ¯(_S)" + +#: ../data/glade/advanced_notifications_window.glade.h:1 +msgid " a window/tab opened with that contact " +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:2 +#, fuzzy +msgid "Actions" +msgstr "应用" + +#: ../data/glade/advanced_notifications_window.glade.h:3 +#, fuzzy +msgid "Conditions" +msgstr "声音" + +#: ../data/glade/advanced_notifications_window.glade.h:4 +#: ../data/glade/preferences_window.glade.h:10 +msgid "Sounds" +msgstr "声音" + +#: ../data/glade/advanced_notifications_window.glade.h:5 +#, fuzzy +msgid "Add" +msgstr "地å€" + +#: ../data/glade/advanced_notifications_window.glade.h:6 +#, fuzzy +msgid "Advanced Actions" +msgstr "高级动作(_V)" + +#: ../data/glade/advanced_notifications_window.glade.h:7 +#, fuzzy +msgid "Advanced Notifications Control" +msgstr "高级设置编辑器" + +#: ../data/glade/advanced_notifications_window.glade.h:8 +#, fuzzy +msgid "All Status " +msgstr "状æ€" + +#: ../data/glade/advanced_notifications_window.glade.h:9 +msgid "And I " +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:10 +#, fuzzy +msgid "Away " +msgstr "离开" + +#: ../data/glade/advanced_notifications_window.glade.h:11 +#, fuzzy +msgid "Busy " +msgstr "忙碌" + +#: ../data/glade/advanced_notifications_window.glade.h:12 +msgid "Don't have " +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:13 +#, fuzzy +msgid "Down" +msgstr "下载" + +#: ../data/glade/advanced_notifications_window.glade.h:14 +msgid "Have " +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:15 +#: ../src/common/helpers.py:239 +msgid "Invisible" +msgstr "éšèº«" + +#: ../data/glade/advanced_notifications_window.glade.h:16 +#, fuzzy +msgid "Launch a command" +msgstr "命令" + +#: ../data/glade/advanced_notifications_window.glade.h:17 +#, fuzzy +msgid "List of special notifications settings" +msgstr "正在为 %s 添加特殊通告" + +#: ../data/glade/advanced_notifications_window.glade.h:18 +#, fuzzy +msgid "Not Available " +msgstr "ä¸å¯ç”¨" + +#: ../data/glade/advanced_notifications_window.glade.h:19 +#, fuzzy +msgid "Online / Free For Chat" +msgstr "自由èŠå¤©" + +#: ../data/glade/advanced_notifications_window.glade.h:20 +#, fuzzy +msgid "Play a sound" +msgstr "播放声音(_S)" + +#: ../data/glade/advanced_notifications_window.glade.h:21 +msgid "" +"Receive a Message\n" +"Contact Connected\n" +"Contact Disconnected\n" +"Contact Change Status\n" +"Group Chat Message Highlight\n" +"Group Chat Message Received\n" +"File Transfert Resquest\n" +"File Transfert Started\n" +"File Transfert Finished" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:30 +msgid "Some special(s) status..." +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:31 +msgid "Up" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:32 +msgid "When " +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:33 +msgid "_Activate Windows manager UrgencyHint to make chat taskbar to flash" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:34 +#, fuzzy +msgid "_Disable auto opening chat window" +msgstr "在群èŠçª—å£ä¸­éšè—按钮" + +#: ../data/glade/advanced_notifications_window.glade.h:35 +msgid "_Disable existing popup window" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:36 +msgid "_Disable existing sound for this event" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:37 +msgid "_Disable showing event in roster" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:38 +msgid "_Disable showing event in systray" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:39 +msgid "_Inform me with a popup window" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:40 +#, fuzzy +msgid "_Open chat window with user" +msgstr "使用带标签的å•ä¸ªèŠå¤©çª—å£(_T)" + +#: ../data/glade/advanced_notifications_window.glade.h:41 +#, fuzzy +msgid "_Show event in roster" +msgstr "åªæ˜¾ç¤ºåå•ä¸­(_R)" + +#: ../data/glade/advanced_notifications_window.glade.h:42 +#, fuzzy +msgid "_Show event in systray" +msgstr "åªæ˜¾ç¤ºåå•ä¸­(_R)" + +#: ../data/glade/advanced_notifications_window.glade.h:43 +msgid "" +"contact(s)\n" +"group(s)\n" +"everybody" +msgstr "" + +#: ../data/glade/advanced_notifications_window.glade.h:46 +#, fuzzy +msgid "for " +msgstr "端å£ï¼š" + +#: ../data/glade/advanced_notifications_window.glade.h:47 +msgid "when I'm " +msgstr "" + +#: ../data/glade/change_password_dialog.glade.h:1 +msgid "Change Password" +msgstr "æ›´æ¢å¯†ç " + +#: ../data/glade/change_password_dialog.glade.h:2 +msgid "Enter it again for confirmation:" +msgstr "å†æ¬¡è¾“入以确认:" + +#: ../data/glade/change_password_dialog.glade.h:3 +msgid "Enter new password:" +msgstr "输入新密ç " + +#: ../data/glade/change_status_message_dialog.glade.h:1 +msgid "Type your new status message" +msgstr "键入新的状æ€æ¶ˆæ¯" + +#: ../data/glade/change_status_message_dialog.glade.h:2 +msgid "Preset messages:" +msgstr "当å‰æ¶ˆæ¯ï¼š" + +#: ../data/glade/change_status_message_dialog.glade.h:3 +msgid "Save as Preset..." +msgstr "å¦å­˜ä¸º..." + +#: ../data/glade/chat_context_menu.glade.h:1 +msgid "Join _Group Chat" +msgstr "加入群èŠ(_G)" + +#: ../data/glade/chat_context_menu.glade.h:2 +#: ../data/glade/chat_control_popup_menu.glade.h:4 +#: ../data/glade/gc_occupants_menu.glade.h:2 +#: ../data/glade/roster_contact_context_menu.glade.h:8 +msgid "_Add to Roster" +msgstr "添加至åå•(_A)" + +#: ../data/glade/chat_context_menu.glade.h:3 +msgid "_Copy JID/Email Address" +msgstr "å¤åˆ¶ JID/电å­é‚®ä»¶åœ°å€(_C)" + +#: ../data/glade/chat_context_menu.glade.h:4 +msgid "_Copy Link Location" +msgstr "å¤åˆ¶è¿žæŽ¥ä½ç½®(_C)" + +#: ../data/glade/chat_context_menu.glade.h:5 +msgid "_Open Email Composer" +msgstr "打开邮件编辑器(_O)" + +#: ../data/glade/chat_context_menu.glade.h:6 +msgid "_Open Link in Browser" +msgstr "在æµè§ˆå™¨ä¸­æ‰“开连接(_O)" + +#: ../data/glade/chat_context_menu.glade.h:7 +#: ../data/glade/roster_window.glade.h:19 +#: ../data/glade/systray_context_menu.glade.h:6 +msgid "_Start Chat" +msgstr "开始èŠå¤©(_S)" + +#: ../data/glade/chat_control_popup_menu.glade.h:1 +msgid "Click to see past conversations with this contact" +msgstr "点击查看与该è”系人的历å²å¯¹è¯" + +#: ../data/glade/chat_control_popup_menu.glade.h:2 +#: ../data/glade/roster_contact_context_menu.glade.h:6 +msgid "Send _File" +msgstr "å‘é€æ–‡ä»¶(_F)" + +#: ../data/glade/chat_control_popup_menu.glade.h:3 +msgid "Toggle Open_PGP Encryption" +msgstr "绑定 OpenPGP 加密 (_P)" + +#: ../data/glade/chat_control_popup_menu.glade.h:5 +#: ../data/glade/gc_control_popup_menu.glade.h:6 +msgid "_Compact View Alt+C" +msgstr "紧凑模å¼(_C) Alt+C" + +#: ../data/glade/chat_control_popup_menu.glade.h:6 +#: ../data/glade/gc_control_popup_menu.glade.h:7 +#: ../data/glade/gc_occupants_menu.glade.h:5 +#: ../data/glade/roster_contact_context_menu.glade.h:11 +msgid "_History" +msgstr "历å²(_H)" + +#: ../data/glade/data_form_window.glade.h:1 +msgid "Room Configuration" +msgstr "房间设置:" + +#: ../data/glade/edit_groups_dialog.glade.h:1 +msgid "Edit Groups" +msgstr "编辑群组" + +#: ../data/glade/filetransfers.glade.h:1 +msgid "A list of active, completed and stopped file transfers" +msgstr "文件å‘é€ã€å®Œæˆå’Œä¸­æ­¢çš„清å•" + +#: ../data/glade/filetransfers.glade.h:2 +msgid "Cancel file transfer" +msgstr "å–消文件传输" + +#: ../data/glade/filetransfers.glade.h:3 +msgid "Cancels the selected file transfer" +msgstr "å–消指定文件传输" + +#: ../data/glade/filetransfers.glade.h:4 +msgid "Cancels the selected file transfer and removes incomplete file" +msgstr "å–消指定文件传输并删除未完æˆæ–‡ä»¶" + +#: ../data/glade/filetransfers.glade.h:5 +msgid "Clean _up" +msgstr "清除(_U)" + +#: ../data/glade/filetransfers.glade.h:6 +msgid "File Transfers" +msgstr "文件传输" + +#: ../data/glade/filetransfers.glade.h:7 +msgid "Hides the window" +msgstr "éšè—该窗å£" + +#: ../data/glade/filetransfers.glade.h:8 +msgid "Remove file transfer from the list." +msgstr "从列表移除文件传输" + +#: ../data/glade/filetransfers.glade.h:9 +msgid "Removes completed, canceled and failed file transfers from the list" +msgstr "从列表移除已完æˆï¼Œå·²å–消和失败的文件传输" + +#: ../data/glade/filetransfers.glade.h:10 +msgid "Shows a list of file transfers between you and other" +msgstr "显示文件传输列表" + +#: ../data/glade/filetransfers.glade.h:11 +msgid "" +"This action removes single file transfer from the list. If the transfer is " +"active, it is first stopped and then removed" +msgstr "该æ“作会从列表中移除文件传输。如果该传输处于活动状æ€ï¼Œå°†è¢«å…ˆä¸­æ­¢åŽç§»é™¤" + +#: ../data/glade/filetransfers.glade.h:12 +msgid "When a file transfer is complete show a popup notification" +msgstr "传输完æˆåŽæ˜¾ç¤ºå¼¹å‡ºæ°”泡æ示" + +#: ../data/glade/filetransfers.glade.h:13 ../src/filetransfers_window.py:753 +msgid "_Continue" +msgstr "继续(_C)" + +#: ../data/glade/filetransfers.glade.h:14 +msgid "_Notify me when a file transfer is complete" +msgstr "文件传输完æˆæ—¶æ醒我(_N)" + +#: ../data/glade/filetransfers.glade.h:15 ../src/filetransfers_window.py:190 +msgid "_Open Containing Folder" +msgstr "打开文件夹(_O)" + +#: ../data/glade/filetransfers.glade.h:16 +msgid "_Pause" +msgstr "æš‚åœ(_P)" + +#: ../data/glade/filetransfers.glade.h:17 +msgid "file transfers list" +msgstr "文件传输列表" + +#: ../data/glade/gajim_themes_window.glade.h:1 +msgid "Chatstate Tab Colors" +msgstr "èŠå¤©æ ‡ç­¾é¢œè‰²" + +#: ../data/glade/gajim_themes_window.glade.h:2 +msgid "" +"Account\n" +"Group\n" +"Contact\n" +"Banner" +msgstr "" +"账户\n" +"组\n" +"è”系人\n" +"标语" + +#: ../data/glade/gajim_themes_window.glade.h:6 +#: ../data/glade/privacy_list_edit_window.glade.h:4 ../src/config.py:326 +msgid "Active" +msgstr "活动" + +#: ../data/glade/gajim_themes_window.glade.h:7 +msgid "Bold" +msgstr "粗体" + +#: ../data/glade/gajim_themes_window.glade.h:8 +msgid "Composing" +msgstr "正在编写" + +#: ../data/glade/gajim_themes_window.glade.h:9 +msgid "Font style:" +msgstr "字体风格:" + +#: ../data/glade/gajim_themes_window.glade.h:10 +msgid "Gajim Themes Customization" +msgstr "Gajim 主题自定义" + +#: ../data/glade/gajim_themes_window.glade.h:11 +msgid "Gone" +msgstr "已离开" + +#: ../data/glade/gajim_themes_window.glade.h:12 +msgid "Inactive" +msgstr "未活动的" + +#: ../data/glade/gajim_themes_window.glade.h:13 +msgid "Italic" +msgstr "斜体" + +#: ../data/glade/gajim_themes_window.glade.h:14 +msgid "" +"MUC\n" +"Messages" +msgstr "" +"MUC\n" +"消æ¯" + +#: ../data/glade/gajim_themes_window.glade.h:16 +msgid "" +"MUC Directed\n" +"Messages" +msgstr "" +"MUC 定å‘çš„\n" +"消æ¯" + +#: ../data/glade/gajim_themes_window.glade.h:18 ../src/tooltips.py:667 +msgid "Paused" +msgstr "已暂åœ" + +#: ../data/glade/gajim_themes_window.glade.h:19 +msgid "Text _color:" +msgstr "文本颜色(_C):" + +#: ../data/glade/gajim_themes_window.glade.h:20 +msgid "Text _font:" +msgstr "文本字体(_F):" + +#: ../data/glade/gajim_themes_window.glade.h:21 +msgid "_Background:" +msgstr "背景(_B)" + +#: ../data/glade/gc_control_popup_menu.glade.h:1 +msgid "Change _Nickname" +msgstr "æ›´æ¢æ˜µç§°(_N)" + +#: ../data/glade/gc_control_popup_menu.glade.h:2 +msgid "Change _Subject" +msgstr "æ›´æ¢ä¸»é¢˜(_S)" + +#: ../data/glade/gc_control_popup_menu.glade.h:3 +msgid "Click to see past conversation in this room" +msgstr "点击查看本房间的历å²å¯¹è¯" + +#: ../data/glade/gc_control_popup_menu.glade.h:4 +msgid "Configure _Room" +msgstr "设置房间(_R)" + +#: ../data/glade/gc_control_popup_menu.glade.h:5 +msgid "_Bookmark This Room" +msgstr "将本房间加入书签(_B)" + +#: ../data/glade/gc_occupants_menu.glade.h:1 +msgid "Mo_derator" +msgstr "仲è£äºº(_D)" + +#: ../data/glade/gc_occupants_menu.glade.h:3 +msgid "_Admin" +msgstr "管ç†(_A)" + +#: ../data/glade/gc_occupants_menu.glade.h:4 +msgid "_Ban" +msgstr "å°ç¦(_B)" + +#: ../data/glade/gc_occupants_menu.glade.h:6 +msgid "_Kick" +msgstr "踢除(_K)" + +#: ../data/glade/gc_occupants_menu.glade.h:7 +msgid "_Member" +msgstr "æˆå‘˜(_M)" + +#: ../data/glade/gc_occupants_menu.glade.h:8 +msgid "_Occupant Actions" +msgstr "房主动作(_O)" + +#: ../data/glade/gc_occupants_menu.glade.h:9 +msgid "_Owner" +msgstr "拥有人(_O)" + +#: ../data/glade/gc_occupants_menu.glade.h:10 +msgid "_Send Private Message" +msgstr "å‘é€ç§èŠæ¶ˆæ¯(_S)" + +#: ../data/glade/gc_occupants_menu.glade.h:11 +msgid "_Voice" +msgstr "语音(_V)" + +#: ../data/glade/history_manager.glade.h:1 +msgid "" +"Welcome to Gajim History Logs Manager\n" +"\n" +"You can select logs from the left and/or search database from below.\n" +"\n" +"WARNING:\n" +"If you plan to do massive deletions, please make sure Gajim is not running. " +"Generally avoid deletions with contacts you currently chat with." +msgstr "" +"欢迎使用 Gajim 历å²è®°å½•ç®¡ç†å™¨\n" +"\n" +"You can select logs from the left and/or search database from below.\n" +"\n" +"WARNING:\n" +"If you plan to do massive deletions, please make sure Gajim is not running. " +"Generally avoid deletions with contacts you currently chat with." + +#: ../data/glade/history_manager.glade.h:7 +msgid "Delete" +msgstr "删除" + +#: ../data/glade/history_manager.glade.h:8 +msgid "Export" +msgstr "输出" + +#: ../data/glade/history_manager.glade.h:9 +msgid "Gajim History Logs Manager" +msgstr "Gajim 历å²è®°å½•ç®¡ç†å™¨" + +#: ../data/glade/history_manager.glade.h:10 +msgid "_Search Database" +msgstr "æœç´¢æ•°æ®åº“(_S)" + +#: ../data/glade/history_window.glade.h:1 +msgid "Build custom query" +msgstr "建立自定义查询" + +#: ../data/glade/history_window.glade.h:2 +msgid "Conversation History" +msgstr "对è¯åŽ†å²" + +#: ../data/glade/history_window.glade.h:3 +msgid "Query Builder..." +msgstr "查询生æˆå™¨..." + +#: ../data/glade/history_window.glade.h:4 +msgid "Search" +msgstr "查找" + +#: ../data/glade/history_window.glade.h:5 +msgid "_Search" +msgstr "查找(_S)" + +#: ../data/glade/invitation_received_dialog.glade.h:1 +msgid "Accept" +msgstr "接å—" + +#: ../data/glade/invitation_received_dialog.glade.h:2 +#: ../data/glade/privacy_list_edit_window.glade.h:8 +msgid "Deny" +msgstr "æ‹’ç»" + +#: ../data/glade/invitation_received_dialog.glade.h:3 +msgid "Invitation Received" +msgstr "收到邀请" + +#: ../data/glade/join_groupchat_window.glade.h:1 ../src/dialogs.py:941 +msgid "Join Group Chat" +msgstr "加入群èŠ" + +#: ../data/glade/join_groupchat_window.glade.h:2 +#: ../data/glade/manage_bookmarks_window.glade.h:4 +#: ../data/glade/vcard_information_window.glade.h:28 +msgid "Nickname:" +msgstr "昵称:" + +#: ../data/glade/join_groupchat_window.glade.h:3 +#: ../data/glade/manage_bookmarks_window.glade.h:5 +msgid "Password:" +msgstr "密ç ï¼š" + +#: ../data/glade/join_groupchat_window.glade.h:4 +msgid "Recently:" +msgstr "最近:" + +#: ../data/glade/join_groupchat_window.glade.h:5 +#: ../data/glade/manage_bookmarks_window.glade.h:7 +msgid "Room:" +msgstr "房间:" + +#: ../data/glade/join_groupchat_window.glade.h:6 +#: ../data/glade/manage_bookmarks_window.glade.h:8 +msgid "Server:" +msgstr "æœåŠ¡å™¨ï¼š" + +#: ../data/glade/join_groupchat_window.glade.h:7 ../src/disco.py:1145 +#: ../src/disco.py:1507 +msgid "_Join" +msgstr "加入(_J)" + +#: ../data/glade/manage_accounts_window.glade.h:1 +msgid "Manage Accounts" +msgstr "å¸æˆ·ç®¡ç†" + +#: ../data/glade/manage_bookmarks_window.glade.h:1 +msgid "Auto join" +msgstr "自动加入" + +#: ../data/glade/manage_bookmarks_window.glade.h:2 +msgid "If checked, Gajim will join this group chat on startup" +msgstr "如果选定,Gajim 会在å¯åŠ¨æ—¶åŠ å…¥èŠå¤©ç¾¤ç»„" + +#: ../data/glade/manage_bookmarks_window.glade.h:3 +msgid "Manage Bookmarks" +msgstr "书签管ç†" + +#: ../data/glade/manage_bookmarks_window.glade.h:6 +#, fuzzy +msgid "Print status:" +msgstr "显示时间:" + +#: ../data/glade/manage_bookmarks_window.glade.h:9 +msgid "Title:" +msgstr "标题:" + +#: ../data/glade/manage_proxies_window.glade.h:1 +msgid "Properties" +msgstr "属性" + +#: ../data/glade/manage_proxies_window.glade.h:2 +msgid "Settings" +msgstr "设置" + +#: ../data/glade/manage_proxies_window.glade.h:3 +msgid "HTTP Connect" +msgstr "HTTP 连接" + +#: ../data/glade/manage_proxies_window.glade.h:4 +msgid "Manage Proxy Profiles" +msgstr "代ç†æœåŠ¡å™¨æ¨¡æ¿ç®¡ç†" + +#: ../data/glade/manage_proxies_window.glade.h:5 +#: ../data/glade/vcard_information_window.glade.h:27 +msgid "Name:" +msgstr "å称:" + +#: ../data/glade/manage_proxies_window.glade.h:7 +msgid "Type:" +msgstr "类型:" + +#: ../data/glade/manage_proxies_window.glade.h:8 +msgid "Use authentication" +msgstr "使用验è¯" + +#: ../data/glade/message_window.glade.h:1 +msgid "Click to insert an emoticon (Alt+M)" +msgstr "点这里æ’入表情符 (Alt+M)" + +#: ../data/glade/message_window.glade.h:2 ../src/chat_control.py:966 +msgid "OpenPGP Encryption" +msgstr "OpenPGP 加密" + +#. Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector) +#: ../data/glade/message_window.glade.h:4 +#: ../data/glade/roster_window.glade.h:9 +msgid "_Actions" +msgstr "动作(_A)" + +#. Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector) +#: ../data/glade/message_window.glade.h:6 +#: ../data/glade/xml_console_window.glade.h:11 +#: ../src/filetransfers_window.py:249 +msgid "_Send" +msgstr "å‘é€(_S)" + +#: ../data/glade/passphrase_dialog.glade.h:1 +msgid "Passphrase" +msgstr "密文" + +#: ../data/glade/preferences_window.glade.h:1 +msgid "Advanced Configuration Editor" +msgstr "高级设置编辑器" + +#: ../data/glade/preferences_window.glade.h:2 +msgid "Applications" +msgstr "应用" + +#. a header for custom browser/client/file manager. so translate sth like: Custom Settings +#: ../data/glade/preferences_window.glade.h:4 +msgid "Custom" +msgstr "自定义" + +#: ../data/glade/preferences_window.glade.h:5 +msgid "Format of a line" +msgstr "行格å¼" + +#: ../data/glade/preferences_window.glade.h:6 +#, fuzzy +msgid "GMail Options" +msgstr "应用" + +#: ../data/glade/preferences_window.glade.h:7 +msgid "Interface Customization" +msgstr "ç•Œé¢è®¢åˆ¶" + +#: ../data/glade/preferences_window.glade.h:9 +msgid "Preset Status Messages" +msgstr "预设状æ€æ¶ˆæ¯" + +#: ../data/glade/preferences_window.glade.h:11 +msgid "Visual Notifications" +msgstr "å¯è§†åŒ–æ示" + +#: ../data/glade/preferences_window.glade.h:12 +msgid "A_fter nickname:" +msgstr "在昵称åŽï¼š(_F)" + +#: ../data/glade/preferences_window.glade.h:13 +msgid "Advanced" +msgstr "高级" + +#: ../data/glade/preferences_window.glade.h:14 +msgid "" +"All chat states\n" +"Composing only\n" +"Disabled" +msgstr "" +"所有èŠå¤©çŠ¶æ€\n" +"仅在书写\n" +"ç¦ç”¨" + +#: ../data/glade/preferences_window.glade.h:17 +msgid "Allow _OS information to be sent" +msgstr "å…许å‘é€æ“作系统信æ¯(_O)" + +#: ../data/glade/preferences_window.glade.h:18 +msgid "Allow popup/notifications when I'm _away/na/busy/invisible" +msgstr "å…许æ示,当我离开/ä¸å¯ç”¨/å¿™/éšèº«" + +#: ../data/glade/preferences_window.glade.h:19 +msgid "Also known as iChat style" +msgstr "也就是 i èŠå¤©é£Žæ ¼" + +#: ../data/glade/preferences_window.glade.h:20 +msgid "Ask status message when I:" +msgstr "询问状æ€æ¶ˆæ¯ï¼Œå½“我:" + +#: ../data/glade/preferences_window.glade.h:21 +msgid "Auto _away after:" +msgstr "自动离开(_A):" + +#: ../data/glade/preferences_window.glade.h:22 +msgid "Auto _not available after:" +msgstr "自动ä¸å¯ç”¨(_N):" + +#: ../data/glade/preferences_window.glade.h:23 +msgid "" +"Autodetect on every Gajim startup\n" +"Always use GNOME default applications\n" +"Always use KDE default applications\n" +"Custom" +msgstr "" +"æ¯æ¬¡ Gajim å¯åŠ¨æ—¶è‡ªåŠ¨æŽ¢æµ‹\n" +"总是使用 GNOME 默认应用\n" +"总是使用 KDE 默认应用\n" +"自定义" + +#: ../data/glade/preferences_window.glade.h:27 +msgid "B_efore nickname:" +msgstr "在昵称å‰ï¼š(_E)" + +#: ../data/glade/preferences_window.glade.h:28 ../src/chat_control.py:718 +msgid "Chat" +msgstr "èŠå¤©" + +#: ../data/glade/preferences_window.glade.h:29 +msgid "Chat state noti_fications:" +msgstr "èŠå¤©çŠ¶æ€æŒ‡ç¤º(_F):" + +#: ../data/glade/preferences_window.glade.h:30 +msgid "" +"Check this option, only if someone you don't have in the roster spams/annoys " +"you. Use with caution, cause it blocks all messages from any contact that is " +"not in the roster" +msgstr "" +"当被ä¸åœ¨åå•ä¸­çš„è”系人骚扰时,检查此选项。它会å±è”½æ‰€æœ‰åå•ä¹‹å¤–è”系人的消æ¯ï¼Œ" +"请谨慎使用。" + +#: ../data/glade/preferences_window.glade.h:31 +msgid "Default status _iconset:" +msgstr "默认状æ€å›¾æ ‡è®¾ç½®:(_I)" + +#: ../data/glade/preferences_window.glade.h:32 +msgid "Display _extra email details" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:33 +msgid "Display a_vatars of contacts in roster" +msgstr "显示åå•ä¸­çš„è”系人明细(_V)" + +#: ../data/glade/preferences_window.glade.h:34 +msgid "Display status _messages of contacts in roster" +msgstr "显示åå•ä¸­è”系人的状æ€æ¶ˆæ¯(_M)" + +#: ../data/glade/preferences_window.glade.h:35 +msgid "E_very 5 minutes" +msgstr "æ¯ 5 分钟(_V)" + +#: ../data/glade/preferences_window.glade.h:36 +msgid "Emoticons:" +msgstr "表情符:" + +#: ../data/glade/preferences_window.glade.h:37 +msgid "Events" +msgstr "事件" + +#: ../data/glade/preferences_window.glade.h:38 +msgid "" +"Gajim can send and receive meta-information related to a conversation you " +"may have with a contact. Here you can specify which chatstates you want to " +"send to the other party." +msgstr "" +"Gajim å¯ä»¥æ”¶å‘您与è”系人所进行谈è¯çš„相关信æ¯ã€‚此处您å¯æ˜¯æŒ‡å®šå‘给第三方的角" +"色。" + +#: ../data/glade/preferences_window.glade.h:39 +msgid "" +"Gajim will automatically show new events by poping up the relative window" +msgstr "Gajim 会自动弹出相关窗å£ä»¥æ˜¾ç¤ºæ–°çš„事件" + +#: ../data/glade/preferences_window.glade.h:40 +msgid "" +"Gajim will notify you for new events via a popup in the bottom right of the " +"screen" +msgstr "Gajim 会通过å±å¹•å³ä¸‹æ–¹çš„弹出气泡æ示新消æ¯" + +#: ../data/glade/preferences_window.glade.h:41 +msgid "" +"Gajim will notify you via a popup window in the bottom right of the screen " +"about contacts that just signed in" +msgstr "Gajim 会通过å±å¹•å³ä¸‹æ–¹çš„弹出气泡æ示刚刚登录的è”系人" + +#: ../data/glade/preferences_window.glade.h:42 +msgid "" +"Gajim will notify you via a popup window in the bottom right of the screen " +"about contacts that just signed out" +msgstr "Gajim 会通过å±å¹•å³ä¸‹æ–¹çš„弹出气泡æ示刚刚离开的è”系人" + +#: ../data/glade/preferences_window.glade.h:43 +msgid "" +"Gajim will only change the icon of the contact that triggered the new event" +msgstr "Gajim 仅会改å˜è§¦å‘了新事件的è”系人图标" + +#: ../data/glade/preferences_window.glade.h:45 +msgid "" +"If checked, Gajim will display avatars of contacts in roster window and in " +"group chats" +msgstr "如果选定,Gajim 会在åå•å’Œç¾¤èŠçª—å£ä¸­æ˜¾ç¤ºåå•ä¸­çš„è”系人明细" + +#: ../data/glade/preferences_window.glade.h:46 +msgid "" +"If checked, Gajim will display status messages of contacts under the contact " +"name in roster window and in group chats" +msgstr "如果选定,Gajim 会在åå•å’Œç¾¤èŠçª—å£ä¸­è”系人å下方显示è”系人状æ€æ¶ˆæ¯" + +#: ../data/glade/preferences_window.glade.h:47 +msgid "" +"If checked, Gajim will remember the roster and chat window positions in the " +"screen and the sizes of them next time you run it" +msgstr "如果选定,Gajim 会在下次è¿è¡Œæ—¶ä½¿ç”¨æœ¬æ¬¡è®¾å®šçš„åå•åŠèŠå¤©çª—å£çš„ä½ç½®å’Œå¤§å°" + +#: ../data/glade/preferences_window.glade.h:48 +msgid "" +"If checked, Gajim will use protocol-specific status icons. (eg. A contact " +"from MSN will have the equivalent msn icon for status online, away, busy, " +"etc...)" +msgstr "" +"如果选定,Gajim 会以å议特定方å¼æ˜¾ç¤ºçŠ¶æ€å›¾æ ‡ã€‚(例如,MSN è”系人会以 MSN 相åŒ" +"图标方å¼æ˜¾ç¤ºï¼Œä»¥è¡¨ç¤ºåœ¨çº¿ï¼Œç¦»å¼€ï¼Œå¿™ï¼Œç­‰ç­‰...)" + +#: ../data/glade/preferences_window.glade.h:49 +msgid "" +"If not disabled, Gajim will replace ascii smilies like ':)' with equivalent " +"animated or static graphical emoticons" +msgstr "如果ä¸ç¦ç”¨ï¼ŒGajim 会用相应的图片表情符替代字符表情,例如“:)â€" + +#: ../data/glade/preferences_window.glade.h:50 +msgid "Ma_nage..." +msgstr "管ç†...(_N)" + +#: ../data/glade/preferences_window.glade.h:51 +msgid "" +"Never\n" +"Always\n" +"Per account\n" +"Per type" +msgstr "" +"从ä¸\n" +"总是\n" +"æ¯ä¸€ä¸ªå¸å·\n" +"æ¯ç§ç±»åž‹" + +#: ../data/glade/preferences_window.glade.h:55 +msgid "Notify me about contacts that: " +msgstr "æ醒我关于è”系人:" + +#: ../data/glade/preferences_window.glade.h:56 +#, fuzzy +msgid "Notify on new _GMail email" +msgstr "å‘é€æ–°çš„ Gmail 邮件进行通知(_G)" + +#: ../data/glade/preferences_window.glade.h:57 +msgid "On every _message" +msgstr "对于æ¯æ¡æ¶ˆæ¯(_M)" + +#: ../data/glade/preferences_window.glade.h:58 +msgid "One message _window:" +msgstr "消æ¯çª—å£ï¼š(_W)" + +#: ../data/glade/preferences_window.glade.h:59 +msgid "Play _sounds" +msgstr "播放声音(_S)" + +#: ../data/glade/preferences_window.glade.h:60 +msgid "Preferences" +msgstr "å‚æ•°" + +#: ../data/glade/preferences_window.glade.h:61 +msgid "Print time:" +msgstr "显示时间:" + +#: ../data/glade/preferences_window.glade.h:62 +msgid "Save _position and size for roster and chat windows" +msgstr "ä¿å­˜åå•å’ŒèŠå¤©çª—å£çš„ä½ç½®åŠå¤§å°(_P)" + +#: ../data/glade/preferences_window.glade.h:63 +msgid "Show only in _roster" +msgstr "åªæ˜¾ç¤ºåå•ä¸­(_R)" + +#: ../data/glade/preferences_window.glade.h:64 +msgid "Sign _in" +msgstr "登录(I)" + +#: ../data/glade/preferences_window.glade.h:65 +msgid "Sign _out" +msgstr "退出登录" + +#: ../data/glade/preferences_window.glade.h:66 +msgid "Status" +msgstr "状æ€" + +#: ../data/glade/preferences_window.glade.h:67 +msgid "T_heme:" +msgstr "主题:(_H)" + +#: ../data/glade/preferences_window.glade.h:68 +msgid "The auto away status message" +msgstr "自动离开状æ€æ¶ˆæ¯" + +#: ../data/glade/preferences_window.glade.h:69 +msgid "The auto not available status message" +msgstr "自动ä¸å¯ç”¨çŠ¶æ€æ¶ˆæ¯" + +#: ../data/glade/preferences_window.glade.h:70 +msgid "Use _transports iconsets" +msgstr "使用代ç†çš„图标设定(_T)" + +#: ../data/glade/preferences_window.glade.h:71 +msgid "Use system _default" +msgstr "" + +#: ../data/glade/preferences_window.glade.h:72 +msgid "Use t_rayicon (aka. notification area icon)" +msgstr "使用托盘图标(aka. æ示区域图表)(_R)" + +#: ../data/glade/preferences_window.glade.h:73 +msgid "" +"When a new event (message, file transfer request etc..) is received, the " +"following methods may be used to inform you about it. Please note that " +"events about new messages only occur if it is a new message from a contact " +"you are not already chatting with" +msgstr "" +"下列方å¼å¯ç”¨æ¥æ示您收到新的事件(消æ¯ï¼Œæ–‡ä»¶ä¼ è¾“请求等)。请注æ„,åªæœ‰æœªå’Œæ‚¨" +"进行èŠå¤©çš„用户å‘é€çš„新消æ¯æ‰ä¼šè§¦å‘新消æ¯äº‹ä»¶" + +#: ../data/glade/preferences_window.glade.h:74 +msgid "When new event is received" +msgstr "当新事件å‘生时" + +#: ../data/glade/preferences_window.glade.h:75 +#, fuzzy +msgid "_Advanced Notifications Control..." +msgstr "高级设置编辑器" + +#: ../data/glade/preferences_window.glade.h:76 +msgid "_After time:" +msgstr "在该时间åŽï¼š(_A)" + +#: ../data/glade/preferences_window.glade.h:77 +msgid "_Before time:" +msgstr "在该时间å‰ï¼š(_B)" + +#: ../data/glade/preferences_window.glade.h:78 +msgid "_Browser:" +msgstr "æµè§ˆå™¨(_B):" + +#: ../data/glade/preferences_window.glade.h:79 +msgid "_File manager:" +msgstr "文件管ç†å™¨ï¼š(_F)" + +#: ../data/glade/preferences_window.glade.h:80 +msgid "_Font:" +msgstr "å­—å·ï¼š(_F)" + +#: ../data/glade/preferences_window.glade.h:81 +msgid "_Highlight misspelled words" +msgstr "拼写检查(_H)" + +#: ../data/glade/preferences_window.glade.h:82 +msgid "_Ignore events from contacts not in the roster" +msgstr "忽略åå•ä»¥å¤–çš„è”系人触å‘的事件(_I)" + +#: ../data/glade/preferences_window.glade.h:83 +msgid "_Incoming message:" +msgstr "抵达的消æ¯ï¼š(_I)" + +#: ../data/glade/preferences_window.glade.h:84 +msgid "_Log status changes of contacts" +msgstr "记录è”系人状æ€å˜åŒ–(_L)" + +#: ../data/glade/preferences_window.glade.h:85 +msgid "_Mail client:" +msgstr "邮件客户端(_M):" + +#: ../data/glade/preferences_window.glade.h:86 +msgid "_Never" +msgstr "从ä¸(_N)" + +#: ../data/glade/preferences_window.glade.h:87 +msgid "_Notify me about it" +msgstr "æ醒我(_N)" + +#: ../data/glade/preferences_window.glade.h:88 +msgid "_Open..." +msgstr "打开...(_O)" + +#: ../data/glade/preferences_window.glade.h:89 +msgid "_Outgoing message:" +msgstr "å°†è¦é€å‡ºçš„消æ¯ï¼š(_O)" + +#: ../data/glade/preferences_window.glade.h:90 +msgid "_Player:" +msgstr "å‚与者(_P)" + +#: ../data/glade/preferences_window.glade.h:91 +msgid "_Pop it up" +msgstr "弹出(_P)" + +#: ../data/glade/preferences_window.glade.h:92 +msgid "_Reset to Default Colors" +msgstr "æ¢å¤ä¸ºé»˜è®¤é¢œè‰²è®¾ç½®(_R)" + +#: ../data/glade/preferences_window.glade.h:93 +msgid "_Sort contacts by status" +msgstr "按状æ€åˆ†ç±»è”系人(_S)" + +#: ../data/glade/preferences_window.glade.h:94 +msgid "_Status message:" +msgstr "状æ€æ¶ˆæ¯ï¼š(_S)" + +#: ../data/glade/preferences_window.glade.h:95 +msgid "_URL:" +msgstr "URL:(_U)" + +#: ../data/glade/preferences_window.glade.h:96 +msgid "minutes" +msgstr "分钟" + +#: ../data/glade/privacy_list_edit_window.glade.h:1 +msgid "Add / Edit a rule" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:2 +#, fuzzy +msgid "List of rules" +msgstr "行格å¼" + +#: ../data/glade/privacy_list_edit_window.glade.h:3 +msgid "Privacy List" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:5 ../src/config.py:2281 +msgid "All" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:6 +msgid "Allow" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:7 +#, fuzzy +msgid "Default" +msgstr "删除" + +#: ../data/glade/privacy_list_edit_window.glade.h:9 +#, fuzzy +msgid "JabberID" +msgstr "Jabber ID" + +#: ../data/glade/privacy_list_edit_window.glade.h:10 +#, fuzzy +msgid "Order:" +msgstr "æœåŠ¡å™¨ï¼š" + +#: ../data/glade/privacy_list_edit_window.glade.h:11 ../src/dialogs.py:1626 +#, fuzzy +msgid "Privacy List" +msgstr "å°ç¦åå•" + +#: ../data/glade/privacy_list_edit_window.glade.h:12 +#, fuzzy +msgid "all by subscription" +msgstr "认è¯(_S)" + +#: ../data/glade/privacy_list_edit_window.glade.h:13 +#, fuzzy +msgid "all in the group" +msgstr "群组内" + +#: ../data/glade/privacy_list_edit_window.glade.h:14 +msgid "" +"none\n" +"both\n" +"from\n" +"to" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:18 +#, fuzzy +msgid "to send me messages" +msgstr "å‘é€æ¶ˆæ¯" + +#: ../data/glade/privacy_list_edit_window.glade.h:19 +msgid "to send me queries" +msgstr "" + +#: ../data/glade/privacy_list_edit_window.glade.h:20 +#, fuzzy +msgid "to send me status" +msgstr "è¦æ±‚查看他人的状æ€" + +#: ../data/glade/privacy_list_edit_window.glade.h:21 +#, fuzzy +msgid "to view my status" +msgstr "å…许他人看到我的状æ€" + +#: ../data/glade/privacy_lists_first_window.glade.h:1 +msgid "Create your own Privacy Lists" +msgstr "" + +#: ../data/glade/privacy_lists_first_window.glade.h:2 +msgid "Server-based Privacy Lists" +msgstr "" + +#: ../data/glade/remove_account_window.glade.h:1 +msgid "What do you want to do?" +msgstr "想åšä»€ä¹ˆï¼Ÿ" + +#: ../data/glade/remove_account_window.glade.h:2 +msgid "Remove account _only from Gajim" +msgstr "仅从 Gajim 移除å¸æˆ·(_O)" + +#: ../data/glade/remove_account_window.glade.h:3 +msgid "Remove account from Gajim and from _server" +msgstr "åŒæ—¶ä»Ž Gajim å’ŒæœåŠ¡å™¨ç§»é™¤å¸æˆ·(_S)" + +#: ../data/glade/roster_contact_context_menu.glade.h:1 +#, fuzzy +msgid "A_sk to see his/her status" +msgstr "è¦æ±‚查看他人的状æ€" + +#: ../data/glade/roster_contact_context_menu.glade.h:2 +msgid "Add Special _Notification" +msgstr "添加特殊æ示(_N)" + +#: ../data/glade/roster_contact_context_menu.glade.h:3 +msgid "Assign Open_PGP Key" +msgstr "指定 Open_PGP 密钥" + +#: ../data/glade/roster_contact_context_menu.glade.h:4 +msgid "Edit _Groups" +msgstr "编辑群组" + +#: ../data/glade/roster_contact_context_menu.glade.h:5 +#: ../data/glade/systray_context_menu.glade.h:1 +msgid "Send Single _Message" +msgstr "å‘é€å•æ¡æ¶ˆæ¯(_M)" + +#: ../data/glade/roster_contact_context_menu.glade.h:7 +msgid "Start _Chat" +msgstr "开始群èŠ(_C)" + +#: ../data/glade/roster_contact_context_menu.glade.h:9 +#, fuzzy +msgid "_Allow him/her to see my status" +msgstr "å…许他人看到我的状æ€" + +#: ../data/glade/roster_contact_context_menu.glade.h:10 +#, fuzzy +msgid "_Forbid him/her to see my status" +msgstr "ç¦æ­¢ä»–人看到我的状æ€" + +#: ../data/glade/roster_contact_context_menu.glade.h:12 +#: ../src/roster_window.py:1482 +msgid "_Remove from Roster" +msgstr "从åå•ä¸­ç§»é™¤(_R)" + +#: ../data/glade/roster_contact_context_menu.glade.h:13 +#: ../src/roster_window.py:1470 +msgid "_Rename" +msgstr "é‡å‘½å(_R)" + +#: ../data/glade/roster_contact_context_menu.glade.h:14 +msgid "_Subscription" +msgstr "认è¯(_S)" + +#: ../data/glade/roster_window.glade.h:1 +msgid "A_ccounts" +msgstr "账户(_A)" + +#: ../data/glade/roster_window.glade.h:2 +msgid "Add _Contact" +msgstr "添加è”系人(_C)" + +#: ../data/glade/roster_window.glade.h:3 +msgid "File _Transfers" +msgstr "文件传输(_T)" + +#: ../data/glade/roster_window.glade.h:4 +msgid "Frequently Asked Questions (online)" +msgstr "被频ç¹æ问的问题 (在线)" + +#: ../data/glade/roster_window.glade.h:6 +msgid "Help online" +msgstr "在线帮助" + +#: ../data/glade/roster_window.glade.h:7 +msgid "Profile, Avatar" +msgstr "模æ¿ï¼Œæ˜Žç»†" + +#: ../data/glade/roster_window.glade.h:8 +msgid "Show _Offline Contacts" +msgstr "显示离线è”系人" + +#: ../data/glade/roster_window.glade.h:11 +msgid "_Contents" +msgstr "内容(_C)" + +#: ../data/glade/roster_window.glade.h:12 +msgid "_Discover Services" +msgstr "å‘掘æœåŠ¡(_D)" + +#: ../data/glade/roster_window.glade.h:13 ../src/disco.py:1252 +#: ../src/roster_window.py:1462 +msgid "_Edit" +msgstr "编辑(_E)" + +#: ../data/glade/roster_window.glade.h:14 +msgid "_FAQ" +msgstr "常è§é—®é¢˜(_A)" + +#: ../data/glade/roster_window.glade.h:16 +msgid "_Help" +msgstr "帮助(_H)" + +#: ../data/glade/roster_window.glade.h:17 +msgid "_Preferences" +msgstr "首选项(_P)" + +#: ../data/glade/roster_window.glade.h:18 +msgid "_Quit" +msgstr "退出(_Q)" + +#: ../data/glade/service_discovery_window.glade.h:1 +msgid "G_o" +msgstr "到(_O)" + +#: ../data/glade/service_discovery_window.glade.h:2 +msgid "_Address:" +msgstr "地å€(_A):" + +#: ../data/glade/service_discovery_window.glade.h:3 +msgid "_Filter:" +msgstr "过滤器(_F):" + +#: ../data/glade/service_registration_window.glade.h:1 +msgid "Register to" +msgstr "注册到" + +#: ../data/glade/service_registration_window.glade.h:2 +msgid "_Cancel" +msgstr "å–消(_C)" + +#: ../data/glade/service_registration_window.glade.h:3 +msgid "_OK" +msgstr "确定(_O)" + +#: ../data/glade/single_message_window.glade.h:1 +msgid "0" +msgstr "0" + +#: ../data/glade/single_message_window.glade.h:2 +msgid "From:" +msgstr "从:" + +#: ../data/glade/single_message_window.glade.h:3 +msgid "Reply to this message" +msgstr "回å¤æœ¬æ¡æ¶ˆæ¯" + +#: ../data/glade/single_message_window.glade.h:4 +msgid "Sen_d" +msgstr "å‘é€(_D)" + +#: ../data/glade/single_message_window.glade.h:5 +msgid "Send message" +msgstr "å‘é€æ¶ˆæ¯" + +#: ../data/glade/single_message_window.glade.h:6 +msgid "Send message and close window" +msgstr "å‘é€æ¶ˆæ¯å¹¶å…³é—­çª—å£" + +#: ../data/glade/single_message_window.glade.h:7 +msgid "Subject:" +msgstr "主题:" + +#: ../data/glade/single_message_window.glade.h:8 +msgid "To:" +msgstr "到:" + +#: ../data/glade/single_message_window.glade.h:9 +msgid "_Reply" +msgstr "回å¤(_R)" + +#: ../data/glade/single_message_window.glade.h:10 +msgid "_Send & Close" +msgstr "å‘é€å¹¶å…³é—­(_S)" + +#: ../data/glade/subscription_request_window.glade.h:1 +msgid "Authorize contact so he can know when you're connected" +msgstr "å‘è”系人授æƒï¼Œä½¿ä»–知é“您是å¦è¿žæŽ¥" + +#: ../data/glade/subscription_request_window.glade.h:2 +msgid "Contact _Info" +msgstr "è”系人信æ¯(_I)" + +#: ../data/glade/subscription_request_window.glade.h:3 +msgid "Deny authorization from contact so he cannot know when you're connected" +msgstr "æ‹’ç»å‘è”系人授æƒã€‚他人将无法知é“您是å¦åœ¨çº¿" + +#: ../data/glade/subscription_request_window.glade.h:4 +msgid "Subscription Request" +msgstr "认è¯è¯·æ±‚" + +#: ../data/glade/subscription_request_window.glade.h:5 +msgid "_Authorize" +msgstr "授æƒ(_A)" + +#: ../data/glade/subscription_request_window.glade.h:6 +msgid "_Deny" +msgstr "æ‹’ç»(_D)" + +#: ../data/glade/systray_context_menu.glade.h:2 +msgid "Show All Pending _Events" +msgstr "显示所有未决事件" + +#: ../data/glade/systray_context_menu.glade.h:3 +msgid "Show _Roster" +msgstr "显示åå•(_R)" + +#: ../data/glade/systray_context_menu.glade.h:4 +msgid "Sta_tus" +msgstr "状æ€(_T)" + +#. "About" is the text of a tab of vcard window +#: ../data/glade/vcard_information_window.glade.h:2 +msgid "About" +msgstr "关于" + +#: ../data/glade/vcard_information_window.glade.h:3 +msgid "Address" +msgstr "地å€" + +#: ../data/glade/vcard_information_window.glade.h:4 +msgid "Ask:" +msgstr "请求:" + +#: ../data/glade/vcard_information_window.glade.h:5 +msgid "Birthday:" +msgstr "生日" + +#: ../data/glade/vcard_information_window.glade.h:6 +msgid "City:" +msgstr "城市:" + +#: ../data/glade/vcard_information_window.glade.h:7 +msgid "Client:" +msgstr "客户端:" + +#: ../data/glade/vcard_information_window.glade.h:8 +msgid "Company:" +msgstr "å…¬å¸ï¼š" + +#: ../data/glade/vcard_information_window.glade.h:9 +msgid "Contact Information" +msgstr "è”系人信æ¯" + +#: ../data/glade/vcard_information_window.glade.h:10 +msgid "Country:" +msgstr "国家:" + +#: ../data/glade/vcard_information_window.glade.h:11 +msgid "Department:" +msgstr "部门:" + +#: ../data/glade/vcard_information_window.glade.h:12 +msgid "E-Mail:" +msgstr "E-Mail :" + +#: ../data/glade/vcard_information_window.glade.h:13 +msgid "Extra Address:" +msgstr "附加地å€ï¼š" + +#. Family Name +#: ../data/glade/vcard_information_window.glade.h:15 +msgid "Family:" +msgstr "家æ—:" + +#: ../data/glade/vcard_information_window.glade.h:16 +msgid "Format: YYYY-MM-DD" +msgstr "æ ¼å¼ï¼š YYYY-MM-DD" + +#. Given Name +#: ../data/glade/vcard_information_window.glade.h:19 +msgid "Given:" +msgstr "æ•™å:" + +#: ../data/glade/vcard_information_window.glade.h:20 +msgid "Homepage:" +msgstr "主页:" + +#: ../data/glade/vcard_information_window.glade.h:21 +msgid "Jabber" +msgstr "Jabber" + +#: ../data/glade/vcard_information_window.glade.h:22 +msgid "Jabber ID:" +msgstr "Jabber ID" + +#: ../data/glade/vcard_information_window.glade.h:23 +msgid "Location" +msgstr "定ä½" + +#. Middle Name +#: ../data/glade/vcard_information_window.glade.h:25 +msgid "Middle:" +msgstr "中间:" + +#: ../data/glade/vcard_information_window.glade.h:26 +msgid "More" +msgstr "更多" + +#: ../data/glade/vcard_information_window.glade.h:29 +msgid "OS:" +msgstr "æ“作系统:" + +#: ../data/glade/vcard_information_window.glade.h:30 +msgid "Phone No.:" +msgstr "电è¯å·ç ï¼š" + +#: ../data/glade/vcard_information_window.glade.h:31 +msgid "Position:" +msgstr "ä½ç½®ï¼š" + +#: ../data/glade/vcard_information_window.glade.h:32 +msgid "Postal Code:" +msgstr "邮政编ç ï¼š" + +#. Prefix in Name +#: ../data/glade/vcard_information_window.glade.h:34 +msgid "Prefix:" +msgstr "å‰ç¼€ï¼š" + +#: ../data/glade/vcard_information_window.glade.h:35 +msgid "Resource:" +msgstr "资æºï¼š" + +#: ../data/glade/vcard_information_window.glade.h:36 +msgid "Role:" +msgstr "角色:" + +#: ../data/glade/vcard_information_window.glade.h:37 +msgid "Set _Avatar" +msgstr "详细设置" + +#: ../data/glade/vcard_information_window.glade.h:38 +msgid "State:" +msgstr "州:" + +#: ../data/glade/vcard_information_window.glade.h:39 +msgid "Status:" +msgstr "状æ€ï¼š" + +#: ../data/glade/vcard_information_window.glade.h:40 +msgid "Street:" +msgstr "è¡—é“:" + +#: ../data/glade/vcard_information_window.glade.h:41 +msgid "Subscription:" +msgstr "认è¯ï¼š" + +#. Suffix in Name +#: ../data/glade/vcard_information_window.glade.h:43 +msgid "Suffix:" +msgstr "åŽç¼€ï¼š" + +#: ../data/glade/vcard_information_window.glade.h:44 +msgid "Work" +msgstr "工作" + +#: ../data/glade/vcard_information_window.glade.h:45 +msgid "_Log conversation history" +msgstr "记录èŠå¤©åŽ†å²(_L)" + +#: ../data/glade/vcard_information_window.glade.h:46 +msgid "_Publish" +msgstr "å‘布(_P)" + +#: ../data/glade/vcard_information_window.glade.h:47 +msgid "_Retrieve" +msgstr "找回(_R)" + +#: ../data/glade/xml_console_window.glade.h:1 +msgid "Jabber Traffic" +msgstr "Jabber 通信" + +#: ../data/glade/xml_console_window.glade.h:2 +msgid "XML Input" +msgstr "XML 输入" + +#. XML Console enable checkbutton +#: ../data/glade/xml_console_window.glade.h:4 +msgid "Enable" +msgstr "å¯ç”¨" + +#. Info/Query make the "IQ" initials. So translate like this 'YourLang/YourLang (Info/Query)'. Thanks (it's a tooltip so width is not a problem) +#: ../data/glade/xml_console_window.glade.h:6 +msgid "Info/Query" +msgstr "ä¿¡æ¯/查询" + +#. Info/Query: all(?) jabber xml start with Whom do you want to ban?\n" "\n" @@ -362,11 +2377,11 @@ msgstr "" "想åšå°ç¦è°ï¼Ÿ\n" "\n" -#: ../src/config.py:2023 +#: ../src/config.py:2062 msgid "Adding Member..." msgstr "正在添加æˆå‘˜..." -#: ../src/config.py:2024 +#: ../src/config.py:2063 msgid "" "Whom do you want to make a member?\n" "\n" @@ -374,11 +2389,11 @@ msgstr "" "想è¦å°†è°åŠ ä¸ºæˆå‘˜ï¼Ÿ\n" "\n" -#: ../src/config.py:2026 +#: ../src/config.py:2065 msgid "Adding Owner..." msgstr "添加房主..." -#: ../src/config.py:2027 +#: ../src/config.py:2066 msgid "" "Whom do you want to make a owner?\n" "\n" @@ -386,11 +2401,11 @@ msgstr "" "想è¦å°†è°åŠ ä¸ºæˆ¿ä¸»ï¼Ÿ\n" "\n" -#: ../src/config.py:2029 +#: ../src/config.py:2068 msgid "Adding Administrator..." msgstr "添加管ç†å‘˜..." -#: ../src/config.py:2030 +#: ../src/config.py:2069 msgid "" "Whom do you want to make an administrator?\n" "\n" @@ -398,7 +2413,7 @@ msgstr "" "想è¦æŒ‡å®šè°ä¸ºç®¡ç†å‘˜ï¼Ÿ\n" "\n" -#: ../src/config.py:2031 +#: ../src/config.py:2070 msgid "" "Can be one of the following:\n" "1. user@domain/resource (only that resource matches).\n" @@ -414,83 +2429,87 @@ msgstr "" "4. domain (该域本身匹é…, 例如任何 user@domain,\n" "domain/resource, 或者地å€åŒ…å«ä¸€ä¸ªå­åŸŸ." -#: ../src/config.py:2127 +#: ../src/config.py:2166 #, python-format msgid "Removing %s account" msgstr "移除账户 %s" -#: ../src/config.py:2144 ../src/roster_window.py:1859 +#: ../src/config.py:2183 ../src/roster_window.py:1857 msgid "Password Required" msgstr "需è¦å¯†ç " -#: ../src/config.py:2145 ../src/roster_window.py:1860 +#: ../src/config.py:2184 ../src/roster_window.py:1858 #, python-format msgid "Enter your password for account %s" msgstr "输入å¸æˆ· %s 的密ç " -#: ../src/config.py:2146 ../src/roster_window.py:1861 +#: ../src/config.py:2185 ../src/roster_window.py:1859 msgid "Save password" msgstr "ä¿å­˜å¯†ç " -#: ../src/config.py:2159 +#: ../src/config.py:2198 #, python-format msgid "Account \"%s\" is connected to the server" msgstr "账户 “%s†已连接到æœåŠ¡å™¨" -#: ../src/config.py:2160 +#: ../src/config.py:2199 msgid "If you remove it, the connection will be lost." msgstr "如果移除,将会丢失连接" -#: ../src/config.py:2295 +#: ../src/config.py:2282 +msgid "Enter and leave only" +msgstr "" + +#: ../src/config.py:2352 msgid "New Room" msgstr "新房间" -#: ../src/config.py:2326 +#: ../src/config.py:2383 msgid "This bookmark has invalid data" msgstr "此书签å«æ— æ•ˆæ•°æ®" -#: ../src/config.py:2327 +#: ../src/config.py:2384 msgid "" "Please be sure to fill out server and room fields or remove this bookmark." msgstr "请确认填写æœåŠ¡å™¨ä¸Žæˆ¿é—´å­—段或移除此书签。" -#: ../src/config.py:2564 +#: ../src/config.py:2638 msgid "Invalid username" msgstr "无效用户å" -#: ../src/config.py:2565 +#: ../src/config.py:2639 msgid "You must provide a username to configure this account." msgstr "å¿…é¡»æ供用户åæ¥é…置此账户。" -#: ../src/config.py:2574 ../src/dialogs.py:1036 +#: ../src/config.py:2648 ../src/dialogs.py:1118 msgid "Invalid password" msgstr "无效密ç " -#: ../src/config.py:2575 +#: ../src/config.py:2649 msgid "You must enter a password for the new account." msgstr "必须为新账户输入密ç ã€‚" -#: ../src/config.py:2579 ../src/dialogs.py:1041 +#: ../src/config.py:2653 ../src/dialogs.py:1123 msgid "Passwords do not match" msgstr "密ç ä¸ç¬¦" -#: ../src/config.py:2580 ../src/dialogs.py:1042 +#: ../src/config.py:2654 ../src/dialogs.py:1124 msgid "The passwords typed in both fields must be identical." msgstr "两次密ç è¾“å…¥ä¸ä¸€è‡´ã€‚" -#: ../src/config.py:2599 +#: ../src/config.py:2673 msgid "Duplicate Jabber ID" msgstr "å¤åˆ¶ Jabber ID" -#: ../src/config.py:2600 +#: ../src/config.py:2674 msgid "This account is already configured in Gajim." msgstr "æ­¤å¸å·å·²åœ¨ Gajim 中é…置过。" -#: ../src/config.py:2617 +#: ../src/config.py:2691 msgid "Account has been added successfully" msgstr "æˆåŠŸæ·»åŠ è´¦æˆ·" -#: ../src/config.py:2618 ../src/config.py:2651 +#: ../src/config.py:2692 ../src/config.py:2725 msgid "" "You can set advanced account options by pressing Advanced button, or later " "by clicking in Accounts menuitem under Edit menu from the main window." @@ -498,583 +2517,659 @@ msgstr "" "您å¯ä»¥é€šè¿‡ç‚¹å‡»é«˜çº§æŒ‰é’®è¿›è¡Œé«˜çº§è®¾ç½®ï¼Œæˆ–ç¨åŽç‚¹å‡»ä¸»çª—å£ä¸­ç¼–辑èœå•ä¸‹çš„账户èœå•" "项。" -#: ../src/config.py:2650 +#: ../src/config.py:2724 msgid "Your new account has been created successfully" msgstr "注册新账户æˆåŠŸ" -#: ../src/config.py:2666 +#: ../src/config.py:2740 msgid "An error occured during account creation" msgstr "创建å¸æˆ·è¿‡ç¨‹ä¸­å‘生错误" -#: ../src/config.py:2723 +#: ../src/config.py:2797 msgid "Account name is in use" msgstr "å¸æˆ·åå·²ç»è¢«ä½¿ç”¨" -#: ../src/config.py:2724 +#: ../src/config.py:2798 msgid "You already have an account using this name." msgstr "有åŒå账户。" -#: ../src/conversation_textview.py:182 +#: ../src/conversation_textview.py:205 msgid "" "Text below this line is what has been said since the last time you paid " "attention to this group chat" msgstr "以下文字是您上次å‘言至今的群èŠå†…容" -#: ../src/conversation_textview.py:239 +#: ../src/conversation_textview.py:263 #, python-format msgid "Actions for \"%s\"" msgstr "“%sâ€çš„动作" -#: ../src/conversation_textview.py:251 +#: ../src/conversation_textview.py:275 msgid "Read _Wikipedia Article" msgstr "è¯»å– Wikipedia 文章(_W)" -#: ../src/conversation_textview.py:255 +#: ../src/conversation_textview.py:280 msgid "Look it up in _Dictionary" msgstr "从字典(_D)中æœç´¢" #. we must have %s in the url if not WIKTIONARY -#: ../src/conversation_textview.py:270 +#: ../src/conversation_textview.py:296 #, python-format msgid "Dictionary URL is missing an \"%s\" and it is not WIKTIONARY" msgstr "字典地å€ç¼ºå°‘ “%s†并且它ä¸æ˜¯ WIKTIONARY" #. we must have %s in the url -#: ../src/conversation_textview.py:281 +#: ../src/conversation_textview.py:308 #, python-format msgid "Web Search URL is missing an \"%s\"" msgstr "网站æœç´¢åœ°å€ç¼ºå°‘ “%sâ€" -#: ../src/conversation_textview.py:284 +#: ../src/conversation_textview.py:311 msgid "Web _Search for it" msgstr "用网页æœç´¢(_S)" -#: ../src/conversation_textview.py:574 +#: ../src/conversation_textview.py:607 msgid "Yesterday" msgstr "昨天" #. the number is >= 2 #. %i is day in year (1-365), %d (1-31) we want %i -#: ../src/conversation_textview.py:578 +#: ../src/conversation_textview.py:611 #, python-format msgid "%i days ago" msgstr "%i 天å‰" #. if we have subject, show it too! -#: ../src/conversation_textview.py:634 +#: ../src/conversation_textview.py:686 #, python-format msgid "Subject: %s\n" msgstr "主题:%s\n" #. only say that to non Windows users -#: ../src/dbus_support.py:34 +#: ../src/dbus_support.py:32 msgid "D-Bus python bindings are missing in this computer" msgstr "本机缺少 D-Bus python 绑定" -#: ../src/dbus_support.py:35 +#: ../src/dbus_support.py:33 msgid "D-Bus capabilities of Gajim cannot be used" msgstr "Gajim çš„ D-Bus 兼容性无法使用" -#: ../src/dialogs.py:64 +#: ../src/dialogs.py:55 #, python-format msgid "Contact's name: %s" msgstr "è”系人å称:%s" -#: ../src/dialogs.py:66 +#: ../src/dialogs.py:57 #, python-format msgid "JID: %s" msgstr "JID: %s" -#: ../src/dialogs.py:169 +#. Group name +#. In group boolean +#: ../src/dialogs.py:173 msgid "Group" msgstr "群组" -#: ../src/dialogs.py:176 +#: ../src/dialogs.py:180 msgid "In the group" msgstr "群组内" -#: ../src/dialogs.py:226 +#: ../src/dialogs.py:230 msgid "KeyID" msgstr "KeyID" -#: ../src/dialogs.py:229 +#: ../src/dialogs.py:233 msgid "Contact name" msgstr "è”系人å" -#: ../src/dialogs.py:263 +#: ../src/dialogs.py:266 #, python-format msgid "%s Status Message" msgstr " %s 状æ€æ¶ˆæ¯" -#: ../src/dialogs.py:265 +#: ../src/dialogs.py:268 msgid "Status Message" msgstr "状æ€æ¶ˆæ¯" -#: ../src/dialogs.py:340 +#: ../src/dialogs.py:343 msgid "Save as Preset Status Message" msgstr "ä¿å­˜ä¸ºé¢„设状æ€æ¶ˆæ¯" -#: ../src/dialogs.py:341 +#: ../src/dialogs.py:344 msgid "Please type a name for this status message" msgstr "请为该状æ€ä¿¡æ¯é”®å…¥å称:" -#: ../src/dialogs.py:369 +#: ../src/dialogs.py:391 #, python-format msgid "Please fill in the data of the contact you want to add in account %s" msgstr "请为账户 %s 填入您想增加的è”系人数æ®" -#: ../src/dialogs.py:371 +#: ../src/dialogs.py:393 msgid "Please fill in the data of the contact you want to add" msgstr "请填入您想增加的è”系人数æ®" -#. the user can be in mutiple groups, see in all of them -#: ../src/dialogs.py:380 ../src/disco.py:118 ../src/disco.py:119 -#: ../src/disco.py:1258 ../src/roster_window.py:214 -#: ../src/roster_window.py:275 ../src/roster_window.py:310 -#: ../src/roster_window.py:330 ../src/roster_window.py:354 -#: ../src/roster_window.py:2940 ../src/roster_window.py:2942 -#: ../src/systray.py:291 ../src/common/helpers.py:42 +#: ../src/dialogs.py:403 ../src/disco.py:109 ../src/disco.py:110 +#: ../src/disco.py:1249 ../src/roster_window.py:207 +#: ../src/roster_window.py:273 ../src/roster_window.py:309 +#: ../src/roster_window.py:329 ../src/roster_window.py:353 +#: ../src/roster_window.py:2973 ../src/roster_window.py:2975 +#: ../src/common/helpers.py:39 msgid "Transports" msgstr "代ç†" -#: ../src/dialogs.py:452 ../src/dialogs.py:458 +#: ../src/dialogs.py:493 ../src/dialogs.py:499 msgid "Invalid User ID" msgstr "无效的用户 ID" -#: ../src/dialogs.py:459 +#: ../src/dialogs.py:500 msgid "The user ID must not contain a resource." msgstr "该用户 ID ä¸å¯åŒ…å«ä»»ä½•æº" -#: ../src/dialogs.py:466 +#: ../src/dialogs.py:513 msgid "Contact already in roster" msgstr "è”系人已ç»åœ¨åå•ä¸­" -#: ../src/dialogs.py:467 +#: ../src/dialogs.py:514 msgid "This contact is already listed in your roster." msgstr "æ­¤è”系人已在åå•ä¸­ã€‚" -#: ../src/dialogs.py:528 +#: ../src/dialogs.py:576 msgid "A GTK+ jabber client" msgstr "一个 GTK+ çš„ Jabber 客户端" -#: ../src/dialogs.py:539 +#: ../src/dialogs.py:577 +msgid "GTK+ Version:" +msgstr "" + +#: ../src/dialogs.py:578 +msgid "PyGTK Version:" +msgstr "" + +#: ../src/dialogs.py:586 +#, fuzzy +msgid "Current Developers:" +msgstr "既往开å‘作者:" + +#: ../src/dialogs.py:588 msgid "Past Developers:" msgstr "既往开å‘作者:" -#: ../src/dialogs.py:543 +#: ../src/dialogs.py:592 msgid "THANKS:" msgstr "感谢:" -#. remove one english setence +#. remove one english sentence #. and add it manually as translatable -#: ../src/dialogs.py:550 +#: ../src/dialogs.py:598 msgid "Last but not least, we would like to thank all the package maintainers." msgstr "最åŽä½†ä¸æ˜¯æœ€é‡è¦çš„,我们è¦ç‰¹åˆ«æ„Ÿè°¢æ‰€æœ‰çš„软件维护人员。" #. here you write your name in the form Name FamilyName -#: ../src/dialogs.py:564 +#: ../src/dialogs.py:612 msgid "translator-credits" msgstr "" "wwld \n" "kangkang " -#: ../src/dialogs.py:826 +#: ../src/dialogs.py:738 +#, fuzzy, python-format +msgid "Unable to bind to port %s." +msgstr "无法加入房间" + +#: ../src/dialogs.py:739 +msgid "" +"Maybe you have another running instance of Gajim. File Transfer will be " +"canceled." +msgstr "" + +#: ../src/dialogs.py:881 #, python-format msgid "Subscription request for account %s from %s" msgstr "该认è¯è¦æ±‚æ¥è‡ªå¸æˆ· %s ç”± %s å‘é€" -#: ../src/dialogs.py:829 +#: ../src/dialogs.py:884 #, python-format msgid "Subscription request from %s" msgstr "æ¥è‡ª %s 的认è¯è¯·æ±‚" -#: ../src/dialogs.py:872 +#: ../src/dialogs.py:926 msgid "You can not join a group chat unless you are connected." msgstr "请在加入群èŠå‰å…ˆè¿žæŽ¥åˆ°æœåŠ¡å™¨ã€‚" -#: ../src/dialogs.py:885 +#: ../src/dialogs.py:939 #, python-format msgid "Join Group Chat with account %s" msgstr "使用账户 %s 加入群èŠ" -#: ../src/dialogs.py:887 ../src/gtkgui.glade.h:177 -msgid "Join Group Chat" -msgstr "加入群èŠ" - -#: ../src/dialogs.py:976 +#: ../src/dialogs.py:1030 msgid "Invalid room or server name" msgstr "无效房间或æœåŠ¡å™¨å" -#: ../src/dialogs.py:977 +#: ../src/dialogs.py:1031 msgid "The room name or server name has not allowed characters." msgstr "房间å或æœåŠ¡å™¨å包å«äº†éžæ³•å­—符。" -#: ../src/dialogs.py:996 +#: ../src/dialogs.py:1050 #, python-format msgid "Start Chat with account %s" msgstr "使用账户 %s 加入群èŠ" -#: ../src/dialogs.py:998 +#: ../src/dialogs.py:1052 msgid "Start Chat" msgstr "开始èŠå¤©" -#: ../src/dialogs.py:999 +#: ../src/dialogs.py:1053 +#, fuzzy msgid "" -"Fill in the contact ID of the contact you would like\n" +"Fill in the jid, or nick of the contact you would like\n" "to send a chat message to:" msgstr "" "填写您想交谈的\n" "è”系人 ID:" #. if offline or connecting -#: ../src/dialogs.py:1007 ../src/dialogs.py:1330 ../src/dialogs.py:1450 +#: ../src/dialogs.py:1078 ../src/dialogs.py:1427 ../src/dialogs.py:1551 msgid "Connection not available" msgstr "连接ä¸å¯ç”¨" -#: ../src/dialogs.py:1008 ../src/dialogs.py:1331 ../src/dialogs.py:1451 +#: ../src/dialogs.py:1079 ../src/dialogs.py:1428 ../src/dialogs.py:1552 #, python-format msgid "Please make sure you are connected with \"%s\"." msgstr "请确认已连接到 “%sâ€ã€‚" -#: ../src/dialogs.py:1018 +#: ../src/dialogs.py:1088 ../src/dialogs.py:1091 +#, fuzzy +msgid "Invalid JID" +msgstr "无效的 Jabber ID" + +#: ../src/dialogs.py:1091 +#, python-format +msgid "Unable to parse \"%s\"." +msgstr "" + +#: ../src/dialogs.py:1100 msgid "Without a connection, you can not change your password." msgstr "连接åŽæ‰å¯æ›´æ”¹å¯†ç ã€‚" -#: ../src/dialogs.py:1037 +#: ../src/dialogs.py:1119 msgid "You must enter a password." msgstr "此处必须输入密ç " #. img to display #. default value -#: ../src/dialogs.py:1083 ../src/gajim.py:443 ../src/notify.py:129 +#: ../src/dialogs.py:1165 ../src/notify.py:126 ../src/notify.py:268 msgid "Contact Signed In" msgstr "è”系人登录" -#: ../src/dialogs.py:1085 ../src/gajim.py:474 ../src/notify.py:131 +#: ../src/dialogs.py:1167 ../src/notify.py:134 ../src/notify.py:270 msgid "Contact Signed Out" msgstr "è”系人退出登录" #. chat message -#: ../src/dialogs.py:1087 ../src/gajim.py:609 ../src/notify.py:133 +#: ../src/dialogs.py:1169 ../src/notify.py:154 ../src/notify.py:272 msgid "New Message" msgstr "新消æ¯" #. single message -#: ../src/dialogs.py:1087 ../src/gajim.py:603 ../src/notify.py:133 +#: ../src/dialogs.py:1169 ../src/notify.py:138 ../src/notify.py:272 msgid "New Single Message" msgstr "新消æ¯" -#: ../src/dialogs.py:1088 ../src/gajim.py:586 ../src/notify.py:134 +#. private message +#: ../src/dialogs.py:1170 ../src/notify.py:145 ../src/notify.py:273 msgid "New Private Message" msgstr "新的个人消æ¯" -#: ../src/dialogs.py:1088 ../src/gajim.py:1049 ../src/notify.py:142 +#: ../src/dialogs.py:1170 ../src/gajim.py:1044 ../src/notify.py:281 msgid "New E-mail" msgstr "新的电å­é‚®ä»¶" -#: ../src/dialogs.py:1090 ../src/gajim.py:1187 ../src/notify.py:136 +#: ../src/dialogs.py:1172 ../src/gajim.py:1187 ../src/notify.py:275 msgid "File Transfer Request" msgstr "文件传输请求" -#: ../src/dialogs.py:1092 ../src/gajim.py:1035 ../src/gajim.py:1164 -#: ../src/notify.py:138 +#: ../src/dialogs.py:1174 ../src/gajim.py:1022 ../src/gajim.py:1164 +#: ../src/notify.py:277 msgid "File Transfer Error" msgstr "文件传输错误" -#: ../src/dialogs.py:1094 ../src/gajim.py:1222 ../src/gajim.py:1244 -#: ../src/gajim.py:1261 ../src/notify.py:140 +#: ../src/dialogs.py:1176 ../src/gajim.py:1222 ../src/gajim.py:1244 +#: ../src/gajim.py:1261 ../src/notify.py:279 msgid "File Transfer Completed" msgstr "文件传输完æˆ" -#: ../src/dialogs.py:1095 ../src/gajim.py:1225 ../src/notify.py:140 +#: ../src/dialogs.py:1177 ../src/gajim.py:1225 ../src/notify.py:279 msgid "File Transfer Stopped" msgstr "文件传输已åœæ­¢" -#: ../src/dialogs.py:1097 ../src/gajim.py:953 ../src/notify.py:144 +#: ../src/dialogs.py:1179 ../src/gajim.py:920 ../src/notify.py:283 msgid "Groupchat Invitation" msgstr "群èŠé‚€è¯·" +#: ../src/dialogs.py:1181 ../src/notify.py:118 ../src/notify.py:285 +#, fuzzy +msgid "Contact Changed Status" +msgstr "è”系人退出登录" + #. FIXME: for Received with should become 'in' -#: ../src/dialogs.py:1262 +#: ../src/dialogs.py:1359 #, python-format msgid "Single Message with account %s" msgstr "账户 %s 的消æ¯" -#: ../src/dialogs.py:1264 +#: ../src/dialogs.py:1361 msgid "Single Message" msgstr "å•æ¡æ¶ˆæ¯" #. prepare UI for Sending -#: ../src/dialogs.py:1267 +#: ../src/dialogs.py:1364 #, python-format msgid "Send %s" msgstr "å‘é€ %s" #. prepare UI for Receiving -#: ../src/dialogs.py:1290 +#: ../src/dialogs.py:1387 #, python-format msgid "Received %s" msgstr "已接收 %s" #. we create a new blank window to send and we preset RE: and to jid -#: ../src/dialogs.py:1355 +#: ../src/dialogs.py:1454 #, python-format msgid "RE: %s" msgstr "回å¤ï¼š %s" -#: ../src/dialogs.py:1356 +#: ../src/dialogs.py:1455 #, python-format msgid "%s wrote:\n" msgstr "%s 写é“:\n" -#: ../src/dialogs.py:1400 +#: ../src/dialogs.py:1499 #, python-format msgid "XML Console for %s" msgstr "账户 %s çš„ XML 控制å°" -#: ../src/dialogs.py:1402 +#: ../src/dialogs.py:1501 msgid "XML Console" msgstr " XML 控制å°" +#: ../src/dialogs.py:1620 +#, python-format +msgid "Privacy List %s" +msgstr "" + +#: ../src/dialogs.py:1624 +#, python-format +msgid "Privacy List for %s" +msgstr "" + +#: ../src/dialogs.py:1716 +#, fuzzy +msgid "Edit a rule" +msgstr "行格å¼" + +#: ../src/dialogs.py:1801 +#, fuzzy +msgid "Add a rule" +msgstr "行格å¼" + +#: ../src/dialogs.py:1897 +#, python-format +msgid "Privacy Lists for %s" +msgstr "" + +#: ../src/dialogs.py:1899 +#, fuzzy +msgid "Privacy Lists" +msgstr "ç§èŠ" + #. FIXME: use nickname instead of contact_jid -#: ../src/dialogs.py:1488 +#: ../src/dialogs.py:1988 #, python-format msgid "%(contact_jid)s has invited you to %(room_jid)s room" msgstr "%(contact_jid)s 邀请您到 %(room_jid)s 房间" #. only if not None and not '' -#: ../src/dialogs.py:1494 +#: ../src/dialogs.py:1994 #, python-format msgid "Comment: %s" msgstr "注释: %s" -#: ../src/dialogs.py:1554 +#: ../src/dialogs.py:2054 msgid "Choose Sound" msgstr "选择声音" -#: ../src/dialogs.py:1564 ../src/dialogs.py:1607 +#: ../src/dialogs.py:2064 ../src/dialogs.py:2107 msgid "All files" msgstr "全部文件" -#: ../src/dialogs.py:1569 +#: ../src/dialogs.py:2069 msgid "Wav Sounds" msgstr "Wav声音" -#: ../src/dialogs.py:1597 +#: ../src/dialogs.py:2097 msgid "Choose Image" msgstr "选择形象" -#: ../src/dialogs.py:1612 +#: ../src/dialogs.py:2112 msgid "Images" msgstr "形象" -#: ../src/dialogs.py:1658 +#: ../src/dialogs.py:2157 #, python-format msgid "When %s becomes:" msgstr "当 %s å˜ä¸ºï¼š" -#: ../src/dialogs.py:1660 +#: ../src/dialogs.py:2159 #, python-format msgid "Adding Special Notification for %s" msgstr "正在为 %s 添加特殊通告" -#: ../src/disco.py:117 +#: ../src/dialogs.py:2232 +#, fuzzy +msgid "Condition" +msgstr "连接" + +#: ../src/disco.py:108 msgid "Others" msgstr "其他" #. conference is a category for listing mostly groupchats in service discovery -#: ../src/disco.py:121 +#: ../src/disco.py:112 msgid "Conference" msgstr "会议" -#: ../src/disco.py:420 +#: ../src/disco.py:411 msgid "Without a connection, you can not browse available services" msgstr "连接åŽæ‰å¯æµè§ˆå¯ç”¨æœåŠ¡" -#: ../src/disco.py:499 +#: ../src/disco.py:490 #, python-format msgid "Service Discovery using account %s" msgstr "正在使用å¸å· %s æ¥å‘掘æœåŠ¡" -#: ../src/disco.py:500 +#: ../src/disco.py:491 msgid "Service Discovery" msgstr "æœç´¢æœåŠ¡" -#: ../src/disco.py:637 +#: ../src/disco.py:628 msgid "The service could not be found" msgstr "找ä¸åˆ°è¯¥æœåŠ¡" -#: ../src/disco.py:638 +#: ../src/disco.py:629 msgid "" "There is no service at the address you entered, or it is not responding. " "Check the address and try again." msgstr "此地å€æ²¡æœ‰æœåŠ¡æˆ–无应答。请检查地å€åŽé‡è¯•ã€‚" -#: ../src/disco.py:642 ../src/disco.py:924 +#: ../src/disco.py:633 ../src/disco.py:915 msgid "The service is not browsable" msgstr "该æœåŠ¡æ— æ³•æµè§ˆ" -#: ../src/disco.py:643 +#: ../src/disco.py:634 msgid "This type of service does not contain any items to browse." msgstr "æ­¤æœåŠ¡æ²¡æœ‰é¡¹ç›®å¯æµè§ˆã€‚" -#: ../src/disco.py:723 +#: ../src/disco.py:714 #, python-format msgid "Browsing %s using account %s" msgstr "æµè§ˆ %s 在å¸æˆ· %s 上" -#: ../src/disco.py:762 +#: ../src/disco.py:753 msgid "_Browse" msgstr "æµè§ˆ(_B)" -#: ../src/disco.py:925 +#: ../src/disco.py:916 msgid "This service does not contain any items to browse." msgstr "æ­¤æœåŠ¡ä¸åŒ…å«ä»»ä½•é¡¹ç›®å¯æµè§ˆã€‚" -#: ../src/disco.py:1146 ../src/disco.py:1263 +#: ../src/disco.py:1137 ../src/disco.py:1254 msgid "Re_gister" msgstr "注册(_G)" -#: ../src/disco.py:1154 ../src/disco.py:1516 ../src/gtkgui.glade.h:350 -msgid "_Join" -msgstr "加入(_J)" - -#: ../src/disco.py:1261 ../src/gtkgui.glade.h:334 ../src/roster_window.py:1462 -msgid "_Edit" -msgstr "编辑(_E)" - -#: ../src/disco.py:1300 +#: ../src/disco.py:1291 #, python-format msgid "Scanning %d / %d.." msgstr "已扫æ %d / %d.." #. Users column -#: ../src/disco.py:1482 +#: ../src/disco.py:1473 msgid "Users" msgstr "用户" #. Description column -#: ../src/disco.py:1489 +#: ../src/disco.py:1480 msgid "Description" msgstr "æè¿°" -#: ../src/filetransfers_window.py:81 +#: ../src/filetransfers_window.py:72 msgid "File" msgstr "文件" -#: ../src/filetransfers_window.py:96 +#: ../src/filetransfers_window.py:87 msgid "Time" msgstr "时间" -#: ../src/filetransfers_window.py:108 +#: ../src/filetransfers_window.py:99 msgid "Progress" msgstr "进程" -#: ../src/filetransfers_window.py:176 ../src/filetransfers_window.py:238 +#: ../src/filetransfers_window.py:163 ../src/filetransfers_window.py:223 #, python-format msgid "Filename: %s" msgstr "文件å: %s" -#: ../src/filetransfers_window.py:178 ../src/filetransfers_window.py:308 +#: ../src/filetransfers_window.py:164 ../src/filetransfers_window.py:291 #, python-format msgid "Size: %s" msgstr "大å°ï¼š %s" #. You is a reply of who sent a file #. You is a reply of who received a file -#: ../src/filetransfers_window.py:187 ../src/filetransfers_window.py:197 -#: ../src/history_manager.py:452 +#: ../src/filetransfers_window.py:173 ../src/filetransfers_window.py:183 +#: ../src/history_manager.py:454 msgid "You" msgstr "您" -#: ../src/filetransfers_window.py:188 ../src/filetransfers_window.py:240 +#: ../src/filetransfers_window.py:174 ../src/filetransfers_window.py:224 #, python-format msgid "Sender: %s" msgstr "å‘é€è€…: %s" -#: ../src/filetransfers_window.py:189 ../src/filetransfers_window.py:555 -#: ../src/tooltips.py:617 +#: ../src/filetransfers_window.py:175 ../src/filetransfers_window.py:556 +#: ../src/tooltips.py:639 msgid "Recipient: " msgstr "接收者: %s" -#: ../src/filetransfers_window.py:200 +#: ../src/filetransfers_window.py:186 #, python-format msgid "Saved in: %s" msgstr "ä¿å­˜åœ¨ï¼š %s" -#: ../src/filetransfers_window.py:203 +#: ../src/filetransfers_window.py:188 msgid "File transfer completed" msgstr "文件传输已完æˆ" -#: ../src/filetransfers_window.py:205 ../src/gtkgui.glade.h:366 -msgid "_Open Containing Folder" -msgstr "打开文件夹(_O)" - -#: ../src/filetransfers_window.py:219 ../src/filetransfers_window.py:227 +#: ../src/filetransfers_window.py:204 ../src/filetransfers_window.py:212 msgid "File transfer canceled" msgstr "文件传输已å–消" -#: ../src/filetransfers_window.py:219 ../src/filetransfers_window.py:228 +#: ../src/filetransfers_window.py:204 ../src/filetransfers_window.py:213 msgid "Connection with peer cannot be established." msgstr "无法与对方建立连接。" -#: ../src/filetransfers_window.py:242 +#: ../src/filetransfers_window.py:225 msgid "File transfer stopped by the contact of the other side" msgstr "文件传输被对方中止" -#: ../src/filetransfers_window.py:259 +#: ../src/filetransfers_window.py:242 msgid "Choose File to Send..." msgstr "选择è¦å‘é€çš„文件..." -#. Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector) -#: ../src/filetransfers_window.py:266 ../src/gtkgui.glade.h:390 -msgid "_Send" -msgstr "å‘é€(_S)" - -#: ../src/filetransfers_window.py:273 +#: ../src/filetransfers_window.py:256 msgid "Gajim cannot access this file" msgstr "Gajim 无法访问此文件" -#: ../src/filetransfers_window.py:274 +#: ../src/filetransfers_window.py:257 msgid "This file is being used by another process." msgstr "此文件正在被其它程åºä½¿ç”¨ã€‚" -#: ../src/filetransfers_window.py:306 +#: ../src/filetransfers_window.py:289 #, python-format msgid "File: %s" msgstr "文件: %s" -#: ../src/filetransfers_window.py:311 +#: ../src/filetransfers_window.py:294 #, python-format msgid "Type: %s" msgstr "类型:%s" -#: ../src/filetransfers_window.py:313 +#: ../src/filetransfers_window.py:296 #, python-format msgid "Description: %s" msgstr "æ述: %s" -#: ../src/filetransfers_window.py:314 +#: ../src/filetransfers_window.py:297 #, python-format msgid "%s wants to send you a file:" msgstr "%s 想å‘é€ç»™æ‚¨ä¸€ä¸ªæ–‡ä»¶ï¼š" -#: ../src/filetransfers_window.py:329 +#: ../src/filetransfers_window.py:311 +#, python-format +msgid "Cannot overwrite existing file \"%s\"" +msgstr "" + +#: ../src/filetransfers_window.py:312 +msgid "" +"A file with this name already exists and you do not have permission to " +"overwrite it." +msgstr "" + +#: ../src/filetransfers_window.py:319 ../src/gtkgui_helpers.py:685 msgid "This file already exists" msgstr "文件已ç»å­˜åœ¨" -#: ../src/filetransfers_window.py:329 +#: ../src/filetransfers_window.py:319 ../src/gtkgui_helpers.py:685 msgid "What do you want to do?" msgstr "想åšä»€ä¹ˆï¼Ÿ" -#: ../src/filetransfers_window.py:344 +#: ../src/filetransfers_window.py:331 +#, python-format +msgid "Directory \"%s\" is not writable" +msgstr "" + +#: ../src/filetransfers_window.py:331 +msgid "You do not have permission to create files in this directory." +msgstr "" + +#: ../src/filetransfers_window.py:341 msgid "Save File as..." msgstr "å¦å­˜ä¸º..." #. Print remaining time in format 00:00:00 #. You can change the places of (hours), (minutes), (seconds) - #. they are not translatable. -#: ../src/filetransfers_window.py:419 +#: ../src/filetransfers_window.py:420 #, python-format msgid "%(hours)02.d:%(minutes)02.d:%(seconds)02.d" msgstr "%(hours)02.d:%(minutes)02.d:%(seconds)02.d" @@ -1082,29 +3177,29 @@ msgstr "%(hours)02.d:%(minutes)02.d:%(seconds)02.d" #. This should make the string Kb/s, #. where 'Kb' part is taken from %s. #. Only the 's' after / (which means second) should be translated. -#: ../src/filetransfers_window.py:491 +#: ../src/filetransfers_window.py:492 #, python-format msgid "(%(filesize_unit)s/s)" msgstr "(%(filesize_unit)s/s)" -#: ../src/filetransfers_window.py:527 ../src/filetransfers_window.py:530 +#: ../src/filetransfers_window.py:528 ../src/filetransfers_window.py:531 msgid "Invalid File" msgstr "无效文件" -#: ../src/filetransfers_window.py:527 +#: ../src/filetransfers_window.py:528 msgid "File: " msgstr "文件:" -#: ../src/filetransfers_window.py:531 +#: ../src/filetransfers_window.py:532 msgid "It is not possible to send empty files" msgstr "无法å‘é€ç©ºæ–‡ä»¶" -#: ../src/filetransfers_window.py:551 ../src/tooltips.py:498 -#: ../src/tooltips.py:607 +#: ../src/filetransfers_window.py:552 ../src/tooltips.py:511 +#: ../src/tooltips.py:629 msgid "Name: " msgstr "å称:" -#: ../src/filetransfers_window.py:553 ../src/tooltips.py:611 +#: ../src/filetransfers_window.py:554 ../src/tooltips.py:633 msgid "Sender: " msgstr "å‘é€è€…:" @@ -1112,215 +3207,249 @@ msgstr "å‘é€è€…:" msgid "Pause" msgstr "æš‚åœ" -#: ../src/filetransfers_window.py:753 ../src/gtkgui.glade.h:328 -msgid "_Continue" -msgstr "继续(_C)" - -#: ../src/gajim-remote.py:84 +#: ../src/gajim-remote.py:82 msgid "shows a help on specific command" msgstr "为特定命令显示帮助" #. User gets help for the command, specified by this parameter -#: ../src/gajim-remote.py:87 +#: ../src/gajim-remote.py:85 msgid "command" msgstr "命令" -#: ../src/gajim-remote.py:88 +#: ../src/gajim-remote.py:86 msgid "show help on command" msgstr "为命令显示帮助" -#: ../src/gajim-remote.py:92 +#: ../src/gajim-remote.py:90 msgid "Shows or hides the roster window" msgstr "显示/éšè—åå•çª—å£" -#: ../src/gajim-remote.py:96 +#: ../src/gajim-remote.py:94 msgid "Popups a window with the next unread message" msgstr "为下一æ¡æœªè¯»æ¶ˆæ¯å¼¹å‡ºçª—å£" -#: ../src/gajim-remote.py:100 +#: ../src/gajim-remote.py:98 msgid "" "Prints a list of all contacts in the roster. Each contact appear on a " "separate line" msgstr "打å°åå•ä¸­æ‰€æœ‰è”系人。æ¯ä¸ªè”系人一行。" -#: ../src/gajim-remote.py:102 ../src/gajim-remote.py:115 -#: ../src/gajim-remote.py:125 ../src/gajim-remote.py:138 -#: ../src/gajim-remote.py:159 ../src/gajim-remote.py:189 -#: ../src/gajim-remote.py:197 ../src/gajim-remote.py:204 -#: ../src/gajim-remote.py:211 +#: ../src/gajim-remote.py:100 ../src/gajim-remote.py:114 +#: ../src/gajim-remote.py:124 ../src/gajim-remote.py:137 +#: ../src/gajim-remote.py:151 ../src/gajim-remote.py:172 +#: ../src/gajim-remote.py:202 ../src/gajim-remote.py:211 +#: ../src/gajim-remote.py:218 ../src/gajim-remote.py:225 +#: ../src/gajim-remote.py:236 msgid "account" msgstr "账户" -#: ../src/gajim-remote.py:102 +#: ../src/gajim-remote.py:100 msgid "show only contacts of the given account" msgstr "åªæ˜¾ç¤ºæŒ‡å®šå¸æˆ·çš„è”系人" -#: ../src/gajim-remote.py:107 +#: ../src/gajim-remote.py:105 msgid "Prints a list of registered accounts" msgstr "打å°æ³¨å†Œçš„账户" -#: ../src/gajim-remote.py:111 +#: ../src/gajim-remote.py:109 msgid "Changes the status of account or accounts" msgstr "改å˜ä¸€ä¸ªæˆ–多个账户状æ€" -#: ../src/gajim-remote.py:113 +#. offline, online, chat, away, xa, dnd, invisible should not be translated +#: ../src/gajim-remote.py:112 msgid "status" msgstr "状æ€" -#: ../src/gajim-remote.py:113 +#: ../src/gajim-remote.py:112 msgid "one of: offline, online, chat, away, xa, dnd, invisible " msgstr "下列中的一项: 离线,在线,èŠå¤©ï¼Œç¦»å¼€ï¼Œä¸å¯ç”¨, dnd, éšèº«" -#: ../src/gajim-remote.py:114 ../src/gajim-remote.py:135 +#: ../src/gajim-remote.py:113 ../src/gajim-remote.py:134 +#: ../src/gajim-remote.py:148 msgid "message" msgstr "消æ¯" -#: ../src/gajim-remote.py:114 +#: ../src/gajim-remote.py:113 msgid "status message" msgstr "状æ€æ¶ˆæ¯" -#: ../src/gajim-remote.py:115 +#: ../src/gajim-remote.py:114 msgid "" "change status of account \"account\". If not specified, try to change status " "of all accounts that have \"sync with global status\" option set" msgstr "改å˜è´¦æˆ·çš„状æ€ã€‚如果ä¸æŒ‡æ˜Žï¼Œå°†æ”¹å˜è®¾ç½®â€œä¸Žå…¨å±€åŒæ­¥â€é€‰é¡¹çš„账户" -#: ../src/gajim-remote.py:121 +#: ../src/gajim-remote.py:120 msgid "Shows the chat dialog so that you can send messages to a contact" msgstr "显示对è¯æ¡†ç”¨äºŽç»™è”系人å‘é€æ¶ˆæ¯" -#: ../src/gajim-remote.py:123 +#: ../src/gajim-remote.py:122 msgid "JID of the contact that you want to chat with" msgstr "您想èŠå¤©çš„ JID" -#: ../src/gajim-remote.py:125 ../src/gajim-remote.py:189 +#: ../src/gajim-remote.py:124 ../src/gajim-remote.py:202 msgid "if specified, contact is taken from the contact list of this account" msgstr "如指定,将从此å¸æˆ·åˆ—表下移出è”系人" -#: ../src/gajim-remote.py:130 +#: ../src/gajim-remote.py:129 +#, fuzzy msgid "" -"Sends new message to a contact in the roster. Both OpenPGP key and account " -"are optional. If you want to set only 'account', without 'OpenPGP key', just " -"set 'OpenPGP key' to ''." +"Sends new chat message to a contact in the roster. Both OpenPGP key and " +"account are optional. If you want to set only 'account', without 'OpenPGP " +"key', just set 'OpenPGP key' to ''." msgstr "" "å‘é€æ–°æ¶ˆæ¯è‡³åå•ä¸­çš„è”系人。 OpenPGP 密钥与å¸æˆ·å‡å¯é€‰ã€‚如果åªé€‰æ‹©â€œå¸æˆ·â€è€Œä¸éœ€" "è¦â€œ OpenPGP 密钥â€ï¼Œåªéœ€å°†â€œ OpenPGP 密钥â€ç½®ä¸ºç©ºã€‚" -#: ../src/gajim-remote.py:134 +#: ../src/gajim-remote.py:133 ../src/gajim-remote.py:146 msgid "JID of the contact that will receive the message" msgstr "è”系人的JID将收到消æ¯" -#: ../src/gajim-remote.py:135 +#: ../src/gajim-remote.py:134 ../src/gajim-remote.py:148 msgid "message contents" msgstr "消æ¯å†…容" -#: ../src/gajim-remote.py:136 +#: ../src/gajim-remote.py:135 ../src/gajim-remote.py:149 msgid "pgp key" msgstr "PGP 钥匙" -#: ../src/gajim-remote.py:136 +#: ../src/gajim-remote.py:135 ../src/gajim-remote.py:149 msgid "if specified, the message will be encrypted using this public key" msgstr "如指定,该消æ¯å°†ä½¿ç”¨æœ¬å…¬å…±å¯†é’¥åŠ å¯†" -#: ../src/gajim-remote.py:138 +#: ../src/gajim-remote.py:137 ../src/gajim-remote.py:151 msgid "if specified, the message will be sent using this account" msgstr "如指定,消æ¯å°†è¢«ç”¨æ­¤è´¦æˆ·å‘é€" -#: ../src/gajim-remote.py:143 +#: ../src/gajim-remote.py:142 +#, fuzzy +msgid "" +"Sends new single message to a contact in the roster. Both OpenPGP key and " +"account are optional. If you want to set only 'account', without 'OpenPGP " +"key', just set 'OpenPGP key' to ''." +msgstr "" +"å‘é€æ–°æ¶ˆæ¯è‡³åå•ä¸­çš„è”系人。 OpenPGP 密钥与å¸æˆ·å‡å¯é€‰ã€‚如果åªé€‰æ‹©â€œå¸æˆ·â€è€Œä¸éœ€" +"è¦â€œ OpenPGP 密钥â€ï¼Œåªéœ€å°†â€œ OpenPGP 密钥â€ç½®ä¸ºç©ºã€‚" + +#: ../src/gajim-remote.py:147 +#, fuzzy +msgid "subject" +msgstr "主题" + +#: ../src/gajim-remote.py:147 +#, fuzzy +msgid "message subject" +msgstr "消æ¯å·²å‘é€" + +#: ../src/gajim-remote.py:156 msgid "Gets detailed info on a contact" msgstr "获得è”系人的详细信æ¯" -#: ../src/gajim-remote.py:145 ../src/gajim-remote.py:158 -#: ../src/gajim-remote.py:188 +#: ../src/gajim-remote.py:158 ../src/gajim-remote.py:171 +#: ../src/gajim-remote.py:201 ../src/gajim-remote.py:210 msgid "JID of the contact" msgstr "è”系人的 JID " -#: ../src/gajim-remote.py:149 +#: ../src/gajim-remote.py:162 msgid "Gets detailed info on a account" msgstr "获得å¸å·çš„详细信æ¯" -#: ../src/gajim-remote.py:151 +#: ../src/gajim-remote.py:164 msgid "Name of the account" msgstr "å¸å·å称" -#: ../src/gajim-remote.py:155 +#: ../src/gajim-remote.py:168 msgid "Sends file to a contact" msgstr "å‘è”系人å‘é€æ–‡ä»¶" -#: ../src/gajim-remote.py:157 +#: ../src/gajim-remote.py:170 msgid "file" msgstr "文件" -#: ../src/gajim-remote.py:157 +#: ../src/gajim-remote.py:170 msgid "File path" msgstr "文件路径" -#: ../src/gajim-remote.py:159 +#: ../src/gajim-remote.py:172 msgid "if specified, file will be sent using this account" msgstr "如指定,文件将被用此账户å‘é€" -#: ../src/gajim-remote.py:164 +#: ../src/gajim-remote.py:177 msgid "Lists all preferences and their values" msgstr "列出所有的å‚æ•°åŠå®ƒä»¬çš„值" -#: ../src/gajim-remote.py:168 +#: ../src/gajim-remote.py:181 msgid "Sets value of 'key' to 'value'." msgstr "将“密钥â€çš„值设为“值â€" -#: ../src/gajim-remote.py:170 +#: ../src/gajim-remote.py:183 msgid "key=value" msgstr "é”®=值" -#: ../src/gajim-remote.py:170 +#: ../src/gajim-remote.py:183 msgid "'key' is the name of the preference, 'value' is the value to set it to" msgstr "“密钥â€æ˜¯å‚æ•°å,而“值â€æ˜¯èµ‹äºˆå‚数的数值" -#: ../src/gajim-remote.py:175 +#: ../src/gajim-remote.py:188 msgid "Deletes a preference item" msgstr "删除一个å‚数项" -#: ../src/gajim-remote.py:177 +#: ../src/gajim-remote.py:190 msgid "key" msgstr "é”®" -#: ../src/gajim-remote.py:177 +#: ../src/gajim-remote.py:190 msgid "name of the preference to be deleted" msgstr "需è¦åˆ é™¤çš„å‚æ•°å" -#: ../src/gajim-remote.py:181 +#: ../src/gajim-remote.py:194 msgid "Writes the current state of Gajim preferences to the .config file" msgstr "将当å‰Gajim的国家设置写入 .config 文件" -#: ../src/gajim-remote.py:186 +#: ../src/gajim-remote.py:199 msgid "Removes contact from roster" msgstr "从åå•ç§»é™¤è”系人" -#: ../src/gajim-remote.py:195 +#: ../src/gajim-remote.py:208 msgid "Adds contact to roster" msgstr "å‘åå•æ·»åŠ è”系人" -#: ../src/gajim-remote.py:197 -msgid "Adds new contact to this account." +#: ../src/gajim-remote.py:210 +msgid "jid" +msgstr "" + +#: ../src/gajim-remote.py:211 +#, fuzzy +msgid "Adds new contact to this account" msgstr "为此账户加入新è”系人。" -#: ../src/gajim-remote.py:202 +#: ../src/gajim-remote.py:216 msgid "Returns current status (the global one unless account is specified)" msgstr "返回当å‰çŠ¶æ€(如ä¸æŒ‡å®šè´¦æˆ·å°†è¿”回全局设置)" -#: ../src/gajim-remote.py:209 +#: ../src/gajim-remote.py:223 msgid "" "Returns current status message(the global one unless account is specified)" msgstr "返回当å‰çŠ¶æ€ä¿¡æ¯(如ä¸æŒ‡å®šè´¦æˆ·å°†è¿”回全局设置)" -#: ../src/gajim-remote.py:216 +#: ../src/gajim-remote.py:230 msgid "Returns number of unreaded messages" msgstr "未读消æ¯çš„回å¤æ€»æ•°" +#: ../src/gajim-remote.py:234 +msgid "Open 'Start Chat' dialog" +msgstr "" + #: ../src/gajim-remote.py:236 +#, fuzzy +msgid "Starts chat, using this account" +msgstr "使用账户 %s 加入群èŠ" + +#: ../src/gajim-remote.py:256 msgid "Missing argument \"contact_jid\"" msgstr "缺失的“è”系人 JIDâ€å‚æ•°" -#: ../src/gajim-remote.py:255 +#: ../src/gajim-remote.py:275 #, python-format msgid "" "'%s' is not in your roster.\n" @@ -1329,16 +3458,16 @@ msgstr "" "\"%s\" ä¸åœ¨æ‚¨çš„åå•ä¸­ã€‚\n" "请为å‘é€æ­¤æ¶ˆæ¯æŒ‡å®šè´¦æˆ·ã€‚" -#: ../src/gajim-remote.py:258 +#: ../src/gajim-remote.py:278 msgid "You have no active account" msgstr "没有活动的账户" -#: ../src/gajim-remote.py:301 +#: ../src/gajim-remote.py:321 #, python-format msgid "Unknown D-Bus version: %s" msgstr "未知的 D-Bus 版本: %s" -#: ../src/gajim-remote.py:328 +#: ../src/gajim-remote.py:348 #, python-format msgid "" "Usage: %s %s %s \n" @@ -1347,16 +3476,16 @@ msgstr "" "用法: %s %s %s \n" "\t %s" -#: ../src/gajim-remote.py:331 +#: ../src/gajim-remote.py:351 msgid "Arguments:" msgstr "å‚数:" -#: ../src/gajim-remote.py:335 +#: ../src/gajim-remote.py:355 #, python-format msgid "%s not found" msgstr " %s 未找到" -#: ../src/gajim-remote.py:339 +#: ../src/gajim-remote.py:359 #, python-format msgid "" "Usage: %s command [arguments]\n" @@ -1365,7 +3494,7 @@ msgstr "" "用法:%s 命令 [å‚æ•°] \n" "命令是下列之一:\n" -#: ../src/gajim-remote.py:413 +#: ../src/gajim-remote.py:433 #, python-format msgid "" "Argument \"%s\" is not specified. \n" @@ -1414,102 +3543,91 @@ msgstr "请确认您系统中 gtk+ åŠ pygtk 对 libglade 的支æŒã€‚" msgid "Gajim needs PySQLite2 to run" msgstr "è¿è¡Œ Gajim éœ€è¦ PySQLite2 " -#: ../src/gajim.py:235 +#. set the icon to all newly opened wind +#: ../src/gajim.py:151 +msgid "Gajim is already running" +msgstr "" + +#: ../src/gajim.py:152 +msgid "" +"Another instance of Gajim seems to be running\n" +"Run anyway?" +msgstr "" + +#: ../src/gajim.py:267 #, python-format msgid "HTTP (%s) Authorization for %s (id: %s)" msgstr "HTTP (%s) 授æƒç»™ %s (id: %s)" -#: ../src/gajim.py:236 +#: ../src/gajim.py:268 msgid "Do you accept this request?" msgstr "是å¦æŽ¥å—这个请求?" -#: ../src/gajim.py:438 -#, python-format -msgid "%(nickname)s Signed In" -msgstr "%(nickname)s 上线了" - -#: ../src/gajim.py:469 -#, python-format -msgid "%(nickname)s Signed Out" -msgstr "%(nickname)s 离开了" - -#: ../src/gajim.py:583 -#, python-format -msgid "New Private Message from room %s" -msgstr "æ¥è‡ªæˆ¿é—´ %s 的新个人消æ¯" - -#: ../src/gajim.py:584 -#, python-format -msgid "%(nickname)s: %(message)s" -msgstr "%(nickname)s: %(message)s" - -#: ../src/gajim.py:606 -#, python-format -msgid "New Single Message from %(nickname)s" -msgstr " %(nickname)s å‘æ¥çš„新消æ¯" - -#: ../src/gajim.py:612 -#, python-format -msgid "New Message from %(nickname)s" -msgstr "æ¥è‡ª %(nickname)s 的新消æ¯" - -#: ../src/gajim.py:660 +#: ../src/gajim.py:611 #, python-format msgid "error while sending %s ( %s )" msgstr "å‘é€ %s ( %s ) 时出现错误" -#: ../src/gajim.py:700 +#: ../src/gajim.py:651 msgid "Authorization accepted" msgstr "授æƒè¢«æŽ¥å—" -#: ../src/gajim.py:701 +#: ../src/gajim.py:652 #, python-format msgid "The contact \"%s\" has authorized you to see his or her status." msgstr "è”系人“%sâ€å·²æŽˆæƒæ‚¨æŸ¥çœ‹ä»–/她的状æ€ã€‚" -#: ../src/gajim.py:709 +#: ../src/gajim.py:660 #, python-format msgid "Contact \"%s\" removed subscription from you" msgstr "è”系人“%sâ€ç§»é™¤äº†æ¥è‡ªæ‚¨çš„认è¯" -#: ../src/gajim.py:710 +#: ../src/gajim.py:661 msgid "You will always see him or her as offline." msgstr "您将一直看到他/她的状æ€ä¸ºç¦»çº¿ã€‚" -#: ../src/gajim.py:736 +#: ../src/gajim.py:704 #, python-format msgid "Contact with \"%s\" cannot be established" msgstr "无法与对方“ %s â€å»ºç«‹è¿žæŽ¥ã€‚" -#: ../src/gajim.py:737 ../src/common/connection.py:349 +#: ../src/gajim.py:705 ../src/common/connection.py:398 msgid "Check your connection or try again later." msgstr "检查连接并ç¨åŽé‡è¯•ã€‚" -#: ../src/gajim.py:874 ../src/roster_window.py:1012 +#: ../src/gajim.py:849 ../src/roster_window.py:1025 #, python-format msgid "%s is now %s (%s)" msgstr "%s 正在 %s (%s)." -#: ../src/gajim.py:963 +#: ../src/gajim.py:930 msgid "Your passphrase is incorrect" msgstr "您的密文ä¸æ­£ç¡®" -#: ../src/gajim.py:964 +#: ../src/gajim.py:931 msgid "You are currently connected without your OpenPGP key." msgstr "已建立没有 OpenPGP 密钥的连接" #. FIXME: find a better image -#: ../src/gajim.py:1045 +#: ../src/gajim.py:1033 #, python-format msgid "New E-mail on %(gmail_mail_address)s" msgstr " %(gmail_mail_address)s 上的新邮件" -#: ../src/gajim.py:1047 +#: ../src/gajim.py:1035 #, python-format msgid "You have %d new E-mail message" msgid_plural "You have %d new E-mail messages" msgstr[0] "您有 %d æ¡æ–°é‚®ä»¶ä¿¡æ¯" +#. each message has a 'From', 'Subject' and 'Snippet' field +#: ../src/gajim.py:1040 +#, python-format +msgid "" +"\n" +"From: %(from_address)s" +msgstr "" + #: ../src/gajim.py:1185 #, python-format msgid "%s wants to send you a file." @@ -1557,140 +3675,150 @@ msgstr "å‘布您的个人信æ¯æ—¶å‘生错误,请ç¨åŽé‡è¯•ã€‚" #. it is good to notify the user #. in case he or she cannot see the output of the console -#: ../src/gajim.py:1634 +#: ../src/gajim.py:1683 msgid "Could not save your settings and preferences" msgstr "无法ä¿å­˜æ‚¨çš„设置。" -#: ../src/gajim.py:1848 +#: ../src/gajim.py:1903 msgid "Session Management support not available (missing gnome.ui module)" msgstr "会è¯ç®¡ç†å™¨æ”¯æŒä¸å¯ç”¨(丢失 gnome.ui 模å—)" -#: ../src/gajim.py:1878 +#: ../src/gajim.py:1932 msgid "Migrating Logs..." msgstr "正在移动日志..." -#: ../src/gajim.py:1879 +#: ../src/gajim.py:1933 msgid "Please wait while logs are being migrated..." msgstr "请等待日志被移动..." -#: ../src/gajim_themes_window.py:67 +#: ../src/gajim_themes_window.py:59 msgid "Theme" msgstr "主题" #. don't confuse translators -#: ../src/gajim_themes_window.py:149 +#: ../src/gajim_themes_window.py:141 msgid "theme name" msgstr "主题å称" -#: ../src/gajim_themes_window.py:166 +#: ../src/gajim_themes_window.py:158 msgid "You cannot delete your current theme" msgstr "无法删除当å‰ä¸»é¢˜" -#: ../src/gajim_themes_window.py:167 +#: ../src/gajim_themes_window.py:159 msgid "Please first choose another for your current theme." msgstr "请先选择其他主题作为当å‰ä¸»é¢˜" -#: ../src/groupchat_control.py:68 +#: ../src/groupchat_control.py:99 msgid "Private Chat" msgstr "ç§èŠ" -#: ../src/groupchat_control.py:68 +#: ../src/groupchat_control.py:99 msgid "Private Chats" msgstr "ç§èŠ" -#: ../src/groupchat_control.py:84 +#: ../src/groupchat_control.py:115 msgid "Sending private message failed" msgstr "å‘é€ç§æœ‰æ¶ˆæ¯å¤±è´¥" #. in second %s code replaces with nickname -#: ../src/groupchat_control.py:86 +#: ../src/groupchat_control.py:117 #, python-format msgid "You are no longer in room \"%s\" or \"%s\" has left." msgstr "您ä¸å†åœ¨æˆ¿é—´â€œ%sâ€ä¸­æˆ–“%sâ€å·²ç¦»å¼€ã€‚" -#: ../src/groupchat_control.py:98 +#: ../src/groupchat_control.py:129 msgid "Group Chat" msgstr "群èŠ" -#: ../src/groupchat_control.py:98 +#: ../src/groupchat_control.py:129 msgid "Group Chats" msgstr "群èŠ" -#: ../src/groupchat_control.py:595 +#: ../src/groupchat_control.py:308 +#, fuzzy +msgid "Insert Nickname" +msgstr "æ›´æ¢æ˜µç§°(_N)" + +#: ../src/groupchat_control.py:702 msgid "This room has no subject" msgstr "该房间无è¯é¢˜" #. do not print 'kicked by None' -#: ../src/groupchat_control.py:693 +#: ../src/groupchat_control.py:801 #, python-format msgid "%(nick)s has been kicked: %(reason)s" msgstr "%(nick)s 被踢出:%(reason)s" -#: ../src/groupchat_control.py:697 +#: ../src/groupchat_control.py:805 #, python-format msgid "%(nick)s has been kicked by %(who)s: %(reason)s" msgstr "%(nick)s 被 %(who)s 踢出:%(reason)s" #. do not print 'banned by None' -#: ../src/groupchat_control.py:704 +#: ../src/groupchat_control.py:812 #, python-format msgid "%(nick)s has been banned: %(reason)s" msgstr "%(nick)s 被å°ç¦ï¼š%(reason)s" -#: ../src/groupchat_control.py:708 +#: ../src/groupchat_control.py:816 #, python-format msgid "%(nick)s has been banned by %(who)s: %(reason)s" msgstr "%(nick)s 被 %(who)s å°ç¦ï¼š%(reason)s" -#: ../src/groupchat_control.py:716 +#: ../src/groupchat_control.py:824 #, python-format msgid "You are now known as %s" msgstr "您现在æˆäº† %s " -#: ../src/groupchat_control.py:718 +#: ../src/groupchat_control.py:826 #, python-format msgid "%s is now known as %s" msgstr "%s 现在æˆäº† %s" -#: ../src/groupchat_control.py:757 +#: ../src/groupchat_control.py:897 #, python-format msgid "%s has left" msgstr " %s 离开了" +#: ../src/groupchat_control.py:902 +#, python-format +msgid "%s has joined the room" +msgstr "" + #. No status message -#: ../src/groupchat_control.py:759 ../src/roster_window.py:1015 +#: ../src/groupchat_control.py:904 ../src/roster_window.py:1028 #, python-format msgid "%s is now %s" msgstr "%s 正在 %s" -#: ../src/groupchat_control.py:871 ../src/groupchat_control.py:888 -#: ../src/groupchat_control.py:981 ../src/groupchat_control.py:997 +#: ../src/groupchat_control.py:1022 ../src/groupchat_control.py:1039 +#: ../src/groupchat_control.py:1132 ../src/groupchat_control.py:1148 #, python-format msgid "Nickname not found: %s" msgstr "昵称未找到: %s " -#: ../src/groupchat_control.py:915 +#: ../src/groupchat_control.py:1066 #, python-format msgid "Invited %(contact_jid)s to %(room_jid)s." msgstr "邀请 %(contact_jid)s 到 %(room_jid)s。" #. %s is something the user wrote but it is not a jid so we inform -#: ../src/groupchat_control.py:922 ../src/groupchat_control.py:952 +#: ../src/groupchat_control.py:1073 ../src/groupchat_control.py:1103 #, python-format msgid "%s does not appear to be a valid JID" msgstr " %s å¯èƒ½ä¸æ˜¯æœ‰æ•ˆçš„ JID " -#: ../src/groupchat_control.py:1019 +#: ../src/groupchat_control.py:1185 #, python-format msgid "No such command: /%s (if you want to send this, prefix it with /say)" msgstr "没有此命令:/%s ( 如果想é€å‡ºï¼Œè¯·ç”¨è¯·ç”¨å‰ç¼€ /say )" -#: ../src/groupchat_control.py:1041 +#: ../src/groupchat_control.py:1207 #, python-format msgid "Commands: %s" msgstr "命令: %s " -#: ../src/groupchat_control.py:1043 +#: ../src/groupchat_control.py:1209 #, python-format msgid "" "Usage: /%s [reason], bans the JID from the room. The nickname " @@ -1701,44 +3829,44 @@ msgstr "" "用法:/%s <昵称|JID> [原因],从此房间å°ç¦ JID。昵称å¯èƒ½è¢«ä»£æ›¿ï¼Œé™¤äº†åŒ…å«â€œ@â€ã€‚" "如果 JID 在房间里,他/她/它将被踢出。注æ„:ä¸æ”¯æŒåŒ…å«ç©ºæ ¼çš„昵称。" -#: ../src/groupchat_control.py:1049 +#: ../src/groupchat_control.py:1215 #, python-format msgid "" "Usage: /%s , opens a private chat window to the specified occupant." msgstr "用法:/%s <昵称>, 为指定房主打开一个ç§èŠçª—å£" -#: ../src/groupchat_control.py:1053 +#: ../src/groupchat_control.py:1219 #, python-format msgid "Usage: /%s, clears the text window." msgstr "用法:/%s,清除文本窗å£ã€‚" -#: ../src/groupchat_control.py:1055 +#: ../src/groupchat_control.py:1221 #, python-format msgid "" "Usage: /%s [reason], closes the current window or tab, displaying reason if " "specified." msgstr "用法:/%s [原因],关闭当å‰çª—å£æˆ–标签,如果指定将显示原因。" -#: ../src/groupchat_control.py:1058 +#: ../src/groupchat_control.py:1224 #, python-format msgid "Usage: /%s, hide the chat buttons." msgstr "用法:/%s,éšè—èŠå¤©æŒ‰é’®ã€‚" -#: ../src/groupchat_control.py:1060 +#: ../src/groupchat_control.py:1226 #, python-format msgid "" "Usage: /%s [reason], invites JID to the current room, optionally " "providing a reason." msgstr "用法:/%s [原因],邀请 JID 到当å‰æˆ¿é—´ï¼Œå¯ä»¥æ供一个原因。" -#: ../src/groupchat_control.py:1064 +#: ../src/groupchat_control.py:1230 #, python-format msgid "" "Usage: /%s @[/nickname], offers to join room@server optionally " "using specified nickname." msgstr "用法: /%s <房间>@<æœåŠ¡å™¨>[/昵称], 申请以指定昵称加入“房间@æœåŠ¡å™¨â€ã€‚" -#: ../src/groupchat_control.py:1068 +#: ../src/groupchat_control.py:1234 #, python-format msgid "" "Usage: /%s [reason], removes the occupant specified by nickname " @@ -1748,7 +3876,7 @@ msgstr "" "用法:/%s <昵称> [原因],通过昵称移除房主,原因å¯é€‰ã€‚注æ„:ä¸æ”¯æŒå«ç©ºæ ¼çš„昵" "称。" -#: ../src/groupchat_control.py:1073 +#: ../src/groupchat_control.py:1239 #, python-format msgid "" "Usage: /%s , sends action to the current room. Use third person. (e." @@ -1756,7 +3884,7 @@ msgid "" msgstr "" "用法:/%s <动作>,å‘é€åŠ¨ä½œåˆ°å½“å‰æˆ¿é—´ã€‚使用第三人称。(例如:/%s exploeds)" -#: ../src/groupchat_control.py:1077 +#: ../src/groupchat_control.py:1243 #, python-format msgid "" "Usage: /%s [message], opens a private message windowand sends " @@ -1764,1813 +3892,185 @@ msgid "" msgstr "" "用法: /%s <昵称> [消æ¯], 打开一个ç§èŠçª—å£å¹¶ä¸”å‘指定昵称的è”系人å‘é€æ¶ˆæ¯ " -#: ../src/groupchat_control.py:1082 +#: ../src/groupchat_control.py:1248 #, python-format msgid "Usage: /%s , changes your nickname in current room." msgstr "用法:/%s <昵称>,改å˜æ˜µç§°ã€‚" -#: ../src/groupchat_control.py:1086 +#: ../src/groupchat_control.py:1252 +#, fuzzy, python-format +msgid "Usage: /%s , display the names of room occupants." +msgstr "用法:/%s [主题],显示或更新房间的主题。" + +#: ../src/groupchat_control.py:1256 #, python-format msgid "Usage: /%s [topic], displays or updates the current room topic." msgstr "用法:/%s [主题],显示或更新房间的主题。" -#: ../src/groupchat_control.py:1089 +#: ../src/groupchat_control.py:1259 #, python-format msgid "" "Usage: /%s , sends a message without looking for other commands." msgstr "用法:/%s <消æ¯>,ä¸ä½¿ç”¨å…¶ä»–命令å‘é€æ¶ˆæ¯ã€‚" -#: ../src/groupchat_control.py:1092 +#: ../src/groupchat_control.py:1262 #, python-format msgid "No help info for /%s" msgstr "没有 /%s 的帮助信æ¯" -#: ../src/groupchat_control.py:1128 +#: ../src/groupchat_control.py:1304 #, python-format msgid "Are you sure you want to leave room \"%s\"?" msgstr "确定è¦ç¦»å¼€æˆ¿é—´â€œ %s â€ï¼Ÿ" -#: ../src/groupchat_control.py:1129 +#: ../src/groupchat_control.py:1305 msgid "If you close this window, you will be disconnected from this room." msgstr "如果关闭此窗å£ï¼Œæ‚¨å°†æ–­å¼€æ­¤æˆ¿é—´çš„连接。" -#: ../src/groupchat_control.py:1133 +#: ../src/groupchat_control.py:1309 msgid "Do _not ask me again" msgstr "ä¸å†æ问此问题(_N)" -#: ../src/groupchat_control.py:1167 +#: ../src/groupchat_control.py:1343 msgid "Changing Subject" msgstr "正在更æ¢è¯é¢˜" -#: ../src/groupchat_control.py:1168 +#: ../src/groupchat_control.py:1344 msgid "Please specify the new subject:" msgstr "请指定新è¯é¢˜ï¼š" -#: ../src/groupchat_control.py:1176 +#: ../src/groupchat_control.py:1352 msgid "Changing Nickname" msgstr "正在更æ¢æ˜µç§°" -#: ../src/groupchat_control.py:1177 +#: ../src/groupchat_control.py:1353 msgid "Please specify the new nickname you want to use:" msgstr "请指定您想使用的新昵称:" -#: ../src/groupchat_control.py:1202 +#: ../src/groupchat_control.py:1379 msgid "Bookmark already set" msgstr "书签已设定" -#: ../src/groupchat_control.py:1203 +#: ../src/groupchat_control.py:1380 #, python-format msgid "Room \"%s\" is already in your bookmarks." msgstr "房间“%sâ€å·²åœ¨æ‚¨çš„书签中。" -#: ../src/groupchat_control.py:1212 +#: ../src/groupchat_control.py:1389 msgid "Bookmark has been added successfully" msgstr "书签添加æˆåŠŸ" -#: ../src/groupchat_control.py:1213 +#: ../src/groupchat_control.py:1390 msgid "You can manage your bookmarks via Actions menu in your roster." msgstr "您å¯ä»¥é€šè¿‡â€œåŠ¨ä½œâ€èœå•ç®¡ç†æ‚¨çš„åå•ã€‚" #. ask for reason -#: ../src/groupchat_control.py:1322 +#: ../src/groupchat_control.py:1500 #, python-format msgid "Kicking %s" msgstr "踢出 %s" -#: ../src/groupchat_control.py:1323 ../src/groupchat_control.py:1568 +#: ../src/groupchat_control.py:1501 ../src/groupchat_control.py:1779 msgid "You may specify a reason below:" msgstr "您å¯ä»¥æŒ‡å®šä¸€ä¸ªåŽŸå› ï¼š" #. ask for reason -#: ../src/groupchat_control.py:1567 +#: ../src/groupchat_control.py:1778 #, python-format msgid "Banning %s" msgstr "å°ç¦ %s" -#: ../src/gtkexcepthook.py:52 +#: ../src/gtkexcepthook.py:51 msgid "A programming error has been detected" msgstr "å‘现一个程åºé”™è¯¯" -#: ../src/gtkexcepthook.py:53 +#: ../src/gtkexcepthook.py:52 msgid "" "It probably is not fatal, but should be reported to the developers " "nonetheless." msgstr "它å¯èƒ½ä¸æ˜¯è‡´å‘½çš„,但ä»åº”该æ交给开å‘者。" -#: ../src/gtkexcepthook.py:59 +#: ../src/gtkexcepthook.py:58 msgid "_Report Bug" msgstr "报告错误(_R)" -#: ../src/gtkexcepthook.py:82 +#: ../src/gtkexcepthook.py:81 msgid "Details" msgstr "细节" -#. this always tracebacks -#: ../src/gtkgui.glade.h:1 -msgid "0" -msgstr "0" - -#: ../src/gtkgui.glade.h:2 -msgid "" -"Account is being created\n" -"\n" -"Please wait..." -msgstr "" -"正在创建å¸æˆ·\n" -"\n" -"请等待..." - -#: ../src/gtkgui.glade.h:5 -msgid "Advanced Configuration Editor" -msgstr "高级设置编辑器" - -#: ../src/gtkgui.glade.h:6 -msgid "Applications" -msgstr "应用" - -#: ../src/gtkgui.glade.h:7 -msgid "Chatstate Tab Colors" -msgstr "èŠå¤©æ ‡ç­¾é¢œè‰²" - -#. a header for custom browser/client/file manager. so translate sth like: Custom Settings -#: ../src/gtkgui.glade.h:9 -msgid "Custom" -msgstr "自定义" - -#: ../src/gtkgui.glade.h:10 -msgid "Description" -msgstr "æè¿°" - -#: ../src/gtkgui.glade.h:11 -msgid "Format of a line" -msgstr "行格å¼" - -#: ../src/gtkgui.glade.h:12 -msgid "Interface Customization" -msgstr "ç•Œé¢è®¢åˆ¶" - -#: ../src/gtkgui.glade.h:13 -msgid "Jabber Traffic" -msgstr "Jabber 通信" - -#: ../src/gtkgui.glade.h:14 -msgid "Miscellaneous" -msgstr "æ‚项" - -#: ../src/gtkgui.glade.h:15 -msgid "NOTE: You should restart gajim for some setting to take effect" -msgstr "注æ„:您必须é‡æ–°å¯åŠ¨ gajim 使设置生效" - -#: ../src/gtkgui.glade.h:16 -msgid "OpenPGP" -msgstr "OpenPGP" - -#: ../src/gtkgui.glade.h:17 -msgid "Personal Information" -msgstr "个人信æ¯" - -#: ../src/gtkgui.glade.h:18 -msgid "Please choose one of the options below:" -msgstr "请选择一个选项:" - -#: ../src/gtkgui.glade.h:19 -msgid "Please fill in the data for your new account" -msgstr "请填写您新åŒè´¦æˆ·çš„æ•°æ®" - -#: ../src/gtkgui.glade.h:20 -msgid "Preset Status Messages" -msgstr "预设状æ€æ¶ˆæ¯" - -#: ../src/gtkgui.glade.h:21 -msgid "Properties" -msgstr "属性" - -#: ../src/gtkgui.glade.h:22 -msgid "Settings" -msgstr "设置" - -#: ../src/gtkgui.glade.h:23 -msgid "Sounds" -msgstr "声音" - -#: ../src/gtkgui.glade.h:24 -msgid "Type your new status message" -msgstr "键入新的状æ€æ¶ˆæ¯" - -#: ../src/gtkgui.glade.h:25 -msgid "Visual Notifications" -msgstr "å¯è§†åŒ–æ示" - -#: ../src/gtkgui.glade.h:26 -msgid "What do you want to do?" -msgstr "想åšä»€ä¹ˆï¼Ÿ" - -#: ../src/gtkgui.glade.h:27 -msgid "XML Input" -msgstr "XML 输入" - -#: ../src/gtkgui.glade.h:28 -msgid "A list of active, completed and stopped file transfers" -msgstr "文件å‘é€ã€å®Œæˆå’Œä¸­æ­¢çš„清å•" - -#: ../src/gtkgui.glade.h:29 -msgid "A_ccounts" -msgstr "账户(_A)" - -#: ../src/gtkgui.glade.h:30 -msgid "A_fter nickname:" -msgstr "在昵称åŽï¼š(_F)" - -#. "About" is the text of a tab of vcard window -#: ../src/gtkgui.glade.h:32 -msgid "About" -msgstr "关于" - -#: ../src/gtkgui.glade.h:33 -msgid "Accept" -msgstr "接å—" - -#: ../src/gtkgui.glade.h:34 -msgid "Account" -msgstr "账户" - -#: ../src/gtkgui.glade.h:35 -msgid "" -"Account\n" -"Group\n" -"Contact\n" -"Banner" -msgstr "" -"账户\n" -"组\n" -"è”系人\n" -"标语" - -#: ../src/gtkgui.glade.h:39 -msgid "Account Modification" -msgstr "å¸æˆ·ä¿®æ”¹" - -#: ../src/gtkgui.glade.h:40 -msgid "Accounts" -msgstr "å¸æˆ·" - -#: ../src/gtkgui.glade.h:42 -msgid "Add New Contact" -msgstr "添加è”系人" - -#: ../src/gtkgui.glade.h:43 -msgid "Add Special _Notification" -msgstr "添加特殊æ示(_N)" - -#: ../src/gtkgui.glade.h:44 -msgid "Add _Contact" -msgstr "添加è”系人(_C)" - -#: ../src/gtkgui.glade.h:45 -msgid "Address" -msgstr "地å€" - -#: ../src/gtkgui.glade.h:46 -msgid "Advanced" -msgstr "高级" - -#: ../src/gtkgui.glade.h:47 -msgid "Advanced Configuration Editor" -msgstr "高级设置编辑器" - -#: ../src/gtkgui.glade.h:48 -msgid "" -"All chat states\n" -"Composing only\n" -"Disabled" -msgstr "" -"所有èŠå¤©çŠ¶æ€\n" -"仅在书写\n" -"ç¦ç”¨" - -#: ../src/gtkgui.glade.h:51 -msgid "Allow _OS information to be sent" -msgstr "å…许å‘é€æ“作系统信æ¯(_O)" - -#: ../src/gtkgui.glade.h:52 -msgid "Allow him/her to see my status" -msgstr "å…许他人看到我的状æ€" - -#: ../src/gtkgui.glade.h:53 -msgid "Allow popup/notifications when I'm _away/na/busy/invisible" -msgstr "å…许æ示,当我离开/ä¸å¯ç”¨/å¿™/éšèº«" - -#: ../src/gtkgui.glade.h:54 -msgid "Also known as iChat style" -msgstr "也就是 i èŠå¤©é£Žæ ¼" - -#: ../src/gtkgui.glade.h:55 -msgid "Ask status message when I:" -msgstr "询问状æ€æ¶ˆæ¯ï¼Œå½“我:" - -#: ../src/gtkgui.glade.h:56 -msgid "Ask to see his/her status" -msgstr "è¦æ±‚查看他人的状æ€" - -#: ../src/gtkgui.glade.h:57 -msgid "Ask:" -msgstr "请求:" - -#: ../src/gtkgui.glade.h:58 -msgid "Assign Open_PGP Key" -msgstr "指定 Open_PGP 密钥" - -#: ../src/gtkgui.glade.h:59 -msgid "Authorize contact so he can know when you're connected" -msgstr "å‘è”系人授æƒï¼Œä½¿ä»–知é“您是å¦è¿žæŽ¥" - -#: ../src/gtkgui.glade.h:60 -msgid "Auto _away after:" -msgstr "自动离开(_A):" - -#: ../src/gtkgui.glade.h:61 -msgid "Auto _not available after:" -msgstr "自动ä¸å¯ç”¨(_N):" - -#: ../src/gtkgui.glade.h:62 -msgid "Auto join" -msgstr "自动加入" - -#: ../src/gtkgui.glade.h:63 -msgid "" -"Autodetect on every Gajim startup\n" -"Always use GNOME default applications\n" -"Always use KDE default applications\n" -"Custom" -msgstr "" -"æ¯æ¬¡ Gajim å¯åŠ¨æ—¶è‡ªåŠ¨æŽ¢æµ‹\n" -"总是使用 GNOME 默认应用\n" -"总是使用 KDE 默认应用\n" -"自定义" - -#: ../src/gtkgui.glade.h:67 -msgid "Automatically authorize contact" -msgstr "自动å‘è”系人授æƒ" - -#: ../src/gtkgui.glade.h:68 -msgid "Autoreconnect when connection is lost" -msgstr "连接丢失åŽè‡ªåŠ¨é‡æ–°è¿žæŽ¥" - -#: ../src/gtkgui.glade.h:69 -msgid "B_efore nickname:" -msgstr "在昵称å‰ï¼š(_E)" - -#: ../src/gtkgui.glade.h:70 -msgid "Birthday:" -msgstr "生日" - -#: ../src/gtkgui.glade.h:71 -msgid "Bold" -msgstr "粗体" - -#: ../src/gtkgui.glade.h:72 -msgid "Build custom query" -msgstr "建立自定义查询" - -#: ../src/gtkgui.glade.h:73 -msgid "C_onnect on Gajim startup" -msgstr "Gajim å¯åŠ¨æ˜¯è¿žæŽ¥(_O)" - -#: ../src/gtkgui.glade.h:74 -msgid "Cancel file transfer" -msgstr "å–消文件传输" - -#: ../src/gtkgui.glade.h:75 -msgid "Cancels the selected file transfer" -msgstr "å–消指定文件传输" - -#: ../src/gtkgui.glade.h:76 -msgid "Cancels the selected file transfer and removes incomplete file" -msgstr "å–消指定文件传输并删除未完æˆæ–‡ä»¶" - -#: ../src/gtkgui.glade.h:77 -msgid "Chan_ge Password" -msgstr "æ›´æ¢å¯†ç (_G)" - -#: ../src/gtkgui.glade.h:78 -msgid "Change Password" -msgstr "æ›´æ¢å¯†ç " - -#: ../src/gtkgui.glade.h:79 -msgid "Change _Nickname" -msgstr "æ›´æ¢æ˜µç§°(_N)" - -#: ../src/gtkgui.glade.h:80 -msgid "Change _Subject" -msgstr "æ›´æ¢ä¸»é¢˜(_S)" - -#: ../src/gtkgui.glade.h:82 -msgid "Chat state noti_fications:" -msgstr "èŠå¤©çŠ¶æ€æŒ‡ç¤º(_F):" - -#: ../src/gtkgui.glade.h:83 -msgid "" -"Check this option, only if someone you don't have in the roster spams/annoys " -"you. Use with caution, cause it blocks all messages from any contact that is " -"not in the roster" -msgstr "" -"当被ä¸åœ¨åå•ä¸­çš„è”系人骚扰时,检查此选项。它会å±è”½æ‰€æœ‰åå•ä¹‹å¤–è”系人的消æ¯ï¼Œ" -"请谨慎使用。" - -#: ../src/gtkgui.glade.h:84 -msgid "" -"Check this so Gajim will connect in port 5223 where legacy servers are " -"expected to have SSL capabilities. Note that Gajim uses TLS encryption by " -"default if broadcasted by the server, and with this option enabled TLS will " -"be disabled" -msgstr "" -"检查这里, Gajim 将连接代ç†æœåŠ¡å™¨å…·æœ‰ SSL 能力的 5523 端å£ã€‚注æ„, Gajim 使" -"用 TLS 加密接å—æœåŠ¡å™¨å¹¿æ’­ï¼Œè€Œä½¿ç”¨è¯¥é€‰é¡¹å°†ç¦ç”¨ TLS" - -#: ../src/gtkgui.glade.h:85 -msgid "Choose _Key..." -msgstr "选择您的 OpenPGP 钥匙(_K)..." - -#: ../src/gtkgui.glade.h:86 -msgid "City:" -msgstr "城市:" - -#: ../src/gtkgui.glade.h:87 -msgid "Clean _up" -msgstr "清除(_U)" - -#: ../src/gtkgui.glade.h:88 -msgid "Click to change account's password" -msgstr "点击å˜æ›´å¸æˆ·å¯†ç " - -#: ../src/gtkgui.glade.h:89 -msgid "Click to insert an emoticon (Alt+M)" -msgstr "点这里æ’入表情符 (Alt+M)" - -#: ../src/gtkgui.glade.h:90 -msgid "Click to see features (like MSN, ICQ transports) of jabber servers" -msgstr "点击查看 jabber æœåŠ¡å™¨ç‰¹æ€§(如 MSN, ICQ 代ç†)" - -#: ../src/gtkgui.glade.h:91 -msgid "Click to see past conversation in this room" -msgstr "点击查看本房间的历å²å¯¹è¯" - -#: ../src/gtkgui.glade.h:92 -msgid "Click to see past conversations with this contact" -msgstr "点击查看与该è”系人的历å²å¯¹è¯" - -#: ../src/gtkgui.glade.h:93 -msgid "Client:" -msgstr "客户端:" - -#: ../src/gtkgui.glade.h:94 -msgid "Company:" -msgstr "å…¬å¸ï¼š" - -#: ../src/gtkgui.glade.h:95 -msgid "Composing" -msgstr "正在编写" - -#: ../src/gtkgui.glade.h:96 -msgid "Configure _Room" -msgstr "设置房间(_R)" - -#: ../src/gtkgui.glade.h:97 -msgid "Connect when I press Finish" -msgstr "当我点击“结æŸâ€æ—¶è¿žæŽ¥" - -#: ../src/gtkgui.glade.h:98 -msgid "Connection" -msgstr "连接" - -#: ../src/gtkgui.glade.h:99 -msgid "Contact Information" -msgstr "è”系人信æ¯" - -#: ../src/gtkgui.glade.h:100 -msgid "Contact _Info" -msgstr "è”系人信æ¯(_I)" - -#: ../src/gtkgui.glade.h:101 -msgid "Conversation History" -msgstr "对è¯åŽ†å²" - -#: ../src/gtkgui.glade.h:102 -msgid "Country:" -msgstr "国家:" - -#: ../src/gtkgui.glade.h:103 -msgid "Default status _iconset:" -msgstr "默认状æ€å›¾æ ‡è®¾ç½®:(_I)" - -#: ../src/gtkgui.glade.h:104 -msgid "Delete MOTD" -msgstr "删除 MOTD" - -#: ../src/gtkgui.glade.h:105 -msgid "Deletes Message of the Day" -msgstr "删除æ¯æ—¥æ¶ˆæ¯" - -#: ../src/gtkgui.glade.h:106 -msgid "Deny" -msgstr "æ‹’ç»" - -#: ../src/gtkgui.glade.h:107 -msgid "Deny authorization from contact so he cannot know when you're connected" -msgstr "æ‹’ç»å‘è”系人授æƒã€‚他人将无法知é“您是å¦åœ¨çº¿" - -#: ../src/gtkgui.glade.h:108 -msgid "Department:" -msgstr "部门:" - -#: ../src/gtkgui.glade.h:109 -msgid "Display a_vatars of contacts in roster" -msgstr "显示åå•ä¸­çš„è”系人明细(_V)" - -#: ../src/gtkgui.glade.h:110 -msgid "Display status _messages of contacts in roster" -msgstr "显示åå•ä¸­è”系人的状æ€æ¶ˆæ¯(_M)" - -#: ../src/gtkgui.glade.h:111 -msgid "E-Mail:" -msgstr "E-Mail :" - -#: ../src/gtkgui.glade.h:112 -msgid "E_very 5 minutes" -msgstr "æ¯ 5 分钟(_V)" - -#: ../src/gtkgui.glade.h:113 -msgid "Edit Groups" -msgstr "编辑群组" - -#: ../src/gtkgui.glade.h:114 -msgid "Edit Personal Information..." -msgstr "编辑个人信æ¯..." - -#: ../src/gtkgui.glade.h:115 -msgid "Edit _Groups" -msgstr "编辑群组" - -#: ../src/gtkgui.glade.h:116 -msgid "Emoticons:" -msgstr "表情符:" - -#. XML Console enable checkbutton -#: ../src/gtkgui.glade.h:118 -msgid "Enable" -msgstr "å¯ç”¨" - -#: ../src/gtkgui.glade.h:119 -msgid "Enter it again for confirmation:" -msgstr "å†æ¬¡è¾“入以确认:" - -#: ../src/gtkgui.glade.h:120 -msgid "Enter new password:" -msgstr "输入新密ç " - -#: ../src/gtkgui.glade.h:121 -msgid "Events" -msgstr "事件" - -#: ../src/gtkgui.glade.h:122 -msgid "Extra Address:" -msgstr "附加地å€ï¼š" - -#. Family Name -#: ../src/gtkgui.glade.h:124 -msgid "Family:" -msgstr "家æ—:" - -#: ../src/gtkgui.glade.h:125 -msgid "File Transfers" -msgstr "文件传输" - -#: ../src/gtkgui.glade.h:126 -msgid "File _Transfers" -msgstr "文件传输(_T)" - -#: ../src/gtkgui.glade.h:127 -msgid "Filter:" -msgstr "过滤器:" - -#: ../src/gtkgui.glade.h:128 -msgid "Font style:" -msgstr "字体风格:" - -#: ../src/gtkgui.glade.h:129 -msgid "Forbid him/her to see my status" -msgstr "ç¦æ­¢ä»–人看到我的状æ€" - -#: ../src/gtkgui.glade.h:130 -msgid "Format: YYYY-MM-DD" -msgstr "æ ¼å¼ï¼š YYYY-MM-DD" - -#: ../src/gtkgui.glade.h:131 -msgid "Frequently Asked Questions (online)" -msgstr "被频ç¹æ问的问题 (在线)" - -#: ../src/gtkgui.glade.h:132 -msgid "From:" -msgstr "从:" - -#: ../src/gtkgui.glade.h:133 -msgid "G_o" -msgstr "到(_O)" - -#: ../src/gtkgui.glade.h:134 ../src/notify.py:167 ../src/notify.py:189 -#: ../src/notify.py:201 ../src/tooltips.py:339 -msgid "Gajim" -msgstr "Gajim" - -#: ../src/gtkgui.glade.h:135 -msgid "Gajim Themes Customization" -msgstr "Gajim 主题自定义" - -#: ../src/gtkgui.glade.h:136 -msgid "" -"Gajim can send and receive meta-information related to a conversation you " -"may have with a contact. Here you can specify which chatstates you want to " -"send to the other party." -msgstr "" -"Gajim å¯ä»¥æ”¶å‘您与è”系人所进行谈è¯çš„相关信æ¯ã€‚此处您å¯æ˜¯æŒ‡å®šå‘给第三方的角" -"色。" - -#: ../src/gtkgui.glade.h:137 -msgid "" -"Gajim will automatically show new events by poping up the relative window" -msgstr "Gajim 会自动弹出相关窗å£ä»¥æ˜¾ç¤ºæ–°çš„事件" - -#: ../src/gtkgui.glade.h:138 -msgid "" -"Gajim will notify you for new events via a popup in the bottom right of the " -"screen" -msgstr "Gajim 会通过å±å¹•å³ä¸‹æ–¹çš„弹出气泡æ示新消æ¯" - -#: ../src/gtkgui.glade.h:139 -msgid "" -"Gajim will notify you via a popup window in the bottom right of the screen " -"about contacts that just signed in" -msgstr "Gajim 会通过å±å¹•å³ä¸‹æ–¹çš„弹出气泡æ示刚刚登录的è”系人" - -#: ../src/gtkgui.glade.h:140 -msgid "" -"Gajim will notify you via a popup window in the bottom right of the screen " -"about contacts that just signed out" -msgstr "Gajim 会通过å±å¹•å³ä¸‹æ–¹çš„弹出气泡æ示刚刚离开的è”系人" - -#: ../src/gtkgui.glade.h:141 -msgid "" -"Gajim will only change the icon of the contact that triggered the new event" -msgstr "Gajim 仅会改å˜è§¦å‘了新事件的è”系人图标" - -#: ../src/gtkgui.glade.h:142 -msgid "Gajim: Account Creation Wizard" -msgstr "Gajim: å¸æˆ·åˆ›å»ºå‘导" - -#. user has no group, print him in General -#: ../src/gtkgui.glade.h:143 ../src/roster_window.py:291 -#: ../src/roster_window.py:1183 ../src/roster_window.py:1405 -#: ../src/systray.py:286 -msgid "General" -msgstr "常规" - -#. Given Name -#: ../src/gtkgui.glade.h:145 -msgid "Given:" -msgstr "æ•™å:" - -#: ../src/gtkgui.glade.h:146 -msgid "Gone" -msgstr "已离开" - -#: ../src/gtkgui.glade.h:147 -msgid "Group:" -msgstr "群组" - -#: ../src/gtkgui.glade.h:148 -msgid "HTTP Connect" -msgstr "HTTP 连接" - -#: ../src/gtkgui.glade.h:149 -msgid "Help online" -msgstr "在线帮助" - -#: ../src/gtkgui.glade.h:150 -msgid "Hides the window" -msgstr "éšè—该窗å£" - -#: ../src/gtkgui.glade.h:151 -msgid "Homepage:" -msgstr "主页:" - -#: ../src/gtkgui.glade.h:152 -msgid "Hostname: " -msgstr "主机å:" - -#: ../src/gtkgui.glade.h:153 -msgid "I already have an account I want to use" -msgstr "我已ç»æ‹¥æœ‰äº†ä¸€ä¸ªå¸æˆ·" - -#: ../src/gtkgui.glade.h:154 -msgid "I want to _register for a new account" -msgstr "我想注册一个新å¸æˆ·(_R)" - -#: ../src/gtkgui.glade.h:155 -msgid "I would like to add you to my contact list." -msgstr "我想添加您到我的è”系人åå•" - -#: ../src/gtkgui.glade.h:156 -msgid "" -"If checked, Gajim will also broadcast some more IPs except from just your " -"IP, so file transfer has higher chances of working right." -msgstr "如选定, Gajim " - -#: ../src/gtkgui.glade.h:157 -msgid "" -"If checked, Gajim will display avatars of contacts in roster window and in " -"group chats" -msgstr "如果选定,Gajim 会在åå•å’Œç¾¤èŠçª—å£ä¸­æ˜¾ç¤ºåå•ä¸­çš„è”系人明细" - -#: ../src/gtkgui.glade.h:158 -msgid "" -"If checked, Gajim will display status messages of contacts under the contact " -"name in roster window and in group chats" -msgstr "如果选定,Gajim 会在åå•å’Œç¾¤èŠçª—å£ä¸­è”系人å下方显示è”系人状æ€æ¶ˆæ¯" - -#: ../src/gtkgui.glade.h:159 -msgid "If checked, Gajim will join this group chat on startup" -msgstr "如果选定,Gajim 会在å¯åŠ¨æ—¶åŠ å…¥èŠå¤©ç¾¤ç»„" - -#: ../src/gtkgui.glade.h:160 -msgid "If checked, Gajim will remember the password for this account" -msgstr "如果选定,Gajim 会记录本å¸æˆ·å¯†ç " - -#: ../src/gtkgui.glade.h:161 -msgid "" -"If checked, Gajim will remember the roster and chat window positions in the " -"screen and the sizes of them next time you run it" -msgstr "如果选定,Gajim 会在下次è¿è¡Œæ—¶ä½¿ç”¨æœ¬æ¬¡è®¾å®šçš„åå•åŠèŠå¤©çª—å£çš„ä½ç½®å’Œå¤§å°" - -#: ../src/gtkgui.glade.h:162 -msgid "" -"If checked, Gajim will send keep-alive packets so it prevents connection " -"timeout which results in disconnection" -msgstr "如果选定,Gajim 会å‘é€æ•°æ®åŒ…防止超时造æˆçš„连接断开" - -#: ../src/gtkgui.glade.h:163 -msgid "" -"If checked, Gajim will store the password in ~/.gajim/config with 'read' " -"permission only for you" -msgstr "" -"如果选定,Gajim 会以已读许å¯æ–¹å¼ä¸ºæ‚¨ä¸ªäººæŠŠå¯†ç ä¿å­˜åœ¨ ~/.gajim/config 文件中" - -#: ../src/gtkgui.glade.h:164 -msgid "" -"If checked, Gajim will use protocol-specific status icons. (eg. A contact " -"from MSN will have the equivalent msn icon for status online, away, busy, " -"etc...)" -msgstr "" -"如果选定,Gajim 会以å议特定方å¼æ˜¾ç¤ºçŠ¶æ€å›¾æ ‡ã€‚(例如,MSN è”系人会以 MSN 相åŒ" -"图标方å¼æ˜¾ç¤ºï¼Œä»¥è¡¨ç¤ºåœ¨çº¿ï¼Œç¦»å¼€ï¼Œå¿™ï¼Œç­‰ç­‰...)" - -#: ../src/gtkgui.glade.h:165 -msgid "" -"If checked, Gajim, when launched, will automatically connect to jabber using " -"this account" -msgstr "如果选定,Gajim 会在è¿è¡Œæ—¶ä½¿ç”¨æœ¬å¸æˆ·è‡ªåŠ¨è¿žæŽ¥ jabber" - -#: ../src/gtkgui.glade.h:166 -msgid "" -"If checked, any change to the global status (handled by the combobox at the " -"bottom of the roster window) will change the status of this account " -"accordingly" -msgstr "" -"如果选定,改å˜å…¨å±€çŠ¶æ€(在åå•çª—å£ä¸‹æ–¹å¤é€‰æ¡†ä¸­è°ƒèŠ‚)就会相应地改å˜å½“å‰å¸æˆ·çš„状" -"æ€" - -#: ../src/gtkgui.glade.h:167 -msgid "" -"If not disabled, Gajim will replace ascii smilies like ':)' with equivalent " -"animated or static graphical emoticons" -msgstr "如果ä¸ç¦ç”¨ï¼ŒGajim 会用相应的图片表情符替代字符表情,例如“:)â€" - -#: ../src/gtkgui.glade.h:168 -msgid "" -"If you have 2 or more accounts and it is checked, Gajim will list all " -"contacts as if you had one account" -msgstr "" -"如果选定,当您拥有多个å¸æˆ·æ—¶ï¼ŒGajim 会在列表中列出所有è”系人,而看上去他们就" -"åƒå±žäºŽåŒä¸€ä¸ªå¸æˆ·" - -#: ../src/gtkgui.glade.h:169 -msgid "Inactive" -msgstr "未活动的" - -#. Info/Query make the "IQ" initials. So translate like this 'YourLang/YourLang (Info/Query)'. Thanks (it's a tooltip so width is not a problem) -#: ../src/gtkgui.glade.h:171 -msgid "Info/Query" -msgstr "ä¿¡æ¯/查询" - -#: ../src/gtkgui.glade.h:172 -msgid "Information about you, as stored in the server" -msgstr "æœåŠ¡å™¨ä¸­ä¿å­˜çš„关于您的信æ¯" - -#: ../src/gtkgui.glade.h:173 -msgid "Invitation Received" -msgstr "收到邀请" - -#: ../src/gtkgui.glade.h:174 -msgid "Italic" -msgstr "斜体" - -#: ../src/gtkgui.glade.h:175 -msgid "Jabber" -msgstr "Jabber" - -#: ../src/gtkgui.glade.h:176 -msgid "Jabber ID:" -msgstr "Jabber ID" - -#: ../src/gtkgui.glade.h:178 -msgid "Join _Group Chat" -msgstr "加入群èŠ(_G)" - -#: ../src/gtkgui.glade.h:179 -msgid "Location" -msgstr "定ä½" - -#: ../src/gtkgui.glade.h:180 -msgid "" -"MUC\n" -"Messages" -msgstr "" -"MUC\n" -"消æ¯" - -#: ../src/gtkgui.glade.h:182 -msgid "" -"MUC Directed\n" -"Messages" -msgstr "" -"MUC 定å‘çš„\n" -"消æ¯" - -#: ../src/gtkgui.glade.h:184 -msgid "Ma_nage..." -msgstr "管ç†...(_N)" - -#: ../src/gtkgui.glade.h:185 -msgid "Manage Accounts" -msgstr "å¸æˆ·ç®¡ç†" - -#: ../src/gtkgui.glade.h:186 -msgid "Manage Bookmarks" -msgstr "书签管ç†" - -#: ../src/gtkgui.glade.h:187 -msgid "Manage Proxy Profiles" -msgstr "代ç†æœåŠ¡å™¨æ¨¡æ¿ç®¡ç†" - -#: ../src/gtkgui.glade.h:188 -msgid "Manage..." -msgstr "管ç†..." - -#. Middle Name -#: ../src/gtkgui.glade.h:190 -msgid "Middle:" -msgstr "中间:" - -#: ../src/gtkgui.glade.h:191 -msgid "Mo_derator" -msgstr "仲è£äºº(_D)" - -#: ../src/gtkgui.glade.h:192 -msgid "More" -msgstr "更多" - -#: ../src/gtkgui.glade.h:193 -msgid "Name:" -msgstr "å称:" - -#: ../src/gtkgui.glade.h:194 -msgid "" -"Never\n" -"Always\n" -"Per account\n" -"Per type" -msgstr "" -"从ä¸\n" -"总是\n" -"æ¯ä¸€ä¸ªå¸å·\n" -"æ¯ç§ç±»åž‹" - -#: ../src/gtkgui.glade.h:198 -msgid "Nickname:" -msgstr "昵称:" - -#. None means no proxy profile selected -#: ../src/gtkgui.glade.h:201 -msgid "None" -msgstr "(æ— )" - -#: ../src/gtkgui.glade.h:202 -msgid "Notify me about contacts that: " -msgstr "æ醒我关于è”系人:" - -#: ../src/gtkgui.glade.h:203 -msgid "Notify on new _Gmail e-mail" -msgstr "å‘é€æ–°çš„ Gmail 邮件进行通知(_G)" - -#: ../src/gtkgui.glade.h:204 -msgid "OS:" -msgstr "æ“作系统:" - -#: ../src/gtkgui.glade.h:205 -msgid "On every _message" -msgstr "对于æ¯æ¡æ¶ˆæ¯(_M)" - -#: ../src/gtkgui.glade.h:206 -msgid "One message _window:" -msgstr "消æ¯çª—å£ï¼š(_W)" - -#: ../src/gtkgui.glade.h:208 -msgid "Pass_word:" -msgstr "密ç (_W)" - -#: ../src/gtkgui.glade.h:209 -msgid "Passphrase" -msgstr "密文" - -#: ../src/gtkgui.glade.h:210 -msgid "Password:" -msgstr "密ç ï¼š" - -#: ../src/gtkgui.glade.h:211 ../src/tooltips.py:645 -msgid "Paused" -msgstr "已暂åœ" - -#: ../src/gtkgui.glade.h:212 -msgid "Personal Information" -msgstr "个人信æ¯" - -#: ../src/gtkgui.glade.h:213 -msgid "Phone No.:" -msgstr "电è¯å·ç ï¼š" - -#: ../src/gtkgui.glade.h:214 -msgid "Play _sounds" -msgstr "播放声音(_S)" - -#: ../src/gtkgui.glade.h:215 -msgid "Port: " -msgstr "端å£ï¼š" - -#: ../src/gtkgui.glade.h:216 -msgid "Position:" -msgstr "ä½ç½®ï¼š" - -#: ../src/gtkgui.glade.h:217 -msgid "Postal Code:" -msgstr "邮政编ç ï¼š" - -#: ../src/gtkgui.glade.h:218 -msgid "Preferences" -msgstr "å‚æ•°" - -#. Prefix in Name -#: ../src/gtkgui.glade.h:220 -msgid "Prefix:" -msgstr "å‰ç¼€ï¼š" - -#: ../src/gtkgui.glade.h:221 -msgid "Preset messages:" -msgstr "当å‰æ¶ˆæ¯ï¼š" - -#: ../src/gtkgui.glade.h:222 -msgid "Print time:" -msgstr "显示时间:" - -#: ../src/gtkgui.glade.h:223 -msgid "Priori_ty:" -msgstr "优先级(_T):" - -#: ../src/gtkgui.glade.h:224 -msgid "" -"Priority is used in Jabber to determine who gets the events from the jabber " -"server when two or more clients are connected using the same account; The " -"client with the highest priority gets the events" -msgstr "" -"优先级是当多个客户端使用åŒä¸€å¸æˆ·è¿žæŽ¥åˆ°æœåŠ¡å™¨æ—¶ï¼Œ Jabber 决定事件å“应对象的ä¾" -"æ®ã€‚" - -#: ../src/gtkgui.glade.h:225 -msgid "Profile, Avatar" -msgstr "模æ¿ï¼Œæ˜Žç»†" - -#: ../src/gtkgui.glade.h:226 -msgid "Protocol:" -msgstr "å议:" - -#: ../src/gtkgui.glade.h:227 -msgid "Proxy:" -msgstr "代ç†æœåŠ¡å™¨ï¼š" - -#: ../src/gtkgui.glade.h:228 -msgid "Query Builder..." -msgstr "查询生æˆå™¨..." - -#: ../src/gtkgui.glade.h:229 -msgid "Recently:" -msgstr "最近:" - -#: ../src/gtkgui.glade.h:230 -msgid "Register to" -msgstr "注册到" - -#: ../src/gtkgui.glade.h:231 -msgid "Remove account _only from Gajim" -msgstr "仅从 Gajim 移除å¸æˆ·(_O)" - -#: ../src/gtkgui.glade.h:232 -msgid "Remove account from Gajim and from _server" -msgstr "åŒæ—¶ä»Ž Gajim å’ŒæœåŠ¡å™¨ç§»é™¤å¸æˆ·(_S)" - -#: ../src/gtkgui.glade.h:233 -msgid "Remove file transfer from the list." -msgstr "从列表移除文件传输" - -#: ../src/gtkgui.glade.h:234 -msgid "Removes completed, canceled and failed file transfers from the list" -msgstr "从列表移除已完æˆï¼Œå·²å–消和失败的文件传输" - -#: ../src/gtkgui.glade.h:235 -msgid "Reply to this message" -msgstr "回å¤æœ¬æ¡æ¶ˆæ¯" - -#: ../src/gtkgui.glade.h:236 -msgid "Resour_ce: " -msgstr "资æº(_C):" - -#: ../src/gtkgui.glade.h:237 -msgid "" -"Resource is sent to the Jabber server in order to separate the same JID in " -"two or more parts depending on the number of the clients connected in the " -"same server with the same account. So you might be connected in the same " -"account with resource 'Home' and 'Work' at the same time. The resource which " -"has the highest priority will get the events. (see below)" -msgstr "" -"资æºè¢«å‘å¾€ Jabber æœåŠ¡å™¨åŽï¼Œé€šè¿‡åŒæ—¶è¿žæŽ¥åˆ°æœåŠ¡å™¨çš„多个客户端将 JID 分æˆè‹¥å¹²éƒ¨" -"分。您å¯ä»¥åˆ©ç”¨â€œå®¶åº­â€å’Œâ€œå·¥ä½œâ€ä¸¤ä¸ªèµ„æºåŒæ—¶è¿žæŽ¥åˆ°æœåŠ¡å™¨ã€‚拥有更高优先级的资æºå¾—" -"到æœåŠ¡å™¨çš„事件å“应。" - -#: ../src/gtkgui.glade.h:238 -msgid "Resource:" -msgstr "资æºï¼š" - -#: ../src/gtkgui.glade.h:239 -msgid "Role:" -msgstr "角色:" - -#: ../src/gtkgui.glade.h:240 -msgid "Room Configuration" -msgstr "房间设置:" - -#: ../src/gtkgui.glade.h:241 -msgid "Room:" -msgstr "房间:" - -#: ../src/gtkgui.glade.h:242 -msgid "Save _passphrase (insecure)" -msgstr "ä¿å­˜å¯†æ–‡(_P)(ä¸å®‰å…¨)" - -#: ../src/gtkgui.glade.h:243 -msgid "Save _position and size for roster and chat windows" -msgstr "ä¿å­˜åå•å’ŒèŠå¤©çª—å£çš„ä½ç½®åŠå¤§å°(_P)" - -#: ../src/gtkgui.glade.h:244 -msgid "Save as Preset..." -msgstr "å¦å­˜ä¸º..." - -#: ../src/gtkgui.glade.h:245 -msgid "Save conversation _logs for all contacts" -msgstr "ä¿å­˜ä¸Žæ‰€æœ‰è”系人的èŠå¤©è®°å½•(_L)" - -#: ../src/gtkgui.glade.h:246 -msgid "Save pass_word" -msgstr "ä¿å­˜å¯†ç (_W)" - -#: ../src/gtkgui.glade.h:247 -msgid "Search" -msgstr "查找" - -#: ../src/gtkgui.glade.h:248 -msgid "Sen_d" -msgstr "å‘é€(_D)" - -#: ../src/gtkgui.glade.h:249 -msgid "Send File" -msgstr "å‘é€æ–‡ä»¶" - -#: ../src/gtkgui.glade.h:250 -msgid "Send Single _Message" -msgstr "å‘é€å•æ¡æ¶ˆæ¯(_M)" - -#: ../src/gtkgui.glade.h:251 -msgid "Send Single _Message..." -msgstr "å‘é€ä¸€æ¡æ¶ˆæ¯...(_M)" - -#: ../src/gtkgui.glade.h:252 -msgid "Send _File" -msgstr "å‘é€æ–‡ä»¶(_F)" - -#: ../src/gtkgui.glade.h:253 -msgid "Send keep-alive packets" -msgstr "å‘é€é˜²è¶…时数æ®åŒ…" - -#: ../src/gtkgui.glade.h:254 -msgid "Send message" -msgstr "å‘é€æ¶ˆæ¯" - -#: ../src/gtkgui.glade.h:255 -msgid "Send message and close window" -msgstr "å‘é€æ¶ˆæ¯å¹¶å…³é—­çª—å£" - -#: ../src/gtkgui.glade.h:256 -msgid "Sends a message to currently connected users to this server" -msgstr "å‘é€æ¶ˆæ¯è‡³è¿žæŽ¥åˆ°å½“å‰æœåŠ¡å™¨çš„用户" - -#: ../src/gtkgui.glade.h:257 -msgid "Server:" -msgstr "æœåŠ¡å™¨ï¼š" - -#: ../src/gtkgui.glade.h:258 -msgid "Servers Features" -msgstr "æœåŠ¡å™¨è®¾å®š" - -#: ../src/gtkgui.glade.h:259 -msgid "Set MOTD" -msgstr "设定 MOTD" - -#: ../src/gtkgui.glade.h:260 -msgid "Set _Avatar" -msgstr "详细设置" - -#: ../src/gtkgui.glade.h:261 -msgid "Set my profile when I connect" -msgstr "当连接上时设置我的模版" - -#: ../src/gtkgui.glade.h:262 -msgid "Sets Message of the Day" -msgstr "设定æ¯æ—¥æ¶ˆæ¯" - -#: ../src/gtkgui.glade.h:263 -msgid "Show All Pending _Events" -msgstr "显示所有未决事件" - -#: ../src/gtkgui.glade.h:264 -msgid "Show _Offline Contacts" -msgstr "显示离线è”系人" - -#: ../src/gtkgui.glade.h:265 -msgid "Show _Roster" -msgstr "显示åå•(_R)" - -#: ../src/gtkgui.glade.h:266 -msgid "Show _XML Console" -msgstr "显示 XML 控制å°(_X)" - -#: ../src/gtkgui.glade.h:267 -msgid "Show only in _roster" -msgstr "åªæ˜¾ç¤ºåå•ä¸­(_R)" - -#: ../src/gtkgui.glade.h:268 -msgid "Shows a list of file transfers between you and other" -msgstr "显示文件传输列表" - -#: ../src/gtkgui.glade.h:269 -msgid "Sign _in" -msgstr "登录(I)" - -#: ../src/gtkgui.glade.h:270 -msgid "Sign _out" -msgstr "退出登录" - -#: ../src/gtkgui.glade.h:271 -msgid "Sta_tus" -msgstr "状æ€(_T)" - -#: ../src/gtkgui.glade.h:272 -msgid "Start _Chat" -msgstr "开始群èŠ(_C)" - -#: ../src/gtkgui.glade.h:273 -msgid "State:" -msgstr "州:" - -#: ../src/gtkgui.glade.h:274 -msgid "Status" -msgstr "状æ€" - -#: ../src/gtkgui.glade.h:275 -msgid "Status:" -msgstr "状æ€ï¼š" - -#: ../src/gtkgui.glade.h:276 -msgid "Street:" -msgstr "è¡—é“:" - -#: ../src/gtkgui.glade.h:277 -msgid "Subject:" -msgstr "主题:" - -#: ../src/gtkgui.glade.h:278 -msgid "Subscription Request" -msgstr "认è¯è¯·æ±‚" - -#: ../src/gtkgui.glade.h:279 -msgid "Subscription:" -msgstr "认è¯ï¼š" - -#. Suffix in Name -#: ../src/gtkgui.glade.h:281 -msgid "Suffix:" -msgstr "åŽç¼€ï¼š" - -#: ../src/gtkgui.glade.h:282 -msgid "Synch_ronize account status with global status" -msgstr "å°†å¸æˆ·çŠ¶æ€ä¸Žå…¨å±€çŠ¶æ€åŒæ­¥(_R)" - -#: ../src/gtkgui.glade.h:283 -msgid "T_heme:" -msgstr "主题:(_H)" - -#: ../src/gtkgui.glade.h:284 -msgid "Text _color:" -msgstr "文本颜色(_C):" - -#: ../src/gtkgui.glade.h:285 -msgid "Text _font:" -msgstr "文本字体(_F):" - -#: ../src/gtkgui.glade.h:286 -msgid "The auto away status message" -msgstr "自动离开状æ€æ¶ˆæ¯" - -#: ../src/gtkgui.glade.h:287 -msgid "The auto not available status message" -msgstr "自动ä¸å¯ç”¨çŠ¶æ€æ¶ˆæ¯" - -#: ../src/gtkgui.glade.h:288 -msgid "" -"This action removes single file transfer from the list. If the transfer is " -"active, it is first stopped and then removed" -msgstr "该æ“作会从列表中移除文件传输。如果该传输处于活动状æ€ï¼Œå°†è¢«å…ˆä¸­æ­¢åŽç§»é™¤" - -#: ../src/gtkgui.glade.h:289 -msgid "Title:" -msgstr "标题:" - -#: ../src/gtkgui.glade.h:290 -msgid "To:" -msgstr "到:" - -#: ../src/gtkgui.glade.h:291 -msgid "Toggle Open_PGP Encryption" -msgstr "绑定 OpenPGP 加密 (_P)" - -#: ../src/gtkgui.glade.h:292 -msgid "Type:" -msgstr "类型:" - -#: ../src/gtkgui.glade.h:293 -msgid "Underline" -msgstr "下划线" - -#: ../src/gtkgui.glade.h:294 -msgid "Update MOTD" -msgstr "æ›´æ–° MOTD" - -#: ../src/gtkgui.glade.h:295 -msgid "Updates Message of the Day" -msgstr "æ›´æ–°æ¯æ—¥æ¶ˆæ¯" - -#: ../src/gtkgui.glade.h:296 -msgid "Use _SSL (legacy)" -msgstr "使用 SSL(_S) (优先)" - -#: ../src/gtkgui.glade.h:297 -msgid "Use _transports iconsets" -msgstr "使用代ç†çš„图标设定(_T)" - -#: ../src/gtkgui.glade.h:298 -msgid "Use authentication" -msgstr "使用验è¯" - -#: ../src/gtkgui.glade.h:299 -msgid "Use custom hostname/port" -msgstr "使用自定义主机å/端å£å·" - -#: ../src/gtkgui.glade.h:300 -msgid "Use file transfer proxies" -msgstr "使用文件传输代ç†æœåŠ¡å™¨" - -#: ../src/gtkgui.glade.h:301 -msgid "Use t_rayicon (aka. notification area icon)" -msgstr "使用托盘图标(aka. æ示区域图表)(_R)" - -#: ../src/gtkgui.glade.h:302 -msgid "User ID:" -msgstr "用户 ID" - -#: ../src/gtkgui.glade.h:303 -msgid "When a file transfer is complete show a popup notification" -msgstr "传输完æˆåŽæ˜¾ç¤ºå¼¹å‡ºæ°”泡æ示" - -#: ../src/gtkgui.glade.h:304 -msgid "" -"When a new event (message, file transfer request etc..) is received, the " -"following methods may be used to inform you about it. Please note that " -"events about new messages only occur if it is a new message from a contact " -"you are not already chatting with" -msgstr "" -"下列方å¼å¯ç”¨æ¥æ示您收到新的事件(消æ¯ï¼Œæ–‡ä»¶ä¼ è¾“请求等)。请注æ„,åªæœ‰æœªå’Œæ‚¨" -"进行èŠå¤©çš„用户å‘é€çš„新消æ¯æ‰ä¼šè§¦å‘新消æ¯äº‹ä»¶" - -#: ../src/gtkgui.glade.h:305 -msgid "When new event is received" -msgstr "当新事件å‘生时" - -#: ../src/gtkgui.glade.h:306 -msgid "Work" -msgstr "工作" - -#: ../src/gtkgui.glade.h:307 -msgid "" -"You need to have an account in order to connect\n" -"to the Jabber network." -msgstr "" -"您需è¦ä¸€ä¸ªå¸æˆ·æ¥è¿žæŽ¥\n" -"Jabber 网络" - -#: ../src/gtkgui.glade.h:309 -msgid "Your JID:" -msgstr "您的 JID:" - -#. Make sure the character after "_" is not M/m (conflicts with Alt+M that is supposed to show the Emoticon Selector) -#: ../src/gtkgui.glade.h:311 -msgid "_Actions" -msgstr "动作(_A)" - -#: ../src/gtkgui.glade.h:312 -msgid "_Add Contact..." -msgstr "添加è”系人(_A)..." - -#: ../src/gtkgui.glade.h:313 -msgid "_Add to Roster" -msgstr "添加至åå•(_A)" - -#: ../src/gtkgui.glade.h:314 -msgid "_Address:" -msgstr "地å€(_A):" - -#: ../src/gtkgui.glade.h:315 -msgid "_Admin" -msgstr "管ç†(_A)" - -#: ../src/gtkgui.glade.h:316 -msgid "_Administrator" -msgstr "管ç†å‘˜(_A)" - -#: ../src/gtkgui.glade.h:317 -msgid "_Advanced" -msgstr "高级(_A)" - -#: ../src/gtkgui.glade.h:318 -msgid "_After time:" -msgstr "在该时间åŽï¼š(_A)" - -#: ../src/gtkgui.glade.h:319 -msgid "_Authorize" -msgstr "授æƒ(_A)" - -#: ../src/gtkgui.glade.h:320 -msgid "_Background:" -msgstr "背景(_B)" - -#: ../src/gtkgui.glade.h:321 -msgid "_Ban" -msgstr "å°ç¦(_B)" - -#: ../src/gtkgui.glade.h:322 -msgid "_Before time:" -msgstr "在该时间å‰ï¼š(_B)" - -#: ../src/gtkgui.glade.h:323 -msgid "_Bookmark This Room" -msgstr "将本房间加入书签(_B)" - -#: ../src/gtkgui.glade.h:324 -msgid "_Browser:" -msgstr "æµè§ˆå™¨(_B):" - -#: ../src/gtkgui.glade.h:325 -msgid "_Cancel" -msgstr "å–消(_C)" - -#: ../src/gtkgui.glade.h:326 -msgid "_Compact View Alt+C" -msgstr "紧凑模å¼(_C) Alt+C" - -#: ../src/gtkgui.glade.h:327 -msgid "_Contents" -msgstr "内容(_C)" - -#: ../src/gtkgui.glade.h:329 -msgid "_Copy JID/Email Address" -msgstr "å¤åˆ¶ JID/电å­é‚®ä»¶åœ°å€(_C)" - -#: ../src/gtkgui.glade.h:330 -msgid "_Copy Link Location" -msgstr "å¤åˆ¶è¿žæŽ¥ä½ç½®(_C)" - -#: ../src/gtkgui.glade.h:331 -msgid "_Deny" -msgstr "æ‹’ç»(_D)" - -#: ../src/gtkgui.glade.h:332 -msgid "_Discover Services" -msgstr "å‘掘æœåŠ¡(_D)" - -#: ../src/gtkgui.glade.h:333 -msgid "_Discover Services..." -msgstr "å‘掘æœåŠ¡(_D)..." - -#: ../src/gtkgui.glade.h:335 -msgid "_FAQ" -msgstr "常è§é—®é¢˜(_A)" - -#: ../src/gtkgui.glade.h:336 -msgid "_File manager:" -msgstr "文件管ç†å™¨ï¼š(_F)" - -#: ../src/gtkgui.glade.h:337 -msgid "_Filter:" -msgstr "过滤器(_F):" - -#: ../src/gtkgui.glade.h:338 -msgid "_Finish" -msgstr "完æˆ(_F)" - -#: ../src/gtkgui.glade.h:339 -msgid "_Font:" -msgstr "å­—å·ï¼š(_F)" - -#: ../src/gtkgui.glade.h:340 -msgid "_Group Chat" -msgstr "群èŠ(_G)" - -#: ../src/gtkgui.glade.h:341 -msgid "_Help" -msgstr "帮助(_H)" - -#: ../src/gtkgui.glade.h:342 -msgid "_Highlight misspelled words" -msgstr "拼写检查(_H)" - -#: ../src/gtkgui.glade.h:343 -msgid "_History" -msgstr "历å²(_H)" - -#: ../src/gtkgui.glade.h:344 -msgid "_Host:" -msgstr "主机(_H):" - -#. Info/Query: all(?) jabber xml start with Welcome to Gajim History Logs Manager\n" -"\n" -"You can select logs from the left and/or search database from below.\n" -"\n" -"WARNING:\n" -"If you plan to do massive deletions, please make sure Gajim is not running. " -"Generally avoid deletions with contacts you currently chat with." +#: ../src/gtkgui_helpers.py:717 +msgid "Extension not supported" msgstr "" -"欢迎使用 Gajim 历å²è®°å½•ç®¡ç†å™¨\n" -"\n" -"You can select logs from the left and/or search database from below.\n" -"\n" -"WARNING:\n" -"If you plan to do massive deletions, please make sure Gajim is not running. " -"Generally avoid deletions with contacts you currently chat with." -#: ../src/history_manager.glade.h:7 -msgid "Delete" -msgstr "删除" +#: ../src/gtkgui_helpers.py:718 +#, python-format +msgid "Image cannot be saved in %(type)s format. Save as %(new_filename)s?" +msgstr "" -#: ../src/history_manager.glade.h:8 -msgid "Export" -msgstr "输出" +#: ../src/gtkgui_helpers.py:727 +#, fuzzy +msgid "Save Image as..." +msgstr "å¦å­˜ä¸º..." -#: ../src/history_manager.glade.h:9 -msgid "Gajim History Logs Manager" -msgstr "Gajim 历å²è®°å½•ç®¡ç†å™¨" - -#: ../src/history_manager.glade.h:10 -msgid "_Search Database" -msgstr "æœç´¢æ•°æ®åº“(_S)" - -#: ../src/history_manager.py:58 +#: ../src/history_manager.py:61 msgid "Cannot find history logs database" msgstr "无法找到历å²è®°å½•æ•°æ®åº“" #. holds jid -#: ../src/history_manager.py:102 +#: ../src/history_manager.py:104 msgid "Contacts" msgstr "è”系人" #. holds time -#: ../src/history_manager.py:115 ../src/history_manager.py:155 -#: ../src/history_window.py:94 +#: ../src/history_manager.py:117 ../src/history_manager.py:157 +#: ../src/history_window.py:85 msgid "Date" msgstr "日期" #. holds nickname -#: ../src/history_manager.py:121 ../src/history_manager.py:173 +#: ../src/history_manager.py:123 ../src/history_manager.py:175 msgid "Nickname" msgstr "昵称" #. holds message -#: ../src/history_manager.py:129 ../src/history_manager.py:161 -#: ../src/history_window.py:102 +#: ../src/history_manager.py:131 ../src/history_manager.py:163 +#: ../src/history_window.py:93 msgid "Message" msgstr "消æ¯" #. holds subject -#: ../src/history_manager.py:136 ../src/history_manager.py:167 +#: ../src/history_manager.py:138 ../src/history_manager.py:169 msgid "Subject" msgstr "主题" -#: ../src/history_manager.py:181 +#: ../src/history_manager.py:183 msgid "" "Do you want to clean up the database? (STRONGLY NOT RECOMMENDED IF GAJIM IS " "RUNNING)" msgstr "您确定è¦æ¸…除数æ®åº“?(强烈建议 GAJIM è¿è¡Œæ—¶ä¸è¦è¿›è¡Œæ­¤æ“作)" -#: ../src/history_manager.py:183 +#: ../src/history_manager.py:185 msgid "" "Normally allocated database size will not be freed, it will just become " "reusable. If you really want to reduce database filesize, click YES, else " @@ -3583,146 +4083,181 @@ msgstr "" "\n" "如果您点击“是â€ï¼Œè¯·ç­‰å¾…..." -#: ../src/history_manager.py:389 +#: ../src/history_manager.py:391 msgid "Exporting History Logs..." msgstr "输出历å²è®°å½•..." -#: ../src/history_manager.py:465 +#: ../src/history_manager.py:467 #, python-format msgid "%(who)s on %(time)s said: %(message)s\n" msgstr "%(who)s 在 %(time)s 时说: %(message)s\n" -#: ../src/history_manager.py:465 +#: ../src/history_manager.py:467 msgid "who" msgstr "è°" -#: ../src/history_manager.py:503 +#: ../src/history_manager.py:505 msgid "Do you really want to delete logs of the selected contact?" msgid_plural "Do you really want to delete logs of the selected contacts?" msgstr[0] "您确定è¦åˆ é™¤æ‰€é€‰å®šè”系人的历å²è®°å½•ï¼Ÿ" -#: ../src/history_manager.py:507 ../src/history_manager.py:543 +#: ../src/history_manager.py:509 ../src/history_manager.py:545 msgid "This is an irreversible operation." msgstr "该æ“作是ä¸å¯æ’¤æ¶ˆçš„。" -#: ../src/history_manager.py:540 +#: ../src/history_manager.py:542 msgid "Do you really want to delete the selected message?" msgid_plural "Do you really want to delete the selected messages?" msgstr[0] "您确定è¦åˆ é™¤æ‰€é€‰å®šçš„消æ¯ï¼Ÿ" -#: ../src/history_window.py:111 ../src/history_window.py:113 +#: ../src/history_window.py:102 ../src/history_window.py:104 #, python-format msgid "Conversation History with %s" msgstr "与 %s çš„èŠå¤©åŽ†å²" -#: ../src/history_window.py:265 +#: ../src/history_window.py:258 #, python-format msgid "%(nick)s is now %(status)s: %(status_msg)s" msgstr "%(nick)s 的状æ€æ˜¯ %(status)s: %(status_msg)s" -#: ../src/history_window.py:269 +#: ../src/history_window.py:262 ../src/notify.py:113 #, python-format msgid "%(nick)s is now %(status)s" msgstr "%(nick)s 的状æ€æ˜¯ %(status)s" -#: ../src/history_window.py:275 +#: ../src/history_window.py:268 #, python-format msgid "Status is now: %(status)s: %(status_msg)s" msgstr "现在状æ€ï¼š%(status)s:%(status_msg)s" -#: ../src/history_window.py:278 +#: ../src/history_window.py:271 #, python-format msgid "Status is now: %(status)s" msgstr "现在状æ€ï¼š %(status)s " -#: ../src/message_window.py:233 +#: ../src/message_window.py:244 msgid "Messages" msgstr "消æ¯" -#: ../src/message_window.py:234 +#: ../src/message_window.py:245 #, python-format msgid "%s - Gajim" msgstr "%s - Gajim" -#: ../src/roster_window.py:140 +#: ../src/notify.py:111 +#, fuzzy, python-format +msgid "%(nick)s Changed Status" +msgstr "%(nick)s 的状æ€æ˜¯ %(status)s" + +#: ../src/notify.py:121 +#, python-format +msgid "%(nickname)s Signed In" +msgstr "%(nickname)s 上线了" + +#: ../src/notify.py:129 +#, python-format +msgid "%(nickname)s Signed Out" +msgstr "%(nickname)s 离开了" + +#: ../src/notify.py:141 +#, python-format +msgid "New Single Message from %(nickname)s" +msgstr " %(nickname)s å‘æ¥çš„新消æ¯" + +#: ../src/notify.py:150 +#, python-format +msgid "New Private Message from room %s" +msgstr "æ¥è‡ªæˆ¿é—´ %s 的新个人消æ¯" + +#: ../src/notify.py:151 +#, python-format +msgid "%(nickname)s: %(message)s" +msgstr "%(nickname)s: %(message)s" + +#: ../src/notify.py:157 +#, python-format +msgid "New Message from %(nickname)s" +msgstr "æ¥è‡ª %(nickname)s 的新消æ¯" + +#: ../src/roster_window.py:131 msgid "Merged accounts" msgstr "å·²åˆå¹¶çš„å¸æˆ·" -#: ../src/roster_window.py:289 ../src/common/helpers.py:42 +#: ../src/roster_window.py:288 ../src/common/helpers.py:39 msgid "Observers" msgstr "æ—观者" -#: ../src/roster_window.py:542 +#: ../src/roster_window.py:544 #, python-format msgid "You are already in room %s" msgstr "房间“%sâ€å·²åœ¨æ‚¨çš„书签中。" -#: ../src/roster_window.py:546 ../src/roster_window.py:2262 +#: ../src/roster_window.py:548 ../src/roster_window.py:2280 msgid "You cannot join a room while you are invisible" msgstr "éšèº«æ—¶æ— æ³•åŠ å…¥æˆ¿é—´ã€‚" #. the 'manage gc bookmarks' item is showed #. below to avoid duplicate code #. add -#: ../src/roster_window.py:735 +#: ../src/roster_window.py:748 #, python-format msgid "to %s account" msgstr "至å¸æˆ· %s" #. disco -#: ../src/roster_window.py:742 +#: ../src/roster_window.py:755 #, python-format msgid "using %s account" msgstr "使用账户 %s" -#. new message +#. new chat #. for chat_with #. for single message -#: ../src/roster_window.py:750 ../src/systray.py:194 ../src/systray.py:201 +#: ../src/roster_window.py:763 ../src/systray.py:193 ../src/systray.py:198 #, python-format msgid "using account %s" msgstr "使用账户 %s" #. profile, avatar -#: ../src/roster_window.py:759 +#: ../src/roster_window.py:772 #, python-format msgid "of account %s" msgstr "å¸æˆ· %s çš„" -#: ../src/roster_window.py:818 +#: ../src/roster_window.py:831 msgid "Manage Bookmarks..." msgstr "书签管ç†..." -#: ../src/roster_window.py:842 +#: ../src/roster_window.py:855 #, python-format msgid "for account %s" msgstr "为å¸æˆ· %s" #. History manager -#: ../src/roster_window.py:863 +#: ../src/roster_window.py:876 msgid "History Manager" msgstr "历å²ç®¡ç†å™¨" -#: ../src/roster_window.py:872 +#: ../src/roster_window.py:885 msgid "_Join New Room" msgstr "加入新房间(_J)" -#: ../src/roster_window.py:1158 +#: ../src/roster_window.py:1159 #, python-format msgid "Transport \"%s\" will be removed" msgstr "代ç†â€œ%sâ€å°†è¢«ç§»é™¤" -#: ../src/roster_window.py:1158 +#: ../src/roster_window.py:1159 msgid "" "You will no longer be able to send and receive messages to contacts from " "this transport." msgstr "您将无法从此代ç†æ”¶å‘消æ¯ã€‚" -#: ../src/roster_window.py:1200 +#: ../src/roster_window.py:1201 msgid "Assign OpenPGP Key" msgstr "指定您的 OpenPGP 钥匙" -#: ../src/roster_window.py:1201 +#: ../src/roster_window.py:1202 msgid "Select a key to apply to the contact" msgstr "选择一个键应用于è”系人。" @@ -3746,232 +4281,237 @@ msgstr "退出登录(_O)" msgid "_Change Status Message" msgstr "更改状æ€æ¶ˆæ¯(_C)" -#: ../src/roster_window.py:1617 +#: ../src/roster_window.py:1621 msgid "Authorization has been sent" msgstr "授æƒå‘é€æˆåŠŸ" -#: ../src/roster_window.py:1618 +#: ../src/roster_window.py:1622 #, python-format msgid "Now \"%s\" will know your status." msgstr "现在“%sâ€å°†çŸ¥é“您的状æ€ã€‚" -#: ../src/roster_window.py:1642 +#: ../src/roster_window.py:1646 msgid "Subscription request has been sent" msgstr "认è¯è¯·æ±‚å·²å‘出" -#: ../src/roster_window.py:1643 +#: ../src/roster_window.py:1647 #, python-format msgid "If \"%s\" accepts this request you will know his or her status." msgstr "如果“%sâ€æŽ¥å—此请求,您将知é“ä»–/她的状æ€ã€‚" -#: ../src/roster_window.py:1654 +#: ../src/roster_window.py:1658 msgid "Authorization has been removed" msgstr "授æƒè¢«ç§»é™¤" -#: ../src/roster_window.py:1655 +#: ../src/roster_window.py:1659 #, python-format msgid "Now \"%s\" will always see you as offline." msgstr "“%s†将一直看到您的状æ€ä¸ºç¦»çº¿ã€‚" -#: ../src/roster_window.py:1824 +#: ../src/roster_window.py:1822 #, python-format msgid "Contact \"%s\" will be removed from your roster" msgstr "è”系人“%sâ€å°†ä»Žæ‚¨çš„åå•ä¸­ç§»é™¤" -#: ../src/roster_window.py:1828 +#: ../src/roster_window.py:1826 msgid "" "By removing this contact you also remove authorization resulting in him or " "her always seeing you as offline." msgstr "移除此è”系人的åŒæ—¶å°†ç§»é™¤è®¤è¯ï¼Œå¯¼è‡´ä»–/她将一直看到您为离线。" -#: ../src/roster_window.py:1832 +#: ../src/roster_window.py:1830 msgid "" "By removing this contact you also by default remove authorization resulting " "in him or her always seeing you as offline." msgstr "移除此è”系人的åŒæ—¶å°†é»˜è®¤ç§»é™¤è®¤è¯ï¼Œå¯¼è‡´ä»–/她将一直看到您为离线。" -#: ../src/roster_window.py:1833 +#: ../src/roster_window.py:1831 msgid "I want this contact to know my status after removal" msgstr "我想让此è”系人在被移除之åŽä»ç„¶çŸ¥é“我的状æ€" -#: ../src/roster_window.py:1901 +#: ../src/roster_window.py:1899 msgid "Passphrase Required" msgstr "è¦æ±‚密文" -#: ../src/roster_window.py:1902 +#: ../src/roster_window.py:1900 #, python-format msgid "Enter GPG key passphrase for account %s." msgstr "为账户 %s 输入 GPG 密文字段" -#: ../src/roster_window.py:1907 +#: ../src/roster_window.py:1905 msgid "Save passphrase" msgstr "ä¿å­˜å¯†æ–‡" -#: ../src/roster_window.py:1915 +#: ../src/roster_window.py:1913 msgid "Wrong Passphrase" msgstr "错误字段" -#: ../src/roster_window.py:1916 +#: ../src/roster_window.py:1914 msgid "Please retype your GPG passphrase or press Cancel." msgstr "请é‡æ–°è¾“入您的 GPG 字段或点“å–消â€" -#: ../src/roster_window.py:1964 ../src/roster_window.py:2021 +#: ../src/roster_window.py:1963 ../src/roster_window.py:2020 msgid "You are participating in one or more group chats" msgstr "您在一或多个群èŠä¸­" -#: ../src/roster_window.py:1965 ../src/roster_window.py:2022 +#: ../src/roster_window.py:1964 ../src/roster_window.py:2021 msgid "" "Changing your status to invisible will result in disconnection from those " "group chats. Are you sure you want to go invisible?" msgstr "éšèº«å°†ä»Žæ‰€æœ‰ç¾¤èŠä¸­æ–­å¼€ã€‚确定éšèº«ï¼Ÿ" -#: ../src/roster_window.py:1981 +#: ../src/roster_window.py:1980 msgid "No account available" msgstr "没有有效账户" -#: ../src/roster_window.py:1982 +#: ../src/roster_window.py:1981 msgid "You must create an account before you can chat with other contacts." msgstr "您必须在与他人èŠå¤©å‰æ–°å»ºè´¦æˆ·ã€‚" -#: ../src/roster_window.py:2427 ../src/roster_window.py:2433 +#: ../src/roster_window.py:2452 ../src/roster_window.py:2458 msgid "You have unread messages" msgstr "您有未读消æ¯" -#: ../src/roster_window.py:2428 ../src/roster_window.py:2434 +#: ../src/roster_window.py:2453 ../src/roster_window.py:2459 msgid "" "Messages will only be available for reading them later if you have history " "enabled." msgstr "å¯ç”¨åŽ†å²åŽæ‰èƒ½å†æ¬¡é‡è¯»æ¶ˆæ¯" -#: ../src/roster_window.py:3184 +#: ../src/roster_window.py:3231 #, python-format msgid "Drop %s in group %s" msgstr "å°† %s 放在群 %s 中" -#: ../src/roster_window.py:3191 +#: ../src/roster_window.py:3238 #, python-format msgid "Make %s and %s metacontacts" msgstr "创建 %s å’Œ %s å…ƒè”系人" -#: ../src/roster_window.py:3358 +#: ../src/roster_window.py:3408 msgid "Change Status Message..." msgstr "更改状æ€æ¶ˆæ¯..." -#: ../src/systray.py:155 +#: ../src/systray.py:154 msgid "_Change Status Message..." msgstr "更改状æ€æ¶ˆæ¯_(C)..." -#: ../src/systray.py:236 +#: ../src/systray.py:231 msgid "Hide this menu" msgstr "éšè—本èœå•" -#: ../src/systraywin32.py:266 ../src/systraywin32.py:285 -#: ../src/tooltips.py:315 +#: ../src/systraywin32.py:261 ../src/systraywin32.py:280 #, python-format msgid "Gajim - %d unread message" msgid_plural "Gajim - %d unread messages" msgstr[0] "Gajim - %d æ¡æœªè¯»æ¶ˆæ¯ " -#: ../src/tooltips.py:321 -#, python-format -msgid "Gajim - %d unread single message" -msgid_plural "Gajim - %d unread single messages" +#: ../src/tooltips.py:326 +#, fuzzy, python-format +msgid " %d unread message" +msgid_plural " %d unread messages" +msgstr[0] "Gajim - %d æ¡æœªè¯»æ¶ˆæ¯ " + +#: ../src/tooltips.py:332 +#, fuzzy, python-format +msgid " %d unread single message" +msgid_plural " %d unread single messages" msgstr[0] "Gajim - %d æ¡æœªè¯»æ¶ˆæ¯" -#: ../src/tooltips.py:327 -#, python-format -msgid "Gajim - %d unread group chat message" -msgid_plural "Gajim - %d unread group chat messages" +#: ../src/tooltips.py:338 +#, fuzzy, python-format +msgid " %d unread group chat message" +msgid_plural " %d unread group chat messages" msgstr[0] "Gajim - %d æ¡æœªè¯»ç¾¤èŠæ¶ˆæ¯" -#: ../src/tooltips.py:333 -#, python-format -msgid "Gajim - %d unread private message" -msgid_plural "Gajim - %d unread private messages" +#: ../src/tooltips.py:344 +#, fuzzy, python-format +msgid " %d unread private message" +msgid_plural " %d unread private messages" msgstr[0] "Gajim - %d 未读ç§äººæ¶ˆæ¯" -#: ../src/tooltips.py:348 ../src/tooltips.py:350 +#: ../src/tooltips.py:359 ../src/tooltips.py:361 #, python-format msgid "Gajim - %s" msgstr "Gajim - %s" -#: ../src/tooltips.py:383 +#: ../src/tooltips.py:395 msgid "Role: " msgstr "角色:" -#: ../src/tooltips.py:384 +#: ../src/tooltips.py:396 msgid "Affiliation: " msgstr "会ç±ï¼š" -#: ../src/tooltips.py:386 ../src/tooltips.py:518 +#: ../src/tooltips.py:398 ../src/tooltips.py:537 msgid "Resource: " msgstr "资æºï¼š" -#: ../src/tooltips.py:394 ../src/tooltips.py:521 ../src/tooltips.py:543 -#: ../src/tooltips.py:654 +#: ../src/tooltips.py:407 ../src/tooltips.py:540 ../src/tooltips.py:565 +#: ../src/tooltips.py:676 msgid "Status: " msgstr "状æ€" -#: ../src/tooltips.py:501 +#: ../src/tooltips.py:514 msgid "Subscription: " msgstr "认è¯ï¼š" -#: ../src/tooltips.py:510 +#: ../src/tooltips.py:523 msgid "OpenPGP: " msgstr "OpenPGP: " -#: ../src/tooltips.py:548 +#: ../src/tooltips.py:570 #, python-format msgid "Last status on %s" msgstr " %s 的最åŽçŠ¶æ€" -#: ../src/tooltips.py:550 +#: ../src/tooltips.py:572 #, python-format msgid "Since %s" msgstr "自 %s" -#: ../src/tooltips.py:610 +#: ../src/tooltips.py:632 msgid "Download" msgstr "下载" -#: ../src/tooltips.py:616 +#: ../src/tooltips.py:638 msgid "Upload" msgstr "上传" -#: ../src/tooltips.py:623 +#: ../src/tooltips.py:645 msgid "Type: " msgstr "类型" -#: ../src/tooltips.py:629 +#: ../src/tooltips.py:651 msgid "Transferred: " msgstr "已传输:" -#: ../src/tooltips.py:632 ../src/tooltips.py:653 +#: ../src/tooltips.py:654 ../src/tooltips.py:675 msgid "Not started" msgstr "未开始" -#: ../src/tooltips.py:636 +#: ../src/tooltips.py:658 msgid "Stopped" msgstr "å·²åœæ­¢" -#: ../src/tooltips.py:638 ../src/tooltips.py:641 +#: ../src/tooltips.py:660 ../src/tooltips.py:663 msgid "Completed" msgstr "已完æˆ" #. stalled is not paused. it is like 'frozen' it stopped alone -#: ../src/tooltips.py:649 +#: ../src/tooltips.py:671 msgid "Stalled" msgstr "已冻结" -#: ../src/tooltips.py:651 +#: ../src/tooltips.py:673 msgid "Transferring" msgstr "传输中" -#: ../src/tooltips.py:683 +#: ../src/tooltips.py:705 msgid "This service has not yet responded with detailed information" msgstr "æœåŠ¡æ— è¯¦ç»†ä¿¡æ¯åº”ç­”" -#: ../src/tooltips.py:686 +#: ../src/tooltips.py:708 msgid "" "This service could not respond with detailed information.\n" "It is most likely legacy or broken" @@ -3980,104 +4520,104 @@ msgstr "" "它å¯èƒ½æ˜¯ç»§æ‰¿æˆ–æŸåçš„" #. keep identation -#: ../src/vcard.py:186 +#: ../src/vcard.py:188 msgid "Could not load image" msgstr "无法读å–图片" -#: ../src/vcard.py:262 +#: ../src/vcard.py:289 msgid "?Client:Unknown" msgstr "?Client: 未知" -#: ../src/vcard.py:264 +#: ../src/vcard.py:291 msgid "?OS:Unknown" msgstr "?OS: 未知" -#: ../src/vcard.py:281 +#: ../src/vcard.py:308 #, python-format msgid "since %s" msgstr "自 %s" -#: ../src/vcard.py:305 +#: ../src/vcard.py:332 msgid "" "This contact is interested in your presence information, but you are not " "interested in his/her presence" msgstr "æ­¤è”系人对您的状æ€ä¿¡æ¯æ„Ÿå…´è¶£ï¼Œä½†æ‚¨ä¸å…³å¿ƒä»–/她的状æ€" -#: ../src/vcard.py:307 +#: ../src/vcard.py:334 msgid "" "You are interested in the contact's presence information, but he/she is not " "interested in yours" msgstr "您对此è”系人的状æ€ä¿¡æ¯æ„Ÿå…´è¶£ï¼Œä½†ä»–/她ä¸å…³å¿ƒæ‚¨çš„状æ€" -#: ../src/vcard.py:309 +#: ../src/vcard.py:336 msgid "You and the contact are interested in each other's presence information" msgstr "您与此è”系人åŒæ—¶å¯¹å¯¹æ–¹çš„状æ€ä¿¡æ¯æ„Ÿå…´è¶£" #. None -#: ../src/vcard.py:311 +#: ../src/vcard.py:338 msgid "" "You are not interested in the contact's presence, and neither he/she is " "interested in yours" msgstr "您与他/她互ä¸å…³å¿ƒå¯¹æ–¹çš„状æ€ä¿¡æ¯" -#: ../src/vcard.py:320 +#: ../src/vcard.py:347 msgid "You are waiting contact's answer about your subscription request" msgstr "等待è”系人回应您的认è¯è¯·æ±‚" -#: ../src/vcard.py:332 ../src/vcard.py:355 +#: ../src/vcard.py:359 ../src/vcard.py:382 msgid " resource with priority " msgstr "带有优先级的资æº" -#: ../src/vcard.py:434 +#: ../src/vcard.py:458 msgid "Without a connection you can not publish your contact information." msgstr "无法脱机å‘布个人信æ¯ã€‚" -#: ../src/vcard.py:463 +#: ../src/vcard.py:491 msgid "Without a connection, you can not get your contact information." msgstr "无法脱机获å–个人信æ¯ã€‚" -#: ../src/vcard.py:467 +#: ../src/vcard.py:495 msgid "Personal details" msgstr "个人明细" -#: ../src/common/check_paths.py:39 +#: ../src/common/check_paths.py:35 msgid "creating logs database" msgstr "建立日志数æ®åº“" -#: ../src/common/check_paths.py:84 ../src/common/check_paths.py:95 -#: ../src/common/check_paths.py:102 +#: ../src/common/check_paths.py:82 ../src/common/check_paths.py:93 +#: ../src/common/check_paths.py:100 #, python-format msgid "%s is file but it should be a directory" msgstr "%s 应为文件但它应为一个目录" -#: ../src/common/check_paths.py:85 ../src/common/check_paths.py:96 -#: ../src/common/check_paths.py:103 ../src/common/check_paths.py:110 +#: ../src/common/check_paths.py:83 ../src/common/check_paths.py:94 +#: ../src/common/check_paths.py:101 ../src/common/check_paths.py:109 msgid "Gajim will now exit" msgstr "Gajim å³å°†é€€å‡º" -#: ../src/common/check_paths.py:109 +#: ../src/common/check_paths.py:108 #, python-format msgid "%s is directory but should be file" msgstr "%s 应为文件但它是一个目录" -#: ../src/common/check_paths.py:125 +#: ../src/common/check_paths.py:124 #, python-format msgid "creating %s directory" msgstr "正在建立 %s 目录" -#: ../src/common/exceptions.py:35 +#: ../src/common/exceptions.py:32 msgid "pysqlite2 (aka python-pysqlite2) dependency is missing. Exiting..." msgstr "pysqlite2 (aka python-pysqlite2) 匹é…缺失。正在退出..." -#: ../src/common/exceptions.py:43 +#: ../src/common/exceptions.py:40 msgid "Service not available: Gajim is not running, or remote_control is False" msgstr "æœåŠ¡ä¸å¯ç”¨ï¼šGajimä¸åœ¨è¿è¡Œï¼Œæˆ–远程控制错误" -#: ../src/common/exceptions.py:51 +#: ../src/common/exceptions.py:48 msgid "D-Bus is not present on this machine or python module is missing" msgstr "D-Bus 在此机器上ä¸å¯ç”¨æˆ– Python 模å—缺失" -#: ../src/common/exceptions.py:59 +#: ../src/common/exceptions.py:56 msgid "" "Session bus is not available.\n" "Try reading http://trac.gajim.org/wiki/GajimDBus" @@ -4085,35 +4625,64 @@ msgstr "" "会è¯è¿›ç¨‹ä¸å¯ç”¨ã€‚\n" "您å¯ä»¥å‚考 http://trac.gajim.org/wiki/GajimDBus" -#: ../src/common/config.py:53 +#: ../src/common/config.py:51 msgid "Use DBus and Notification-Daemon to show notifications" msgstr "使用 D-Bus 和通知进程显示通知" -#: ../src/common/config.py:57 +#: ../src/common/config.py:55 msgid "Time in minutes, after which your status changes to away." msgstr "转æ¢çŠ¶æ€ä¸ºâ€œç¦»å¼€â€ä¹‹å‰çš„时间(分钟)。" -#: ../src/common/config.py:58 +#: ../src/common/config.py:56 msgid "Away as a result of being idle" msgstr "å‘呆导致的离开" -#: ../src/common/config.py:60 +#: ../src/common/config.py:58 msgid "Time in minutes, after which your status changes to not available." msgstr "转æ¢çŠ¶æ€ä¸ºâ€œä¸å¯ç”¨â€ä¹‹å‰çš„时间(分钟)" -#: ../src/common/config.py:61 +#: ../src/common/config.py:59 msgid "Not available as a result of being idle" msgstr "å‘呆导致的ä¸å¯ç”¨" -#: ../src/common/config.py:88 +#: ../src/common/config.py:77 +msgid "List (space separated) of rows (accounts and groups) that are collapsed" +msgstr "" + +#: ../src/common/config.py:83 +msgid "" +"'always' - print time for every message.\n" +"'sometimes' - print time every print_ichat_every_foo_minutes minute.\n" +"'never' - never print time." +msgstr "" + +#: ../src/common/config.py:84 +msgid "" +"Value of fuzziness from 1 to 4 or 0 to disable fuzzyclock. 1 is the most " +"precise clock, 4 the less precise one." +msgstr "" + +#: ../src/common/config.py:87 msgid "Treat * / _ pairs as possible formatting characters." msgstr "如å¯èƒ½å¯¹ * / _ æ ¼å¼åŒ–字串。" -#: ../src/common/config.py:89 +#: ../src/common/config.py:88 msgid "" "If True, do not remove */_ . So *abc* will be bold but with * * not removed." msgstr "如果为真,ä¸è¦ç§»é™¤ */_。所以 *abc* 将被加粗但 * * ä¸ä¼šè¢«ç§»é™¤" +#: ../src/common/config.py:98 +msgid "" +"Character to add after nickname when using nick completion (tab) in group " +"chat" +msgstr "" + +#: ../src/common/config.py:99 +msgid "" +"Character to propose to add after desired nickname when desired nickname is " +"used by someone else in group chat" +msgstr "" + #: ../src/common/config.py:131 msgid "Add * and [n] in roster title?" msgstr "加入 * å’Œ [n] 在åå•æ ‡é¢˜ï¼Ÿ" @@ -4150,6 +4719,12 @@ msgstr "" msgid "If checked, Gajim can be controlled remotely using gajim-remote." msgstr "如果选中,Gajim å¯ä»¥æŽ¥å— gajim-remote 远程控制。" +#: ../src/common/config.py:145 +msgid "" +"When not printing time for every message (print_time==sometimes), print it " +"every x minutes" +msgstr "" + #: ../src/common/config.py:146 msgid "Ask before closing a group chat tab/window." msgstr "关闭群èŠæ ‡ç­¾/窗å£å‰è¯¢é—®ã€‚" @@ -4181,7 +4756,8 @@ msgid "Show tab when only one conversation?" msgstr "åªæœ‰ä¸€ä¸ªä¼šè¯æ—¶æ˜¾ç¤ºæ ‡ç­¾ï¼Ÿ" #: ../src/common/config.py:162 -msgid "Show tab border if one conversation?" +#, fuzzy +msgid "Show tabbed notebook border in chat windows?" msgstr "一个会è¯æ—¶æ˜¾ç¤ºæ ‡ç­¾è¾¹æ¡†ï¼Ÿ" #: ../src/common/config.py:163 @@ -4227,12 +4803,25 @@ msgid "" "last time or has one cached that is too old." msgstr "如选是, Gajim 会为æ¯ä¸€ä¸ªç¼“存过久或上次未获得明细的è”系人请求明细" -#. FIXME: remove you and make it Gajim will not; and/or his or *her* status messages +#: ../src/common/config.py:183 +#, fuzzy +msgid "" +"If False, Gajim will no longer print status line in chats when a contact " +"changes his or her status and/or his or her status message." +msgstr "如选å¦ï¼Œæ‚¨å°†æ— æ³•çœ‹è§ä¸Žæ‚¨èŠå¤©çš„è”系人å˜æ›´å…¶çŠ¶æ€å’ŒçŠ¶æ€æ¶ˆæ¯ã€‚" + #: ../src/common/config.py:184 msgid "" -"If False, you will no longer see status line in chats when a contact changes " -"his or her status and/or his status message." -msgstr "如选å¦ï¼Œæ‚¨å°†æ— æ³•çœ‹è§ä¸Žæ‚¨èŠå¤©çš„è”系人å˜æ›´å…¶çŠ¶æ€å’ŒçŠ¶æ€æ¶ˆæ¯ã€‚" +"can be \"none\", \"all\" or \"in_and_out\". If \"none\", Gajim will no " +"longer print status line in groupchats when a member changes his or her " +"status and/or his or her status message. If \"all\" Gajim will print all " +"status messages. If \"in_and_out\", gajim will only print FOO enters/leaves " +"room" +msgstr "" + +#: ../src/common/config.py:187 +msgid "Don't show avatar for the transport itself." +msgstr "" #: ../src/common/config.py:189 msgid "" @@ -4251,7 +4840,8 @@ msgstr "" "有人加入被密ç ä¿æŠ¤çš„房间时,Jabberd1.4 ä¸éœ€è¦ sha ä¿¡æ¯ã€‚将此选项置为“å¦â€ä»¥åœ" "止在群èŠä¸­å‘é€ sha ä¿¡æ¯" -#: ../src/common/config.py:193 +#. always, never, peracct, pertype should not be translated +#: ../src/common/config.py:194 msgid "" "Controls the window where new messages are placed.\n" "'always' - All messages are sent to a single window.\n" @@ -4268,40 +4858,52 @@ msgstr "" "'æ¯ç§ç±»åž‹' - æ¯ç§ç±»åž‹çš„æ¶ˆæ¯ (例如, å•ç‹¬èŠå¤© åŠ ç¾¤èŠ) 都å‘é€åˆ°ä¸€ä¸ªå•ç‹¬çš„窗å£ã€‚" "注æ„,改å˜è¯¥é€‰é¡¹åŽå¿…é¡»é‡å¯ Gajim 使设置生效" -#: ../src/common/config.py:194 +#: ../src/common/config.py:195 msgid "If False, you will no longer see the avatar in the chat window" msgstr "如选å¦ï¼Œæ‚¨å°†ä¸ä¼šåœ¨çª—å£ä¸­çœ‹åˆ°æ˜Žç»†" -#: ../src/common/config.py:195 +#: ../src/common/config.py:196 msgid "If True, pressing the escape key closes a tab/window" msgstr "如选是,请按 escape 键关闭标签/窗å£" -#: ../src/common/config.py:196 +#: ../src/common/config.py:197 msgid "Hides the buttons in group chat window" msgstr "在群èŠçª—å£ä¸­éšè—按钮" -#: ../src/common/config.py:197 +#: ../src/common/config.py:198 msgid "Hides the buttons in two persons chat window" msgstr "在åŒäººèŠå¤©çª—å£ä¸­éšè—按钮" -#: ../src/common/config.py:198 +#: ../src/common/config.py:199 msgid "Hides the banner in a group chat window" msgstr "在群èŠçª—å£ä¸­éšè—标语" -#: ../src/common/config.py:199 +#: ../src/common/config.py:200 msgid "Hides the banner in two persons chat window" msgstr "在åŒäººèŠå¤©çª—å£ä¸­éšè—标语" -#: ../src/common/config.py:200 +#: ../src/common/config.py:201 msgid "Hides the room occupants list in groupchat window" msgstr "在群èŠçª—å£ä¸­éšè—房主列表" +#: ../src/common/config.py:202 +msgid "Merge consecutive nickname in chat window" +msgstr "" + +#: ../src/common/config.py:203 +msgid "Indentation when using merge consecutive nickame" +msgstr "" + +#: ../src/common/config.py:204 +msgid "List of colors that will be used to color nicknames in groupchats" +msgstr "" + #. yes, no, ask -#: ../src/common/config.py:233 +#: ../src/common/config.py:237 msgid "Jabberd2 workaround" msgstr "Jabberd2 工作区" -#: ../src/common/config.py:237 +#: ../src/common/config.py:241 msgid "" "If checked, Gajim will use your IP and proxies defined in " "file_transfer_proxies option for file transfer." @@ -4309,66 +4911,66 @@ msgstr "" "如果选定, Gajim 将会使把您当å‰çš„ IP 和代ç†æœåŠ¡å™¨è®¾ç½®ç”¨äºŽæ–‡ä»¶ä¼ è¾“代ç†æœåŠ¡å™¨è®¾" "ç½®(_P)" -#: ../src/common/config.py:290 +#: ../src/common/config.py:297 msgid "Sleeping" msgstr "正在ç¡è§‰" -#: ../src/common/config.py:291 +#: ../src/common/config.py:298 msgid "Back soon" msgstr "马上回æ¥" -#: ../src/common/config.py:291 +#: ../src/common/config.py:298 msgid "Back in some minutes." msgstr "很快回æ¥" -#: ../src/common/config.py:292 +#: ../src/common/config.py:299 msgid "Eating" msgstr "åƒé¥­" -#: ../src/common/config.py:292 +#: ../src/common/config.py:299 msgid "I'm eating, so leave me a message." msgstr "正在åƒé¥­ï¼Œè¯·ç•™è¨€" -#: ../src/common/config.py:293 +#: ../src/common/config.py:300 msgid "Movie" msgstr "电影" -#: ../src/common/config.py:293 +#: ../src/common/config.py:300 msgid "I'm watching a movie." msgstr "正在看电影" -#: ../src/common/config.py:294 +#: ../src/common/config.py:301 msgid "Working" msgstr "工作" -#: ../src/common/config.py:294 +#: ../src/common/config.py:301 msgid "I'm working." msgstr "工作中" -#: ../src/common/config.py:295 +#: ../src/common/config.py:302 msgid "Phone" msgstr "电è¯" -#: ../src/common/config.py:295 +#: ../src/common/config.py:302 msgid "I'm on the phone." msgstr "我在打电è¯" -#: ../src/common/config.py:296 +#: ../src/common/config.py:303 msgid "Out" msgstr "外出" -#: ../src/common/config.py:296 +#: ../src/common/config.py:303 msgid "I'm out enjoying life" msgstr "我正在享å—户外生活" -#: ../src/common/config.py:305 +#: ../src/common/config.py:312 msgid "" "Sound to play when a MUC message contains one of the words in " "muc_highlight_words, or when a MUC message contains your nickname." msgstr "" "当收到的 MUC (多用户会议) 消æ¯åŒ…å« â€œMUC 高亮å•è¯â€æˆ–您的昵称时播放的声音。" -#: ../src/common/config.py:306 +#: ../src/common/config.py:313 msgid "" "Sound to play when any MUC message arrives. (This setting is taken into " "account only if notify_on_all_muc_messages is True)" @@ -4376,96 +4978,96 @@ msgstr "" "MUC (多用户会议)消æ¯åˆ°è¾¾æ—¶æ’­æ”¾çš„声音。(此设置åªåœ¨â€œæ示所有 MUC 消æ¯â€ä¸ºçœŸçš„" "时候对生效)" -#: ../src/common/config.py:314 ../src/common/optparser.py:181 +#: ../src/common/config.py:321 ../src/common/optparser.py:185 msgid "green" msgstr "绿色" -#: ../src/common/config.py:318 ../src/common/optparser.py:167 +#: ../src/common/config.py:325 ../src/common/optparser.py:171 msgid "grocery" msgstr "æ‚货店" -#: ../src/common/config.py:322 +#: ../src/common/config.py:329 msgid "human" msgstr "人类" -#: ../src/common/config.py:326 +#: ../src/common/config.py:333 msgid "marine" msgstr "æµ·æ´‹" -#: ../src/common/connection.py:152 +#: ../src/common/connection.py:172 #, python-format msgid "Connection with account \"%s\" has been lost" msgstr "å¸æˆ·â€œ%sâ€çš„连接丢失" -#: ../src/common/connection.py:153 +#: ../src/common/connection.py:173 msgid "To continue sending and receiving messages, you will need to reconnect." msgstr "您需è¦é‡æ–°è¿žæŽ¥æ‰èƒ½ç»§ç»­æ”¶å‘消æ¯ã€‚" -#: ../src/common/connection.py:169 ../src/common/connection.py:195 +#: ../src/common/connection.py:185 ../src/common/connection.py:211 #, python-format msgid "Transport %s answered wrongly to register request." msgstr "æœåŠ¡ä»£ç† %s 对注册请求的å“应错误" #. wrong answer -#: ../src/common/connection.py:194 +#: ../src/common/connection.py:210 msgid "Invalid answer" msgstr "无效答案" -#: ../src/common/connection.py:348 ../src/common/connection.py:384 -#: ../src/common/connection.py:754 +#: ../src/common/connection.py:397 ../src/common/connection.py:433 +#: ../src/common/connection.py:857 #, python-format msgid "Could not connect to \"%s\"" msgstr "尚未连接到“%sâ€" -#: ../src/common/connection.py:362 +#: ../src/common/connection.py:411 #, python-format msgid "Connected to server %s:%s with %s" msgstr "连接到æœåŠ¡å™¨ %s:%s 通过 %s" -#: ../src/common/connection.py:385 +#: ../src/common/connection.py:434 msgid "Check your connection or try again later" msgstr "检查连接并ç¨åŽé‡è¯•" -#: ../src/common/connection.py:410 +#: ../src/common/connection.py:459 #, python-format msgid "Authentication failed with \"%s\"" msgstr "“%sâ€ç™»å½•éªŒè¯å¤±è´¥" -#: ../src/common/connection.py:411 +#: ../src/common/connection.py:460 msgid "Please check your login and password for correctness." msgstr "请检查登录信æ¯å’Œå¯†ç çš„正确性" #. We didn't set a passphrase -#: ../src/common/connection.py:487 +#: ../src/common/connection.py:573 msgid "OpenPGP passphrase was not given" msgstr "未获得 OpenPGP 密文" #. %s is the account name here -#: ../src/common/connection.py:489 +#: ../src/common/connection.py:575 #, python-format msgid "You will be connected to %s without OpenPGP." msgstr "您将在无 OpenPGP 情况下连接到 %s。" #. do not show I'm invisible! -#: ../src/common/connection.py:526 +#: ../src/common/connection.py:612 msgid "invisible" msgstr "éšèº«" -#: ../src/common/connection.py:527 +#: ../src/common/connection.py:613 msgid "offline" msgstr "离线" -#: ../src/common/connection.py:528 +#: ../src/common/connection.py:614 #, python-format msgid "I'm %s" msgstr "我是 %s" #. we're not english -#: ../src/common/connection.py:611 +#: ../src/common/connection.py:699 msgid "[This message is encrypted]" msgstr "[本æ¡æ¶ˆæ¯å·²åŠ å¯†]" -#: ../src/common/connection.py:649 +#: ../src/common/connection.py:742 #, python-format msgid "" "Subject: %s\n" @@ -4474,223 +5076,308 @@ msgstr "" "主题:%s\n" "%s" -#: ../src/common/connection.py:699 +#: ../src/common/connection.py:795 ../src/common/connection_handlers.py:1511 msgid "I would like to add you to my roster." msgstr "我申请添加您到è”系人åå•" -#: ../src/common/helpers.py:103 +#: ../src/common/connection_handlers.py:49 +#, fuzzy +msgid "Unable to load idle module" +msgstr "无法加入房间" + +#: ../src/common/connection_handlers.py:581 +#, python-format +msgid "Registration information for transport %s has not arrived in time" +msgstr "ä»£ç† %s 所需的注册信æ¯æœªæŒ‰æ—¶æŠµè¾¾" + +#. password required to join +#. we are banned +#. room does not exist +#: ../src/common/connection_handlers.py:1450 +#: ../src/common/connection_handlers.py:1453 +#: ../src/common/connection_handlers.py:1456 +#: ../src/common/connection_handlers.py:1459 +#: ../src/common/connection_handlers.py:1462 +#: ../src/common/connection_handlers.py:1465 +#: ../src/common/connection_handlers.py:1473 +msgid "Unable to join room" +msgstr "无法加入房间" + +#: ../src/common/connection_handlers.py:1451 +msgid "A password is required to join this room." +msgstr "该房间è¦æ±‚密ç æ‰èƒ½åŠ å…¥" + +#: ../src/common/connection_handlers.py:1454 +msgid "You are banned from this room." +msgstr "您被该房间å°ç¦ã€‚" + +#: ../src/common/connection_handlers.py:1457 +msgid "Such room does not exist." +msgstr "ä¸å­˜åœ¨è¿™æ ·çš„房间" + +#: ../src/common/connection_handlers.py:1460 +msgid "Room creation is restricted." +msgstr "房间创建å—é™ã€‚" + +#: ../src/common/connection_handlers.py:1463 +msgid "Your registered nickname must be used." +msgstr "您注册的昵称已被使用" + +#: ../src/common/connection_handlers.py:1466 +msgid "You are not in the members list." +msgstr "您ä¸åœ¨æˆå‘˜åå•ä¸­ã€‚" + +#: ../src/common/connection_handlers.py:1474 +msgid "" +"Your desired nickname is in use or registered by another occupant.\n" +"Please specify another nickname below:" +msgstr "" +"您申请的昵称正在使用或被其他人å æœ‰ã€‚\n" +"从下列昵称中å¦å¤–指定一个:" + +#. BE CAREFUL: no con.updateRosterItem() in a callback +#: ../src/common/connection_handlers.py:1519 +#, python-format +msgid "we are now subscribed to %s" +msgstr " %s 请求认è¯" + +#: ../src/common/connection_handlers.py:1521 +#, python-format +msgid "unsubscribe request from %s" +msgstr " %s 请求解除认è¯" + +#: ../src/common/connection_handlers.py:1523 +#, python-format +msgid "we are now unsubscribed from %s" +msgstr "%s 解除了认è¯" + +#: ../src/common/connection_handlers.py:1680 +#, python-format +msgid "" +"JID %s is not RFC compliant. It will not be added to your roster. Use roster " +"management tools such as http://jru.jabberstudio.org/ to remove it" +msgstr "" +"JID %s ä¸è¯†é… RFC,未被加入åå•ã€‚请使用诸如 http://jru.jabberstudio.org/ çš„å" +"å•ç®¡ç†å·¥å…·ç§»é™¤ã€‚" + +#: ../src/common/helpers.py:100 msgid "Invalid character in username." msgstr "无效的用户å特å¾ã€‚" -#: ../src/common/helpers.py:108 +#: ../src/common/helpers.py:105 msgid "Server address required." msgstr "此处需è¦æœåŠ¡å™¨åœ°å€" -#: ../src/common/helpers.py:113 +#: ../src/common/helpers.py:110 msgid "Invalid character in hostname." msgstr "无效的主机å特å¾ã€‚" -#: ../src/common/helpers.py:119 +#: ../src/common/helpers.py:116 msgid "Invalid character in resource." msgstr "无效的资æºç‰¹å¾ã€‚" #. GiB means gibibyte -#: ../src/common/helpers.py:159 +#: ../src/common/helpers.py:156 #, python-format msgid "%s GiB" msgstr "%s GiB" #. GB means gigabyte -#: ../src/common/helpers.py:162 +#: ../src/common/helpers.py:159 #, python-format msgid "%s GB" msgstr "%s GB" #. MiB means mibibyte -#: ../src/common/helpers.py:166 +#: ../src/common/helpers.py:163 #, python-format msgid "%s MiB" msgstr "%s MiB" #. MB means megabyte -#: ../src/common/helpers.py:169 +#: ../src/common/helpers.py:166 #, python-format msgid "%s MB" msgstr "%s MB" #. KiB means kibibyte -#: ../src/common/helpers.py:173 +#: ../src/common/helpers.py:170 #, python-format msgid "%s KiB" msgstr "%s KiB" #. KB means kilo bytes -#: ../src/common/helpers.py:176 +#: ../src/common/helpers.py:173 #, python-format msgid "%s KB" msgstr "%s KB" #. B means bytes -#: ../src/common/helpers.py:179 +#: ../src/common/helpers.py:176 #, python-format msgid "%s B" msgstr "%s B" -#: ../src/common/helpers.py:189 +#: ../src/common/helpers.py:205 msgid "_Busy" msgstr "忙碌(_B)" -#: ../src/common/helpers.py:191 +#: ../src/common/helpers.py:207 msgid "Busy" msgstr "忙碌" -#: ../src/common/helpers.py:194 +#: ../src/common/helpers.py:210 msgid "_Not Available" msgstr "ä¸å¯ç”¨(_N)" -#: ../src/common/helpers.py:196 +#: ../src/common/helpers.py:212 msgid "Not Available" msgstr "ä¸å¯ç”¨" -#: ../src/common/helpers.py:199 +#: ../src/common/helpers.py:215 msgid "_Free for Chat" msgstr "自由èŠå¤©(_F)" -#: ../src/common/helpers.py:201 +#: ../src/common/helpers.py:217 msgid "Free for Chat" msgstr "自由èŠå¤©" -#: ../src/common/helpers.py:204 +#: ../src/common/helpers.py:220 msgid "_Available" msgstr "在线(_A)" -#: ../src/common/helpers.py:206 +#: ../src/common/helpers.py:222 msgid "Available" msgstr "在线" -#: ../src/common/helpers.py:208 +#: ../src/common/helpers.py:224 msgid "Connecting" msgstr "正在连接" -#: ../src/common/helpers.py:211 +#: ../src/common/helpers.py:227 msgid "A_way" msgstr "离开(_A)" -#: ../src/common/helpers.py:213 +#: ../src/common/helpers.py:229 msgid "Away" msgstr "离开" -#: ../src/common/helpers.py:216 +#: ../src/common/helpers.py:232 msgid "_Offline" msgstr "离线(_O)" -#: ../src/common/helpers.py:218 +#: ../src/common/helpers.py:234 msgid "Offline" msgstr "离线" -#: ../src/common/helpers.py:221 +#: ../src/common/helpers.py:237 msgid "_Invisible" msgstr "éšèº«(_I)" -#: ../src/common/helpers.py:223 -msgid "Invisible" -msgstr "éšèº«" - -#: ../src/common/helpers.py:227 +#: ../src/common/helpers.py:243 msgid "?contact has status:Unknown" msgstr "?contact has status: 未知" -#: ../src/common/helpers.py:229 +#: ../src/common/helpers.py:245 msgid "?contact has status:Has errors" msgstr "?contact has status: 有错误" -#: ../src/common/helpers.py:234 +#: ../src/common/helpers.py:250 msgid "?Subscription we already have:None" msgstr "?Subscription we already have: æ— " -#: ../src/common/helpers.py:236 +#: ../src/common/helpers.py:252 msgid "To" msgstr "到" -#: ../src/common/helpers.py:238 +#: ../src/common/helpers.py:254 msgid "From" msgstr "æ¥è‡ª" -#: ../src/common/helpers.py:240 +#: ../src/common/helpers.py:256 msgid "Both" msgstr "åŒæ–¹" -#: ../src/common/helpers.py:248 +#: ../src/common/helpers.py:264 msgid "?Ask (for Subscription):None" msgstr "?Ask (for Subscription): æ— " -#: ../src/common/helpers.py:250 +#: ../src/common/helpers.py:266 msgid "Subscribe" msgstr "认è¯" -#: ../src/common/helpers.py:259 +#: ../src/common/helpers.py:275 msgid "?Group Chat Contact Role:None" msgstr "?Group Chat Contact Role: æ— " -#: ../src/common/helpers.py:262 +#: ../src/common/helpers.py:278 msgid "Moderators" msgstr "主æŒäºº" -#: ../src/common/helpers.py:264 +#: ../src/common/helpers.py:280 msgid "Moderator" msgstr "主æŒäºº" -#: ../src/common/helpers.py:267 +#: ../src/common/helpers.py:283 msgid "Participants" msgstr "å‚与者" -#: ../src/common/helpers.py:269 +#: ../src/common/helpers.py:285 msgid "Participant" msgstr "å‚与者" -#: ../src/common/helpers.py:272 +#: ../src/common/helpers.py:288 msgid "Visitors" msgstr "访客" -#: ../src/common/helpers.py:274 +#: ../src/common/helpers.py:290 msgid "Visitor" msgstr "访客" -#: ../src/common/helpers.py:310 +#: ../src/common/helpers.py:326 msgid "is paying attention to the conversation" msgstr "正在专注于èŠå¤©" -#: ../src/common/helpers.py:312 +#: ../src/common/helpers.py:328 msgid "is doing something else" msgstr "在åšå…¶ä»–事" -#: ../src/common/helpers.py:314 +#: ../src/common/helpers.py:330 msgid "is composing a message..." msgstr "正在输入消æ¯..." #. paused means he or she was compoing but has stopped for a while -#: ../src/common/helpers.py:317 +#: ../src/common/helpers.py:333 msgid "paused composing a message" msgstr "中断输入消æ¯" -#: ../src/common/helpers.py:319 +#: ../src/common/helpers.py:335 msgid "has closed the chat window or tab" msgstr "关闭了èŠå¤©çª—å£æˆ–标签" #. we talk about a file -#: ../src/common/optparser.py:62 +#: ../src/common/optparser.py:60 #, python-format msgid "error: cannot open %s for reading" msgstr "错误:无法按读打开文件 %s" -#: ../src/common/optparser.py:167 +#: ../src/common/optparser.py:171 msgid "gtk+" msgstr "gtk+" -#: ../src/common/optparser.py:176 ../src/common/optparser.py:177 +#: ../src/common/optparser.py:180 ../src/common/optparser.py:181 msgid "cyan" msgstr "é’色" +#~ msgid "Automatically authorize contact" +#~ msgstr "自动å‘è”系人授æƒ" + +#~ msgid "Send File" +#~ msgstr "å‘é€æ–‡ä»¶" + +#~ msgid "Underline" +#~ msgstr "下划线" + #~ msgid "Would you like to overwrite it?" #~ msgstr "确认覆盖该文件?" @@ -4704,9 +5391,6 @@ msgstr "é’色" #~ msgid "Please modify your special notification below" #~ msgstr "请选择一个选项:" -#~ msgid "Ad_vanced Actions" -#~ msgstr "高级动作(_V)" - #~ msgid "Delete Message of the Day" #~ msgstr "删除æ¯æ—¥æ¶ˆæ¯" @@ -4777,57 +5461,6 @@ msgstr "é’色" #~ msgid "Session bus is not available" #~ msgstr "会è¯æ€»çº¿ä¸å¯ç”¨" -#, fuzzy -#~ msgid "Unable to load idle module" -#~ msgstr "无法加入房间" - -#~ msgid "Unable to join room" -#~ msgstr "无法加入房间" - -#~ msgid "A password is required to join this room." -#~ msgstr "该房间è¦æ±‚密ç æ‰èƒ½åŠ å…¥" - -#~ msgid "You are banned from this room." -#~ msgstr "您被该房间å°ç¦ã€‚" - -#~ msgid "Such room does not exist." -#~ msgstr "ä¸å­˜åœ¨è¿™æ ·çš„房间" - -#~ msgid "Room creation is restricted." -#~ msgstr "房间创建å—é™ã€‚" - -#~ msgid "Your registered nickname must be used." -#~ msgstr "您注册的昵称已被使用" - -#~ msgid "You are not in the members list." -#~ msgstr "您ä¸åœ¨æˆå‘˜åå•ä¸­ã€‚" - -#~ msgid "" -#~ "Your desired nickname is in use or registered by another occupant.\n" -#~ "Please specify another nickname below:" -#~ msgstr "" -#~ "您申请的昵称正在使用或被其他人å æœ‰ã€‚\n" -#~ "从下列昵称中å¦å¤–指定一个:" - -#~ msgid "we are now subscribed to %s" -#~ msgstr " %s 请求认è¯" - -#~ msgid "unsubscribe request from %s" -#~ msgstr " %s 请求解除认è¯" - -#~ msgid "we are now unsubscribed from %s" -#~ msgstr "%s 解除了认è¯" - -#~ msgid "" -#~ "JID %s is not RFC compliant. It will not be added to your roster. Use " -#~ "roster management tools such as http://jru.jabberstudio.org/ to remove it" -#~ msgstr "" -#~ "JID %s ä¸è¯†é… RFC,未被加入åå•ã€‚请使用诸如 http://jru.jabberstudio.org/ " -#~ "çš„åå•ç®¡ç†å·¥å…·ç§»é™¤ã€‚" - -#~ msgid "Registration information for transport %s has not arrived in time" -#~ msgstr "ä»£ç† %s 所需的注册信æ¯æœªæŒ‰æ—¶æŠµè¾¾" - #~ msgid "Sound" #~ msgstr "声音" @@ -4900,9 +5533,6 @@ msgstr "é’色" #~ msgid "Stoping selected file transfer" #~ msgstr "中止选定的文件传输" -#~ msgid "Use a single chat window with _tabs" -#~ msgstr "使用带标签的å•ä¸ªèŠå¤©çª—å£(_T)" - #~ msgid "" #~ "If you close this tab and you have history disabled, the message will be " #~ "lost." diff --git a/scripts/gajim b/scripts/gajim index 7fed98d39..fb83a4f84 100644 --- a/scripts/gajim +++ b/scripts/gajim @@ -1,4 +1,4 @@ -#!/bin/sh +#!/bin/bash ## gajim ## ## Contributors for this file: @@ -29,4 +29,4 @@ fi cd PREFIX/share/gajim/src export PYTHONPATH="$PYTHONPATH:PREFIXLIB/gajim" -exec PYTHON_EXEC -OO gajim.py $@ +exec -a gajim PYTHON_EXEC -OO gajim.py $@ From 5116cb02050769bfc7ebc2fcb13021783c2155db Mon Sep 17 00:00:00 2001 From: Stefan Bethge Date: Sun, 17 Sep 2006 15:49:47 +0000 Subject: [PATCH 037/110] add checkbutton to preferences window to toggle zeroconf --- data/glade/preferences_window.glade | 21 ++++++++++++++++++++- src/common/config.py | 2 +- src/common/zeroconf/connection_zeroconf.py | 1 + src/config.py | 10 +++++++++- src/gajim.py | 2 +- 5 files changed, 32 insertions(+), 4 deletions(-) diff --git a/data/glade/preferences_window.glade b/data/glade/preferences_window.glade index f5aceb5ff..62e7c260a 100644 --- a/data/glade/preferences_window.glade +++ b/data/glade/preferences_window.glade @@ -18,7 +18,6 @@ GDK_WINDOW_TYPE_HINT_NORMAL GDK_GRAVITY_NORTH_WEST True - False @@ -147,6 +146,26 @@ + + + True + True + Enable link-local messaging (Zeroconf) + True + GTK_RELIEF_NORMAL + True + False + False + True + + + + 0 + False + False + + + True diff --git a/src/common/config.py b/src/common/config.py index 43f717404..f9f0dacac 100644 --- a/src/common/config.py +++ b/src/common/config.py @@ -79,6 +79,7 @@ class Config: 'saveposition': [ opt_bool, True ], 'mergeaccounts': [ opt_bool, False, '', True ], 'sort_by_show': [ opt_bool, True, '', True ], + 'enable_zeroconf': [opt_bool, False, _('Enable link-local/zeroconf messaging')], 'use_speller': [ opt_bool, False, ], 'speller_language': [ opt_str, '', _('Language used by speller')], 'print_time': [ opt_str, 'always', _('\'always\' - print time for every message.\n\'sometimes\' - print time every print_ichat_every_foo_minutes minute.\n\'never\' - never print time.')], @@ -205,7 +206,6 @@ class Config: 'chat_merge_consecutive_nickname_indent': [opt_str, ' ', _('Indentation when using merge consecutive nickame.')], 'gc_nicknames_colors': [ opt_str, '#a34526:#c000ff:#0012ff:#388a99:#38995d:#519938:#ff8a00:#94452d:#244b5a:#32645a', _('List of colors that will be used to color nicknames in group chats.'), True ], 'ctrl_tab_go_to_next_composing': [opt_bool, True, _('Ctrl-Tab go to next composing tab when none is unread.')], - 'zeroconf_enabled': [opt_bool, True, _('Enable zeroconf network')], } __options_per_key = { diff --git a/src/common/zeroconf/connection_zeroconf.py b/src/common/zeroconf/connection_zeroconf.py index 726f7f0d0..c811db939 100644 --- a/src/common/zeroconf/connection_zeroconf.py +++ b/src/common/zeroconf/connection_zeroconf.py @@ -262,6 +262,7 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): txt['msg'] = msg check = check and self.zeroconf.update_txt(txt) + #stay offline when zeroconf does something wrong if check: self.dispatch('STATUS', show) else: diff --git a/src/config.py b/src/config.py index dd8e7bce3..5397d397f 100644 --- a/src/config.py +++ b/src/config.py @@ -94,6 +94,10 @@ class PreferencesWindow: st = gajim.config.get('sort_by_show') self.xml.get_widget('sort_by_show_checkbutton').set_active(st) + # enable zeroconf + st = gajim.config.get('enable_zeroconf') + self.xml.get_widget('enable_zeroconf_checkbutton').set_active(st) + # Display avatars in roster st = gajim.config.get('show_avatars_in_roster') self.xml.get_widget('show_avatars_in_roster_checkbutton').set_active(st) @@ -522,6 +526,10 @@ class PreferencesWindow: def on_sort_by_show_checkbutton_toggled(self, widget): self.on_checkbutton_toggled(widget, 'sort_by_show') gajim.interface.roster.draw_roster() + + def on_enable_zeroconf_checkbutton_toggled(self, widget): + self.on_checkbutton_toggled(widget, 'enable_zeroconf') + #TODO: add calls to close/restart zeroconf things and temporarily hide/show the account def on_show_status_msgs_in_roster_checkbutton_toggled(self, widget): self.on_checkbutton_toggled(widget, 'show_status_msgs_in_roster') @@ -1096,7 +1104,7 @@ class AccountModificationWindow: '''set or unset sensitivity of widgets when widget is toggled''' for w in widgets: w.set_sensitive(widget.get_active()) - + def init_account_gpg(self): keyid = gajim.config.get_per('accounts', self.account, 'keyid') keyname = gajim.config.get_per('accounts', self.account, 'keyname') diff --git a/src/gajim.py b/src/gajim.py index a15c769cd..a925c9628 100755 --- a/src/gajim.py +++ b/src/gajim.py @@ -1852,7 +1852,7 @@ class Interface: self.handle_event_file_progress) gajim.proxy65_manager = proxy65_manager.Proxy65Manager(gajim.idlequeue) self.register_handlers() - if gajim.config.get('zeroconf_enabled'): + if gajim.config.get('enable_zeroconf'): gajim.connections['zeroconf'] = common.zeroconf.connection_zeroconf.ConnectionZeroconf('zeroconf') for account in gajim.config.get_per('accounts'): if account != 'zeroconf': From 41c552ad42d79846be48d18b84b9d02ca9919cc2 Mon Sep 17 00:00:00 2001 From: Stefan Bethge Date: Sun, 17 Sep 2006 16:01:12 +0000 Subject: [PATCH 038/110] removed zerocony.py:check_jid and calls to it --- src/common/zeroconf/connection_zeroconf.py | 11 ++++------- src/common/zeroconf/zeroconf.py | 3 --- 2 files changed, 4 insertions(+), 10 deletions(-) diff --git a/src/common/zeroconf/connection_zeroconf.py b/src/common/zeroconf/connection_zeroconf.py index c811db939..5d232c370 100644 --- a/src/common/zeroconf/connection_zeroconf.py +++ b/src/common/zeroconf/connection_zeroconf.py @@ -170,16 +170,14 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): # callbacks called from zeroconf def _on_new_service(self,jid): self.roster.setItem(jid) - display_jid = self.zeroconf.check_jid(jid) - self.dispatch('ROSTER_INFO', (display_jid, self.roster.getName(jid), 'both', 'no', self.roster.getGroups(jid))) - self.dispatch('NOTIFY', (display_jid, self.roster.getStatus(jid), self.roster.getMessage(jid), 'local', 0, None, 0)) + self.dispatch('ROSTER_INFO', (jid, self.roster.getName(jid), 'both', 'no', self.roster.getGroups(jid))) + self.dispatch('NOTIFY', (jid, self.roster.getStatus(jid), self.roster.getMessage(jid), 'local', 0, None, 0)) def _on_remove_service(self,jid): self.roster.delItem(jid) # 'NOTIFY' (account, (jid, status, status message, resource, priority, # keyID, timestamp)) - jid = self.zeroconf.check_jid(jid) self.dispatch('NOTIFY', (jid, 'offline', '', 'local', 0, None, 0)) print 'connection_zeroconf:186' @@ -195,9 +193,8 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): #display contacts already detected and resolved for jid in self.roster.keys(): - display_jid = self.zeroconf.check_jid(jid) - self.dispatch('ROSTER_INFO', (display_jid, self.roster.getName(jid), 'both', 'no', self.roster.getGroups(jid))) - self.dispatch('NOTIFY', (display_jid, self.roster.getStatus(jid), self.roster.getMessage(jid), 'local', 0, None, 0)) + self.dispatch('ROSTER_INFO', (jid, self.roster.getName(jid), 'both', 'no', self.roster.getGroups(jid))) + self.dispatch('NOTIFY', (jid, self.roster.getStatus(jid), self.roster.getMessage(jid), 'local', 0, None, 0)) self.connected = STATUS_LIST.index(show) diff --git a/src/common/zeroconf/zeroconf.py b/src/common/zeroconf/zeroconf.py index 47448320b..1cf4953c0 100755 --- a/src/common/zeroconf/zeroconf.py +++ b/src/common/zeroconf/zeroconf.py @@ -252,9 +252,6 @@ class Zeroconf: return True - def check_jid(self, jid): - return jid - def disconnect(self): if self.connected: self.connected = False From 25b5b85aaafcad422314e1d350ff882b77a25ce6 Mon Sep 17 00:00:00 2001 From: Dimitur Kirov Date: Sun, 17 Sep 2006 16:18:15 +0000 Subject: [PATCH 039/110] fix parse error --- src/common/zeroconf/roster_zeroconf.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/common/zeroconf/roster_zeroconf.py b/src/common/zeroconf/roster_zeroconf.py index 99a3bc461..09d907ca0 100644 --- a/src/common/zeroconf/roster_zeroconf.py +++ b/src/common/zeroconf/roster_zeroconf.py @@ -68,7 +68,7 @@ class Roster: nm = txt_dict['1st'] if txt_dict.has_key('last'): if nm != '': - nm = +' ' + nm += ' ' nm += txt_dict['last'] if nm: self._data[jid]['name'] = nm From 5d1410d17a5bdc0465fef29072f767360e7f1910 Mon Sep 17 00:00:00 2001 From: Stefan Bethge Date: Sun, 17 Sep 2006 20:54:32 +0000 Subject: [PATCH 040/110] better handling of multiple gajim instances on one machine --- src/common/zeroconf/connection_zeroconf.py | 3 +- src/common/zeroconf/zeroconf.py | 34 +++++++++++++++------- 2 files changed, 25 insertions(+), 12 deletions(-) diff --git a/src/common/zeroconf/connection_zeroconf.py b/src/common/zeroconf/connection_zeroconf.py index 5d232c370..3b0620ece 100644 --- a/src/common/zeroconf/connection_zeroconf.py +++ b/src/common/zeroconf/connection_zeroconf.py @@ -179,7 +179,6 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): # 'NOTIFY' (account, (jid, status, status message, resource, priority, # keyID, timestamp)) self.dispatch('NOTIFY', (jid, 'offline', '', 'local', 0, None, 0)) - print 'connection_zeroconf:186' def connect(self, data = None, show = 'online'): @@ -203,7 +202,7 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): gobject.timeout_add(1000, self._on_resolve_timeout) else: pass - # display visual notification that we could not connect to avahi + #TODO: display visual notification that we could not connect to avahi def connect_and_init(self, show, msg, signed): self.continue_connect_info = [show, msg, signed] diff --git a/src/common/zeroconf/zeroconf.py b/src/common/zeroconf/zeroconf.py index 1cf4953c0..9aea0a97e 100755 --- a/src/common/zeroconf/zeroconf.py +++ b/src/common/zeroconf/zeroconf.py @@ -50,6 +50,8 @@ class Zeroconf: self.entrygroup = None self.connected = False self.announced = False + self.invalid_self_contact = {} + ## handlers for dbus callbacks @@ -58,14 +60,12 @@ class Zeroconf: print "Error:", str(err) def new_service_callback(self, interface, protocol, name, stype, domain, flags): - # we don't want to see ourselves in the list - if name != self.name: - # print "Found service '%s' in domain '%s' on %i.%i." % (name, domain, interface, protocol) + # print "Found service '%s' in domain '%s' on %i.%i." % (name, domain, interface, protocol) - #synchronous resolving - self.server.ResolveService( int(interface), int(protocol), name, stype, \ - domain, avahi.PROTO_UNSPEC, dbus.UInt32(0), \ - reply_handler=self.service_resolved_callback, error_handler=self.print_error_callback) + #synchronous resolving + self.server.ResolveService( int(interface), int(protocol), name, stype, \ + domain, avahi.PROTO_UNSPEC, dbus.UInt32(0), \ + reply_handler=self.service_resolved_callback, error_handler=self.print_error_callback) def remove_service_callback(self, interface, protocol, name, stype, domain, flags): # print "Service '%s' in domain '%s' on %i.%i disappeared." % (name, domain, interface, protocol) @@ -112,9 +112,18 @@ class Zeroconf: if name.find('@') == -1: name = name + '@' + name - self.contacts[name] = (name, domain, interface, protocol, host, address, port, + # we don't want to see ourselves in the list + if name != self.name: + self.contacts[name] = (name, domain, interface, protocol, host, address, port, bare_name, txt) - self.new_serviceCB(name) + self.new_serviceCB(name) + else: + # remember data + # In case this is not our own record but of another + # gajim instance on the same machine, + # it will be used when we get a new name. + self.invalid_self_contact[name] = (name, domain, interface, protocol, host, address, port, bare_name, txt) + # different handler when resolving all contacts def service_resolved_all_callback(self, interface, protocol, name, stype, domain, host, aprotocol, address, port, txt, flags): @@ -139,8 +148,13 @@ class Zeroconf: def service_add_fail_callback(self, err): print 'Error while adding service:', str(err) + old_name = self.name self.name = self.server.GetAlternativeServiceName(self.name) self.create_service() + if self.invalid_self_contact.has_key(old_name): + self.contacts[old_name] = self.invalid_self_contact[old_name] + self.new_serviceCB(old_name) + del self.invalid_self_contact[old_name] def server_state_changed_callback(self, state, error): print 'server.state %s' % state @@ -249,7 +263,7 @@ class Zeroconf: db.connect_to_signal('ItemNew', self.new_domain_callback) else: self.browse_domain(avahi.IF_UNSPEC, avahi.PROTO_UNSPEC, domain) - + return True def disconnect(self): From 7707c5e824ba83ad522295f20a77d3c56206dd07 Mon Sep 17 00:00:00 2001 From: Stefan Bethge Date: Sun, 17 Sep 2006 22:19:10 +0000 Subject: [PATCH 041/110] enable/disable zeroconf on the fly --- src/common/zeroconf/connection_zeroconf.py | 12 ++--- src/config.py | 62 +++++++++++++++++++++- 2 files changed, 65 insertions(+), 9 deletions(-) diff --git a/src/common/zeroconf/connection_zeroconf.py b/src/common/zeroconf/connection_zeroconf.py index 3b0620ece..1b2ee7896 100644 --- a/src/common/zeroconf/connection_zeroconf.py +++ b/src/common/zeroconf/connection_zeroconf.py @@ -66,11 +66,6 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): #self.new_account_info = None self.bookmarks = [] - self.on_purpose = False - #self.last_io = gajim.idlequeue.current_time() - #self.last_sent = [] - #self.last_history_line = {} - #we don't need a password, but must be non-empty self.password = 'zeroconf' @@ -130,8 +125,11 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): def quit(self, kill_core): if kill_core and self.connected > 1: - self.disconnect(on_purpose = True) + self.disconnect() + def disable_account(self): + self.disconnect() + def test_gpg_passphrase(self, password): self.gpg.passphrase = password keyID = gajim.config.get_per('accounts', self.name, 'keyid') @@ -213,7 +211,6 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): def disconnect(self, on_purpose = False): - self.on_purpose = on_purpose self.connected = 0 self.time_to_reconnect = None if self.connection: @@ -232,7 +229,6 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): # 'connect' if show != 'offline' and not self.connected: - self.on_purpose = False self.connect_and_init(show, msg, '') if show != 'invisible': check = self.zeroconf.announce() diff --git a/src/config.py b/src/config.py index 5397d397f..eb34cba95 100644 --- a/src/config.py +++ b/src/config.py @@ -37,6 +37,7 @@ except: from common import helpers from common import gajim from common import connection +from common import zeroconf #---------- PreferencesWindow class -------------# class PreferencesWindow: @@ -528,8 +529,67 @@ class PreferencesWindow: gajim.interface.roster.draw_roster() def on_enable_zeroconf_checkbutton_toggled(self, widget): + if gajim.config.get('enable_zeroconf'): + # disable + gajim.interface.roster.close_all('zeroconf') + gajim.connections['zeroconf'].disable_account() + del gajim.connections['zeroconf'] + gajim.interface.save_config() + del gajim.interface.instances['zeroconf'] + del gajim.nicks['zeroconf'] + del gajim.block_signed_in_notifications['zeroconf'] + del gajim.groups['zeroconf'] + gajim.contacts.remove_account('zeroconf') + del gajim.gc_connected['zeroconf'] + del gajim.automatic_rooms['zeroconf'] + del gajim.to_be_removed['zeroconf'] + del gajim.newly_added['zeroconf'] + del gajim.sleeper_state['zeroconf'] + del gajim.encrypted_chats['zeroconf'] + del gajim.last_message_time['zeroconf'] + del gajim.status_before_autoaway['zeroconf'] + if len(gajim.connections) >= 2: # Do not merge accounts if only one exists + gajim.interface.roster.regroup = gajim.config.get('mergeaccounts') + else: + gajim.interface.roster.regroup = False + gajim.interface.roster.draw_roster() + gajim.interface.roster.actions_menu_needs_rebuild = True + if gajim.interface.instances.has_key('accounts'): + gajim.interface.instances['accounts'].init_accounts() + else: + #enable + #gajim.config.add_per('accounts', 'zeroconf') # if not already there (how?) + gajim.connections['zeroconf'] = common.zeroconf.connection_zeroconf.ConnectionZeroconf('zeroconf') + # update variables + gajim.interface.instances['zeroconf'] = {'infos': {}, 'disco': {}, + 'gc_config': {}} + gajim.connections['zeroconf'].connected = 0 + gajim.groups['zeroconf'] = {} + gajim.contacts.add_account('zeroconf') + gajim.gc_connected['zeroconf'] = {} + gajim.automatic_rooms['zeroconf'] = {} + gajim.newly_added['zeroconf'] = [] + gajim.to_be_removed['zeroconf'] = [] + gajim.nicks['zeroconf'] = 'zeroconf' + gajim.block_signed_in_notifications['zeroconf'] = True + gajim.sleeper_state['zeroconf'] = 'off' + gajim.encrypted_chats['zeroconf'] = [] + gajim.last_message_time['zeroconf'] = {} + gajim.status_before_autoaway['zeroconf'] = '' + # refresh accounts window + if gajim.interface.instances.has_key('accounts'): + gajim.interface.instances['accounts'].init_accounts() + # refresh roster + if len(gajim.connections) >= 2: # Do not merge accounts if only one exists + gajim.interface.roster.regroup = gajim.config.get('mergeaccounts') + else: + gajim.interface.roster.regroup = False + gajim.interface.roster.draw_roster() + gajim.interface.roster.actions_menu_needs_rebuild = True + gajim.interface.save_config() + self.on_checkbutton_toggled(widget, 'enable_zeroconf') - #TODO: add calls to close/restart zeroconf things and temporarily hide/show the account + def on_show_status_msgs_in_roster_checkbutton_toggled(self, widget): self.on_checkbutton_toggled(widget, 'show_status_msgs_in_roster') From 1a325833c36ee433363423e7c757904216b1b76f Mon Sep 17 00:00:00 2001 From: Dimitur Kirov Date: Sun, 17 Sep 2006 22:57:41 +0000 Subject: [PATCH 042/110] add listening server for incomming messages --- src/common/xmpp/dispatcher_nb.py | 4 +- src/common/zeroconf/client_zeroconf.py | 309 +++++++++++++++++- .../zeroconf/connection_handlers_zeroconf.py | 104 +++++- src/common/zeroconf/connection_zeroconf.py | 14 +- src/common/zeroconf/zeroconf.py | 9 +- 5 files changed, 425 insertions(+), 15 deletions(-) diff --git a/src/common/xmpp/dispatcher_nb.py b/src/common/xmpp/dispatcher_nb.py index ca13af184..7d57fdc19 100644 --- a/src/common/xmpp/dispatcher_nb.py +++ b/src/common/xmpp/dispatcher_nb.py @@ -400,7 +400,7 @@ class Dispatcher(PlugIn): ''' Serialise stanza and put it on the wire. Assign an unique ID to it before send. Returns assigned ID.''' if type(stanza) in [type(''), type(u'')]: - return self._owner.Connection.send(stanza) + return self._owner.send_stanza(stanza) if not isinstance(stanza, Protocol): _ID=None elif not stanza.getID(): @@ -423,7 +423,7 @@ class Dispatcher(PlugIn): stanza=route stanza.setNamespace(self._owner.Namespace) stanza.setParent(self._metastream) - self._owner.Connection.send(stanza) + self._owner.send_stanza(stanza) return _ID def disconnect(self): diff --git a/src/common/zeroconf/client_zeroconf.py b/src/common/zeroconf/client_zeroconf.py index e487ec5e6..452d16324 100644 --- a/src/common/zeroconf/client_zeroconf.py +++ b/src/common/zeroconf/client_zeroconf.py @@ -1,6 +1,7 @@ ## common/zeroconf/client_zeroconf.py ## ## Copyright (C) 2006 Stefan Bethge +## 2006 Dimitur Kirov ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published @@ -11,14 +12,314 @@ ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## - +from common import gajim +from common.xmpp.idlequeue import IdleObject +from common.xmpp import dispatcher_nb, debug +from common.xmpp.client import * +from common.xmpp.simplexml import ustr +from dialogs import BindPortError +import socket +import errno from common.zeroconf import roster_zeroconf -class ClientZeroconf: - def __init__(self, zeroconf): - self.roster = roster_zeroconf.Roster(zeroconf) +MAX_BUFF_LEN = 65536 +DATA_RECEIVED='DATA RECEIVED' +DATA_SENT='DATA SENT' + + +class ZeroconfListener(IdleObject): + def __init__(self, port, caller = None): + ''' handle all incomming connections on ('0.0.0.0', port)''' + self.port = port + self.queue_idx = -1 + #~ self.queue = None + self.started = False + self._sock = None + self.fd = -1 + self.caller = caller + def bind(self): + self._serv = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + self._serv.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) + self._serv.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1) + self._serv.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1) + # will fail when port as busy, or we don't have rights to bind + try: + self._serv.bind(('0.0.0.0', self.port)) + except Exception, e: + # unable to bind, show error dialog + return None + self._serv.listen(socket.SOMAXCONN) + self._serv.setblocking(False) + self.fd = self._serv.fileno() + gajim.idlequeue.plug_idle(self, False, True) + self.started = True + + def pollend(self): + ''' called when we stop listening on (host, port) ''' + self.disconnect2() + + def pollin(self): + ''' accept a new incomming connection and notify queue''' + sock = self.accept_conn() + P2PConnection('', sock[0], sock[1][0], sock[1][1], self.caller) + + def disconnect(self): + ''' free all resources, we are not listening anymore ''' + gajim.idlequeue.remove_timeout(self.fd) + gajim.idlequeue.unplug_idle(self.fd) + self.fd = -1 + self.started = False + try: + self._serv.close() + except: + pass + + def accept_conn(self): + ''' accepts a new incomming connection ''' + _sock = self._serv.accept() + _sock[0].setblocking(False) + return _sock + + +class P2PConnection(IdleObject, PlugIn): + ''' class for sending file to socket over socks5 ''' + def __init__(self, sock_hash, _sock, host = None, port = None, caller = None): + PlugIn.__init__(self) + self.sendqueue = [] + self.sendbuff = None + self._sock = _sock + self._sock.setblocking(False) + self.fd = _sock.fileno() + self._recv = _sock.recv + self._send = _sock.send + self.connected = True + self.state = 1 + self.writable = False + self.readable = False + # waiting for first bytes + # start waiting for data + self.Namespace = 'jabber:client' + self.defaultNamespace = self.Namespace + self._component=0 + self._caller = caller + self.Server = host + self.Connection = self + self._registered_name = None + self.DBG = 'client' + debug = ['always', 'nodebuilder'] + self._DEBUG = Debug.Debug(debug) + self.DEBUG = self._DEBUG.Show + self.debug_flags = self._DEBUG.debug_flags + self.debug_flags.append(self.DBG) + self._owner = self + self._exported_methods=[self.send_stanza, self.disconnect2, self.pollend] + self.on_receive = None + gajim.idlequeue.plug_idle(self, False, True) + self.onreceive(self._on_receive_document_attrs) + dispatcher_nb.Dispatcher().PlugIn(self) + self.RegisterHandler('message', self._messageCB) + + + def _messageCB(self, conn, data): + self._caller._messageCB(self.Server, conn, data) + + def onreceive(self, recv_handler): + if not recv_handler: + if hasattr(self._owner, 'Dispatcher'): + self.on_receive = self._owner.Dispatcher.ProcessNonBlocking + else: + self.on_receive = None + return + _tmp = self.on_receive + # make sure this cb is not overriden by recursive calls + if not recv_handler(None) and _tmp == self.on_receive: + self.on_receive = recv_handler + + def _on_receive_document_attrs(self, data): + if data: + self.Dispatcher.ProcessNonBlocking(data) + if not hasattr(self, 'Dispatcher') or \ + self.Dispatcher.Stream._document_attrs is None: + return + self.onreceive(None) + if self.Dispatcher.Stream._document_attrs.has_key('version') and \ + self.Dispatcher.Stream._document_attrs['version'] == '1.0': + #~ self.onreceive(self._on_receive_stream_features) + #XXX continue with TLS + return + self.onreceive(None) + return True + + def send_stanza(self, stanza): + '''Append stanza to the queue of messages to be send. + If supplied data is unicode string, encode it to utf-8. + ''' + if self.state <= 0: + return + r = stanza + if isinstance(r, unicode): + r = r.encode('utf-8') + elif not isinstance(r, str): + r = ustr(r).encode('utf-8') + self.sendqueue.append(r) + self._plug_idle() + + def read_timeout(self): + gajim.idlequeue.remove_timeout(self.fd) + # no activity for foo seconds + # self.pollend() + + def pollout(self): + if not self.connected: + self.disconnect2() + return + gajim.idlequeue.remove_timeout(self.fd) + self._do_send() + # self.idlequeue.plug_idle(self, False, True) + + def pollend(self): + self.state = -1 + self.disconnect2() + + def pollin(self): + ''' Reads all pending incoming data. Calls owner's disconnected() method if appropriate.''' + received = '' + errnum = 0 + try: + # get as many bites, as possible, but not more than RECV_BUFSIZE + received = self._recv(MAX_BUFF_LEN) + except Exception, e: + if len(e.args) > 0 and isinstance(e.args[0], int): + errnum = e[0] + sys.exc_clear() + # "received" will be empty anyhow + if errnum == socket.SSL_ERROR_WANT_READ: + pass + elif errnum in [errno.ECONNRESET, errno.ENOTCONN, errno.ESHUTDOWN]: + self.pollend() + # don't proccess result, cas it will raise error + return + elif not received : + if errnum != socket.SSL_ERROR_EOF: + # 8 EOF occurred in violation of protocol + self.pollend() + if self.state >= 0: + self.disconnect2() + return + + if self.state < 0: + return + if self.on_receive: + if hasattr(self._owner, 'Dispatcher'): + self._owner.Dispatcher.Event('', DATA_RECEIVED, received) + self.on_receive(received) + else: + # This should never happed, so we need the debug + self.DEBUG('Unhandled data received: %s' % received,'got') + self.disconnect2() + if self.on_connect_failure: + self.on_connect_failure() + return True + + def onreceive(self, recv_handler): + if not recv_handler: + if hasattr(self._owner, 'Dispatcher'): + self.on_receive = self._owner.Dispatcher.ProcessNonBlocking + else: + self.on_receive = None + return + _tmp = self.on_receive + # make sure this cb is not overriden by recursive calls + if not recv_handler(None) and _tmp == self.on_receive: + self.on_receive = recv_handler + + def disconnect2(self): + ''' Closes the socket. ''' + gajim.idlequeue.remove_timeout(self.fd) + gajim.idlequeue.unplug_idle(self.fd) + try: + self._sock.shutdown(socket.SHUT_RDWR) + self._sock.close() + except: + # socket is already closed + pass + self.connected = False + self.fd = -1 + self.state = -1 + + def _do_send(self): + if not self.sendbuff: + if not self.sendqueue: + return None # nothing to send + self.sendbuff = self.sendqueue.pop(0) + self.sent_data = self.sendbuff + try: + send_count = self._send(self.sendbuff) + if send_count: + self.sendbuff = self.sendbuff[send_count:] + if not self.sendbuff and not self.sendqueue: + if self.state < 0: + gajim.idlequeue.unplug_idle(self.fd) + self._on_send() + self.disconnect2() + return + # we are not waiting for write + self._plug_idle() + self._on_send() + except socket.error, e: + sys.exc_clear() + if e[0] == socket.SSL_ERROR_WANT_WRITE: + return True + if self.state < 0: + self.disconnect2() + return + if self._on_send_failure: + self._on_send_failure() + return + return True + + def _plug_idle(self): + readable = self.state != 0 + if self.sendqueue or self.sendbuff: + writable = True + else: + writable = False + if self.writable != writable or self.readable != readable: + gajim.idlequeue.plug_idle(self, writable, readable) + + + def _on_send(self): + if self.sent_data and self.sent_data.strip(): + #~ self.DEBUG(self.sent_data,'sent') + if hasattr(self._owner, 'Dispatcher'): + self._owner.Dispatcher.Event('', DATA_SENT, self.sent_data) + self.sent_data = None + + def _on_send_failure(self): + self.DEBUG("Socket error while sending data",'error') + self._owner.disconnected() + self.sent_data = None + + +class ClientZeroconf: + def __init__(self, zeroconf, caller): + self.roster = roster_zeroconf.Roster(zeroconf) + self.caller = caller + self.start_listener(zeroconf.port) + + + def start_listener(self, port): + self.listener = ZeroconfListener(port, self.caller) + self.listener.bind() + if self.listener.started is False: + self.listener = None + # We cannot bind port, call error + # dialog from dialogs.py and fail + BindPortError(port) + return None + #~ self.connected += 1 def getRoster(self): return self.roster.getRoster() diff --git a/src/common/zeroconf/connection_handlers_zeroconf.py b/src/common/zeroconf/connection_handlers_zeroconf.py index 758a181e2..8a4937e07 100644 --- a/src/common/zeroconf/connection_handlers_zeroconf.py +++ b/src/common/zeroconf/connection_handlers_zeroconf.py @@ -33,7 +33,7 @@ import common.xmpp from common import GnuPG from common import helpers from common import gajim - +from common.zeroconf import zeroconf STATUS_LIST = ['offline', 'connecting', 'online', 'chat', 'away', 'xa', 'dnd', 'invisible'] # kind of events we can wait for an answer @@ -227,6 +227,108 @@ class ConnectionHandlersZeroconf(ConnectionVcard): idle.init() except: HAS_IDLE = False + def _messageCB(self, ip, con, msg): + '''Called when we receive a message''' + msgtxt = msg.getBody() + mtype = msg.getType() + subject = msg.getSubject() # if not there, it's None + tim = msg.getTimestamp() + tim = time.strptime(tim, '%Y%m%dT%H:%M:%S') + tim = time.localtime(timegm(tim)) + frm = helpers.get_full_jid_from_iq(msg) + if frm == 'none': + for key in self.zeroconf.contacts: + if ip == self.zeroconf.contacts[key][zeroconf.C_ADDRESS]: + frm = key + jid = helpers.get_jid_from_iq(msg) + print 'jid', jid + no_log_for = gajim.config.get_per('accounts', self.name, + 'no_log_for').split() + encrypted = False + chatstate = None + encTag = msg.getTag('x', namespace = common.xmpp.NS_ENCRYPTED) + decmsg = '' + # invitations + invite = None + if not encTag: + invite = msg.getTag('x', namespace = common.xmpp.NS_MUC_USER) + if invite and not invite.getTag('invite'): + invite = None + delayed = msg.getTag('x', namespace = common.xmpp.NS_DELAY) != None + msg_id = None + composing_jep = None + # FIXME: Msn transport (CMSN1.2.1 and PyMSN0.10) do NOT RECOMMENDED + # invitation + # stanza (MUC JEP) remove in 2007, as we do not do NOT RECOMMENDED + xtags = msg.getTags('x') + # chatstates - look for chatstate tags in a message if not delayed + if not delayed: + composing_jep = False + children = msg.getChildren() + for child in children: + if child.getNamespace() == 'http://jabber.org/protocol/chatstates': + chatstate = child.getName() + composing_jep = 'JEP-0085' + break + # No JEP-0085 support, fallback to JEP-0022 + if not chatstate: + chatstate_child = msg.getTag('x', namespace = common.xmpp.NS_EVENT) + if chatstate_child: + chatstate = 'active' + composing_jep = 'JEP-0022' + if not msgtxt and chatstate_child.getTag('composing'): + chatstate = 'composing' + # JEP-0172 User Nickname + user_nick = msg.getTagData('nick') + if not user_nick: + user_nick = '' + + if encTag and GnuPG.USE_GPG: + #decrypt + encmsg = encTag.getData() + + keyID = gajim.config.get_per('accounts', self.name, 'keyid') + if keyID: + decmsg = self.gpg.decrypt(encmsg, keyID) + if decmsg: + msgtxt = decmsg + encrypted = True + if mtype == 'error': + error_msg = msg.getError() + if not error_msg: + error_msg = msgtxt + msgtxt = None + if self.name not in no_log_for: + gajim.logger.write('error', frm, error_msg, tim = tim, + subject = subject) + self.dispatch('MSGERROR', (frm, msg.getErrorCode(), error_msg, msgtxt, + tim)) + elif mtype == 'chat': # it's type 'chat' + if not msg.getTag('body') and chatstate is None: #no + return + if msg.getTag('body') and self.name not in no_log_for and jid not in\ + no_log_for and msgtxt: + msg_id = gajim.logger.write('chat_msg_recv', frm, msgtxt, tim = tim, + subject = subject) + self.dispatch('MSG', (frm, msgtxt, tim, encrypted, mtype, subject, + chatstate, msg_id, composing_jep, user_nick)) + else: # it's single message + if self.name not in no_log_for and jid not in no_log_for and msgtxt: + gajim.logger.write('single_msg_recv', frm, msgtxt, tim = tim, + subject = subject) + if invite is not None: + item = invite.getTag('invite') + jid_from = item.getAttr('from') + if jid_from == None: + jid_from = frm + reason = item.getTagData('reason') + item = invite.getTag('password') + password = invite.getTagData('password') + self.dispatch('GC_INVITATION',(frm, jid_from, reason, password)) + else: + self.dispatch('MSG', (frm, msgtxt, tim, encrypted, 'normal', + subject, chatstate, msg_id, composing_jep, user_nick)) + # END messageCB ''' def build_http_auth_answer(self, iq_obj, answer): if answer == 'yes': diff --git a/src/common/zeroconf/connection_zeroconf.py b/src/common/zeroconf/connection_zeroconf.py index 1b2ee7896..8ab243490 100644 --- a/src/common/zeroconf/connection_zeroconf.py +++ b/src/common/zeroconf/connection_zeroconf.py @@ -184,7 +184,7 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): return self.connection, '' if self.zeroconf.connect(): - self.connection = client_zeroconf.ClientZeroconf(self.zeroconf) + self.connection = client_zeroconf.ClientZeroconf(self.zeroconf, self) self.roster = self.connection.getRoster() self.dispatch('ROSTER', self.roster) @@ -197,7 +197,7 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): # refresh all contacts data every second self.call_resolve_timeout = True - gobject.timeout_add(1000, self._on_resolve_timeout) + gobject.timeout_add(10000, self._on_resolve_timeout) else: pass #TODO: display visual notification that we could not connect to avahi @@ -487,7 +487,13 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): def send_keepalive(self): # nothing received for the last foo seconds (60 secs by default) - if self.connection: - self.connection.send(' ') + pass + def _event_dispatcher(self, realm, event, data): + if realm == '': + if event == common.xmpp.transports.DATA_RECEIVED: + self.dispatch('STANZA_ARRIVED', unicode(data, errors = 'ignore')) + elif event == common.xmpp.transports.DATA_SENT: + self.dispatch('STANZA_SENT', unicode(data)) + # END ConnectionZeroconf diff --git a/src/common/zeroconf/zeroconf.py b/src/common/zeroconf/zeroconf.py index 9aea0a97e..3b9597784 100755 --- a/src/common/zeroconf/zeroconf.py +++ b/src/common/zeroconf/zeroconf.py @@ -300,7 +300,7 @@ class Zeroconf: return False def send (self, msg, sock): - print 'send:'+msg + print 'send:', msg totalsent = 0 while totalsent < len(msg): sent = sock.send(msg[totalsent:]) @@ -309,13 +309,14 @@ class Zeroconf: totalsent = totalsent + sent def send_message(self, jid, msg, type = 'chat'): - print 'zeroconf.py: send_message:'+ msg - + print 'zeroconf.py: send_message:', msg + if not msg : + return sock = socket.socket ( socket.AF_INET, socket.SOCK_STREAM ) #sock.setblocking(False) sock.connect ( ( self.contacts[jid][C_ADDRESS], self.contacts[jid][C_PORT] ) ) - #print (self.txt_array_to_dict(self.contacts[jid][C_TXT]))['port.p2pj'] + print (self.txt_array_to_dict(self.contacts[jid][C_TXT]))['port.p2pj'] #was for adium which uses the txt record #sock.connect ( ( self.contacts[jid][5], int((self.txt_array_to_dict(self.contacts[jid][7]))['port.p2pj']) ) ) From cc5719c89d6feba9feb7ad5b542b1367fee1aece Mon Sep 17 00:00:00 2001 From: Dimitur Kirov Date: Mon, 18 Sep 2006 08:39:04 +0000 Subject: [PATCH 043/110] stop listener when we go offline --- src/common/zeroconf/connection_zeroconf.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/common/zeroconf/connection_zeroconf.py b/src/common/zeroconf/connection_zeroconf.py index 8ab243490..537c23a74 100644 --- a/src/common/zeroconf/connection_zeroconf.py +++ b/src/common/zeroconf/connection_zeroconf.py @@ -216,6 +216,7 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): if self.connection: # make sure previous connection is completely closed self.last_connection = None + self.connection.listener.disconnect() self.connection = None # stop calling the timeout self.call_resolve_timeout = False From 44e2bd02470c1396b4cd666646c1b8780f0754fe Mon Sep 17 00:00:00 2001 From: Dimitur Kirov Date: Tue, 19 Sep 2006 08:58:14 +0000 Subject: [PATCH 044/110] fix TB opn application exit --- src/common/zeroconf/connection_zeroconf.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/common/zeroconf/connection_zeroconf.py b/src/common/zeroconf/connection_zeroconf.py index 537c23a74..4a45c462f 100644 --- a/src/common/zeroconf/connection_zeroconf.py +++ b/src/common/zeroconf/connection_zeroconf.py @@ -214,9 +214,8 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): self.connected = 0 self.time_to_reconnect = None if self.connection: - # make sure previous connection is completely closed - self.last_connection = None - self.connection.listener.disconnect() + if self.connection.listener: + self.connection.listener.disconnect() self.connection = None # stop calling the timeout self.call_resolve_timeout = False From e9a855007b2310f53a36d607aac1dc5fe3be3c4a Mon Sep 17 00:00:00 2001 From: Dimitur Kirov Date: Tue, 19 Sep 2006 12:46:09 +0000 Subject: [PATCH 045/110] better xmmpppy plugin integration. fixed xml error with iChats --- src/common/xmpp/dispatcher_nb.py | 4 +- src/common/xmpp/simplexml.py | 2 +- src/common/zeroconf/client_zeroconf.py | 144 +++++++++++++++---------- 3 files changed, 91 insertions(+), 59 deletions(-) diff --git a/src/common/xmpp/dispatcher_nb.py b/src/common/xmpp/dispatcher_nb.py index 7d57fdc19..ca13af184 100644 --- a/src/common/xmpp/dispatcher_nb.py +++ b/src/common/xmpp/dispatcher_nb.py @@ -400,7 +400,7 @@ class Dispatcher(PlugIn): ''' Serialise stanza and put it on the wire. Assign an unique ID to it before send. Returns assigned ID.''' if type(stanza) in [type(''), type(u'')]: - return self._owner.send_stanza(stanza) + return self._owner.Connection.send(stanza) if not isinstance(stanza, Protocol): _ID=None elif not stanza.getID(): @@ -423,7 +423,7 @@ class Dispatcher(PlugIn): stanza=route stanza.setNamespace(self._owner.Namespace) stanza.setParent(self._metastream) - self._owner.send_stanza(stanza) + self._owner.Connection.send(stanza) return _ID def disconnect(self): diff --git a/src/common/xmpp/simplexml.py b/src/common/xmpp/simplexml.py index 0057b472f..76c70651f 100644 --- a/src/common/xmpp/simplexml.py +++ b/src/common/xmpp/simplexml.py @@ -362,7 +362,7 @@ class NodeBuilder: if self.last_is_data: if self.data_buffer: self.data_buffer.append(data) - else: + elif self._ptr: self.data_buffer = [data] self.last_is_data = 1 diff --git a/src/common/zeroconf/client_zeroconf.py b/src/common/zeroconf/client_zeroconf.py index 452d16324..d3f534232 100644 --- a/src/common/zeroconf/client_zeroconf.py +++ b/src/common/zeroconf/client_zeroconf.py @@ -1,4 +1,4 @@ -## common/zeroconf/client_zeroconf.py +## common/zeroconf/client_zeroconf.py ## ## Copyright (C) 2006 Stefan Bethge ## 2006 Dimitur Kirov @@ -14,7 +14,7 @@ ## from common import gajim from common.xmpp.idlequeue import IdleObject -from common.xmpp import dispatcher_nb, debug +from common.xmpp import dispatcher_nb from common.xmpp.client import * from common.xmpp.simplexml import ustr from dialogs import BindPortError @@ -58,12 +58,12 @@ class ZeroconfListener(IdleObject): def pollend(self): ''' called when we stop listening on (host, port) ''' - self.disconnect2() + self.disconnect() def pollin(self): ''' accept a new incomming connection and notify queue''' sock = self.accept_conn() - P2PConnection('', sock[0], sock[1][0], sock[1][1], self.caller) + P2PClient(sock[0], sock[1][0], sock[1][1], self.caller) def disconnect(self): ''' free all resources, we are not listening anymore ''' @@ -83,60 +83,33 @@ class ZeroconfListener(IdleObject): return _sock -class P2PConnection(IdleObject, PlugIn): - ''' class for sending file to socket over socks5 ''' - def __init__(self, sock_hash, _sock, host = None, port = None, caller = None): - PlugIn.__init__(self) - self.sendqueue = [] - self.sendbuff = None - self._sock = _sock - self._sock.setblocking(False) - self.fd = _sock.fileno() - self._recv = _sock.recv - self._send = _sock.send - self.connected = True - self.state = 1 - self.writable = False - self.readable = False - # waiting for first bytes - # start waiting for data + +class P2PClient(IdleObject): + def __init__(self, _sock, host, port, caller): + self._owner = self self.Namespace = 'jabber:client' self.defaultNamespace = self.Namespace self._component=0 self._caller = caller self.Server = host - self.Connection = self - self._registered_name = None self.DBG = 'client' debug = ['always', 'nodebuilder'] self._DEBUG = Debug.Debug(debug) self.DEBUG = self._DEBUG.Show self.debug_flags = self._DEBUG.debug_flags self.debug_flags.append(self.DBG) - self._owner = self - self._exported_methods=[self.send_stanza, self.disconnect2, self.pollend] - self.on_receive = None - gajim.idlequeue.plug_idle(self, False, True) - self.onreceive(self._on_receive_document_attrs) + self.Connection = P2PConnection('', _sock, host, port, caller) + self.Connection.PlugIn(self) dispatcher_nb.Dispatcher().PlugIn(self) + self.RegisterHandler('message', self._messageCB) + def disconnected(self): + if self.__dict__.has_key('Dispatcher'): + self.Dispatcher.PlugOut() + if self.__dict__.has_key('P2PConnection'): + self.P2PConnection.PlugOut() - def _messageCB(self, conn, data): - self._caller._messageCB(self.Server, conn, data) - - def onreceive(self, recv_handler): - if not recv_handler: - if hasattr(self._owner, 'Dispatcher'): - self.on_receive = self._owner.Dispatcher.ProcessNonBlocking - else: - self.on_receive = None - return - _tmp = self.on_receive - # make sure this cb is not overriden by recursive calls - if not recv_handler(None) and _tmp == self.on_receive: - self.on_receive = recv_handler - def _on_receive_document_attrs(self, data): if data: self.Dispatcher.ProcessNonBlocking(data) @@ -151,8 +124,68 @@ class P2PConnection(IdleObject, PlugIn): return self.onreceive(None) return True + + + def _messageCB(self, conn, data): + self._caller._messageCB(self.Server, conn, data) + + +class P2PConnection(IdleObject, PlugIn): + ''' class for sending file to socket over socks5 ''' + def __init__(self, sock_hash, _sock, host = None, port = None, caller = None): + IdleObject.__init__(self) + PlugIn.__init__(self) + self.DBG_LINE='socket' + self.sendqueue = [] + self.sendbuff = None + self._sock = _sock + self._sock.setblocking(False) + self.fd = _sock.fileno() + self._recv = _sock.recv + self._send = _sock.send + self.connected = True + self.state = 1 + self.writable = False + self.readable = False + # waiting for first bytes + # start waiting for data + + + + #~ self.Connection = self + self._registered_name = None + + self._exported_methods=[self.send, self.disconnect, self.onreceive] + self.on_receive = None + + + def plugin(self, owner): + self.onreceive(owner._on_receive_document_attrs) + gajim.idlequeue.plug_idle(self, False, True) + return True - def send_stanza(self, stanza): + def plugout(self): + ''' Disconnect from the remote server and unregister self.disconnected method from + the owner's dispatcher. ''' + self.disconnect() + self._owner.Connection = None + self._owner = None + + def onreceive(self, recv_handler): + if not recv_handler: + if hasattr(self._owner, 'Dispatcher'): + self.on_receive = self._owner.Dispatcher.ProcessNonBlocking + else: + self.on_receive = None + return + _tmp = self.on_receive + # make sure this cb is not overriden by recursive calls + if not recv_handler(None) and _tmp == self.on_receive: + self.on_receive = recv_handler + + + + def send(self, stanza): '''Append stanza to the queue of messages to be send. If supplied data is unicode string, encode it to utf-8. ''' @@ -161,8 +194,8 @@ class P2PConnection(IdleObject, PlugIn): r = stanza if isinstance(r, unicode): r = r.encode('utf-8') - elif not isinstance(r, str): - r = ustr(r).encode('utf-8') + #~ elif not isinstance(r, str): + #~ r = ustr(r).encode('utf-8') self.sendqueue.append(r) self._plug_idle() @@ -177,11 +210,10 @@ class P2PConnection(IdleObject, PlugIn): return gajim.idlequeue.remove_timeout(self.fd) self._do_send() - # self.idlequeue.plug_idle(self, False, True) def pollend(self): self.state = -1 - self.disconnect2() + self.disconnect() def pollin(self): ''' Reads all pending incoming data. Calls owner's disconnected() method if appropriate.''' @@ -206,7 +238,7 @@ class P2PConnection(IdleObject, PlugIn): # 8 EOF occurred in violation of protocol self.pollend() if self.state >= 0: - self.disconnect2() + self.disconnect() return if self.state < 0: @@ -218,7 +250,7 @@ class P2PConnection(IdleObject, PlugIn): else: # This should never happed, so we need the debug self.DEBUG('Unhandled data received: %s' % received,'got') - self.disconnect2() + self.disconnect() if self.on_connect_failure: self.on_connect_failure() return True @@ -235,7 +267,7 @@ class P2PConnection(IdleObject, PlugIn): if not recv_handler(None) and _tmp == self.on_receive: self.on_receive = recv_handler - def disconnect2(self): + def disconnect(self): ''' Closes the socket. ''' gajim.idlequeue.remove_timeout(self.fd) gajim.idlequeue.unplug_idle(self.fd) @@ -248,6 +280,7 @@ class P2PConnection(IdleObject, PlugIn): self.connected = False self.fd = -1 self.state = -1 + self._owner.disconnected() def _do_send(self): if not self.sendbuff: @@ -263,7 +296,7 @@ class P2PConnection(IdleObject, PlugIn): if self.state < 0: gajim.idlequeue.unplug_idle(self.fd) self._on_send() - self.disconnect2() + self.disconnect() return # we are not waiting for write self._plug_idle() @@ -273,11 +306,10 @@ class P2PConnection(IdleObject, PlugIn): if e[0] == socket.SSL_ERROR_WANT_WRITE: return True if self.state < 0: - self.disconnect2() - return - if self._on_send_failure: - self._on_send_failure() + self.disconnect() return + self._on_send_failure() + return return True def _plug_idle(self): From 8b8af31aae6952431ed0f4048431539a13096151 Mon Sep 17 00:00:00 2001 From: Dimitur Kirov Date: Tue, 19 Sep 2006 15:09:37 +0000 Subject: [PATCH 046/110] typo --- src/common/zeroconf/zeroconf.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/common/zeroconf/zeroconf.py b/src/common/zeroconf/zeroconf.py index 3b9597784..81dc2c75f 100755 --- a/src/common/zeroconf/zeroconf.py +++ b/src/common/zeroconf/zeroconf.py @@ -339,7 +339,7 @@ class Zeroconf: #adium requires the html parts #self.send("" + msg + "" + msg +"", sock) - self.send('', sock) + self.send('', sock) sock.close() # END Zeroconf From d21c07d8d7340d82072c8c7510d7aeb1723ca696 Mon Sep 17 00:00:00 2001 From: Dimitur Kirov Date: Tue, 19 Sep 2006 15:10:06 +0000 Subject: [PATCH 047/110] add sender capabilities --- src/common/zeroconf/client_zeroconf.py | 92 ++++++++++++++----- .../zeroconf/connection_handlers_zeroconf.py | 7 +- 2 files changed, 74 insertions(+), 25 deletions(-) diff --git a/src/common/zeroconf/client_zeroconf.py b/src/common/zeroconf/client_zeroconf.py index d3f534232..26c69292d 100644 --- a/src/common/zeroconf/client_zeroconf.py +++ b/src/common/zeroconf/client_zeroconf.py @@ -14,10 +14,11 @@ ## from common import gajim from common.xmpp.idlequeue import IdleObject -from common.xmpp import dispatcher_nb +from common.xmpp import dispatcher_nb, simplexml from common.xmpp.client import * from common.xmpp.simplexml import ustr from dialogs import BindPortError +from common.xmpp.protocol import * import socket import errno @@ -26,7 +27,7 @@ from common.zeroconf import roster_zeroconf MAX_BUFF_LEN = 65536 DATA_RECEIVED='DATA RECEIVED' DATA_SENT='DATA SENT' - +TYPE_SERVER, TYPE_CLIENT = range(2) class ZeroconfListener(IdleObject): def __init__(self, port, caller = None): @@ -75,6 +76,7 @@ class ZeroconfListener(IdleObject): self._serv.close() except: pass + #XXX kill all active connection def accept_conn(self): ''' accepts a new incomming connection ''' @@ -98,12 +100,30 @@ class P2PClient(IdleObject): self.DEBUG = self._DEBUG.Show self.debug_flags = self._DEBUG.debug_flags self.debug_flags.append(self.DBG) - self.Connection = P2PConnection('', _sock, host, port, caller) + P2PConnection('', _sock, host, port, caller, self.on_connect) + + def on_connect(self, conn): + self.Connection = conn self.Connection.PlugIn(self) dispatcher_nb.Dispatcher().PlugIn(self) - self.RegisterHandler('message', self._messageCB) + def StreamInit(self): + ''' Send an initial stream header. ''' + self.Dispatcher.Stream = simplexml.NodeBuilder() + self.Dispatcher.Stream._dispatch_depth = 2 + self.Dispatcher.Stream.dispatch = self.Dispatcher.dispatch + self.Dispatcher.Stream.stream_header_received = self.Dispatcher._check_stream_start + self.debug_flags.append(simplexml.DBG_NODEBUILDER) + self.Dispatcher.Stream.DEBUG = self.DEBUG + self.Dispatcher.Stream.features = None + self.Dispatcher._metastream = Node('stream:stream') + self.Dispatcher._metastream.setNamespace(self.Namespace) + #~ self._metastream.setAttr('version', '1.0') + self.Dispatcher._metastream.setAttr('xmlns:stream', NS_STREAMS) + #~ self._metastream.setAttr('to', self._owner.Server) + self.Dispatcher.send("%s>" % str(self.Dispatcher._metastream)[:-2]) + def disconnected(self): if self.__dict__.has_key('Dispatcher'): self.Dispatcher.PlugOut() @@ -132,36 +152,42 @@ class P2PClient(IdleObject): class P2PConnection(IdleObject, PlugIn): ''' class for sending file to socket over socks5 ''' - def __init__(self, sock_hash, _sock, host = None, port = None, caller = None): + def __init__(self, sock_hash, _sock, host = None, port = None, caller = None, on_connect = None): IdleObject.__init__(self) PlugIn.__init__(self) self.DBG_LINE='socket' self.sendqueue = [] self.sendbuff = None self._sock = _sock - self._sock.setblocking(False) - self.fd = _sock.fileno() - self._recv = _sock.recv - self._send = _sock.send - self.connected = True - self.state = 1 + self.host, self.port = host, port + self.on_connect = on_connect self.writable = False self.readable = False # waiting for first bytes # start waiting for data - - - - #~ self.Connection = self self._registered_name = None - - self._exported_methods=[self.send, self.disconnect, self.onreceive] + self._exported_methods=[self.send, self.disconnect, self.onreceive] self.on_receive = None + if _sock: + self.sock_type = TYPE_SERVER + self.connected = True + self.state = 1 + _sock.setblocking(False) + self.fd = _sock.fileno() + self.on_connect(self) + else: + self.sock_type = TYPE_CLIENT + self.connected = False + self.state = 0 + self.idlequeue.plug_idle(self, True, False) + self.do_connect() + + def plugin(self, owner): self.onreceive(owner._on_receive_document_attrs) - gajim.idlequeue.plug_idle(self, False, True) + self._plug_idle() return True def plugout(self): @@ -204,9 +230,33 @@ class P2PConnection(IdleObject, PlugIn): # no activity for foo seconds # self.pollend() + + def do_connect(self): + try: + self._sock.connect((self.host, self.port)) + self._sock.setblocking(False) + except Exception, ee: + (errnum, errstr) = ee + if errnum in (errno.EINPROGRESS, errno.EALREADY, errno.EWOULDBLOCK): + return + # win32 needs this + elif errnum not in (10056, errno.EISCONN) or self.state != 0: + self.disconnect() + return None + else: # socket is already connected + self._sock.setblocking(False) + self.connected = True + self.state = 1 # connected + self.on_connect(self) + return 1 # we are connected + + def pollout(self): if not self.connected: - self.disconnect2() + self.disconnect() + return + if self.state == 0: + self.do_connect() return gajim.idlequeue.remove_timeout(self.fd) self._do_send() @@ -221,7 +271,7 @@ class P2PConnection(IdleObject, PlugIn): errnum = 0 try: # get as many bites, as possible, but not more than RECV_BUFSIZE - received = self._recv(MAX_BUFF_LEN) + received = self._sock.recv(MAX_BUFF_LEN) except Exception, e: if len(e.args) > 0 and isinstance(e.args[0], int): errnum = e[0] @@ -289,7 +339,7 @@ class P2PConnection(IdleObject, PlugIn): self.sendbuff = self.sendqueue.pop(0) self.sent_data = self.sendbuff try: - send_count = self._send(self.sendbuff) + send_count = self._sock.send(self.sendbuff) if send_count: self.sendbuff = self.sendbuff[send_count:] if not self.sendbuff and not self.sendqueue: diff --git a/src/common/zeroconf/connection_handlers_zeroconf.py b/src/common/zeroconf/connection_handlers_zeroconf.py index 8a4937e07..31dc71848 100644 --- a/src/common/zeroconf/connection_handlers_zeroconf.py +++ b/src/common/zeroconf/connection_handlers_zeroconf.py @@ -235,13 +235,12 @@ class ConnectionHandlersZeroconf(ConnectionVcard): tim = msg.getTimestamp() tim = time.strptime(tim, '%Y%m%dT%H:%M:%S') tim = time.localtime(timegm(tim)) - frm = helpers.get_full_jid_from_iq(msg) - if frm == 'none': + frm = str(msg.getFrom()) + if frm == None: for key in self.zeroconf.contacts: if ip == self.zeroconf.contacts[key][zeroconf.C_ADDRESS]: frm = key - jid = helpers.get_jid_from_iq(msg) - print 'jid', jid + jid = frm no_log_for = gajim.config.get_per('accounts', self.name, 'no_log_for').split() encrypted = False From da309569e34c9c1aa20b14a5b73122730334f379 Mon Sep 17 00:00:00 2001 From: Dimitur Kirov Date: Tue, 19 Sep 2006 15:14:53 +0000 Subject: [PATCH 048/110] add possibility to overide StremInit by _owner --- src/common/xmpp/dispatcher_nb.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/common/xmpp/dispatcher_nb.py b/src/common/xmpp/dispatcher_nb.py index ca13af184..3079ca6f2 100644 --- a/src/common/xmpp/dispatcher_nb.py +++ b/src/common/xmpp/dispatcher_nb.py @@ -74,7 +74,6 @@ class Dispatcher(PlugIn): self.RegisterProtocol('presence', Presence) self.RegisterProtocol('message', Message) self.RegisterDefaultHandler(self.returnStanzaHandler) - # Register Gajim's event handler as soon as dispatcher begins self.RegisterEventHandler(self._owner._caller._event_dispatcher) self.on_responses = {} @@ -84,7 +83,10 @@ class Dispatcher(PlugIn): self._owner.lastErrNode = None self._owner.lastErr = None self._owner.lastErrCode = None - self.StreamInit() + if hasattr(self._owner, 'StreamInit'): + self._owner.StreamInit() + else: + self.StreamInit() def plugout(self): ''' Prepares instance to be destructed. ''' @@ -134,7 +136,7 @@ class Dispatcher(PlugIn): return 0 except ExpatError: sys.exc_clear() - self.DEBUG('Invalid XML received from server. Forcing disconnect.') + self.DEBUG('Invalid XML received from server. Forcing disconnect.', 'error') self._owner.Connection.pollend() return 0 if len(self._pendingExceptions) > 0: From 884e66e5d72eec1e5777a726c9eef918a98232da Mon Sep 17 00:00:00 2001 From: Dimitur Kirov Date: Tue, 19 Sep 2006 17:10:28 +0000 Subject: [PATCH 049/110] some bugs fixed --- src/common/zeroconf/client_zeroconf.py | 10 ++++------ src/common/zeroconf/connection_handlers_zeroconf.py | 3 ++- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/common/zeroconf/client_zeroconf.py b/src/common/zeroconf/client_zeroconf.py index 26c69292d..9a72d0a38 100644 --- a/src/common/zeroconf/client_zeroconf.py +++ b/src/common/zeroconf/client_zeroconf.py @@ -91,7 +91,8 @@ class P2PClient(IdleObject): self._owner = self self.Namespace = 'jabber:client' self.defaultNamespace = self.Namespace - self._component=0 + self._component = 0 + self._registered_name = None self._caller = caller self.Server = host self.DBG = 'client' @@ -163,9 +164,6 @@ class P2PConnection(IdleObject, PlugIn): self.on_connect = on_connect self.writable = False self.readable = False - # waiting for first bytes - # start waiting for data - self._registered_name = None self._exported_methods=[self.send, self.disconnect, self.onreceive] self.on_receive = None if _sock: @@ -220,8 +218,8 @@ class P2PConnection(IdleObject, PlugIn): r = stanza if isinstance(r, unicode): r = r.encode('utf-8') - #~ elif not isinstance(r, str): - #~ r = ustr(r).encode('utf-8') + elif not isinstance(r, str): + r = ustr(r).encode('utf-8') self.sendqueue.append(r) self._plug_idle() diff --git a/src/common/zeroconf/connection_handlers_zeroconf.py b/src/common/zeroconf/connection_handlers_zeroconf.py index 31dc71848..804ad7432 100644 --- a/src/common/zeroconf/connection_handlers_zeroconf.py +++ b/src/common/zeroconf/connection_handlers_zeroconf.py @@ -235,11 +235,12 @@ class ConnectionHandlersZeroconf(ConnectionVcard): tim = msg.getTimestamp() tim = time.strptime(tim, '%Y%m%dT%H:%M:%S') tim = time.localtime(timegm(tim)) - frm = str(msg.getFrom()) + frm = msg.getFrom() if frm == None: for key in self.zeroconf.contacts: if ip == self.zeroconf.contacts[key][zeroconf.C_ADDRESS]: frm = key + frm = str(frm) jid = frm no_log_for = gajim.config.get_per('accounts', self.name, 'no_log_for').split() From 1f836cae67af0d1a2987a22ee83b71425a9b2b5b Mon Sep 17 00:00:00 2001 From: Dimitur Kirov Date: Tue, 19 Sep 2006 17:58:29 +0000 Subject: [PATCH 050/110] debug xml data --- src/common/zeroconf/client_zeroconf.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/common/zeroconf/client_zeroconf.py b/src/common/zeroconf/client_zeroconf.py index 9a72d0a38..93784f608 100644 --- a/src/common/zeroconf/client_zeroconf.py +++ b/src/common/zeroconf/client_zeroconf.py @@ -292,6 +292,8 @@ class P2PConnection(IdleObject, PlugIn): if self.state < 0: return if self.on_receive: + if received.strip(): + self.DEBUG(received, 'got') if hasattr(self._owner, 'Dispatcher'): self._owner.Dispatcher.Event('', DATA_RECEIVED, received) self.on_receive(received) @@ -372,7 +374,7 @@ class P2PConnection(IdleObject, PlugIn): def _on_send(self): if self.sent_data and self.sent_data.strip(): - #~ self.DEBUG(self.sent_data,'sent') + self.DEBUG(self.sent_data,'sent') if hasattr(self._owner, 'Dispatcher'): self._owner.Dispatcher.Event('', DATA_SENT, self.sent_data) self.sent_data = None From 81b46bb37fd69f782ec095bd9af7c7c859f1641b Mon Sep 17 00:00:00 2001 From: Dimitur Kirov Date: Tue, 19 Sep 2006 18:18:03 +0000 Subject: [PATCH 051/110] fix sending stream headers order --- src/common/zeroconf/client_zeroconf.py | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/src/common/zeroconf/client_zeroconf.py b/src/common/zeroconf/client_zeroconf.py index 93784f608..4ed64809c 100644 --- a/src/common/zeroconf/client_zeroconf.py +++ b/src/common/zeroconf/client_zeroconf.py @@ -87,13 +87,14 @@ class ZeroconfListener(IdleObject): class P2PClient(IdleObject): - def __init__(self, _sock, host, port, caller): + def __init__(self, _sock, host, port, caller, messagequeue = []): self._owner = self self.Namespace = 'jabber:client' self.defaultNamespace = self.Namespace self._component = 0 self._registered_name = None self._caller = caller + self.messagequeue = messagequeue self.Server = host self.DBG = 'client' debug = ['always', 'nodebuilder'] @@ -101,6 +102,10 @@ class P2PClient(IdleObject): self.DEBUG = self._DEBUG.Show self.debug_flags = self._DEBUG.debug_flags self.debug_flags.append(self.DBG) + if _sock: + self.sock_type = TYPE_SERVER + else: + self.sock_type = TYPE_CLIENT P2PConnection('', _sock, host, port, caller, self.on_connect) def on_connect(self, conn): @@ -114,17 +119,29 @@ class P2PClient(IdleObject): self.Dispatcher.Stream = simplexml.NodeBuilder() self.Dispatcher.Stream._dispatch_depth = 2 self.Dispatcher.Stream.dispatch = self.Dispatcher.dispatch - self.Dispatcher.Stream.stream_header_received = self.Dispatcher._check_stream_start + self.Dispatcher.Stream.stream_header_received = self._check_stream_start self.debug_flags.append(simplexml.DBG_NODEBUILDER) self.Dispatcher.Stream.DEBUG = self.DEBUG self.Dispatcher.Stream.features = None + if self.sock_type == TYPE_CLIENT: + self.send_stream_header() + + def send_stream_header(self): self.Dispatcher._metastream = Node('stream:stream') self.Dispatcher._metastream.setNamespace(self.Namespace) + # XXX TLS support #~ self._metastream.setAttr('version', '1.0') self.Dispatcher._metastream.setAttr('xmlns:stream', NS_STREAMS) - #~ self._metastream.setAttr('to', self._owner.Server) self.Dispatcher.send("%s>" % str(self.Dispatcher._metastream)[:-2]) + def _check_stream_start(self, ns, tag, attrs): + if ns<>NS_STREAMS or tag<>'stream': + raise ValueError('Incorrect stream start: (%s,%s). Terminating.' % (tag, ns)) + if self.sock_type == TYPE_SERVER: + self.send_stream_header() + for message in self.messagequeue: + self.send(message) + def disconnected(self): if self.__dict__.has_key('Dispatcher'): self.Dispatcher.PlugOut() @@ -167,14 +184,12 @@ class P2PConnection(IdleObject, PlugIn): self._exported_methods=[self.send, self.disconnect, self.onreceive] self.on_receive = None if _sock: - self.sock_type = TYPE_SERVER self.connected = True self.state = 1 _sock.setblocking(False) self.fd = _sock.fileno() self.on_connect(self) else: - self.sock_type = TYPE_CLIENT self.connected = False self.state = 0 self.idlequeue.plug_idle(self, True, False) From 9c60d30351620dbfd6d7bd43547ecfdeefc44919 Mon Sep 17 00:00:00 2001 From: Dimitur Kirov Date: Tue, 19 Sep 2006 19:56:04 +0000 Subject: [PATCH 052/110] send_messages uses NonBlocking P2PConnection --- src/common/zeroconf/client_zeroconf.py | 126 ++++++++++++++------- src/common/zeroconf/connection_zeroconf.py | 7 +- 2 files changed, 85 insertions(+), 48 deletions(-) diff --git a/src/common/zeroconf/client_zeroconf.py b/src/common/zeroconf/client_zeroconf.py index 4ed64809c..f139d2f25 100644 --- a/src/common/zeroconf/client_zeroconf.py +++ b/src/common/zeroconf/client_zeroconf.py @@ -30,7 +30,7 @@ DATA_SENT='DATA SENT' TYPE_SERVER, TYPE_CLIENT = range(2) class ZeroconfListener(IdleObject): - def __init__(self, port, caller = None): + def __init__(self, port, conn_holder): ''' handle all incomming connections on ('0.0.0.0', port)''' self.port = port self.queue_idx = -1 @@ -38,7 +38,8 @@ class ZeroconfListener(IdleObject): self.started = False self._sock = None self.fd = -1 - self.caller = caller + self.caller = conn_holder.caller + self.conn_holder = conn_holder def bind(self): self._serv = socket.socket(socket.AF_INET, socket.SOCK_STREAM) @@ -64,7 +65,7 @@ class ZeroconfListener(IdleObject): def pollin(self): ''' accept a new incomming connection and notify queue''' sock = self.accept_conn() - P2PClient(sock[0], sock[1][0], sock[1][1], self.caller) + P2PClient(sock[0], sock[1][0], sock[1][1], self.conn_holder) def disconnect(self): ''' free all resources, we are not listening anymore ''' @@ -76,7 +77,7 @@ class ZeroconfListener(IdleObject): self._serv.close() except: pass - #XXX kill all active connection + self.conn_holder.kill_all_connections() def accept_conn(self): ''' accepts a new incomming connection ''' @@ -87,33 +88,42 @@ class ZeroconfListener(IdleObject): class P2PClient(IdleObject): - def __init__(self, _sock, host, port, caller, messagequeue = []): + def __init__(self, _sock, host, port, conn_holder, messagequeue = []): self._owner = self self.Namespace = 'jabber:client' self.defaultNamespace = self.Namespace self._component = 0 self._registered_name = None - self._caller = caller + self._caller = conn_holder.caller + self.conn_holder = conn_holder self.messagequeue = messagequeue self.Server = host self.DBG = 'client' + self.Connection = None debug = ['always', 'nodebuilder'] self._DEBUG = Debug.Debug(debug) self.DEBUG = self._DEBUG.Show self.debug_flags = self._DEBUG.debug_flags self.debug_flags.append(self.DBG) + self.sock_hash = None if _sock: self.sock_type = TYPE_SERVER else: self.sock_type = TYPE_CLIENT - P2PConnection('', _sock, host, port, caller, self.on_connect) + P2PConnection('', _sock, host, port, self._caller, self.on_connect) def on_connect(self, conn): self.Connection = conn self.Connection.PlugIn(self) dispatcher_nb.Dispatcher().PlugIn(self) self.RegisterHandler('message', self._messageCB) - + self.sock_hash = conn._sock.__hash__ + self.conn_holder.add_connection(self) + if self.sock_type == TYPE_CLIENT: + while self.messagequeue: + message = self.messagequeue.pop(0) + self.send(message) + def StreamInit(self): ''' Send an initial stream header. ''' self.Dispatcher.Stream = simplexml.NodeBuilder() @@ -136,17 +146,32 @@ class P2PClient(IdleObject): def _check_stream_start(self, ns, tag, attrs): if ns<>NS_STREAMS or tag<>'stream': - raise ValueError('Incorrect stream start: (%s,%s). Terminating.' % (tag, ns)) + self.Connection.DEBUG('Incorrect stream start: (%s,%s).Terminating! ' % (tag, ns), 'error') + self.Connection.disconnect() + return if self.sock_type == TYPE_SERVER: self.send_stream_header() - for message in self.messagequeue: + while self.messagequeue: + message = self.messagequeue.pop(0) self.send(message) + - def disconnected(self): + def on_disconnect(self): + if self.conn_holder: + self.conn_holder.remove_connection(self.sock_hash) if self.__dict__.has_key('Dispatcher'): self.Dispatcher.PlugOut() if self.__dict__.has_key('P2PConnection'): self.P2PConnection.PlugOut() + self.Connection = None + self._caller = None + self.conn_holder = None + + def force_disconnect(self): + if self.Connection: + self.disconnect() + else: + self.on_disconnect() def _on_receive_document_attrs(self, data): if data: @@ -184,32 +209,30 @@ class P2PConnection(IdleObject, PlugIn): self._exported_methods=[self.send, self.disconnect, self.onreceive] self.on_receive = None if _sock: - self.connected = True + self._sock = _sock self.state = 1 - _sock.setblocking(False) - self.fd = _sock.fileno() + self._sock.setblocking(False) + self.fd = self._sock.fileno() self.on_connect(self) else: - self.connected = False self.state = 0 - self.idlequeue.plug_idle(self, True, False) + self._sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + self._sock.setblocking(False) + self.fd = self._sock.fileno() + gajim.idlequeue.plug_idle(self, True, False) self.do_connect() - - - - + def plugin(self, owner): self.onreceive(owner._on_receive_document_attrs) self._plug_idle() return True - + def plugout(self): ''' Disconnect from the remote server and unregister self.disconnected method from the owner's dispatcher. ''' self.disconnect() - self._owner.Connection = None self._owner = None - + def onreceive(self, recv_handler): if not recv_handler: if hasattr(self._owner, 'Dispatcher'): @@ -245,29 +268,26 @@ class P2PConnection(IdleObject, PlugIn): def do_connect(self): + errnum = 0 try: self._sock.connect((self.host, self.port)) self._sock.setblocking(False) except Exception, ee: (errnum, errstr) = ee - if errnum in (errno.EINPROGRESS, errno.EALREADY, errno.EWOULDBLOCK): - return - # win32 needs this - elif errnum not in (10056, errno.EISCONN) or self.state != 0: - self.disconnect() - return None - else: # socket is already connected - self._sock.setblocking(False) - self.connected = True + if errnum in (errno.EINPROGRESS, errno.EALREADY, errno.EWOULDBLOCK): + return + # win32 needs this + elif errnum not in (0, 10056, errno.EISCONN) or self.state != 0: + self.disconnect() + return None + else: # socket is already connected + self._sock.setblocking(False) self.state = 1 # connected self.on_connect(self) return 1 # we are connected def pollout(self): - if not self.connected: - self.disconnect() - return if self.state == 0: self.do_connect() return @@ -314,10 +334,8 @@ class P2PConnection(IdleObject, PlugIn): self.on_receive(received) else: # This should never happed, so we need the debug - self.DEBUG('Unhandled data received: %s' % received,'got') + self.DEBUG('Unhandled data received: %s' % received,'error') self.disconnect() - if self.on_connect_failure: - self.on_connect_failure() return True def onreceive(self, recv_handler): @@ -342,10 +360,9 @@ class P2PConnection(IdleObject, PlugIn): except: # socket is already closed pass - self.connected = False self.fd = -1 self.state = -1 - self._owner.disconnected() + self._owner.on_disconnect() def _do_send(self): if not self.sendbuff: @@ -405,10 +422,23 @@ class ClientZeroconf: self.roster = roster_zeroconf.Roster(zeroconf) self.caller = caller self.start_listener(zeroconf.port) + self.connections = {} + def kill_all_connections(self): + for connection in self.connections.values(): + connection.force_disconnect() + + def add_connection(self, connection): + sock_hash = connection.sock_hash + if sock_hash not in self.connections: + self.connections[sock_hash] = connection + + def remove_connection(self, sock_hash): + if sock_hash in self.connections: + self.connections[sock_hash] def start_listener(self, port): - self.listener = ZeroconfListener(port, self.caller) + self.listener = ZeroconfListener(port, self) self.listener.bind() if self.listener.started is False: self.listener = None @@ -416,9 +446,17 @@ class ClientZeroconf: # dialog from dialogs.py and fail BindPortError(port) return None - #~ self.connected += 1 + def getRoster(self): return self.roster.getRoster() - def send(self, str): - pass + def send(self, msg_iq): + msg_iq.setFrom(self.roster.zeroconf.name) + to = msg_iq.getTo() + try: + item = self.roster[to] + except KeyError: + #XXX invalid recipient, show some error maybe ? + return + P2PClient(None, item['address'], item['port'], self, [msg_iq]) + diff --git a/src/common/zeroconf/connection_zeroconf.py b/src/common/zeroconf/connection_zeroconf.py index 4a45c462f..c0afab1b9 100644 --- a/src/common/zeroconf/connection_zeroconf.py +++ b/src/common/zeroconf/connection_zeroconf.py @@ -267,7 +267,6 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): chatstate = None, msg_id = None, composing_jep = None, resource = None, user_nick = None): print 'connection_zeroconf.py: send_message' - fjid = jid if not self.connection: @@ -319,7 +318,8 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): # when msgtxt, requests JEP-0022 composing notification if chatstate is 'composing' or msgtxt: chatstate_node.addChild(name = 'composing') - + + self.connection.send(msg_iq) no_log_for = gajim.config.get_per('accounts', self.name, 'no_log_for') ji = gajim.get_jid_without_resource(jid) if self.name not in no_log_for and ji not in no_log_for: @@ -332,8 +332,7 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): else: kind = 'single_msg_sent' gajim.logger.write(kind, jid, log_msg) - - self.zeroconf.send_message(jid, msgtxt, type) + #~ self.zeroconf.send_message(jid, msgtxt, type) self.dispatch('MSGSENT', (jid, msg, keyID)) From 6c03358b2733328fe8998a8b94dc18e736dae3f2 Mon Sep 17 00:00:00 2001 From: Dimitur Kirov Date: Tue, 19 Sep 2006 19:59:34 +0000 Subject: [PATCH 053/110] remove unused functions --- src/common/zeroconf/zeroconf.py | 42 --------------------------------- 1 file changed, 42 deletions(-) diff --git a/src/common/zeroconf/zeroconf.py b/src/common/zeroconf/zeroconf.py index 81dc2c75f..8d8a4c2f8 100755 --- a/src/common/zeroconf/zeroconf.py +++ b/src/common/zeroconf/zeroconf.py @@ -299,48 +299,6 @@ class Zeroconf: else: return False - def send (self, msg, sock): - print 'send:', msg - totalsent = 0 - while totalsent < len(msg): - sent = sock.send(msg[totalsent:]) - if sent == 0: - raise RuntimeError, "socket connection broken" - totalsent = totalsent + sent - - def send_message(self, jid, msg, type = 'chat'): - print 'zeroconf.py: send_message:', msg - if not msg : - return - sock = socket.socket ( socket.AF_INET, socket.SOCK_STREAM ) - #sock.setblocking(False) - sock.connect ( ( self.contacts[jid][C_ADDRESS], self.contacts[jid][C_PORT] ) ) - - print (self.txt_array_to_dict(self.contacts[jid][C_TXT]))['port.p2pj'] - - #was for adium which uses the txt record - #sock.connect ( ( self.contacts[jid][5], int((self.txt_array_to_dict(self.contacts[jid][7]))['port.p2pj']) ) ) - - self.send("", sock) - - try: recvd = sock.recv(16384) - except: recvd = '' - print 'receive:' + recvd - - message = xmpp.Message(typ=type, to=jid, frm=self.name) - message.setBody(msg) -# no html for now, necessary for anything else but adium? -# html = message.getTag('html', namespace = 'html://www.w3.org/1999/xhtml') -# html.addChild(... - message.addChild(name = 'x', namespace = xmpp.NS_EVENT).addChild(name = 'composing') - - self.send(str(message),sock) - - #adium requires the html parts - #self.send("" + msg + "" + msg +"", sock) - - self.send('', sock) - sock.close() # END Zeroconf From 5af232513b29b84f993a6f99c3d5cfbf651964b8 Mon Sep 17 00:00:00 2001 From: Dimitur Kirov Date: Tue, 19 Sep 2006 20:07:44 +0000 Subject: [PATCH 054/110] we can disconnect, before plugin --- src/common/zeroconf/client_zeroconf.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/common/zeroconf/client_zeroconf.py b/src/common/zeroconf/client_zeroconf.py index f139d2f25..5d320497f 100644 --- a/src/common/zeroconf/client_zeroconf.py +++ b/src/common/zeroconf/client_zeroconf.py @@ -362,7 +362,8 @@ class P2PConnection(IdleObject, PlugIn): pass self.fd = -1 self.state = -1 - self._owner.on_disconnect() + if self._owner: + self._owner.on_disconnect() def _do_send(self): if not self.sendbuff: From 12d125a4be39e174bb15d87dbfb10b3c9aeb3e24 Mon Sep 17 00:00:00 2001 From: Dimitur Kirov Date: Tue, 19 Sep 2006 20:49:34 +0000 Subject: [PATCH 055/110] try to reuse existing connection --- src/common/zeroconf/client_zeroconf.py | 45 ++++++++++++++++++++++---- 1 file changed, 38 insertions(+), 7 deletions(-) diff --git a/src/common/zeroconf/client_zeroconf.py b/src/common/zeroconf/client_zeroconf.py index 5d320497f..a5c79a210 100644 --- a/src/common/zeroconf/client_zeroconf.py +++ b/src/common/zeroconf/client_zeroconf.py @@ -88,7 +88,7 @@ class ZeroconfListener(IdleObject): class P2PClient(IdleObject): - def __init__(self, _sock, host, port, conn_holder, messagequeue = []): + def __init__(self, _sock, host, port, conn_holder, messagequeue = [], to = None): self._owner = self self.Namespace = 'jabber:client' self.defaultNamespace = self.Namespace @@ -97,6 +97,7 @@ class P2PClient(IdleObject): self._caller = conn_holder.caller self.conn_holder = conn_holder self.messagequeue = messagequeue + self.to = to self.Server = host self.DBG = 'client' self.Connection = None @@ -110,15 +111,24 @@ class P2PClient(IdleObject): self.sock_type = TYPE_SERVER else: self.sock_type = TYPE_CLIENT - P2PConnection('', _sock, host, port, self._caller, self.on_connect) + conn = P2PConnection('', _sock, host, port, self._caller, self.on_connect) + self.sock_hash = conn._sock.__hash__ + self.conn_holder.add_connection(self, self.Server, self.to) + + def add_message(self, message): + if self.Connection: + if self.Connection.state == -1: + return False + self.send(message) + else: + messagequeue.append(message) + return True def on_connect(self, conn): self.Connection = conn self.Connection.PlugIn(self) dispatcher_nb.Dispatcher().PlugIn(self) self.RegisterHandler('message', self._messageCB) - self.sock_hash = conn._sock.__hash__ - self.conn_holder.add_connection(self) if self.sock_type == TYPE_CLIENT: while self.messagequeue: message = self.messagequeue.pop(0) @@ -424,19 +434,32 @@ class ClientZeroconf: self.caller = caller self.start_listener(zeroconf.port) self.connections = {} + self.recipient_to_hash = {} + self.ip_to_hash = {} def kill_all_connections(self): for connection in self.connections.values(): connection.force_disconnect() - def add_connection(self, connection): + def add_connection(self, connection, ip, recipient): sock_hash = connection.sock_hash if sock_hash not in self.connections: self.connections[sock_hash] = connection + self.ip_to_hash[ip] = sock_hash + if recipient: + self.recipient_to_hash[recipient] = sock_hash def remove_connection(self, sock_hash): if sock_hash in self.connections: - self.connections[sock_hash] + del self.connections[sock_hash] + for i in self.recipient_to_hash: + if self.recipient_to_hash[i] == sock_hash: + del self.recipient_to_hash[i] + break + for i in self.ip_to_hash: + if self.ip_to_hash[i] == sock_hash: + del self.ip_to_hash[i] + break def start_listener(self, port): self.listener = ZeroconfListener(port, self) @@ -454,10 +477,18 @@ class ClientZeroconf: def send(self, msg_iq): msg_iq.setFrom(self.roster.zeroconf.name) to = msg_iq.getTo() + if to in self.recipient_to_hash: + conn = self.connections[self.recipient_to_hash[to]] + if conn.add_message(msg_iq): + return try: item = self.roster[to] except KeyError: #XXX invalid recipient, show some error maybe ? return - P2PClient(None, item['address'], item['port'], self, [msg_iq]) + if item['address'] in self.ip_to_hash: + conn = self.connections[self.ip_to_hash[item['address']]] + if conn.add_message(msg_iq): + return + P2PClient(None, item['address'], item['port'], self, [msg_iq], to) From a393f121be5f5c2b479cb4bfce2096c6d0cc4192 Mon Sep 17 00:00:00 2001 From: Stefan Bethge Date: Tue, 19 Sep 2006 23:07:54 +0000 Subject: [PATCH 056/110] added initial properties dialog for zeroconf --- data/glade/preferences_window.glade | 112 ++++++++++++++++-- src/common/zeroconf/client_zeroconf.py | 1 + .../zeroconf/connection_handlers_zeroconf.py | 1 + src/common/zeroconf/connection_zeroconf.py | 16 ++- src/common/zeroconf/zeroconf.py | 6 +- src/config.py | 111 ++++++++++++++++- 6 files changed, 229 insertions(+), 18 deletions(-) diff --git a/data/glade/preferences_window.glade b/data/glade/preferences_window.glade index 62e7c260a..c8433d6a4 100644 --- a/data/glade/preferences_window.glade +++ b/data/glade/preferences_window.glade @@ -147,17 +147,109 @@ - + True - True - Enable link-local messaging (Zeroconf) - True - GTK_RELIEF_NORMAL - True - False - False - True - + False + 0 + + + + True + True + Enable _link-local messaging (Zeroconf) + True + GTK_RELIEF_NORMAL + True + False + False + True + + + + 0 + False + False + + + + + + True + True + GTK_RELIEF_NORMAL + True + + + + + True + 0.5 + 0.5 + 0 + 0 + 0 + 0 + 0 + 0 + + + + True + False + 2 + + + + True + gtk-properties + 4 + 0.5 + 0.5 + 0 + 0 + + + 0 + False + False + + + + + + True + Pr_operties + True + False + GTK_JUSTIFY_LEFT + False + False + 0.5 + 0.5 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + False + False + + + + + + + + + 0 + True + False + + 0 diff --git a/src/common/zeroconf/client_zeroconf.py b/src/common/zeroconf/client_zeroconf.py index a5c79a210..ffad96579 100644 --- a/src/common/zeroconf/client_zeroconf.py +++ b/src/common/zeroconf/client_zeroconf.py @@ -471,6 +471,7 @@ class ClientZeroconf: BindPortError(port) return None + def getRoster(self): return self.roster.getRoster() diff --git a/src/common/zeroconf/connection_handlers_zeroconf.py b/src/common/zeroconf/connection_handlers_zeroconf.py index 804ad7432..eab7fe3a4 100644 --- a/src/common/zeroconf/connection_handlers_zeroconf.py +++ b/src/common/zeroconf/connection_handlers_zeroconf.py @@ -227,6 +227,7 @@ class ConnectionHandlersZeroconf(ConnectionVcard): idle.init() except: HAS_IDLE = False + def _messageCB(self, ip, con, msg): '''Called when we receive a message''' msgtxt = msg.getBody() diff --git a/src/common/zeroconf/connection_zeroconf.py b/src/common/zeroconf/connection_zeroconf.py index c0afab1b9..92d2f0e7a 100644 --- a/src/common/zeroconf/connection_zeroconf.py +++ b/src/common/zeroconf/connection_zeroconf.py @@ -37,6 +37,7 @@ if os.name != 'nt': signal.signal(signal.SIGPIPE, signal.SIG_DFL) import getpass import gobject +import notify from common import helpers from common import gajim @@ -69,7 +70,11 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): #we don't need a password, but must be non-empty self.password = 'zeroconf' - self.privacy_rules_supported = False + #XXX use that somewhere + self.autoconnect = False + self.sync_with_global_status = True + self.no_log_for = False + # Do we continue connection when we get roster (send presence,get vcard...) self.continue_connect_info = None if USE_GPG: @@ -93,6 +98,7 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): print 'Creating zeroconf account' gajim.config.add_per('accounts', 'zeroconf') gajim.config.set_per('accounts', 'zeroconf', 'autoconnect', True) + gajim.config.set_per('accounts', 'zeroconf', 'no_log_for', False) gajim.config.set_per('accounts', 'zeroconf', 'password', 'zeroconf') gajim.config.set_per('accounts', 'zeroconf', 'sync_with_global_status', True) username = unicode(getpass.getuser()) @@ -106,6 +112,10 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): username = gajim.config.get_per('accounts', 'zeroconf', 'name') host = gajim.config.get_per('accounts', 'zeroconf', 'hostname') port = gajim.config.get_per('accounts', 'zeroconf', 'custom_port') + self.autoconnect = gajim.config.get_per('accounts', 'zeroconf', 'autoconnect') + self.sync_with_global_status = gajim.config.get_per('accounts', 'zeroconf', 'sync_with_global_status') + self.no_log_for = gajim.config.get_per('accounts', 'zeroconf', 'no_log_for') + self.zeroconf = zeroconf.Zeroconf(self._on_new_service, self._on_remove_service, username, host, port) # END __init__ @@ -258,6 +268,10 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): if check: self.dispatch('STATUS', show) else: +# self.dispatch('ERROR', 'Could not change status. Please check if avahi-daemon is running.') + notify.popup(_('Connection problem:'), 'zeroconf', None, + title=_('Could not change status'), + text=_('Please check if avahi-daemon is running.') ) self.dispatch('STATUS', 'offline') def get_status(self): diff --git a/src/common/zeroconf/zeroconf.py b/src/common/zeroconf/zeroconf.py index 8d8a4c2f8..63b4f864a 100755 --- a/src/common/zeroconf/zeroconf.py +++ b/src/common/zeroconf/zeroconf.py @@ -106,8 +106,8 @@ class Zeroconf: return items def service_resolved_callback(self, interface, protocol, name, stype, domain, host, aprotocol, address, port, txt, flags): - print "Service data for service '%s' in domain '%s' on %i.%i:" % (name, domain, interface, protocol) - print "\tHost %s (%s), port %i, TXT data: %s" % (host, address, port, avahi.txt_array_to_string_array(txt)) + #print "Service data for service '%s' in domain '%s' on %i.%i:" % (name, domain, interface, protocol) + #print "\tHost %s (%s), port %i, TXT data: %s" % (host, address, port, avahi.txt_array_to_string_array(txt)) bare_name = name if name.find('@') == -1: name = name + '@' + name @@ -293,7 +293,7 @@ class Zeroconf: self.txt['status'] = self.replace_show(txt['status']) txt = avahi.dict_to_txt_array(self.txt) - if self.entrygroup: + if self.connected and self.entrygroup: self.entrygroup.UpdateServiceTxt(avahi.IF_UNSPEC, avahi.PROTO_UNSPEC, dbus.UInt32(0), self.name, self.stype,'', txt, reply_handler=self.service_updated_callback, error_handler=self.print_error_callback) return True else: diff --git a/src/config.py b/src/config.py index eb34cba95..634990584 100644 --- a/src/config.py +++ b/src/config.py @@ -557,8 +557,7 @@ class PreferencesWindow: if gajim.interface.instances.has_key('accounts'): gajim.interface.instances['accounts'].init_accounts() else: - #enable - #gajim.config.add_per('accounts', 'zeroconf') # if not already there (how?) + #enable (will create new account if not present) gajim.connections['zeroconf'] = common.zeroconf.connection_zeroconf.ConnectionZeroconf('zeroconf') # update variables gajim.interface.instances['zeroconf'] = {'infos': {}, 'disco': {}, @@ -590,6 +589,12 @@ class PreferencesWindow: self.on_checkbutton_toggled(widget, 'enable_zeroconf') + def on_zeroconf_properties_button_clicked(self, widget): + if gajim.interface.instances.has_key('zeroconf_properties'): + gajim.interface.instances['zeroconf_properties'].window.present() + else: + gajim.interface.instances['zeroconf_properties'] = \ + ZeroconfPropertiesWindow() def on_show_status_msgs_in_roster_checkbutton_toggled(self, widget): self.on_checkbutton_toggled(widget, 'show_status_msgs_in_roster') @@ -1168,8 +1173,7 @@ class AccountModificationWindow: def init_account_gpg(self): keyid = gajim.config.get_per('accounts', self.account, 'keyid') keyname = gajim.config.get_per('accounts', self.account, 'keyname') - savegpgpass = gajim.config.get_per('accounts', self.account, - 'savegpgpass') + savegpgpass = gajim.config.get_per('accounts', self.account,'savegpgpass') if not keyid or not gajim.config.get('usegpg'): return @@ -3029,3 +3033,102 @@ _('You can set advanced account options by pressing Advanced button, or later by gajim.interface.roster.draw_roster() gajim.interface.roster.actions_menu_needs_rebuild = True gajim.interface.save_config() + +#---------- ZeroconfPropertiesWindow class -------------# +class ZeroconfPropertiesWindow: + def __init__(self): + self.xml = gtkgui_helpers.get_glade('zeroconf_properties_window.glade') + self.window = self.xml.get_widget('zeroconf_properties_window') + self.window.set_transient_for(gajim.interface.roster.window) + self.xml.signal_autoconnect(self) + + st = gajim.config.get_per('accounts', 'zeroconf', 'autoconnect') + if st: + self.xml.get_widget('autoconnect_checkbutton').set_active(st) + + st = gajim.config.get_per('accounts', 'zeroconf', 'no_log_for') + if st: + self.xml.get_widget('log_history_checkbutton').set_active(bool(st)) + + st = gajim.config.get_per('accounts', 'zeroconf', 'sync_with_global_status') + if st: + self.xml.get_widget('sync_with_global_status_checkbutton').set_active(st) + + st = gajim.config.get_per('accounts', 'zeroconf', 'first_name') + if st: + self.xml.get_widget('first_name_entry').set_text(st) + + st = gajim.config.get_per('accounts', 'zeroconf', 'last_name') + if st: + self.xml.get_widget('last_name_entry').set_text(st) + + st = gajim.config.get_per('accounts', 'zeroconf', 'jabber_id') + if st: + self.xml.get_widget('jabber_id_entry').set_text(st) + + st = gajim.config.get_per('accounts', 'zeroconf', 'email') + if st: + self.xml.get_widget('email_entry').set_text(st) + + st = gajim.config.get_per('accounts', 'zeroconf', 'use_tls') + if st: + self.xml.get_widget('use_tls_checkbutton').set_active(st) + + st = gajim.config.get_per('accounts', 'zeroconf', 'custom_port') + if st: + self.xml.get_widget('custom_port_entry').set_text(str(st)) + + self.xml.get_widget('custom_port_entry').set_sensitive(True) + + self.xml.get_widget('save_button').grab_focus() + self.window.show_all() + + def on_zeroconf_properties_window_destroy(self, widget): + #close window + if gajim.interface.instances.has_key('zeroconf_properties'): + del gajim.interface.instances['zeroconf_properties'] + + def on_cancel_button_clicked(self, widget): + self.window.destroy() + + def on_save_button_clicked(self, widget): + st = self.xml.get_widget('autoconnect_checkbutton').get_active() + gajim.config.set_per('accounts', 'zeroconf', 'autoconnect', st) + + st = self.xml.get_widget('log_history_checkbutton').get_active() + gajim.config.set_per('accounts', 'zeroconf', 'no_log_for', st) + + st = self.xml.get_widget('sync_with_global_status_checkbutton').get_active() + gajim.config.set_per('accounts', 'zeroconf', 'sync_with_global_status', st) + + st = self.xml.get_widget('custom_port_entry').get_text() + gajim.config.set_per('accounts', 'zeroconf', 'custom_port', st) + + ''' + st = gajim.config.get_per('accounts', 'zeroconf', 'first_name') + if st: + self.xml.get_widget('first_name_entry').set_text(st) + + st = gajim.config.get_per('accounts', 'zeroconf', 'last_name') + if st: + self.xml.get_widget('last_name_entry').set_text(st) + + st = gajim.config.get_per('accounts', 'zeroconf', 'jabber_id') + if st: + self.xml.get_widget('jabber_id_entry').set_text(st) + + st = gajim.config.get_per('accounts', 'zeroconf', 'email') + if st: + self.xml.get_widget('email_entry').set_text(st) + + st = gajim.config.get_per('accounts', 'zeroconf', 'use_tls') + if st: + self.xml.get_widget('use_tls_checkbutton').set_active(st) + + ''' + + self.window.destroy() + + def on_custom_port_checkbutton(self, widget): + pass + From 57779a6ad3d8c39adaed95175bf606e5ca7e9083 Mon Sep 17 00:00:00 2001 From: Dimitur Kirov Date: Wed, 20 Sep 2006 11:01:47 +0000 Subject: [PATCH 057/110] drop connection after certain time of inactivity set timout on connect attempts transleted russian comment --- src/common/xmpp/session.py | 2 +- src/common/zeroconf/client_zeroconf.py | 25 +++++++++++++++++++------ 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/src/common/xmpp/session.py b/src/common/xmpp/session.py index 3921937ed..b61e4f6de 100644 --- a/src/common/xmpp/session.py +++ b/src/common/xmpp/session.py @@ -183,7 +183,7 @@ class Session: if self.sendbuffer: try: # LOCK_QUEUE - sent=self._send(self.sendbuffer) # âÌÏËÉÒÕÀÝÁÑ ÛÔÕÞËÁ! + sent=self._send(self.sendbuffer) # blocking socket except: # UNLOCK_QUEUE self.set_socket_state(SOCKET_DEAD) diff --git a/src/common/zeroconf/client_zeroconf.py b/src/common/zeroconf/client_zeroconf.py index ffad96579..882225e1d 100644 --- a/src/common/zeroconf/client_zeroconf.py +++ b/src/common/zeroconf/client_zeroconf.py @@ -29,6 +29,12 @@ DATA_RECEIVED='DATA RECEIVED' DATA_SENT='DATA SENT' TYPE_SERVER, TYPE_CLIENT = range(2) +# wait XX sec to establish a connection +CONNECT_TIMEOUT_SECONDS = 30 + +# after XX sec with no activity, close the stream +ACTIVITY_TIMEOUT_SECONDS = 180 + class ZeroconfListener(IdleObject): def __init__(self, port, conn_holder): ''' handle all incomming connections on ('0.0.0.0', port)''' @@ -85,8 +91,6 @@ class ZeroconfListener(IdleObject): _sock[0].setblocking(False) return _sock - - class P2PClient(IdleObject): def __init__(self, _sock, host, port, conn_holder, messagequeue = [], to = None): self._owner = self @@ -101,7 +105,10 @@ class P2PClient(IdleObject): self.Server = host self.DBG = 'client' self.Connection = None - debug = ['always', 'nodebuilder'] + if gajim.verbose: + debug = ['always', 'nodebuilder'] + else: + debug = [] self._DEBUG = Debug.Debug(debug) self.DEBUG = self._DEBUG.Show self.debug_flags = self._DEBUG.debug_flags @@ -230,7 +237,13 @@ class P2PConnection(IdleObject, PlugIn): self._sock.setblocking(False) self.fd = self._sock.fileno() gajim.idlequeue.plug_idle(self, True, False) + self.set_timeout(CONNECT_TIMEOUT_SECONDS) self.do_connect() + + def set_timeout(self, timeout): + gajim.idlequeue.remove_timeout(self.fd) + if self.state >= 0: + gajim.idlequeue.set_read_timeout(self.fd, timeout) def plugin(self, owner): self.onreceive(owner._on_receive_document_attrs) @@ -272,9 +285,7 @@ class P2PConnection(IdleObject, PlugIn): self._plug_idle() def read_timeout(self): - gajim.idlequeue.remove_timeout(self.fd) - # no activity for foo seconds - # self.pollend() + self.pollend() def do_connect(self): @@ -337,6 +348,7 @@ class P2PConnection(IdleObject, PlugIn): if self.state < 0: return if self.on_receive: + self.set_timeout(ACTIVITY_TIMEOUT_SECONDS) if received.strip(): self.DEBUG(received, 'got') if hasattr(self._owner, 'Dispatcher'): @@ -403,6 +415,7 @@ class P2PConnection(IdleObject, PlugIn): return self._on_send_failure() return + self.set_timeout(ACTIVITY_TIMEOUT_SECONDS) return True def _plug_idle(self): From bc63142b926936f466ff18652b11982c9645efb4 Mon Sep 17 00:00:00 2001 From: Stefan Bethge Date: Wed, 20 Sep 2006 16:37:39 +0000 Subject: [PATCH 058/110] add missing zeroconf_properties_window.glade --- data/glade/zeroconf_properties_window.glade | 541 ++++++++++++++++++++ 1 file changed, 541 insertions(+) create mode 100644 data/glade/zeroconf_properties_window.glade diff --git a/data/glade/zeroconf_properties_window.glade b/data/glade/zeroconf_properties_window.glade new file mode 100644 index 000000000..4e5cd3369 --- /dev/null +++ b/data/glade/zeroconf_properties_window.glade @@ -0,0 +1,541 @@ + + + + + + + 12 + Zeroconf Properties + GTK_WINDOW_TOPLEVEL + GTK_WIN_POS_NONE + False + True + False + True + False + False + GDK_WINDOW_TYPE_HINT_NORMAL + GDK_GRAVITY_NORTH_WEST + True + + + + + True + False + 6 + + + + True + False + 5 + + + + True + True + True + True + GTK_POS_TOP + False + False + + + + 6 + True + False + 6 + + + + True + If checked, Gajim, when launched, will automatically connect to jabber using this account + True + C_onnect on Gajim startup + True + GTK_RELIEF_NORMAL + True + False + False + True + + + 0 + False + False + + + + + + True + True + Save conversation _logs for all contacts + True + GTK_RELIEF_NORMAL + True + False + False + True + + + 0 + False + False + + + + + + True + If checked, any change to the global status (handled by the combobox at the bottom of the roster window) will change the status of this account accordingly + True + Synch_ronize account status with global status + True + GTK_RELIEF_NORMAL + True + False + False + True + + + 0 + False + False + + + + + False + True + + + + + + True + General + False + True + GTK_JUSTIFY_LEFT + False + False + 0.5 + 0.5 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + tab + + + + + + 6 + True + 4 + 2 + False + 4 + 2 + + + + True + E-Mail: + False + False + GTK_JUSTIFY_LEFT + False + False + 0.5 + 0.5 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + 1 + 3 + 4 + fill + + + + + + + True + True + True + True + 0 + + True + â— + False + + + 1 + 2 + 3 + 4 + + + + + + + True + True + True + True + 0 + + True + â— + False + + + 1 + 2 + 2 + 3 + + + + + + + True + Jabber ID: + False + False + GTK_JUSTIFY_LEFT + False + False + 0.5 + 0.5 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + 1 + 2 + 3 + fill + + + + + + + True + Last Name: + False + False + GTK_JUSTIFY_LEFT + False + False + 0.5 + 0.5 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + 1 + 1 + 2 + fill + + + + + + + True + True + True + True + 0 + + True + â— + False + + + 1 + 2 + 1 + 2 + + + + + + + True + First Name: + False + False + GTK_JUSTIFY_LEFT + False + False + 0.5 + 0.5 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + 1 + 0 + 1 + fill + + + + + + + True + True + True + True + 0 + + True + â— + False + + + 1 + 2 + 0 + 1 + + + + + + False + True + + + + + + True + Personal Information + False + False + GTK_JUSTIFY_LEFT + False + False + 0.5 + 0.5 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + tab + + + + + + 6 + True + False + 6 + + + + True + False + True + Use _TLS + True + GTK_RELIEF_NORMAL + True + False + False + True + + + + 0 + False + False + + + + + + True + False + 0 + + + + True + True + Use custom port: + True + GTK_RELIEF_NORMAL + True + False + False + True + + + 0 + False + False + + + + + + True + True + True + True + 0 + + True + â— + False + 6 + + + 0 + False + True + + + + + 0 + False + False + + + + + False + True + + + + + + True + Connection + False + False + GTK_JUSTIFY_LEFT + False + False + 0.5 + 0.5 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + tab + + + + + 0 + True + True + + + + + 2 + False + False + + + + + + True + GTK_BUTTONBOX_END + 12 + + + + True + True + True + gtk-cancel + True + GTK_RELIEF_NORMAL + True + + + + + + + + True + True + True + True + gtk-save + True + GTK_RELIEF_NORMAL + True + + + + + + 0 + False + True + + + + + + + From 4696c84fbce8cc3efdf9974da393a522fa149b30 Mon Sep 17 00:00:00 2001 From: Dimitur Kirov Date: Wed, 20 Sep 2006 21:49:11 +0000 Subject: [PATCH 059/110] set activity tiemout only to connections, established by us --- src/common/zeroconf/client_zeroconf.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/common/zeroconf/client_zeroconf.py b/src/common/zeroconf/client_zeroconf.py index 882225e1d..59d78dc46 100644 --- a/src/common/zeroconf/client_zeroconf.py +++ b/src/common/zeroconf/client_zeroconf.py @@ -348,7 +348,8 @@ class P2PConnection(IdleObject, PlugIn): if self.state < 0: return if self.on_receive: - self.set_timeout(ACTIVITY_TIMEOUT_SECONDS) + if self._owner.sock_type == TYPE_CLIENT: + self.set_timeout(ACTIVITY_TIMEOUT_SECONDS) if received.strip(): self.DEBUG(received, 'got') if hasattr(self._owner, 'Dispatcher'): @@ -415,7 +416,8 @@ class P2PConnection(IdleObject, PlugIn): return self._on_send_failure() return - self.set_timeout(ACTIVITY_TIMEOUT_SECONDS) + if self._owner.sock_type == TYPE_CLIENT: + self.set_timeout(ACTIVITY_TIMEOUT_SECONDS) return True def _plug_idle(self): From 109ae1a3b5210db6bfa2b12ddfaec5c6ee7531f6 Mon Sep 17 00:00:00 2001 From: Stefan Bethge Date: Wed, 20 Sep 2006 22:58:43 +0000 Subject: [PATCH 060/110] update properties window, config saving --- data/glade/zeroconf_properties_window.glade | 1 + src/common/config.py | 5 ++ src/common/zeroconf/connection_zeroconf.py | 1 - src/config.py | 97 ++++++++++++--------- 4 files changed, 61 insertions(+), 43 deletions(-) diff --git a/data/glade/zeroconf_properties_window.glade b/data/glade/zeroconf_properties_window.glade index 4e5cd3369..628854b2f 100644 --- a/data/glade/zeroconf_properties_window.glade +++ b/data/glade/zeroconf_properties_window.glade @@ -416,6 +416,7 @@ False False True + 0 diff --git a/src/common/config.py b/src/common/config.py index f9f0dacac..1a0f18865 100644 --- a/src/common/config.py +++ b/src/common/config.py @@ -247,6 +247,11 @@ class Config: 'msgwin-y-position': [opt_int, -1], # Default is to let the wm decide 'msgwin-width': [opt_int, 480], 'msgwin-height': [opt_int, 440], + 'is_zeroconf': [opt_bool, False], + 'zeroconf_first_name': [ opt_str, '', '', True ], + 'zeroconf_last_name': [ opt_str, '', '', True ], + 'zeroconf_jabber_id': [ opt_str, '', '', True ], + 'zeroconf_email': [ opt_str, '', '', True ], }, {}), 'statusmsg': ({ 'message': [ opt_str, '' ], diff --git a/src/common/zeroconf/connection_zeroconf.py b/src/common/zeroconf/connection_zeroconf.py index 92d2f0e7a..89700d834 100644 --- a/src/common/zeroconf/connection_zeroconf.py +++ b/src/common/zeroconf/connection_zeroconf.py @@ -280,7 +280,6 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): def send_message(self, jid, msg, keyID, type = 'chat', subject='', chatstate = None, msg_id = None, composing_jep = None, resource = None, user_nick = None): - print 'connection_zeroconf.py: send_message' fjid = jid if not self.connection: diff --git a/src/config.py b/src/config.py index 634990584..0e3427395 100644 --- a/src/config.py +++ b/src/config.py @@ -586,6 +586,7 @@ class PreferencesWindow: gajim.interface.roster.draw_roster() gajim.interface.roster.actions_menu_needs_rebuild = True gajim.interface.save_config() + gajim.connections['zeroconf'].change_status('online', '') self.on_checkbutton_toggled(widget, 'enable_zeroconf') @@ -3041,44 +3042,56 @@ class ZeroconfPropertiesWindow: self.window = self.xml.get_widget('zeroconf_properties_window') self.window.set_transient_for(gajim.interface.roster.window) self.xml.signal_autoconnect(self) + + self.account = 'zeroconf' st = gajim.config.get_per('accounts', 'zeroconf', 'autoconnect') if st: self.xml.get_widget('autoconnect_checkbutton').set_active(st) - - st = gajim.config.get_per('accounts', 'zeroconf', 'no_log_for') - if st: - self.xml.get_widget('log_history_checkbutton').set_active(bool(st)) + list_no_log_for = gajim.config.get_per('accounts', self.account,'no_log_for').split() + if 'zeroconf' in list_no_log_for: + self.xml.get_widget('log_history_checkbutton').set_active(0) + else: + self.xml.get_widget('log_history_checkbutton').set_active(1) + + st = gajim.config.get_per('accounts', 'zeroconf', 'sync_with_global_status') if st: self.xml.get_widget('sync_with_global_status_checkbutton').set_active(st) - st = gajim.config.get_per('accounts', 'zeroconf', 'first_name') + st = gajim.config.get_per('accounts', 'zeroconf', 'zeroconf_first_name') if st: self.xml.get_widget('first_name_entry').set_text(st) - st = gajim.config.get_per('accounts', 'zeroconf', 'last_name') + st = gajim.config.get_per('accounts', 'zeroconf', 'zeroconf_last_name') if st: self.xml.get_widget('last_name_entry').set_text(st) - st = gajim.config.get_per('accounts', 'zeroconf', 'jabber_id') + st = gajim.config.get_per('accounts', 'zeroconf', 'zeroconf_jabber_id') if st: self.xml.get_widget('jabber_id_entry').set_text(st) - st = gajim.config.get_per('accounts', 'zeroconf', 'email') + st = gajim.config.get_per('accounts', 'zeroconf', 'zeroconf_email') if st: self.xml.get_widget('email_entry').set_text(st) - st = gajim.config.get_per('accounts', 'zeroconf', 'use_tls') + st = gajim.config.get_per('accounts', 'zeroconf', 'use_ssl') if st: self.xml.get_widget('use_tls_checkbutton').set_active(st) st = gajim.config.get_per('accounts', 'zeroconf', 'custom_port') if st: self.xml.get_widget('custom_port_entry').set_text(str(st)) + + st = gajim.config.get_per('accounts', 'zeroconf', 'use_custom_host') + if st: + self.xml.get_widget('custom_port_checkbutton').set_active(st) - self.xml.get_widget('custom_port_entry').set_sensitive(True) + self.xml.get_widget('custom_port_entry').set_sensitive(bool(st)) + + if not st: + gajim.config.set_per('accounts', 'zeroconf', 'custom_port', '5298') self.xml.get_widget('save_button').grab_focus() self.window.show_all() @@ -3087,48 +3100,48 @@ class ZeroconfPropertiesWindow: #close window if gajim.interface.instances.has_key('zeroconf_properties'): del gajim.interface.instances['zeroconf_properties'] - + + def on_custom_port_checkbutton_toggled(self, widget): + st = self.xml.get_widget('custom_port_checkbutton').get_active() + self.xml.get_widget('custom_port_entry').set_sensitive(bool(st)) + def on_cancel_button_clicked(self, widget): self.window.destroy() def on_save_button_clicked(self, widget): st = self.xml.get_widget('autoconnect_checkbutton').get_active() gajim.config.set_per('accounts', 'zeroconf', 'autoconnect', st) - - st = self.xml.get_widget('log_history_checkbutton').get_active() - gajim.config.set_per('accounts', 'zeroconf', 'no_log_for', st) - + list_no_log_for = gajim.config.get_per('accounts', + self.account, 'no_log_for').split() + if self.account in list_no_log_for: + list_no_log_for.remove(self.account) + if not self.xml.get_widget('log_history_checkbutton').get_active(): + list_no_log_for.append(self.account) + gajim.config.set_per('accounts', 'zeroconf', 'no_log_for', ' '.join(list_no_log_for)) + st = self.xml.get_widget('sync_with_global_status_checkbutton').get_active() gajim.config.set_per('accounts', 'zeroconf', 'sync_with_global_status', st) + st = self.xml.get_widget('first_name_entry').get_text() + gajim.config.set_per('accounts', 'zeroconf', 'zeroconf_first_name', st) + + st = self.xml.get_widget('last_name_entry').get_text() + gajim.config.set_per('accounts', 'zeroconf', 'zeroconf_last_name', st) + + st = self.xml.get_widget('jabber_id_entry').get_text() + gajim.config.set_per('accounts', 'zeroconf', 'zeroconf_jabber_id', st) + + st = self.xml.get_widget('email_entry').get_text() + gajim.config.set_per('accounts', 'zeroconf', 'zeroconf_email', st) + + st = self.xml.get_widget('use_tls_checkbutton').get_active() + gajim.config.set_per('accounts', 'zeroconf', 'use_ssl', st) + + st = self.xml.get_widget('custom_port_checkbutton').get_active() + gajim.config.set_per('accounts', 'zeroconf', 'use_custom_host', st) + st = self.xml.get_widget('custom_port_entry').get_text() gajim.config.set_per('accounts', 'zeroconf', 'custom_port', st) - - ''' - st = gajim.config.get_per('accounts', 'zeroconf', 'first_name') - if st: - self.xml.get_widget('first_name_entry').set_text(st) - - st = gajim.config.get_per('accounts', 'zeroconf', 'last_name') - if st: - self.xml.get_widget('last_name_entry').set_text(st) - - st = gajim.config.get_per('accounts', 'zeroconf', 'jabber_id') - if st: - self.xml.get_widget('jabber_id_entry').set_text(st) - - st = gajim.config.get_per('accounts', 'zeroconf', 'email') - if st: - self.xml.get_widget('email_entry').set_text(st) - - st = gajim.config.get_per('accounts', 'zeroconf', 'use_tls') - if st: - self.xml.get_widget('use_tls_checkbutton').set_active(st) - - ''' - + self.window.destroy() - def on_custom_port_checkbutton(self, widget): - pass - From d45aaa8557f998f4840ae68a34d3acf76b7beedc Mon Sep 17 00:00:00 2001 From: Dimitur Kirov Date: Wed, 20 Sep 2006 23:24:07 +0000 Subject: [PATCH 061/110] FT for zeroconf --- src/common/zeroconf/client_zeroconf.py | 23 +- .../zeroconf/connection_handlers_zeroconf.py | 476 +++++++++++++++++- 2 files changed, 493 insertions(+), 6 deletions(-) diff --git a/src/common/zeroconf/client_zeroconf.py b/src/common/zeroconf/client_zeroconf.py index 59d78dc46..a4cd612cf 100644 --- a/src/common/zeroconf/client_zeroconf.py +++ b/src/common/zeroconf/client_zeroconf.py @@ -13,6 +13,7 @@ ## GNU General Public License for more details. ## from common import gajim +import common.xmpp from common.xmpp.idlequeue import IdleObject from common.xmpp import dispatcher_nb, simplexml from common.xmpp.client import * @@ -135,7 +136,7 @@ class P2PClient(IdleObject): self.Connection = conn self.Connection.PlugIn(self) dispatcher_nb.Dispatcher().PlugIn(self) - self.RegisterHandler('message', self._messageCB) + self._register_handlers() if self.sock_type == TYPE_CLIENT: while self.messagequeue: message = self.messagequeue.pop(0) @@ -206,10 +207,22 @@ class P2PClient(IdleObject): return True - def _messageCB(self, conn, data): - self._caller._messageCB(self.Server, conn, data) - - + + def _register_handlers(self): + self.RegisterHandler('message', lambda conn, data:self._caller._messageCB(self.Server, conn, data)) + self.RegisterHandler('iq', self._caller._siSetCB, 'set', + common.xmpp.NS_SI) + self.RegisterHandler('iq', self._caller._siErrorCB, 'error', + common.xmpp.NS_SI) + self.RegisterHandler('iq', self._caller._siResultCB, 'result', + common.xmpp.NS_SI) + self.RegisterHandler('iq', self._caller._bytestreamSetCB, 'set', + common.xmpp.NS_BYTESTREAM) + self.RegisterHandler('iq', self._caller._bytestreamResultCB, 'result', + common.xmpp.NS_BYTESTREAM) + self.RegisterHandler('iq', self._caller._bytestreamErrorCB, 'error', + common.xmpp.NS_BYTESTREAM) + class P2PConnection(IdleObject, PlugIn): ''' class for sending file to socket over socks5 ''' def __init__(self, sock_hash, _sock, host = None, port = None, caller = None, on_connect = None): diff --git a/src/common/zeroconf/connection_handlers_zeroconf.py b/src/common/zeroconf/connection_handlers_zeroconf.py index eab7fe3a4..54600f8ce 100644 --- a/src/common/zeroconf/connection_handlers_zeroconf.py +++ b/src/common/zeroconf/connection_handlers_zeroconf.py @@ -50,6 +50,479 @@ except: gajim.log.debug(_('Unable to load idle module')) HAS_IDLE = False + +class ConnectionBytestream: + def __init__(self): + self.files_props = {} + + def is_transfer_stoped(self, file_props): + if file_props.has_key('error') and file_props['error'] != 0: + return True + if file_props.has_key('completed') and file_props['completed']: + return True + if file_props.has_key('connected') and file_props['connected'] == False: + return True + if not file_props.has_key('stopped') or not file_props['stopped']: + return False + return True + + def send_success_connect_reply(self, streamhost): + ''' send reply to the initiator of FT that we + made a connection + ''' + if streamhost is None: + return None + iq = common.xmpp.Iq(to = streamhost['initiator'], typ = 'result', + frm = streamhost['target']) + iq.setAttr('id', streamhost['id']) + query = iq.setTag('query') + query.setNamespace(common.xmpp.NS_BYTESTREAM) + stream_tag = query.setTag('streamhost-used') + stream_tag.setAttr('jid', streamhost['jid']) + self.connection.send(iq) + + def remove_transfers_for_contact(self, contact): + ''' stop all active transfer for contact ''' + for file_props in self.files_props.values(): + if self.is_transfer_stoped(file_props): + continue + receiver_jid = unicode(file_props['receiver']).split('/')[0] + if contact.jid == receiver_jid: + file_props['error'] = -5 + self.remove_transfer(file_props) + self.dispatch('FILE_REQUEST_ERROR', (contact.jid, file_props, '')) + sender_jid = unicode(file_props['sender']) + if contact.jid == sender_jid: + file_props['error'] = -3 + self.remove_transfer(file_props) + + def remove_all_transfers(self): + ''' stops and removes all active connections from the socks5 pool ''' + for file_props in self.files_props.values(): + self.remove_transfer(file_props, remove_from_list = False) + del(self.files_props) + self.files_props = {} + + def remove_transfer(self, file_props, remove_from_list = True): + if file_props is None: + return + self.disconnect_transfer(file_props) + sid = file_props['sid'] + gajim.socks5queue.remove_file_props(self.name, sid) + + if remove_from_list: + if self.files_props.has_key('sid'): + del(self.files_props['sid']) + + def disconnect_transfer(self, file_props): + if file_props is None: + return + if file_props.has_key('hash'): + gajim.socks5queue.remove_sender(file_props['hash']) + + if file_props.has_key('streamhosts'): + for host in file_props['streamhosts']: + if host.has_key('idx') and host['idx'] > 0: + gajim.socks5queue.remove_receiver(host['idx']) + gajim.socks5queue.remove_sender(host['idx']) + + def send_socks5_info(self, file_props, fast = True, receiver = None, + sender = None): + ''' send iq for the present streamhosts and proxies ''' + if type(self.peerhost) != tuple: + return + port = gajim.config.get('file_transfers_port') + ft_override_host_to_send = gajim.config.get('ft_override_host_to_send') + if receiver is None: + receiver = file_props['receiver'] + if sender is None: + sender = file_props['sender'] + proxyhosts = [] + sha_str = helpers.get_auth_sha(file_props['sid'], sender, + receiver) + file_props['sha_str'] = sha_str + if not ft_override_host_to_send: + ft_override_host_to_send = self.peerhost[0] + try: + ft_override_host_to_send = socket.gethostbyname( + ft_override_host_to_send) + except socket.gaierror: + self.dispatch('ERROR', (_('Wrong host'), _('The host you configured as the ft_override_host_to_send advanced option is not valid, so ignored.'))) + ft_override_host_to_send = self.peerhost[0] + listener = gajim.socks5queue.start_listener(self.peerhost[0], port, + sha_str, self._result_socks5_sid, file_props['sid']) + if listener == None: + file_props['error'] = -5 + self.dispatch('FILE_REQUEST_ERROR', (unicode(receiver), file_props, + '')) + self._connect_error(unicode(receiver), file_props['sid'], + file_props['sid'], code = 406) + return + + iq = common.xmpp.Protocol(name = 'iq', to = unicode(receiver), + typ = 'set') + file_props['request-id'] = 'id_' + file_props['sid'] + iq.setID(file_props['request-id']) + query = iq.setTag('query') + query.setNamespace(common.xmpp.NS_BYTESTREAM) + query.setAttr('mode', 'tcp') + query.setAttr('sid', file_props['sid']) + streamhost = query.setTag('streamhost') + streamhost.setAttr('port', unicode(port)) + streamhost.setAttr('host', ft_override_host_to_send) + streamhost.setAttr('jid', sender) + self.connection.send(iq) + + def send_file_rejection(self, file_props): + ''' informs sender that we refuse to download the file ''' + # user response to ConfirmationDialog may come after we've disconneted + if not self.connection or self.connected < 2: + return + iq = common.xmpp.Protocol(name = 'iq', + to = unicode(file_props['sender']), typ = 'error') + iq.setAttr('id', file_props['request-id']) + err = common.xmpp.ErrorNode(code = '403', typ = 'cancel', name = + 'forbidden', text = 'Offer Declined') + iq.addChild(node=err) + self.connection.send(iq) + + def send_file_approval(self, file_props): + ''' send iq, confirming that we want to download the file ''' + # user response to ConfirmationDialog may come after we've disconneted + if not self.connection or self.connected < 2: + return + iq = common.xmpp.Protocol(name = 'iq', + to = unicode(file_props['sender']), typ = 'result') + iq.setAttr('id', file_props['request-id']) + si = iq.setTag('si') + si.setNamespace(common.xmpp.NS_SI) + if file_props.has_key('offset') and file_props['offset']: + file_tag = si.setTag('file') + file_tag.setNamespace(common.xmpp.NS_FILE) + range_tag = file_tag.setTag('range') + range_tag.setAttr('offset', file_props['offset']) + feature = si.setTag('feature') + feature.setNamespace(common.xmpp.NS_FEATURE) + _feature = common.xmpp.DataForm(typ='submit') + feature.addChild(node=_feature) + field = _feature.setField('stream-method') + field.delAttr('type') + field.setValue(common.xmpp.NS_BYTESTREAM) + self.connection.send(iq) + + def send_file_request(self, file_props): + ''' send iq for new FT request ''' + if not self.connection or self.connected < 2: + return + our_jid = gajim.get_jid_from_account(self.name) + frm = our_jid + file_props['sender'] = frm + fjid = file_props['receiver'].jid + iq = common.xmpp.Protocol(name = 'iq', to = fjid, + typ = 'set') + iq.setID(file_props['sid']) + self.files_props[file_props['sid']] = file_props + si = iq.setTag('si') + si.setNamespace(common.xmpp.NS_SI) + si.setAttr('profile', common.xmpp.NS_FILE) + si.setAttr('id', file_props['sid']) + file_tag = si.setTag('file') + file_tag.setNamespace(common.xmpp.NS_FILE) + file_tag.setAttr('name', file_props['name']) + file_tag.setAttr('size', file_props['size']) + desc = file_tag.setTag('desc') + if file_props.has_key('desc'): + desc.setData(file_props['desc']) + file_tag.setTag('range') + feature = si.setTag('feature') + feature.setNamespace(common.xmpp.NS_FEATURE) + _feature = common.xmpp.DataForm(typ='form') + feature.addChild(node=_feature) + field = _feature.setField('stream-method') + field.setAttr('type', 'list-single') + field.addOption(common.xmpp.NS_BYTESTREAM) + self.connection.send(iq) + + def _result_socks5_sid(self, sid, hash_id): + ''' store the result of sha message from auth. ''' + if not self.files_props.has_key(sid): + return + file_props = self.files_props[sid] + file_props['hash'] = hash_id + return + + def _connect_error(self, to, _id, sid, code = 404): + ''' cb, when there is an error establishing BS connection, or + when connection is rejected''' + msg_dict = { + 404: 'Could not connect to given hosts', + 405: 'Cancel', + 406: 'Not acceptable', + } + msg = msg_dict[code] + iq = None + iq = common.xmpp.Protocol(name = 'iq', to = to, + typ = 'error') + iq.setAttr('id', _id) + err = iq.setTag('error') + err.setAttr('code', unicode(code)) + err.setData(msg) + self.connection.send(iq) + if code == 404: + file_props = gajim.socks5queue.get_file_props(self.name, sid) + if file_props is not None: + self.disconnect_transfer(file_props) + file_props['error'] = -3 + self.dispatch('FILE_REQUEST_ERROR', (to, file_props, msg)) + + def _proxy_auth_ok(self, proxy): + '''cb, called after authentication to proxy server ''' + file_props = self.files_props[proxy['sid']] + iq = common.xmpp.Protocol(name = 'iq', to = proxy['initiator'], + typ = 'set') + auth_id = "au_" + proxy['sid'] + iq.setID(auth_id) + query = iq.setTag('query') + query.setNamespace(common.xmpp.NS_BYTESTREAM) + query.setAttr('sid', proxy['sid']) + activate = query.setTag('activate') + activate.setData(file_props['proxy_receiver']) + iq.setID(auth_id) + self.connection.send(iq) + + # register xmpppy handlers for bytestream and FT stanzas + def _bytestreamErrorCB(self, con, iq_obj): + gajim.log.debug('_bytestreamErrorCB') + id = unicode(iq_obj.getAttr('id')) + frm = unicode(iq_obj.getFrom()) + query = iq_obj.getTag('query') + gajim.proxy65_manager.error_cb(frm, query) + jid = unicode(iq_obj.getFrom()) + id = id[3:] + if not self.files_props.has_key(id): + return + file_props = self.files_props[id] + file_props['error'] = -4 + self.dispatch('FILE_REQUEST_ERROR', (jid, file_props, '')) + raise common.xmpp.NodeProcessed + + def _bytestreamSetCB(self, con, iq_obj): + gajim.log.debug('_bytestreamSetCB') + target = unicode(iq_obj.getAttr('to')) + id = unicode(iq_obj.getAttr('id')) + query = iq_obj.getTag('query') + sid = unicode(query.getAttr('sid')) + file_props = gajim.socks5queue.get_file_props( + self.name, sid) + streamhosts=[] + for item in query.getChildren(): + if item.getName() == 'streamhost': + host_dict={ + 'state': 0, + 'target': target, + 'id': id, + 'sid': sid, + 'initiator': unicode(iq_obj.getFrom()) + } + for attr in item.getAttrs(): + host_dict[attr] = item.getAttr(attr) + streamhosts.append(host_dict) + if file_props is None: + if self.files_props.has_key(sid): + file_props = self.files_props[sid] + file_props['fast'] = streamhosts + if file_props['type'] == 's': + if file_props.has_key('streamhosts'): + file_props['streamhosts'].extend(streamhosts) + else: + file_props['streamhosts'] = streamhosts + if not gajim.socks5queue.get_file_props(self.name, sid): + gajim.socks5queue.add_file_props(self.name, file_props) + gajim.socks5queue.connect_to_hosts(self.name, sid, + self.send_success_connect_reply, None) + raise common.xmpp.NodeProcessed + + file_props['streamhosts'] = streamhosts + if file_props['type'] == 'r': + gajim.socks5queue.connect_to_hosts(self.name, sid, + self.send_success_connect_reply, self._connect_error) + raise common.xmpp.NodeProcessed + + def _ResultCB(self, con, iq_obj): + gajim.log.debug('_ResultCB') + # if we want to respect jep-0065 we have to check for proxy + # activation result in any result iq + real_id = unicode(iq_obj.getAttr('id')) + if real_id[:3] != 'au_': + return + frm = unicode(iq_obj.getFrom()) + id = real_id[3:] + if self.files_props.has_key(id): + file_props = self.files_props[id] + if file_props['streamhost-used']: + for host in file_props['proxyhosts']: + if host['initiator'] == frm and host.has_key('idx'): + gajim.socks5queue.activate_proxy(host['idx']) + raise common.xmpp.NodeProcessed + + def _bytestreamResultCB(self, con, iq_obj): + gajim.log.debug('_bytestreamResultCB') + frm = unicode(iq_obj.getFrom()) + real_id = unicode(iq_obj.getAttr('id')) + query = iq_obj.getTag('query') + gajim.proxy65_manager.resolve_result(frm, query) + + try: + streamhost = query.getTag('streamhost-used') + except: # this bytestream result is not what we need + pass + id = real_id[3:] + if self.files_props.has_key(id): + file_props = self.files_props[id] + else: + raise common.xmpp.NodeProcessed + if streamhost is None: + # proxy approves the activate query + if real_id[:3] == 'au_': + id = real_id[3:] + if not file_props.has_key('streamhost-used') or \ + file_props['streamhost-used'] is False: + raise common.xmpp.NodeProcessed + if not file_props.has_key('proxyhosts'): + raise common.xmpp.NodeProcessed + for host in file_props['proxyhosts']: + if host['initiator'] == frm and \ + unicode(query.getAttr('sid')) == file_props['sid']: + gajim.socks5queue.activate_proxy(host['idx']) + break + raise common.xmpp.NodeProcessed + jid = streamhost.getAttr('jid') + if file_props.has_key('streamhost-used') and \ + file_props['streamhost-used'] is True: + raise common.xmpp.NodeProcessed + + if real_id[:3] == 'au_': + gajim.socks5queue.send_file(file_props, self.name) + raise common.xmpp.NodeProcessed + + proxy = None + if file_props.has_key('proxyhosts'): + for proxyhost in file_props['proxyhosts']: + if proxyhost['jid'] == jid: + proxy = proxyhost + + if proxy != None: + file_props['streamhost-used'] = True + if not file_props.has_key('streamhosts'): + file_props['streamhosts'] = [] + file_props['streamhosts'].append(proxy) + file_props['is_a_proxy'] = True + receiver = socks5.Socks5Receiver(gajim.idlequeue, proxy, file_props['sid'], file_props) + gajim.socks5queue.add_receiver(self.name, receiver) + proxy['idx'] = receiver.queue_idx + gajim.socks5queue.on_success = self._proxy_auth_ok + raise common.xmpp.NodeProcessed + + else: + gajim.socks5queue.send_file(file_props, self.name) + if file_props.has_key('fast'): + fasts = file_props['fast'] + if len(fasts) > 0: + self._connect_error(frm, fasts[0]['id'], file_props['sid'], + code = 406) + + raise common.xmpp.NodeProcessed + + def _siResultCB(self, con, iq_obj): + gajim.log.debug('_siResultCB') + self.peerhost = con._owner.Connection._sock.getsockname() + id = iq_obj.getAttr('id') + if not self.files_props.has_key(id): + # no such jid + return + file_props = self.files_props[id] + if file_props is None: + # file properties for jid is none + return + if file_props.has_key('request-id'): + # we have already sent streamhosts info + return + file_props['receiver'] = unicode(iq_obj.getFrom()) + si = iq_obj.getTag('si') + file_tag = si.getTag('file') + range_tag = None + if file_tag: + range_tag = file_tag.getTag('range') + if range_tag: + offset = range_tag.getAttr('offset') + if offset: + file_props['offset'] = int(offset) + length = range_tag.getAttr('length') + if length: + file_props['length'] = int(length) + feature = si.setTag('feature') + if feature.getNamespace() != common.xmpp.NS_FEATURE: + return + form_tag = feature.getTag('x') + form = common.xmpp.DataForm(node=form_tag) + field = form.getField('stream-method') + if field.getValue() != common.xmpp.NS_BYTESTREAM: + return + self.send_socks5_info(file_props, fast = True) + raise common.xmpp.NodeProcessed + + def _siSetCB(self, con, iq_obj): + gajim.log.debug('_siSetCB') + jid = unicode(iq_obj.getFrom()) + si = iq_obj.getTag('si') + profile = si.getAttr('profile') + mime_type = si.getAttr('mime-type') + if profile != common.xmpp.NS_FILE: + return + file_tag = si.getTag('file') + file_props = {'type': 'r'} + for attribute in file_tag.getAttrs(): + if attribute in ('name', 'size', 'hash', 'date'): + val = file_tag.getAttr(attribute) + if val is None: + continue + file_props[attribute] = val + file_desc_tag = file_tag.getTag('desc') + if file_desc_tag is not None: + file_props['desc'] = file_desc_tag.getData() + + if mime_type is not None: + file_props['mime-type'] = mime_type + our_jid = gajim.get_jid_from_account(self.name) + file_props['receiver'] = our_jid + file_props['sender'] = unicode(iq_obj.getFrom()) + file_props['request-id'] = unicode(iq_obj.getAttr('id')) + file_props['sid'] = unicode(si.getAttr('id')) + gajim.socks5queue.add_file_props(self.name, file_props) + self.dispatch('FILE_REQUEST', (jid, file_props)) + raise common.xmpp.NodeProcessed + + def _siErrorCB(self, con, iq_obj): + gajim.log.debug('_siErrorCB') + si = iq_obj.getTag('si') + profile = si.getAttr('profile') + if profile != common.xmpp.NS_FILE: + return + id = iq_obj.getAttr('id') + if not self.files_props.has_key(id): + # no such jid + return + file_props = self.files_props[id] + if file_props is None: + # file properties for jid is none + return + jid = unicode(iq_obj.getFrom()) + file_props['error'] = -3 + self.dispatch('FILE_REQUEST_ERROR', (jid, file_props, '')) + raise common.xmpp.NodeProcessed + + + class ConnectionVcard: def __init__(self): self.vcard_sha = None @@ -212,9 +685,10 @@ class ConnectionVcard: ''' pass -class ConnectionHandlersZeroconf(ConnectionVcard): +class ConnectionHandlersZeroconf(ConnectionVcard, ConnectionBytestream): def __init__(self): ConnectionVcard.__init__(self) + ConnectionBytestream.__init__(self) # List of IDs we are waiting answers for {id: (type_of_request, data), } self.awaiting_answers = {} # List of IDs that will produce a timeout is answer doesn't arrive From af6450bcfc3145548c1975cc05a35170876c2440 Mon Sep 17 00:00:00 2001 From: Stefan Bethge Date: Wed, 20 Sep 2006 23:30:00 +0000 Subject: [PATCH 062/110] add context menu for zeroconf account --- data/glade/zeroconf_context_menu.glade | 89 +++++++++++ src/common/zeroconf/connection_zeroconf.py | 4 +- src/config.py | 5 +- src/roster_window.py | 167 ++++++++++++++------- 4 files changed, 208 insertions(+), 57 deletions(-) create mode 100644 data/glade/zeroconf_context_menu.glade diff --git a/data/glade/zeroconf_context_menu.glade b/data/glade/zeroconf_context_menu.glade new file mode 100644 index 000000000..e1e6ae710 --- /dev/null +++ b/data/glade/zeroconf_context_menu.glade @@ -0,0 +1,89 @@ + + + + + + + + + + True + _Status + True + + + + True + gtk-network + 1 + 0.5 + 0.5 + 0 + 0 + + + + + + + + True + _Group Chat + True + + + + True + gtk-connect + 1 + 0.5 + 0.5 + 0 + 0 + + + + + + + + True + Send Single _Message... + True + + + + True + gtk-new + 1 + 0.5 + 0.5 + 0 + 0 + + + + + + + + True + _Zeroconf Properties... + True + + + + True + gtk-preferences + 1 + 0.5 + 0.5 + 0 + 0 + + + + + + + diff --git a/src/common/zeroconf/connection_zeroconf.py b/src/common/zeroconf/connection_zeroconf.py index 89700d834..54e32a680 100644 --- a/src/common/zeroconf/connection_zeroconf.py +++ b/src/common/zeroconf/connection_zeroconf.py @@ -101,13 +101,15 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): gajim.config.set_per('accounts', 'zeroconf', 'no_log_for', False) gajim.config.set_per('accounts', 'zeroconf', 'password', 'zeroconf') gajim.config.set_per('accounts', 'zeroconf', 'sync_with_global_status', True) + username = unicode(getpass.getuser()) gajim.config.set_per('accounts', 'zeroconf', 'name', username) #XXX make sure host is US-ASCII host = unicode(socket.gethostname()) gajim.config.set_per('accounts', 'zeroconf', 'hostname', host) port = 5298 - gajim.config.set_per('accounts', 'zeroconf', 'custom_port', 5298) + gajim.config.set_per('accounts', 'zeroconf', 'custom_port', port) + gajim.config.set_per('accounts', 'zeroconf', 'is_zeroconf', True) else: username = gajim.config.get_per('accounts', 'zeroconf', 'name') host = gajim.config.get_per('accounts', 'zeroconf', 'hostname') diff --git a/src/config.py b/src/config.py index 0e3427395..818581099 100644 --- a/src/config.py +++ b/src/config.py @@ -1842,8 +1842,9 @@ class AccountsWindow: model = self.accounts_treeview.get_model() model.clear() for account in gajim.connections: - iter = model.append() - model.set(iter, 0, account, 1, gajim.get_hostname_from_account(account)) +# if account != 'zeroconf': + iter = model.append() + model.set(iter, 0, account, 1, gajim.get_hostname_from_account(account)) def on_accounts_treeview_cursor_changed(self, widget): '''Activate delete and modify buttons when a row is selected''' diff --git a/src/roster_window.py b/src/roster_window.py index b7f46ba33..a1c275f8e 100644 --- a/src/roster_window.py +++ b/src/roster_window.py @@ -1746,6 +1746,14 @@ class RosterWindow: gajim.interface.instances[account]['account_modification'] = \ config.AccountModificationWindow(account) + def on_zeroconf_properties(self, widget, account): + if gajim.interface.instances.has_key('zeroconf_properties'): + gajim.interface.instances['zeroconf_properties'].\ + window.present() + else: + gajim.interface.instances['zeroconf_properties'] = \ + config.ZeroconfPropertiesWindow() + def on_open_gmail_inbox(self, widget, account): if gajim.config.get_per('accounts', account, 'savepass'): url = ('http://www.google.com/accounts/ServiceLoginAuth?service=mail&Email=%s&Passwd=%s&continue=https://mail.google.com/mail') %\ @@ -1771,71 +1779,122 @@ class RosterWindow: path = os.path.join(gajim.DATA_DIR, 'iconsets', iconset, '16x16') state_images = self.load_iconset(path) - xml = gtkgui_helpers.get_glade('account_context_menu.glade') - account_context_menu = xml.get_widget('account_context_menu') + if not gajim.config.get_per('accounts', account, 'is_zeroconf'): + xml = gtkgui_helpers.get_glade('account_context_menu.glade') + account_context_menu = xml.get_widget('account_context_menu') - status_menuitem = xml.get_widget('status_menuitem') - join_group_chat_menuitem =xml.get_widget('join_group_chat_menuitem') - open_gmail_inbox_menuitem = xml.get_widget('open_gmail_inbox_menuitem') - new_message_menuitem = xml.get_widget('new_message_menuitem') - add_contact_menuitem = xml.get_widget('add_contact_menuitem') - service_discovery_menuitem = xml.get_widget('service_discovery_menuitem') - edit_account_menuitem = xml.get_widget('edit_account_menuitem') - sub_menu = gtk.Menu() - status_menuitem.set_submenu(sub_menu) + status_menuitem = xml.get_widget('status_menuitem') + join_group_chat_menuitem =xml.get_widget('join_group_chat_menuitem') + open_gmail_inbox_menuitem = xml.get_widget('open_gmail_inbox_menuitem') + new_message_menuitem = xml.get_widget('new_message_menuitem') + add_contact_menuitem = xml.get_widget('add_contact_menuitem') + service_discovery_menuitem = xml.get_widget('service_discovery_menuitem') + edit_account_menuitem = xml.get_widget('edit_account_menuitem') + sub_menu = gtk.Menu() + status_menuitem.set_submenu(sub_menu) - for show in ('online', 'chat', 'away', 'xa', 'dnd', 'invisible'): - uf_show = helpers.get_uf_show(show, use_mnemonic = True) + for show in ('online', 'chat', 'away', 'xa', 'dnd', 'invisible'): + uf_show = helpers.get_uf_show(show, use_mnemonic = True) + item = gtk.ImageMenuItem(uf_show) + icon = state_images[show] + item.set_image(icon) + sub_menu.append(item) + item.connect('activate', self.change_status, account, show) + + item = gtk.SeparatorMenuItem() + sub_menu.append(item) + + item = gtk.ImageMenuItem(_('_Change Status Message')) + path = os.path.join(gajim.DATA_DIR, 'pixmaps', 'kbd_input.png') + img = gtk.Image() + img.set_from_file(path) + item.set_image(img) + sub_menu.append(item) + item.connect('activate', self.on_change_status_message_activate, account) + if gajim.connections[account].connected < 2: + item.set_sensitive(False) + + uf_show = helpers.get_uf_show('offline', use_mnemonic = True) item = gtk.ImageMenuItem(uf_show) - icon = state_images[show] + icon = state_images['offline'] item.set_image(icon) sub_menu.append(item) - item.connect('activate', self.change_status, account, show) + item.connect('activate', self.change_status, account, 'offline') - item = gtk.SeparatorMenuItem() - sub_menu.append(item) + if gajim.config.get_per('accounts', account, 'hostname') not in gajim.gmail_domains: + open_gmail_inbox_menuitem.set_no_show_all(True) + open_gmail_inbox_menuitem.hide() + else: + open_gmail_inbox_menuitem.connect('activate', self.on_open_gmail_inbox, + account) - item = gtk.ImageMenuItem(_('_Change Status Message')) - path = os.path.join(gajim.DATA_DIR, 'pixmaps', 'kbd_input.png') - img = gtk.Image() - img.set_from_file(path) - item.set_image(img) - sub_menu.append(item) - item.connect('activate', self.on_change_status_message_activate, account) - if gajim.connections[account].connected < 2: - item.set_sensitive(False) + edit_account_menuitem.connect('activate', self.on_edit_account, account) + add_contact_menuitem.connect('activate', self.on_add_new_contact, account) + service_discovery_menuitem.connect('activate', + self.on_service_disco_menuitem_activate, account) + + gc_sub_menu = gtk.Menu() # gc is always a submenu + join_group_chat_menuitem.set_submenu(gc_sub_menu) + self.add_bookmarks_list(gc_sub_menu, account) + new_message_menuitem.connect('activate', + self.on_new_message_menuitem_activate, account) - uf_show = helpers.get_uf_show('offline', use_mnemonic = True) - item = gtk.ImageMenuItem(uf_show) - icon = state_images['offline'] - item.set_image(icon) - sub_menu.append(item) - item.connect('activate', self.change_status, account, 'offline') - - if gajim.config.get_per('accounts', account, 'hostname') not in gajim.gmail_domains: - open_gmail_inbox_menuitem.set_no_show_all(True) - open_gmail_inbox_menuitem.hide() + # make some items insensitive if account is offline + if gajim.connections[account].connected < 2: + for widget in [add_contact_menuitem, service_discovery_menuitem, + join_group_chat_menuitem, new_message_menuitem]: + widget.set_sensitive(False) else: - open_gmail_inbox_menuitem.connect('activate', self.on_open_gmail_inbox, - account) + xml = gtkgui_helpers.get_glade('zeroconf_context_menu.glade') + account_context_menu = xml.get_widget('zeroconf_context_menu') - edit_account_menuitem.connect('activate', self.on_edit_account, account) - add_contact_menuitem.connect('activate', self.on_add_new_contact, account) - service_discovery_menuitem.connect('activate', - self.on_service_disco_menuitem_activate, account) - - gc_sub_menu = gtk.Menu() # gc is always a submenu - join_group_chat_menuitem.set_submenu(gc_sub_menu) - self.add_bookmarks_list(gc_sub_menu, account) - new_message_menuitem.connect('activate', - self.on_new_message_menuitem_activate, account) + status_menuitem = xml.get_widget('status_menuitem') + join_group_chat_menuitem =xml.get_widget('join_group_chat_menuitem') + new_message_menuitem = xml.get_widget('new_message_menuitem') + zeroconf_properties_menuitem = xml.get_widget('zeroconf_properties_menuitem') + sub_menu = gtk.Menu() + status_menuitem.set_submenu(sub_menu) - # make some items insensitive if account is offline - if gajim.connections[account].connected < 2: - for widget in [add_contact_menuitem, service_discovery_menuitem, - join_group_chat_menuitem, new_message_menuitem]: - widget.set_sensitive(False) - + for show in ('online', 'away', 'dnd', 'invisible'): + uf_show = helpers.get_uf_show(show, use_mnemonic = True) + item = gtk.ImageMenuItem(uf_show) + icon = state_images[show] + item.set_image(icon) + sub_menu.append(item) + item.connect('activate', self.change_status, account, show) + + item = gtk.SeparatorMenuItem() + sub_menu.append(item) + + item = gtk.ImageMenuItem(_('_Change Status Message')) + path = os.path.join(gajim.DATA_DIR, 'pixmaps', 'kbd_input.png') + img = gtk.Image() + img.set_from_file(path) + item.set_image(img) + sub_menu.append(item) + item.connect('activate', self.on_change_status_message_activate, account) + if gajim.connections[account].connected < 2: + item.set_sensitive(False) + + uf_show = helpers.get_uf_show('offline', use_mnemonic = True) + item = gtk.ImageMenuItem(uf_show) + icon = state_images['offline'] + item.set_image(icon) + sub_menu.append(item) + item.connect('activate', self.change_status, account, 'offline') + + zeroconf_properties_menuitem.connect('activate', self.on_zeroconf_properties, account) + gc_sub_menu = gtk.Menu() # gc is always a submenu + join_group_chat_menuitem.set_submenu(gc_sub_menu) + self.add_bookmarks_list(gc_sub_menu, account) + new_message_menuitem.connect('activate', + self.on_new_message_menuitem_activate, account) + + # make some items insensitive if account is offline + if gajim.connections[account].connected < 2: + for widget in [join_group_chat_menuitem, new_message_menuitem]: + widget.set_sensitive(False) + return account_context_menu def make_account_menu(self, event, iter): From 7227ea05508c6eea57cabcd34f854c788fe3f3d5 Mon Sep 17 00:00:00 2001 From: Stefan Bethge Date: Fri, 22 Sep 2006 16:47:31 +0000 Subject: [PATCH 063/110] moved enable link-local messaging to accounts window added tooltip to it --- data/glade/accounts_window.glade | 33 ++++ data/glade/preferences_window.glade | 113 +------------- data/glade/zeroconf_context_menu.glade | 2 +- src/common/zeroconf/connection_zeroconf.py | 2 +- src/config.py | 167 +++++++++++---------- 5 files changed, 124 insertions(+), 193 deletions(-) diff --git a/data/glade/accounts_window.glade b/data/glade/accounts_window.glade index 3ac6f9e7b..d9950a760 100644 --- a/data/glade/accounts_window.glade +++ b/data/glade/accounts_window.glade @@ -2,6 +2,7 @@ + 12 Accounts @@ -80,6 +81,37 @@ + + + True + + + 0 + False + True + + + + + + True + If you check it, all local contacts that use a Bonjour compatible chat client (like iChat, Adium, Trillian or gaim) will be shown in roster. You don't need a jabber server for it. + True + _Enable link-local messaging + True + GTK_RELIEF_NORMAL + True + False + False + True + + + 0 + False + False + + + True @@ -267,4 +299,5 @@ + diff --git a/data/glade/preferences_window.glade b/data/glade/preferences_window.glade index c8433d6a4..f5aceb5ff 100644 --- a/data/glade/preferences_window.glade +++ b/data/glade/preferences_window.glade @@ -18,6 +18,7 @@ GDK_WINDOW_TYPE_HINT_NORMAL GDK_GRAVITY_NORTH_WEST True + False @@ -146,118 +147,6 @@ - - - True - False - 0 - - - - True - True - Enable _link-local messaging (Zeroconf) - True - GTK_RELIEF_NORMAL - True - False - False - True - - - - 0 - False - False - - - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - gtk-properties - 4 - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - True - Pr_operties - True - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - - - - 0 - True - False - - - - - 0 - False - False - - - True diff --git a/data/glade/zeroconf_context_menu.glade b/data/glade/zeroconf_context_menu.glade index e1e6ae710..80f25c1ae 100644 --- a/data/glade/zeroconf_context_menu.glade +++ b/data/glade/zeroconf_context_menu.glade @@ -68,7 +68,7 @@ True - _Zeroconf Properties... + _Properties... True diff --git a/src/common/zeroconf/connection_zeroconf.py b/src/common/zeroconf/connection_zeroconf.py index 54e32a680..c2c987195 100644 --- a/src/common/zeroconf/connection_zeroconf.py +++ b/src/common/zeroconf/connection_zeroconf.py @@ -98,7 +98,7 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): print 'Creating zeroconf account' gajim.config.add_per('accounts', 'zeroconf') gajim.config.set_per('accounts', 'zeroconf', 'autoconnect', True) - gajim.config.set_per('accounts', 'zeroconf', 'no_log_for', False) + gajim.config.set_per('accounts', 'zeroconf', 'no_log_for', '') gajim.config.set_per('accounts', 'zeroconf', 'password', 'zeroconf') gajim.config.set_per('accounts', 'zeroconf', 'sync_with_global_status', True) diff --git a/src/config.py b/src/config.py index 818581099..2ba15d434 100644 --- a/src/config.py +++ b/src/config.py @@ -95,10 +95,6 @@ class PreferencesWindow: st = gajim.config.get('sort_by_show') self.xml.get_widget('sort_by_show_checkbutton').set_active(st) - # enable zeroconf - st = gajim.config.get('enable_zeroconf') - self.xml.get_widget('enable_zeroconf_checkbutton').set_active(st) - # Display avatars in roster st = gajim.config.get('show_avatars_in_roster') self.xml.get_widget('show_avatars_in_roster_checkbutton').set_active(st) @@ -528,75 +524,6 @@ class PreferencesWindow: self.on_checkbutton_toggled(widget, 'sort_by_show') gajim.interface.roster.draw_roster() - def on_enable_zeroconf_checkbutton_toggled(self, widget): - if gajim.config.get('enable_zeroconf'): - # disable - gajim.interface.roster.close_all('zeroconf') - gajim.connections['zeroconf'].disable_account() - del gajim.connections['zeroconf'] - gajim.interface.save_config() - del gajim.interface.instances['zeroconf'] - del gajim.nicks['zeroconf'] - del gajim.block_signed_in_notifications['zeroconf'] - del gajim.groups['zeroconf'] - gajim.contacts.remove_account('zeroconf') - del gajim.gc_connected['zeroconf'] - del gajim.automatic_rooms['zeroconf'] - del gajim.to_be_removed['zeroconf'] - del gajim.newly_added['zeroconf'] - del gajim.sleeper_state['zeroconf'] - del gajim.encrypted_chats['zeroconf'] - del gajim.last_message_time['zeroconf'] - del gajim.status_before_autoaway['zeroconf'] - if len(gajim.connections) >= 2: # Do not merge accounts if only one exists - gajim.interface.roster.regroup = gajim.config.get('mergeaccounts') - else: - gajim.interface.roster.regroup = False - gajim.interface.roster.draw_roster() - gajim.interface.roster.actions_menu_needs_rebuild = True - if gajim.interface.instances.has_key('accounts'): - gajim.interface.instances['accounts'].init_accounts() - else: - #enable (will create new account if not present) - gajim.connections['zeroconf'] = common.zeroconf.connection_zeroconf.ConnectionZeroconf('zeroconf') - # update variables - gajim.interface.instances['zeroconf'] = {'infos': {}, 'disco': {}, - 'gc_config': {}} - gajim.connections['zeroconf'].connected = 0 - gajim.groups['zeroconf'] = {} - gajim.contacts.add_account('zeroconf') - gajim.gc_connected['zeroconf'] = {} - gajim.automatic_rooms['zeroconf'] = {} - gajim.newly_added['zeroconf'] = [] - gajim.to_be_removed['zeroconf'] = [] - gajim.nicks['zeroconf'] = 'zeroconf' - gajim.block_signed_in_notifications['zeroconf'] = True - gajim.sleeper_state['zeroconf'] = 'off' - gajim.encrypted_chats['zeroconf'] = [] - gajim.last_message_time['zeroconf'] = {} - gajim.status_before_autoaway['zeroconf'] = '' - # refresh accounts window - if gajim.interface.instances.has_key('accounts'): - gajim.interface.instances['accounts'].init_accounts() - # refresh roster - if len(gajim.connections) >= 2: # Do not merge accounts if only one exists - gajim.interface.roster.regroup = gajim.config.get('mergeaccounts') - else: - gajim.interface.roster.regroup = False - gajim.interface.roster.draw_roster() - gajim.interface.roster.actions_menu_needs_rebuild = True - gajim.interface.save_config() - gajim.connections['zeroconf'].change_status('online', '') - - self.on_checkbutton_toggled(widget, 'enable_zeroconf') - - def on_zeroconf_properties_button_clicked(self, widget): - if gajim.interface.instances.has_key('zeroconf_properties'): - gajim.interface.instances['zeroconf_properties'].window.present() - else: - gajim.interface.instances['zeroconf_properties'] = \ - ZeroconfPropertiesWindow() - def on_show_status_msgs_in_roster_checkbutton_toggled(self, widget): self.on_checkbutton_toggled(widget, 'show_status_msgs_in_roster') gajim.interface.roster.draw_roster() @@ -1831,6 +1758,12 @@ class AccountsWindow: st = gajim.config.get('mergeaccounts') self.xml.get_widget('merge_checkbutton').set_active(st) + # enable zeroconf + st = gajim.config.get('enable_zeroconf') + w = self.xml.get_widget('enable_zeroconf_checkbutton') + w.set_active(st) + w.connect('toggled', self.on_enable_zeroconf_checkbutton_toggled) + def on_accounts_window_key_press_event(self, widget, event): if event.keyval == gtk.keysyms.Escape: self.window.destroy() @@ -1842,9 +1775,8 @@ class AccountsWindow: model = self.accounts_treeview.get_model() model.clear() for account in gajim.connections: -# if account != 'zeroconf': - iter = model.append() - model.set(iter, 0, account, 1, gajim.get_hostname_from_account(account)) + iter = model.append() + model.set(iter, 0, account, 1, gajim.get_hostname_from_account(account)) def on_accounts_treeview_cursor_changed(self, widget): '''Activate delete and modify buttons when a row is selected''' @@ -1885,7 +1817,14 @@ class AccountsWindow: if not iter: return account = model[iter][0].decode('utf-8') - self.show_modification_window(account) + if account == 'zeroconf': + if gajim.interface.instances.has_key('zeroconf_properties'): + gajim.interface.instances['zeroconf_properties'].window.present() + else: + gajim.interface.instances['zeroconf_properties'] = \ + ZeroconfPropertiesWindow() + else: + self.show_modification_window(account) def on_accounts_treeview_row_activated(self, widget, path, column): model = widget.get_model() @@ -1899,15 +1838,85 @@ class AccountsWindow: gajim.interface.instances[account]['account_modification'] = \ AccountModificationWindow(account) - def on_merge_checkbutton_toggled(self, widget): - gajim.config.set('mergeaccounts', widget.get_active()) + def on_checkbutton_toggled(self, widget, config_name, + change_sensitivity_widgets = None): + gajim.config.set(config_name, widget.get_active()) + if change_sensitivity_widgets: + for w in change_sensitivity_widgets: + w.set_sensitive(widget.get_active()) gajim.interface.save_config() + + def on_merge_checkbutton_toggled(self, widget): + self.on_checkbutton_toggled(widget, 'mergeaccounts') if len(gajim.connections) >= 2: # Do not merge accounts if only one exists gajim.interface.roster.regroup = gajim.config.get('mergeaccounts') else: gajim.interface.roster.regroup = False gajim.interface.roster.draw_roster() + + def on_enable_zeroconf_checkbutton_toggled(self, widget): + if gajim.config.get('enable_zeroconf'): + #disable + gajim.interface.roster.close_all('zeroconf') + gajim.connections['zeroconf'].disable_account() + del gajim.connections['zeroconf'] + gajim.interface.save_config() + del gajim.interface.instances['zeroconf'] + del gajim.nicks['zeroconf'] + del gajim.block_signed_in_notifications['zeroconf'] + del gajim.groups['zeroconf'] + gajim.contacts.remove_account('zeroconf') + del gajim.gc_connected['zeroconf'] + del gajim.automatic_rooms['zeroconf'] + del gajim.to_be_removed['zeroconf'] + del gajim.newly_added['zeroconf'] + del gajim.sleeper_state['zeroconf'] + del gajim.encrypted_chats['zeroconf'] + del gajim.last_message_time['zeroconf'] + del gajim.status_before_autoaway['zeroconf'] + if len(gajim.connections) >= 2: # Do not merge accounts if only one exists + gajim.interface.roster.regroup = gajim.config.get('mergeaccounts') + else: + gajim.interface.roster.regroup = False + gajim.interface.roster.draw_roster() + gajim.interface.roster.actions_menu_needs_rebuild = True + if gajim.interface.instances.has_key('accounts'): + gajim.interface.instances['accounts'].init_accounts() + + else: + # enable (will create new account if not present) + gajim.connections['zeroconf'] = common.zeroconf.connection_zeroconf.ConnectionZeroconf('zeroconf') + # update variables + gajim.interface.instances['zeroconf'] = {'infos': {}, 'disco': {}, + 'gc_config': {}} + gajim.connections['zeroconf'].connected = 0 + gajim.groups['zeroconf'] = {} + gajim.contacts.add_account('zeroconf') + gajim.gc_connected['zeroconf'] = {} + gajim.automatic_rooms['zeroconf'] = {} + gajim.newly_added['zeroconf'] = [] + gajim.to_be_removed['zeroconf'] = [] + gajim.nicks['zeroconf'] = 'zeroconf' + gajim.block_signed_in_notifications['zeroconf'] = True + gajim.sleeper_state['zeroconf'] = 'off' + gajim.encrypted_chats['zeroconf'] = [] + gajim.last_message_time['zeroconf'] = {} + gajim.status_before_autoaway['zeroconf'] = '' + # refresh accounts window + if gajim.interface.instances.has_key('accounts'): + gajim.interface.instances['accounts'].init_accounts() + # refresh roster + if len(gajim.connections) >= 2: # Do not merge accounts if only one exists + gajim.interface.roster.regroup = gajim.config.get('mergeaccounts') + else: + gajim.interface.roster.regroup = False + gajim.interface.roster.draw_roster() + gajim.interface.roster.actions_menu_needs_rebuild = True + gajim.interface.save_config() + gajim.connections['zeroconf'].change_status('online', '') + self.on_checkbutton_toggled(widget, 'enable_zeroconf') + class DataFormWindow: def __init__(self, account, config): self.account = account From c180efba3a0accd067e1f8bd38c519ed13bf2909 Mon Sep 17 00:00:00 2001 From: Stefan Bethge Date: Sat, 23 Sep 2006 14:01:17 +0000 Subject: [PATCH 064/110] changed zeroconf tooltip a bit --- data/glade/accounts_window.glade | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/data/glade/accounts_window.glade b/data/glade/accounts_window.glade index d9950a760..7c92c0508 100644 --- a/data/glade/accounts_window.glade +++ b/data/glade/accounts_window.glade @@ -65,7 +65,7 @@ True If you have 2 or more accounts and it is checked, Gajim will list all contacts as if you had one account True - _Merge accounts + Mer_ge accounts True GTK_RELIEF_NORMAL True @@ -95,7 +95,7 @@ True - If you check it, all local contacts that use a Bonjour compatible chat client (like iChat, Adium, Trillian or gaim) will be shown in roster. You don't need a jabber server for it. + If checked, all local contacts that use a Bonjour compatible chat client (like iChat, Trillian or Gaim) will be shown in roster. You don't need a jabber server for it. True _Enable link-local messaging True From 354b4f17e9ab27f98e40cd01691853ddc7e0a348 Mon Sep 17 00:00:00 2001 From: Stefan Bethge Date: Sat, 23 Sep 2006 17:05:20 +0000 Subject: [PATCH 065/110] changed zeroconf account name to local, properties window fixes, use all fields from it in txt record, saving prefs automatically reconnects --- src/common/gajim.py | 3 + src/common/zeroconf/connection_zeroconf.py | 89 +++++++----- src/common/zeroconf/zeroconf.py | 8 +- src/config.py | 152 +++++++++++---------- src/gajim.py | 6 +- 5 files changed, 140 insertions(+), 118 deletions(-) diff --git a/src/common/gajim.py b/src/common/gajim.py index dc7794e6e..6ff6d5b7a 100644 --- a/src/common/gajim.py +++ b/src/common/gajim.py @@ -120,6 +120,9 @@ status_before_autoaway = {} SHOW_LIST = ['offline', 'connecting', 'online', 'chat', 'away', 'xa', 'dnd', 'invisible'] +# zeroconf account name +LOCAL_ACC = 'local' + def get_nick_from_jid(jid): pos = jid.find('@') return jid[:pos] diff --git a/src/common/zeroconf/connection_zeroconf.py b/src/common/zeroconf/connection_zeroconf.py index c2c987195..328146143 100644 --- a/src/common/zeroconf/connection_zeroconf.py +++ b/src/common/zeroconf/connection_zeroconf.py @@ -68,7 +68,7 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): self.bookmarks = [] #we don't need a password, but must be non-empty - self.password = 'zeroconf' + self.password = gajim.LOCAL_ACC #XXX use that somewhere self.autoconnect = False @@ -88,37 +88,40 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): self.retrycount = 0 self.jids_for_auto_auth = [] # list of jid to auto-authorize self.get_config_values_or_default() + self.zeroconf = zeroconf.Zeroconf(self._on_new_service, self._on_remove_service, self.username, self.host, self.port) self.muc_jid = {} # jid of muc server for each transport type self.vcard_supported = False def get_config_values_or_default(self): ''' get name, host, port from config, or create zeroconf account with default values''' - if not gajim.config.get_per('accounts', 'zeroconf', 'name'): + if not gajim.config.get_per('accounts', gajim.LOCAL_ACC, 'name'): print 'Creating zeroconf account' - gajim.config.add_per('accounts', 'zeroconf') - gajim.config.set_per('accounts', 'zeroconf', 'autoconnect', True) - gajim.config.set_per('accounts', 'zeroconf', 'no_log_for', '') - gajim.config.set_per('accounts', 'zeroconf', 'password', 'zeroconf') - gajim.config.set_per('accounts', 'zeroconf', 'sync_with_global_status', True) + gajim.config.add_per('accounts', gajim.LOCAL_ACC) + gajim.config.set_per('accounts', gajim.LOCAL_ACC, 'autoconnect', True) + gajim.config.set_per('accounts', gajim.LOCAL_ACC, 'no_log_for', '') + gajim.config.set_per('accounts', gajim.LOCAL_ACC, 'password', 'zeroconf') + gajim.config.set_per('accounts', gajim.LOCAL_ACC, 'sync_with_global_status', True) - username = unicode(getpass.getuser()) - gajim.config.set_per('accounts', 'zeroconf', 'name', username) + self.username = unicode(getpass.getuser()) + gajim.config.set_per('accounts', gajim.LOCAL_ACC, 'name', self.username) #XXX make sure host is US-ASCII - host = unicode(socket.gethostname()) - gajim.config.set_per('accounts', 'zeroconf', 'hostname', host) - port = 5298 - gajim.config.set_per('accounts', 'zeroconf', 'custom_port', port) - gajim.config.set_per('accounts', 'zeroconf', 'is_zeroconf', True) + self.host = unicode(socket.gethostname()) + gajim.config.set_per('accounts', gajim.LOCAL_ACC, 'hostname', self.host) + self.port = 5298 + gajim.config.set_per('accounts', gajim.LOCAL_ACC, 'custom_port', self.port) + gajim.config.set_per('accounts', gajim.LOCAL_ACC, 'is_zeroconf', True) else: - username = gajim.config.get_per('accounts', 'zeroconf', 'name') - host = gajim.config.get_per('accounts', 'zeroconf', 'hostname') - port = gajim.config.get_per('accounts', 'zeroconf', 'custom_port') - self.autoconnect = gajim.config.get_per('accounts', 'zeroconf', 'autoconnect') - self.sync_with_global_status = gajim.config.get_per('accounts', 'zeroconf', 'sync_with_global_status') - self.no_log_for = gajim.config.get_per('accounts', 'zeroconf', 'no_log_for') - - self.zeroconf = zeroconf.Zeroconf(self._on_new_service, self._on_remove_service, username, host, port) + self.username = gajim.config.get_per('accounts', gajim.LOCAL_ACC, 'name') + self.host = gajim.config.get_per('accounts', gajim.LOCAL_ACC, 'hostname') + self.port = gajim.config.get_per('accounts', gajim.LOCAL_ACC, 'custom_port') + self.autoconnect = gajim.config.get_per('accounts', gajim.LOCAL_ACC, 'autoconnect') + self.sync_with_global_status = gajim.config.get_per('accounts', gajim.LOCAL_ACC, 'sync_with_global_status') + self.no_log_for = gajim.config.get_per('accounts', gajim.LOCAL_ACC, 'no_log_for') + self.first = gajim.config.get_per('accounts', gajim.LOCAL_ACC, 'zeroconf_first_name') + self.last = gajim.config.get_per('accounts', gajim.LOCAL_ACC, 'zeroconf_last_name') + self.jabber_id = gajim.config.get_per('accounts', gajim.LOCAL_ACC, 'zeroconf_jabber_id') + self.email = gajim.config.get_per('accounts', gajim.LOCAL_ACC, 'zeroconf_email') # END __init__ def put_event(self, ev): @@ -190,8 +193,19 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): # keyID, timestamp)) self.dispatch('NOTIFY', (jid, 'offline', '', 'local', 0, None, 0)) + def connect(self, data = None, show = 'online', msg = ''): + self.get_config_values_or_default() + + self.zeroconf.txt['status'] = show + self.zeroconf.txt['msg'] = msg + self.zeroconf.txt['1st'] = self.first + self.zeroconf.txt['last'] = self.last + self.zeroconf.txt['jid'] = self.jabber_id + self.zeroconf.txt['email'] = self.email + self.zeroconf.username = self.username + self.zeroconf.host = self.host + self.zeroconf.port = self.port - def connect(self, data = None, show = 'online'): if self.connection: return self.connection, '' @@ -211,16 +225,11 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): self.call_resolve_timeout = True gobject.timeout_add(10000, self._on_resolve_timeout) else: - pass - #TODO: display visual notification that we could not connect to avahi - - def connect_and_init(self, show, msg, signed): - self.continue_connect_info = [show, msg, signed] - - self.zeroconf.txt['status'] = show - self.zeroconf.txt['msg'] = msg - self.connect('',show) - + notify.popup(_('Connection problem:'), gajim.LOCAL_ACC, None, + title=_('Can not get connection'), + text=_('Please check if avahi-daemon is running.') ) + self.dispatch('STATUS', 'offline') + self.status = 'offline' def disconnect(self, on_purpose = False): self.connected = 0 @@ -233,15 +242,23 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): self.call_resolve_timeout = False self.zeroconf.disconnect() + def reconnect(self): + status = self.status + if status != 'offline': + msg = self.zeroconf.txt['msg'] + self.change_status('offline', msg) + self.change_status(status, msg) + def change_status(self, show, msg, sync = False, auto = False): if not show in STATUS_LIST: return -1 + self.status = show check = True #to check for errors from zeroconf # 'connect' if show != 'offline' and not self.connected: - self.connect_and_init(show, msg, '') + self.connect(None, show, msg) if show != 'invisible': check = self.zeroconf.announce() else: @@ -270,11 +287,11 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): if check: self.dispatch('STATUS', show) else: -# self.dispatch('ERROR', 'Could not change status. Please check if avahi-daemon is running.') - notify.popup(_('Connection problem:'), 'zeroconf', None, + notify.popup(_('Connection problem:'), gajim.LOCAL_ACC, None, title=_('Could not change status'), text=_('Please check if avahi-daemon is running.') ) self.dispatch('STATUS', 'offline') + self.status = 'offline' def get_status(self): return STATUS_LIST[self.connected] diff --git a/src/common/zeroconf/zeroconf.py b/src/common/zeroconf/zeroconf.py index 63b4f864a..6d8d2cd2c 100755 --- a/src/common/zeroconf/zeroconf.py +++ b/src/common/zeroconf/zeroconf.py @@ -106,8 +106,8 @@ class Zeroconf: return items def service_resolved_callback(self, interface, protocol, name, stype, domain, host, aprotocol, address, port, txt, flags): - #print "Service data for service '%s' in domain '%s' on %i.%i:" % (name, domain, interface, protocol) - #print "\tHost %s (%s), port %i, TXT data: %s" % (host, address, port, avahi.txt_array_to_string_array(txt)) + # print "Service data for service '%s' in domain '%s' on %i.%i:" % (name, domain, interface, protocol) + # print "\tHost %s (%s), port %i, TXT data: %s" % (host, address, port, avahi.txt_array_to_string_array(txt)) bare_name = name if name.find('@') == -1: name = name + '@' + name @@ -127,8 +127,8 @@ class Zeroconf: # different handler when resolving all contacts def service_resolved_all_callback(self, interface, protocol, name, stype, domain, host, aprotocol, address, port, txt, flags): - #print "Service data for service '%s' in domain '%s' on %i.%i:" % (name, domain, interface, protocol) - #print "\tHost %s (%s), port %i, TXT data: %s" % (host, address, port, str(avahi.txt_array_to_string_array(txt))) + # print "Service data for service '%s' in domain '%s' on %i.%i:" % (name, domain, interface, protocol) + # print "\tHost %s (%s), port %i, TXT data: %s" % (host, address, port, str(avahi.txt_array_to_string_array(txt))) bare_name = name if name.find('@') == -1: name = name + '@' + name diff --git a/src/config.py b/src/config.py index 2ba15d434..90a207cfe 100644 --- a/src/config.py +++ b/src/config.py @@ -1817,14 +1817,7 @@ class AccountsWindow: if not iter: return account = model[iter][0].decode('utf-8') - if account == 'zeroconf': - if gajim.interface.instances.has_key('zeroconf_properties'): - gajim.interface.instances['zeroconf_properties'].window.present() - else: - gajim.interface.instances['zeroconf_properties'] = \ - ZeroconfPropertiesWindow() - else: - self.show_modification_window(account) + self.show_modification_window(account) def on_accounts_treeview_row_activated(self, widget, path, column): model = widget.get_model() @@ -1832,11 +1825,18 @@ class AccountsWindow: self.show_modification_window(account) def show_modification_window(self, account): - if gajim.interface.instances[account].has_key('account_modification'): - gajim.interface.instances[account]['account_modification'].window.present() + if account == gajim.LOCAL_ACC: + if gajim.interface.instances.has_key('zeroconf_properties'): + gajim.interface.instances['zeroconf_properties'].window.present() + else: + gajim.interface.instances['zeroconf_properties'] = \ + ZeroconfPropertiesWindow() else: - gajim.interface.instances[account]['account_modification'] = \ - AccountModificationWindow(account) + if gajim.interface.instances[account].has_key('account_modification'): + gajim.interface.instances[account]['account_modification'].window.present() + else: + gajim.interface.instances[account]['account_modification'] = \ + AccountModificationWindow(account) def on_checkbutton_toggled(self, widget, config_name, change_sensitivity_widgets = None): @@ -1857,23 +1857,23 @@ class AccountsWindow: def on_enable_zeroconf_checkbutton_toggled(self, widget): if gajim.config.get('enable_zeroconf'): #disable - gajim.interface.roster.close_all('zeroconf') - gajim.connections['zeroconf'].disable_account() - del gajim.connections['zeroconf'] + gajim.interface.roster.close_all(gajim.LOCAL_ACC) + gajim.connections[gajim.LOCAL_ACC].disable_account() + del gajim.connections[gajim.LOCAL_ACC] gajim.interface.save_config() - del gajim.interface.instances['zeroconf'] - del gajim.nicks['zeroconf'] - del gajim.block_signed_in_notifications['zeroconf'] - del gajim.groups['zeroconf'] - gajim.contacts.remove_account('zeroconf') - del gajim.gc_connected['zeroconf'] - del gajim.automatic_rooms['zeroconf'] - del gajim.to_be_removed['zeroconf'] - del gajim.newly_added['zeroconf'] - del gajim.sleeper_state['zeroconf'] - del gajim.encrypted_chats['zeroconf'] - del gajim.last_message_time['zeroconf'] - del gajim.status_before_autoaway['zeroconf'] + del gajim.interface.instances[gajim.LOCAL_ACC] + del gajim.nicks[gajim.LOCAL_ACC] + del gajim.block_signed_in_notifications[gajim.LOCAL_ACC] + del gajim.groups[gajim.LOCAL_ACC] + gajim.contacts.remove_account(gajim.LOCAL_ACC) + del gajim.gc_connected[gajim.LOCAL_ACC] + del gajim.automatic_rooms[gajim.LOCAL_ACC] + del gajim.to_be_removed[gajim.LOCAL_ACC] + del gajim.newly_added[gajim.LOCAL_ACC] + del gajim.sleeper_state[gajim.LOCAL_ACC] + del gajim.encrypted_chats[gajim.LOCAL_ACC] + del gajim.last_message_time[gajim.LOCAL_ACC] + del gajim.status_before_autoaway[gajim.LOCAL_ACC] if len(gajim.connections) >= 2: # Do not merge accounts if only one exists gajim.interface.roster.regroup = gajim.config.get('mergeaccounts') else: @@ -1885,23 +1885,23 @@ class AccountsWindow: else: # enable (will create new account if not present) - gajim.connections['zeroconf'] = common.zeroconf.connection_zeroconf.ConnectionZeroconf('zeroconf') + gajim.connections[gajim.LOCAL_ACC] = common.zeroconf.connection_zeroconf.ConnectionZeroconf(gajim.LOCAL_ACC) # update variables - gajim.interface.instances['zeroconf'] = {'infos': {}, 'disco': {}, + gajim.interface.instances[gajim.LOCAL_ACC] = {'infos': {}, 'disco': {}, 'gc_config': {}} - gajim.connections['zeroconf'].connected = 0 - gajim.groups['zeroconf'] = {} - gajim.contacts.add_account('zeroconf') - gajim.gc_connected['zeroconf'] = {} - gajim.automatic_rooms['zeroconf'] = {} - gajim.newly_added['zeroconf'] = [] - gajim.to_be_removed['zeroconf'] = [] - gajim.nicks['zeroconf'] = 'zeroconf' - gajim.block_signed_in_notifications['zeroconf'] = True - gajim.sleeper_state['zeroconf'] = 'off' - gajim.encrypted_chats['zeroconf'] = [] - gajim.last_message_time['zeroconf'] = {} - gajim.status_before_autoaway['zeroconf'] = '' + gajim.connections[gajim.LOCAL_ACC].connected = 0 + gajim.groups[gajim.LOCAL_ACC] = {} + gajim.contacts.add_account(gajim.LOCAL_ACC) + gajim.gc_connected[gajim.LOCAL_ACC] = {} + gajim.automatic_rooms[gajim.LOCAL_ACC] = {} + gajim.newly_added[gajim.LOCAL_ACC] = [] + gajim.to_be_removed[gajim.LOCAL_ACC] = [] + gajim.nicks[gajim.LOCAL_ACC] = gajim.LOCAL_ACC + gajim.block_signed_in_notifications[gajim.LOCAL_ACC] = True + gajim.sleeper_state[gajim.LOCAL_ACC] = 'off' + gajim.encrypted_chats[gajim.LOCAL_ACC] = [] + gajim.last_message_time[gajim.LOCAL_ACC] = {} + gajim.status_before_autoaway[gajim.LOCAL_ACC] = '' # refresh accounts window if gajim.interface.instances.has_key('accounts'): gajim.interface.instances['accounts'].init_accounts() @@ -1913,7 +1913,7 @@ class AccountsWindow: gajim.interface.roster.draw_roster() gajim.interface.roster.actions_menu_needs_rebuild = True gajim.interface.save_config() - gajim.connections['zeroconf'].change_status('online', '') + gajim.connections[gajim.LOCAL_ACC].change_status('online', '') self.on_checkbutton_toggled(widget, 'enable_zeroconf') @@ -3053,55 +3053,53 @@ class ZeroconfPropertiesWindow: self.window.set_transient_for(gajim.interface.roster.window) self.xml.signal_autoconnect(self) - self.account = 'zeroconf' - - st = gajim.config.get_per('accounts', 'zeroconf', 'autoconnect') + st = gajim.config.get_per('accounts', gajim.LOCAL_ACC, 'autoconnect') if st: self.xml.get_widget('autoconnect_checkbutton').set_active(st) - list_no_log_for = gajim.config.get_per('accounts', self.account,'no_log_for').split() - if 'zeroconf' in list_no_log_for: + list_no_log_for = gajim.config.get_per('accounts', gajim.LOCAL_ACC,'no_log_for').split() + if gajim.LOCAL_ACC in list_no_log_for: self.xml.get_widget('log_history_checkbutton').set_active(0) else: self.xml.get_widget('log_history_checkbutton').set_active(1) - st = gajim.config.get_per('accounts', 'zeroconf', 'sync_with_global_status') + st = gajim.config.get_per('accounts', gajim.LOCAL_ACC, 'sync_with_global_status') if st: self.xml.get_widget('sync_with_global_status_checkbutton').set_active(st) - st = gajim.config.get_per('accounts', 'zeroconf', 'zeroconf_first_name') + st = gajim.config.get_per('accounts', gajim.LOCAL_ACC, 'zeroconf_first_name') if st: self.xml.get_widget('first_name_entry').set_text(st) - st = gajim.config.get_per('accounts', 'zeroconf', 'zeroconf_last_name') + st = gajim.config.get_per('accounts', gajim.LOCAL_ACC, 'zeroconf_last_name') if st: self.xml.get_widget('last_name_entry').set_text(st) - st = gajim.config.get_per('accounts', 'zeroconf', 'zeroconf_jabber_id') + st = gajim.config.get_per('accounts', gajim.LOCAL_ACC, 'zeroconf_jabber_id') if st: self.xml.get_widget('jabber_id_entry').set_text(st) - st = gajim.config.get_per('accounts', 'zeroconf', 'zeroconf_email') + st = gajim.config.get_per('accounts', gajim.LOCAL_ACC, 'zeroconf_email') if st: self.xml.get_widget('email_entry').set_text(st) - st = gajim.config.get_per('accounts', 'zeroconf', 'use_ssl') + st = gajim.config.get_per('accounts', gajim.LOCAL_ACC, 'use_ssl') if st: self.xml.get_widget('use_tls_checkbutton').set_active(st) - st = gajim.config.get_per('accounts', 'zeroconf', 'custom_port') + st = gajim.config.get_per('accounts', gajim.LOCAL_ACC, 'custom_port') if st: self.xml.get_widget('custom_port_entry').set_text(str(st)) - st = gajim.config.get_per('accounts', 'zeroconf', 'use_custom_host') + st = gajim.config.get_per('accounts', gajim.LOCAL_ACC, 'use_custom_host') if st: self.xml.get_widget('custom_port_checkbutton').set_active(st) self.xml.get_widget('custom_port_entry').set_sensitive(bool(st)) if not st: - gajim.config.set_per('accounts', 'zeroconf', 'custom_port', '5298') + gajim.config.set_per('accounts', gajim.LOCAL_ACC, 'custom_port', '5298') self.xml.get_widget('save_button').grab_focus() self.window.show_all() @@ -3120,38 +3118,44 @@ class ZeroconfPropertiesWindow: def on_save_button_clicked(self, widget): st = self.xml.get_widget('autoconnect_checkbutton').get_active() - gajim.config.set_per('accounts', 'zeroconf', 'autoconnect', st) + gajim.config.set_per('accounts', gajim.LOCAL_ACC, 'autoconnect', st) list_no_log_for = gajim.config.get_per('accounts', - self.account, 'no_log_for').split() - if self.account in list_no_log_for: - list_no_log_for.remove(self.account) + gajim.LOCAL_ACC, 'no_log_for').split() + if gajim.LOCAL_ACC in list_no_log_for: + list_no_log_for.remove(gajim.LOCAL_ACC) if not self.xml.get_widget('log_history_checkbutton').get_active(): - list_no_log_for.append(self.account) - gajim.config.set_per('accounts', 'zeroconf', 'no_log_for', ' '.join(list_no_log_for)) + list_no_log_for.append(gajim.LOCAL_ACC) + gajim.config.set_per('accounts', gajim.LOCAL_ACC, 'no_log_for', ' '.join(list_no_log_for)) st = self.xml.get_widget('sync_with_global_status_checkbutton').get_active() - gajim.config.set_per('accounts', 'zeroconf', 'sync_with_global_status', st) + gajim.config.set_per('accounts', gajim.LOCAL_ACC, 'sync_with_global_status', st) st = self.xml.get_widget('first_name_entry').get_text() - gajim.config.set_per('accounts', 'zeroconf', 'zeroconf_first_name', st) + gajim.config.set_per('accounts', gajim.LOCAL_ACC, 'zeroconf_first_name', st) st = self.xml.get_widget('last_name_entry').get_text() - gajim.config.set_per('accounts', 'zeroconf', 'zeroconf_last_name', st) + gajim.config.set_per('accounts', gajim.LOCAL_ACC, 'zeroconf_last_name', st) st = self.xml.get_widget('jabber_id_entry').get_text() - gajim.config.set_per('accounts', 'zeroconf', 'zeroconf_jabber_id', st) + gajim.config.set_per('accounts', gajim.LOCAL_ACC, 'zeroconf_jabber_id', st) st = self.xml.get_widget('email_entry').get_text() - gajim.config.set_per('accounts', 'zeroconf', 'zeroconf_email', st) + gajim.config.set_per('accounts', gajim.LOCAL_ACC, 'zeroconf_email', st) st = self.xml.get_widget('use_tls_checkbutton').get_active() - gajim.config.set_per('accounts', 'zeroconf', 'use_ssl', st) + gajim.config.set_per('accounts', gajim.LOCAL_ACC, 'use_ssl', st) st = self.xml.get_widget('custom_port_checkbutton').get_active() - gajim.config.set_per('accounts', 'zeroconf', 'use_custom_host', st) + gajim.config.set_per('accounts', gajim.LOCAL_ACC, 'use_custom_host', st) + + if st: + st = self.xml.get_widget('custom_port_entry').get_text() + gajim.config.set_per('accounts', gajim.LOCAL_ACC, 'custom_port', st) + else: + gajim.config.set_per('accounts', gajim.LOCAL_ACC, 'custom_port', '5298') - st = self.xml.get_widget('custom_port_entry').get_text() - gajim.config.set_per('accounts', 'zeroconf', 'custom_port', st) - + if gajim.connections.has_key(gajim.LOCAL_ACC): + gajim.connections[gajim.LOCAL_ACC].reconnect() + self.window.destroy() diff --git a/src/gajim.py b/src/gajim.py index a925c9628..c74e466e9 100755 --- a/src/gajim.py +++ b/src/gajim.py @@ -1853,13 +1853,11 @@ class Interface: gajim.proxy65_manager = proxy65_manager.Proxy65Manager(gajim.idlequeue) self.register_handlers() if gajim.config.get('enable_zeroconf'): - gajim.connections['zeroconf'] = common.zeroconf.connection_zeroconf.ConnectionZeroconf('zeroconf') + gajim.connections[gajim.LOCAL_ACC] = common.zeroconf.connection_zeroconf.ConnectionZeroconf(gajim.LOCAL_ACC) for account in gajim.config.get_per('accounts'): - if account != 'zeroconf': + if account != gajim.LOCAL_ACC: gajim.connections[account] = common.connection.Connection(account) - - gtk.about_dialog_set_email_hook(self.on_launch_browser_mailer, 'mail') gtk.about_dialog_set_url_hook(self.on_launch_browser_mailer, 'url') From 9c570f95882c183507de2c881dc1cd703fbb878e Mon Sep 17 00:00:00 2001 From: Dimitur Kirov Date: Mon, 25 Sep 2006 17:52:33 +0000 Subject: [PATCH 066/110] show input dialog when username is in conflict --- src/common/zeroconf/client_zeroconf.py | 3 +- src/common/zeroconf/connection_zeroconf.py | 13 +++- src/common/zeroconf/zeroconf.py | 88 ++++++++++++++-------- src/gajim.py | 16 ++++ 4 files changed, 84 insertions(+), 36 deletions(-) diff --git a/src/common/zeroconf/client_zeroconf.py b/src/common/zeroconf/client_zeroconf.py index a4cd612cf..f5e4ed2b7 100644 --- a/src/common/zeroconf/client_zeroconf.py +++ b/src/common/zeroconf/client_zeroconf.py @@ -129,7 +129,7 @@ class P2PClient(IdleObject): return False self.send(message) else: - messagequeue.append(message) + self.messagequeue.append(message) return True def on_connect(self, conn): @@ -227,6 +227,7 @@ class P2PConnection(IdleObject, PlugIn): ''' class for sending file to socket over socks5 ''' def __init__(self, sock_hash, _sock, host = None, port = None, caller = None, on_connect = None): IdleObject.__init__(self) + self._owner = None PlugIn.__init__(self) self.DBG_LINE='socket' self.sendqueue = [] diff --git a/src/common/zeroconf/connection_zeroconf.py b/src/common/zeroconf/connection_zeroconf.py index 328146143..df57815cd 100644 --- a/src/common/zeroconf/connection_zeroconf.py +++ b/src/common/zeroconf/connection_zeroconf.py @@ -88,10 +88,17 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): self.retrycount = 0 self.jids_for_auto_auth = [] # list of jid to auto-authorize self.get_config_values_or_default() - self.zeroconf = zeroconf.Zeroconf(self._on_new_service, self._on_remove_service, self.username, self.host, self.port) + self.zeroconf = zeroconf.Zeroconf(self._on_new_service, + self._on_remove_service, self._on_name_conflictCB, self.username, + self.host, self.port) self.muc_jid = {} # jid of muc server for each transport type self.vcard_supported = False + def _on_name_conflictCB(self, alt_name): + self.disconnect() + self.dispatch('STATUS', 'offline') + self.dispatch('ZC_NAME_CONFLICT', alt_name) + def get_config_values_or_default(self): ''' get name, host, port from config, or create zeroconf account with default values''' @@ -185,7 +192,6 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): self.roster.setItem(jid) self.dispatch('ROSTER_INFO', (jid, self.roster.getName(jid), 'both', 'no', self.roster.getGroups(jid))) self.dispatch('NOTIFY', (jid, self.roster.getStatus(jid), self.roster.getMessage(jid), 'local', 0, None, 0)) - def _on_remove_service(self,jid): self.roster.delItem(jid) @@ -194,7 +200,9 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): self.dispatch('NOTIFY', (jid, 'offline', '', 'local', 0, None, 0)) def connect(self, data = None, show = 'online', msg = ''): + print 'CONNECT' self.get_config_values_or_default() + print 'self.username', self.username self.zeroconf.txt['status'] = show self.zeroconf.txt['msg'] = msg @@ -206,6 +214,7 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): self.zeroconf.host = self.host self.zeroconf.port = self.port + print 'self.connection', self.connection if self.connection: return self.connection, '' diff --git a/src/common/zeroconf/zeroconf.py b/src/common/zeroconf/zeroconf.py index 6d8d2cd2c..d2888044f 100755 --- a/src/common/zeroconf/zeroconf.py +++ b/src/common/zeroconf/zeroconf.py @@ -33,17 +33,20 @@ C_NAME, C_DOMAIN, C_INTERFACE, C_PROTOCOL, C_HOST, \ C_ADDRESS, C_PORT, C_BARE_NAME, C_TXT = range(9) class Zeroconf: - def __init__(self, new_serviceCB, remove_serviceCB, name, host, port): + def __init__(self, new_serviceCB, remove_serviceCB, name_conflictCB, name, host, port): + self.server = None self.domain = None # specific domain to browse self.stype = '_presence._tcp' self.port = port # listening port that gets announced self.username = name self.host = host - self.name = self.username+'@'+ self.host # service name self.txt = {} # service data + #XXX these CBs should be set to None when we destroy the object + # (go offline), because they create a circular reference self.new_serviceCB = new_serviceCB self.remove_serviceCB = remove_serviceCB + self.name_conflictCB = name_conflictCB self.service_browsers = {} self.contacts = {} # all current local contacts with data @@ -54,13 +57,14 @@ class Zeroconf: ## handlers for dbus callbacks - - # error handler - maybe replace with gui version/gajim facilities def print_error_callback(self, err): - print "Error:", str(err) + # error handler - maybe replace with gui version/gajim facilities + gajim.log.debug(str(err)) def new_service_callback(self, interface, protocol, name, stype, domain, flags): - # print "Found service '%s' in domain '%s' on %i.%i." % (name, domain, interface, protocol) + print "Found service '%s' in domain '%s' on %i.%i." % (name, domain, interface, protocol) + if not self.connected: + return #synchronous resolving self.server.ResolveService( int(interface), int(protocol), name, stype, \ @@ -69,6 +73,8 @@ class Zeroconf: def remove_service_callback(self, interface, protocol, name, stype, domain, flags): # print "Service '%s' in domain '%s' on %i.%i disappeared." % (name, domain, interface, protocol) + if not self.connected: + return if name != self.name: for key in self.contacts.keys(): if self.contacts[key][C_BARE_NAME] == name: @@ -86,9 +92,11 @@ class Zeroconf: b = dbus.Interface(self.bus.get_object(avahi.DBUS_NAME, \ self.server.ServiceBrowserNew(interface, protocol, \ stype, domain, dbus.UInt32(0))),avahi.DBUS_INTERFACE_SERVICE_BROWSER) + print 'b', dir(b), dir(self.server) + b.Free() b.connect_to_signal('ItemNew', self.new_service_callback) b.connect_to_signal('ItemRemove', self.remove_service_callback) - + #~ b.Free() self.service_browsers[(interface, protocol, stype, domain)] = b def new_domain_callback(self,interface, protocol, domain, flags): @@ -106,8 +114,10 @@ class Zeroconf: return items def service_resolved_callback(self, interface, protocol, name, stype, domain, host, aprotocol, address, port, txt, flags): - # print "Service data for service '%s' in domain '%s' on %i.%i:" % (name, domain, interface, protocol) + print "Service data for service '%s' in domain '%s' on %i.%i:" % (name, domain, interface, protocol) # print "\tHost %s (%s), port %i, TXT data: %s" % (host, address, port, avahi.txt_array_to_string_array(txt)) + if not self.connected: + return bare_name = name if name.find('@') == -1: name = name + '@' + name @@ -129,32 +139,35 @@ class Zeroconf: def service_resolved_all_callback(self, interface, protocol, name, stype, domain, host, aprotocol, address, port, txt, flags): # print "Service data for service '%s' in domain '%s' on %i.%i:" % (name, domain, interface, protocol) # print "\tHost %s (%s), port %i, TXT data: %s" % (host, address, port, str(avahi.txt_array_to_string_array(txt))) + if not self.connected: + return bare_name = name if name.find('@') == -1: name = name + '@' + name self.contacts[name] = (name, domain, interface, protocol, host, address, port, bare_name, txt) def service_added_callback(self): - # print 'Service successfully added' + print 'Service successfully added' pass def service_committed_callback(self): - # print 'Service successfully committed' + print 'Service successfully committed' pass def service_updated_callback(self): - # print 'Service successfully updated' + print 'Service successfully updated' pass def service_add_fail_callback(self, err): - print 'Error while adding service:', str(err) - old_name = self.name - self.name = self.server.GetAlternativeServiceName(self.name) - self.create_service() - if self.invalid_self_contact.has_key(old_name): - self.contacts[old_name] = self.invalid_self_contact[old_name] - self.new_serviceCB(old_name) - del self.invalid_self_contact[old_name] + gajim.log.debug('Error while adding service. %s' % str(err)) + alternative_name = self.server.GetAlternativeServiceName(self.username) + self.disconnect() + self.name_conflictCB(alternative_name) + #~ self.create_service() + #~ if self.invalid_self_contact.has_key(old_name): + #~ self.contacts[old_name] = self.invalid_self_contact[old_name] + #~ self.new_serviceCB(old_name) + #~ del self.invalid_self_contact[old_name] def server_state_changed_callback(self, state, error): print 'server.state %s' % state @@ -162,7 +175,8 @@ class Zeroconf: self.create_service() elif state == avahi.SERVER_COLLISION: self.entrygroup.Reset() -# elif state == avahi.CLIENT_FAILURE: # TODO: add error handling (avahi daemon dies...?) + elif state == avahi.CLIENT_FAILURE: # TODO: add error handling (avahi daemon dies...?) + print 'CLIENT FAILURE' def entrygroup_state_changed_callback(self, state, error): # the name is already present, so recreate @@ -173,10 +187,10 @@ class Zeroconf: # make zeroconf-valid names def replace_show(self, show): - if show == 'chat' or show == 'online' or show == '': - show = 'avail' + if show in ['chat', 'online', '']: + return 'avail' elif show == 'xa': - show = 'away' + return 'away' return show def create_service(self): @@ -205,17 +219,18 @@ class Zeroconf: return False def announce(self): - if self.connected: - state = self.server.GetState() - - if state == avahi.SERVER_RUNNING: - self.create_service() - self.announced = True - return True - else: + print 'announce' + if not self.connected: return False + state = self.server.GetState() + if state == avahi.SERVER_RUNNING: + self.create_service() + self.announced = True + return True + def remove_announce(self): + print 'remove announce' if self.announced == False: return False try: @@ -234,20 +249,27 @@ class Zeroconf: self.new_service_type(interface, protocol, self.stype, domain, '') # connect to dbus - def connect(self): + def connect_dbus(self): + if self.server: + return True try: self.bus = dbus.SystemBus() # is there any way to check, if a dbus name exists? # that might make the Introspect Error go away... self.server = dbus.Interface(self.bus.get_object(avahi.DBUS_NAME, \ avahi.DBUS_PATH_SERVER), avahi.DBUS_INTERFACE_SERVER) - self.server.connect_to_signal('StateChanged', self.server_state_changed_callback) except dbus.dbus_bindings.DBusException, e: # Avahi service is not present gajim.log.debug(str(e)) return False + else: + return True + def connect(self): + self.name = self.username + '@' + self.host # service name + if not self.connect_dbus(): + return False self.connected = True # start browsing diff --git a/src/gajim.py b/src/gajim.py index c74e466e9..074a19516 100755 --- a/src/gajim.py +++ b/src/gajim.py @@ -1397,6 +1397,21 @@ class Interface: if win.startswith('privacy_list_'): self.instances[account][win].check_active_default(data) + def handle_event_zc_name_conflict(self, account, data): + dlg = dialogs.InputDialog(_('Username Conflict'), + _('Please type a new username for your local account'), + is_modal = True) + dlg.input_entry.set_text(data) + response = dlg.get_response() + if response == gtk.RESPONSE_OK: + new_name = dlg.input_entry.get_text() + print 'account, data', account, data, new_name + gajim.config.set_per('accounts', gajim.LOCAL_ACC, 'name', new_name) + status = gajim.connections[account].status + print 'status', status + gajim.connections[account].reconnect() + + def read_sleepy(self): '''Check idle status and change that status if needed''' if not self.sleeper.poll(): @@ -1702,6 +1717,7 @@ class Interface: 'PRIVACY_LIST_RECEIVED': self.handle_event_privacy_list_received, 'PRIVACY_LISTS_ACTIVE_DEFAULT': \ self.handle_event_privacy_lists_active_default, + 'ZC_NAME_CONFLICT': self.handle_event_zc_name_conflict, } gajim.handlers = self.handlers From 7dfdefcdcf23bcd07075b98001f738868285044f Mon Sep 17 00:00:00 2001 From: Stefan Bethge Date: Mon, 25 Sep 2006 18:47:21 +0000 Subject: [PATCH 067/110] fix service callbacks --- src/common/zeroconf/zeroconf.py | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/src/common/zeroconf/zeroconf.py b/src/common/zeroconf/zeroconf.py index d2888044f..1c4c3b7d1 100755 --- a/src/common/zeroconf/zeroconf.py +++ b/src/common/zeroconf/zeroconf.py @@ -48,7 +48,7 @@ class Zeroconf: self.remove_serviceCB = remove_serviceCB self.name_conflictCB = name_conflictCB - self.service_browsers = {} + self.service_browser = None self.contacts = {} # all current local contacts with data self.entrygroup = None self.connected = False @@ -84,20 +84,15 @@ class Zeroconf: def new_service_type(self, interface, protocol, stype, domain, flags): # Are we already browsing this domain for this type? - if self.service_browsers.has_key((interface, protocol, stype, domain)): + if self.service_browser: return - # print "Browsing for services of type '%s' in domain '%s' on %i.%i ..." % (stype, domain, interface, protocol) - - b = dbus.Interface(self.bus.get_object(avahi.DBUS_NAME, \ + self.service_browser = dbus.Interface(self.bus.get_object(avahi.DBUS_NAME, \ self.server.ServiceBrowserNew(interface, protocol, \ stype, domain, dbus.UInt32(0))),avahi.DBUS_INTERFACE_SERVICE_BROWSER) - print 'b', dir(b), dir(self.server) - b.Free() - b.connect_to_signal('ItemNew', self.new_service_callback) - b.connect_to_signal('ItemRemove', self.remove_service_callback) - #~ b.Free() - self.service_browsers[(interface, protocol, stype, domain)] = b + #print 'b', dir(b), dir(self.server) + self.service_browser.connect_to_signal('ItemNew', self.new_service_callback) + self.service_browser.connect_to_signal('ItemRemove', self.remove_service_callback) def new_domain_callback(self,interface, protocol, domain, flags): if domain != "local": From 29160807ebd0dbbb14409e978158f315c0164632 Mon Sep 17 00:00:00 2001 From: Dimitur Kirov Date: Mon, 25 Sep 2006 18:57:39 +0000 Subject: [PATCH 068/110] set username from system user everytime on startup --- src/common/zeroconf/connection_zeroconf.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/common/zeroconf/connection_zeroconf.py b/src/common/zeroconf/connection_zeroconf.py index df57815cd..98982e0bd 100644 --- a/src/common/zeroconf/connection_zeroconf.py +++ b/src/common/zeroconf/connection_zeroconf.py @@ -53,6 +53,8 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): '''Connection class''' def __init__(self, name): ConnectionHandlersZeroconf.__init__(self) + # system username + self.username = None self.name = name self.connected = 0 # offline self.connection = None @@ -102,6 +104,11 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): def get_config_values_or_default(self): ''' get name, host, port from config, or create zeroconf account with default values''' + if not self.username: + self.username = unicode(getpass.getuser()) + gajim.config.set_per('accounts', gajim.LOCAL_ACC, 'name', self.username) + else: + self.username = gajim.config.get_per('accounts', gajim.LOCAL_ACC, 'name') if not gajim.config.get_per('accounts', gajim.LOCAL_ACC, 'name'): print 'Creating zeroconf account' gajim.config.add_per('accounts', gajim.LOCAL_ACC) @@ -109,9 +116,7 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): gajim.config.set_per('accounts', gajim.LOCAL_ACC, 'no_log_for', '') gajim.config.set_per('accounts', gajim.LOCAL_ACC, 'password', 'zeroconf') gajim.config.set_per('accounts', gajim.LOCAL_ACC, 'sync_with_global_status', True) - - self.username = unicode(getpass.getuser()) - gajim.config.set_per('accounts', gajim.LOCAL_ACC, 'name', self.username) + #XXX make sure host is US-ASCII self.host = unicode(socket.gethostname()) gajim.config.set_per('accounts', gajim.LOCAL_ACC, 'hostname', self.host) @@ -119,7 +124,7 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): gajim.config.set_per('accounts', gajim.LOCAL_ACC, 'custom_port', self.port) gajim.config.set_per('accounts', gajim.LOCAL_ACC, 'is_zeroconf', True) else: - self.username = gajim.config.get_per('accounts', gajim.LOCAL_ACC, 'name') + self.host = gajim.config.get_per('accounts', gajim.LOCAL_ACC, 'hostname') self.port = gajim.config.get_per('accounts', gajim.LOCAL_ACC, 'custom_port') self.autoconnect = gajim.config.get_per('accounts', gajim.LOCAL_ACC, 'autoconnect') @@ -200,9 +205,7 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): self.dispatch('NOTIFY', (jid, 'offline', '', 'local', 0, None, 0)) def connect(self, data = None, show = 'online', msg = ''): - print 'CONNECT' self.get_config_values_or_default() - print 'self.username', self.username self.zeroconf.txt['status'] = show self.zeroconf.txt['msg'] = msg From f5e00e916ce262cb8f83095e80733513bfc26129 Mon Sep 17 00:00:00 2001 From: Stefan Bethge Date: Mon, 25 Sep 2006 20:14:17 +0000 Subject: [PATCH 069/110] reconnect using reannounce and check if port has changed, change global account variable --- src/common/gajim.py | 2 +- src/common/zeroconf/connection_zeroconf.py | 82 +++++++----- src/config.py | 142 +++++++++++---------- src/gajim.py | 4 +- 4 files changed, 126 insertions(+), 104 deletions(-) diff --git a/src/common/gajim.py b/src/common/gajim.py index 6ff6d5b7a..ce9f0119d 100644 --- a/src/common/gajim.py +++ b/src/common/gajim.py @@ -121,7 +121,7 @@ SHOW_LIST = ['offline', 'connecting', 'online', 'chat', 'away', 'xa', 'dnd', 'invisible'] # zeroconf account name -LOCAL_ACC = 'local' +ZEROCONF_ACC_NAME = 'Local' def get_nick_from_jid(jid): pos = jid.find('@') diff --git a/src/common/zeroconf/connection_zeroconf.py b/src/common/zeroconf/connection_zeroconf.py index 98982e0bd..8e4de7301 100644 --- a/src/common/zeroconf/connection_zeroconf.py +++ b/src/common/zeroconf/connection_zeroconf.py @@ -70,7 +70,7 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): self.bookmarks = [] #we don't need a password, but must be non-empty - self.password = gajim.LOCAL_ACC + self.password = 'zeroconf' #XXX use that somewhere self.autoconnect = False @@ -104,38 +104,39 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): def get_config_values_or_default(self): ''' get name, host, port from config, or create zeroconf account with default values''' + if not self.username: self.username = unicode(getpass.getuser()) - gajim.config.set_per('accounts', gajim.LOCAL_ACC, 'name', self.username) + gajim.config.set_per('accounts', gajim.ZEROCONF_ACC_NAME, 'name', self.username) else: - self.username = gajim.config.get_per('accounts', gajim.LOCAL_ACC, 'name') - if not gajim.config.get_per('accounts', gajim.LOCAL_ACC, 'name'): + self.username = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, 'name') + + if not gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, 'name'): print 'Creating zeroconf account' - gajim.config.add_per('accounts', gajim.LOCAL_ACC) - gajim.config.set_per('accounts', gajim.LOCAL_ACC, 'autoconnect', True) - gajim.config.set_per('accounts', gajim.LOCAL_ACC, 'no_log_for', '') - gajim.config.set_per('accounts', gajim.LOCAL_ACC, 'password', 'zeroconf') - gajim.config.set_per('accounts', gajim.LOCAL_ACC, 'sync_with_global_status', True) - + gajim.config.add_per('accounts', gajim.ZEROCONF_ACC_NAME) + gajim.config.set_per('accounts', gajim.ZEROCONF_ACC_NAME, 'autoconnect', True) + gajim.config.set_per('accounts', gajim.ZEROCONF_ACC_NAME, 'no_log_for', '') + gajim.config.set_per('accounts', gajim.ZEROCONF_ACC_NAME, 'password', 'zeroconf') + gajim.config.set_per('accounts', gajim.ZEROCONF_ACC_NAME, 'sync_with_global_status', True) + #XXX make sure host is US-ASCII self.host = unicode(socket.gethostname()) - gajim.config.set_per('accounts', gajim.LOCAL_ACC, 'hostname', self.host) + gajim.config.set_per('accounts', gajim.ZEROCONF_ACC_NAME, 'hostname', self.host) self.port = 5298 - gajim.config.set_per('accounts', gajim.LOCAL_ACC, 'custom_port', self.port) - gajim.config.set_per('accounts', gajim.LOCAL_ACC, 'is_zeroconf', True) + gajim.config.set_per('accounts', gajim.ZEROCONF_ACC_NAME, 'custom_port', self.port) + gajim.config.set_per('accounts', gajim.ZEROCONF_ACC_NAME, 'is_zeroconf', True) else: - - self.host = gajim.config.get_per('accounts', gajim.LOCAL_ACC, 'hostname') - self.port = gajim.config.get_per('accounts', gajim.LOCAL_ACC, 'custom_port') - self.autoconnect = gajim.config.get_per('accounts', gajim.LOCAL_ACC, 'autoconnect') - self.sync_with_global_status = gajim.config.get_per('accounts', gajim.LOCAL_ACC, 'sync_with_global_status') - self.no_log_for = gajim.config.get_per('accounts', gajim.LOCAL_ACC, 'no_log_for') - self.first = gajim.config.get_per('accounts', gajim.LOCAL_ACC, 'zeroconf_first_name') - self.last = gajim.config.get_per('accounts', gajim.LOCAL_ACC, 'zeroconf_last_name') - self.jabber_id = gajim.config.get_per('accounts', gajim.LOCAL_ACC, 'zeroconf_jabber_id') - self.email = gajim.config.get_per('accounts', gajim.LOCAL_ACC, 'zeroconf_email') - + self.host = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, 'hostname') + self.port = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, 'custom_port') + self.autoconnect = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, 'autoconnect') + self.sync_with_global_status = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, 'sync_with_global_status') + self.no_log_for = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, 'no_log_for') + self.first = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, 'zeroconf_first_name') + self.last = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, 'zeroconf_last_name') + self.jabber_id = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, 'zeroconf_jabber_id') + self.email = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, 'zeroconf_email') # END __init__ + def put_event(self, ev): if gajim.handlers.has_key(ev[0]): gajim.handlers[ev[0]](self.name, ev[1]) @@ -237,9 +238,6 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): self.call_resolve_timeout = True gobject.timeout_add(10000, self._on_resolve_timeout) else: - notify.popup(_('Connection problem:'), gajim.LOCAL_ACC, None, - title=_('Can not get connection'), - text=_('Please check if avahi-daemon is running.') ) self.dispatch('STATUS', 'offline') self.status = 'offline' @@ -254,12 +252,28 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): self.call_resolve_timeout = False self.zeroconf.disconnect() - def reconnect(self): - status = self.status - if status != 'offline': - msg = self.zeroconf.txt['msg'] - self.change_status('offline', msg) - self.change_status(status, msg) + def reconnect(self, new_port, use_tls): + txt = {} + txt['1st'] = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, 'zeroconf_first_name') + txt['last'] = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, 'zeroconf_last_name') + txt['jid'] = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, 'zeroconf_jabber_id') + txt['email'] = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, 'zeroconf_email') + txt2 = {} + for key, val in txt.iteritems(): + if val != '': + txt2[key] = val + + port = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, 'custom_port') + + if new_port or use_tls: + self.connection.kill_all_connections() + self.connection.listener.disconnect() + self.connection.start_listener(port) + + self.zeroconf.remove_announce() + self.zeroconf.txt = txt2 + self.zeroconf.port = port + self.zeroconf.announce() def change_status(self, show, msg, sync = False, auto = False): if not show in STATUS_LIST: @@ -299,7 +313,7 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): if check: self.dispatch('STATUS', show) else: - notify.popup(_('Connection problem:'), gajim.LOCAL_ACC, None, + notify.popup(_('Connection problem:'), gajim.ZEROCONF_ACC_NAME, None, title=_('Could not change status'), text=_('Please check if avahi-daemon is running.') ) self.dispatch('STATUS', 'offline') diff --git a/src/config.py b/src/config.py index 90a207cfe..ac52033db 100644 --- a/src/config.py +++ b/src/config.py @@ -1825,7 +1825,7 @@ class AccountsWindow: self.show_modification_window(account) def show_modification_window(self, account): - if account == gajim.LOCAL_ACC: + if account == gajim.ZEROCONF_ACC_NAME: if gajim.interface.instances.has_key('zeroconf_properties'): gajim.interface.instances['zeroconf_properties'].window.present() else: @@ -1857,23 +1857,23 @@ class AccountsWindow: def on_enable_zeroconf_checkbutton_toggled(self, widget): if gajim.config.get('enable_zeroconf'): #disable - gajim.interface.roster.close_all(gajim.LOCAL_ACC) - gajim.connections[gajim.LOCAL_ACC].disable_account() - del gajim.connections[gajim.LOCAL_ACC] + gajim.interface.roster.close_all(gajim.ZEROCONF_ACC_NAME) + gajim.connections[gajim.ZEROCONF_ACC_NAME].disable_account() + del gajim.connections[gajim.ZEROCONF_ACC_NAME] gajim.interface.save_config() - del gajim.interface.instances[gajim.LOCAL_ACC] - del gajim.nicks[gajim.LOCAL_ACC] - del gajim.block_signed_in_notifications[gajim.LOCAL_ACC] - del gajim.groups[gajim.LOCAL_ACC] - gajim.contacts.remove_account(gajim.LOCAL_ACC) - del gajim.gc_connected[gajim.LOCAL_ACC] - del gajim.automatic_rooms[gajim.LOCAL_ACC] - del gajim.to_be_removed[gajim.LOCAL_ACC] - del gajim.newly_added[gajim.LOCAL_ACC] - del gajim.sleeper_state[gajim.LOCAL_ACC] - del gajim.encrypted_chats[gajim.LOCAL_ACC] - del gajim.last_message_time[gajim.LOCAL_ACC] - del gajim.status_before_autoaway[gajim.LOCAL_ACC] + del gajim.interface.instances[gajim.ZEROCONF_ACC_NAME] + del gajim.nicks[gajim.ZEROCONF_ACC_NAME] + del gajim.block_signed_in_notifications[gajim.ZEROCONF_ACC_NAME] + del gajim.groups[gajim.ZEROCONF_ACC_NAME] + gajim.contacts.remove_account(gajim.ZEROCONF_ACC_NAME) + del gajim.gc_connected[gajim.ZEROCONF_ACC_NAME] + del gajim.automatic_rooms[gajim.ZEROCONF_ACC_NAME] + del gajim.to_be_removed[gajim.ZEROCONF_ACC_NAME] + del gajim.newly_added[gajim.ZEROCONF_ACC_NAME] + del gajim.sleeper_state[gajim.ZEROCONF_ACC_NAME] + del gajim.encrypted_chats[gajim.ZEROCONF_ACC_NAME] + del gajim.last_message_time[gajim.ZEROCONF_ACC_NAME] + del gajim.status_before_autoaway[gajim.ZEROCONF_ACC_NAME] if len(gajim.connections) >= 2: # Do not merge accounts if only one exists gajim.interface.roster.regroup = gajim.config.get('mergeaccounts') else: @@ -1885,23 +1885,23 @@ class AccountsWindow: else: # enable (will create new account if not present) - gajim.connections[gajim.LOCAL_ACC] = common.zeroconf.connection_zeroconf.ConnectionZeroconf(gajim.LOCAL_ACC) + gajim.connections[gajim.ZEROCONF_ACC_NAME] = common.zeroconf.connection_zeroconf.ConnectionZeroconf(gajim.ZEROCONF_ACC_NAME) # update variables - gajim.interface.instances[gajim.LOCAL_ACC] = {'infos': {}, 'disco': {}, + gajim.interface.instances[gajim.ZEROCONF_ACC_NAME] = {'infos': {}, 'disco': {}, 'gc_config': {}} - gajim.connections[gajim.LOCAL_ACC].connected = 0 - gajim.groups[gajim.LOCAL_ACC] = {} - gajim.contacts.add_account(gajim.LOCAL_ACC) - gajim.gc_connected[gajim.LOCAL_ACC] = {} - gajim.automatic_rooms[gajim.LOCAL_ACC] = {} - gajim.newly_added[gajim.LOCAL_ACC] = [] - gajim.to_be_removed[gajim.LOCAL_ACC] = [] - gajim.nicks[gajim.LOCAL_ACC] = gajim.LOCAL_ACC - gajim.block_signed_in_notifications[gajim.LOCAL_ACC] = True - gajim.sleeper_state[gajim.LOCAL_ACC] = 'off' - gajim.encrypted_chats[gajim.LOCAL_ACC] = [] - gajim.last_message_time[gajim.LOCAL_ACC] = {} - gajim.status_before_autoaway[gajim.LOCAL_ACC] = '' + gajim.connections[gajim.ZEROCONF_ACC_NAME].connected = 0 + gajim.groups[gajim.ZEROCONF_ACC_NAME] = {} + gajim.contacts.add_account(gajim.ZEROCONF_ACC_NAME) + gajim.gc_connected[gajim.ZEROCONF_ACC_NAME] = {} + gajim.automatic_rooms[gajim.ZEROCONF_ACC_NAME] = {} + gajim.newly_added[gajim.ZEROCONF_ACC_NAME] = [] + gajim.to_be_removed[gajim.ZEROCONF_ACC_NAME] = [] + gajim.nicks[gajim.ZEROCONF_ACC_NAME] = gajim.ZEROCONF_ACC_NAME + gajim.block_signed_in_notifications[gajim.ZEROCONF_ACC_NAME] = True + gajim.sleeper_state[gajim.ZEROCONF_ACC_NAME] = 'off' + gajim.encrypted_chats[gajim.ZEROCONF_ACC_NAME] = [] + gajim.last_message_time[gajim.ZEROCONF_ACC_NAME] = {} + gajim.status_before_autoaway[gajim.ZEROCONF_ACC_NAME] = '' # refresh accounts window if gajim.interface.instances.has_key('accounts'): gajim.interface.instances['accounts'].init_accounts() @@ -1913,7 +1913,7 @@ class AccountsWindow: gajim.interface.roster.draw_roster() gajim.interface.roster.actions_menu_needs_rebuild = True gajim.interface.save_config() - gajim.connections[gajim.LOCAL_ACC].change_status('online', '') + gajim.connections[gajim.ZEROCONF_ACC_NAME].change_status('online', '') self.on_checkbutton_toggled(widget, 'enable_zeroconf') @@ -3053,53 +3053,53 @@ class ZeroconfPropertiesWindow: self.window.set_transient_for(gajim.interface.roster.window) self.xml.signal_autoconnect(self) - st = gajim.config.get_per('accounts', gajim.LOCAL_ACC, 'autoconnect') + st = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, 'autoconnect') if st: self.xml.get_widget('autoconnect_checkbutton').set_active(st) - list_no_log_for = gajim.config.get_per('accounts', gajim.LOCAL_ACC,'no_log_for').split() - if gajim.LOCAL_ACC in list_no_log_for: + list_no_log_for = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME,'no_log_for').split() + if gajim.ZEROCONF_ACC_NAME in list_no_log_for: self.xml.get_widget('log_history_checkbutton').set_active(0) else: self.xml.get_widget('log_history_checkbutton').set_active(1) - st = gajim.config.get_per('accounts', gajim.LOCAL_ACC, 'sync_with_global_status') + st = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, 'sync_with_global_status') if st: self.xml.get_widget('sync_with_global_status_checkbutton').set_active(st) - st = gajim.config.get_per('accounts', gajim.LOCAL_ACC, 'zeroconf_first_name') + st = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, 'zeroconf_first_name') if st: self.xml.get_widget('first_name_entry').set_text(st) - st = gajim.config.get_per('accounts', gajim.LOCAL_ACC, 'zeroconf_last_name') + st = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, 'zeroconf_last_name') if st: self.xml.get_widget('last_name_entry').set_text(st) - st = gajim.config.get_per('accounts', gajim.LOCAL_ACC, 'zeroconf_jabber_id') + st = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, 'zeroconf_jabber_id') if st: self.xml.get_widget('jabber_id_entry').set_text(st) - st = gajim.config.get_per('accounts', gajim.LOCAL_ACC, 'zeroconf_email') + st = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, 'zeroconf_email') if st: self.xml.get_widget('email_entry').set_text(st) - st = gajim.config.get_per('accounts', gajim.LOCAL_ACC, 'use_ssl') + st = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, 'use_ssl') if st: self.xml.get_widget('use_tls_checkbutton').set_active(st) - st = gajim.config.get_per('accounts', gajim.LOCAL_ACC, 'custom_port') + st = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, 'custom_port') if st: self.xml.get_widget('custom_port_entry').set_text(str(st)) - st = gajim.config.get_per('accounts', gajim.LOCAL_ACC, 'use_custom_host') + st = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, 'use_custom_host') if st: self.xml.get_widget('custom_port_checkbutton').set_active(st) self.xml.get_widget('custom_port_entry').set_sensitive(bool(st)) if not st: - gajim.config.set_per('accounts', gajim.LOCAL_ACC, 'custom_port', '5298') + gajim.config.set_per('accounts', gajim.ZEROCONF_ACC_NAME, 'custom_port', '5298') self.xml.get_widget('save_button').grab_focus() self.window.show_all() @@ -3118,44 +3118,52 @@ class ZeroconfPropertiesWindow: def on_save_button_clicked(self, widget): st = self.xml.get_widget('autoconnect_checkbutton').get_active() - gajim.config.set_per('accounts', gajim.LOCAL_ACC, 'autoconnect', st) + gajim.config.set_per('accounts', gajim.ZEROCONF_ACC_NAME, 'autoconnect', st) list_no_log_for = gajim.config.get_per('accounts', - gajim.LOCAL_ACC, 'no_log_for').split() - if gajim.LOCAL_ACC in list_no_log_for: - list_no_log_for.remove(gajim.LOCAL_ACC) + gajim.ZEROCONF_ACC_NAME, 'no_log_for').split() + if gajim.ZEROCONF_ACC_NAME in list_no_log_for: + list_no_log_for.remove(gajim.ZEROCONF_ACC_NAME) if not self.xml.get_widget('log_history_checkbutton').get_active(): - list_no_log_for.append(gajim.LOCAL_ACC) - gajim.config.set_per('accounts', gajim.LOCAL_ACC, 'no_log_for', ' '.join(list_no_log_for)) + list_no_log_for.append(gajim.ZEROCONF_ACC_NAME) + gajim.config.set_per('accounts', gajim.ZEROCONF_ACC_NAME, 'no_log_for', ' '.join(list_no_log_for)) st = self.xml.get_widget('sync_with_global_status_checkbutton').get_active() - gajim.config.set_per('accounts', gajim.LOCAL_ACC, 'sync_with_global_status', st) + gajim.config.set_per('accounts', gajim.ZEROCONF_ACC_NAME, 'sync_with_global_status', st) st = self.xml.get_widget('first_name_entry').get_text() - gajim.config.set_per('accounts', gajim.LOCAL_ACC, 'zeroconf_first_name', st) + gajim.config.set_per('accounts', gajim.ZEROCONF_ACC_NAME, 'zeroconf_first_name', st) st = self.xml.get_widget('last_name_entry').get_text() - gajim.config.set_per('accounts', gajim.LOCAL_ACC, 'zeroconf_last_name', st) + gajim.config.set_per('accounts', gajim.ZEROCONF_ACC_NAME, 'zeroconf_last_name', st) st = self.xml.get_widget('jabber_id_entry').get_text() - gajim.config.set_per('accounts', gajim.LOCAL_ACC, 'zeroconf_jabber_id', st) + gajim.config.set_per('accounts', gajim.ZEROCONF_ACC_NAME, 'zeroconf_jabber_id', st) st = self.xml.get_widget('email_entry').get_text() - gajim.config.set_per('accounts', gajim.LOCAL_ACC, 'zeroconf_email', st) + gajim.config.set_per('accounts', gajim.ZEROCONF_ACC_NAME, 'zeroconf_email', st) - st = self.xml.get_widget('use_tls_checkbutton').get_active() - gajim.config.set_per('accounts', gajim.LOCAL_ACC, 'use_ssl', st) + use_tls = self.xml.get_widget('use_tls_checkbutton').get_active() + gajim.config.set_per('accounts', gajim.ZEROCONF_ACC_NAME, 'use_ssl', use_tls) - st = self.xml.get_widget('custom_port_checkbutton').get_active() - gajim.config.set_per('accounts', gajim.LOCAL_ACC, 'use_custom_host', st) + use_custom_port = self.xml.get_widget('custom_port_checkbutton').get_active() + gajim.config.set_per('accounts', gajim.ZEROCONF_ACC_NAME, 'use_custom_host', use_custom_port) - if st: - st = self.xml.get_widget('custom_port_entry').get_text() - gajim.config.set_per('accounts', gajim.LOCAL_ACC, 'custom_port', st) + old_port = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, 'custom_port') + if use_custom_port: + port = self.xml.get_widget('custom_port_entry').get_text() else: - gajim.config.set_per('accounts', gajim.LOCAL_ACC, 'custom_port', '5298') - - if gajim.connections.has_key(gajim.LOCAL_ACC): - gajim.connections[gajim.LOCAL_ACC].reconnect() + port = '5298' + + gajim.config.set_per('accounts', gajim.ZEROCONF_ACC_NAME, 'custom_port', port) + + # force restart of listener (because port has changed) + if port != old_port: + use_custom_port = True + else: + use_custom_port = False + + if gajim.connections.has_key(gajim.ZEROCONF_ACC_NAME): + gajim.connections[gajim.ZEROCONF_ACC_NAME].reconnect(use_custom_port, use_tls) self.window.destroy() diff --git a/src/gajim.py b/src/gajim.py index 074a19516..b8e96dd63 100755 --- a/src/gajim.py +++ b/src/gajim.py @@ -1869,9 +1869,9 @@ class Interface: gajim.proxy65_manager = proxy65_manager.Proxy65Manager(gajim.idlequeue) self.register_handlers() if gajim.config.get('enable_zeroconf'): - gajim.connections[gajim.LOCAL_ACC] = common.zeroconf.connection_zeroconf.ConnectionZeroconf(gajim.LOCAL_ACC) + gajim.connections[gajim.ZEROCONF_ACC_NAME] = common.zeroconf.connection_zeroconf.ConnectionZeroconf(gajim.ZEROCONF_ACC_NAME) for account in gajim.config.get_per('accounts'): - if account != gajim.LOCAL_ACC: + if account != gajim.ZEROCONF_ACC_NAME: gajim.connections[account] = common.connection.Connection(account) gtk.about_dialog_set_email_hook(self.on_launch_browser_mailer, 'mail') From 5cf072a9c77a77fddaae2a14e64a6a47a22b4d34 Mon Sep 17 00:00:00 2001 From: Stefan Bethge Date: Mon, 25 Sep 2006 20:26:20 +0000 Subject: [PATCH 070/110] properly disconnect from dbus when calling disconnect() --- src/common/zeroconf/zeroconf.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/common/zeroconf/zeroconf.py b/src/common/zeroconf/zeroconf.py index 1c4c3b7d1..d4a13341d 100755 --- a/src/common/zeroconf/zeroconf.py +++ b/src/common/zeroconf/zeroconf.py @@ -72,9 +72,9 @@ class Zeroconf: reply_handler=self.service_resolved_callback, error_handler=self.print_error_callback) def remove_service_callback(self, interface, protocol, name, stype, domain, flags): - # print "Service '%s' in domain '%s' on %i.%i disappeared." % (name, domain, interface, protocol) - if not self.connected: - return + print "Service '%s' in domain '%s' on %i.%i disappeared." % (name, domain, interface, protocol) + #if not self.connected: + # return if name != self.name: for key in self.contacts.keys(): if self.contacts[key][C_BARE_NAME] == name: @@ -286,6 +286,8 @@ class Zeroconf: def disconnect(self): if self.connected: self.connected = False + self.service_browser.Free() + self.service_browser = None self.remove_announce() # refresh txt data of all contacts manually (no callback available) From 709896b576067fc75779d5e229fcd0a69ce28ca0 Mon Sep 17 00:00:00 2001 From: Dimitur Kirov Date: Mon, 25 Sep 2006 20:36:59 +0000 Subject: [PATCH 071/110] show connection lost notification/dialog set properties, when account is initially created --- src/common/zeroconf/connection_zeroconf.py | 46 ++++++++++-------- src/common/zeroconf/zeroconf.py | 55 +++++++++++++--------- 2 files changed, 61 insertions(+), 40 deletions(-) diff --git a/src/common/zeroconf/connection_zeroconf.py b/src/common/zeroconf/connection_zeroconf.py index 8e4de7301..f242e6611 100644 --- a/src/common/zeroconf/connection_zeroconf.py +++ b/src/common/zeroconf/connection_zeroconf.py @@ -91,8 +91,8 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): self.jids_for_auto_auth = [] # list of jid to auto-authorize self.get_config_values_or_default() self.zeroconf = zeroconf.Zeroconf(self._on_new_service, - self._on_remove_service, self._on_name_conflictCB, self.username, - self.host, self.port) + self._on_remove_service, self._on_name_conflictCB, + self._on_disconnected, self.username, self.host, self.port) self.muc_jid = {} # jid of muc server for each transport type self.vcard_supported = False @@ -122,19 +122,17 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): #XXX make sure host is US-ASCII self.host = unicode(socket.gethostname()) gajim.config.set_per('accounts', gajim.ZEROCONF_ACC_NAME, 'hostname', self.host) - self.port = 5298 - gajim.config.set_per('accounts', gajim.ZEROCONF_ACC_NAME, 'custom_port', self.port) + gajim.config.set_per('accounts', gajim.ZEROCONF_ACC_NAME, 'custom_port', 5298) gajim.config.set_per('accounts', gajim.ZEROCONF_ACC_NAME, 'is_zeroconf', True) - else: - self.host = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, 'hostname') - self.port = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, 'custom_port') - self.autoconnect = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, 'autoconnect') - self.sync_with_global_status = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, 'sync_with_global_status') - self.no_log_for = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, 'no_log_for') - self.first = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, 'zeroconf_first_name') - self.last = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, 'zeroconf_last_name') - self.jabber_id = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, 'zeroconf_jabber_id') - self.email = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, 'zeroconf_email') + self.host = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, 'hostname') + self.port = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, 'custom_port') + self.autoconnect = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, 'autoconnect') + self.sync_with_global_status = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, 'sync_with_global_status') + self.no_log_for = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, 'no_log_for') + self.first = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, 'zeroconf_first_name') + self.last = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, 'zeroconf_last_name') + self.jabber_id = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, 'zeroconf_jabber_id') + self.email = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, 'zeroconf_email') # END __init__ def put_event(self, ev): @@ -199,12 +197,20 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): self.dispatch('ROSTER_INFO', (jid, self.roster.getName(jid), 'both', 'no', self.roster.getGroups(jid))) self.dispatch('NOTIFY', (jid, self.roster.getStatus(jid), self.roster.getMessage(jid), 'local', 0, None, 0)) - def _on_remove_service(self,jid): + def _on_remove_service(self, jid): self.roster.delItem(jid) # 'NOTIFY' (account, (jid, status, status message, resource, priority, # keyID, timestamp)) self.dispatch('NOTIFY', (jid, 'offline', '', 'local', 0, None, 0)) + def _on_disconnected(self): + self.disconnect() + self.dispatch('STATUS', 'offline') + self.dispatch('CONNECTION_LOST', + (_('Connection with account "%s" has been lost') % self.name, + _('To continue sending and receiving messages, you will need to reconnect.'))) + self.status = 'offline' + def connect(self, data = None, show = 'online', msg = ''): self.get_config_values_or_default() @@ -218,7 +224,6 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): self.zeroconf.host = self.host self.zeroconf.port = self.port - print 'self.connection', self.connection if self.connection: return self.connection, '' @@ -313,11 +318,14 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): if check: self.dispatch('STATUS', show) else: - notify.popup(_('Connection problem:'), gajim.ZEROCONF_ACC_NAME, None, - title=_('Could not change status'), - text=_('Please check if avahi-daemon is running.') ) + # show notification that avahi, or system bus is down self.dispatch('STATUS', 'offline') self.status = 'offline' + self.dispatch('CONNECTION_LOST', + (_('Could not change status of account "%s"') % self.name, + _('Please check if avahi-daemon is running.'))) + + def get_status(self): return STATUS_LIST[self.connected] diff --git a/src/common/zeroconf/zeroconf.py b/src/common/zeroconf/zeroconf.py index d4a13341d..dc080d130 100755 --- a/src/common/zeroconf/zeroconf.py +++ b/src/common/zeroconf/zeroconf.py @@ -33,7 +33,8 @@ C_NAME, C_DOMAIN, C_INTERFACE, C_PROTOCOL, C_HOST, \ C_ADDRESS, C_PORT, C_BARE_NAME, C_TXT = range(9) class Zeroconf: - def __init__(self, new_serviceCB, remove_serviceCB, name_conflictCB, name, host, port): + def __init__(self, new_serviceCB, remove_serviceCB, name_conflictCB, + disconnected_CB, name, host, port): self.server = None self.domain = None # specific domain to browse self.stype = '_presence._tcp' @@ -47,8 +48,11 @@ class Zeroconf: self.new_serviceCB = new_serviceCB self.remove_serviceCB = remove_serviceCB self.name_conflictCB = name_conflictCB + self.disconnected_CB = disconnected_CB self.service_browser = None + self.domain_browser = None + self.server = None self.contacts = {} # all current local contacts with data self.entrygroup = None self.connected = False @@ -57,9 +61,14 @@ class Zeroconf: ## handlers for dbus callbacks - def print_error_callback(self, err): - # error handler - maybe replace with gui version/gajim facilities + def entrygroup_commit_error_CB(self, err): + # left for eventual later use + pass + + def error_callback(self, err): gajim.log.debug(str(err)) + self.disconnect() + self.disconnected_CB() def new_service_callback(self, interface, protocol, name, stype, domain, flags): print "Found service '%s' in domain '%s' on %i.%i." % (name, domain, interface, protocol) @@ -69,7 +78,7 @@ class Zeroconf: #synchronous resolving self.server.ResolveService( int(interface), int(protocol), name, stype, \ domain, avahi.PROTO_UNSPEC, dbus.UInt32(0), \ - reply_handler=self.service_resolved_callback, error_handler=self.print_error_callback) + reply_handler=self.service_resolved_callback, error_handler=self.error_callback) def remove_service_callback(self, interface, protocol, name, stype, domain, flags): print "Service '%s' in domain '%s' on %i.%i disappeared." % (name, domain, interface, protocol) @@ -87,12 +96,15 @@ class Zeroconf: if self.service_browser: return + + object_path = self.server.ServiceBrowserNew(interface, protocol, \ + stype, domain, dbus.UInt32(0)) + self.service_browser = dbus.Interface(self.bus.get_object(avahi.DBUS_NAME, \ - self.server.ServiceBrowserNew(interface, protocol, \ - stype, domain, dbus.UInt32(0))),avahi.DBUS_INTERFACE_SERVICE_BROWSER) - #print 'b', dir(b), dir(self.server) + object_path) , avahi.DBUS_INTERFACE_SERVICE_BROWSER) self.service_browser.connect_to_signal('ItemNew', self.new_service_callback) self.service_browser.connect_to_signal('ItemRemove', self.remove_service_callback) + self.service_browser.connect_to_signal('Failure', self.error_callback) def new_domain_callback(self,interface, protocol, domain, flags): if domain != "local": @@ -158,11 +170,6 @@ class Zeroconf: alternative_name = self.server.GetAlternativeServiceName(self.username) self.disconnect() self.name_conflictCB(alternative_name) - #~ self.create_service() - #~ if self.invalid_self_contact.has_key(old_name): - #~ self.contacts[old_name] = self.invalid_self_contact[old_name] - #~ self.new_serviceCB(old_name) - #~ del self.invalid_self_contact[old_name] def server_state_changed_callback(self, state, error): print 'server.state %s' % state @@ -205,7 +212,8 @@ class Zeroconf: # print "Publishing service '%s' of type %s" % (self.name, self.stype) self.entrygroup.AddService(avahi.IF_UNSPEC, avahi.PROTO_UNSPEC, dbus.UInt32(0), self.name, self.stype, '', '', self.port, avahi.dict_to_txt_array(self.txt), reply_handler=self.service_added_callback, error_handler=self.service_add_fail_callback) - self.entrygroup.Commit(reply_handler=self.service_committed_callback, error_handler=self.print_error_callback) + self.entrygroup.Commit(reply_handler=self.service_committed_callback, + error_handler=self.entrygroup_commit_error_CB) return True @@ -214,7 +222,6 @@ class Zeroconf: return False def announce(self): - print 'announce' if not self.connected: return False @@ -225,7 +232,6 @@ class Zeroconf: return True def remove_announce(self): - print 'remove announce' if self.announced == False: return False try: @@ -256,6 +262,7 @@ class Zeroconf: self.server.connect_to_signal('StateChanged', self.server_state_changed_callback) except dbus.dbus_bindings.DBusException, e: # Avahi service is not present + self.server = None gajim.log.debug(str(e)) return False else: @@ -273,11 +280,12 @@ class Zeroconf: self.browse_domain(avahi.IF_UNSPEC, avahi.PROTO_UNSPEC, "local") # Browse for other browsable domains - db = dbus.Interface(self.bus.get_object(avahi.DBUS_NAME, \ + self.domain_browser = dbus.Interface(self.bus.get_object(avahi.DBUS_NAME, \ self.server.DomainBrowserNew(avahi.IF_UNSPEC, \ avahi.PROTO_UNSPEC, '', avahi.DOMAIN_BROWSER_BROWSE,\ dbus.UInt32(0))), avahi.DBUS_INTERFACE_DOMAIN_BROWSER) - db.connect_to_signal('ItemNew', self.new_domain_callback) + self.domain_browser.connect_to_signal('ItemNew', self.new_domain_callback) + self.domain_browser.connect_to_signal('Failure', self.error_callback) else: self.browse_domain(avahi.IF_UNSPEC, avahi.PROTO_UNSPEC, domain) @@ -286,16 +294,21 @@ class Zeroconf: def disconnect(self): if self.connected: self.connected = False - self.service_browser.Free() - self.service_browser = None + if self.service_browser: + self.service_browser.Free() + self.service_browser = None + if self.domain_browser: + self.domain_browser.Free() + self.domain_browser = None self.remove_announce() + self.server = None # refresh txt data of all contacts manually (no callback available) def resolve_all(self): for val in self.contacts.values(): self.server.ResolveService(int(val[C_INTERFACE]), int(val[C_PROTOCOL]), val[C_BARE_NAME], \ self.stype, val[C_DOMAIN], avahi.PROTO_UNSPEC, dbus.UInt32(0),\ - reply_handler=self.service_resolved_all_callback, error_handler=self.print_error_callback) + reply_handler=self.service_resolved_all_callback, error_handler=self.error_callback) def get_contacts(self): return self.contacts @@ -313,7 +326,7 @@ class Zeroconf: txt = avahi.dict_to_txt_array(self.txt) if self.connected and self.entrygroup: - self.entrygroup.UpdateServiceTxt(avahi.IF_UNSPEC, avahi.PROTO_UNSPEC, dbus.UInt32(0), self.name, self.stype,'', txt, reply_handler=self.service_updated_callback, error_handler=self.print_error_callback) + self.entrygroup.UpdateServiceTxt(avahi.IF_UNSPEC, avahi.PROTO_UNSPEC, dbus.UInt32(0), self.name, self.stype,'', txt, reply_handler=self.service_updated_callback, error_handler=self.error_callback) return True else: return False From 56d29dbf998daa8710fff9ca1c6cca894fd81e8a Mon Sep 17 00:00:00 2001 From: Stefan Bethge Date: Mon, 25 Sep 2006 21:45:35 +0000 Subject: [PATCH 072/110] remove groupchat submenu for Local account, remove button in acct window disables acct --- data/glade/zeroconf_context_menu.glade | 28 ++++---------------------- src/config.py | 12 +++++++---- src/roster_window.py | 13 ++++++------ 3 files changed, 19 insertions(+), 34 deletions(-) diff --git a/data/glade/zeroconf_context_menu.glade b/data/glade/zeroconf_context_menu.glade index 80f25c1ae..b6bf84d43 100644 --- a/data/glade/zeroconf_context_menu.glade +++ b/data/glade/zeroconf_context_menu.glade @@ -12,7 +12,7 @@ True - + True gtk-network 1 @@ -25,26 +25,6 @@ - - - True - _Group Chat - True - - - - True - gtk-connect - 1 - 0.5 - 0.5 - 0 - 0 - - - - - True @@ -52,7 +32,7 @@ True - + True gtk-new 1 @@ -68,11 +48,11 @@ True - _Properties... + _Modify Account... True - + True gtk-preferences 1 diff --git a/src/config.py b/src/config.py index ac52033db..30748c007 100644 --- a/src/config.py +++ b/src/config.py @@ -1803,11 +1803,15 @@ class AccountsWindow: dialogs.ErrorDialog(_('Unread events'), _('Read all pending events before removing this account.')) return - if gajim.interface.instances[account].has_key('remove_account'): - gajim.interface.instances[account]['remove_account'].window.present() + if account == gajim.ZEROCONF_ACC_NAME: + w = self.xml.get_widget('enable_zeroconf_checkbutton') + w.set_active(False) else: - gajim.interface.instances[account]['remove_account'] = \ - RemoveAccountWindow(account) + if gajim.interface.instances[account].has_key('remove_account'): + gajim.interface.instances[account]['remove_account'].window.present() + else: + gajim.interface.instances[account]['remove_account'] = \ + RemoveAccountWindow(account) def on_modify_button_clicked(self, widget): '''When modify button is clicked: diff --git a/src/roster_window.py b/src/roster_window.py index a1c275f8e..0ce9cd2dd 100644 --- a/src/roster_window.py +++ b/src/roster_window.py @@ -1849,7 +1849,7 @@ class RosterWindow: account_context_menu = xml.get_widget('zeroconf_context_menu') status_menuitem = xml.get_widget('status_menuitem') - join_group_chat_menuitem =xml.get_widget('join_group_chat_menuitem') + #join_group_chat_menuitem =xml.get_widget('join_group_chat_menuitem') new_message_menuitem = xml.get_widget('new_message_menuitem') zeroconf_properties_menuitem = xml.get_widget('zeroconf_properties_menuitem') sub_menu = gtk.Menu() @@ -1884,16 +1884,17 @@ class RosterWindow: item.connect('activate', self.change_status, account, 'offline') zeroconf_properties_menuitem.connect('activate', self.on_zeroconf_properties, account) - gc_sub_menu = gtk.Menu() # gc is always a submenu - join_group_chat_menuitem.set_submenu(gc_sub_menu) - self.add_bookmarks_list(gc_sub_menu, account) + #gc_sub_menu = gtk.Menu() # gc is always a submenu + #join_group_chat_menuitem.set_submenu(gc_sub_menu) + #self.add_bookmarks_list(gc_sub_menu, account) new_message_menuitem.connect('activate', self.on_new_message_menuitem_activate, account) # make some items insensitive if account is offline if gajim.connections[account].connected < 2: - for widget in [join_group_chat_menuitem, new_message_menuitem]: - widget.set_sensitive(False) + # for widget in [join_group_chat_menuitem, new_message_menuitem]: + # widget.set_sensitive(False) + new_message_menuitem.set_sensitive(False) return account_context_menu From d4663922c75cbb05b89505a98f6cf70b8198e381 Mon Sep 17 00:00:00 2001 From: Dimitur Kirov Date: Tue, 26 Sep 2006 15:55:49 +0000 Subject: [PATCH 073/110] fix reconnect after name collision --- src/common/zeroconf/connection_zeroconf.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/common/zeroconf/connection_zeroconf.py b/src/common/zeroconf/connection_zeroconf.py index f242e6611..36fc38b33 100644 --- a/src/common/zeroconf/connection_zeroconf.py +++ b/src/common/zeroconf/connection_zeroconf.py @@ -224,11 +224,11 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): self.zeroconf.host = self.host self.zeroconf.port = self.port - if self.connection: - return self.connection, '' - if self.zeroconf.connect(): - self.connection = client_zeroconf.ClientZeroconf(self.zeroconf, self) + if not self.connection: + self.connection = client_zeroconf.ClientZeroconf(self.zeroconf, self) + else: + self.zeroconf.announce() self.roster = self.connection.getRoster() self.dispatch('ROSTER', self.roster) @@ -278,6 +278,7 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): self.zeroconf.remove_announce() self.zeroconf.txt = txt2 self.zeroconf.port = port + self.zeroconf.username = self.username self.zeroconf.announce() def change_status(self, show, msg, sync = False, auto = False): From 5fc8cf20f3d005f12a6cf0570d01f239c550121d Mon Sep 17 00:00:00 2001 From: Dimitur Kirov Date: Tue, 26 Sep 2006 15:57:47 +0000 Subject: [PATCH 074/110] merge from trunk --- Changelog | 40 +- README | 16 +- data/glade/gajim_themes_window.glade | 46 -- data/glade/message_window.glade | 4 +- data/glade/preferences_window.glade | 288 +++++--- data/glade/privacy_list_window.glade | 779 ++++++++++++++++++++++ data/glade/privacy_lists_window.glade | 255 +++++++ data/glade/profile_window.glade | 340 ++++++---- data/glade/roster_window.glade | 737 +++++++++++--------- data/glade/systray_context_menu.glade | 12 +- data/glade/vcard_information_window.glade | 84 ++- po/pl.po | 2 +- src/chat_control.py | 9 +- src/common/config.py | 9 +- src/common/connection_handlers.py | 8 +- src/common/helpers.py | 15 + src/common/socks5.py | 10 +- src/common/xmpp/protocol.py | 15 +- src/config.py | 84 ++- src/conversation_textview.py | 15 +- src/dbus_support.py | 16 +- src/dialogs.py | 104 +-- src/disco.py | 194 +++--- src/filetransfers_window.py | 15 +- src/gajim-remote.py | 22 +- src/gajim.py | 57 +- src/gajim_themes_window.py | 9 +- src/groupchat_control.py | 38 +- src/gtkgui_helpers.py | 26 +- src/message_window.py | 16 +- src/music_track_listener.py | 118 ++++ src/notify.py | 18 +- src/profile_window.py | 137 +++- src/remote_control.py | 207 ++---- src/roster_window.py | 118 +++- src/systray.py | 14 +- src/vcard.py | 43 +- 37 files changed, 2791 insertions(+), 1129 deletions(-) create mode 100644 data/glade/privacy_list_window.glade create mode 100644 data/glade/privacy_lists_window.glade create mode 100644 src/music_track_listener.py diff --git a/Changelog b/Changelog index 7856b930b..f21490300 100644 --- a/Changelog +++ b/Changelog @@ -1,14 +1,38 @@ +Gajim 0.11 (XX October 2006) + + * Put your stuff here [each dev put their own please; next time we do this everytime we commit sth major and not in the end] + + * We can now operate on more than one contact in one in time in roster (#1514) + * Connection lost is now a non-intrusive popup + * Try to get contact desired nick when we add him to roster aka User Nickname (JEP-0172) + * Better design of User Profile window, with a progress bar + * New Add User dialog, with possibility to register to transport directly from it + * Completion for "Start Chat" input dialog + * We can now have a different spellchecking language in each chat window. (#2383 and #746) + * Support for Privacy Lists + * Forbid to run multiple instances (but you can use differents profiles) + * We can save avatar with right click on avatar in chat banner + * Use differents colors for nickname colors of occupants in groupchats. + * Ability to show only Join/Leave in groupchats instead of all status changes + * New possibilities to insert nickname of an occupant in groupchats conversations : Tab in an empty line now cycle through nicks, maj+right click->insert nickname, maj+click on name in gc-roster, /names command to show all users presents + + * Fixed bugs when removing or renaming an account with tabs open (#2369 and #2370) + + * FIXME : Ad-Hoc for 0.11 ? + * FIXME : does that work ? not tested : Metacontacts across accounts (#1596) + * Gajim now requires Python 2.4 to run + Gajim 0.10.1 (06 June 2006) - * freeze and lost contacts in roster (#1953) - * popup menus are correctly placed - * high CPU usage on FreeBSD (#1963) - * nickname can contain '|' (#1913) - * update pl, cs, fr translations - * don't play sound, when no event is shown (#1970) - * set gajim icon for history manager + * Freeze and lost contacts in roster (#1953) + * Popup menus are correctly placed + * High CPU usage on FreeBSD (#1963) + * Nickname can contain '|' (#1913) + * Update pl, cs, fr translations + * Don't play sound, when no event is shown (#1970) + * Set gajim icon for history manager * gajim.desktop is generated with translation (#834) - * preventing several TBs and annoyances (r6273, r6275, r6279, r6301, + * Preventing several TBs and annoyances (r6273, r6275, r6279, r6301, r6308, r6311, r6323, r6326, r6327, r6335, r6342, r6346, r6348) Gajim 0.10 (01 May 2006) diff --git a/README b/README index 9f11c8552..5e2ad7468 100644 --- a/README +++ b/README @@ -1,10 +1,10 @@ Welcome and thanks for trying out Gajim. =RUNTIME REQUIREMENTS= -python2.4 (python2.3 should work too) +python2.4 or higher pygtk2.6 or higher python-libglade -pysqlite2 (aka. python-pysqlite2) +pysqlite2 (if you have python 2.5, you already have this) some distros also split too much python standard library. I know SUSE does. In such distros you also need python-xml @@ -29,7 +29,8 @@ notification-daemon (and D-Bus) to get cooler popups D-Bus to have gajim-remote working NOTE TO PACKAGERS: -Gajim is a GTK+ app and not a gnome one. Just do 'make' so you don't require gnomepythonextras +Gajim is a GTK+ app and not a gnome one. +Just do 'make' so you don't require gnomepythonextras which is gnome dep =INSTALLATION PROCEDURE= @@ -65,9 +66,6 @@ you're advised to enable verbose via advanced configuration window. If you don't want to make this permanent, execute gajim with --verbose everytime you want to have verbose output. -Cannot join room with password: -please read the FAQ for the reply on this issue - =FAQ/Wiki= FAQ can be found at http://trac.gajim.org/wiki/GajimFaq Wiki can be found at http://trac.gajim.org/wiki @@ -75,13 +73,13 @@ Wiki can be found at http://trac.gajim.org/wiki That is all, enjoy! -(C) 2003-2005 +(C) 2003-2006 The Gajim Team http://gajim.org PS. -we use original art and parts of sounds and other art from Psi, Gossip, +We use original art and parts of sounds and other art from Psi, Gossip, Gnomebaker, Gaim and some icons from various gnome-icons (mostly Dropline Etiquette) we found at art.gnome.org -If you think we're violating a license please inform us +If you think we're violating a license please inform us. Thank you diff --git a/data/glade/gajim_themes_window.glade b/data/glade/gajim_themes_window.glade index 44d7e381c..9f0dd0092 100644 --- a/data/glade/gajim_themes_window.glade +++ b/data/glade/gajim_themes_window.glade @@ -554,52 +554,6 @@ Banner - - - True - Active - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 1 - 2 - fill - - - - - - - True - True - False - True - - - - 1 - 2 - 1 - 2 - fill - - - - True diff --git a/data/glade/message_window.glade b/data/glade/message_window.glade index ecd51204d..d4678bfd3 100644 --- a/data/glade/message_window.glade +++ b/data/glade/message_window.glade @@ -374,7 +374,7 @@ Status message True - gtk-preferences + gtk-execute 4 0.5 0.5 @@ -916,7 +916,7 @@ topic True - gtk-preferences + gtk-execute 4 0.5 0.5 diff --git a/data/glade/preferences_window.glade b/data/glade/preferences_window.glade index f5aceb5ff..573c182a8 100644 --- a/data/glade/preferences_window.glade +++ b/data/glade/preferences_window.glade @@ -819,7 +819,7 @@ Per type 0.5 0 0 - before_time_entry + scrolledwindow25 PANGO_ELLIPSIZE_NONE -1 False @@ -848,7 +848,7 @@ Per type 0.5 0 0 - after_nickname_entry + scrolledwindow28 PANGO_ELLIPSIZE_NONE -1 False @@ -998,7 +998,7 @@ Per type 0.5 0 0 - after_time_entry + scrolledwindow26 PANGO_ELLIPSIZE_NONE -1 False @@ -1027,7 +1027,7 @@ Per type 0.5 0 0 - before_nickname_entry + scrolledwindow27 PANGO_ELLIPSIZE_NONE -1 False @@ -1043,54 +1043,6 @@ Per type - - - 39 - True - True - True - True - 0 - - True - * - False - - - - 3 - 4 - 0 - 1 - - - - - - - - 40 - True - True - True - True - 0 - - True - * - False - - - - 3 - 4 - 1 - 2 - - - - - True @@ -1132,54 +1084,6 @@ Per type - - - 40 - True - True - True - True - 0 - - True - * - False - - - - 1 - 2 - 1 - 2 - - - - - - - - 40 - True - True - True - True - 0 - - True - * - False - - - - 1 - 2 - 0 - 1 - - - - - True @@ -1298,6 +1202,170 @@ Per type fill + + + + 30 + True + True + GTK_POLICY_NEVER + GTK_POLICY_AUTOMATIC + GTK_SHADOW_IN + GTK_CORNER_TOP_LEFT + + + + True + True + True + False + True + GTK_JUSTIFY_LEFT + GTK_WRAP_CHAR + True + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + 3 + 4 + 0 + 1 + fill + + + + + + + 30 + True + True + GTK_POLICY_NEVER + GTK_POLICY_AUTOMATIC + GTK_SHADOW_IN + GTK_CORNER_TOP_LEFT + + + + True + True + True + False + True + GTK_JUSTIFY_LEFT + GTK_WRAP_CHAR + True + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + 3 + 4 + 1 + 2 + fill + + + + + + + 30 + True + True + GTK_POLICY_NEVER + GTK_POLICY_AUTOMATIC + GTK_SHADOW_IN + GTK_CORNER_TOP_LEFT + + + + True + True + True + False + True + GTK_JUSTIFY_LEFT + GTK_WRAP_CHAR + True + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + 1 + 2 + 1 + 2 + fill + + + + + + + 30 + True + True + GTK_POLICY_NEVER + GTK_POLICY_AUTOMATIC + GTK_SHADOW_IN + GTK_CORNER_TOP_LEFT + + + + True + True + True + False + True + GTK_JUSTIFY_LEFT + GTK_WRAP_CHAR + True + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + 1 + 2 + 0 + 1 + fill + + + 0 @@ -2543,6 +2611,26 @@ Disabled + + + True + True + Set status message to reflect currently playing _music track + True + GTK_RELIEF_NORMAL + True + False + False + True + + + + 0 + False + False + + + True diff --git a/data/glade/privacy_list_window.glade b/data/glade/privacy_list_window.glade new file mode 100644 index 000000000..1f14d6b71 --- /dev/null +++ b/data/glade/privacy_list_window.glade @@ -0,0 +1,779 @@ + + + + + + + 6 + True + Privacy List + GTK_WINDOW_TOPLEVEL + GTK_WIN_POS_NONE + False + False + False + True + False + False + GDK_WINDOW_TYPE_HINT_NORMAL + GDK_GRAVITY_NORTH_WEST + True + False + + + + + 600 + True + False + 0 + + + + True + True + 0 + + + + True + <i>Privacy List</i> + False + True + GTK_JUSTIFY_LEFT + False + False + 0.5 + 0.5 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + False + False + + + + + + True + True + Active for this session + True + GTK_RELIEF_NORMAL + True + False + False + True + + + + 0 + False + False + + + + + + True + True + Active on each startup + True + GTK_RELIEF_NORMAL + True + False + False + True + + + + 0 + False + False + + + + + 0 + False + True + + + + + + True + + + 5 + False + False + + + + + + True + <b>List of rules</b> + False + True + GTK_JUSTIFY_LEFT + False + False + 0.5 + 0.5 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 5 + False + False + + + + + + True + + False + True + + + + 5 + False + True + + + + + + True + True + 0 + + + + 5 + True + True + gtk-add + True + GTK_RELIEF_NORMAL + True + + + + 0 + False + False + + + + + + 5 + True + True + gtk-remove + True + GTK_RELIEF_NORMAL + True + + + + 0 + False + False + + + + + + 6 + True + True + gtk-edit + True + GTK_RELIEF_NORMAL + True + + + + 0 + False + False + + + + + 0 + False + True + + + + + + 5 + False + 0 + + + + True + + + 5 + True + True + + + + + + True + <b>Add / Edit a rule</b> + False + True + GTK_JUSTIFY_LEFT + False + False + 0.5 + 0.5 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 5 + False + False + + + + + + True + False + 0 + + + + True + True + 0 + + + + True + True + Allow + True + GTK_RELIEF_NORMAL + True + False + False + True + + + 0 + False + False + + + + + + True + True + Deny + True + GTK_RELIEF_NORMAL + True + False + False + True + edit_allow_radiobutton + + + 0 + False + False + + + + + 0 + True + True + + + + + + True + True + 0 + + + + 5 + True + False + 0 + + + + True + True + JabberID + True + GTK_RELIEF_NORMAL + True + False + False + True + + + 5 + False + False + + + + + + True + True + True + True + 0 + + True + â— + False + + + 5 + True + True + + + + + 0 + True + True + + + + + + 5 + True + False + 0 + + + + True + True + all in the group + True + GTK_RELIEF_NORMAL + True + False + False + True + edit_type_jabberid_radiobutton + + + 5 + False + False + + + + + + True + + False + True + + + 5 + True + True + + + + + 0 + True + True + + + + + + 5 + True + False + 0 + + + + True + True + all by subscription + True + GTK_RELIEF_NORMAL + True + False + False + True + edit_type_jabberid_radiobutton + + + 5 + False + False + + + + + + True + none +both +from +to + False + True + + + 5 + True + True + + + + + 0 + True + True + + + + + + 10 + True + False + 0 + + + + True + True + All + True + GTK_RELIEF_NORMAL + True + False + False + True + edit_type_jabberid_radiobutton + + + 0 + False + False + + + + + 0 + False + False + + + + + 0 + True + True + + + + + + True + True + 0 + + + + True + True + to send me messages + True + GTK_RELIEF_NORMAL + True + False + False + True + + + 0 + False + False + + + + + + True + True + to send me queries + True + GTK_RELIEF_NORMAL + True + False + False + True + + + 0 + False + False + + + + + + True + True + to view my status + True + GTK_RELIEF_NORMAL + True + False + False + True + + + 0 + False + False + + + + + + True + True + to send me status + True + GTK_RELIEF_NORMAL + True + False + False + True + + + 0 + False + False + + + + + 0 + True + True + + + + + 0 + True + True + + + + + + True + True + 0 + + + + True + False + 0 + + + + True + Order: + False + False + GTK_JUSTIFY_LEFT + False + False + 0.5 + 0.5 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 5 + False + False + + + + + + True + True + 1 + 0 + False + GTK_UPDATE_ALWAYS + False + False + 1 0 100 1 10 10 + + + 0 + False + True + + + + + 0 + True + True + + + + + + 5 + True + True + gtk-save + True + GTK_RELIEF_NORMAL + True + + + + 0 + False + False + + + + + 0 + True + True + + + + + 0 + True + True + + + + + + True + + + 0 + False + True + + + + + + True + True + 0 + + + + 5 + True + True + gtk-refresh + True + GTK_RELIEF_NORMAL + True + + + + 0 + False + False + + + + + + 5 + True + True + gtk-close + True + GTK_RELIEF_NORMAL + True + + + + 0 + False + False + + + + + 0 + False + True + + + + + + + diff --git a/data/glade/privacy_lists_window.glade b/data/glade/privacy_lists_window.glade new file mode 100644 index 000000000..7a7470123 --- /dev/null +++ b/data/glade/privacy_lists_window.glade @@ -0,0 +1,255 @@ + + + + + + + 12 + True + window1 + GTK_WINDOW_TOPLEVEL + GTK_WIN_POS_NONE + False + True + False + True + False + False + GDK_WINDOW_TYPE_HINT_NORMAL + GDK_GRAVITY_NORTH_WEST + True + False + + + + + True + False + 0 + + + + True + Server-based Privacy Lists + False + False + GTK_JUSTIFY_LEFT + False + False + 0.5 + 0.5 + 0 + 5 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + False + False + + + + + + 4 + True + + False + True + + + 0 + True + True + + + + + + True + True + 0 + + + + 5 + True + True + gtk-delete + True + GTK_RELIEF_NORMAL + True + + + + 0 + False + False + + + + + + 5 + True + True + gtk-open + True + GTK_RELIEF_NORMAL + True + + + + 0 + False + False + + + + + 0 + True + True + + + + + + True + + + 5 + True + True + + + + + + True + Create your own Privacy Lists + False + False + GTK_JUSTIFY_LEFT + False + False + 0.5 + 0.5 + 0 + 5 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + False + False + + + + + + True + True + True + True + 0 + + True + â— + False + + + 4 + False + False + + + + + + 5 + True + True + gtk-new + True + GTK_RELIEF_NORMAL + True + + + + 0 + False + False + + + + + + True + + + 5 + True + True + + + + + + True + True + 0 + + + + 5 + True + True + gtk-refresh + True + GTK_RELIEF_NORMAL + True + + + + 0 + False + False + + + + + + 5 + True + True + gtk-close + True + GTK_RELIEF_NORMAL + True + + + + 0 + False + False + + + + + 0 + True + True + + + + + + + diff --git a/data/glade/profile_window.glade b/data/glade/profile_window.glade index aeaaa8518..723df7548 100644 --- a/data/glade/profile_window.glade +++ b/data/glade/profile_window.glade @@ -4,7 +4,6 @@ - 12 Personal Information GTK_WINDOW_TOPLEVEL GTK_WIN_POS_NONE @@ -29,6 +28,7 @@ + 6 True True True @@ -1016,7 +1016,7 @@ - 0 + 1 4 6 7 @@ -1024,6 +1024,34 @@ expand + + + + True + Avatar: + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0.5 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + 1 + 6 + 7 + fill + + + False @@ -1800,159 +1828,201 @@ - + + 6 True - GTK_BUTTONBOX_END - 12 + False + 0 - + True - True - True - GTK_RELIEF_NORMAL - True - - - - - True - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - gtk-go-up - 4 - 0 - 0 - 0 - 0 - - - 0 - False - False - - - - - - True - _Publish - True - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - + GTK_PROGRESS_LEFT_TO_RIGHT + 0 + 0.10000000149 + PANGO_ELLIPSIZE_NONE + + 0 + False + False + - + True - True - True - GTK_RELIEF_NORMAL - True - + GTK_BUTTONBOX_END + 12 - + True - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 + True + True + GTK_RELIEF_NORMAL + True + - + True - False - 2 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 - + True - gtk-go-down - 4 - 0 - 0 - 0 - 0 - - - 0 - False - False - - + False + 2 - - - True - _Retrieve - True - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 + + + True + gtk-go-up + 4 + 0 + 0 + 0 + 0 + + + 0 + False + False + + + + + + True + _Publish + True + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0.5 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + False + False + + - - 0 - False - False - + + + + True + True + True + GTK_RELIEF_NORMAL + True + + + + + True + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + True + False + 2 + + + + True + gtk-go-down + 4 + 0 + 0 + 0 + 0 + + + 0 + False + False + + + + + + True + _Retrieve + True + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0.5 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + False + False + + + + + + + + + + + + True + True + True + gtk-close + True + GTK_RELIEF_NORMAL + True + + + + + 0 + True + True + @@ -1961,6 +2031,18 @@ True + + + + True + False + + + 0 + False + False + + diff --git a/data/glade/roster_window.glade b/data/glade/roster_window.glade index 94c8b896a..d1c9cf194 100644 --- a/data/glade/roster_window.glade +++ b/data/glade/roster_window.glade @@ -1,328 +1,413 @@ - - - + + + - - 85 - 200 - Gajim - roster - 150 - 400 - - - - - - - True - - - True - - - True - _Actions - True - - - - - - True - _Start Chat - True - - - True - 0,000000 - 0,000000 - gtk-jump-to - 1 - - - - - - - True - _Group Chat - True - - - True - 0,000000 - 0,000000 - gtk-connect - 1 - - - - - - - True - - - - - True - Add _Contact - True - - - True - 0,000000 - 0,000000 - gtk-add - 1 - - - - - - - True - _Discover Services - True - - - True - 0,000000 - 0,000000 - gtk-find - 1 - - - - - - - True - _Advanced - True - - - - - True - Show _Offline Contacts - True - - - - - - - True - - - - - True - _Quit - True - - - - - True - 0,000000 - 0,000000 - gtk-quit - 1 - - - - - - - - - - - True - _Edit - True - - - - - - True - A_ccounts - True - - - - - True - 0,000000 - 0,000000 - gtk-network - 1 - - - - - - - True - File _Transfers - True - - - - - True - 0,000000 - 0,000000 - 1 - - - - - - - True - Profile, Avatar - True - - - True - 0,000000 - 0,000000 - gtk-properties - 1 - - - - - - - True - - - - - True - _Preferences - True - - - - - True - 0,000000 - 0,000000 - gtk-preferences - 1 - - - - - - - - - - - True - _Help - True - - - - - True - Help online - _Contents - True - - - - True - 0,000000 - 0,000000 - gtk-help - 1 - - - - - - - True - Frequently Asked Questions (online) - _FAQ - True - - - - - - True - gtk-about - True - True - - - - - - - - - - False - False - - - - - True - True - 2 - GTK_POLICY_NEVER - GTK_POLICY_AUTOMATIC - - - True - True - False - True - - - - - - - - - - - - - - 1 - - - - - True - - - - False - 2 - - - - - + + + 85 + 200 + Gajim + GTK_WINDOW_TOPLEVEL + GTK_WIN_POS_NONE + False + 150 + 400 + True + False + roster + True + False + False + GDK_WINDOW_TYPE_HINT_NORMAL + GDK_GRAVITY_NORTH_WEST + True + False + + + + + + + + True + False + 0 + + + + True + GTK_PACK_DIRECTION_LTR + GTK_PACK_DIRECTION_LTR + + + + True + _Actions + True + + + + + + + + True + _Start Chat + True + + + + True + gtk-jump-to + 1 + 0.5 + 0.5 + 0 + 0 + + + + + + + + True + _Group Chat + True + + + + True + gtk-connect + 1 + 0.5 + 0.5 + 0 + 0 + + + + + + + + True + + + + + + True + Add _Contact + True + + + + True + gtk-add + 1 + 0.5 + 0.5 + 0 + 0 + + + + + + + + True + _Discover Services + True + + + + True + gtk-find + 1 + 0.5 + 0.5 + 0 + 0 + + + + + + + + True + _Advanced + True + + + + + + True + Show _Offline Contacts + True + False + + + + + + + + True + + + + + + True + _Quit + True + + + + + + True + gtk-quit + 1 + 0.5 + 0.5 + 0 + 0 + + + + + + + + + + + + True + _Edit + True + + + + + + + + True + A_ccounts + True + + + + + + True + gtk-network + 1 + 0.5 + 0.5 + 0 + 0 + + + + + + + + True + File _Transfers + True + + + + + + True + gtk-file + 1 + 0.5 + 0.5 + 0 + 0 + + + + + + + + True + Profile, Avatar + True + + + + True + gtk-properties + 1 + 0.5 + 0.5 + 0 + 0 + + + + + + + + True + + + + + + True + _Preferences + True + + + + + + True + gtk-preferences + 1 + 0.5 + 0.5 + 0 + 0 + + + + + + + + + + + + True + _Help + True + + + + + + + True + Help online + _Contents + True + + + + + True + gtk-help + 1 + 0.5 + 0.5 + 0 + 0 + + + + + + + + True + Frequently Asked Questions (online) + _FAQ + True + + + + + + + True + gtk-about + True + + + + + + + + + + 0 + False + False + + + + + + 2 + True + True + GTK_POLICY_NEVER + GTK_POLICY_AUTOMATIC + GTK_SHADOW_NONE + GTK_CORNER_TOP_LEFT + + + + True + True + False + False + True + True + False + False + False + + + + + + + + + + + + + + 0 + True + True + + + + + + True + False + True + + + + 0 + False + True + + + + + + diff --git a/data/glade/systray_context_menu.glade b/data/glade/systray_context_menu.glade index 0f3aaec88..c82aec544 100644 --- a/data/glade/systray_context_menu.glade +++ b/data/glade/systray_context_menu.glade @@ -2,6 +2,7 @@ + @@ -11,7 +12,7 @@ True - + True gtk-network 1 @@ -31,7 +32,7 @@ True - + True gtk-jump-to 1 @@ -51,7 +52,7 @@ True - + True gtk-connect 1 @@ -71,7 +72,7 @@ True - + True gtk-new 1 @@ -107,7 +108,7 @@ - + True gtk-home 1 @@ -144,4 +145,5 @@ + diff --git a/data/glade/vcard_information_window.glade b/data/glade/vcard_information_window.glade index 7b9eed488..3b88416c0 100644 --- a/data/glade/vcard_information_window.glade +++ b/data/glade/vcard_information_window.glade @@ -652,7 +652,7 @@ - + 12 True 6 @@ -1640,34 +1640,6 @@ - - - True - True - - False - False - GTK_JUSTIFY_LEFT - False - True - 0 - 0 - 5 - 5 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 1 - 4 - 3 - 4 - - - - True @@ -2581,6 +2553,60 @@ True + + + + True + False + 0 + + + + True + GTK_PROGRESS_LEFT_TO_RIGHT + 0 + 0.10000000149 + PANGO_ELLIPSIZE_NONE + + + 0 + False + False + + + + + + True + GTK_BUTTONBOX_END + 0 + + + + True + True + True + gtk-close + True + GTK_RELIEF_NORMAL + True + + + + + + 0 + True + True + + + + + 0 + True + True + + diff --git a/po/pl.po b/po/pl.po index 54bdb4a3b..6303d7024 100644 --- a/po/pl.po +++ b/po/pl.po @@ -1334,7 +1334,7 @@ msgstr "W każdej _wiadomoÅ›ci" #: ../data/glade/preferences_window.glade.h:58 msgid "One message _window:" -msgstr "WyÅ›lij wiadomość i _zamknij okno" +msgstr "Grupuj okna:" #: ../data/glade/preferences_window.glade.h:59 msgid "Play _sounds" diff --git a/src/chat_control.py b/src/chat_control.py index b9cf730a7..7b19fc563 100644 --- a/src/chat_control.py +++ b/src/chat_control.py @@ -196,7 +196,6 @@ class ChatControlBase(MessageControl): self.msg_textview.lang = lang spell.set_language(lang) except (gobject.GError, RuntimeError), msg: - #FIXME: add a ui for this use spell.set_language() dialogs.ErrorDialog(unicode(msg), _('If that is not your language ' 'for which you want to highlight misspelled words, then please ' 'set your $LANG as appropriate. Eg. for French do export ' @@ -1018,7 +1017,7 @@ class ChatControl(ChatControlBase): acct_info = '' self.account_displayed = False for ctrl in self.parent_win.controls(): - if ctrl == self: + if ctrl == self or ctrl.type_id == 'gc': continue if self.contact.get_shown_name() == ctrl.contact.get_shown_name()\ and not avoid_showing_account_too: @@ -1276,9 +1275,6 @@ class ChatControl(ChatControlBase): elif chatstate == 'paused': color = gajim.config.get_per('themes', theme, 'state_paused_color') - else: - color = gajim.config.get_per('themes', theme, - 'state_active_color') if color: # We set the color for when it's the current tab or not color = gtk.gdk.colormap_get_system().alloc_color(color) @@ -1287,6 +1283,9 @@ class ChatControl(ChatControlBase): if chatstate in ('inactive', 'gone') and\ self.parent_win.get_active_control() != self: color = self.lighten_color(color) + elif chatstate == 'active' : # active, get color from gtk + color = self.parent_win.notebook.style.fg[gtk.STATE_ACTIVE] + name = self.contact.get_shown_name() if self.resource: diff --git a/src/common/config.py b/src/common/config.py index 1a0f18865..08b198644 100644 --- a/src/common/config.py +++ b/src/common/config.py @@ -37,6 +37,8 @@ opt_bool = [ 'boolean', 0 ] opt_color = [ 'color', '^(#[0-9a-fA-F]{6})|()$' ] opt_one_window_types = ['never', 'always', 'peracct', 'pertype'] +DEFAULT_ICONSET = 'dcraven' + class Config: __options = { @@ -67,7 +69,7 @@ class Config: 'last_status_msg_invisible': [ opt_str, '' ], 'last_status_msg_offline': [ opt_str, '' ], 'trayicon': [ opt_bool, True, '', True ], - 'iconset': [ opt_str, 'dcraven', '', True ], + 'iconset': [ opt_str, DEFAULT_ICONSET, '', True ], 'use_transports_iconsets': [ opt_bool, True, '', True ], 'inmsgcolor': [ opt_color, '#a34526', '', True ], 'outmsgcolor': [ opt_color, '#164e6f', '', True ], @@ -126,6 +128,7 @@ class Config: 'before_nickname': [ opt_str, '' ], 'after_nickname': [ opt_str, ':' ], 'send_os_info': [ opt_bool, True ], + 'set_status_msg_from_current_music_track': [ opt_bool, False ], 'notify_on_new_gmail_email': [ opt_bool, True ], 'notify_on_new_gmail_email_extra': [ opt_bool, False ], 'usegpg': [ opt_bool, False, '', True ], @@ -188,7 +191,7 @@ class Config: 'restored_messages_color': [opt_str, 'grey'], 'restored_messages_small': [opt_bool, True, _('If True, restored messages will use a smaller font than the default one.')], 'hide_avatar_of_transport': [opt_bool, False, _('Don\'t show avatar for the transport itself.')], - 'roster_window_skip_taskbar': [opt_bool, False], + 'roster_window_skip_taskbar': [opt_bool, False, _('Don\'t show roster in the system taskbar.')], 'use_urgency_hint': [opt_bool, True, _('If True and installed GTK+ and PyGTK versions are at least 2.8, make the window flash (the default behaviour in most Window Managers) when holding pending events.')], 'notification_timeout': [opt_int, 5], 'send_sha_in_gc_presence': [opt_bool, True, _('Jabberd1.4 does not like sha info when one join a password protected room. Turn this option to False to stop sending sha info in group chat presences.')], @@ -290,8 +293,6 @@ class Config: 'bannerfontattrs': [ opt_str, 'B', '', True ], # http://www.pitt.edu/~nisg/cis/web/cgi/rgb.html - # FIXME: not black but the default color from gtk+ theme - 'state_active_color': [ opt_color, 'black' ], 'state_inactive_color': [ opt_color, 'grey62' ], 'state_composing_color': [ opt_color, 'green4' ], 'state_paused_color': [ opt_color, 'mediumblue' ], diff --git a/src/common/connection_handlers.py b/src/common/connection_handlers.py index dc15c9b8e..c29cf539a 100644 --- a/src/common/connection_handlers.py +++ b/src/common/connection_handlers.py @@ -175,7 +175,7 @@ class ConnectionBytestream: except socket.gaierror: self.dispatch('ERROR', (_('Wrong host'), _('The host you configured as the ft_override_host_to_send advanced option is not valid, so ignored.'))) ft_override_host_to_send = self.peerhost[0] - listener = gajim.socks5queue.start_listener(self.peerhost[0], port, + listener = gajim.socks5queue.start_listener(port, sha_str, self._result_socks5_sid, file_props['sid']) if listener == None: file_props['error'] = -5 @@ -1134,6 +1134,12 @@ class ConnectionHandlers(ConnectionVcard, ConnectionBytestream, ConnectionDisco) raise common.xmpp.NodeProcessed def _ErrorCB(self, con, iq_obj): + gajim.log.debug('ErrorCB') + if iq_obj.getQueryNS() == common.xmpp.NS_VERSION: + who = helpers.get_full_jid_from_iq(iq_obj) + jid_stripped, resource = gajim.get_room_and_nick_from_fjid(who) + self.dispatch('OS_INFO', (jid_stripped, resource, '', '')) + return errmsg = iq_obj.getErrorMsg() errcode = iq_obj.getErrorCode() jid_from = helpers.get_full_jid_from_iq(iq_obj) diff --git a/src/common/helpers.py b/src/common/helpers.py index 1226f2cd5..1f3a7206b 100644 --- a/src/common/helpers.py +++ b/src/common/helpers.py @@ -290,6 +290,21 @@ def get_uf_role(role, plural = False): else: role_name = _('Visitor') return role_name + +def get_uf_affiliation(affiliation): + '''Get a nice and translated affilition for muc''' + if affiliation == 'none': + affiliation_name = Q_('?Group Chat Contact Affiliation:None') + elif affiliation == 'owner': + affiliation_name = _('Owner') + elif affiliation == 'admin': + affiliation_name = _('Administrator') + elif affiliation == 'member': + affiliation_name = _('Member') + else: # Argl ! An unknown affiliation ! + affiliation_name = affiliation.capitalize() + return affiliation_name + def get_sorted_keys(adict): keys = adict.keys() diff --git a/src/common/socks5.py b/src/common/socks5.py index 6e472e1b8..26d8e5672 100644 --- a/src/common/socks5.py +++ b/src/common/socks5.py @@ -74,13 +74,13 @@ class SocksQueue: self.on_success = None self.on_failure = None - def start_listener(self, host, port, sha_str, sha_handler, sid): + def start_listener(self, port, sha_str, sha_handler, sid): ''' start waiting for incomming connections on (host, port) and do a socks5 authentication using sid for generated sha ''' self.sha_handlers[sha_str] = (sha_handler, sid) if self.listener == None: - self.listener = Socks5Listener(self.idlequeue, host, port) + self.listener = Socks5Listener(self.idlequeue, port) self.listener.queue = self self.listener.bind() if self.listener.started is False: @@ -790,12 +790,12 @@ class Socks5Sender(Socks5, IdleObject): self.queue.remove_sender(self.queue_idx, False) class Socks5Listener(IdleObject): - def __init__(self, idlequeue, host, port): - ''' handle all incomming connections on (host, port) + def __init__(self, idlequeue, port): + ''' handle all incomming connections on (0.0.0.0, port) This class implements IdleObject, but we will expect only pollin events though ''' - self.host, self.port = host, port + self.port = port self.queue_idx = -1 self.idlequeue = idlequeue self.queue = None diff --git a/src/common/xmpp/protocol.py b/src/common/xmpp/protocol.py index 2ac25069d..b9d2ad9ff 100644 --- a/src/common/xmpp/protocol.py +++ b/src/common/xmpp/protocol.py @@ -19,7 +19,7 @@ Protocol module contains tools that is needed for processing of xmpp-related data structures. """ -from simplexml import Node,ustr +from simplexml import Node,NodeBuilder,ustr import time NS_ACTIVITY ='http://jabber.org/protocol/activity' # JEP-0108 NS_ADDRESS ='http://jabber.org/protocol/address' # JEP-0033 @@ -94,6 +94,7 @@ NS_VCARD_UPDATE =NS_VCARD+':x:update' NS_VERSION ='jabber:iq:version' NS_WAITINGLIST ='http://jabber.org/protocol/waitinglist' # JEP-0130 NS_XHTML_IM ='http://jabber.org/protocol/xhtml-im' # JEP-0071 +NS_XHTML = 'http://www.w3.org/1999/xhtml' # " NS_DATA_LAYOUT ='http://jabber.org/protocol/xdata-layout' # JEP-0141 NS_DATA_VALIDATE='http://jabber.org/protocol/xdata-validate' # JEP-0122 NS_XMPP_STREAMS ='urn:ietf:params:xml:ns:xmpp-streams' @@ -385,16 +386,21 @@ class Protocol(Node): class Message(Protocol): """ XMPP Message stanza - "push" mechanism.""" - def __init__(self, to=None, body=None, typ=None, subject=None, attrs={}, frm=None, payload=[], timestamp=None, xmlns=NS_CLIENT, node=None): + def __init__(self, to=None, body=None, xhtml=None, typ=None, subject=None, attrs={}, frm=None, payload=[], timestamp=None, xmlns=NS_CLIENT, node=None): """ Create message object. You can specify recipient, text of message, type of message any additional attributes, sender of the message, any additional payload (f.e. jabber:x:delay element) and namespace in one go. Alternatively you can pass in the other XML object as the 'node' parameted to replicate it as message. """ Protocol.__init__(self, 'message', to=to, typ=typ, attrs=attrs, frm=frm, payload=payload, timestamp=timestamp, xmlns=xmlns, node=node) if body: self.setBody(body) + if xhtml: self.setXHTML(xhtml) if subject: self.setSubject(subject) def getBody(self): """ Returns text of the message. """ return self.getTagData('body') + def getXHTML(self): + """ Returns serialized xhtml-im body text of the message. """ + xhtml = self.getTag('html') + return str(xhtml.getTag('body')) def getSubject(self): """ Returns subject of the message. """ return self.getTagData('subject') @@ -404,6 +410,11 @@ class Message(Protocol): def setBody(self,val): """ Sets the text of the message. """ self.setTagData('body',val) + def setXHTML(self,val): + """ Sets the xhtml text of the message (JEP-0071). + The parameter is the "inner html" to the body.""" + dom = NodeBuilder(val) + self.setTag('html',namespace=NS_XHTML_IM).setTag('body',namespace=NS_XHTML).addChild(node=dom.getDom()) def setSubject(self,val): """ Sets the subject of the message. """ self.setTagData('subject',val) diff --git a/src/config.py b/src/config.py index 30748c007..312b13408 100644 --- a/src/config.py +++ b/src/config.py @@ -1,7 +1,7 @@ ## config.py ## ## Copyright (C) 2003-2006 Yann Le Boulanger -## Copyright (C) 2005-2006 Nikos Kouremenos +## Copyright (C) 2005-2006 Nikos Kouremenos ## Copyright (C) 2005 Dimitur Kirov ## Copyright (C) 2003-2005 Vincent Hanquez ## @@ -182,7 +182,7 @@ class PreferencesWindow: theme = config_theme.replace('_', ' ') model.append([theme]) if gajim.config.get('roster_theme') == config_theme: - theme_combobox.set_active(i) + theme_combobox.set_active(i) i += 1 self.on_theme_combobox_changed(theme_combobox) @@ -212,19 +212,23 @@ class PreferencesWindow: #before time st = gajim.config.get('before_time') - self.xml.get_widget('before_time_entry').set_text(st) + st = helpers.from_one_line(st) + self.xml.get_widget('before_time_textview').get_buffer().set_text(st) #after time st = gajim.config.get('after_time') - self.xml.get_widget('after_time_entry').set_text(st) + st = helpers.from_one_line(st) + self.xml.get_widget('after_time_textview').get_buffer().set_text(st) #before nickname st = gajim.config.get('before_nickname') - self.xml.get_widget('before_nickname_entry').set_text(st) + st = helpers.from_one_line(st) + self.xml.get_widget('before_nickname_textview').get_buffer().set_text(st) #after nickanme st = gajim.config.get('after_nickname') - self.xml.get_widget('after_nickname_entry').set_text(st) + st = helpers.from_one_line(st) + self.xml.get_widget('after_nickname_textview').get_buffer().set_text(st) #Color for incomming messages colSt = gajim.config.get('inmsgcolor') @@ -455,12 +459,18 @@ class PreferencesWindow: # send os info st = gajim.config.get('send_os_info') self.xml.get_widget('send_os_info_checkbutton').set_active(st) + + # set status msg from currently playing music track + st = gajim.config.get('set_status_msg_from_current_music_track') + self.xml.get_widget( + 'set_status_msg_from_current_music_track_checkbutton').set_active(st) # Notify user of new gmail e-mail messages, # only show checkbox if user has a gtalk account frame_gmail = self.xml.get_widget('frame_gmail') notify_gmail_checkbutton = self.xml.get_widget('notify_gmail_checkbutton') - notify_gmail_extra_checkbutton = self.xml.get_widget('notify_gmail_extra_checkbutton') + notify_gmail_extra_checkbutton = self.xml.get_widget( + 'notify_gmail_extra_checkbutton') frame_gmail.set_no_show_all(True) for account in gajim.config.get_per('accounts'): @@ -512,6 +522,8 @@ class PreferencesWindow: gajim.interface.systray.change_status(show) else: gajim.config.set('trayicon', False) + if not gajim.interface.roster.window.get_property('visible'): + gajim.interface.roster.window.present() gajim.interface.hide_systray() gajim.config.set('show_roster_on_startup', True) # no tray, show roster! gajim.interface.roster.draw_roster() @@ -523,7 +535,7 @@ class PreferencesWindow: def on_sort_by_show_checkbutton_toggled(self, widget): self.on_checkbutton_toggled(widget, 'sort_by_show') gajim.interface.roster.draw_roster() - + def on_show_status_msgs_in_roster_checkbutton_toggled(self, widget): self.on_checkbutton_toggled(widget, 'show_status_msgs_in_roster') gajim.interface.roster.draw_roster() @@ -643,9 +655,9 @@ class PreferencesWindow: def _set_sensitivity_for_before_after_time_widgets(self, sensitive): self.xml.get_widget('before_time_label').set_sensitive(sensitive) - self.xml.get_widget('before_time_entry').set_sensitive(sensitive) + self.xml.get_widget('before_time_textview').set_sensitive(sensitive) self.xml.get_widget('after_time_label').set_sensitive(sensitive) - self.xml.get_widget('after_time_entry').set_sensitive(sensitive) + self.xml.get_widget('after_time_textview').set_sensitive(sensitive) def on_time_never_radiobutton_toggled(self, widget): if widget.get_active(): @@ -665,20 +677,33 @@ class PreferencesWindow: self._set_sensitivity_for_before_after_time_widgets(True) gajim.interface.save_config() - def on_before_time_entry_focus_out_event(self, widget, event): - gajim.config.set('before_time', widget.get_text().decode('utf-8')) + def _get_textview_text(self, tv): + buffer = tv.get_buffer() + begin, end = buffer.get_bounds() + return buffer.get_text(begin, end).decode('utf-8') + + def on_before_time_textview_focus_out_event(self, widget, event): + text = self._get_textview_text(widget) + text = helpers.to_one_line(text) + gajim.config.set('before_time', text) gajim.interface.save_config() - def on_after_time_entry_focus_out_event(self, widget, event): - gajim.config.set('after_time', widget.get_text().decode('utf-8')) + def on_after_time_textview_focus_out_event(self, widget, event): + text = self._get_textview_text(widget) + text = helpers.to_one_line(text) + gajim.config.set('after_time', text) gajim.interface.save_config() - def on_before_nickname_entry_focus_out_event(self, widget, event): - gajim.config.set('before_nickname', widget.get_text().decode('utf-8')) + def on_before_nickname_textview_focus_out_event(self, widget, event): + text = self._get_textview_text(widget) + text = helpers.to_one_line(text) + gajim.config.set('before_nickname', text) gajim.interface.save_config() - def on_after_nickname_entry_focus_out_event(self, widget, event): - gajim.config.set('after_nickname', widget.get_text().decode('utf-8')) + def on_after_nickname_textview_focus_out_event(self, widget, event): + text = self._get_textview_text(widget) + text = helpers.to_one_line(text) + gajim.config.set('after_nickname', text) gajim.interface.save_config() def update_text_tags(self): @@ -1064,6 +1089,13 @@ class PreferencesWindow: gajim.interface.instances['advanced_config'] = \ dialogs.AdvancedConfigurationWindow() + def set_status_msg_from_current_music_track_checkbutton_toggled(self, + widget): + self.on_checkbutton_toggled(widget, + 'set_status_msg_from_current_music_track') + gajim.interface.roster.enable_syncing_status_msg_from_current_music_track( + widget.get_active()) + #---------- AccountModificationWindow class -------------# class AccountModificationWindow: '''Class for account informations''' @@ -1097,11 +1129,12 @@ class AccountModificationWindow: '''set or unset sensitivity of widgets when widget is toggled''' for w in widgets: w.set_sensitive(widget.get_active()) - + def init_account_gpg(self): keyid = gajim.config.get_per('accounts', self.account, 'keyid') keyname = gajim.config.get_per('accounts', self.account, 'keyname') - savegpgpass = gajim.config.get_per('accounts', self.account,'savegpgpass') + savegpgpass = gajim.config.get_per('accounts', self.account, + 'savegpgpass') if not keyid or not gajim.config.get('usegpg'): return @@ -1358,8 +1391,7 @@ class AccountModificationWindow: gajim.events.change_account_name(self.account, name) # change account variable for chat / gc controls - for ctrl in gajim.interface.msg_win_mgr.get_controls(): - ctrl.account = name + gajim.interface.msg_win_mgr.change_account_name(self.account, name) # upgrade account variable in opened windows for kind in ('infos', 'disco', 'gc_config'): for j in gajim.interface.instances[name][kind]: @@ -1857,6 +1889,7 @@ class AccountsWindow: else: gajim.interface.roster.regroup = False gajim.interface.roster.draw_roster() + def on_enable_zeroconf_checkbutton_toggled(self, widget): if gajim.config.get('enable_zeroconf'): @@ -2987,9 +3020,6 @@ _('You can set advanced account options by pressing Advanced button, or later by con = connection.Connection(self.account) con.password = password - if not savepass: - password = "" - config = {} config['name'] = login config['hostname'] = server @@ -3018,6 +3048,10 @@ _('You can set advanced account options by pressing Advanced button, or later by def create_vars(self, config): gajim.config.add_per('accounts', self.account) + + if not config['savepass']: + config['password'] = '' + for opt in config: gajim.config.set_per('accounts', self.account, opt, config[opt]) diff --git a/src/conversation_textview.py b/src/conversation_textview.py index 888c9d2b3..daf1fc7c3 100644 --- a/src/conversation_textview.py +++ b/src/conversation_textview.py @@ -138,6 +138,9 @@ class ConversationTextview: self.focus_out_end_iter_offset = None self.line_tooltip = tooltips.BaseTooltip() + + path_to_file = os.path.join(gajim.DATA_DIR, 'pixmaps', 'muc_separator.png') + self.focus_out_line_pixbuf = gtk.gdk.pixbuf_new_from_file(path_to_file) def del_handlers(self): for i in self.handlers.keys(): @@ -230,19 +233,14 @@ class ConversationTextview: end_iter_for_previous_line) # add the new focus out line - # FIXME: Why is this loaded from disk everytime - path_to_file = os.path.join(gajim.DATA_DIR, 'pixmaps', 'muc_separator.png') - focus_out_line_pixbuf = gtk.gdk.pixbuf_new_from_file(path_to_file) end_iter = buffer.get_end_iter() buffer.insert(end_iter, '\n') - buffer.insert_pixbuf(end_iter, focus_out_line_pixbuf) + buffer.insert_pixbuf(end_iter, self.focus_out_line_pixbuf) end_iter = buffer.get_end_iter() before_img_iter = end_iter.copy() before_img_iter.backward_char() # one char back (an image also takes one char) buffer.apply_tag_by_name('focus-out-line', before_img_iter, end_iter) - #FIXME: remove this workaround when bug is fixed - # c http://bugzilla.gnome.org/show_bug.cgi?id=318569 self.allow_focus_out_line = False @@ -562,6 +560,7 @@ class ConversationTextview: img.show() #add with possible animation self.tv.add_child_at_anchor(img, anchor) + #FIXME: one day, somehow sync with regexp in gajim.py elif special_text.startswith('http://') or \ special_text.startswith('www.') or \ special_text.startswith('ftp://') or \ @@ -664,7 +663,9 @@ class ConversationTextview: current_print_time = gajim.config.get('print_time') if current_print_time == 'always' and kind != 'info': before_str = gajim.config.get('before_time') + before_str = helpers.from_one_line(before_str) after_str = gajim.config.get('after_time') + after_str = helpers.from_one_line(after_str) # get difference in days since epoch (86400 = 24*3600) # number of days since epoch for current time (in GMT) - # number of days since epoch for message (in GMT) @@ -748,7 +749,9 @@ class ConversationTextview: name_tags = other_tags_for_name[:] # create a new list name_tags.append(kind) before_str = gajim.config.get('before_nickname') + before_str = helpers.from_one_line(before_str) after_str = gajim.config.get('after_nickname') + after_str = helpers.from_one_line(after_str) format = before_str + name + after_str + ' ' buffer.insert_with_tags_by_name(end_iter, format, *name_tags) diff --git a/src/dbus_support.py b/src/dbus_support.py index 59e751c41..d4f7542a3 100644 --- a/src/dbus_support.py +++ b/src/dbus_support.py @@ -23,25 +23,17 @@ from common import exceptions try: import dbus - version = getattr(dbus, 'version', (0, 20, 0)) - supported = True + import dbus.service + import dbus.glib + supported = True # does use have D-Bus bindings? except ImportError: - version = (0, 0, 0) supported = False if not os.name == 'nt': # only say that to non Windows users print _('D-Bus python bindings are missing in this computer') print _('D-Bus capabilities of Gajim cannot be used') - -# dbus 0.23 leads to segfault with threads_init() -if sys.version[:4] >= '2.4' and version[1] < 30: - supported = False - -if version >= (0, 41, 0): - import dbus.service - import dbus.glib # cause dbus 0.35+ doesn't return signal replies without it class SessionBus: - '''A Singleton for the DBus SessionBus''' + '''A Singleton for the D-Bus SessionBus''' def __init__(self): self.session_bus = None diff --git a/src/dialogs.py b/src/dialogs.py index 6a8ec5de3..d6183ea8a 100644 --- a/src/dialogs.py +++ b/src/dialogs.py @@ -837,27 +837,31 @@ class FileChooserDialog(gtk.FileChooserDialog): self.set_current_folder(current_folder) else: self.set_current_folder(helpers.get_documents_path()) - - buttons = self.action_area.get_children() - possible_responses = {gtk.STOCK_OPEN: on_response_ok, - gtk.STOCK_SAVE: on_response_ok, - gtk.STOCK_CANCEL: on_response_cancel} - for b in buttons: - for response in possible_responses: - if b.get_label() == response: - if not possible_responses[response]: - b.connect('clicked', self.just_destroy) - elif isinstance(possible_responses[response], tuple): - if len(possible_responses[response]) == 1: - b.connect('clicked', possible_responses[response][0]) - else: - b.connect('clicked', *possible_responses[response]) - else: - b.connect('clicked', possible_responses[response]) - break - + self.response_ok, self.response_cancel = \ + on_response_ok, on_response_cancel + # in gtk+-2.10 clicked signal on some of the buttons in a dialog + # is emitted twice, so we cannot rely on 'clicked' signal + self.connect('response', self.on_dialog_response) self.show_all() + def on_dialog_response(self, dialog, response): + if response in (gtk.RESPONSE_CANCEL, gtk.RESPONSE_CLOSE): + if self.response_cancel: + if isinstance(self.response_cancel, tuple): + self.response_cancel[0](dialog, *self.response_cancel[1:]) + else: + self.response_cancel(dialog) + else: + self.just_destroy(dialog) + elif response == gtk.RESPONSE_OK: + if self.response_ok: + if isinstance(self.response_ok, tuple): + self.response_ok[0](dialog, *self.response_ok[1:]) + else: + self.response_ok(dialog) + else: + self.just_destroy(dialog) + def just_destroy(self, widget): self.destroy() @@ -1192,7 +1196,7 @@ class NewChatDialog(InputDialog): title = _('Start Chat with account %s') % account else: title = _('Start Chat') - prompt_text = _('Fill in the jid, or nick of the contact you would like\nto send a chat message to:') + prompt_text = _('Fill in the nickname or the Jabber ID of the contact you would like\nto send a chat message to:') InputDialog.__init__(self, title, prompt_text, is_modal = False) self.completion_dict = {} @@ -1725,10 +1729,13 @@ class XMLConsoleWindow: self.input_textview.grab_focus() class PrivacyListWindow: - def __init__(self, account, privacy_list, list_type): - '''list_type can be 0 if list is created or 1 if it id edited''' + '''Window that is used for creating NEW or EDITING already there privacy + lists''' + def __init__(self, account, privacy_list_name, action): + '''action is 'edit' or 'new' depending on if we create a new priv list + or edit an already existing one''' self.account = account - self.privacy_list = privacy_list + self.privacy_list_name = privacy_list_name # Dicts and Default Values self.active_rule = '' @@ -1740,7 +1747,7 @@ class PrivacyListWindow: self.allow_deny = 'allow' # Connect to glade - self.xml = gtkgui_helpers.get_glade('privacy_list_edit_window.glade') + self.xml = gtkgui_helpers.get_glade('privacy_list_window.glade') self.window = self.xml.get_widget('privacy_list_edit_window') # Add Widgets @@ -1762,10 +1769,10 @@ class PrivacyListWindow: 'privacy_list_default_checkbutton']: self.__dict__[widget_to_add] = self.xml.get_widget(widget_to_add) - # Send translations + self.privacy_lists_title_label.set_label( _('Privacy List %s') % \ - gtkgui_helpers.escape_for_pango_markup(self.privacy_list)) + gtkgui_helpers.escape_for_pango_markup(self.privacy_list_name)) if len(gajim.connections) > 1: title = _('Privacy List for %s') % self.account @@ -1777,8 +1784,7 @@ class PrivacyListWindow: self.privacy_list_active_checkbutton.set_sensitive(False) self.privacy_list_default_checkbutton.set_sensitive(False) - # Check if list is created (0) or edited (1) - if list_type == 1: + if action == 'edit': self.refresh_rules() count = 0 @@ -1799,16 +1805,16 @@ class PrivacyListWindow: def on_privacy_list_edit_window_destroy(self, widget): '''close window''' if gajim.interface.instances[self.account].has_key('privacy_list_%s' % \ - self.privacy_list): + self.privacy_list_name): del gajim.interface.instances[self.account]['privacy_list_%s' % \ - self.privacy_list] + self.privacy_list_name] def check_active_default(self, a_d_dict): - if a_d_dict['active'] == self.privacy_list: + if a_d_dict['active'] == self.privacy_list_name: self.privacy_list_active_checkbutton.set_active(True) else: self.privacy_list_active_checkbutton.set_active(False) - if a_d_dict['default'] == self.privacy_list: + if a_d_dict['default'] == self.privacy_list_name: self.privacy_list_default_checkbutton.set_active(True) else: self.privacy_list_default_checkbutton.set_active(False) @@ -1845,7 +1851,7 @@ class PrivacyListWindow: gajim.connections[self.account].get_active_default_lists() def refresh_rules(self): - gajim.connections[self.account].get_privacy_list(self.privacy_list) + gajim.connections[self.account].get_privacy_list(self.privacy_list_name) def on_delete_rule_button_clicked(self, widget): tags = [] @@ -1854,7 +1860,7 @@ class PrivacyListWindow: self.list_of_rules_combobox.get_active_text().decode('utf-8'): tags.append(self.global_rules[rule]) gajim.connections[self.account].set_privacy_list( - self.privacy_list, tags) + self.privacy_list_name, tags) self.privacy_list_received(tags) self.add_edit_vbox.hide() @@ -1918,13 +1924,13 @@ class PrivacyListWindow: def on_privacy_list_active_checkbutton_toggled(self, widget): if widget.get_active(): - gajim.connections[self.account].set_active_list(self.privacy_list) + gajim.connections[self.account].set_active_list(self.privacy_list_name) else: gajim.connections[self.account].set_active_list(None) def on_privacy_list_default_checkbutton_toggled(self, widget): if widget.get_active(): - gajim.connections[self.account].set_default_list(self.privacy_list) + gajim.connections[self.account].set_default_list(self.privacy_list_name) else: gajim.connections[self.account].set_default_list(None) @@ -1994,7 +2000,7 @@ class PrivacyListWindow: else: tags.append(current_tags) - gajim.connections[self.account].set_privacy_list(self.privacy_list, tags) + gajim.connections[self.account].set_privacy_list(self.privacy_list_name, tags) self.privacy_list_received(tags) self.add_edit_vbox.hide() @@ -2019,7 +2025,9 @@ class PrivacyListWindow: self.add_edit_vbox.hide() class PrivacyListsWindow: -# To do: UTF-8 ??????? + '''Window that is the main window for Privacy Lists; + we can list there the privacy lists and ask to create a new one + or edit an already there one''' def __init__(self, account): self.account = account @@ -2027,7 +2035,7 @@ class PrivacyListsWindow: self.privacy_lists_save = [] - self.xml = gtkgui_helpers.get_glade('privacy_lists_first_window.glade') + self.xml = gtkgui_helpers.get_glade('privacy_lists_window.glade') self.window = self.xml.get_widget('privacy_lists_first_window') for widget_to_add in ['list_of_privacy_lists_combobox', @@ -2087,7 +2095,7 @@ class PrivacyListsWindow: self.list_of_privacy_lists_combobox.get_active()] gajim.connections[self.account].del_privacy_list(active_list) self.privacy_lists_save.remove(active_list) - self.privacy_lists_received({'lists':self.privacy_lists_save}) + self.privacy_lists_received({'lists': self.privacy_lists_save}) def privacy_lists_received(self, lists): if not lists: @@ -2107,7 +2115,7 @@ class PrivacyListsWindow: window.present() else: gajim.interface.instances[self.account]['privacy_list_%s' % name] = \ - PrivacyListWindow(self.account, name, 0) + PrivacyListWindow(self.account, name, 'new') self.new_privacy_list_entry.set_text('') def on_privacy_lists_refresh_button_clicked(self, widget): @@ -2122,7 +2130,7 @@ class PrivacyListsWindow: window.present() else: gajim.interface.instances[self.account]['privacy_list_%s' % name] = \ - PrivacyListWindow(self.account, name, 1) + PrivacyListWindow(self.account, name, 'edit') class InvitationReceivedDialog: def __init__(self, account, room_jid, contact_jid, password = None, comment = None): @@ -2291,6 +2299,18 @@ class ImageChooserDialog(FileChooserDialog): return widget.get_preview_widget().set_from_pixbuf(pixbuf) +class AvatarChooserDialog(ImageChooserDialog): + def __init__(self, path_to_file = '', on_response_ok = None, + on_response_cancel = None, on_response_clear = None): + ImageChooserDialog.__init__(self, path_to_file, on_response_ok, + on_response_cancel) + button = gtk.Button(None, gtk.STOCK_CLEAR) + if on_response_clear: + button.connect('clicked', on_response_clear) + button.show_all() + self.action_area.pack_start(button) + self.action_area.reorder_child(button, 0) + class AddSpecialNotificationDialog: def __init__(self, jid): '''jid is the jid for which we want to add special notification diff --git a/src/disco.py b/src/disco.py index f56f70a1c..e0f928f91 100644 --- a/src/disco.py +++ b/src/disco.py @@ -36,10 +36,10 @@ # - def update_actions(self) # - def default_action(self) # - def _find_item(self, jid, node) -# - def _add_item(self, model, jid, node, item, force) -# - def _update_item(self, model, iter, jid, node, item) -# - def _update_info(self, model, iter, jid, node, identities, features, data) -# - def _update_error(self, model, iter, jid, node) +# - def _add_item(self, jid, node, item, force) +# - def _update_item(self, iter, jid, node, item) +# - def _update_info(self, iter, jid, node, identities, features, data) +# - def _update_error(self, iter, jid, node) # # * Should call the super class for this method. # All others do not have to call back to the super class. (but can if they want @@ -215,8 +215,8 @@ class ServicesCache: ServiceCache instance.''' def __init__(self, account): self.account = account - self._items = CacheDictionary(15, getrefresh = False) - self._info = CacheDictionary(15, getrefresh = False) + self._items = CacheDictionary(1, getrefresh = True) + self._info = CacheDictionary(1, getrefresh = True) self._cbs = {} def _clean_closure(self, cb, type, addr): @@ -422,6 +422,7 @@ _('Without a connection, you can not browse available services')) self.xml = gtkgui_helpers.get_glade('service_discovery_window.glade') self.window = self.xml.get_widget('service_discovery_window') self.services_treeview = self.xml.get_widget('services_treeview') + self.model = None # This is more reliable than the cursor-changed signal. selection = self.services_treeview.get_selection() selection.connect_after('changed', @@ -452,7 +453,6 @@ _('Without a connection, you can not browse available services')) liststore = gtk.ListStore(str) self.address_comboboxentry.set_model(liststore) - self.address_comboboxentry.set_text_column(0) self.latest_addresses = gajim.config.get( 'latest_disco_addresses').split() if jid in self.latest_addresses: @@ -720,9 +720,9 @@ class AgentBrowser: note that the first two columns should ALWAYS be of type string and contain the JID and node of the item respectively.''' # JID, node, name, address - model = gtk.ListStore(str, str, str, str) - model.set_sort_column_id(3, gtk.SORT_ASCENDING) - self.window.services_treeview.set_model(model) + self.model = gtk.ListStore(str, str, str, str) + self.model.set_sort_column_id(3, gtk.SORT_ASCENDING) + self.window.services_treeview.set_model(self.model) # Name column col = gtk.TreeViewColumn(_('Name')) renderer = gtk.CellRendererText() @@ -740,7 +740,7 @@ class AgentBrowser: self.window.services_treeview.set_headers_visible(True) def _clean_treemodel(self): - self.window.services_treeview.get_model().clear() + self.model.clear() for col in self.window.services_treeview.get_columns(): self.window.services_treeview.remove_column(col) self.window.services_treeview.set_headers_visible(False) @@ -872,8 +872,7 @@ class AgentBrowser: def browse(self, force = False): '''Fill the treeview with agents, fetching the info if necessary.''' - model = self.window.services_treeview.get_model() - model.clear() + self.model.clear() self._total_items = self._progress = 0 self.window.progressbar.show() self._pulse_timeout = gobject.timeout_add(250, self._pulse_timeout_cb) @@ -890,21 +889,21 @@ class AgentBrowser: def _find_item(self, jid, node): '''Check if an item is already in the treeview. Return an iter to it if so, None otherwise.''' - model = self.window.services_treeview.get_model() - iter = model.get_iter_root() + iter = self.model.get_iter_root() while iter: - cjid = model.get_value(iter, 0).decode('utf-8') - cnode = model.get_value(iter, 1).decode('utf-8') + cjid = self.model.get_value(iter, 0).decode('utf-8') + cnode = self.model.get_value(iter, 1).decode('utf-8') if jid == cjid and node == cnode: break - iter = model.iter_next(iter) + iter = self.model.iter_next(iter) if iter: return iter return None def _agent_items(self, jid, node, items, force): '''Callback for when we receive a list of agent items.''' - model = self.window.services_treeview.get_model() + self.model.clear() + self._total_items = 0 gobject.source_remove(self._pulse_timeout) self.window.progressbar.hide() # The server returned an error @@ -916,53 +915,48 @@ class AgentBrowser: _('This service does not contain any items to browse.')) return # We got a list of items + self.window.services_treeview.set_model(None) for item in items: jid = item['jid'] node = item.get('node', '') - iter = self._find_item(jid, node) - if iter: - # Already in the treeview - self._update_item(model, iter, jid, node, item) - else: - # Not in the treeview - self._total_items += 1 - self._add_item(model, jid, node, item, force) + self._total_items += 1 + self._add_item(jid, node, item, force) + self.window.services_treeview.set_model(self.model) def _agent_info(self, jid, node, identities, features, data): '''Callback for when we receive info about an agent's item.''' addr = get_agent_address(jid, node) - model = self.window.services_treeview.get_model() iter = self._find_item(jid, node) if not iter: # Not in the treeview, stop return if identities == 0: # The server returned an error - self._update_error(model, iter, jid, node) + self._update_error(iter, jid, node) else: # We got our info - self._update_info(model, iter, jid, node, + self._update_info(iter, jid, node, identities, features, data) self.update_actions() - def _add_item(self, model, jid, node, item, force): + def _add_item(self, jid, node, item, force): '''Called when an item should be added to the model. The result of a disco#items query.''' - model.append((jid, node, item.get('name', ''), + self.model.append((jid, node, item.get('name', ''), get_agent_address(jid, node))) - def _update_item(self, model, iter, jid, node, item): + def _update_item(self, iter, jid, node, item): '''Called when an item should be updated in the model. The result of a disco#items query. (seldom)''' if item.has_key('name'): - model[iter][2] = item['name'] + self.model[iter][2] = item['name'] - def _update_info(self, model, iter, jid, node, identities, features, data): + def _update_info(self, iter, jid, node, identities, features, data): '''Called when an item should be updated in the model with further info. The result of a disco#info query.''' - model[iter][2] = identities[0].get('name', '') + self.model[iter][2] = identities[0].get('name', '') - def _update_error(self, model, iter, jid, node): + def _update_error(self, iter, jid, node): '''Called when a disco#info query failed for an item.''' pass @@ -1046,14 +1040,12 @@ class ToplevelAgentBrowser(AgentBrowser): # These are all callbacks to make tooltips work def on_treeview_leave_notify_event(self, widget, event): - model = widget.get_model() props = widget.get_path_at_pos(int(event.x), int(event.y)) if self.tooltip.timeout > 0: if not props or self.tooltip.id == props[0]: self.tooltip.hide_tooltip() def on_treeview_motion_notify_event(self, widget, event): - model = widget.get_model() props = widget.get_path_at_pos(int(event.x), int(event.y)) if self.tooltip.timeout > 0: if not props or self.tooltip.id != props[0]: @@ -1062,12 +1054,12 @@ class ToplevelAgentBrowser(AgentBrowser): [row, col, x, y] = props iter = None try: - iter = model.get_iter(row) + iter = self.model.get_iter(row) except: self.tooltip.hide_tooltip() return - jid = model[iter][0] - state = model[iter][4] + jid = self.model[iter][0] + state = self.model[iter][4] # Not a category, and we have something to say about state if jid and state > 0 and \ (self.tooltip.timeout == 0 or self.tooltip.id != props[0]): @@ -1084,10 +1076,10 @@ class ToplevelAgentBrowser(AgentBrowser): # JID, node, icon, description, state # State means 2 when error, 1 when fetching, 0 when succes. view = self.window.services_treeview - model = gtk.TreeStore(str, str, gtk.gdk.Pixbuf, str, int) - model.set_sort_func(4, self._treemodel_sort_func) - model.set_sort_column_id(4, gtk.SORT_ASCENDING) - view.set_model(model) + self.model = gtk.TreeStore(str, str, gtk.gdk.Pixbuf, str, int) + self.model.set_sort_func(4, self._treemodel_sort_func) + self.model.set_sort_column_id(4, gtk.SORT_ASCENDING) + view.set_model(self.model) col = gtk.TreeViewColumn() # Icon Renderer @@ -1329,41 +1321,38 @@ class ToplevelAgentBrowser(AgentBrowser): def _create_category(self, cat, type=None): '''Creates a category row.''' - model = self.window.services_treeview.get_model() cat, prio = self._friendly_category(cat, type) - return model.append(None, ('', '', None, cat, prio)) + return self.model.append(None, ('', '', None, cat, prio)) def _find_category(self, cat, type=None): '''Looks up a category row and returns the iterator to it, or None.''' - model = self.window.services_treeview.get_model() cat, prio = self._friendly_category(cat, type) - iter = model.get_iter_root() + iter = self.model.get_iter_root() while iter: - if model.get_value(iter, 3).decode('utf-8') == cat: + if self.model.get_value(iter, 3).decode('utf-8') == cat: break - iter = model.iter_next(iter) + iter = self.model.iter_next(iter) if iter: return iter return None def _find_item(self, jid, node): - model = self.window.services_treeview.get_model() iter = None - cat_iter = model.get_iter_root() + cat_iter = self.model.get_iter_root() while cat_iter and not iter: - iter = model.iter_children(cat_iter) + iter = self.model.iter_children(cat_iter) while iter: - cjid = model.get_value(iter, 0).decode('utf-8') - cnode = model.get_value(iter, 1).decode('utf-8') + cjid = self.model.get_value(iter, 0).decode('utf-8') + cnode = self.model.get_value(iter, 1).decode('utf-8') if jid == cjid and node == cnode: break - iter = model.iter_next(iter) - cat_iter = model.iter_next(cat_iter) + iter = self.model.iter_next(iter) + cat_iter = self.model.iter_next(cat_iter) if iter: return iter return None - def _add_item(self, model, jid, node, item, force): + def _add_item(self, jid, node, item, force): # Row text addr = get_agent_address(jid, node) if item.has_key('name'): @@ -1387,21 +1376,21 @@ class ToplevelAgentBrowser(AgentBrowser): cat = self._find_category(*cat_args) if not cat: cat = self._create_category(*cat_args) - model.append(cat, (item['jid'], item.get('node', ''), pix, descr, 1)) + self.model.append(cat, (item['jid'], item.get('node', ''), pix, descr, 1)) self._expand_all() # Grab info on the service self.cache.get_info(jid, node, self._agent_info, force = force) self._update_progressbar() - def _update_item(self, model, iter, jid, node, item): + def _update_item(self, iter, jid, node, item): addr = get_agent_address(jid, node) if item.has_key('name'): descr = "%s\n%s" % (item['name'], addr) else: descr = "%s" % addr - model[iter][3] = descr + self.model[iter][3] = descr - def _update_info(self, model, iter, jid, node, identities, features, data): + def _update_info(self, iter, jid, node, identities, features, data): addr = get_agent_address(jid, node) name = identities[0].get('name', '') if name: @@ -1423,32 +1412,32 @@ class ToplevelAgentBrowser(AgentBrowser): break # Check if we have to move categories - old_cat_iter = model.iter_parent(iter) - old_cat = model.get_value(old_cat_iter, 3).decode('utf-8') - if model.get_value(old_cat_iter, 3) == cat: + old_cat_iter = self.model.iter_parent(iter) + old_cat = self.model.get_value(old_cat_iter, 3).decode('utf-8') + if self.model.get_value(old_cat_iter, 3) == cat: # Already in the right category, just update - model[iter][2] = pix - model[iter][3] = descr - model[iter][4] = 0 + self.model[iter][2] = pix + self.model[iter][3] = descr + self.model[iter][4] = 0 return # Not in the right category, move it. - model.remove(iter) + self.model.remove(iter) # Check if the old category is empty - if not model.iter_is_valid(old_cat_iter): + if not self.model.iter_is_valid(old_cat_iter): old_cat_iter = self._find_category(old_cat) - if not model.iter_children(old_cat_iter): - model.remove(old_cat_iter) + if not self.model.iter_children(old_cat_iter): + self.model.remove(old_cat_iter) cat_iter = self._find_category(cat, type) if not cat_iter: cat_iter = self._create_category(cat, type) - model.append(cat_iter, (jid, node, pix, descr, 0)) + self.model.append(cat_iter, (jid, node, pix, descr, 0)) self._expand_all() - def _update_error(self, model, iter, jid, node): + def _update_error(self, iter, jid, node): addr = get_agent_address(jid, node) - model[iter][4] = 2 + self.model[iter][4] = 2 self._progress += 1 self._update_progressbar() @@ -1462,11 +1451,13 @@ class MucBrowser(AgentBrowser): # JID, node, name, users, description, fetched # This is rather long, I'd rather not use a data_func here though. # Users is a string, because want to be able to leave it empty. - model = gtk.ListStore(str, str, str, str, str, bool) - model.set_sort_column_id(2, gtk.SORT_ASCENDING) - self.window.services_treeview.set_model(model) + self.model = gtk.ListStore(str, str, str, str, str, bool) + self.model.set_sort_column_id(2, gtk.SORT_ASCENDING) + self.window.services_treeview.set_model(self.model) # Name column col = gtk.TreeViewColumn(_('Name')) + col.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED) + col.set_fixed_width(100) renderer = gtk.CellRendererText() col.pack_start(renderer) col.set_attributes(renderer, text = 2) @@ -1486,6 +1477,13 @@ class MucBrowser(AgentBrowser): col.set_attributes(renderer, text = 4) self.window.services_treeview.insert_column(col, -1) col.set_resizable(True) + # Id column + col = gtk.TreeViewColumn(_('Id')) + renderer = gtk.CellRendererText() + col.pack_start(renderer) + col.set_attributes(renderer, text = 0) + self.window.services_treeview.insert_column(col, -1) + col.set_resizable(True) self.window.services_treeview.set_headers_visible(True) # Source id for idle callback used to start disco#info queries. self._fetch_source = None @@ -1568,7 +1566,6 @@ class MucBrowser(AgentBrowser): # Prevent a silly warning, try again in a bit. self._fetch_source = gobject.timeout_add(100, self._start_info_query) return - model = view.get_model() # We have to do this in a pygtk <2.8 compatible way :/ #start, end = self.window.services_treeview.get_visible_range() rect = view.get_visible_rect() @@ -1577,7 +1574,7 @@ class MucBrowser(AgentBrowser): try: sx, sy = view.tree_to_widget_coords(rect.x, rect.y) spath = view.get_path_at_pos(sx, sy)[0] - iter = model.get_iter(spath) + iter = self.model.get_iter(spath) except TypeError: self._fetch_source = None return @@ -1591,14 +1588,14 @@ class MucBrowser(AgentBrowser): except TypeError: # We're at the end of the model, we can leave end=None though. pass - while iter and model.get_path(iter) != end: - if not model.get_value(iter, 5): - jid = model.get_value(iter, 0).decode('utf-8') - node = model.get_value(iter, 1).decode('utf-8') + while iter and self.model.get_path(iter) != end: + if not self.model.get_value(iter, 5): + jid = self.model.get_value(iter, 0).decode('utf-8') + node = self.model.get_value(iter, 1).decode('utf-8') self.cache.get_info(jid, node, self._agent_info) self._fetch_source = True return - iter = model.iter_next(iter) + iter = self.model.iter_next(iter) self._fetch_source = None def _channel_altinfo(self, jid, node, items, name = None): @@ -1619,22 +1616,21 @@ class MucBrowser(AgentBrowser): self._fetch_source = None return else: - model = self.window.services_treeview.get_model() iter = self._find_item(jid, node) if iter: if name: - model[iter][2] = name - model[iter][3] = len(items) # The number of users - model[iter][5] = True + self.model[iter][2] = name + self.model[iter][3] = len(items) # The number of users + self.model[iter][5] = True self._fetch_source = None self._query_visible() - def _add_item(self, model, jid, node, item, force): - model.append((jid, node, item.get('name', ''), '', '', False)) + def _add_item(self, jid, node, item, force): + self.model.append((jid, node, item.get('name', ''), '', '', False)) if not self._fetch_source: self._fetch_source = gobject.idle_add(self._start_info_query) - def _update_info(self, model, iter, jid, node, identities, features, data): + def _update_info(self, iter, jid, node, identities, features, data): name = identities[0].get('name', '') for form in data: typefield = form.getField('FORM_TYPE') @@ -1644,14 +1640,14 @@ class MucBrowser(AgentBrowser): users = form.getField('muc#roominfo_occupants') descr = form.getField('muc#roominfo_description') if users: - model[iter][3] = users.getValue() + self.model[iter][3] = users.getValue() if descr: - model[iter][4] = descr.getValue() + self.model[iter][4] = descr.getValue() # Only set these when we find a form with additional info # Some servers don't support forms and put extra info in # the name attribute, so we preserve it in that case. - model[iter][2] = name - model[iter][5] = True + self.model[iter][2] = name + self.model[iter][5] = True break else: # We didn't find a form, switch to alternate query mode @@ -1661,7 +1657,7 @@ class MucBrowser(AgentBrowser): self._fetch_source = None self._query_visible() - def _update_error(self, model, iter, jid, node): + def _update_error(self, iter, jid, node): # switch to alternate query mode self.cache.get_items(jid, node, self._channel_altinfo) diff --git a/src/filetransfers_window.py b/src/filetransfers_window.py index 0e31e8a4e..3560d784c 100644 --- a/src/filetransfers_window.py +++ b/src/filetransfers_window.py @@ -246,11 +246,16 @@ _('Connection with peer cannot be established.')) gtk.RESPONSE_OK, True, # select multiple true as we can select many files to send gajim.config.get('last_send_dir'), + on_response_ok = on_ok, + on_response_cancel = lambda e:dialog.destroy() ) - btn = dialog.add_button(_('_Send'), gtk.RESPONSE_OK) - btn.set_use_stock(True) # FIXME: add send icon to this button (JUMP_TO) - btn.connect('clicked', on_ok) + btn = gtk.Button(_('_Send')) + btn.set_property('can-default', True) + # FIXME: add send icon to this button (JUMP_TO) + dialog.add_action_widget(btn, gtk.RESPONSE_OK) + dialog.set_default_response(gtk.RESPONSE_OK) + btn.show() def send_file(self, account, contact, file_path): ''' start the real transfer(upload) of the file ''' @@ -450,8 +455,10 @@ _('Connection with peer cannot be established.')) for ev_type in ('file-error', 'file-completed', 'file-request-error', 'file-send-error', 'file-stopped'): for event in gajim.events.get_events(account, jid, [ev_type]): - if event.parameters[1]['sid'] == file_props['sid']: + if event.parameters['sid'] == file_props['sid']: gajim.events.remove_events(account, jid, event) + gajim.interface.roster.draw_contact(jid, account) + gajim.interface.roster.show_title() del(self.files_props[sid[0]][sid[1:]]) del(file_props) diff --git a/src/gajim-remote.py b/src/gajim-remote.py index 563cc121a..ffe9db7fc 100755 --- a/src/gajim-remote.py +++ b/src/gajim-remote.py @@ -51,13 +51,10 @@ def send_error(error_message): try: import dbus -except: - raise exceptions.DbusNotSupported - -_version = getattr(dbus, 'version', (0, 20, 0)) -if _version[1] >= 41: import dbus.service import dbus.glib +except: + raise exceptions.DbusNotSupported OBJ_PATH = '/org/gajim/dbus/RemoteObject' INTERFACE = 'org.gajim.dbus.RemoteInterface' @@ -320,14 +317,8 @@ class GajimRemote: except: raise exceptions.SessionBusNotPresent - if _version[1] >= 30: - obj = self.sbus.get_object(SERVICE, OBJ_PATH) - interface = dbus.Interface(obj, INTERFACE) - elif _version[1] < 30: - self.service = self.sbus.get_service(SERVICE) - interface = self.service.get_object(OBJ_PATH, INTERFACE) - else: - send_error(_('Unknown D-Bus version: %s') % _version[1]) + obj = self.sbus.get_object(SERVICE, OBJ_PATH) + interface = dbus.Interface(obj, INTERFACE) # get the function asked self.method = interface.__getattr__(self.command) @@ -447,10 +438,7 @@ class GajimRemote: ''' calls self.method with arguments from sys.argv[2:] ''' args = sys.argv[2:] args = [i.decode(PREFERRED_ENCODING) for i in sys.argv[2:]] - if _version[1] >= 41: - args = [dbus.String(i) for i in args] - else: - args = [i.encode('UTF-8') for i in sys.argv[2:]] + args = [dbus.String(i) for i in args] try: res = self.method(*args) return res diff --git a/src/gajim.py b/src/gajim.py index b8e96dd63..70d8bfe54 100755 --- a/src/gajim.py +++ b/src/gajim.py @@ -552,7 +552,7 @@ class Interface: chat_control = self.msg_win_mgr.get_control(jid, account) # Handle chat states - contact = gajim.contacts.get_contact(account, jid, resource) + contact = gajim.contacts.get_contact(account, jid) if contact and isinstance(contact, list): contact = contact[0] if contact: @@ -582,7 +582,10 @@ class Interface: if gajim.config.get('ignore_unknown_contacts') and \ not gajim.contacts.get_contact(account, jid) and not pm: return - + if not contact: + # contact is not in the roster, create a fake one to display + # notification + contact = common.contacts.Contact(jid = jid, resource = resource) advanced_notif_num = notify.get_advanced_notification('message_received', account, contact) @@ -606,7 +609,7 @@ class Interface: msg = message if subject: msg = _('Subject: %s') % subject + '\n' + msg - notify.notify('new_message', jid, account, [msg_type, first, nickname, + notify.notify('new_message', full_jid_with_resource, account, [msg_type, first, nickname, msg], advanced_notif_num) if self.remote_ctrl: @@ -851,6 +854,7 @@ class Interface: self.remote_ctrl.raise_signal('LastStatusTime', (account, array)) def handle_event_os_info(self, account, array): + #'OS_INFO' (account, (jid, resource, client_info, os_info)) win = None if self.instances[account]['infos'].has_key(array[0]): win = self.instances[account]['infos'][array[0]] @@ -1010,7 +1014,7 @@ class Interface: return # Add it to roster contact = gajim.contacts.create_contact(jid = jid, name = name, - groups = groups, show = 'offline', sub = sub, ask = ask) + groups = groups, show = 'offline', sub = sub, ask = ask) gajim.contacts.add_contact(account, contact) self.roster.add_contact_to_roster(jid, account) else: @@ -1075,7 +1079,7 @@ class Interface: gmail_messages_list = array[2] if gajim.config.get('notify_on_new_gmail_email'): img = os.path.join(gajim.DATA_DIR, 'pixmaps', 'events', - 'single_msg_recv.png') #FIXME: find a better image + 'new_email_recv.png') title = _('New E-mail on %(gmail_mail_address)s') % \ {'gmail_mail_address': jid} text = i18n.ngettext('You have %d new E-mail message', 'You have %d new E-mail messages', gmail_new_messages, gmail_new_messages, gmail_new_messages) @@ -1328,7 +1332,9 @@ class Interface: self.instances[account]['xml_console'].print_stanza(stanza, 'outgoing') def handle_event_vcard_published(self, account, array): - dialogs.InformationDialog(_('vCard publication succeeded'), _('Your personal information has been published successfully.')) + if self.instances[account].has_key('profile'): + win = self.instances[account]['profile'] + win.vcard_published() for gc_control in self.msg_win_mgr.get_controls(message_control.TYPE_GC): if gc_control.account == account: show = gajim.SHOW_LIST[gajim.connections[account].connected] @@ -1337,7 +1343,9 @@ class Interface: gc_control.room_jid, show, status) def handle_event_vcard_not_published(self, account, array): - dialogs.InformationDialog(_('vCard publication failed'), _('There was an error while publishing your personal information, try again later.')) + if self.instances[account].has_key('profile'): + win = self.instances[account]['profile'] + win.vcard_not_published() def handle_event_signed_in(self, account, empty): '''SIGNED_IN event is emitted when we sign in, so handle it''' @@ -1406,10 +1414,10 @@ class Interface: if response == gtk.RESPONSE_OK: new_name = dlg.input_entry.get_text() print 'account, data', account, data, new_name - gajim.config.set_per('accounts', gajim.LOCAL_ACC, 'name', new_name) + gajim.config.set_per('accounts', account, 'name', new_name) status = gajim.connections[account].status - print 'status', status - gajim.connections[account].reconnect() + gajim.connections[account].username = new_name + gajim.connections[account].change_status(status, '') def read_sleepy(self): @@ -1744,14 +1752,17 @@ class Interface: jid = gajim.get_jid_without_resource(jid) if type_ in ('printed_gc_msg', 'gc_msg'): w = self.msg_win_mgr.get_window(jid, account) - elif type_ in ('printed_chat', 'chat'): + elif type_ in ('printed_chat', 'chat', ''): + # '' is for log in/out notifications if self.msg_win_mgr.has_window(fjid, account): w = self.msg_win_mgr.get_window(fjid, account) + elif self.msg_win_mgr.has_window(jid, account): + w = self.msg_win_mgr.get_window(jid, account) else: contact = gajim.contacts.get_contact(account, jid, resource) - if isinstance(contact, list): + if not contact or isinstance(contact, list): contact = gajim.contacts.get_first_contact_from_jid(account, jid) - self.roster.new_chat(contact, account, resource = resource) + self.roster.new_chat(contact, account) w = self.msg_win_mgr.get_window(fjid, account) gajim.last_message_time[account][jid] = 0 # long time ago elif type_ in ('printed_pm', 'pm'): @@ -1774,9 +1785,15 @@ class Interface: elif type_ in ('normal', 'file-request', 'file-request-error', 'file-send-error', 'file-error', 'file-stopped', 'file-completed'): # Get the first single message event - event = gajim.events.get_first_event(account, jid, type_) - # Open the window - self.roster.open_event(account, jid, event) + event = gajim.events.get_first_event(account, fjid, type_) + if not event: + # default to jid without resource + event = gajim.events.get_first_event(account, jid, type_) + # Open the window + self.roster.open_event(account, jid, event) + else: + # Open the window + self.roster.open_event(account, fjid, event) elif type_ == 'gmail': if gajim.config.get_per('accounts', account, 'savepass'): url = ('http://www.google.com/accounts/ServiceLoginAuth?service=mail&Email=%s&Passwd=%s&continue=https://mail.google.com/mail') %\ @@ -1873,9 +1890,12 @@ class Interface: for account in gajim.config.get_per('accounts'): if account != gajim.ZEROCONF_ACC_NAME: gajim.connections[account] = common.connection.Connection(account) - + + # gtk hooks gtk.about_dialog_set_email_hook(self.on_launch_browser_mailer, 'mail') gtk.about_dialog_set_url_hook(self.on_launch_browser_mailer, 'url') + if gtk.pygtk_version >= (2, 10, 0) and gtk.gtk_version >= (2, 10, 0): + gtk.link_button_set_uri_hook(self.on_launch_browser_mailer, 'url') self.instances = {'logs': {}} @@ -1919,6 +1939,8 @@ class Interface: self.systray_capabilities = False if os.name == 'nt': + pass + ''' try: import systraywin32 except: # user doesn't have trayicon capabilities @@ -1926,6 +1948,7 @@ class Interface: else: self.systray_capabilities = True self.systray = systraywin32.SystrayWin32() + ''' else: self.systray_capabilities = systray.HAS_SYSTRAY_CAPABILITIES if self.systray_capabilities: diff --git a/src/gajim_themes_window.py b/src/gajim_themes_window.py index cc9b1742e..ef40d4b22 100644 --- a/src/gajim_themes_window.py +++ b/src/gajim_themes_window.py @@ -51,7 +51,7 @@ class GajimThemesWindow: self.themes_tree = self.xml.get_widget('themes_treeview') self.theme_options_vbox = self.xml.get_widget('theme_options_vbox') self.colorbuttons = {} - for chatstate in ('active', 'inactive', 'composing', 'paused', 'gone', + for chatstate in ('inactive', 'composing', 'paused', 'gone', 'muc_msg', 'muc_directed_msg'): self.colorbuttons[chatstate] = self.xml.get_widget(chatstate + \ '_colorbutton') @@ -198,7 +198,7 @@ class GajimThemesWindow: self.no_update = False gajim.interface.roster.change_roster_style(None) - for chatstate in ('active', 'inactive', 'composing', 'paused', 'gone', + for chatstate in ('inactive', 'composing', 'paused', 'gone', 'muc_msg', 'muc_directed_msg'): color = gajim.config.get_per('themes', theme, 'state_' + chatstate + \ '_color') @@ -333,11 +333,6 @@ class GajimThemesWindow: font_props[1] = True return font_props - def on_active_colorbutton_color_set(self, widget): - self.no_update = True - self._set_color(True, widget, 'state_active_color') - self.no_update = False - def on_inactive_colorbutton_color_set(self, widget): self.no_update = True self._set_color(True, widget, 'state_inactive_color') diff --git a/src/groupchat_control.py b/src/groupchat_control.py index 38e20e5bf..607053d48 100644 --- a/src/groupchat_control.py +++ b/src/groupchat_control.py @@ -226,9 +226,6 @@ class GroupchatControl(ChatControlBase): self.gc_popup_menu = xm.get_widget('gc_control_popup_menu') self.name_label = self.xml.get_widget('banner_name_label') - id = self.parent_win.window.connect('focus-in-event', - self._on_window_focus_in_event) - self.handlers[id] = self.parent_win.window # set the position of the current hpaned self.hpaned_position = gajim.config.get('gc-hpaned-position') @@ -320,11 +317,6 @@ class GroupchatControl(ChatControlBase): return gajim.config.get('notify_on_all_muc_messages') or \ self.attention_flag - def _on_window_focus_in_event(self, widget, event): - '''When window gets focus''' - if self.parent_win.get_active_jid() == self.room_jid: - self.conv_textview.allow_focus_out_line = True - def on_treeview_size_allocate(self, widget, allocation): '''The MUC treeview has resized. Move the hpaned in all tabs to match''' self.hpaned_position = self.hpaned.get_position() @@ -371,23 +363,24 @@ class GroupchatControl(ChatControlBase): has_focus = self.parent_win.window.get_property('has-toplevel-focus') current_tab = self.parent_win.get_active_control() == self + color_name = None color = None theme = gajim.config.get('roster_theme') if chatstate == 'attention' and (not has_focus or not current_tab): self.attention_flag = True - color = gajim.config.get_per('themes', theme, + color_name = gajim.config.get_per('themes', theme, 'state_muc_directed_msg_color') elif chatstate: if chatstate == 'active' or (current_tab and has_focus): self.attention_flag = False - color = gajim.config.get_per('themes', theme, - 'state_active_color') + # get active color from gtk + color = self.parent_win.notebook.style.fg[gtk.STATE_ACTIVE] elif chatstate == 'newmsg' and (not has_focus or not current_tab) and\ not self.attention_flag: - color = gajim.config.get_per('themes', theme, 'state_muc_msg_color') - if color: - color = gtk.gdk.colormap_get_system().alloc_color(color) - + color_name = gajim.config.get_per('themes', theme, 'state_muc_msg_color') + if color_name: + color = gtk.gdk.colormap_get_system().alloc_color(color_name) + label_str = self.name return (label_str, color) @@ -865,7 +858,9 @@ class GroupchatControl(ChatControlBase): print_status = gajim.config.get('print_status_in_muc') nick_jid = nick if jid: - nick_jid += ' (%s)' % jid + # delete ressource + simple_jid = gajim.get_jid_without_resource(jid) + nick_jid += ' (%s)' % simple_jid if show == 'offline' and print_status in ('all', 'in_and_out'): st = _('%s has left') % nick_jid if reason: @@ -1268,6 +1263,10 @@ class GroupchatControl(ChatControlBase): del self.handlers[i] def allow_shutdown(self): + model, iter = self.list_treeview.get_selection().get_selected() + if iter: + self.list_treeview.get_selection().unselect_all() + return False retval = True includes = gajim.config.get('confirm_close_muc_rooms').split(' ') excludes = gajim.config.get('noconfirm_close_muc_rooms').split(' ') @@ -1293,6 +1292,7 @@ class GroupchatControl(ChatControlBase): return retval def set_control_active(self, state): + self.conv_textview.allow_focus_out_line = True self.attention_flag = False ChatControlBase.set_control_active(self, state) if not state: @@ -1453,7 +1453,11 @@ class GroupchatControl(ChatControlBase): def on_list_treeview_key_press_event(self, widget, event): if event.keyval == gtk.keysyms.Escape: - widget.get_selection().unselect_all() + selection = widget.get_selection() + model, iter = selection.get_selected() + if iter: + widget.get_selection().unselect_all() + return True def on_list_treeview_row_expanded(self, widget, iter, path): '''When a row is expanded: change the icon of the arrow''' diff --git a/src/gtkgui_helpers.py b/src/gtkgui_helpers.py index fb6e3eaa8..7b99c3ae9 100644 --- a/src/gtkgui_helpers.py +++ b/src/gtkgui_helpers.py @@ -390,7 +390,7 @@ def possibly_move_window_in_current_desktop(window): current virtual desktop window is GTK window''' if os.name == 'nt': - return + return False root_window = gtk.gdk.screen_get_default().get_root_window() # current user's vd @@ -406,6 +406,8 @@ def possibly_move_window_in_current_desktop(window): # we are in another VD that the window was # so show it in current VD window.present() + return True + return False def file_is_locked(path_to_file): '''returns True if file is locked (WINDOWS ONLY)''' @@ -680,6 +682,14 @@ default_name = ''): file_path = dialog.get_filename() file_path = decode_filechooser_file_paths((file_path,))[0] if os.path.exists(file_path): + # check if we have write permissions + if not os.access(file_path, os.W_OK): + file_name = os.path.basename(file_path) + dialogs.ErrorDialog(_('Cannot overwrite existing file "%s"' % + file_name), + _('A file with this name already exists and you do not have ' + 'permission to overwrite it.')) + return dialog2 = dialogs.FTOverwriteConfirmationDialog( _('This file already exists'), _('What do you want to do?'), False) @@ -688,6 +698,13 @@ default_name = ''): response = dialog2.get_response() if response < 0: return + else: + dirname = os.path.dirname(file_path) + if not os.access(dirname, os.W_OK): + dialogs.ErrorDialog(_('Directory "%s" is not writable') % \ + dirname, _('You do not have permission to create files in this' + ' directory.')) + return # Get pixbuf pixbuf = None @@ -710,8 +727,8 @@ default_name = ''): try: pixbuf.save(file_path, type_) except: - #XXX Check for permissions - os.remove(file_path) + if os.path.exists(file_path): + os.remove(file_path) new_file_path = '.'.join(file_path.split('.')[:-1]) + '.jpeg' dialog2 = dialogs.ConfirmationDialog(_('Extension not supported'), _('Image cannot be saved in %(type)s format. Save as %(new_filename)s?') % {'type': type_, 'new_filename': new_file_path}, @@ -735,3 +752,6 @@ default_name = ''): dialog.set_current_name(default_name) dialog.connect('delete-event', lambda widget, event: on_cancel(widget)) + +def on_bm_header_changed_state(widget, event): + widget.set_state(gtk.STATE_NORMAL) #do not allow selected_state diff --git a/src/message_window.py b/src/message_window.py index f190956c8..42be57e1c 100644 --- a/src/message_window.py +++ b/src/message_window.py @@ -104,6 +104,16 @@ class MessageWindow: self.notebook.drag_dest_set(gtk.DEST_DEFAULT_ALL, self.DND_TARGETS, gtk.gdk.ACTION_MOVE) + def change_account_name(self, old_name, new_name): + if self._controls.has_key(old_name): + self._controls[new_name] = self._controls[old_name] + del self._controls[old_name] + for ctrl in self.controls(): + if ctrl.account == old_name: + ctrl.account = new_name + if self.account == old_name: + self.account = new_name + def get_num_controls(self): n = 0 for dict in self._controls.values(): @@ -618,7 +628,11 @@ class MessageWindowMgr: # Map the mode to a int constant for frequent compares mode = gajim.config.get('one_message_window') self.mode = common.config.opt_one_window_types.index(mode) - + + def change_account_name(self, old_name, new_name): + for win in self.windows(): + win.change_account_name(old_name, new_name) + def _new_window(self, acct, type): win = MessageWindow(acct, type) # we track the lifetime of this window diff --git a/src/music_track_listener.py b/src/music_track_listener.py new file mode 100644 index 000000000..b5bccbdc4 --- /dev/null +++ b/src/music_track_listener.py @@ -0,0 +1,118 @@ +# -*- coding: utf-8 -*- +## musictracklistener.py +## +## Copyright (C) 2006 Gustavo Carneiro +## Copyright (C) 2006 Nikos Kouremenos +## +## This program is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published +## by the Free Software Foundation; version 2 only. +## +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. +## +import gobject +import dbus_support +if dbus_support.supported: + import dbus + import dbus.glib + +class MusicTrackInfo(object): + __slots__ = ['title', 'album', 'artist', 'duration', 'track_number'] + + +class MusicTrackListener(gobject.GObject): + __gsignals__ = { 'music-track-changed': (gobject.SIGNAL_RUN_LAST, None, + (object,)) } + + _instance = None + @classmethod + def get(cls): + if cls._instance is None: + cls._instance = cls() + return cls._instance + + def __init__(self): + super(MusicTrackListener, self).__init__() + bus = dbus.SessionBus() + bus.add_signal_receiver(self._muine_music_track_change_cb, 'SongChanged', + 'org.gnome.Muine.Player') + bus.add_signal_receiver(self._rhythmbox_music_track_change_cb, + 'playingUriChanged', 'org.gnome.Rhythmbox.Player') + + def _muine_properties_extract(self, song_string): + d = dict((x.strip() for x in s1.split(':', 1)) for s1 in song_string.split('\n')) + info = MusicTrackInfo() + info.title = d['title'] + info.album = d['album'] + info.artist = d['artist'] + info.duration = int(d['duration']) + info.track_number = int(d['track_number']) + return info + + def _muine_music_track_change_cb(self, arg): + info = self._muine_properties_extract(arg) + self.emit('music-track-changed', info) + + def _rhythmbox_properties_extract(self, props): + info = MusicTrackInfo() + info.title = props['title'] + info.album = props['album'] + info.artist = props['artist'] + info.duration = int(props['duration']) + info.track_number = int(props['track-number']) + return info + + def _rhythmbox_music_track_change_cb(self, uri): + bus = dbus.SessionBus() + rbshellobj = bus.get_object('org.gnome.Rhythmbox', '/org/gnome/Rhythmbox/Shell') + rbshell = dbus.Interface(rbshellobj, 'org.gnome.Rhythmbox.Shell') + props = rbshell.getSongProperties(uri) + info = self._rhythmbox_properties_extract(props) + self.emit('music-track-changed', info) + + def get_playing_track(self): + '''Return a MusicTrackInfo for the currently playing + song, or None if no song is playing''' + + bus = dbus.SessionBus() + + ## Check Muine playing track + if dbus.dbus_bindings.bus_name_has_owner(bus.get_connection(), + 'org.gnome.Muine'): + obj = bus.get_object('org.gnome.Muine', '/org/gnome/Muine/Player') + player = dbus.Interface(obj, 'org.gnome.Muine.Player') + if player.GetPlaying(): + song_string = player.GetCurrentSong() + song = self._muine_properties_extract(song_string) + return song + + ## Check Rhythmbox playing song + if dbus.dbus_bindings.bus_name_has_owner(bus.get_connection(), + 'org.gnome.Rhythmbox'): + rbshellobj = bus.get_object('org.gnome.Rhythmbox', '/org/gnome/Rhythmbox/Shell') + player = dbus.Interface( + bus.get_object('org.gnome.Rhythmbox', '/org/gnome/Rhythmbox/Player'), + 'org.gnome.Rhythmbox.Player') + rbshell = dbus.Interface(rbshellobj, 'org.gnome.Rhythmbox.Shell') + uri = player.getPlayingUri() + props = rbshell.getSongProperties(uri) + info = self._rhythmbox_properties_extract(props) + return info + + return None + +# here we test :) +if __name__ == '__main__': + def music_track_change_cb(listener, music_track_info): + print music_track_info.title + listener = MusicTrackListener.get() + listener.connect('music-track-changed', music_track_change_cb) + track = listener.get_playing_track() + if track is None: + print 'Now not playing anything' + else: + print 'Now playing: "%s" by %s' % (track.title, track.artist) + gobject.MainLoop().run() diff --git a/src/notify.py b/src/notify.py index 908ff25d9..79fd847a9 100644 --- a/src/notify.py +++ b/src/notify.py @@ -28,9 +28,8 @@ from common import helpers import dbus_support if dbus_support.supported: import dbus - if dbus_support.version >= (0, 41, 0): - import dbus.glib - import dbus.service + import dbus.glib + import dbus.service def get_show_in_roster(event, account, contact): '''Return True if this event must be shown in roster, else False''' @@ -42,11 +41,9 @@ def get_show_in_roster(event, account, contact): return False if event == 'message_received': chat_control = helpers.get_chat_control(account, contact) - if not chat_control: - return True - elif event == 'ft_request': - return True - return False + if chat_control: + return False + return True def get_show_in_systray(event, account, contact): '''Return True if this event must be shown in roster, else False''' @@ -56,10 +53,7 @@ def get_show_in_systray(event, account, contact): return True if gajim.config.get_per('notifications', str(num), 'systray') == 'no': return False - if event in ('message_received', 'ft_request', 'gc_msg_highlight', - 'ft_request'): - return True - return False + return True def get_advanced_notification(event, account, contact): '''Returns the number of the first advanced notification or None''' diff --git a/src/profile_window.py b/src/profile_window.py index 41bbd8de3..badcbb310 100644 --- a/src/profile_window.py +++ b/src/profile_window.py @@ -60,17 +60,40 @@ class ProfileWindow: def __init__(self, account): self.xml = gtkgui_helpers.get_glade('profile_window.glade') self.window = self.xml.get_widget('profile_window') + self.progressbar = self.xml.get_widget('progressbar') + self.statusbar = self.xml.get_widget('statusbar') + self.context_id = self.statusbar.get_context_id('profile') self.account = account self.jid = gajim.get_jid_from_account(account) self.avatar_mime_type = None self.avatar_encoded = None + self.message_id = self.statusbar.push(self.context_id, + _('Retrieving profile...')) + self.update_progressbar_timeout_id = gobject.timeout_add(100, + self.update_progressbar) + self.remove_statusbar_timeout_id = None + # Create Image for avatar button + image = gtk.Image() + self.xml.get_widget('PHOTO_button').set_image(image) self.xml.signal_autoconnect(self) self.window.show_all() + def update_progressbar(self): + self.progressbar.pulse() + return True # loop forever + + def remove_statusbar(self, message_id): + self.statusbar.remove(self.context_id, message_id) + self.remove_statusbar_timeout_id = None + def on_profile_window_destroy(self, widget): + if self.update_progressbar_timeout_id is not None: + gobject.source_remove(self.update_progressbar_timeout_id) + if self.remove_statusbar_timeout_id is not None: + gobject.source_remove(self.remove_statusbar_timeout_id) del gajim.interface.instances[self.account]['profile'] def on_profile_window_key_press_event(self, widget, event): @@ -79,8 +102,10 @@ class ProfileWindow: def on_clear_button_clicked(self, widget): # empty the image - self.xml.get_widget('PHOTO_image').set_from_icon_name('stock_person', - gtk.ICON_SIZE_DIALOG) + button = self.xml.get_widget('PHOTO_button') + image = button.get_image() + image.set_from_pixbuf(None) + button.set_label(_('Click to set your avatar')) self.avatar_encoded = None self.avatar_mime_type = None @@ -124,24 +149,39 @@ class ProfileWindow: pixbuf = gtkgui_helpers.get_pixbuf_from_data(data) # rescale it pixbuf = gtkgui_helpers.get_scaled_pixbuf(pixbuf, 'vcard') - image = self.xml.get_widget('PHOTO_image') + button = self.xml.get_widget('PHOTO_button') + image = button.get_image() image.set_from_pixbuf(pixbuf) + button.set_label('') self.avatar_encoded = base64.encodestring(data) # returns None if unknown type self.avatar_mime_type = mimetypes.guess_type(path_to_file)[0] - self.dialog = dialogs.ImageChooserDialog(on_response_ok = on_ok) + def on_clear(widget): + self.dialog.destroy() + self.on_clear_button_clicked(widget) + + self.dialog = dialogs.AvatarChooserDialog(on_response_ok = on_ok, + on_response_clear = on_clear) def on_PHOTO_button_press_event(self, widget, event): '''If right-clicked, show popup''' if event.button == 3 and self.avatar_encoded: # right click menu = gtk.Menu() - nick = gajim.config.get_per('accounts', self.account, 'name') - menuitem = gtk.ImageMenuItem(gtk.STOCK_SAVE_AS) - menuitem.connect('activate', - gtkgui_helpers.on_avatar_save_as_menuitem_activate, - self.jid, None, nick + '.jpeg') - menu.append(menuitem) + + # Try to get pixbuf + is_fake = False + if account and gajim.contacts.is_pm_from_jid(account, jid): + is_fake = True + pixbuf = get_avatar_pixbuf_from_cache(jid, is_fake) + + if pixbuf: + nick = gajim.config.get_per('accounts', self.account, 'name') + menuitem = gtk.ImageMenuItem(gtk.STOCK_SAVE_AS) + menuitem.connect('activate', + gtkgui_helpers.on_avatar_save_as_menuitem_activate, + self.jid, None, nick + '.jpeg') + menu.append(menuitem) # show clear menuitem = gtk.ImageMenuItem(gtk.STOCK_CLEAR) menuitem.connect('activate', self.on_clear_button_clicked) @@ -162,18 +202,23 @@ class ProfileWindow: def set_values(self, vcard): if not 'PHOTO' in vcard: # set default image - image = self.xml.get_widget('PHOTO_image') - image.set_from_icon_name('stock_person', gtk.ICON_SIZE_DIALOG) + button = self.xml.get_widget('PHOTO_button') + image = button.get_image() + image.set_from_pixbuf(None) + button.set_label(_('Click to set your avatar')) for i in vcard.keys(): if i == 'PHOTO': pixbuf, self.avatar_encoded, self.avatar_mime_type = \ get_avatar_pixbuf_encoded_mime(vcard[i]) - image = self.xml.get_widget('PHOTO_image') + button = self.xml.get_widget('PHOTO_button') + image = button.get_image() if not pixbuf: - image.set_from_icon_name('stock_person', gtk.ICON_SIZE_DIALOG) + image.set_from_pixbuf(None) + button.set_label(_('Click to set your avatar')) continue pixbuf = gtkgui_helpers.get_scaled_pixbuf(pixbuf, 'vcard') image.set_from_pixbuf(pixbuf) + button.set_label('') continue if i == 'ADR' or i == 'TEL' or i == 'EMAIL': for entry in vcard[i]: @@ -191,6 +236,18 @@ class ProfileWindow: vcard[i], 0) else: self.set_value(i + '_entry', vcard[i]) + if self.update_progressbar_timeout_id is not None: + if self.message_id: + self.statusbar.remove(self.context_id, self.message_id) + self.message_id = self.statusbar.push(self.context_id, + _('Information received')) + self.remove_statusbar_timeout_id = gobject.timeout_add(3000, + self.remove_statusbar, self.message_id) + gobject.source_remove(self.update_progressbar_timeout_id) + # redraw progressbar after avatar is set so that windows is already + # resized. Else progressbar is not correctly redrawn + gobject.idle_add(self.progressbar.set_fraction, 0) + self.update_progressbar_timeout_id = None def add_to_vcard(self, vcard, entry, txt): '''Add an information to the vCard dictionary''' @@ -248,6 +305,9 @@ class ProfileWindow: return vcard def on_publish_button_clicked(self, widget): + if self.update_progressbar_timeout_id: + # Operation in progress + return if gajim.connections[self.account].connected < 2: dialogs.ErrorDialog(_('You are not connected to the server'), _('Without a connection you can not publish your contact ' @@ -261,8 +321,42 @@ class ProfileWindow: nick = gajim.config.get_per('accounts', self.account, 'name') gajim.nicks[self.account] = nick gajim.connections[self.account].send_vcard(vcard) + self.message_id = self.statusbar.push(self.context_id, + _('Sending profile...')) + self.update_progressbar_timeout_id = gobject.timeout_add(100, + self.update_progressbar) + + def vcard_published(self): + if self.message_id: + self.statusbar.remove(self.context_id, self.message_id) + self.message_id = self.statusbar.push(self.context_id, + _('Information published')) + self.remove_statusbar_timeout_id = gobject.timeout_add(3000, + self.remove_statusbar, self.message_id) + if self.update_progressbar_timeout_id is not None: + gobject.source_remove(self.update_progressbar_timeout_id) + self.progressbar.set_fraction(0) + self.update_progressbar_timeout_id = None + + def vcard_not_published(self): + if self.message_id: + self.statusbar.remove(self.context_id, self.message_id) + self.message_id = self.statusbar.push(self.context_id, + _('Information NOT published')) + self.remove_statusbar_timeout_id = gobject.timeout_add(3000, + self.remove_statusbar, self.message_id) + if self.update_progressbar_timeout_id is not None: + gobject.source_remove(self.update_progressbar_timeout_id) + self.progressbar.set_fraction(0) + self.update_progressbar_timeout_id = None + dialogs.InformationDialog(_('vCard publication failed'), + _('There was an error while publishing your personal information, ' + 'try again later.')) def on_retrieve_button_clicked(self, widget): + if self.update_progressbar_timeout_id: + # Operation in progress + return entries = ['FN', 'NICKNAME', 'BDAY', 'EMAIL_HOME_USERID', 'URL', 'TEL_HOME_NUMBER', 'N_FAMILY', 'N_GIVEN', 'N_MIDDLE', 'N_PREFIX', 'N_SUFFIX', 'ADR_HOME_STREET', 'ADR_HOME_EXTADR', 'ADR_HOME_LOCALITY', @@ -275,9 +369,18 @@ class ProfileWindow: for e in entries: self.xml.get_widget(e + '_entry').set_text('') self.xml.get_widget('DESC_textview').get_buffer().set_text('') - self.xml.get_widget('PHOTO_image').set_from_icon_name('stock_person', - gtk.ICON_SIZE_DIALOG) + button = self.xml.get_widget('PHOTO_button') + image = button.get_image() + image.set_from_pixbuf(None) + button.set_label(_('Click to set your avatar')) gajim.connections[self.account].request_vcard(self.jid) else: dialogs.ErrorDialog(_('You are not connected to the server'), - _('Without a connection, you can not get your contact information.')) + _('Without a connection, you can not get your contact information.')) + self.message_id = self.statusbar.push(self.context_id, + _('Retrieving profile...')) + self.update_progressbar_timeout_id = gobject.timeout_add(100, + self.update_progressbar) + + def on_close_button_clicked(self, widget): + self.window.destroy() diff --git a/src/remote_control.py b/src/remote_control.py index 05156cf84..0ce901e24 100644 --- a/src/remote_control.py +++ b/src/remote_control.py @@ -1,19 +1,9 @@ ## remote_control.py ## -## Contributors for this file: -## - Yann Le Boulanger -## - Nikos Kouremenos -## - Dimitur Kirov -## - Andrew Sayman -## -## Copyright (C) 2003-2004 Yann Le Boulanger -## Vincent Hanquez -## Copyright (C) 2005 Yann Le Boulanger -## Vincent Hanquez -## Nikos Kouremenos -## Dimitur Kirov -## Travis Shirk -## Norman Rasmussen +## Copyright (C) 2005-2006 Yann Le Boulanger +## Copyright (C) 2005-2006 Nikos Kouremenos +## Copyright (C) 2005-2006 Dimitur Kirov +## Copyright (C) 2005-2006 Andrew Sayman ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published @@ -36,57 +26,30 @@ from dialogs import AddNewContactWindow, NewChatDialog import dbus_support if dbus_support.supported: import dbus - if dbus_support.version >= (0, 41, 0): + if dbus_support: import dbus.service - import dbus.glib # cause dbus 0.35+ doesn't return signal replies without it - DbusPrototype = dbus.service.Object - elif dbus_support.version >= (0, 20, 0): - DbusPrototype = dbus.Object - else: #dbus is not defined - DbusPrototype = str + import dbus.glib INTERFACE = 'org.gajim.dbus.RemoteInterface' OBJ_PATH = '/org/gajim/dbus/RemoteObject' SERVICE = 'org.gajim.dbus' -# type mapping, it is different in each version -ident = lambda e: e -if dbus_support.version[1] >= 43: - # in most cases it is a utf-8 string - DBUS_STRING = dbus.String +# type mapping - # general type (for use in dicts, - # where all values should have the same type) - DBUS_VARIANT = dbus.Variant - DBUS_BOOLEAN = dbus.Boolean - DBUS_DOUBLE = dbus.Double - DBUS_INT32 = dbus.Int32 - # dictionary with string key and binary value - DBUS_DICT_SV = lambda : dbus.Dictionary({}, signature="sv") - # dictionary with string key and value - DBUS_DICT_SS = lambda : dbus.Dictionary({}, signature="ss") - # empty type - DBUS_NONE = lambda : dbus.Variant(0) +# in most cases it is a utf-8 string +DBUS_STRING = dbus.String -else: # 33, 35, 36 - DBUS_DICT_SV = lambda : {} - DBUS_DICT_SS = lambda : {} - DBUS_STRING = lambda e: unicode(e).encode('utf-8') - # this is the only way to return lists and dicts of mixed types - DBUS_VARIANT = lambda e: (isinstance(e, (str, unicode)) and \ - DBUS_STRING(e)) or repr(e) - DBUS_NONE = lambda : '' - if dbus_support.version[1] >= 41: # 35, 36 - DBUS_BOOLEAN = dbus.Boolean - DBUS_DOUBLE = dbus.Double - DBUS_INT32 = dbus.Int32 - else: # 33 - DBUS_BOOLEAN = ident - DBUS_INT32 = ident - DBUS_DOUBLE = ident - -STATUS_LIST = ['offline', 'connecting', 'online', 'chat', 'away', 'xa', 'dnd', - 'invisible'] +# general type (for use in dicts, where all values should have the same type) +DBUS_VARIANT = dbus.Variant +DBUS_BOOLEAN = dbus.Boolean +DBUS_DOUBLE = dbus.Double +DBUS_INT32 = dbus.Int32 +# dictionary with string key and binary value +DBUS_DICT_SV = lambda : dbus.Dictionary({}, signature="sv") +# dictionary with string key and value +DBUS_DICT_SS = lambda : dbus.Dictionary({}, signature="ss") +# empty type +DBUS_NONE = lambda : dbus.Variant(0) def get_dbus_struct(obj): ''' recursively go through all the items and replace @@ -123,65 +86,35 @@ class Remote: self.signal_object = None session_bus = dbus_support.session_bus.SessionBus() - if dbus_support.version[1] >= 41: - service = dbus.service.BusName(SERVICE, bus=session_bus) - self.signal_object = SignalObject(service) - elif dbus_support.version[1] <= 40 and dbus_support.version[1] >= 20: - service=dbus.Service(SERVICE, session_bus) - self.signal_object = SignalObject(service) + service = dbus.service.BusName(SERVICE, bus=session_bus) + self.signal_object = SignalObject(service) def raise_signal(self, signal, arg): if self.signal_object: self.signal_object.raise_signal(signal, - get_dbus_struct(arg)) + get_dbus_struct(arg)) -class SignalObject(DbusPrototype): - ''' Local object definition for /org/gajim/dbus/RemoteObject. This doc must - not be visible, because the clients can access only the remote object. ''' +class SignalObject(dbus.service.Object): + ''' Local object definition for /org/gajim/dbus/RemoteObject. + (This docstring is not be visible, because the clients can access only the remote object.)''' def __init__(self, service): self.first_show = True self.vcard_account = None # register our dbus API - if dbus_support.version[1] >= 41: - DbusPrototype.__init__(self, service, OBJ_PATH) - elif dbus_support.version[1] >= 30: - DbusPrototype.__init__(self, OBJ_PATH, service) - else: - DbusPrototype.__init__(self, OBJ_PATH, service, - [ self.toggle_roster_appearance, - self.show_next_unread, - self.list_contacts, - self.list_accounts, - self.account_info, - self.change_status, - self.open_chat, - self.send_message, - self.send_single_message, - self.contact_info, - self.send_file, - self.prefs_list, - self.prefs_store, - self.prefs_del, - self.prefs_put, - self.add_contact, - self.remove_contact, - self.get_status, - self.get_status_message, - self.start_chat, - self.send_xml, - ]) + dbus.service.Object.__init__(self, service, OBJ_PATH) def raise_signal(self, signal, arg): - ''' raise a signal, with a single string message ''' + '''raise a signal, with a single string message''' from dbus import dbus_bindings message = dbus_bindings.Signal(OBJ_PATH, INTERFACE, signal) i = message.get_iter(True) i.append(arg) self._connection.send(message) + @dbus.service.method(INTERFACE) def get_status(self, *args): '''get_status(account = None) returns status (show to be exact) which is the global one @@ -193,8 +126,9 @@ class SignalObject(DbusPrototype): return helpers.get_global_show() # return show for the given account index = gajim.connections[account].connected - return DBUS_STRING(STATUS_LIST[index]) + return DBUS_STRING(gajim.SHOW_LIST[index]) + @dbus.service.method(INTERFACE) def get_status_message(self, *args): '''get_status(account = None) returns status which is the global one @@ -208,7 +142,7 @@ class SignalObject(DbusPrototype): status = gajim.connections[account].status return DBUS_STRING(status) - + @dbus.service.method(INTERFACE) def get_account_and_contact(self, account, jid): ''' get the account (if not given) and contact instance from jid''' connected_account = None @@ -236,6 +170,7 @@ class SignalObject(DbusPrototype): return connected_account, contact + @dbus.service.method(INTERFACE) def send_file(self, *args): '''send_file(file_path, jid, account=None) send file, located at 'file_path' to 'jid', using account @@ -254,7 +189,7 @@ class SignalObject(DbusPrototype): return False def _send_message(self, jid, message, keyID, account, type = 'chat', subject = None): - ''' can be called from send_chat_message (default when send_message) + '''can be called from send_chat_message (default when send_message) or send_single_message''' if not jid or not message: return None # or raise error @@ -269,22 +204,25 @@ class SignalObject(DbusPrototype): return True return False + @dbus.service.method(INTERFACE) def send_chat_message(self, *args): - ''' send_message(jid, message, keyID=None, account=None) + '''send_message(jid, message, keyID=None, account=None) send chat 'message' to 'jid', using account (optional) 'account'. if keyID is specified, encrypt the message with the pgp key ''' jid, message, keyID, account = self._get_real_arguments(args, 4) jid = self._get_real_jid(jid, account) return self._send_message(jid, message, keyID, account) + @dbus.service.method(INTERFACE) def send_single_message(self, *args): - ''' send_single_message(jid, subject, message, keyID=None, account=None) + '''send_single_message(jid, subject, message, keyID=None, account=None) send single 'message' to 'jid', using account (optional) 'account'. if keyID is specified, encrypt the message with the pgp key ''' jid, subject, message, keyID, account = self._get_real_arguments(args, 5) jid = self._get_real_jid(jid, account) return self._send_message(jid, message, keyID, account, type, subject) + @dbus.service.method(INTERFACE) def open_chat(self, *args): ''' start_chat(jid, account=None) -> shows the tabbed window for new message to 'jid', using account(optional) 'account' ''' @@ -332,6 +270,7 @@ class SignalObject(DbusPrototype): return True return False + @dbus.service.method(INTERFACE) def change_status(self, *args, **keywords): ''' change_status(status, message, account). account is optional - if not specified status is changed for all accounts. ''' @@ -352,13 +291,15 @@ class SignalObject(DbusPrototype): status, message) return None + @dbus.service.method(INTERFACE) def show_next_unread(self, *args): - ''' Show the window(s) with next waiting messages in tabbed/group chats. ''' + '''Show the window(s) with next waiting messages in tabbed/group chats. ''' if gajim.events.get_nb_events(): gajim.interface.systray.handle_first_event() + @dbus.service.method(INTERFACE) def contact_info(self, *args): - ''' get vcard info for a contact. Return cached value of the vcard. + '''get vcard info for a contact. Return cached value of the vcard. ''' [jid] = self._get_real_arguments(args, 1) if not isinstance(jid, unicode): @@ -375,8 +316,9 @@ class SignalObject(DbusPrototype): # return empty dict return DBUS_DICT_SV() + @dbus.service.method(INTERFACE) def list_accounts(self, *args): - ''' list register accounts ''' + '''list register accounts''' result = gajim.contacts.get_accounts() if result and len(result) > 0: result_array = [] @@ -385,8 +327,9 @@ class SignalObject(DbusPrototype): return result_array return None + @dbus.service.method(INTERFACE) def account_info(self, *args): - ''' show info on account: resource, jid, nick, prio, message ''' + '''show info on account: resource, jid, nick, prio, message''' [for_account] = self._get_real_arguments(args, 1) if not gajim.connections.has_key(for_account): # account is invalid @@ -394,19 +337,20 @@ class SignalObject(DbusPrototype): account = gajim.connections[for_account] result = DBUS_DICT_SS() index = account.connected - result['status'] = DBUS_STRING(STATUS_LIST[index]) + result['status'] = DBUS_STRING(gajim.SHOW_LIST[index]) result['name'] = DBUS_STRING(account.name) result['jid'] = DBUS_STRING(gajim.get_jid_from_account(account.name)) result['message'] = DBUS_STRING(account.status) result['priority'] = DBUS_STRING(unicode(gajim.config.get_per('accounts', - account.name, 'priority'))) + account.name, 'priority'))) result['resource'] = DBUS_STRING(unicode(gajim.config.get_per('accounts', - account.name, 'resource'))) + account.name, 'resource'))) return result + @dbus.service.method(INTERFACE) def list_contacts(self, *args): - ''' list all contacts in the roster. If the first argument is specified, - then return the contacts for the specified account ''' + '''list all contacts in the roster. If the first argument is specified, + then return the contacts for the specified account''' [for_account] = self._get_real_arguments(args, 1) result = [] accounts = gajim.contacts.get_accounts() @@ -428,6 +372,7 @@ class SignalObject(DbusPrototype): return None return result + @dbus.service.method(INTERFACE) def toggle_roster_appearance(self, *args): ''' shows/hides the roster window ''' win = gajim.interface.roster.window @@ -441,6 +386,7 @@ class SignalObject(DbusPrototype): else: win.window.focus(long(time())) + @dbus.service.method(INTERFACE) def prefs_list(self, *args): prefs_dict = DBUS_DICT_SS() def get_prefs(data, name, path, value): @@ -455,6 +401,7 @@ class SignalObject(DbusPrototype): gajim.config.foreach(get_prefs) return prefs_dict + @dbus.service.method(INTERFACE) def prefs_store(self, *args): try: gajim.interface.save_config() @@ -462,6 +409,7 @@ class SignalObject(DbusPrototype): return False return True + @dbus.service.method(INTERFACE) def prefs_del(self, *args): [key] = self._get_real_arguments(args, 1) if not key: @@ -475,6 +423,7 @@ class SignalObject(DbusPrototype): gajim.config.del_per(key_path[0], key_path[1], key_path[2]) return True + @dbus.service.method(INTERFACE) def prefs_put(self, *args): [key] = self._get_real_arguments(args, 1) if not key: @@ -488,6 +437,7 @@ class SignalObject(DbusPrototype): gajim.config.set_per(key_path[0], key_path[1], subname, value) return True + @dbus.service.method(INTERFACE) def add_contact(self, *args): [jid, account] = self._get_real_arguments(args, 2) if account: @@ -503,6 +453,7 @@ class SignalObject(DbusPrototype): AddNewContactWindow(account = None, jid = jid) return True + @dbus.service.method(INTERFACE) def remove_contact(self, *args): [jid, account] = self._get_real_arguments(args, 2) jid = self._get_real_jid(jid, account) @@ -597,9 +548,11 @@ class SignalObject(DbusPrototype): contact_dict['resources'] = DBUS_VARIANT(contact_dict['resources']) return contact_dict + @dbus.service.method(INTERFACE) def get_unread_msgs_number(self, *args): return str(gajim.events.get_nb_events) + @dbus.service.method(INTERFACE) def start_chat(self, *args): [account] = self._get_real_arguments(args, 1) if not account: @@ -608,6 +561,7 @@ class SignalObject(DbusPrototype): NewChatDialog(account) return True + @dbus.service.method(INTERFACE) def send_xml(self, *args): xml, account = self._get_real_arguments(args, 2) if account: @@ -615,36 +569,3 @@ class SignalObject(DbusPrototype): else: for acc in gajim.contacts.get_accounts(): gajim.connections[acc].send_stanza(xml) - - if dbus_support.version[1] >= 30 and dbus_support.version[1] <= 40: - method = dbus.method - signal = dbus.signal - elif dbus_support.version[1] >= 41: - method = dbus.service.method - signal = dbus.service.signal - - # prevent using decorators, because they are not supported - # on python < 2.4 - # FIXME: use decorators when python2.3 (and dbus 0.23) is OOOOOOLD - toggle_roster_appearance = method(INTERFACE)(toggle_roster_appearance) - list_contacts = method(INTERFACE)(list_contacts) - list_accounts = method(INTERFACE)(list_accounts) - show_next_unread = method(INTERFACE)(show_next_unread) - change_status = method(INTERFACE)(change_status) - open_chat = method(INTERFACE)(open_chat) - contact_info = method(INTERFACE)(contact_info) - send_message = method(INTERFACE)(send_chat_message) - send_single_message = method(INTERFACE)(send_single_message) - send_file = method(INTERFACE)(send_file) - prefs_list = method(INTERFACE)(prefs_list) - prefs_put = method(INTERFACE)(prefs_put) - prefs_del = method(INTERFACE)(prefs_del) - prefs_store = method(INTERFACE)(prefs_store) - remove_contact = method(INTERFACE)(remove_contact) - add_contact = method(INTERFACE)(add_contact) - get_status = method(INTERFACE)(get_status) - get_status_message = method(INTERFACE)(get_status_message) - account_info = method(INTERFACE)(account_info) - get_unread_msgs_number = method(INTERFACE)(get_unread_msgs_number) - start_chat = method(INTERFACE)(start_chat) - send_xml = method(INTERFACE)(send_xml) diff --git a/src/roster_window.py b/src/roster_window.py index 0ce9cd2dd..4100e54b3 100644 --- a/src/roster_window.py +++ b/src/roster_window.py @@ -1,3 +1,4 @@ +# -*- coding: utf-8 -*- ## roster_window.py ## ## Copyright (C) 2003-2006 Yann Le Boulanger @@ -39,6 +40,10 @@ from chat_control import ChatControl from groupchat_control import GroupchatControl from groupchat_control import PrivateChatControl +import dbus_support +if dbus_support.supported: + from music_track_listener import MusicTrackListener + #(icon, name, type, jid, account, editable, second pixbuf) ( C_IMG, # image to show state (online, new message etc) @@ -50,9 +55,6 @@ C_EDITABLE, # cellrenderer text that holds name editable or not? C_SECPIXBUF, # secondary_pixbuf (holds avatar or padlock) ) = range(7) - -DEFAULT_ICONSET = 'dcraven' - class RosterWindow: '''Class for main window of gtkgui interface''' @@ -624,9 +626,6 @@ class RosterWindow: self.join_gc_room(account, bookmark['jid'], bookmark['nick'], bookmark['password']) - def on_bm_header_changed_state(self, widget, event): - widget.set_state(gtk.STATE_NORMAL) #do not allow selected_state - def on_send_server_message_menuitem_activate(self, widget, account): server = gajim.config.get_per('accounts', account, 'hostname') server += '/announce/online' @@ -717,6 +716,11 @@ class RosterWindow: return new_chat_menuitem = self.xml.get_widget('new_chat_menuitem') join_gc_menuitem = self.xml.get_widget('join_gc_menuitem') + iconset = gajim.config.get('iconset') + path = os.path.join(gajim.DATA_DIR, 'iconsets', iconset, '16x16') + state_images = self.load_iconset(path) + if state_images.has_key('muc_active'): + join_gc_menuitem.set_image(state_images['muc_active']) add_new_contact_menuitem = self.xml.get_widget('add_new_contact_menuitem') service_disco_menuitem = self.xml.get_widget('service_disco_menuitem') advanced_menuitem = self.xml.get_widget('advanced_menuitem') @@ -787,7 +791,7 @@ class RosterWindow: label.set_use_underline(False) gc_item = gtk.MenuItem() gc_item.add(label) - gc_item.connect('state-changed', self.on_bm_header_changed_state) + gc_item.connect('state-changed', gtkgui_helpers.on_bm_header_changed_state) gc_sub_menu.append(gc_item) self.add_bookmarks_list(gc_sub_menu, account) @@ -1084,8 +1088,12 @@ class RosterWindow: win.redraw_tab(ctrl) name = contact.get_shown_name() - if contact.resource != '': + + # if multiple resources (or second one disconnecting) + if (len(contact_instances) > 1 or (len(contact_instances) == 1 and \ + show in ('offline', 'error'))) and contact.resource != '': name += '/' + contact.resource + uf_show = helpers.get_uf_show(show) if status: ctrl.print_conversation(_('%s is now %s (%s)') % (name, uf_show, @@ -1204,7 +1212,7 @@ class RosterWindow: gajim.connections[account].request_register_agent_info(contact.jid) def on_remove_agent(self, widget, list_): - '''When an agent is requested to log in or off. list_ is a list of + '''When an agent is requested to be removed. list_ is a list of (contact, account) tuple''' for (contact, account) in list_: if gajim.config.get_per('accounts', account, 'hostname') == \ @@ -1226,6 +1234,17 @@ class RosterWindow: gajim.contacts.remove_jid(account, contact.jid) gajim.contacts.remove_contact(account, contact) + # Check if there are unread events from some contacts + has_unread_events = False + for (contact, account) in list_: + for jid in gajim.events.get_events(account): + if jid.endswith(contact.jid): + has_unread_events = True + break + if has_unread_events: + dialogs.ErrorDialog(_('You have unread messages'), + _('You must read them before removing this transport.')) + return if len(list_) == 1: pritext = _('Transport "%s" will be removed') % contact.jid sectext = _('You will no longer be able to send and receive messages to contacts from this transport.') @@ -1332,7 +1351,7 @@ class RosterWindow: '''Make contact's popup menu''' model = self.tree.get_model() jid = model[iter][C_JID].decode('utf-8') - path = model.get_path(iter) + tree_path = model.get_path(iter) account = model[iter][C_ACCOUNT].decode('utf-8') our_jid = jid == gajim.get_jid_from_account(account) contact = gajim.contacts.get_contact_with_highest_priority(account, jid) @@ -1368,6 +1387,12 @@ class RosterWindow: img.set_from_file(path_to_kbd_input_img) rename_menuitem.set_image(img) + iconset = gajim.config.get('iconset') + path = os.path.join(gajim.DATA_DIR, 'iconsets', iconset, '16x16') + state_images = self.load_iconset(path) + if state_images.has_key('muc_active'): + invite_menuitem.set_image(state_images['muc_active']) + above_subscription_separator = xml.get_widget( 'above_subscription_separator') subscription_menuitem = xml.get_widget('subscription_menuitem') @@ -1387,8 +1412,6 @@ class RosterWindow: start_chat_menuitem.set_submenu(sub_menu) iconset = gajim.config.get('iconset') - if not iconset: - iconset = DEFAULT_ICONSET path = os.path.join(gajim.DATA_DIR, 'iconsets', iconset, '16x16') for c in contacts: # icon MUST be different instance for every item @@ -1403,7 +1426,7 @@ class RosterWindow: else: # one resource start_chat_menuitem.connect('activate', - self.on_roster_treeview_row_activated, path) + self.on_roster_treeview_row_activated, tree_path) if contact.resource: send_file_menuitem.connect('activate', @@ -1444,7 +1467,7 @@ class RosterWindow: menuitem.connect('activate', self.on_invite_to_room, [(contact, account)], room_jid, acct) submenu.append(menuitem) - rename_menuitem.connect('activate', self.on_rename, iter, path) + rename_menuitem.connect('activate', self.on_rename, iter, tree_path) remove_from_roster_menuitem.connect('activate', self.on_req_usub, [(contact, account)]) information_menuitem.connect('activate', self.on_info, contact, @@ -1774,8 +1797,6 @@ class RosterWindow: # we have to create our own set of icons for the menu # using self.jabber_status_images is poopoo iconset = gajim.config.get('iconset') - if not iconset: - iconset = DEFAULT_ICONSET path = os.path.join(gajim.DATA_DIR, 'iconsets', iconset, '16x16') state_images = self.load_iconset(path) @@ -1908,8 +1929,6 @@ class RosterWindow: else: menu = gtk.Menu() iconset = gajim.config.get('iconset') - if not iconset: - iconset = DEFAULT_ICONSET path = os.path.join(gajim.DATA_DIR, 'iconsets', iconset, '16x16') accounts = [] # Put accounts in a list to sort them for account in gajim.connections: @@ -2419,6 +2438,41 @@ _('If "%s" accepts this request you will know his or her status.') % jid) self.send_status(acct, status, message) self.update_status_combobox() + ## enable setting status msg from currently playing music track + def enable_syncing_status_msg_from_current_music_track(self, enabled): + '''if enabled is True, we listen to events from music players about + currently played music track, and we update our + status message accordinly''' + if not dbus_support.supported: + # do nothing if user doesn't have D-Bus bindings + return + if enabled: + if self._music_track_changed_signal is None: + listener = MusicTrackListener.get() + self._music_track_changed_signal = listener.connect( + 'music-track-changed', self._music_track_changed) + track = listener.get_playing_track() + self._music_track_changed(listener, track) + else: + if self._music_track_changed_signal is not None: + listener = MusicTrackListener.get() + listener.disconnect(self._music_track_changed_signal) + self._music_track_changed_signal = None + self._music_track_changed(None, None) + + def _music_track_changed(self, unused_listener, music_track_info): + accounts = gajim.connections.keys() + if music_track_info is None: + status_message = '' + else: + status_message = _('♪ "%(title)s" by %(artist)s ♪') % \ + {'title': music_track_info.title, + 'artist': music_track_info.artist } + for acct in accounts: + current_show = gajim.SHOW_LIST[gajim.connections[acct].connected] + self.send_status(acct, current_show, status_message) + + def update_status_combobox(self): # table to change index in connection.connected to index in combobox table = {'offline':9, 'connecting':9, 'online':0, 'chat':1, 'away':2, @@ -2599,12 +2653,12 @@ _('If "%s" accepts this request you will know his or her status.') % jid) # We save it in a queue type_ = 'chat' + event_type = 'message_received' if msg_type == 'normal': type_ = 'normal' - show_in_roster = notify.get_show_in_roster('message_received', account, - contact) - show_in_systray = notify.get_show_in_systray('message_received', account, - contact) + event_type = 'single_message_received' + show_in_roster = notify.get_show_in_roster(event_type, account, contact) + show_in_systray = notify.get_show_in_systray(event_type, account, contact) event = gajim.events.create_event(type_, (msg, subject, msg_type, tim, encrypted, resource, msg_id), show_in_roster = show_in_roster, show_in_systray = show_in_systray) @@ -3134,8 +3188,13 @@ _('If "%s" accepts this request you will know his or her status.') % jid) def make_jabber_state_images(self): '''initialise jabber_state_images dict''' iconset = gajim.config.get('iconset') - if not iconset: - iconset = 'dcraven' + if iconset: + path = os.path.join(gajim.DATA_DIR, 'iconsets', iconset, '16x16') + if not os.path.exists(path): + iconset = gajim.config.DEFAULT_ICONSET + else: + iconset = gajim.config.DEFAULT_ICONSET + path = os.path.join(gajim.DATA_DIR, 'iconsets', iconset, '32x32') self.jabber_state_images['32'] = self.load_iconset(path) @@ -3174,7 +3233,8 @@ _('If "%s" accepts this request you will know his or her status.') % jid) model[iter][1] = self.jabber_state_images['16'][model[iter][2]] iter = model.iter_next(iter) # Update the systray - gajim.interface.systray.set_img() + if gajim.interface.systray_enabled: + gajim.interface.systray.set_img() for win in gajim.interface.msg_win_mgr.windows(): for ctrl in win.controls(): @@ -3722,6 +3782,7 @@ _('If "%s" accepts this request you will know his or her status.') % jid) def __init__(self): self.xml = gtkgui_helpers.get_glade('roster_window.glade') self.window = self.xml.get_widget('roster_window') + self._music_track_changed_signal = None gajim.interface.msg_win_mgr = MessageWindowMgr() self.advanced_menus = [] # We keep them to destroy them if gajim.config.get('roster_window_skip_taskbar'): @@ -3898,6 +3959,13 @@ _('If "%s" accepts this request you will know his or her status.') % jid) self.tooltip = tooltips.RosterTooltip() self.draw_roster() + ## Music Track notifications + ## FIXME: we use a timeout because changing status of + ## accounts has no effect until they are connected. + gobject.timeout_add(1000, + self.enable_syncing_status_msg_from_current_music_track, + gajim.config.get('set_status_msg_from_current_music_track')) + if gajim.config.get('show_roster_on_startup'): self.window.show_all() else: diff --git a/src/systray.py b/src/systray.py index 926c077d1..ade7ffd81 100644 --- a/src/systray.py +++ b/src/systray.py @@ -124,11 +124,12 @@ class Systray: # We need our own set of status icons, let's make 'em! iconset = gajim.config.get('iconset') - if not iconset: - iconset = 'dcraven' path = os.path.join(gajim.DATA_DIR, 'iconsets', iconset, '16x16') state_images = gajim.interface.roster.load_iconset(path) + if state_images.has_key('muc_active'): + join_gc_menuitem.set_image(state_images['muc_active']) + for show in ('online', 'chat', 'away', 'xa', 'dnd', 'invisible'): uf_show = helpers.get_uf_show(show, use_mnemonic = True) item = gtk.ImageMenuItem(uf_show) @@ -194,6 +195,7 @@ class Systray: label.set_use_underline(False) gc_item = gtk.MenuItem() gc_item.add(label) + gc_item.connect('state-changed', gtkgui_helpers.on_bm_header_changed_state) gc_sub_menu.append(gc_item) gajim.interface.roster.add_bookmarks_list(gc_sub_menu, account) @@ -250,11 +252,11 @@ class Systray: if len(gajim.events.get_systray_events()) == 0: # no pending events, so toggle visible/hidden for roster window if win.get_property('visible'): # visible in ANY virtual desktop? - win.hide() # we hide it from VD that was visible in - # but we could be in another VD right now. eg vd2 - # and we want not only to hide it in vd1 but also show it in vd2 - gtkgui_helpers.possibly_move_window_in_current_desktop(win) + # we could be in another VD right now. eg vd2 + # and we want to show it in vd2 + if not gtkgui_helpers.possibly_move_window_in_current_desktop(win): + win.hide() # else we hide it from VD that was visible in else: win.present() else: diff --git a/src/vcard.py b/src/vcard.py index 009605b38..975d39a74 100644 --- a/src/vcard.py +++ b/src/vcard.py @@ -61,6 +61,7 @@ class VcardWindow: # the contact variable is the jid if vcard is true self.xml = gtkgui_helpers.get_glade('vcard_information_window.glade') self.window = self.xml.get_widget('vcard_information_window') + self.progressbar = self.xml.get_widget('progressbar') self.contact = contact self.account = account @@ -68,13 +69,23 @@ class VcardWindow: self.avatar_mime_type = None self.avatar_encoded = None + self.vcard_arrived = False + self.os_info_arrived = False + self.update_progressbar_timeout_id = gobject.timeout_add(100, + self.update_progressbar) self.fill_jabber_page() self.xml.signal_autoconnect(self) self.window.show_all() + def update_progressbar(self): + self.progressbar.pulse() + return True # loop forever + def on_vcard_information_window_destroy(self, widget): + if self.update_progressbar_timeout_id is not None: + gobject.source_remove(self.update_progressbar_timeout_id) del gajim.interface.instances[self.account]['infos'][self.contact.jid] def on_vcard_information_window_key_press_event(self, widget, event): @@ -113,7 +124,15 @@ class VcardWindow: def set_value(self, entry_name, value): try: - self.xml.get_widget(entry_name).set_text(value) + if value and entry_name == 'URL_label': + if gtk.pygtk_version >= (2, 10, 0) and gtk.gtk_version >= (2, 10, 0): + widget = gtk.LinkButton(value, value) + else: + widget = gtk.Label(value) + table = self.xml.get_widget('personal_info_table') + table.attach(widget, 1, 4, 3, 4, yoptions = 0) + else: + self.xml.get_widget(entry_name).set_text(value) except AttributeError: pass @@ -144,8 +163,17 @@ class VcardWindow: if i == 'DESC': self.xml.get_widget('DESC_textview').get_buffer().set_text( vcard[i], 0) - else: + elif i != 'jid': # Do not override jid_label self.set_value(i + '_label', vcard[i]) + self.vcard_arrived = True + self.test_remove_progressbar() + + def test_remove_progressbar(self): + if self.update_progressbar_timeout_id is not None and \ + self.vcard_arrived and self.os_info_arrived: + gobject.source_remove(self.update_progressbar_timeout_id) + self.progressbar.hide() + self.update_progressbar_timeout_id = None def set_last_status_time(self): self.fill_status_label() @@ -174,6 +202,8 @@ class VcardWindow: os = Q_('?OS:Unknown') self.xml.get_widget('client_name_version_label').set_text(client) self.xml.get_widget('os_label').set_text(os) + self.os_info_arrived = True + self.test_remove_progressbar() def fill_status_label(self): if self.xml.get_widget('information_notebook').get_n_pages() < 4: @@ -251,8 +281,10 @@ class VcardWindow: gajim.connections[self.account].request_last_status_time(self.contact.jid, self.contact.resource) - # Request os info in contact is connected - if self.contact.show not in ('offline', 'error'): + # do not wait for os_info if contact is not connected + if self.contact.show in ('offline', 'error'): + self.os_info_arrived = True + else: # Request os info if contact is connected gobject.idle_add(gajim.connections[self.account].request_os_info, self.contact.jid, self.contact.resource) self.os_info = {0: {'resource': self.contact.resource, 'client': '', @@ -283,3 +315,6 @@ class VcardWindow: self.fill_status_label() gajim.connections[self.account].request_vcard(self.contact.jid, self.is_fake) + + def on_close_button_clicked(self, widget): + self.window.destroy() From cd20e8741946cd02977943e725475f5e4544760b Mon Sep 17 00:00:00 2001 From: Dimitur Kirov Date: Tue, 26 Sep 2006 16:02:52 +0000 Subject: [PATCH 075/110] complete merge (deleting files and recent updates) --- data/glade/privacy_list_edit_window.glade | 779 ------------------ data/glade/privacy_lists_first_window.glade | 255 ------ .../transports/gadugadu/16x16/away.png | Bin 919 -> 0 bytes .../transports/gadugadu/16x16/chat.png | Bin 944 -> 0 bytes .../transports/gadugadu/16x16/dnd.png | Bin 919 -> 0 bytes .../transports/gadugadu/16x16/offline.png | Bin 944 -> 0 bytes .../transports/gadugadu/16x16/online.png | Bin 944 -> 0 bytes .../iconsets/transports/gadugadu/16x16/xa.png | Bin 919 -> 0 bytes .../transports/gadugadu/32x32/away.png | Bin 2241 -> 0 bytes .../transports/gadugadu/32x32/chat.png | Bin 2274 -> 0 bytes .../transports/gadugadu/32x32/dnd.png | Bin 2241 -> 0 bytes .../transports/gadugadu/32x32/offline.png | Bin 2328 -> 0 bytes .../transports/gadugadu/32x32/online.png | Bin 2274 -> 0 bytes .../iconsets/transports/gadugadu/32x32/xa.png | Bin 2241 -> 0 bytes .../transports/gadugadu/48x48/offline.png | Bin 3759 -> 0 bytes .../transports/gadugadu/48x48/online.png | Bin 3759 -> 0 bytes data/pixmaps/events/new_email_recv.png | Bin 0 -> 2385 bytes src/history_manager.py | 4 +- src/music_track_listener.py | 55 +- src/roster_window.py | 12 +- src/systraywin32.py | 5 +- 21 files changed, 61 insertions(+), 1049 deletions(-) delete mode 100644 data/glade/privacy_list_edit_window.glade delete mode 100644 data/glade/privacy_lists_first_window.glade delete mode 100644 data/iconsets/transports/gadugadu/16x16/away.png delete mode 100644 data/iconsets/transports/gadugadu/16x16/chat.png delete mode 100644 data/iconsets/transports/gadugadu/16x16/dnd.png delete mode 100644 data/iconsets/transports/gadugadu/16x16/offline.png delete mode 100644 data/iconsets/transports/gadugadu/16x16/online.png delete mode 100644 data/iconsets/transports/gadugadu/16x16/xa.png delete mode 100644 data/iconsets/transports/gadugadu/32x32/away.png delete mode 100644 data/iconsets/transports/gadugadu/32x32/chat.png delete mode 100644 data/iconsets/transports/gadugadu/32x32/dnd.png delete mode 100644 data/iconsets/transports/gadugadu/32x32/offline.png delete mode 100644 data/iconsets/transports/gadugadu/32x32/online.png delete mode 100644 data/iconsets/transports/gadugadu/32x32/xa.png delete mode 100644 data/iconsets/transports/gadugadu/48x48/offline.png delete mode 100644 data/iconsets/transports/gadugadu/48x48/online.png create mode 100644 data/pixmaps/events/new_email_recv.png diff --git a/data/glade/privacy_list_edit_window.glade b/data/glade/privacy_list_edit_window.glade deleted file mode 100644 index 1f14d6b71..000000000 --- a/data/glade/privacy_list_edit_window.glade +++ /dev/null @@ -1,779 +0,0 @@ - - - - - - - 6 - True - Privacy List - GTK_WINDOW_TOPLEVEL - GTK_WIN_POS_NONE - False - False - False - True - False - False - GDK_WINDOW_TYPE_HINT_NORMAL - GDK_GRAVITY_NORTH_WEST - True - False - - - - - 600 - True - False - 0 - - - - True - True - 0 - - - - True - <i>Privacy List</i> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - True - True - Active for this session - True - GTK_RELIEF_NORMAL - True - False - False - True - - - - 0 - False - False - - - - - - True - True - Active on each startup - True - GTK_RELIEF_NORMAL - True - False - False - True - - - - 0 - False - False - - - - - 0 - False - True - - - - - - True - - - 5 - False - False - - - - - - True - <b>List of rules</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 5 - False - False - - - - - - True - - False - True - - - - 5 - False - True - - - - - - True - True - 0 - - - - 5 - True - True - gtk-add - True - GTK_RELIEF_NORMAL - True - - - - 0 - False - False - - - - - - 5 - True - True - gtk-remove - True - GTK_RELIEF_NORMAL - True - - - - 0 - False - False - - - - - - 6 - True - True - gtk-edit - True - GTK_RELIEF_NORMAL - True - - - - 0 - False - False - - - - - 0 - False - True - - - - - - 5 - False - 0 - - - - True - - - 5 - True - True - - - - - - True - <b>Add / Edit a rule</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 5 - False - False - - - - - - True - False - 0 - - - - True - True - 0 - - - - True - True - Allow - True - GTK_RELIEF_NORMAL - True - False - False - True - - - 0 - False - False - - - - - - True - True - Deny - True - GTK_RELIEF_NORMAL - True - False - False - True - edit_allow_radiobutton - - - 0 - False - False - - - - - 0 - True - True - - - - - - True - True - 0 - - - - 5 - True - False - 0 - - - - True - True - JabberID - True - GTK_RELIEF_NORMAL - True - False - False - True - - - 5 - False - False - - - - - - True - True - True - True - 0 - - True - â— - False - - - 5 - True - True - - - - - 0 - True - True - - - - - - 5 - True - False - 0 - - - - True - True - all in the group - True - GTK_RELIEF_NORMAL - True - False - False - True - edit_type_jabberid_radiobutton - - - 5 - False - False - - - - - - True - - False - True - - - 5 - True - True - - - - - 0 - True - True - - - - - - 5 - True - False - 0 - - - - True - True - all by subscription - True - GTK_RELIEF_NORMAL - True - False - False - True - edit_type_jabberid_radiobutton - - - 5 - False - False - - - - - - True - none -both -from -to - False - True - - - 5 - True - True - - - - - 0 - True - True - - - - - - 10 - True - False - 0 - - - - True - True - All - True - GTK_RELIEF_NORMAL - True - False - False - True - edit_type_jabberid_radiobutton - - - 0 - False - False - - - - - 0 - False - False - - - - - 0 - True - True - - - - - - True - True - 0 - - - - True - True - to send me messages - True - GTK_RELIEF_NORMAL - True - False - False - True - - - 0 - False - False - - - - - - True - True - to send me queries - True - GTK_RELIEF_NORMAL - True - False - False - True - - - 0 - False - False - - - - - - True - True - to view my status - True - GTK_RELIEF_NORMAL - True - False - False - True - - - 0 - False - False - - - - - - True - True - to send me status - True - GTK_RELIEF_NORMAL - True - False - False - True - - - 0 - False - False - - - - - 0 - True - True - - - - - 0 - True - True - - - - - - True - True - 0 - - - - True - False - 0 - - - - True - Order: - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 5 - False - False - - - - - - True - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 1 0 100 1 10 10 - - - 0 - False - True - - - - - 0 - True - True - - - - - - 5 - True - True - gtk-save - True - GTK_RELIEF_NORMAL - True - - - - 0 - False - False - - - - - 0 - True - True - - - - - 0 - True - True - - - - - - True - - - 0 - False - True - - - - - - True - True - 0 - - - - 5 - True - True - gtk-refresh - True - GTK_RELIEF_NORMAL - True - - - - 0 - False - False - - - - - - 5 - True - True - gtk-close - True - GTK_RELIEF_NORMAL - True - - - - 0 - False - False - - - - - 0 - False - True - - - - - - - diff --git a/data/glade/privacy_lists_first_window.glade b/data/glade/privacy_lists_first_window.glade deleted file mode 100644 index 7a7470123..000000000 --- a/data/glade/privacy_lists_first_window.glade +++ /dev/null @@ -1,255 +0,0 @@ - - - - - - - 12 - True - window1 - GTK_WINDOW_TOPLEVEL - GTK_WIN_POS_NONE - False - True - False - True - False - False - GDK_WINDOW_TYPE_HINT_NORMAL - GDK_GRAVITY_NORTH_WEST - True - False - - - - - True - False - 0 - - - - True - Server-based Privacy Lists - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 5 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - 4 - True - - False - True - - - 0 - True - True - - - - - - True - True - 0 - - - - 5 - True - True - gtk-delete - True - GTK_RELIEF_NORMAL - True - - - - 0 - False - False - - - - - - 5 - True - True - gtk-open - True - GTK_RELIEF_NORMAL - True - - - - 0 - False - False - - - - - 0 - True - True - - - - - - True - - - 5 - True - True - - - - - - True - Create your own Privacy Lists - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 5 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - True - True - True - True - 0 - - True - â— - False - - - 4 - False - False - - - - - - 5 - True - True - gtk-new - True - GTK_RELIEF_NORMAL - True - - - - 0 - False - False - - - - - - True - - - 5 - True - True - - - - - - True - True - 0 - - - - 5 - True - True - gtk-refresh - True - GTK_RELIEF_NORMAL - True - - - - 0 - False - False - - - - - - 5 - True - True - gtk-close - True - GTK_RELIEF_NORMAL - True - - - - 0 - False - False - - - - - 0 - True - True - - - - - - - diff --git a/data/iconsets/transports/gadugadu/16x16/away.png b/data/iconsets/transports/gadugadu/16x16/away.png deleted file mode 100644 index e84aea305eac489dfce9c6f3e1c89f14c07796b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 919 zcmV;I18Dq-P)^@R5*== zQ)_5bcNG8qZ*J0SZql@Q*s#_#hSXY>VIB2RQc#FRu|w3liJOd-`hYoxn}dCkIc5<* zY*U0f<_EP>tJQt*RjZ;{9d0@mMW{_{u#cG9_BL(vxYwKJ-m?!gMWo;l4jeeI-}!M4 zBO*+P)m245F0b_0fic6?o6q*#y#MOhw24GCWdPWg*mrC8@)+Ou<6 zh=@??x2^X$XVd~<*&06EXkGQ}rmkCGZ?@S)uHl#VFMS?IUN$yw&P><(YG3oYBbz_b zR2e@V>UhQ&D<>k25fK<;xvh=0gTdts%mAQGW-ytyLa-Ksv^3=LUT}O821;QvIfC{( z5#_7>4>zf5<^um_jrgj-tltAme7ksNW`e64R-xwPm!O^p! z$LX|o5dgR>&Gx?rzH4rM)GIgx$gvjT%B`p1cryUt^7VfJ5IEk2!)N-3?sranOm9SE zl?$DpEiU)`u%OiKURhOXcX(HDan*#`WdS_7`zLa^6y`47f;*?Sqrj5H!w3JW2b#Jf z30Y5!CTO4G+xn$#-|VRNmz5Tpd4rvCMiGJuaL>#~<-#Hu^)VFWai}O2kWq$^Z;bz^EhlRZIboyAFXgYozQh1(MS}ZZrX^Nnl+G9Wq5G+B}8b{A62>( zl~T#qbR9$lQ4~M)dcDt296v#CL)Ud09v+_ZBLfktulqt@Tv74D=ks0Sd43Lv2qh&Y zw-bp3y$_0_kTfC@5mESgnEZbKJq`ehJ;lWqi)Gp~e;a8v4O5N@0ARPor@IH+>g(u8V`FCPwylH7M6!uxr^^S tzR-bv4l7ra&Ol8lbTA_6C#U=7{{X~EsD&q2ClCMt002ovPDHLkV1hL_sT2SJ diff --git a/data/iconsets/transports/gadugadu/16x16/chat.png b/data/iconsets/transports/gadugadu/16x16/chat.png deleted file mode 100644 index 9d9b4fe4a9ec4dc3ecbb54c6f94d2b6e40967c87..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 944 zcmV;h15f;kP)Jlr37&A+M3e+0O;_m&0~rF4o>uU@WB@w z2ALVvq2isDWrb}3DBmOJ2kmHG*)?$frS{@tr#O71=b2z-sV85nxyR?-*&6IV`BD2W zE2HDh4}Q8%L}6yOh?zk|?i0t_CbqWJDga;^CXB2L4p%wY%0izTg^-hwSc8$AM$d(4 z>VOpci3j+ z?P0y-@di0?`gb!Vh_ECCD?5*5VjPAxgihmsxZy1Vi9WM3VfEK%oYr~UPM|XPg_|L|e zn&PvRS0WKr{Mgkt916G!#%@`doOdHsQwKG13pYpl;guus7e?`YL{i`TD!FGOZk|M5 zQ2_9Kd)?(j2R4V(u_2h6igYTA>9`3y&7x4mAqfkTY=>nT*nLDBiu{wSXJ%b2Zg)4X zuL|Y#84yfdycW}kM#rtPf?>FAG2ECijLxrlR!?Oiz}U1#4#+Yd{Erv5Z15iX@b!kd zeNWsyxx(+*z5RjGfvd+n964IVo7PApiVgLvD#YK^wFs$|J-gSw_;lhpo*Ds zU(ntgIa^@R5*== zQ)_5bcNG8qZ*J0SZql@Q*s#_#hSXY>VIB2RQc#FRu|w3liJOd-`hYoxn}dCkIc5<* zY*U0f<_EP>tJQt*RjZ;{9d0@mMW{_{u#cG9_BL(vxYwKJ-m?!gMWo;l4jeeI-}!M4 zBO*+P)m245F0b_0fic6?o6q*#y#MOhw24GCWdPWg*mrC8@)+Ou<6 zh=@??x2^X$XVd~<*&06EXkGQ}rmkCGZ?@S)uHl#VFMS?IUN$yw&P><(YG3oYBbz_b zR2e@V>UhQ&D<>k25fK<;xvh=0gTdts%mAQGW-ytyLa-Ksv^3=LUT}O821;QvIfC{( z5#_7>4>zf5<^um_jrgj-tltAme7ksNW`e64R-xwPm!O^p! z$LX|o5dgR>&Gx?rzH4rM)GIgx$gvjT%B`p1cryUt^7VfJ5IEk2!)N-3?sranOm9SE zl?$DpEiU)`u%OiKURhOXcX(HDan*#`WdS_7`zLa^6y`47f;*?Sqrj5H!w3JW2b#Jf z30Y5!CTO4G+xn$#-|VRNmz5Tpd4rvCMiGJuaL>#~<-#Hu^)VFWai}O2kWq$^Z;bz^EhlRZIboyAFXgYozQh1(MS}ZZrX^Nnl+G9Wq5G+B}8b{A62>( zl~T#qbR9$lQ4~M)dcDt296v#CL)Ud09v+_ZBLfktulqt@Tv74D=ks0Sd43Lv2qh&Y zw-bp3y$_0_kTfC@5mESgnEZbKJq`ehJ;lWqi)Gp~e;a8v4O5N@0ARPor@IH+>g(u8V`FCPwylH7M6!uxr^^S tzR-bv4l7ra&Ol8lbTA_6C#U=7{{X~EsD&q2ClCMt002ovPDHLkV1hL_sT2SJ diff --git a/data/iconsets/transports/gadugadu/16x16/offline.png b/data/iconsets/transports/gadugadu/16x16/offline.png deleted file mode 100644 index b8623f4b53640a9838e0cbaf67ef1137bdeaa527..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 944 zcmV;h15f;kP)aZ-A0$b?b%2G<$LK-d_Y&9gU7}KiMwB5{-D0^K`!RhV zaz+v#4tzIBL`{q_lNe(lBI(52ee*lpT15cJ8CihmAr_Y)mo=a~h#{BN!BYx`8prVX z&Gg~VhxTilHpH*2AwSvN_*q+^@sMD(lHFeqp~wy*f}twl#X@A_F{shMkVwSQfBMRV zuIr}&fXk0L9KP}T4`K=b#g0Zb)t~)^GAaa(OWRTL|)81h*qm^P|z9rv`8RF`F`s zAmx=vL>o_i@a`RNi9@)jJU}9sfp1F_D!PNRTS&MrMWrf)5{aR3ySjnzrN7h zwQHz$bCrS3}Q6pzDKYSkAwJm)6+F*B4gjk{+R;#ZESYRPJb5>o zIe%rUuijJM_hx&GA2~w*wHwii`wP#9?#`cVt#LX>r)NhD!#MLFGfAS@48X-0!`8~u z(C8}%*~rTWSi^?W@s(SN7K`PnfA-M-*}1w%Iw}Jlr37&A+M3e+0O;_m&0~rF4o>uU@WB@w z2ALVvq2isDWrb}3DBmOJ2kmHG*)?$frS{@tr#O71=b2z-sV85nxyR?-*&6IV`BD2W zE2HDh4}Q8%L}6yOh?zk|?i0t_CbqWJDga;^CXB2L4p%wY%0izTg^-hwSc8$AM$d(4 z>VOpci3j+ z?P0y-@di0?`gb!Vh_ECCD?5*5VjPAxgihmsxZy1Vi9WM3VfEK%oYr~UPM|XPg_|L|e zn&PvRS0WKr{Mgkt916G!#%@`doOdHsQwKG13pYpl;guus7e?`YL{i`TD!FGOZk|M5 zQ2_9Kd)?(j2R4V(u_2h6igYTA>9`3y&7x4mAqfkTY=>nT*nLDBiu{wSXJ%b2Zg)4X zuL|Y#84yfdycW}kM#rtPf?>FAG2ECijLxrlR!?Oiz}U1#4#+Yd{Erv5Z15iX@b!kd zeNWsyxx(+*z5RjGfvd+n964IVo7PApiVgLvD#YK^wFs$|J-gSw_;lhpo*Ds zU(ntgIa^@R5*== zQ)_5bcNG8qZ*J0SZql@Q*s#_#hSXY>VIB2RQc#FRu|w3liJOd-`hYoxn}dCkIc5<* zY*U0f<_EP>tJQt*RjZ;{9d0@mMW{_{u#cG9_BL(vxYwKJ-m?!gMWo;l4jeeI-}!M4 zBO*+P)m245F0b_0fic6?o6q*#y#MOhw24GCWdPWg*mrC8@)+Ou<6 zh=@??x2^X$XVd~<*&06EXkGQ}rmkCGZ?@S)uHl#VFMS?IUN$yw&P><(YG3oYBbz_b zR2e@V>UhQ&D<>k25fK<;xvh=0gTdts%mAQGW-ytyLa-Ksv^3=LUT}O821;QvIfC{( z5#_7>4>zf5<^um_jrgj-tltAme7ksNW`e64R-xwPm!O^p! z$LX|o5dgR>&Gx?rzH4rM)GIgx$gvjT%B`p1cryUt^7VfJ5IEk2!)N-3?sranOm9SE zl?$DpEiU)`u%OiKURhOXcX(HDan*#`WdS_7`zLa^6y`47f;*?Sqrj5H!w3JW2b#Jf z30Y5!CTO4G+xn$#-|VRNmz5Tpd4rvCMiGJuaL>#~<-#Hu^)VFWai}O2kWq$^Z;bz^EhlRZIboyAFXgYozQh1(MS}ZZrX^Nnl+G9Wq5G+B}8b{A62>( zl~T#qbR9$lQ4~M)dcDt296v#CL)Ud09v+_ZBLfktulqt@Tv74D=ks0Sd43Lv2qh&Y zw-bp3y$_0_kTfC@5mESgnEZbKJq`ehJ;lWqi)Gp~e;a8v4O5N@0ARPor@IH+>g(u8V`FCPwylH7M6!uxr^^S tzR-bv4l7ra&Ol8lbTA_6C#U=7{{X~EsD&q2ClCMt002ovPDHLkV1hL_sT2SJ diff --git a/data/iconsets/transports/gadugadu/32x32/away.png b/data/iconsets/transports/gadugadu/32x32/away.png deleted file mode 100644 index 5c46145eb659a082c54588ba15c252bc70610eb0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2241 zcmV;y2tN0TP)S&pU<#9c$|1)zP@K5!fUmhcC$)U|p&KFlP3Q(QiI6??!Cf z!t?y1-DO`-{_XSsQc9_=B2s%P&WsB^a604W`2MUP6^U(UxLcM<(bYYT1rLuCU}`Jd z3;J*O0j1Or2KMb#KJmtZPF^HyjZ&&Jz`#CvclGF&*P0a9e5bq7zgO;q&FrU+xT?$X z(IdLmcL-W9E2RqBigR8Glu~wnZr0zHKQZZ!8B<3p!%!TnX}o8_(tl1?O3j}<@u~ss z5N1qKpCL-AKHa)zzy8#(#*eynTuM3ku$XeW;6B>4EVs4RY| zQXe|f_+1g%-X;O1RKG_a9J_DfoEzE<0C21(PC=&}6k)J(z)zz6D3Ii{ilY>E4wIkl zB5oY*B=DWg)pO!JyRP2<(}qKDryV`{jK9_;i0`TVCLtmnTKAp^AYJG=XgJC^Z6+St zOQF3a+HIm}cyF3cl%btQw3k3TndQ3)V$lTKN*lH3%Aw|djg~>=*oRvW{P@Mc>}U~O zdjah1VnPMQSXsH4!3btB2gB-sVP&BV3#CkyvIs}|qKqrhj*IVRf@>$iiuDcN{==sZ zX!vz=-{&=9A=;+Mj!{n3IPi7Q)toPr{Jtwf{4bn zvyo6=yrvR-C&7oiqO9L?f>c^h6_Iqi3Y@{InDfxX3pUico?vGW$FM>eRv5z$V+JGV zNQef}pglx9M4wqMpix;@aI`MYqE}CN$&~k~h?KRC)!rPCPxl_3f2<}8GZ@L#+%Qon zX3w6@-BYKby;Md8FNO9U9$mDWne$&j{50Bk(0&@z3{rMDtQ$_Hs(@WesqSqOP)dcA zQg?TXWW6)th5_;W?kQ?owRFmw-u^mIjjHp3foI|@aBdM_)ZhrOK|Am zAzuCaW_Fey;N6dQBYqO`(r7=;gwdUi!UB6BuoXC*6;Ou_rJhqt6$4mGslKB}bgy`5 zda-@;*a1c`XanG-0Pzv+Aijl0a1srO2zAF#GNfM@v=c+SF`RS^5jaub#GsxzXg7iO z5{Q=oad>x8#7ZR-RM%-rzVN$m-s?TM_n@AslP4>v)JzJDR`({Q?Wn}8? zTl6Z-;od2?Ao%p`nvL%?qTK|&x^!Ubq~YMZ^eC`0#Jog?h#LnKL0d7P&}2ZN$-URx z_MJ--y1GstHuECE$Co@dVUS_8YzOUUVVEHhjc6C~(|AstUfuH;H);?aLxOgj&`uND zjWM`aHbqzFk{xvM-6pgX%UsFY&;%F+6tv zSnPnoS6??#`gtQYb&cd_n~d(=Ku%T?5l!pKnsfv}D`3|0$0x3ucIR*v$_kv8-(%O# zeN1{_9jjNZX8Oz-v@TI&LnCYdx|W5%S;*M$UCTFLf5WG{{!4y-KArM%`Rd?7wD0rN z@fLSoYw=Z$P+g~~t`qhj)#X5Jo(O`Db~cYrOT*2Udw$mXEJoyFto2}Y-ptZWIZ2j`hcgOUX0_UNu@nE7@*qs zDRX@)fGXe}MC9xOOyHS7Adu+Wx344;3AqqTOH13_uRmEY<$KCy)5cAb9nKb|)IMMZ zuoM`7Cg$1Ku~JIew*65s5WH^goVoV&8Pn<4zhArAUkr{^A0c`w%6sp>$0sG9fZ!iF za>UzRy4$ua>mRP`{;+xW4+Vokx3Z#A9LKp}<`;wLsi^G#a=)b0X%P|8T1!KHgREP- zPC}uO1I#~5AZQ1-EO~0lw-WdaoU|hi^$q9k@2lD;bAK^cg272#WKIDFoIhj0ga^yq=-dEJ|ztuLyos=ieM(P)&$hQ=0qT5F<>QOYaIu`Fv}iyjDt zLT=5mnv0gWwx(7}N=n+i7mLQEd{4PlmQ~7{HESdmi%GmGF4YIC<=N%WieVT&@RQ~Q zlx^D|XNR+$6~A90Qb{I4QpGOEQ_1 znxi#RzNcKaZ`&>tCrlL6G{v@UDY(2K9f?HJN+}dJKTD_6olVo! zhB6pcJW9`-JI@+2WC*_Rv!`?qZ@u*v>(;Mh{0NJ}PKrN&INv=vKZ0NV%k`^ zepu$Sa`p>J`OoM6fvjMtPLM*+^LBZjw+&b&BFXmpq+J5-kje#aGZZgBa%aHI>!>(d zFKn&woIMA%DZ&&H*>KSgffl3qViphv76mMh1T0Qu*;E401A{Nsmx%B`81c}V@F^ay P00000NkvXXu0mjf>4i!N diff --git a/data/iconsets/transports/gadugadu/32x32/chat.png b/data/iconsets/transports/gadugadu/32x32/chat.png deleted file mode 100644 index 05a95d49c1d8c53fce5fe468e45903dc1925b6ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2274 zcmV<82p#u{P)PaV$8Z+2#P&-s3T z=keX&imGxZCL#hX9#vNK!=Xh5Lz`RD@y@jKCh)eZ9yz06fPJP8z?_x0%zov;yXO-Q z+jyQ|y{qo?C6BCqS43o#s-8HLVAfZ?(6!^9cKHu(sMc^e;BMO?s%MP1?!RlE0?YdN zer5bYUl5V2rcN5Z_lo&bonf))3nDTSU~0v%?~NNXtS>3P_06%?lnJFPdiXD!d2ad1 z*)zwq4T;!)5s|WiaQc-%M8YFVqZ=Q4aM3llEIVH;OE})#e*OKAzO_U|?pbohxs`(u zW=?g*bP=f-GpcyQukZWrcdnc_UVJA*&CU}yKfPhsauHdqs&Du5>)V8*zE*7Io7?s$pM3br;_{eE$Yd~18qdkFeP^dW^rufu z(YWIzCbsx~Ko==WtRCP$--ctp%obl7D5Ua~gJ&c#b zcv*~_qPl7#sn$A-(~j{n7$;c1n<3em;l17M#&fl?XI!f{h#uckbLgh0|Mo#IaN`va zE}lhU*(~g6DWOP=P^1LQ9)e{@5z9s-gosU1Y!YIfjd5IjHvl(IhCggdcn6Pk95V2W zp0WEip{l+TD~UY6U~a{YQ!2{DcwwR=<`F6wid9g8Wfua1`Zqt6x-gW=x6RxL(i>t8gLM*!oD_le<5<5*o z4X6R*q3WTgd%1u?qG!|8l4kXDtzI_g-K(l~eX$190sXMH>7L`wQ9_YeP;)DUAgo-u zlIxZ&$9TCQ3tkT6JKVc^9k<@|6zbk8eJBi3e*5cq6Koq5?Lc6vjA)nnKXOm*!nwfo)y0I zqDm_g2?OBe0QFJhpuUYkaWV;1m6nsIm_E52<0LU|5+|QT6|8cOyv4BNQ-AE%T5m<|VRNg9OtFDWANuKn@cC8adzHiZp&*@N1$FjqCX6oO z#-*2`_>3P_jPJB#+zb=Shp=o>75FaW%ItucmkEftX+VgCh04((Do2O7@#1j!+J`eH z-lBJfhQ%VQ9{$#Hg~l~0X9y)?d4j94~} zM?0BNF^-TWT{9mF#D@r?iWQb%N^6zK)$ zjS~>s+Vi~e&Jm_nUC328t?UvV2je@vfW3T*t#7r)Tx2VS#P)d61WT8PL9VD@G6rfixyDH<-YqnuT!ESO!wzu((VGSS4vixyKl z>@2kVL*!*iwx8sU&2Q0>IK|wF^^_JR0cc7<&cy}RXY;y(KGyF%AR^Y}39;Q9)+{@B zY|N2tB7qQ$Vr#p@$NQiqVVF9tf>>!WkuV(lyqS2sg_1~`>hbkN?bA)CBJ4WoaoZDF zRb{EFzWh}Lmj3pEg&UV&KE@J1gVWK1pLc`4=+gRQC*iZ>h2&fd*Avc)CK*-ILV3w4 ztbWIsz#e-!&&C?J(Q&EJ9-#dQR8A#8#~00dfxB*HQf8&jzi4{4ky)jyE707(yoRKSFcXEcdW_K+-V29 z)UJ~fiYlylGUKjTlX34`pY`*7wC7}p^1*)3cs`p3C7`O=hIr!k$Dga^Kw}Eu&5+M# z*s!HjZ-1=CB$Cck`;IuxyBhKcK({U-h`^r12H)tP+Q+HGjqsdH3UXcW*pkLn)BtN$HQpC%(0@Z!-3V+P;L(9Y z$Bo;Uz}7vUim;^%ygSA=VAfz5UrOLh?7-1hjXb~AVc1ZisZFV=_nbY4O-PmXXBS&pU<#9c$|1)zP@K5!fUmhcC$)U|p&KFlP3Q(QiI6??!Cf z!t?y1-DO`-{_XSsQc9_=B2s%P&WsB^a604W`2MUP6^U(UxLcM<(bYYT1rLuCU}`Jd z3;J*O0j1Or2KMb#KJmtZPF^HyjZ&&Jz`#CvclGF&*P0a9e5bq7zgO;q&FrU+xT?$X z(IdLmcL-W9E2RqBigR8Glu~wnZr0zHKQZZ!8B<3p!%!TnX}o8_(tl1?O3j}<@u~ss z5N1qKpCL-AKHa)zzy8#(#*eynTuM3ku$XeW;6B>4EVs4RY| zQXe|f_+1g%-X;O1RKG_a9J_DfoEzE<0C21(PC=&}6k)J(z)zz6D3Ii{ilY>E4wIkl zB5oY*B=DWg)pO!JyRP2<(}qKDryV`{jK9_;i0`TVCLtmnTKAp^AYJG=XgJC^Z6+St zOQF3a+HIm}cyF3cl%btQw3k3TndQ3)V$lTKN*lH3%Aw|djg~>=*oRvW{P@Mc>}U~O zdjah1VnPMQSXsH4!3btB2gB-sVP&BV3#CkyvIs}|qKqrhj*IVRf@>$iiuDcN{==sZ zX!vz=-{&=9A=;+Mj!{n3IPi7Q)toPr{Jtwf{4bn zvyo6=yrvR-C&7oiqO9L?f>c^h6_Iqi3Y@{InDfxX3pUico?vGW$FM>eRv5z$V+JGV zNQef}pglx9M4wqMpix;@aI`MYqE}CN$&~k~h?KRC)!rPCPxl_3f2<}8GZ@L#+%Qon zX3w6@-BYKby;Md8FNO9U9$mDWne$&j{50Bk(0&@z3{rMDtQ$_Hs(@WesqSqOP)dcA zQg?TXWW6)th5_;W?kQ?owRFmw-u^mIjjHp3foI|@aBdM_)ZhrOK|Am zAzuCaW_Fey;N6dQBYqO`(r7=;gwdUi!UB6BuoXC*6;Ou_rJhqt6$4mGslKB}bgy`5 zda-@;*a1c`XanG-0Pzv+Aijl0a1srO2zAF#GNfM@v=c+SF`RS^5jaub#GsxzXg7iO z5{Q=oad>x8#7ZR-RM%-rzVN$m-s?TM_n@AslP4>v)JzJDR`({Q?Wn}8? zTl6Z-;od2?Ao%p`nvL%?qTK|&x^!Ubq~YMZ^eC`0#Jog?h#LnKL0d7P&}2ZN$-URx z_MJ--y1GstHuECE$Co@dVUS_8YzOUUVVEHhjc6C~(|AstUfuH;H);?aLxOgj&`uND zjWM`aHbqzFk{xvM-6pgX%UsFY&;%F+6tv zSnPnoS6??#`gtQYb&cd_n~d(=Ku%T?5l!pKnsfv}D`3|0$0x3ucIR*v$_kv8-(%O# zeN1{_9jjNZX8Oz-v@TI&LnCYdx|W5%S;*M$UCTFLf5WG{{!4y-KArM%`Rd?7wD0rN z@fLSoYw=Z$P+g~~t`qhj)#X5Jo(O`Db~cYrOT*2Udw$mXEJoyFto2}Y-ptZWIZ2j`hcgOUX0_UNu@nE7@*qs zDRX@)fGXe}MC9xOOyHS7Adu+Wx344;3AqqTOH13_uRmEY<$KCy)5cAb9nKb|)IMMZ zuoM`7Cg$1Ku~JIew*65s5WH^goVoV&8Pn<4zhArAUkr{^A0c`w%6sp>$0sG9fZ!iF za>UzRy4$ua>mRP`{;+xW4+Vokx3Z#A9LKp}<`;wLsi^G#a=)b0X%P|8T1!KHgREP- zPC}uO1I#~5AZQ1-EO~0lw-WdaoU|hi^$q9k@2lD;bAK^cg272#WKIDFoIhj0ga^yq=-dEJ|ztuLyos=ieM(P)&$hQ=0qT5F<>QOYaIu`Fv}iyjDt zLT=5mnv0gWwx(7}N=n+i7mLQEd{4PlmQ~7{HESdmi%GmGF4YIC<=N%WieVT&@RQ~Q zlx^D|XNR+$6~A90Qb{I4QpGOEQ_1 znxi#RzNcKaZ`&>tCrlL6G{v@UDY(2K9f?HJN+}dJKTD_6olVo! zhB6pcJW9`-JI@+2WC*_Rv!`?qZ@u*v>(;Mh{0NJ}PKrN&INv=vKZ0NV%k`^ zepu$Sa`p>J`OoM6fvjMtPLM*+^LBZjw+&b&BFXmpq+J5-kje#aGZZgBa%aHI>!>(d zFKn&woIMA%DZ&&H*>KSgffl3qViphv76mMh1T0Qu*;E401A{Nsmx%B`81c}V@F^ay P00000NkvXXu0mjf>4i!N diff --git a/data/iconsets/transports/gadugadu/32x32/offline.png b/data/iconsets/transports/gadugadu/32x32/offline.png deleted file mode 100644 index ef8d3a24690c061e114ada830bd496d7b3b8851e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2328 zcmV+z3Fr2SP)zs3M-hn_6Fg%3tjED~g#7A{%)nV$hh$y}ttBlW?;$yTUt=e|l&N%JZ zRyr-C&RAuNil9ifprRsbo%kvQ31WB!xPhB+Npf?Zd$0a+10*46Su^{Od+%B6`}SJj z{q{bhsvJ*tkEKd@yr>~pz`u1A~Fn&{Nl44>a4f9|Oh#_XRy zWkOqNQPDFZazcMNM~y&4Qq==0mj3##JFdL$l3C)2klCNT_KCkgJ6l8+Tz1~M6OKWc z8K<05Cn95Os;ggo^!6LhoHcW**f`I}Uw?D+;uY`C6Ok)abxp6lz9JktXwd76fAPqr zr%oJy)Gn8;c~`&Py+c6-m7y+o+0d)L-~e#3LGz0nI; z#GzuuNmSO3!z(MtD=ot-Da9=+#!00Lgd7KP9V&;^;G~COV~YtQOc-H;n7@8dpET`i z{no-GJ!>B&LRDQ}Szh|W`O{9nzINmY5rhHbCgK&B;Fgr&ri%cuNsL+x;=rM9siLa5 zMWv)GMiL*~hzTOz`+6I%)o&(9lDVoH9Q{Er?Atz@4kz<*IbK@qr&{-7#k-%{QD=lec|KSBq?+!NpRdWo3f!j(C#+^^&&E| zUjiahA|h8;RhF;3=*;Q)8!wsF`P73yTQat;uDi1qO%j^6G_v@aXZiS(PguTu1xXlS zqLA&|xABkHR#M;4z?w-yWF~+oBDK>`p4@QT zm6xS1m_E%(r_+TQn*^+)Cc(xIC9>rJWC>n8OchYB`{5fM}^ zHjWv6!Vu&&x_>SY^rqTtG8G}sD+gxno z76gcZT80m(#3l)GK3@=G6k@`Vq2;BR&?$^1ER4nk0VWKwCZVsb4J|K2kP)6AhDKHC z>3nKU!AAWe#C6!UznM{^CgO;o1<@j|i>QaAiUNp(cpj2UBk44me2&V%CkcGS7WnrJ zKS@xqUelh;q8C=Z^|z}pyg-VJ3nrsjtW8J)pE!wG|LGcjz_z@aU^V#6oi^2 zhn2r>^-FxQ;ag_dN>T`Ie!#bF2iTQsXV<|FwzcKLP5WD&$e1Mpq=74o)9FiQOqqQ7 z$+fiu2M?@Z+^`{f&ZIg)gj{EicfMN7q%+Rt((CUD1^JH2LjD(w|f zE-B8foyPn1@6+De!uc1^rD{NR;UtVBY!uOPAj`j3|C9DymQ!sdl~Qo|mVBNtNn+r+ zAWr7fCyu%gh=@~LGwjR7zr24+O<799tdHQJYB|uAW8?nqw07kfH+BjGD+ZBvJ@#gH zvUBe?%G9M!%P8t$u!^!Fv!DA`zN4x-M^#__J_2)obcfF5-k*47Mr{Jg0X z97zIf7~-T2NoOZXUJI6NErSwapi_BRfc=GX1RUU+Qzr4shQ?9ACBWhHzL%s$WcpcW zoLpD#S!@(wA|D%uh?gL47YA}}B>7I_d?zLd(Bx?FFETBF_UZ&cby+DhN1cc#a$nEy z`<{jyKl*$_X6xRJ+9QB4cVxx$3EduNAF+tZoJ@)wee$b zuQ!n~y$WZ$eCnGsHc?%6OaiLvH|^f{)4wcV&DOmwm@p#D2fXrGgWk7vwas+~i#E5k zX1;3Pcc^Dbp>qHTMbITpCz7=iSmjxg)hR5GoAE{~su(&5?e>b94BC@a} z-}S_K<44K*#vO4(Q>HzLle<;*rQ(z~bz3$!j4`8o<#k38ev+hs^^vj9Hy`Zy)150; z&pUt2NV}~qm+a}tA4sgdLRD?gynbKJRP{F^vUT&;%={>hzp(I_s&)W`iP^9t*M2UL z>Y4Lda|TzW%cy>)stItNh%8>ebI)%RW7YvrtLl!vSjT)fRMn-x(tdv0vaKx__a*Sb z_GT54x7FIi%2d_0z|3P|d?$hLh%I~CJBwc4u$h4+#k6$f`FQ8PaV$8Z+2#P&-s3T z=keX&imGxZCL#hX9#vNK!=Xh5Lz`RD@y@jKCh)eZ9yz06fPJP8z?_x0%zov;yXO-Q z+jyQ|y{qo?C6BCqS43o#s-8HLVAfZ?(6!^9cKHu(sMc^e;BMO?s%MP1?!RlE0?YdN zer5bYUl5V2rcN5Z_lo&bonf))3nDTSU~0v%?~NNXtS>3P_06%?lnJFPdiXD!d2ad1 z*)zwq4T;!)5s|WiaQc-%M8YFVqZ=Q4aM3llEIVH;OE})#e*OKAzO_U|?pbohxs`(u zW=?g*bP=f-GpcyQukZWrcdnc_UVJA*&CU}yKfPhsauHdqs&Du5>)V8*zE*7Io7?s$pM3br;_{eE$Yd~18qdkFeP^dW^rufu z(YWIzCbsx~Ko==WtRCP$--ctp%obl7D5Ua~gJ&c#b zcv*~_qPl7#sn$A-(~j{n7$;c1n<3em;l17M#&fl?XI!f{h#uckbLgh0|Mo#IaN`va zE}lhU*(~g6DWOP=P^1LQ9)e{@5z9s-gosU1Y!YIfjd5IjHvl(IhCggdcn6Pk95V2W zp0WEip{l+TD~UY6U~a{YQ!2{DcwwR=<`F6wid9g8Wfua1`Zqt6x-gW=x6RxL(i>t8gLM*!oD_le<5<5*o z4X6R*q3WTgd%1u?qG!|8l4kXDtzI_g-K(l~eX$190sXMH>7L`wQ9_YeP;)DUAgo-u zlIxZ&$9TCQ3tkT6JKVc^9k<@|6zbk8eJBi3e*5cq6Koq5?Lc6vjA)nnKXOm*!nwfo)y0I zqDm_g2?OBe0QFJhpuUYkaWV;1m6nsIm_E52<0LU|5+|QT6|8cOyv4BNQ-AE%T5m<|VRNg9OtFDWANuKn@cC8adzHiZp&*@N1$FjqCX6oO z#-*2`_>3P_jPJB#+zb=Shp=o>75FaW%ItucmkEftX+VgCh04((Do2O7@#1j!+J`eH z-lBJfhQ%VQ9{$#Hg~l~0X9y)?d4j94~} zM?0BNF^-TWT{9mF#D@r?iWQb%N^6zK)$ zjS~>s+Vi~e&Jm_nUC328t?UvV2je@vfW3T*t#7r)Tx2VS#P)d61WT8PL9VD@G6rfixyDH<-YqnuT!ESO!wzu((VGSS4vixyKl z>@2kVL*!*iwx8sU&2Q0>IK|wF^^_JR0cc7<&cy}RXY;y(KGyF%AR^Y}39;Q9)+{@B zY|N2tB7qQ$Vr#p@$NQiqVVF9tf>>!WkuV(lyqS2sg_1~`>hbkN?bA)CBJ4WoaoZDF zRb{EFzWh}Lmj3pEg&UV&KE@J1gVWK1pLc`4=+gRQC*iZ>h2&fd*Avc)CK*-ILV3w4 ztbWIsz#e-!&&C?J(Q&EJ9-#dQR8A#8#~00dfxB*HQf8&jzi4{4ky)jyE707(yoRKSFcXEcdW_K+-V29 z)UJ~fiYlylGUKjTlX34`pY`*7wC7}p^1*)3cs`p3C7`O=hIr!k$Dga^Kw}Eu&5+M# z*s!HjZ-1=CB$Cck`;IuxyBhKcK({U-h`^r12H)tP+Q+HGjqsdH3UXcW*pkLn)BtN$HQpC%(0@Z!-3V+P;L(9Y z$Bo;Uz}7vUim;^%ygSA=VAfz5UrOLh?7-1hjXb~AVc1ZisZFV=_nbY4O-PmXXBS&pU<#9c$|1)zP@K5!fUmhcC$)U|p&KFlP3Q(QiI6??!Cf z!t?y1-DO`-{_XSsQc9_=B2s%P&WsB^a604W`2MUP6^U(UxLcM<(bYYT1rLuCU}`Jd z3;J*O0j1Or2KMb#KJmtZPF^HyjZ&&Jz`#CvclGF&*P0a9e5bq7zgO;q&FrU+xT?$X z(IdLmcL-W9E2RqBigR8Glu~wnZr0zHKQZZ!8B<3p!%!TnX}o8_(tl1?O3j}<@u~ss z5N1qKpCL-AKHa)zzy8#(#*eynTuM3ku$XeW;6B>4EVs4RY| zQXe|f_+1g%-X;O1RKG_a9J_DfoEzE<0C21(PC=&}6k)J(z)zz6D3Ii{ilY>E4wIkl zB5oY*B=DWg)pO!JyRP2<(}qKDryV`{jK9_;i0`TVCLtmnTKAp^AYJG=XgJC^Z6+St zOQF3a+HIm}cyF3cl%btQw3k3TndQ3)V$lTKN*lH3%Aw|djg~>=*oRvW{P@Mc>}U~O zdjah1VnPMQSXsH4!3btB2gB-sVP&BV3#CkyvIs}|qKqrhj*IVRf@>$iiuDcN{==sZ zX!vz=-{&=9A=;+Mj!{n3IPi7Q)toPr{Jtwf{4bn zvyo6=yrvR-C&7oiqO9L?f>c^h6_Iqi3Y@{InDfxX3pUico?vGW$FM>eRv5z$V+JGV zNQef}pglx9M4wqMpix;@aI`MYqE}CN$&~k~h?KRC)!rPCPxl_3f2<}8GZ@L#+%Qon zX3w6@-BYKby;Md8FNO9U9$mDWne$&j{50Bk(0&@z3{rMDtQ$_Hs(@WesqSqOP)dcA zQg?TXWW6)th5_;W?kQ?owRFmw-u^mIjjHp3foI|@aBdM_)ZhrOK|Am zAzuCaW_Fey;N6dQBYqO`(r7=;gwdUi!UB6BuoXC*6;Ou_rJhqt6$4mGslKB}bgy`5 zda-@;*a1c`XanG-0Pzv+Aijl0a1srO2zAF#GNfM@v=c+SF`RS^5jaub#GsxzXg7iO z5{Q=oad>x8#7ZR-RM%-rzVN$m-s?TM_n@AslP4>v)JzJDR`({Q?Wn}8? zTl6Z-;od2?Ao%p`nvL%?qTK|&x^!Ubq~YMZ^eC`0#Jog?h#LnKL0d7P&}2ZN$-URx z_MJ--y1GstHuECE$Co@dVUS_8YzOUUVVEHhjc6C~(|AstUfuH;H);?aLxOgj&`uND zjWM`aHbqzFk{xvM-6pgX%UsFY&;%F+6tv zSnPnoS6??#`gtQYb&cd_n~d(=Ku%T?5l!pKnsfv}D`3|0$0x3ucIR*v$_kv8-(%O# zeN1{_9jjNZX8Oz-v@TI&LnCYdx|W5%S;*M$UCTFLf5WG{{!4y-KArM%`Rd?7wD0rN z@fLSoYw=Z$P+g~~t`qhj)#X5Jo(O`Db~cYrOT*2Udw$mXEJoyFto2}Y-ptZWIZ2j`hcgOUX0_UNu@nE7@*qs zDRX@)fGXe}MC9xOOyHS7Adu+Wx344;3AqqTOH13_uRmEY<$KCy)5cAb9nKb|)IMMZ zuoM`7Cg$1Ku~JIew*65s5WH^goVoV&8Pn<4zhArAUkr{^A0c`w%6sp>$0sG9fZ!iF za>UzRy4$ua>mRP`{;+xW4+Vokx3Z#A9LKp}<`;wLsi^G#a=)b0X%P|8T1!KHgREP- zPC}uO1I#~5AZQ1-EO~0lw-WdaoU|hi^$q9k@2lD;bAK^cg272#WKIDFoIhj0ga^yq=-dEJ|ztuLyos=ieM(P)&$hQ=0qT5F<>QOYaIu`Fv}iyjDt zLT=5mnv0gWwx(7}N=n+i7mLQEd{4PlmQ~7{HESdmi%GmGF4YIC<=N%WieVT&@RQ~Q zlx^D|XNR+$6~A90Qb{I4QpGOEQ_1 znxi#RzNcKaZ`&>tCrlL6G{v@UDY(2K9f?HJN+}dJKTD_6olVo! zhB6pcJW9`-JI@+2WC*_Rv!`?qZ@u*v>(;Mh{0NJ}PKrN&INv=vKZ0NV%k`^ zepu$Sa`p>J`OoM6fvjMtPLM*+^LBZjw+&b&BFXmpq+J5-kje#aGZZgBa%aHI>!>(d zFKn&woIMA%DZ&&H*>KSgffl3qViphv76mMh1T0Qu*;E401A{Nsmx%B`81c}V@F^ay P00000NkvXXu0mjf>4i!N diff --git a/data/iconsets/transports/gadugadu/48x48/offline.png b/data/iconsets/transports/gadugadu/48x48/offline.png deleted file mode 100644 index 93729d4ffa8c4b49d66c505bc4c52b31326d45aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3759 zcmV;g4p8xlP)VP0%RDw$!F&LNNXpF`MjpJmDW}L*67@5hO zW9H}>a~w63m^o1-aa_igC@2cDHpn70LPIw+OE*n7y;OD8+kW%MdsW?CbT=}m?>YCp zcj~>m_xt_r_g5vVN?#5U83x=7j0a8vjlg1Ke{my3zWF9((sKYHu8uCk_0 z7*9(w$%&KAY~1-JYroj;ipV# zNbYy%&z&~8*EKB5z=)Q z#)W?XHi*c~&IIO6>74+;HS;b8_-@Ynw_29DXVLt*OaJzgng2Cv*x)U|S`oSMbnEr% z#3E7%yga#V+`^^z-$VJ>G1+IUHdb8t`18M8Cn7HaKQTmRPCKvcv;<~NE~g+bZ=Q%) zKpF7dMdcIc-goo0oKsqY@1;4~)WlymZJYJh%8eUE@-Zr2p{@Z`L^On5X zlgo%(LcZbSyD%g+fZ~}KP+FYN@)a8%7Lhn`pLP>*dfV}pAKv_(IX}MbmL6Y-Mj|}8 z_(mp<9yQ|kZ@zt6@R>1u@F0@u)QkV|$OFc?Lk3c4DtKvp*T#3#sOvB?Uck4;kCKL_ zCf;BB<-K(cEk}SSa@XoMjEcy}p{1n<*1Yt*| zciy)r4O}{P!nm&uUIfOC9Y=oYV9Zzy0QD91J=F71*9}0qE>2qucU--ImiCh&_%!O- zXa>0F;5#VB&=lc)*^KYKR?}fc1+jfNMj4jHt*D?=41l+QFkzU%mb?W{`S55 z-u%-H0DC2%sx__2 zPc+JK^5Y|Mq*fzz^*L|!wPKOj0KVxkr1$tX0JKZ466vt}{~%+LHy>~6<80v7 z_V#pr-oQbCAQ?{#%_7m#%q5pz#&>VMmAjVQ7lgr1p;KLlL?Xd;OCI3f$CvWZlTQVo zdu~Y3&4%1qzY^M7ZSj3w2lyiLO%WOSwFroaAtINF$crMfr!YS+Iez3hM=t%F>8l@m zV9B6PS_!2VM2`&{Hn6#(0)X~plGUGn7RGWXOJeJeoqVx7h=T3uH0!r*M_n%@7+yUO z%P_ce-Yg=PIZH%d2L1|Ei^v`k`HhHN6V_-zn8-xr0^m;5Fm9SXWzyLTFPY0_GcII6 zaZ#3B;gDegXbtVx6?|31^Vqp#NA|t-n>Vw0%N8!0bbc7u10uWj?#;eavAdElzS_(5 zb4O-1rJb$|CXAz{v4MuR6iulVU)D8H-PAmu;F$VDpjAYss%ljx6Tk4t?SD7xrUmmE zSW#*!Nrbq^i_z!`gW1GDjLJDBM- zQzw)$AuP4e8#|UsV!^DLi?5n9t6T6890$!mLc45^_ApBqx}1$ z4^t3{gh|QHYQj`y;l&pbvn-zY-Yw*tMu(p`PWHZoL^=q^Im0vzQm#kE;bQ>1Env>< z$>lwQ4~F17E{3o8z7K{GM50hisy+pl$&YTm1>f`V(kayQI;zU>T40$hx#o&4zTrDI zUKb+4XX^FbY?w5pG;=%40!q*7U((~tfzxVG^7UE7S z83Il~KtqsT*2Fppd5(>G9;oz$AJ5Nf$FqROszbHREI+>o27Xp*;sxMSc8aZgE0}Z9 zRalWoP}gWjeG?D~{KL;?<4nBIkO@r7v(s!nxQpQ~SWZ9~0MQ;bP~Vow+}alK%u8>- zcgNzZujoejnffJAKZYP;uxa}m_Sf#kHiX50zZBDobg#V7qyjQw;_GtAaar~LD^xeu z(kf9d(0Hf4h0cMfzAeG7`V;J`Z(wcp;mpU&MO6`z*9Hyfzi95XDKc-`6y{8s%)pXj zJlDnXYK41Rr+L}AXj8GKUtIomgWOgfoh?&XV!_bcg|^gK5_G6qiFo@nFq4J)Xssl-&_0*O=7 z3A_TE4vqJB-&9XI1Y)nW~vYFVe9Tqr0o*{WhZe_ms5*I=s*^|Y)W@aw14lrF+cb*Y}u(bZ_<$wF> zm`NiB6Ey-8u$$U&+vte@;Ry@hC*`Ku*ILh^_C|77jj6#vq6{WRk(}DiQ3CMN>5Fgf z+RIaGHUTVC)y3W6?5#8R?YYy+#|%HKn5cMRonm9i(y3FX+BQ+wrO<=^Y6W)QBX~undn>REgX=FS6Tsw5+A1P4 z@4V6H%q$x*m_kcY&%tvurEd^bj0hMp2S4530X~(+OQ(W3@B7^?owHF`F=)@4x%RxV z^@eH?|VHg*D+L;io?hF z@rsZ6^=BLLdZ{`A8rxGizAq9~cLll6yY&H8eNRN*dUMr=h56r@Mp^%&uv+ZsoO!m# z!Q)LlzTz{jJk%hs@7Tk&lgG1U+GNxT!>ni!XF5rE>(P4t@!eGbNuc0RQwvXgb1p@B zv2F=GwPq7upv_;X>fzkyz4^d{@2uX`{>korT6>}~+cEPU7uWV!S$Tkm-ug&)A8ZiU z^OvR5E|ql+9gZlWV-i-C;XIK@X4d~5Q1QjldhUK>1)FP+odV!5J1W_Fqz+&g@Jx3g zduuJ$q|(lVue`lRUf#4_tByC~+b;X-8u|JAt9kOn&pA}r;(5OR6IEU8dVX`w@sp_A zyGb;)XKR`&U@oxyXlok}y|;>=f3${%L=pwwsockJ*KI+d9k@ePo$l7_^(PfoeNjXP zy}Nqb(mmBj8CVdbvi3NK>zc7`_cMZDO)?3lwy`x;+>%Q7Xbu3o>Kih*`&6|ZxLHJ& z0Z)Ij|KO+%hmL4bEGBh9$?O7)RCPm7>wTTh+`lxQOx&|^+kq`BEA~-c+j!iz-P=`l zUQTx04zTY;Q;%!;s%#FRCIU;_9oMOAOZdP_;A&MpwYz*K1i}qoP}S+S z?M_hD@v8dAZeH66u&e$=kLy$(KS68S2KY=>6P=%_YP+gF77`hys`FL#!_#3qqrV!c z>YiR6Z-Oo+a>`io)q%|I`@QT@btahl^1l*W0C&f+G*7}F5y+LG)zcAO9Q zRc9iK(hGqz9vap&eK85_T6>whfQ$Qb&p!LJ2Lyjd0B!?*02C5vxB*xf&i7Q+?z0Vn Z{{vo=Y%t?&r_2BV002ovPDHLkV1g0xUpxQ+ diff --git a/data/iconsets/transports/gadugadu/48x48/online.png b/data/iconsets/transports/gadugadu/48x48/online.png deleted file mode 100644 index 3f093793354089d042ffe0666c3d77f533d7b469..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3759 zcmV;g4p8xlP)*YGjPyphm%keG#zPY!+>S(9%t>@7?=u)o=c|w_h)GH!!E`oI0;xSKX@b zw|;B=?h{p|Gnb`67ZZ`+^eis;<&D=)@FtAzOHG|m z#gTeGUB91|tM`N=vI@9QRabV}o}DED5fRsQ4)6MSVM+JGyko|#RTeGT%x(8Bc}rC< z@03jer?VCU#*7(xTASbj97p*6ch07JVcta|(!H}bJz)YOk`R%JBJwj4xn4wCKRavY z)WIFDk?>qDyYS2;Ft?5M3q|B!5xG%B#)^n^8UYcR<2bVG+)0Dh+*XD&K#=u5yF z5t-DSz>Fy!69BmK+h+k>+iLwEB|LZM)t8Tc_`4U6d~tC9;*G#3BJ!={V(Z8TM5F-t z!?;m><~;uEOBplrwCvdO6}$N5Bk$xD$58}RneZkRgl z!MiTRaau}r_Kcy-m@-(N{Ou<<{PVLbW}Q;f<+$JhT-RYh-y(1O?!(vhD9Zo$`|p~S zd+x;k6y^rxx&b!Ka9USGQKE#B?&DdsWZOa!=?dJUZJc&TZuF0LEto#--aF23cS26m zpRPFpHVm+#kH&p)uaLQuk&24` zy#1lM`EM1q2Y`oKuhpgsiO7Jyy$knle)mpkee&(KJ^L#eJfH_^5~xjpBtSf{Ay$3R z42~1vBpjZ4@e^jxID=D*J@P#t8wO~Y&XS0F8Vv&uev{&^=c-t@xx8Fe2dJuTzHfUH zm^uFJz9$S`t;eALXW?}jg5%{k{u9*@wHef8P~)S_Sk}MvD>n1>45CK(C zgW3=k2b(2i@RHqdoFs{y8Zz}|s7a$Xh=7{_&7`r$$7TX-nC6X->nSa(CN%anRo&4V zLYr<>RefXZZNGTnEv#+ZOIe%5>pF$Jl5u#+E;xy}dj&X&e8kH|+yvqz5OF~q1c?ZW z;J67Ac>@r)H#U=rfQNo8i2yY|2P%Aizr0qfj;88?pSOjh-8i7C%QkI0@aBKMvhG;$ zrVF{nGw^bIAYMLBq9E@1IEg&O&540~AWqz4@X_K#wx_s>uDCe^v7yC=J|P>(n z&^G!Tn^h@QgE$Giy#8n=M8h;D40vs2J@0L(#Sg-*z!U8O?2v$}?ysrye|+Q5|AZfe zSSuvEjl=Phh?B%|a}YO)crg(-8J%_vHUexxO}49zZ9@&%xNC?w3EaHXFqwdDdmDKA z&o$K6rW=5(RWyUs%tvB#WU9COr z6$}Jg>$0J~wuqQo~jnyH8 zhCXZ8u4di(O#q}C>RGY!qc{+yvm`cd-oeJLd!jk%fKN8;Mr{!FMi*)`BwXdESM(;~ zxl=^s55RI@pNQ-fk*7uEvN%Tr;y558X8}KUUFYiQlLz&ld&wwf&p3mU;)2G5#?3t) ztU(=vSc6IcC~7lo-LfTn2&>j^V*UEfOdU5k^5JZp(f)ef}jAM-;~3 z{iaWw;nGRnsHr+kMYW-_PT8`@Qg+A=CAy~G3e<|oSXC`+3}ny$>dp(M{P3!A^eoPj z%Qnq8kYi)R3s4bME#eqJ7&^F5i}_E3uwer> ztY`e$0~tPaAOItV4P^A0eX*JPcs!an=FHv<9n=$m;e&cGYDi&ZD`6UIn`|Yrp8%(o zdG;!Dm@_%SlRwF&e@_9pSVShez(to_Fnr$Svq!WE9zabJ$Lj(_!3VV{Hfw|lSGi`+ zbaHbOJn_&?6yy+}W;&}vo&;Pqdl)$$Jo<}izM ztl4P*wtK*|>5~Sv3qE4tpeBgCjx~tmf)Qx6YApFVmcLtYDQYuOS{xgu%@Xm+Pg-vO z!P#h|ZG?U-$#j!6VwF>4o0f0Y#tzBeJEnL*&z?QHw2$3dtPPMbjW{79F4~wLKsK^! z9FWw8QT7>o7i;4j-}p^7(Fn3p0w&c;8a^tvJ^b`7$&U2(fTAu1$@U4LSkr(L7NAZP zv?B0Aq)tr)A|r21q2mnGHtBT}0YA?F(@o&Bgwm+ZviL(~-gy1@k1YVGwSWbQbhh#ISFPI3?%frn!vf~r{xGhW zXmg`%n$TP_%_O8Y;QhB=XZQY(sXbc4qydMUJ*-U;A2?KH*}BiNWv}7Gt=ZIQv8XB{ z^4cjqyIy(zIYVUT)FI56I+&it1%#m?%!GuQG>-2?#)}YS3`>`P!I8=o!^TYIdkgLZ z6xA>ac8!-An~8xplY+^hHoAFjUbBV|-dRr4&2Ziso5@Q?r|*Z#zrK;?U={qWN;yM~8lg{JPYvxD!Oe2YAaihtg8`B1#P3t!D(O*~Lh+*=eQhIi&$s&7agXNx=8k&O* zfX|4E#A|@ns#*pe)P+RkG@u_a%yH!3-g^Fu;Q47_fux`E@P!Qv^Ryu6?Y5J%=p7ZL0cAyZDY%nY(`C*nTfP_vm-&)h$HR zNAatxiIUhjBC92nF>K!pJN7$-Mo4%bMa5mn&GE?1ajC9p;PBz5R|5lz4>7X$J`%2J zv7gcuyUGq)u6?XQgA5sk@v6G*qzJ^R^{zKw{LzpxXXKM3QB)0Tju58Oh{X3=wOQAh z@(rKw%VY1MJgm0NWpX{A-i4L)E2^M-K^yNm6jWLU-^D94Jo2g!ut-(soh*U5GtU|F z+GGDPi#|nR?6Z9|3_ zK_x}`_3eYFZSVk|3-e|q1aLW-vWkdIA35xlNoNizq97TdVGtLa;xb^yM;s5=Q%nrn zG$W$MkEC*(rUmLNBY0ynkwVx&C@bV;W}s;bk3K~v$iG0U{Zk8&2EHt=}z z%@o`ArLm^n;z1K=jZ)#8|HJ2@MLwpT!dYYcrbY=3B4C01*5hrK7FBhrh%EWj+uP^l zeWxEI`h?9?sIeFuuJvu7d_YydZavmsbw~B9L#Y;0Fk!&5HTC@T zsiXS&o;nGQUF7>ArTYS!B73ab5`B?a(JQL6C;nSt!}{HZd5@)7wc}Wod-;P5>vkD{ zQsAk!Kz3AG+@DTo?)dN5HpxrNYV?cp1~d#PD^IiV`J+7aaur`5tT)EkdsKB^Xl(Vq zgFe`f)u^&IOP~xm7g+rD5zEcbq*(Z3n!`sGRe1fA43EF=Bai}aRMkvd>vi~^SXEyT zkzW7v-p+?h%StHe2HW@4@%5n^{2=^@=&ea(fGMx64hpO56BM?i4gg#CWs~_YR5b-$ zBO;4{Czfvt2Yys)w5R|%Sg8OZaHXoQX>Yv~sm%T3k*bCTYc_tl@x4zEu=lH~3O@+1 zSJmmQqT?2T9p&wNA8VCWJ3;^-SkY{cCBO*a;k2)rgOzH5_kl}P^_`CJozPoKRefGn z$NNDzTvdmv>hIc^wia5P@G))MmzJ6+$^1xFTO`P;no`wYX+&h8s?Ji?caMkdq<(6k zsyjOvUI(ysU;7gH%i64cEbCy8vXjBonZK3T2!xx;jJIX4VMuQW*MUP-%EmIovh^Wr zBafnVK;WdC#xEN>qZ8@1cF;?Kb2@X+PW!P3L_bFWt^?)+1w<1523QsMrK)=TTl-10 Z{{ub=p8`BMPW1o)002ovPDHLkV1jdqP+9;0 diff --git a/data/pixmaps/events/new_email_recv.png b/data/pixmaps/events/new_email_recv.png new file mode 100644 index 0000000000000000000000000000000000000000..bd6b4e9b72332442c813548e6092640a6ed47fce GIT binary patch literal 2385 zcmV-X39j~uP)WFU8GbZ8({Xk{QrNlj1+3MgYKATls8GayP~Yjt8ECu(VJ zZDC_4AX9W@X>Mh5Co}I@000P-NklFgDW3@%-Y5(Mh%;8i@(0{H^O}`ka?mA!~o7WAj*;J zvaD*I)&HyjaC`Mm=QGWdMxd2X)u_T`Tx(+tRJQf1+ zBM2K44AC-%s_sOf^IqL=F2wuX+t^;{g^1`u`xdv6U-!5RSyML4z*ldc`2$18Mu|*> zbB-dJ@?t^=`yVikuU<%-mzy34teew<) zZi9w4wtd?C7uTBL3H#>5Ic}Hh`#`cC-uMBQ|NCd3ea7(cFvgf5iH3XgQdQa7+G2He zmBqzHMn^~CFYvw5A5w^m+k&5*oTRU>kM8bn@`XIsJU9qcmCKhebMoZL_knK#3xTli zMu6dC!#L-_fQX=8PzI6g(6t@N5J5-e@ zit*m##W!&!9c{?&GJ4~S8ytT2Fmaq?v$2`ER0LF!V6o0CA4jC=0er(V@vjM9{qd{3 z_N!6OzctCb?_Qu(Dv>5>R;d+K1+W+uJO&km8i!TOW@DW+J;0eWXV_|NbsF33S%rp% zh8Q0oCyFB?8)ZOIM6=iwQA7mqnk-g`h$?{Uu2l}nhNo#oJ>LmYng@WaXIz`y__Bg2f1jZr8Rh@uD+n#jz08j@QO z6$C*fbA6Jglq(f3U;cn{PY;DOCCcSc3|k9C6!P4-@ddMUvmAfnIQe`RTU%TEYv%g6I21KOgT)cSxdws*qcqfUAW4{=o#WHVPZ=FKPPtUZ?4daC zNI(Hq=;`ZekvMqpAW;;dDBegbi6y9o7mtK6G2Y|7M-`k?#5wR;+^Z^HEvj%ZO_`aQ z;o9|UjJ|N3Ql&Rb^gT2?JA0tn4hWQcdKf%1$k^Bz<#L%^oC6PDq$R1&3tqB);)I4O zVim7~58hExj4G;NR7sMQt1~l9O;7Rs@bgqky`Z7P5ZRT1-K}R6+J{xEy$lWwarW$4 zDwPVkTn-h%i$_IK@rZXVQtCb8Jl?r1_5t+{kH=ai>FQ!~@>8a-PIKbhC#Y7d2!fh6 zJhPt=0?j(2CI>9v=&Ya6wf>1aaVTcoozs z-e)A{$YC^AHG+-^|?u=e2zh;+Q7geshUF7);e&|j_c z_SY1a&F9xYr?#>}xm0fDTohRvzHyHMADVy-6;?9k2%KuQ8rQF1 z=NGTPPQ6~E+FxaPX_>{vMeeNM35}X(b90l8%?$w7*Vjq9x_IWB&rm9rFvjrm$(OnG z-h1GMgXN5L_PjRw-70asa|ksvI0G+a;OFM%ICbh2wR#f3;9 zZ1If-AUFXl!otD=M~@CMcWo9?rKh*IW&Ng#oBhdXhFXKJ)oM#E@b%R?HjwmcGVmI} zYoKg1(iXwHM%GW6h+Jf`ag4PV6B&*T53{tg%;M5gc)gcUgLT(JwsQzc%a$xHwJpE8 zx|)F%X}h{fg7)B0M6w_ZA2%9}*3?3q1y8b1jy!jS+1Xj}o&%+BjAr$0U(K9^gM%zAEK;l2!@u`Y2bKf)Q?H#O zAIBY*4xuF-U0-MKbkFh9>fR*edt*UxR~3xivpey3P5V{B|>T5bagg8^f}gyCpNG-H~hm+b%MzCGOcyTyX-NY;*heZ9R*O-*x;pZC-s z{bY|{7d@`)4d4er-@Q>|9xzr(!W^bQ{BFL6F9i3xB+P;q!X)obr#H+FUg!df+s$Gg z^U{t{=0+HI?rA!0{?C@b@9p+ceXsU(JzY=N6SV#dq9s?X`3qiv00000NkvXXu0mjf DX^DYe literal 0 HcmV?d00001 diff --git a/src/history_manager.py b/src/history_manager.py index 21d74491f..a4bd75528 100755 --- a/src/history_manager.py +++ b/src/history_manager.py @@ -193,7 +193,9 @@ class HistoryManager: gtk.main_quit() def _fill_jids_listview(self): - self.cur.execute('SELECT jid, jid_id FROM jids ORDER BY jid') + # get those jids that have at least one entry in logs + self.cur.execute('SELECT jid, jid_id FROM jids WHERE jid_id IN (SELECT ' + 'distinct logs.jid_id FROM logs) ORDER BY jid') rows = self.cur.fetchall() # list of tupples: [(u'aaa@bbb',), (u'cc@dd',)] for row in rows: self.jids_already_in.append(row[0]) # jid diff --git a/src/music_track_listener.py b/src/music_track_listener.py index b5bccbdc4..ca4550749 100644 --- a/src/music_track_listener.py +++ b/src/music_track_listener.py @@ -14,6 +14,8 @@ ## GNU General Public License for more details. ## import gobject +if __name__ == '__main__': + from common import i18n import dbus_support if dbus_support.supported: import dbus @@ -24,8 +26,9 @@ class MusicTrackInfo(object): class MusicTrackListener(gobject.GObject): - __gsignals__ = { 'music-track-changed': (gobject.SIGNAL_RUN_LAST, None, - (object,)) } + __gsignals__ = { + 'music-track-changed': (gobject.SIGNAL_RUN_LAST, None, (object,)), + } _instance = None @classmethod @@ -36,14 +39,43 @@ class MusicTrackListener(gobject.GObject): def __init__(self): super(MusicTrackListener, self).__init__() + self._last_playing_music = None + bus = dbus.SessionBus() + + ## Muine bus.add_signal_receiver(self._muine_music_track_change_cb, 'SongChanged', 'org.gnome.Muine.Player') + bus.add_signal_receiver(self._player_name_owner_changed, + 'NameOwnerChanged', 'org.freedesktop.DBus', arg0='org.gnome.Muine') + bus.add_signal_receiver(self._player_playing_changed_cb, 'StateChanged', + 'org.gnome.Muine.Player') + + ## Rhythmbox bus.add_signal_receiver(self._rhythmbox_music_track_change_cb, 'playingUriChanged', 'org.gnome.Rhythmbox.Player') + bus.add_signal_receiver(self._player_name_owner_changed, + 'NameOwnerChanged', 'org.freedesktop.DBus', arg0='org.gnome.Rhythmbox') + bus.add_signal_receiver(self._player_playing_changed_cb, + 'playingChanged', 'org.gnome.Rhythmbox.Player') + + def do_music_track_changed(self, info): + if info is not None: + self._last_playing_music = info + + def _player_name_owner_changed(self, name, old, new): + if not new: + self.emit('music-track-changed', None) + + def _player_playing_changed_cb(self, playing): + if playing: + self.emit('music-track-changed', self._last_playing_music) + else: + self.emit('music-track-changed', None) def _muine_properties_extract(self, song_string): - d = dict((x.strip() for x in s1.split(':', 1)) for s1 in song_string.split('\n')) + d = dict((x.strip() for x in s1.split(':', 1)) for s1 in \ + song_string.split('\n')) info = MusicTrackInfo() info.title = d['title'] info.album = d['album'] @@ -67,7 +99,8 @@ class MusicTrackListener(gobject.GObject): def _rhythmbox_music_track_change_cb(self, uri): bus = dbus.SessionBus() - rbshellobj = bus.get_object('org.gnome.Rhythmbox', '/org/gnome/Rhythmbox/Shell') + rbshellobj = bus.get_object('org.gnome.Rhythmbox', + '/org/gnome/Rhythmbox/Shell') rbshell = dbus.Interface(rbshellobj, 'org.gnome.Rhythmbox.Shell') props = rbshell.getSongProperties(uri) info = self._rhythmbox_properties_extract(props) @@ -87,19 +120,22 @@ class MusicTrackListener(gobject.GObject): if player.GetPlaying(): song_string = player.GetCurrentSong() song = self._muine_properties_extract(song_string) + self._last_playing_music = song return song ## Check Rhythmbox playing song if dbus.dbus_bindings.bus_name_has_owner(bus.get_connection(), 'org.gnome.Rhythmbox'): - rbshellobj = bus.get_object('org.gnome.Rhythmbox', '/org/gnome/Rhythmbox/Shell') + rbshellobj = bus.get_object('org.gnome.Rhythmbox', + '/org/gnome/Rhythmbox/Shell') player = dbus.Interface( - bus.get_object('org.gnome.Rhythmbox', '/org/gnome/Rhythmbox/Player'), - 'org.gnome.Rhythmbox.Player') + bus.get_object('org.gnome.Rhythmbox', + '/org/gnome/Rhythmbox/Player'), 'org.gnome.Rhythmbox.Player') rbshell = dbus.Interface(rbshellobj, 'org.gnome.Rhythmbox.Shell') uri = player.getPlayingUri() props = rbshell.getSongProperties(uri) info = self._rhythmbox_properties_extract(props) + self._last_playing_music = info return info return None @@ -107,7 +143,10 @@ class MusicTrackListener(gobject.GObject): # here we test :) if __name__ == '__main__': def music_track_change_cb(listener, music_track_info): - print music_track_info.title + if music_track_info is None: + print "Stop!" + else: + print music_track_info.title listener = MusicTrackListener.get() listener.connect('music-track-changed', music_track_change_cb) track = listener.get_playing_track() diff --git a/src/roster_window.py b/src/roster_window.py index 4100e54b3..2af1eef9f 100644 --- a/src/roster_window.py +++ b/src/roster_window.py @@ -691,8 +691,11 @@ class RosterWindow: xml_console_menuitem.connect('activate', self.on_xml_console_menuitem_activate, account) - privacy_lists_menuitem.connect('activate', - self.on_privacy_lists_menuitem_activate, account) + if gajim.connections[account] and gajim.connections[account].privacy_rules_supported: + privacy_lists_menuitem.connect('activate', + self.on_privacy_lists_menuitem_activate, account) + else: + privacy_lists_menuitem.set_sensitive(False) send_server_message_menuitem.connect('activate', self.on_send_server_message_menuitem_activate, account) @@ -2469,6 +2472,11 @@ _('If "%s" accepts this request you will know his or her status.') % jid) {'title': music_track_info.title, 'artist': music_track_info.artist } for acct in accounts: + if not gajim.config.get_per('accounts', acct, + 'sync_with_global_status'): + continue + if not gajim.connections[acct].connected: + continue current_show = gajim.SHOW_LIST[gajim.connections[acct].connected] self.send_status(acct, current_show, status_message) diff --git a/src/systraywin32.py b/src/systraywin32.py index c758247e0..2705897f7 100644 --- a/src/systraywin32.py +++ b/src/systraywin32.py @@ -275,10 +275,7 @@ class SystrayWin32(systray.Systray): def load_icos(self): '''load .ico files and return them to a dic of SHOW --> img_obj''' - iconset = str(gajim.config.get('iconset')) - if not iconset: - iconset = 'dcraven' - + iconset = gajim.config.get('iconset') imgs = {} path = os.path.join(gajim.DATA_DIR, 'iconsets', iconset, '16x16', 'icos') # icon folder for missing icons From 3de26f73ec1103d34ea9022054b614acacaba379 Mon Sep 17 00:00:00 2001 From: Dimitur Kirov Date: Tue, 26 Sep 2006 16:05:53 +0000 Subject: [PATCH 076/110] set privacy_rules_supported to False for zeroconf connection --- src/common/zeroconf/connection_zeroconf.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/common/zeroconf/connection_zeroconf.py b/src/common/zeroconf/connection_zeroconf.py index 36fc38b33..98e79d48b 100644 --- a/src/common/zeroconf/connection_zeroconf.py +++ b/src/common/zeroconf/connection_zeroconf.py @@ -60,6 +60,7 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): self.connection = None self.gpg = None self.is_zeroconf = True + self.privacy_rules_supported = False self.status = '' self.old_show = '' From 2a067d1d8c33e1bfae5018d1d8f83d68d451aba9 Mon Sep 17 00:00:00 2001 From: Stefan Bethge Date: Wed, 27 Sep 2006 14:38:57 +0000 Subject: [PATCH 077/110] prevent drag'n'drop of contacts into zeroconf account --- src/roster_window.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/roster_window.py b/src/roster_window.py index 2af1eef9f..84e92a169 100644 --- a/src/roster_window.py +++ b/src/roster_window.py @@ -3584,6 +3584,10 @@ _('If "%s" accepts this request you will know his or her status.') % jid) if account_dest == 'all': # drop on account row in merged mode: we can't know which account it is return + + if account_dest == gajim.ZEROCONF_ACC_NAME: + # drop on zeroconf account, no contact adds possible + return # if account is not connected, do nothing if gajim.connections[account_dest].connected < 2: From 07912779032c5a212677bc12acc6e0e25dff1668 Mon Sep 17 00:00:00 2001 From: Stefan Bethge Date: Wed, 27 Sep 2006 14:45:14 +0000 Subject: [PATCH 078/110] no drog'n'drop from local account to other accounts --- src/roster_window.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/roster_window.py b/src/roster_window.py index 84e92a169..d2df47b8f 100644 --- a/src/roster_window.py +++ b/src/roster_window.py @@ -3625,6 +3625,8 @@ _('If "%s" accepts this request you will know his or her status.') % jid) return if type_dest == 'account' and account_source == account_dest: return + if account_source == gajim.ZEROCONF_ACC_NAME: + return it = iter_source while model[it][C_TYPE] == 'contact': it = model.iter_parent(it) From 341e88864c8e38a46ca282e04948be8e834c1e9f Mon Sep 17 00:00:00 2001 From: Stefan Bethge Date: Thu, 28 Sep 2006 22:23:53 +0000 Subject: [PATCH 079/110] remove ssl/tls button from zeroconf props, don't publish empty txt fields --- data/glade/zeroconf_properties_window.glade | 199 +++++++++----------- src/common/zeroconf/connection_zeroconf.py | 11 +- src/common/zeroconf/roster_zeroconf.py | 1 + src/common/zeroconf/zeroconf.py | 29 ++- src/config.py | 9 +- 5 files changed, 117 insertions(+), 132 deletions(-) diff --git a/data/glade/zeroconf_properties_window.glade b/data/glade/zeroconf_properties_window.glade index 628854b2f..0c2b30490 100644 --- a/data/glade/zeroconf_properties_window.glade +++ b/data/glade/zeroconf_properties_window.glade @@ -136,6 +136,95 @@ + + + 6 + True + False + 6 + + + + True + False + 0 + + + + True + True + Use custom port: + True + GTK_RELIEF_NORMAL + True + False + False + True + + + + 0 + False + False + + + + + + True + True + True + True + 0 + + True + â— + False + 6 + + + 0 + False + True + + + + + 0 + False + False + + + + + False + True + + + + + + True + Connection + False + False + GTK_JUSTIFY_LEFT + False + False + 0.5 + 0.5 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + tab + + + 6 @@ -370,116 +459,6 @@ tab - - - - 6 - True - False - 6 - - - - True - False - True - Use _TLS - True - GTK_RELIEF_NORMAL - True - False - False - True - - - - 0 - False - False - - - - - - True - False - 0 - - - - True - True - Use custom port: - True - GTK_RELIEF_NORMAL - True - False - False - True - - - - 0 - False - False - - - - - - True - True - True - True - 0 - - True - â— - False - 6 - - - 0 - False - True - - - - - 0 - False - False - - - - - False - True - - - - - - True - Connection - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - 0 diff --git a/src/common/zeroconf/connection_zeroconf.py b/src/common/zeroconf/connection_zeroconf.py index 98e79d48b..e41e6dda3 100644 --- a/src/common/zeroconf/connection_zeroconf.py +++ b/src/common/zeroconf/connection_zeroconf.py @@ -188,6 +188,9 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): self.zeroconf.resolve_all() diffs = self.roster.getDiffs() for key in diffs: + print key + print self.roster.getStatus(key) + print self.roster.getMessage(key), self.roster.setItem(key) self.dispatch('NOTIFY', (key, self.roster.getStatus(key), self.roster.getMessage(key), 'local', 0, None, 0)) return self.call_resolve_timeout @@ -258,16 +261,12 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): self.call_resolve_timeout = False self.zeroconf.disconnect() - def reconnect(self, new_port, use_tls): + def reconnect(self, new_port): txt = {} txt['1st'] = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, 'zeroconf_first_name') txt['last'] = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, 'zeroconf_last_name') txt['jid'] = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, 'zeroconf_jabber_id') txt['email'] = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, 'zeroconf_email') - txt2 = {} - for key, val in txt.iteritems(): - if val != '': - txt2[key] = val port = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, 'custom_port') @@ -277,7 +276,7 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): self.connection.start_listener(port) self.zeroconf.remove_announce() - self.zeroconf.txt = txt2 + self.zeroconf.txt = txt self.zeroconf.port = port self.zeroconf.username = self.username self.zeroconf.announce() diff --git a/src/common/zeroconf/roster_zeroconf.py b/src/common/zeroconf/roster_zeroconf.py index 09d907ca0..3aed5527c 100644 --- a/src/common/zeroconf/roster_zeroconf.py +++ b/src/common/zeroconf/roster_zeroconf.py @@ -121,6 +121,7 @@ class Roster: def getStatus(self, jid): if self._data.has_key(jid): + print 'roster: getStatus: %s' % self._data[jid]['status'] return self._data[jid]['status'] def getMessage(self, jid): diff --git a/src/common/zeroconf/zeroconf.py b/src/common/zeroconf/zeroconf.py index dc080d130..cb0e10fe0 100755 --- a/src/common/zeroconf/zeroconf.py +++ b/src/common/zeroconf/zeroconf.py @@ -201,14 +201,26 @@ class Zeroconf: # create an EntryGroup for publishing self.entrygroup = dbus.Interface(self.bus.get_object(avahi.DBUS_NAME, self.server.EntryGroupNew()), avahi.DBUS_INTERFACE_ENTRY_GROUP) self.entrygroup.connect_to_signal('StateChanged', self.entrygroup_state_changed_callback) - - self.txt['port.p2pj'] = self.port - self.txt['version'] = 1 - self.txt['txtvers'] = 1 + txt = {} + + #remove empty keys + for key,val in self.txt.iteritems(): + if val: + txt[key] = val + + txt['port.p2pj'] = self.port + txt['version'] = 1 + txt['txtvers'] = 1 + # replace gajim's show messages with compatible ones if self.txt.has_key('status'): - self.txt['status'] = self.replace_show(self.txt['status']) + txt['status'] = self.replace_show(self.txt['status']) + else: + txt['status'] = 'avail' + + + self.txt = txt # print "Publishing service '%s' of type %s" % (self.name, self.stype) self.entrygroup.AddService(avahi.IF_UNSPEC, avahi.PROTO_UNSPEC, dbus.UInt32(0), self.name, self.stype, '', '', self.port, avahi.dict_to_txt_array(self.txt), reply_handler=self.service_added_callback, error_handler=self.service_add_fail_callback) @@ -255,7 +267,7 @@ class Zeroconf: return True try: self.bus = dbus.SystemBus() - # is there any way to check, if a dbus name exists? + # is there any way to check if a dbus name exists? # that might make the Introspect Error go away... self.server = dbus.Interface(self.bus.get_object(avahi.DBUS_NAME, \ avahi.DBUS_PATH_SERVER), avahi.DBUS_INTERFACE_SERVER) @@ -317,9 +329,10 @@ class Zeroconf: return self.contacts[jid] def update_txt(self, txt): - # update only given keys + # update only new non-empty keys for key in txt.keys(): - self.txt[key]=txt[key] + if txt[key]: + self.txt[key]=txt[key] if txt.has_key('status'): self.txt['status'] = self.replace_show(txt['status']) diff --git a/src/config.py b/src/config.py index 312b13408..4003c378e 100644 --- a/src/config.py +++ b/src/config.py @@ -3122,10 +3122,6 @@ class ZeroconfPropertiesWindow: if st: self.xml.get_widget('email_entry').set_text(st) - st = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, 'use_ssl') - if st: - self.xml.get_widget('use_tls_checkbutton').set_active(st) - st = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, 'custom_port') if st: self.xml.get_widget('custom_port_entry').set_text(str(st)) @@ -3180,9 +3176,6 @@ class ZeroconfPropertiesWindow: st = self.xml.get_widget('email_entry').get_text() gajim.config.set_per('accounts', gajim.ZEROCONF_ACC_NAME, 'zeroconf_email', st) - use_tls = self.xml.get_widget('use_tls_checkbutton').get_active() - gajim.config.set_per('accounts', gajim.ZEROCONF_ACC_NAME, 'use_ssl', use_tls) - use_custom_port = self.xml.get_widget('custom_port_checkbutton').get_active() gajim.config.set_per('accounts', gajim.ZEROCONF_ACC_NAME, 'use_custom_host', use_custom_port) @@ -3201,7 +3194,7 @@ class ZeroconfPropertiesWindow: use_custom_port = False if gajim.connections.has_key(gajim.ZEROCONF_ACC_NAME): - gajim.connections[gajim.ZEROCONF_ACC_NAME].reconnect(use_custom_port, use_tls) + gajim.connections[gajim.ZEROCONF_ACC_NAME].reconnect(use_custom_port) self.window.destroy() From f787d2c1ad10d42709693330d23299623b264382 Mon Sep 17 00:00:00 2001 From: Stefan Bethge Date: Thu, 28 Sep 2006 23:38:55 +0000 Subject: [PATCH 080/110] fix file transfer, add log messages for zeroconf, refresh name changes of roster items (on resolve) --- src/common/zeroconf/client_zeroconf.py | 3 +-- .../zeroconf/connection_handlers_zeroconf.py | 2 +- src/common/zeroconf/connection_zeroconf.py | 12 +++------ src/common/zeroconf/roster_zeroconf.py | 2 +- src/common/zeroconf/zeroconf.py | 25 ++++++++----------- 5 files changed, 17 insertions(+), 27 deletions(-) diff --git a/src/common/zeroconf/client_zeroconf.py b/src/common/zeroconf/client_zeroconf.py index f5e4ed2b7..94bd53ac3 100644 --- a/src/common/zeroconf/client_zeroconf.py +++ b/src/common/zeroconf/client_zeroconf.py @@ -53,7 +53,7 @@ class ZeroconfListener(IdleObject): self._serv.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) self._serv.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1) self._serv.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1) - # will fail when port as busy, or we don't have rights to bind + # will fail when port is busy, or we don't have rights to bind try: self._serv.bind(('0.0.0.0', self.port)) except Exception, e: @@ -500,7 +500,6 @@ class ClientZeroconf: BindPortError(port) return None - def getRoster(self): return self.roster.getRoster() diff --git a/src/common/zeroconf/connection_handlers_zeroconf.py b/src/common/zeroconf/connection_handlers_zeroconf.py index 54600f8ce..20de350d6 100644 --- a/src/common/zeroconf/connection_handlers_zeroconf.py +++ b/src/common/zeroconf/connection_handlers_zeroconf.py @@ -149,7 +149,7 @@ class ConnectionBytestream: except socket.gaierror: self.dispatch('ERROR', (_('Wrong host'), _('The host you configured as the ft_override_host_to_send advanced option is not valid, so ignored.'))) ft_override_host_to_send = self.peerhost[0] - listener = gajim.socks5queue.start_listener(self.peerhost[0], port, + listener = gajim.socks5queue.start_listener(port, sha_str, self._result_socks5_sid, file_props['sid']) if listener == None: file_props['error'] = -5 diff --git a/src/common/zeroconf/connection_zeroconf.py b/src/common/zeroconf/connection_zeroconf.py index e41e6dda3..51a94a64a 100644 --- a/src/common/zeroconf/connection_zeroconf.py +++ b/src/common/zeroconf/connection_zeroconf.py @@ -188,11 +188,10 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): self.zeroconf.resolve_all() diffs = self.roster.getDiffs() for key in diffs: - print key - print self.roster.getStatus(key) - print self.roster.getMessage(key), self.roster.setItem(key) + self.dispatch('ROSTER_INFO', (key, self.roster.getName(key), 'both', 'no', self.roster.getGroups(key))) self.dispatch('NOTIFY', (key, self.roster.getStatus(key), self.roster.getMessage(key), 'local', 0, None, 0)) + #XXX open chat windows don't get refreshed (full name), add that return self.call_resolve_timeout # callbacks called from zeroconf @@ -243,9 +242,9 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): self.connected = STATUS_LIST.index(show) - # refresh all contacts data every second + # refresh all contacts data every five seconds self.call_resolve_timeout = True - gobject.timeout_add(10000, self._on_resolve_timeout) + gobject.timeout_add(5000, self._on_resolve_timeout) else: self.dispatch('STATUS', 'offline') self.status = 'offline' @@ -326,8 +325,6 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): (_('Could not change status of account "%s"') % self.name, _('Please check if avahi-daemon is running.'))) - - def get_status(self): return STATUS_LIST[self.connected] @@ -399,7 +396,6 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): else: kind = 'single_msg_sent' gajim.logger.write(kind, jid, log_msg) - #~ self.zeroconf.send_message(jid, msgtxt, type) self.dispatch('MSGSENT', (jid, msg, keyID)) diff --git a/src/common/zeroconf/roster_zeroconf.py b/src/common/zeroconf/roster_zeroconf.py index 3aed5527c..7924e70f7 100644 --- a/src/common/zeroconf/roster_zeroconf.py +++ b/src/common/zeroconf/roster_zeroconf.py @@ -115,13 +115,13 @@ class Roster: def getGroups(self, jid): return self._data[jid]['groups'] + def getName(self, jid): if self._data.has_key(jid): return self._data[jid]['name'] def getStatus(self, jid): if self._data.has_key(jid): - print 'roster: getStatus: %s' % self._data[jid]['status'] return self._data[jid]['status'] def getMessage(self, jid): diff --git a/src/common/zeroconf/zeroconf.py b/src/common/zeroconf/zeroconf.py index cb0e10fe0..fef1187ae 100755 --- a/src/common/zeroconf/zeroconf.py +++ b/src/common/zeroconf/zeroconf.py @@ -21,7 +21,7 @@ from common import xmpp try: import avahi, gobject, dbus except ImportError: - gajim.log.debug("Error: python-avahi and python-dbus need to be installed. No zeroconf support.") + gajim.log.debug('Error: python-avahi and python-dbus need to be installed. No zeroconf support.') try: import dbus.glib @@ -71,7 +71,7 @@ class Zeroconf: self.disconnected_CB() def new_service_callback(self, interface, protocol, name, stype, domain, flags): - print "Found service '%s' in domain '%s' on %i.%i." % (name, domain, interface, protocol) + gajim.log.debug('Found service %s in domain %s on %i.%i.' % (name, domain, interface, protocol)) if not self.connected: return @@ -81,7 +81,7 @@ class Zeroconf: reply_handler=self.service_resolved_callback, error_handler=self.error_callback) def remove_service_callback(self, interface, protocol, name, stype, domain, flags): - print "Service '%s' in domain '%s' on %i.%i disappeared." % (name, domain, interface, protocol) + gajim.log.debug('Service %s in domain %s on %i.%i disappeared.' % (name, domain, interface, protocol)) #if not self.connected: # return if name != self.name: @@ -121,8 +121,8 @@ class Zeroconf: return items def service_resolved_callback(self, interface, protocol, name, stype, domain, host, aprotocol, address, port, txt, flags): - print "Service data for service '%s' in domain '%s' on %i.%i:" % (name, domain, interface, protocol) - # print "\tHost %s (%s), port %i, TXT data: %s" % (host, address, port, avahi.txt_array_to_string_array(txt)) + gajim.log.debug('Service data for service %s in domain %s on %i.%i:' % (name, domain, interface, protocol)) + gajim.log.debug('Host %s (%s), port %i, TXT data: %s' % (host, address, port, avahi.txt_array_to_string_array(txt))) if not self.connected: return bare_name = name @@ -144,8 +144,6 @@ class Zeroconf: # different handler when resolving all contacts def service_resolved_all_callback(self, interface, protocol, name, stype, domain, host, aprotocol, address, port, txt, flags): - # print "Service data for service '%s' in domain '%s' on %i.%i:" % (name, domain, interface, protocol) - # print "\tHost %s (%s), port %i, TXT data: %s" % (host, address, port, str(avahi.txt_array_to_string_array(txt))) if not self.connected: return bare_name = name @@ -154,16 +152,13 @@ class Zeroconf: self.contacts[name] = (name, domain, interface, protocol, host, address, port, bare_name, txt) def service_added_callback(self): - print 'Service successfully added' - pass + gajim.log.debug('Service successfully added') def service_committed_callback(self): - print 'Service successfully committed' - pass + gajim.log.debug('Service successfully committed') def service_updated_callback(self): - print 'Service successfully updated' - pass + gajim.log.debug('Service successfully updated') def service_add_fail_callback(self, err): gajim.log.debug('Error while adding service. %s' % str(err)) @@ -222,7 +217,7 @@ class Zeroconf: self.txt = txt - # print "Publishing service '%s' of type %s" % (self.name, self.stype) + gajim.log.debug('Publishing service %s of type %s' % (self.name, self.stype)) self.entrygroup.AddService(avahi.IF_UNSPEC, avahi.PROTO_UNSPEC, dbus.UInt32(0), self.name, self.stype, '', '', self.port, avahi.dict_to_txt_array(self.txt), reply_handler=self.service_added_callback, error_handler=self.service_add_fail_callback) self.entrygroup.Commit(reply_handler=self.service_committed_callback, error_handler=self.entrygroup_commit_error_CB) @@ -256,7 +251,7 @@ class Zeroconf: else: return False except dbus.dbus_bindings.DBusException, e: - print "zeroconf.py: Can't remove service, avahi daemon not running?" + gajim.log.debug("Can't remove service. That should not happen") def browse_domain(self, interface, protocol, domain): self.new_service_type(interface, protocol, self.stype, domain, '') From 48af9872f5168045ef1fb1a03993a1db4ec68f1a Mon Sep 17 00:00:00 2001 From: Stefan Bethge Date: Fri, 29 Sep 2006 00:14:04 +0000 Subject: [PATCH 081/110] ignore Timeout reached errors, otherwise connection breaks, fix dragging of files to local contacts --- src/common/zeroconf/zeroconf.py | 6 ++++-- src/roster_window.py | 10 +++++----- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/common/zeroconf/zeroconf.py b/src/common/zeroconf/zeroconf.py index fef1187ae..0924b0869 100755 --- a/src/common/zeroconf/zeroconf.py +++ b/src/common/zeroconf/zeroconf.py @@ -67,8 +67,10 @@ class Zeroconf: def error_callback(self, err): gajim.log.debug(str(err)) - self.disconnect() - self.disconnected_CB() + # timeouts are non-critical + if str(err) != 'Timeout reached': + self.disconnect() + self.disconnected_CB() def new_service_callback(self, interface, protocol, name, stype, domain, flags): gajim.log.debug('Found service %s in domain %s on %i.%i.' % (name, domain, interface, protocol)) diff --git a/src/roster_window.py b/src/roster_window.py index d2df47b8f..0d623b39c 100644 --- a/src/roster_window.py +++ b/src/roster_window.py @@ -3584,11 +3584,7 @@ _('If "%s" accepts this request you will know his or her status.') % jid) if account_dest == 'all': # drop on account row in merged mode: we can't know which account it is return - - if account_dest == gajim.ZEROCONF_ACC_NAME: - # drop on zeroconf account, no contact adds possible - return - + # if account is not connected, do nothing if gajim.connections[account_dest].connected < 2: return @@ -3614,6 +3610,10 @@ _('If "%s" accepts this request you will know his or her status.') % jid) account_dest, c_dest, path) return + if account_dest == gajim.ZEROCONF_ACC_NAME: + # drop on zeroconf account, no contact adds possible + return + if position == gtk.TREE_VIEW_DROP_BEFORE and len(path_dest) == 2: # dropped before a group : we drop it in the previous group path_dest = (path_dest[0], path_dest[1]-1) From a2d7f3a82fa67d78d8e6ed5cc10a61d170aaba70 Mon Sep 17 00:00:00 2001 From: Stefan Bethge Date: Fri, 29 Sep 2006 01:20:45 +0000 Subject: [PATCH 082/110] new context menu for local contacts in roster --- .../glade/zeroconf_contact_context_menu.glade | 153 ++++++++++++++++++ src/roster_window.py | 111 +++++++++++++ 2 files changed, 264 insertions(+) create mode 100644 data/glade/zeroconf_contact_context_menu.glade diff --git a/data/glade/zeroconf_contact_context_menu.glade b/data/glade/zeroconf_contact_context_menu.glade new file mode 100644 index 000000000..edbb0f064 --- /dev/null +++ b/data/glade/zeroconf_contact_context_menu.glade @@ -0,0 +1,153 @@ + + + + + + + + + + True + Start _Chat + True + + + + True + gtk-jump-to + 1 + 0.5 + 0.5 + 0 + 0 + + + + + + + + _Rename + True + + + + True + gtk-refresh + 1 + 0.5 + 0.5 + 0 + 0 + + + + + + + + Edit _Groups + True + + + + + + True + + + + + + True + Send _File + True + + + + True + gtk-file + 1 + 0.5 + 0.5 + 0 + 0 + + + + + + + + Assign Open_PGP Key + True + + + + + True + gtk-dialog-authentication + 1 + 0.5 + 0.5 + 0 + 0 + + + + + + + + True + Add Special _Notification + True + + + + True + gtk-info + 1 + 0.5 + 0.5 + 0 + 0 + + + + + + + + True + + + + + + gtk-info + True + + + + + + _History + True + + + + True + gtk-justify-fill + 1 + 0.5 + 0.5 + 0 + 0 + + + + + + + diff --git a/src/roster_window.py b/src/roster_window.py index 0d623b39c..a1acc6701 100644 --- a/src/roster_window.py +++ b/src/roster_window.py @@ -1361,6 +1361,117 @@ class RosterWindow: if not contact: return + if account == gajim.ZEROCONF_ACC_NAME: + xml = gtkgui_helpers.get_glade('zeroconf_contact_context_menu.glade') + zeroconf_contact_context_menu = xml.get_widget('zeroconf_contact_context_menu') + + start_chat_menuitem = xml.get_widget('start_chat_menuitem') + rename_menuitem = xml.get_widget('rename_menuitem') + edit_groups_menuitem = xml.get_widget('edit_groups_menuitem') + # separator has with send file, assign_openpgp_key_menuitem, etc.. + above_send_file_separator = xml.get_widget('above_send_file_separator') + send_file_menuitem = xml.get_widget('send_file_menuitem') + assign_openpgp_key_menuitem = xml.get_widget( + 'assign_openpgp_key_menuitem') + add_special_notification_menuitem = xml.get_widget( + 'add_special_notification_menuitem') + + add_special_notification_menuitem.hide() + add_special_notification_menuitem.set_no_show_all(True) + + if not our_jid: + # add a special img for rename menuitem + path_to_kbd_input_img = os.path.join(gajim.DATA_DIR, 'pixmaps', + 'kbd_input.png') + img = gtk.Image() + img.set_from_file(path_to_kbd_input_img) + rename_menuitem.set_image(img) + + above_information_separator = xml.get_widget( + 'above_information_separator') + + # skip a separator + information_menuitem = xml.get_widget('information_menuitem') + history_menuitem = xml.get_widget('history_menuitem') + + contacts = gajim.contacts.get_contact(account, jid) + if len(contacts) > 1: # sevral resources + sub_menu = gtk.Menu() + start_chat_menuitem.set_submenu(sub_menu) + + iconset = gajim.config.get('iconset') + path = os.path.join(gajim.DATA_DIR, 'iconsets', iconset, '16x16') + for c in contacts: + # icon MUST be different instance for every item + state_images = self.load_iconset(path) + item = gtk.ImageMenuItem(c.resource + ' (' + str(c.priority) + ')') + icon_name = helpers.get_icon_name_to_show(c, account) + icon = state_images[icon_name] + item.set_image(icon) + sub_menu.append(item) + item.connect('activate', self.on_open_chat_window, c, account, + c.resource) + + else: # one resource + start_chat_menuitem.connect('activate', + self.on_roster_treeview_row_activated, tree_path) + + if contact.resource: + send_file_menuitem.connect('activate', + self.on_send_file_menuitem_activate, account, contact) + else: # if we do not have resource we cannot send file + send_file_menuitem.hide() + send_file_menuitem.set_no_show_all(True) + + rename_menuitem.connect('activate', self.on_rename, iter, tree_path) + information_menuitem.connect('activate', self.on_info, contact, + account) + history_menuitem.connect('activate', self.on_history, contact, + account) + + if _('Not in Roster') not in contact.groups: + #contact is in normal group + edit_groups_menuitem.set_no_show_all(False) + assign_openpgp_key_menuitem.set_no_show_all(False) + edit_groups_menuitem.connect('activate', self.on_edit_groups, [( + contact,account)]) + + if gajim.config.get('usegpg'): + assign_openpgp_key_menuitem.connect('activate', + self.on_assign_pgp_key, contact, account) + + else: # contact is in group 'Not in Roster' + edit_groups_menuitem.hide() + edit_groups_menuitem.set_no_show_all(True) + # hide first of the two consecutive separators + above_send_file_separator.hide() + above_send_file_separator.set_no_show_all(True) + assign_openpgp_key_menuitem.hide() + assign_openpgp_key_menuitem.set_no_show_all(True) + + # Remove many items when it's self contact row + if our_jid: + for menuitem in (rename_menuitem, edit_groups_menuitem, + above_information_separator): + menuitem.set_no_show_all(True) + menuitem.hide() + + # Unsensitive many items when account is offline + if gajim.connections[account].connected < 2: + for widget in [start_chat_menuitem, rename_menuitem, edit_groups_menuitem, send_file_menuitem]: + widget.set_sensitive(False) + + event_button = gtkgui_helpers.get_possible_button_event(event) + + zeroconf_contact_context_menu.attach_to_widget(self.tree, None) + zeroconf_contact_context_menu.connect('selection-done', + gtkgui_helpers.destroy_widget) + zeroconf_contact_context_menu.show_all() + zeroconf_contact_context_menu.popup(None, None, None, event_button, + event.time) + return + + # normal account xml = gtkgui_helpers.get_glade('roster_contact_context_menu.glade') roster_contact_context_menu = xml.get_widget( 'roster_contact_context_menu') From 6a38879014dac17796f6e9116825c1bd823c183e Mon Sep 17 00:00:00 2001 From: Stefan Bethge Date: Fri, 29 Sep 2006 14:39:29 +0000 Subject: [PATCH 083/110] add new zeroconf 'vcard' window, shows the information from the txt record --- data/glade/zeroconf_information_window.glade | 666 +++++++++++++++++++ src/common/zeroconf/connection_zeroconf.py | 80 +-- src/roster_window.py | 11 +- src/vcard.py | 147 ++++ 4 files changed, 827 insertions(+), 77 deletions(-) create mode 100644 data/glade/zeroconf_information_window.glade diff --git a/data/glade/zeroconf_information_window.glade b/data/glade/zeroconf_information_window.glade new file mode 100644 index 000000000..8cdf7e891 --- /dev/null +++ b/data/glade/zeroconf_information_window.glade @@ -0,0 +1,666 @@ + + + + + + + 12 + Contact Information + GTK_WINDOW_TOPLEVEL + GTK_WIN_POS_NONE + False + False + False + True + False + False + GDK_WINDOW_TYPE_HINT_NORMAL + GDK_GRAVITY_NORTH_WEST + True + + + + + + True + False + 12 + + + + True + True + + False + False + GTK_JUSTIFY_LEFT + False + True + 0 + 0.5 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + False + False + + + + + + True + True + True + GTK_POS_TOP + False + False + + + + 12 + True + False + 12 + + + + True + 4 + 2 + False + 6 + 12 + + + + True + Local jid: + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + 1 + 0 + 1 + fill + + + + + + + True + Resource: + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + 1 + 1 + 2 + fill + + + + + + + True + Status: + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + 1 + 2 + 3 + fill + + + + + + + True + True + + False + False + GTK_JUSTIFY_LEFT + False + True + 0 + 0 + 5 + 5 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 1 + 2 + 0 + 1 + + + + + + + True + False + False + + + + True + True + + False + False + GTK_JUSTIFY_LEFT + False + True + 0 + 0 + 5 + 5 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + + + 1 + 2 + 1 + 2 + + + + + + + True + True + False + + + + True + True + + False + False + GTK_JUSTIFY_LEFT + False + True + 0 + 0 + 5 + 5 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + + + 1 + 2 + 2 + 3 + fill + fill + + + + + + True + True + _Log conversation history + True + GTK_RELIEF_NORMAL + True + True + False + True + + + 0 + 2 + 3 + 4 + fill + + + + + + 0 + True + True + + + + + + True + False + 0 + + + + True + False + False + + + + + True + 0.5 + 0 + 0 + 0 + + + + + 0 + False + False + + + + + + + + + 0 + True + True + + + + + False + True + + + + + + True + Contact + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + tab + + + + + + 16 + True + 4 + 2 + False + 6 + 12 + + + + True + Jabber ID: + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + 1 + 2 + 3 + fill + + + + + + + True + True + + False + False + GTK_JUSTIFY_LEFT + False + True + 0 + 0 + 5 + 5 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 1 + 2 + 2 + 3 + fill + + + + + + + True + E-Mail: + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + 1 + 3 + 4 + fill + + + + + + + True + True + + False + False + GTK_JUSTIFY_LEFT + True + True + 0 + 0 + 5 + 5 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 1 + 2 + 3 + 4 + fill + + + + + + + True + Last Name: + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + 1 + 1 + 2 + fill + + + + + + + True + First Name: + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + 1 + 0 + 1 + fill + + + + + + + True + True + + False + False + GTK_JUSTIFY_LEFT + False + True + 0 + 0 + 5 + 5 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 1 + 2 + 0 + 1 + expand + + + + + + True + True + + False + False + GTK_JUSTIFY_LEFT + False + True + 0 + 0 + 5 + 5 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 1 + 2 + 1 + 2 + fill + + + + + + True + True + + + + + + True + Personal + False + False + GTK_JUSTIFY_LEFT + False + False + 0.5 + 0.5 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + tab + + + + + 0 + True + True + + + + + + True + GTK_BUTTONBOX_END + 0 + + + + True + True + True + gtk-close + True + GTK_RELIEF_NORMAL + True + + + + + + 0 + True + True + + + + + + + diff --git a/src/common/zeroconf/connection_zeroconf.py b/src/common/zeroconf/connection_zeroconf.py index 51a94a64a..96b6b1653 100644 --- a/src/common/zeroconf/connection_zeroconf.py +++ b/src/common/zeroconf/connection_zeroconf.py @@ -73,7 +73,6 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): #we don't need a password, but must be non-empty self.password = 'zeroconf' - #XXX use that somewhere self.autoconnect = False self.sync_with_global_status = True self.no_log_for = False @@ -86,10 +85,6 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): else: gajim.config.set('usegpg', False) - self.on_connect_success = None - self.on_connect_failure = None - self.retrycount = 0 - self.jids_for_auto_auth = [] # list of jid to auto-authorize self.get_config_values_or_default() self.zeroconf = zeroconf.Zeroconf(self._on_new_service, self._on_remove_service, self._on_name_conflictCB, @@ -148,9 +143,9 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): gajim.log.debug('reconnect') signed = self.get_signed_msg(self.status) - + self.reconnect() + def quit(self, kill_core): - if kill_core and self.connected > 1: self.disconnect() @@ -445,19 +440,9 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): def request_last_status_time(self, jid, resource): gajim.log.debug('This should not happen (request_last_status_time)') - + def request_os_info(self, jid, resource): - ''' - if not self.connection: - return - to_whom_jid = jid - if resource: - to_whom_jid += '/' + resource - iq = common.xmpp.Iq(to = to_whom_jid, typ = 'get', queryNS =\ - common.xmpp.NS_VERSION) - self.connection.send(iq) - ''' - pass + gajim.log.debug('This should not happen (request_os_info)') def get_settings(self): gajim.log.debug('This should not happen (get_settings)') @@ -474,39 +459,6 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): def send_agent_status(self, agent, ptype): gajim.log.debug('This should not happen (send_agent_status)') - def join_gc(self, nick, room, server, password): - gajim.log.debug('This should not happen (join_gc)') - - def send_gc_message(self, jid, msg): - gajim.log.debug('This should not happen (send_gc_message)') - - def send_gc_subject(self, jid, subject): - gajim.log.debug('This should not happen (send_gc_subject)') - - def request_gc_config(self, room_jid): - gajim.log.debug('This should not happen (request_gc_config)') - - def change_gc_nick(self, room_jid, nick): - gajim.log.debug('This should not happen (change_gc_nick)') - - def send_gc_status(self, nick, jid, show, status): - gajim.log.debug('This should not happen (send_gc_status)') - - def gc_set_role(self, room_jid, nick, role, reason = ''): - gajim.log.debug('This should not happen (gc_set_role)') - - def gc_set_affiliation(self, room_jid, jid, affiliation, reason = ''): - gajim.log.debug('This should not happen (gc_set_affiliation)') - - def send_gc_affiliation_list(self, room_jid, list): - gajim.log.debug('This should not happen (send_gc_affiliation_list)') - - def get_affiliation_list(self, room_jid, affiliation): - gajim.log.debug('This should not happen (get_affiliation_list)') - - def send_gc_config(self, room_jid, config): - gajim.log.debug('This should not happen (send_gc_config)') - def gpg_passphrase(self, passphrase): if USE_GPG: use_gpg_agent = gajim.config.get('use_gpg_agent') @@ -527,30 +479,6 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): return keys return None - def change_password(self, password): - if not self.connection: - return - ''' - hostname = gajim.config.get_per('accounts', self.name, 'hostname') - username = gajim.config.get_per('accounts', self.name, 'name') - iq = common.xmpp.Iq(typ = 'set', to = hostname) - q = iq.setTag(common.xmpp.NS_REGISTER + ' query') - q.setTagData('username',username) - q.setTagData('password',password) - self.connection.send(iq) - ''' - pass - - def unregister_account(self, on_remove_success): - gajim.log.debug('This should not happen (unregister_account)') - - def send_invite(self, room, to, reason=''): - gajim.log.debug('This should not happen (send_invite)') - - def send_keepalive(self): - # nothing received for the last foo seconds (60 secs by default) - pass - def _event_dispatcher(self, realm, event, data): if realm == '': if event == common.xmpp.transports.DATA_RECEIVED: diff --git a/src/roster_window.py b/src/roster_window.py index a1acc6701..8a385e8a5 100644 --- a/src/roster_window.py +++ b/src/roster_window.py @@ -1116,6 +1116,14 @@ class RosterWindow: else: info[contact.jid] = vcard.VcardWindow(contact, account) + def on_info_zeroconf(self, widget, contact, account): + info = gajim.interface.instances[account]['infos'] + if info.has_key(contact.jid): + info[contact.jid].window.present() + else: + info[contact.jid] = vcard.ZeroconfVcardWindow(contact, account) + + def show_tooltip(self, contact): pointer = self.tree.get_pointer() props = self.tree.get_path_at_pos(pointer[0], pointer[1]) @@ -1424,7 +1432,7 @@ class RosterWindow: send_file_menuitem.set_no_show_all(True) rename_menuitem.connect('activate', self.on_rename, iter, tree_path) - information_menuitem.connect('activate', self.on_info, contact, + information_menuitem.connect('activate', self.on_info_zeroconf, contact, account) history_menuitem.connect('activate', self.on_history, contact, account) @@ -1471,6 +1479,7 @@ class RosterWindow: event.time) return + # normal account xml = gtkgui_helpers.get_glade('roster_contact_context_menu.glade') roster_contact_context_menu = xml.get_widget( diff --git a/src/vcard.py b/src/vcard.py index 975d39a74..50346775c 100644 --- a/src/vcard.py +++ b/src/vcard.py @@ -315,6 +315,153 @@ class VcardWindow: self.fill_status_label() gajim.connections[self.account].request_vcard(self.contact.jid, self.is_fake) + + def on_close_button_clicked(self, widget): + self.window.destroy() + + +class ZeroconfVcardWindow: + def __init__(self, contact, account, is_fake = False): + # the contact variable is the jid if vcard is true + self.xml = gtkgui_helpers.get_glade('zeroconf_information_window.glade') + self.window = self.xml.get_widget('zeroconf_information_window') + + self.contact = contact + self.account = account + self.is_fake = is_fake + + # self.avatar_mime_type = None + # self.avatar_encoded = None + + self.fill_contact_page() + self.fill_personal_page() + + self.xml.signal_autoconnect(self) + self.window.show_all() + + def on_zeroconf_information_window_destroy(self, widget): + del gajim.interface.instances[self.account]['infos'][self.contact.jid] + + def on_zeroconf_information_window_key_press_event(self, widget, event): + if event.keyval == gtk.keysyms.Escape: + self.window.destroy() + + def on_log_history_checkbutton_toggled(self, widget): + #log conversation history? + oldlog = True + no_log_for = gajim.config.get_per('accounts', self.account, + 'no_log_for').split() + if self.contact.jid in no_log_for: + oldlog = False + log = widget.get_active() + if not log and not self.contact.jid in no_log_for: + no_log_for.append(self.contact.jid) + if log and self.contact.jid in no_log_for: + no_log_for.remove(self.contact.jid) + if oldlog != log: + gajim.config.set_per('accounts', self.account, 'no_log_for', + ' '.join(no_log_for)) + + def on_PHOTO_eventbox_button_press_event(self, widget, event): + '''If right-clicked, show popup''' + if event.button == 3: # right click + menu = gtk.Menu() + menuitem = gtk.ImageMenuItem(gtk.STOCK_SAVE_AS) + menuitem.connect('activate', + gtkgui_helpers.on_avatar_save_as_menuitem_activate, + self.contact.jid, self.account, self.contact.name + '.jpeg') + menu.append(menuitem) + menu.connect('selection-done', lambda w:w.destroy()) + # show the menu + menu.show_all() + menu.popup(None, None, None, event.button, event.time) + + def set_value(self, entry_name, value): + try: + if value and entry_name == 'URL_label': + if gtk.pygtk_version >= (2, 10, 0) and gtk.gtk_version >= (2, 10, 0): + widget = gtk.LinkButton(value, value) + else: + widget = gtk.Label(value) + table = self.xml.get_widget('personal_info_table') + table.attach(widget, 1, 4, 3, 4, yoptions = 0) + else: + self.xml.get_widget(entry_name).set_text(value) + except AttributeError: + pass + + def fill_status_label(self): + if self.xml.get_widget('information_notebook').get_n_pages() < 2: + return + contact_list = gajim.contacts.get_contact(self.account, self.contact.jid) + # stats holds show and status message + stats = '' + one = True # Are we adding the first line ? + if contact_list: + for c in contact_list: + if not one: + stats += '\n' + stats += helpers.get_uf_show(c.show) + if c.status: + stats += ': ' + c.status + if c.last_status_time: + stats += '\n' + _('since %s') % time.strftime('%c', + c.last_status_time).decode(locale.getpreferredencoding()) + one = False + else: # Maybe gc_vcard ? + stats = helpers.get_uf_show(self.contact.show) + if self.contact.status: + stats += ': ' + self.contact.status + status_label = self.xml.get_widget('status_label') + status_label.set_max_width_chars(15) + status_label.set_text(stats) + + tip = gtk.Tooltips() + status_label_eventbox = self.xml.get_widget('status_label_eventbox') + tip.set_tip(status_label_eventbox, stats) + + def fill_contact_page(self): + tooltips = gtk.Tooltips() + self.xml.get_widget('nickname_label').set_markup( + '' + + self.contact.get_shown_name() + + '') + self.xml.get_widget('local_jid_label').set_text(self.contact.jid) + + log = True + if self.contact.jid in gajim.config.get_per('accounts', self.account, + 'no_log_for').split(' '): + log = False + checkbutton = self.xml.get_widget('log_history_checkbutton') + checkbutton.set_active(log) + checkbutton.connect('toggled', self.on_log_history_checkbutton_toggled) + + resources = '%s (%s)' % (self.contact.resource, unicode( + self.contact.priority)) + uf_resources = self.contact.resource + _(' resource with priority ')\ + + unicode(self.contact.priority) + if not self.contact.status: + self.contact.status = '' + + # Request list time status + # gajim.connections[self.account].request_last_status_time(self.contact.jid, + # self.contact.resource) + + self.xml.get_widget('resource_prio_label').set_text(resources) + resource_prio_label_eventbox = self.xml.get_widget( + 'resource_prio_label_eventbox') + tooltips.set_tip(resource_prio_label_eventbox, uf_resources) + + self.fill_status_label() + + # gajim.connections[self.account].request_vcard(self.contact.jid, self.is_fake) + + def fill_personal_page(self): + contact = gajim.connections[gajim.ZEROCONF_ACC_NAME].roster.getItem(self.contact.jid) + self.xml.get_widget('first_name_label').set_text(contact['txt_dict']['1st']) + self.xml.get_widget('last_name_label').set_text(contact['txt_dict']['last']) + self.xml.get_widget('jabber_id_label').set_text(contact['txt_dict']['jid']) + self.xml.get_widget('email_label').set_text(contact['txt_dict']['email']) def on_close_button_clicked(self, widget): self.window.destroy() From d07dc39830199974d55bb158e097854cbd92cd1b Mon Sep 17 00:00:00 2001 From: Stefan Bethge Date: Fri, 29 Sep 2006 17:40:11 +0000 Subject: [PATCH 084/110] check if avahi is available and we're not on windows, otherwise checkbutton is not sensitive --- data/glade/accounts_window.glade | 3 ++- src/common/zeroconf/connection_zeroconf.py | 31 +++++++++++----------- src/config.py | 10 +++++++ 3 files changed, 28 insertions(+), 16 deletions(-) diff --git a/data/glade/accounts_window.glade b/data/glade/accounts_window.glade index 7c92c0508..39b637bae 100644 --- a/data/glade/accounts_window.glade +++ b/data/glade/accounts_window.glade @@ -95,7 +95,8 @@ True - If checked, all local contacts that use a Bonjour compatible chat client (like iChat, Trillian or Gaim) will be shown in roster. You don't need a jabber server for it. + If checked, all local contacts that use a Bonjour compatible chat client (like iChat, Trillian or Gaim) will be shown in roster. You don't need to be connected to a jabber server for it to work. +This is only available if python-avahi is installed and avahi-daemon is running. True _Enable link-local messaging True diff --git a/src/common/zeroconf/connection_zeroconf.py b/src/common/zeroconf/connection_zeroconf.py index 96b6b1653..01bc2d41c 100644 --- a/src/common/zeroconf/connection_zeroconf.py +++ b/src/common/zeroconf/connection_zeroconf.py @@ -256,24 +256,25 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): self.zeroconf.disconnect() def reconnect(self, new_port): - txt = {} - txt['1st'] = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, 'zeroconf_first_name') - txt['last'] = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, 'zeroconf_last_name') - txt['jid'] = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, 'zeroconf_jabber_id') - txt['email'] = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, 'zeroconf_email') + if self.connected: + txt = {} + txt['1st'] = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, 'zeroconf_first_name') + txt['last'] = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, 'zeroconf_last_name') + txt['jid'] = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, 'zeroconf_jabber_id') + txt['email'] = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, 'zeroconf_email') - port = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, 'custom_port') + port = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, 'custom_port') - if new_port or use_tls: - self.connection.kill_all_connections() - self.connection.listener.disconnect() - self.connection.start_listener(port) + if new_port or use_tls: + self.connection.kill_all_connections() + self.connection.listener.disconnect() + self.connection.start_listener(port) - self.zeroconf.remove_announce() - self.zeroconf.txt = txt - self.zeroconf.port = port - self.zeroconf.username = self.username - self.zeroconf.announce() + self.zeroconf.remove_announce() + self.zeroconf.txt = txt + self.zeroconf.port = port + self.zeroconf.username = self.username + self.zeroconf.announce() def change_status(self, show, msg, sync = False, auto = False): if not show in STATUS_LIST: diff --git a/src/config.py b/src/config.py index 4003c378e..ef953d74b 100644 --- a/src/config.py +++ b/src/config.py @@ -1790,10 +1790,20 @@ class AccountsWindow: st = gajim.config.get('mergeaccounts') self.xml.get_widget('merge_checkbutton').set_active(st) + import os + + avahi_error = False + try: + import avahi + except ImportError: + avahi_error = True + # enable zeroconf st = gajim.config.get('enable_zeroconf') w = self.xml.get_widget('enable_zeroconf_checkbutton') w.set_active(st) + if os.name == 'nt' or avahi_error: + w.set_sensitive(False) w.connect('toggled', self.on_enable_zeroconf_checkbutton_toggled) def on_accounts_window_key_press_event(self, widget, event): From 2a0bce4e04f135d63c23a8f99666f2b41270571d Mon Sep 17 00:00:00 2001 From: Stefan Bethge Date: Fri, 29 Sep 2006 17:52:21 +0000 Subject: [PATCH 085/110] don't attempt to do zeroconf things if avahi is not found, display notification --- src/common/zeroconf/connection_zeroconf.py | 23 +++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/src/common/zeroconf/connection_zeroconf.py b/src/common/zeroconf/connection_zeroconf.py index 01bc2d41c..84c017cd4 100644 --- a/src/common/zeroconf/connection_zeroconf.py +++ b/src/common/zeroconf/connection_zeroconf.py @@ -86,9 +86,18 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): gajim.config.set('usegpg', False) self.get_config_values_or_default() - self.zeroconf = zeroconf.Zeroconf(self._on_new_service, - self._on_remove_service, self._on_name_conflictCB, - self._on_disconnected, self.username, self.host, self.port) + + self.avahi_error = False + try: + import avahi + except ImportError: + self.avahi_error = True + + if not self.avahi_error: + self.zeroconf = zeroconf.Zeroconf(self._on_new_service, + self._on_remove_service, self._on_name_conflictCB, + self._on_disconnected, self.username, self.host, self.port) + self.muc_jid = {} # jid of muc server for each transport type self.vcard_supported = False @@ -283,6 +292,14 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): check = True #to check for errors from zeroconf + if self.avahi_error: + self.dispatch('STATUS', 'offline') + self.status = 'offline' + self.dispatch('CONNECTION_LOST', + (_('Could not connect "%s"') % self.name, + _('Please check if avahi is installed.'))) + return + # 'connect' if show != 'offline' and not self.connected: self.connect(None, show, msg) From cb4153a4a3cc082a346b60ebad03509faa139ee4 Mon Sep 17 00:00:00 2001 From: Stefan Bethge Date: Fri, 29 Sep 2006 17:56:51 +0000 Subject: [PATCH 086/110] allow disabling zeroconf if avahi was removed after enabling it --- src/config.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/config.py b/src/config.py index ef953d74b..9aaf81caa 100644 --- a/src/config.py +++ b/src/config.py @@ -1802,7 +1802,7 @@ class AccountsWindow: st = gajim.config.get('enable_zeroconf') w = self.xml.get_widget('enable_zeroconf_checkbutton') w.set_active(st) - if os.name == 'nt' or avahi_error: + if os.name == 'nt' or (avahi_error and not w.get_active()): w.set_sensitive(False) w.connect('toggled', self.on_enable_zeroconf_checkbutton_toggled) From 6ec6ec43967e4b38e04092ac54287bfef4e6ef0c Mon Sep 17 00:00:00 2001 From: Stefan Bethge Date: Sat, 30 Sep 2006 01:50:10 +0000 Subject: [PATCH 087/110] fix typo --- src/common/zeroconf/connection_zeroconf.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/common/zeroconf/connection_zeroconf.py b/src/common/zeroconf/connection_zeroconf.py index 84c017cd4..fd507f357 100644 --- a/src/common/zeroconf/connection_zeroconf.py +++ b/src/common/zeroconf/connection_zeroconf.py @@ -296,8 +296,8 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): self.dispatch('STATUS', 'offline') self.status = 'offline' self.dispatch('CONNECTION_LOST', - (_('Could not connect "%s"') % self.name, - _('Please check if avahi is installed.'))) + (_('Could not connect to "%s"') % self.name, + _('Please check if Avahi is installed.'))) return # 'connect' From 227cdb742bc37084f72d996fd0f969330a4bf585 Mon Sep 17 00:00:00 2001 From: Stefan Bethge Date: Sat, 30 Sep 2006 18:23:47 +0000 Subject: [PATCH 088/110] proper handling of normal accounts with the name 'Local', don't use account's name but is_zeroconf flag for checks --- src/common/zeroconf/connection_zeroconf.py | 8 ++------ src/common/zeroconf/zeroconf.py | 11 +++++------ src/config.py | 17 ++++++++++++++--- src/gajim.py | 2 +- src/roster_window.py | 6 +++--- 5 files changed, 25 insertions(+), 19 deletions(-) diff --git a/src/common/zeroconf/connection_zeroconf.py b/src/common/zeroconf/connection_zeroconf.py index fd507f357..6b2543ac3 100644 --- a/src/common/zeroconf/connection_zeroconf.py +++ b/src/common/zeroconf/connection_zeroconf.py @@ -140,13 +140,9 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): self.email = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, 'zeroconf_email') # END __init__ - def put_event(self, ev): - if gajim.handlers.has_key(ev[0]): - gajim.handlers[ev[0]](self.name, ev[1]) - def dispatch(self, event, data): - '''always passes account name as first param''' - self.put_event((event, data)) + if gajim.handlers.has_key(event): + gajim.handlers[event](self.name, data) def _reconnect(self): gajim.log.debug('reconnect') diff --git a/src/common/zeroconf/zeroconf.py b/src/common/zeroconf/zeroconf.py index 0924b0869..fccf1a635 100755 --- a/src/common/zeroconf/zeroconf.py +++ b/src/common/zeroconf/zeroconf.py @@ -74,18 +74,18 @@ class Zeroconf: def new_service_callback(self, interface, protocol, name, stype, domain, flags): gajim.log.debug('Found service %s in domain %s on %i.%i.' % (name, domain, interface, protocol)) - if not self.connected: - return + # if not self.connected: + # return - #synchronous resolving + # synchronous resolving self.server.ResolveService( int(interface), int(protocol), name, stype, \ domain, avahi.PROTO_UNSPEC, dbus.UInt32(0), \ reply_handler=self.service_resolved_callback, error_handler=self.error_callback) def remove_service_callback(self, interface, protocol, name, stype, domain, flags): gajim.log.debug('Service %s in domain %s on %i.%i disappeared.' % (name, domain, interface, protocol)) - #if not self.connected: - # return + # if not self.connected: + # return if name != self.name: for key in self.contacts.keys(): if self.contacts[key][C_BARE_NAME] == name: @@ -98,7 +98,6 @@ class Zeroconf: if self.service_browser: return - object_path = self.server.ServiceBrowserNew(interface, protocol, \ stype, domain, dbus.UInt32(0)) diff --git a/src/config.py b/src/config.py index 9aaf81caa..897907c31 100644 --- a/src/config.py +++ b/src/config.py @@ -1357,6 +1357,9 @@ class AccountModificationWindow: config['custom_host'] = self.xml.get_widget( 'custom_host_entry').get_text().decode('utf-8') + # update in case the name changed to local accounts name + config['is_zeroconf'] = False + config['keyname'] = self.xml.get_widget('gpg_name_label').get_text().decode('utf-8') if config['keyname'] == '': #no key selected config['keyid'] = '' @@ -1804,7 +1807,7 @@ class AccountsWindow: w.set_active(st) if os.name == 'nt' or (avahi_error and not w.get_active()): w.set_sensitive(False) - w.connect('toggled', self.on_enable_zeroconf_checkbutton_toggled) + self.zeroconf_toggled_id = w.connect('toggled', self.on_enable_zeroconf_checkbutton_toggled) def on_accounts_window_key_press_event(self, widget, event): if event.keyval == gtk.keysyms.Escape: @@ -1845,7 +1848,7 @@ class AccountsWindow: dialogs.ErrorDialog(_('Unread events'), _('Read all pending events before removing this account.')) return - if account == gajim.ZEROCONF_ACC_NAME: + if gajim.config.get_per('accounts', account, 'is_zeroconf'): w = self.xml.get_widget('enable_zeroconf_checkbutton') w.set_active(False) else: @@ -1871,7 +1874,7 @@ class AccountsWindow: self.show_modification_window(account) def show_modification_window(self, account): - if account == gajim.ZEROCONF_ACC_NAME: + if gajim.config.get_per('accounts', account, 'is_zeroconf'): if gajim.interface.instances.has_key('zeroconf_properties'): gajim.interface.instances['zeroconf_properties'].window.present() else: @@ -1902,6 +1905,14 @@ class AccountsWindow: def on_enable_zeroconf_checkbutton_toggled(self, widget): + # don't do anything if there is an account with the local name but is a normal account + if gajim.connections.has_key(gajim.ZEROCONF_ACC_NAME) and not gajim.connections[gajim.ZEROCONF_ACC_NAME].is_zeroconf: + gajim.connections[gajim.ZEROCONF_ACC_NAME].dispatch('ERROR', (_('Account Local already exists.'),_('Please rename or remove it before enabling link-local messaging.'))) + widget.disconnect(self.zeroconf_toggled_id) + widget.set_active(False) + self.zeroconf_toggled_id = widget.connect('toggled', self.on_enable_zeroconf_checkbutton_toggled) + return + if gajim.config.get('enable_zeroconf'): #disable gajim.interface.roster.close_all(gajim.ZEROCONF_ACC_NAME) diff --git a/src/gajim.py b/src/gajim.py index 70d8bfe54..3ebd09993 100755 --- a/src/gajim.py +++ b/src/gajim.py @@ -1888,7 +1888,7 @@ class Interface: if gajim.config.get('enable_zeroconf'): gajim.connections[gajim.ZEROCONF_ACC_NAME] = common.zeroconf.connection_zeroconf.ConnectionZeroconf(gajim.ZEROCONF_ACC_NAME) for account in gajim.config.get_per('accounts'): - if account != gajim.ZEROCONF_ACC_NAME: + if not gajim.config.get_per('accounts', account, 'is_zeroconf'): gajim.connections[account] = common.connection.Connection(account) # gtk hooks diff --git a/src/roster_window.py b/src/roster_window.py index 8a385e8a5..96f78cab6 100644 --- a/src/roster_window.py +++ b/src/roster_window.py @@ -1369,7 +1369,7 @@ class RosterWindow: if not contact: return - if account == gajim.ZEROCONF_ACC_NAME: + if gajim.config.get_per('accounts', account, 'is_zeroconf'): xml = gtkgui_helpers.get_glade('zeroconf_contact_context_menu.glade') zeroconf_contact_context_menu = xml.get_widget('zeroconf_contact_context_menu') @@ -3730,7 +3730,7 @@ _('If "%s" accepts this request you will know his or her status.') % jid) account_dest, c_dest, path) return - if account_dest == gajim.ZEROCONF_ACC_NAME: + if gajim.config.get_per('accounts', account_dest, 'is_zeroconf'): # drop on zeroconf account, no contact adds possible return @@ -3745,7 +3745,7 @@ _('If "%s" accepts this request you will know his or her status.') % jid) return if type_dest == 'account' and account_source == account_dest: return - if account_source == gajim.ZEROCONF_ACC_NAME: + if gajim.config.get_per('accounts', account_source, 'is_zeroconf'): return it = iter_source while model[it][C_TYPE] == 'contact': From 207b8cac17e366f07657e99144ecee138b5ee33d Mon Sep 17 00:00:00 2001 From: Stefan Bethge Date: Sun, 1 Oct 2006 23:32:53 +0000 Subject: [PATCH 089/110] remove single message for local account, change name of zeroconf prefs to modify account --- data/glade/zeroconf_context_menu.glade | 24 ++------------------- data/glade/zeroconf_properties_window.glade | 2 +- src/roster_window.py | 8 +++---- 3 files changed, 7 insertions(+), 27 deletions(-) diff --git a/data/glade/zeroconf_context_menu.glade b/data/glade/zeroconf_context_menu.glade index b6bf84d43..f2928cf04 100644 --- a/data/glade/zeroconf_context_menu.glade +++ b/data/glade/zeroconf_context_menu.glade @@ -12,7 +12,7 @@ True - + True gtk-network 1 @@ -25,26 +25,6 @@ - - - True - Send Single _Message... - True - - - - True - gtk-new - 1 - 0.5 - 0.5 - 0 - 0 - - - - - True @@ -52,7 +32,7 @@ True - + True gtk-preferences 1 diff --git a/data/glade/zeroconf_properties_window.glade b/data/glade/zeroconf_properties_window.glade index 0c2b30490..e8f596a63 100644 --- a/data/glade/zeroconf_properties_window.glade +++ b/data/glade/zeroconf_properties_window.glade @@ -5,7 +5,7 @@ 12 - Zeroconf Properties + Modify Account GTK_WINDOW_TOPLEVEL GTK_WIN_POS_NONE False diff --git a/src/roster_window.py b/src/roster_window.py index 96f78cab6..14a1c9ff4 100644 --- a/src/roster_window.py +++ b/src/roster_window.py @@ -2031,14 +2031,14 @@ class RosterWindow: #gc_sub_menu = gtk.Menu() # gc is always a submenu #join_group_chat_menuitem.set_submenu(gc_sub_menu) #self.add_bookmarks_list(gc_sub_menu, account) - new_message_menuitem.connect('activate', - self.on_new_message_menuitem_activate, account) + #new_message_menuitem.connect('activate', + # self.on_new_message_menuitem_activate, account) # make some items insensitive if account is offline - if gajim.connections[account].connected < 2: + #if gajim.connections[account].connected < 2: # for widget in [join_group_chat_menuitem, new_message_menuitem]: # widget.set_sensitive(False) - new_message_menuitem.set_sensitive(False) + # new_message_menuitem.set_sensitive(False) return account_context_menu From 42cf836b7ad588c4b8365a3de077ff830267d051 Mon Sep 17 00:00:00 2001 From: Stefan Bethge Date: Mon, 2 Oct 2006 12:14:56 +0000 Subject: [PATCH 090/110] add copyright line --- src/common/config.py | 3 ++- src/vcard.py | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/common/config.py b/src/common/config.py index 08b198644..ec95f4903 100644 --- a/src/common/config.py +++ b/src/common/config.py @@ -6,7 +6,8 @@ ## Copyright (C) 2005 Dimitur Kirov ## Copyright (C) 2005 Travis Shirk ## Copyright (C) 2005 Norman Rasmussen -## +## Copyright (C) 2006 Stefan Bethge +## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published ## by the Free Software Foundation; version 2 only. diff --git a/src/vcard.py b/src/vcard.py index 50346775c..77ff4fd07 100644 --- a/src/vcard.py +++ b/src/vcard.py @@ -2,6 +2,7 @@ ## ## Copyright (C) 2003-2006 Yann Le Boulanger ## Copyright (C) 2005-2006 Nikos Kouremenos +## Copyright (C) 2006 Stefan Bethge ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published From 1c9c217cdce90bce3935c2567525bb24e3dddea8 Mon Sep 17 00:00:00 2001 From: Stefan Bethge Date: Mon, 2 Oct 2006 12:16:13 +0000 Subject: [PATCH 091/110] add gpg items to zeroconf modify account dialog, gpg should work between gajim clients --- data/glade/zeroconf_properties_window.glade | 375 ++++++++++++++------ src/config.py | 111 +++++- 2 files changed, 369 insertions(+), 117 deletions(-) diff --git a/data/glade/zeroconf_properties_window.glade b/data/glade/zeroconf_properties_window.glade index e8f596a63..49c7e887b 100644 --- a/data/glade/zeroconf_properties_window.glade +++ b/data/glade/zeroconf_properties_window.glade @@ -106,42 +106,6 @@ False - - - False - True - - - - - - True - General - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - - 6 - True - False - 6 @@ -152,6 +116,8 @@ True + If the default port that is used for incoming messages is unfitting for your setup you can select another one here. +You might consider to change possible firewall settings. True Use custom port: True @@ -185,14 +151,14 @@ 0 False - True + False - 0 + 10 False - False + True @@ -203,11 +169,11 @@ - + True - Connection + General False - False + True GTK_JUSTIFY_LEFT False False @@ -229,61 +195,12 @@ 6 True - 4 + 6 2 False - 4 + 5 2 - - - True - E-Mail: - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 3 - 4 - fill - - - - - - - True - True - True - True - 0 - - True - â— - False - - - 1 - 2 - 3 - 4 - - - - True @@ -299,8 +216,8 @@ 1 2 - 2 - 3 + 4 + 5 @@ -326,13 +243,62 @@ 0 1 - 2 - 3 + 4 + 5 fill + + + True + E-Mail: + False + False + GTK_JUSTIFY_LEFT + False + False + 0.5 + 0.5 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + 1 + 5 + 6 + fill + + + + + + + True + True + True + True + 0 + + True + â— + False + + + 1 + 2 + 5 + 6 + + + + True @@ -354,8 +320,8 @@ 0 1 - 1 - 2 + 3 + 4 fill @@ -376,8 +342,8 @@ 1 2 - 1 - 2 + 3 + 4 @@ -403,8 +369,8 @@ 0 1 - 0 - 1 + 2 + 3 fill @@ -425,9 +391,210 @@ 1 2 + 2 + 3 + + + + + + + True + <b>Personal Information</b> + False + True + GTK_JUSTIFY_LEFT + False + False + 0 + 0.5 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + 2 + 1 + 2 + fill + + + + + + + True + False + 5 + + + + True + <b>OpenPGP</b> + False + True + GTK_JUSTIFY_LEFT + False + False + 0 + 0.5 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + False + False + + + + + + True + False + 5 + + + + True + No key selected + False + False + GTK_JUSTIFY_LEFT + False + False + 0.5 + 0.5 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + False + False + + + + + + True + + False + False + GTK_JUSTIFY_LEFT + False + False + 0.5 + 0.5 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + True + True + + + + + + True + True + Choose _Key... + True + GTK_RELIEF_NORMAL + True + + + + 0 + False + False + + + + + 0 + True + True + + + + + + True + False + 0 + + + + True + If checked, Gajim will store the password in ~/.gajim/config with 'read' permission only for you + True + Save _passphrase (insecure) + True + GTK_RELIEF_NORMAL + True + False + False + True + + + + 0 + False + False + + + + + + True + True + True + False + 0 + + True + * + False + + + 0 + True + True + + + + + 0 + True + True + + + + + 0 + 2 0 1 - + fill diff --git a/src/config.py b/src/config.py index 897907c31..d2b7a05d6 100644 --- a/src/config.py +++ b/src/config.py @@ -4,6 +4,7 @@ ## Copyright (C) 2005-2006 Nikos Kouremenos ## Copyright (C) 2005 Dimitur Kirov ## Copyright (C) 2003-2005 Vincent Hanquez +## Copyright (C) 2006 Stefan Bethge ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published @@ -1357,7 +1358,7 @@ class AccountModificationWindow: config['custom_host'] = self.xml.get_widget( 'custom_host_entry').get_text().decode('utf-8') - # update in case the name changed to local accounts name + # update in case the name was changed to local account's name config['is_zeroconf'] = False config['keyname'] = self.xml.get_widget('gpg_name_label').get_text().decode('utf-8') @@ -3112,6 +3113,13 @@ class ZeroconfPropertiesWindow: self.window.set_transient_for(gajim.interface.roster.window) self.xml.signal_autoconnect(self) + self.init_account() + self.init_account_gpg() + + self.xml.get_widget('save_button').grab_focus() + self.window.show_all() + + def init_account(self): st = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, 'autoconnect') if st: self.xml.get_widget('autoconnect_checkbutton').set_active(st) @@ -3156,8 +3164,27 @@ class ZeroconfPropertiesWindow: if not st: gajim.config.set_per('accounts', gajim.ZEROCONF_ACC_NAME, 'custom_port', '5298') - self.xml.get_widget('save_button').grab_focus() - self.window.show_all() + def init_account_gpg(self): + keyid = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, 'keyid') + keyname = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, 'keyname') + savegpgpass = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME,'savegpgpass') + + if not keyid or not gajim.config.get('usegpg'): + return + + self.xml.get_widget('gpg_key_label').set_text(keyid) + self.xml.get_widget('gpg_name_label').set_text(keyname) + gpg_save_password_checkbutton = \ + self.xml.get_widget('gpg_save_password_checkbutton') + gpg_save_password_checkbutton.set_sensitive(True) + gpg_save_password_checkbutton.set_active(savegpgpass) + + if savegpgpass: + entry = self.xml.get_widget('gpg_password_entry') + entry.set_sensitive(True) + gpgpassword = gajim.config.get_per('accounts', + gajim.ZEROCONF_ACC_NAME, 'gpgpassword') + entry.set_text(gpgpassword) def on_zeroconf_properties_window_destroy(self, widget): #close window @@ -3172,33 +3199,35 @@ class ZeroconfPropertiesWindow: self.window.destroy() def on_save_button_clicked(self, widget): + config = {} + st = self.xml.get_widget('autoconnect_checkbutton').get_active() - gajim.config.set_per('accounts', gajim.ZEROCONF_ACC_NAME, 'autoconnect', st) + config['autoconnect'] = st list_no_log_for = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, 'no_log_for').split() if gajim.ZEROCONF_ACC_NAME in list_no_log_for: list_no_log_for.remove(gajim.ZEROCONF_ACC_NAME) if not self.xml.get_widget('log_history_checkbutton').get_active(): list_no_log_for.append(gajim.ZEROCONF_ACC_NAME) - gajim.config.set_per('accounts', gajim.ZEROCONF_ACC_NAME, 'no_log_for', ' '.join(list_no_log_for)) + config['no_log_for'] = ' '.join(list_no_log_for) st = self.xml.get_widget('sync_with_global_status_checkbutton').get_active() - gajim.config.set_per('accounts', gajim.ZEROCONF_ACC_NAME, 'sync_with_global_status', st) + config['sync_with_global_status'] = st st = self.xml.get_widget('first_name_entry').get_text() - gajim.config.set_per('accounts', gajim.ZEROCONF_ACC_NAME, 'zeroconf_first_name', st) + config['zeroconf_first_name'] = st st = self.xml.get_widget('last_name_entry').get_text() - gajim.config.set_per('accounts', gajim.ZEROCONF_ACC_NAME, 'zeroconf_last_name', st) + config['zeroconf_last_name'] = st st = self.xml.get_widget('jabber_id_entry').get_text() - gajim.config.set_per('accounts', gajim.ZEROCONF_ACC_NAME, 'zeroconf_jabber_id', st) + config['zeroconf_jabber_id'] = st st = self.xml.get_widget('email_entry').get_text() - gajim.config.set_per('accounts', gajim.ZEROCONF_ACC_NAME, 'zeroconf_email', st) + config['zeroconf_email'] = st use_custom_port = self.xml.get_widget('custom_port_checkbutton').get_active() - gajim.config.set_per('accounts', gajim.ZEROCONF_ACC_NAME, 'use_custom_host', use_custom_port) + config['use_custom_host'] = use_custom_port old_port = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, 'custom_port') if use_custom_port: @@ -3206,16 +3235,72 @@ class ZeroconfPropertiesWindow: else: port = '5298' - gajim.config.set_per('accounts', gajim.ZEROCONF_ACC_NAME, 'custom_port', port) - # force restart of listener (because port has changed) if port != old_port: use_custom_port = True else: use_custom_port = False + + config['custom_port'] = port + + config['keyname'] = self.xml.get_widget('gpg_name_label').get_text().decode('utf-8') + if config['keyname'] == '': #no key selected + config['keyid'] = '' + config['savegpgpass'] = False + config['gpgpassword'] = '' + else: + config['keyid'] = self.xml.get_widget('gpg_key_label').get_text().decode('utf-8') + config['savegpgpass'] = self.xml.get_widget( + 'gpg_save_password_checkbutton').get_active() + config['gpgpassword'] = self.xml.get_widget('gpg_password_entry' + ).get_text().decode('utf-8') + + for opt in config: + gajim.config.set_per('accounts', gajim.ZEROCONF_ACC_NAME, opt, config[opt]) if gajim.connections.has_key(gajim.ZEROCONF_ACC_NAME): gajim.connections[gajim.ZEROCONF_ACC_NAME].reconnect(use_custom_port) self.window.destroy() + + def on_gpg_choose_button_clicked(self, widget, data = None): + if gajim.connections.has_key(gajim.ZEROCONF_ACC_NAME): + secret_keys = gajim.connections[gajim.ZEROCONF_ACC_NAME].ask_gpg_secrete_keys() + # self.account is None and/or gajim.connections is {} + else: + from common import GnuPG + if GnuPG.USE_GPG: + secret_keys = GnuPG.GnuPG().get_secret_keys() + else: + secret_keys = [] + if not secret_keys: + dialogs.ErrorDialog(_('Failed to get secret keys'), + _('There was a problem retrieving your OpenPGP secret keys.')) + return + secret_keys[_('None')] = _('None') + instance = dialogs.ChooseGPGKeyDialog(_('OpenPGP Key Selection'), + _('Choose your OpenPGP key'), secret_keys) + keyID = instance.run() + if keyID is None: + return + checkbutton = self.xml.get_widget('gpg_save_password_checkbutton') + gpg_key_label = self.xml.get_widget('gpg_key_label') + gpg_name_label = self.xml.get_widget('gpg_name_label') + if keyID[0] == _('None'): + gpg_key_label.set_text(_('No key selected')) + gpg_name_label.set_text('') + checkbutton.set_sensitive(False) + self.xml.get_widget('gpg_password_entry').set_sensitive(False) + else: + gpg_key_label.set_text(keyID[0]) + gpg_name_label.set_text(keyID[1]) + checkbutton.set_sensitive(True) + checkbutton.set_active(False) + self.xml.get_widget('gpg_password_entry').set_text('') + + def on_gpg_save_password_checkbutton_toggled(self, widget): + st = widget.get_active() + w = self.xml.get_widget('gpg_password_entry') + w.set_sensitive(bool(st)) +# w.set_text = '' From d557725810fe03a7819ff4973a9e6527edc43ca8 Mon Sep 17 00:00:00 2001 From: Stefan Bethge Date: Mon, 2 Oct 2006 14:13:43 +0000 Subject: [PATCH 092/110] add missing import --- src/common/zeroconf/client_zeroconf.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/common/zeroconf/client_zeroconf.py b/src/common/zeroconf/client_zeroconf.py index 94bd53ac3..9f6005b6f 100644 --- a/src/common/zeroconf/client_zeroconf.py +++ b/src/common/zeroconf/client_zeroconf.py @@ -22,6 +22,7 @@ from dialogs import BindPortError from common.xmpp.protocol import * import socket import errno +import sys from common.zeroconf import roster_zeroconf From e1dadf48c15eb06fc510de38f90b4e7ee20c1b2e Mon Sep 17 00:00:00 2001 From: Stefan Bethge Date: Mon, 2 Oct 2006 14:15:51 +0000 Subject: [PATCH 093/110] only restart listener or reconnect upon changing preferences if necessary --- data/glade/zeroconf_properties_window.glade | 1 + src/common/zeroconf/connection_zeroconf.py | 29 ++++++++++++--------- src/config.py | 23 +++++++++------- 3 files changed, 30 insertions(+), 23 deletions(-) diff --git a/data/glade/zeroconf_properties_window.glade b/data/glade/zeroconf_properties_window.glade index 49c7e887b..c296fe4d5 100644 --- a/data/glade/zeroconf_properties_window.glade +++ b/data/glade/zeroconf_properties_window.glade @@ -566,6 +566,7 @@ You might consider to change possible firewall settings. True + False True True False diff --git a/src/common/zeroconf/connection_zeroconf.py b/src/common/zeroconf/connection_zeroconf.py index 6b2543ac3..b7d86ac11 100644 --- a/src/common/zeroconf/connection_zeroconf.py +++ b/src/common/zeroconf/connection_zeroconf.py @@ -189,8 +189,10 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): diffs = self.roster.getDiffs() for key in diffs: self.roster.setItem(key) - self.dispatch('ROSTER_INFO', (key, self.roster.getName(key), 'both', 'no', self.roster.getGroups(key))) - self.dispatch('NOTIFY', (key, self.roster.getStatus(key), self.roster.getMessage(key), 'local', 0, None, 0)) + self.dispatch('ROSTER_INFO', (key, self.roster.getName(key), + 'both', 'no', self.roster.getGroups(key))) + self.dispatch('NOTIFY', (key, self.roster.getStatus(key), + self.roster.getMessage(key), 'local', 0, None, 0)) #XXX open chat windows don't get refreshed (full name), add that return self.call_resolve_timeout @@ -259,28 +261,29 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): # stop calling the timeout self.call_resolve_timeout = False self.zeroconf.disconnect() - - def reconnect(self, new_port): + + def reconnect(self): if self.connected: txt = {} txt['1st'] = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, 'zeroconf_first_name') txt['last'] = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, 'zeroconf_last_name') txt['jid'] = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, 'zeroconf_jabber_id') txt['email'] = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, 'zeroconf_email') - - port = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, 'custom_port') - - if new_port or use_tls: - self.connection.kill_all_connections() - self.connection.listener.disconnect() - self.connection.start_listener(port) - + self.zeroconf.remove_announce() self.zeroconf.txt = txt - self.zeroconf.port = port + self.zeroconf.port = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, 'custom_port') self.zeroconf.username = self.username self.zeroconf.announce() + def restart_listener(self): + if self.connection: + port = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, 'custom_port') + self.connection.kill_all_connections() + if self.connection.listener: + self.connection.listener.disconnect() + self.connection.start_listener(port) + def change_status(self, show, msg, sync = False, auto = False): if not show in STATUS_LIST: return -1 diff --git a/src/config.py b/src/config.py index d2b7a05d6..316f24050 100644 --- a/src/config.py +++ b/src/config.py @@ -3233,14 +3233,8 @@ class ZeroconfPropertiesWindow: if use_custom_port: port = self.xml.get_widget('custom_port_entry').get_text() else: - port = '5298' - - # force restart of listener (because port has changed) - if port != old_port: - use_custom_port = True - else: - use_custom_port = False - + port = 5298 + config['custom_port'] = port config['keyname'] = self.xml.get_widget('gpg_name_label').get_text().decode('utf-8') @@ -3255,11 +3249,20 @@ class ZeroconfPropertiesWindow: config['gpgpassword'] = self.xml.get_widget('gpg_password_entry' ).get_text().decode('utf-8') - for opt in config: + reconnect = False + for opt in ('zeroconf_first_name','zeroconf_last_name', 'zeroconf_jabber_id', 'zeroconf_email', 'custom_port'): + if gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, opt) != config[opt]: + reconnect = True + + for opt in config: gajim.config.set_per('accounts', gajim.ZEROCONF_ACC_NAME, opt, config[opt]) if gajim.connections.has_key(gajim.ZEROCONF_ACC_NAME): - gajim.connections[gajim.ZEROCONF_ACC_NAME].reconnect(use_custom_port) + if port != old_port: + # restart listener if port has changed + gajim.connections[gajim.ZEROCONF_ACC_NAME].restart_listener() + if reconnect: + gajim.connections[gajim.ZEROCONF_ACC_NAME].reconnect() self.window.destroy() From ac53b4537c7b40936beeeea140d35a01d9d5f254 Mon Sep 17 00:00:00 2001 From: Dimitur Kirov Date: Mon, 2 Oct 2006 18:03:35 +0000 Subject: [PATCH 094/110] ignore messages with no type attribute --- src/common/zeroconf/connection_handlers_zeroconf.py | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/src/common/zeroconf/connection_handlers_zeroconf.py b/src/common/zeroconf/connection_handlers_zeroconf.py index 20de350d6..3f23f47d8 100644 --- a/src/common/zeroconf/connection_handlers_zeroconf.py +++ b/src/common/zeroconf/connection_handlers_zeroconf.py @@ -787,20 +787,11 @@ class ConnectionHandlersZeroconf(ConnectionVcard, ConnectionBytestream): subject = subject) self.dispatch('MSG', (frm, msgtxt, tim, encrypted, mtype, subject, chatstate, msg_id, composing_jep, user_nick)) - else: # it's single message + elif mtype == 'normal': # it's single message if self.name not in no_log_for and jid not in no_log_for and msgtxt: gajim.logger.write('single_msg_recv', frm, msgtxt, tim = tim, subject = subject) - if invite is not None: - item = invite.getTag('invite') - jid_from = item.getAttr('from') - if jid_from == None: - jid_from = frm - reason = item.getTagData('reason') - item = invite.getTag('password') - password = invite.getTagData('password') - self.dispatch('GC_INVITATION',(frm, jid_from, reason, password)) - else: + if invite: self.dispatch('MSG', (frm, msgtxt, tim, encrypted, 'normal', subject, chatstate, msg_id, composing_jep, user_nick)) # END messageCB From b7ceb9ddf7105381608ef645ccc1c4c441f21ec7 Mon Sep 17 00:00:00 2001 From: Dimitur Kirov Date: Mon, 2 Oct 2006 20:45:49 +0000 Subject: [PATCH 095/110] bind to next available port updating port also publishes the new port keep 1st, last as unicode --- src/common/zeroconf/client_zeroconf.py | 97 +++++++++++++-- src/common/zeroconf/connection_zeroconf.py | 132 +++++++++------------ src/common/zeroconf/zeroconf.py | 11 +- src/config.py | 17 ++- 4 files changed, 150 insertions(+), 107 deletions(-) diff --git a/src/common/zeroconf/client_zeroconf.py b/src/common/zeroconf/client_zeroconf.py index 9f6005b6f..f28de2135 100644 --- a/src/common/zeroconf/client_zeroconf.py +++ b/src/common/zeroconf/client_zeroconf.py @@ -18,7 +18,8 @@ from common.xmpp.idlequeue import IdleObject from common.xmpp import dispatcher_nb, simplexml from common.xmpp.client import * from common.xmpp.simplexml import ustr -from dialogs import BindPortError +from common.zeroconf import zeroconf + from common.xmpp.protocol import * import socket import errno @@ -459,13 +460,86 @@ class P2PConnection(IdleObject, PlugIn): class ClientZeroconf: - def __init__(self, zeroconf, caller): - self.roster = roster_zeroconf.Roster(zeroconf) + def __init__(self, caller): self.caller = caller - self.start_listener(zeroconf.port) + self.zeroconf = None + self.roster = None + self.last_msg = '' self.connections = {} self.recipient_to_hash = {} self.ip_to_hash = {} + + def test_avahi(self): + #~ self.avahi_error = False + try: + import avahi + except ImportError: + #~ self.avahi_error = True + return False + return True + + def connect(self, show, msg): + self.port = self.start_listener(self.caller.port) + if not self.port: + return + self.zeroconf_init(show, msg) + if not self.zeroconf.connect(): + self.disconnect() + return + self.roster = roster_zeroconf.Roster(self.zeroconf) + + def remove_announce(self): + return self.zeroconf.remove_announce() + + def announce(self): + return self.zeroconf.announce() + + def set_show_msg(self, show, msg): + self.zeroconf.txt['msg'] = msg + self.last_msg = msg + return self.zeroconf.update_txt(show) + + def resolve_all(self): + self.zeroconf.resolve_all() + + def reannounce(self, txt): + #~ if self.zeroconf: + self.remove_announce() + self.zeroconf.txt = txt + self.zeroconf.port = self.port + self.zeroconf.username = self.caller.username + return self.announce() + + + def zeroconf_init(self, show, msg): + self.zeroconf = zeroconf.Zeroconf(self.caller._on_new_service, + self.caller._on_remove_service, self.caller._on_name_conflictCB, + self.caller._on_disconnected, self.caller.username, self.caller.host, + self.port) + self.zeroconf.txt['msg'] = msg + self.zeroconf.txt['status'] = show + self.zeroconf.txt['1st'] = self.caller.first + self.zeroconf.txt['last'] = self.caller.last + self.zeroconf.txt['jid'] = self.caller.jabber_id + self.zeroconf.txt['email'] = self.caller.email + self.zeroconf.username = self.caller.username + self.zeroconf.host = self.caller.host + self.zeroconf.port = self.port + self.last_msg = msg + + def disconnect(self): + if self.listener: + self.listener.disconnect() + self.listener = None + if self.zeroconf: + self.zeroconf.disconnect() + self.zeroconf = None + if self.roster: + self.roster.zeroconf = None + self.roster._data = None + self.roster = None + #~ self.caller.show = 'offline' + #~ self.caller.dispatch('STATUS', 'offline') def kill_all_connections(self): for connection in self.connections.values(): @@ -492,14 +566,13 @@ class ClientZeroconf: break def start_listener(self, port): - self.listener = ZeroconfListener(port, self) - self.listener.bind() - if self.listener.started is False: - self.listener = None - # We cannot bind port, call error - # dialog from dialogs.py and fail - BindPortError(port) - return None + for p in range(port, port + 5): + self.listener = ZeroconfListener(p, self) + self.listener.bind() + if self.listener.started: + return p + self.listener = None + return False def getRoster(self): return self.roster.getRoster() diff --git a/src/common/zeroconf/connection_zeroconf.py b/src/common/zeroconf/connection_zeroconf.py index b7d86ac11..ba7c5f74d 100644 --- a/src/common/zeroconf/connection_zeroconf.py +++ b/src/common/zeroconf/connection_zeroconf.py @@ -42,7 +42,6 @@ import notify from common import helpers from common import gajim from common import GnuPG -from common.zeroconf import zeroconf from common.zeroconf import connection_handlers_zeroconf from common.zeroconf import client_zeroconf from connection_handlers_zeroconf import * @@ -87,17 +86,6 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): self.get_config_values_or_default() - self.avahi_error = False - try: - import avahi - except ImportError: - self.avahi_error = True - - if not self.avahi_error: - self.zeroconf = zeroconf.Zeroconf(self._on_new_service, - self._on_remove_service, self._on_name_conflictCB, - self._on_disconnected, self.username, self.host, self.port) - self.muc_jid = {} # jid of muc server for each transport type self.vcard_supported = False @@ -185,7 +173,7 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): def _on_resolve_timeout(self): if self.connected: - self.zeroconf.resolve_all() + self.connection.resolve_all() diffs = self.roster.getDiffs() for key in diffs: self.roster.setItem(key) @@ -218,71 +206,72 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): def connect(self, data = None, show = 'online', msg = ''): self.get_config_values_or_default() - - self.zeroconf.txt['status'] = show - self.zeroconf.txt['msg'] = msg - self.zeroconf.txt['1st'] = self.first - self.zeroconf.txt['last'] = self.last - self.zeroconf.txt['jid'] = self.jabber_id - self.zeroconf.txt['email'] = self.email - self.zeroconf.username = self.username - self.zeroconf.host = self.host - self.zeroconf.port = self.port - - if self.zeroconf.connect(): - if not self.connection: - self.connection = client_zeroconf.ClientZeroconf(self.zeroconf, self) - else: - self.zeroconf.announce() - self.roster = self.connection.getRoster() - self.dispatch('ROSTER', self.roster) - - #display contacts already detected and resolved - for jid in self.roster.keys(): - self.dispatch('ROSTER_INFO', (jid, self.roster.getName(jid), 'both', 'no', self.roster.getGroups(jid))) - self.dispatch('NOTIFY', (jid, self.roster.getStatus(jid), self.roster.getMessage(jid), 'local', 0, None, 0)) - - self.connected = STATUS_LIST.index(show) - - # refresh all contacts data every five seconds - self.call_resolve_timeout = True - gobject.timeout_add(5000, self._on_resolve_timeout) + if not self.connection: + self.connection = client_zeroconf.ClientZeroconf(self) + if not self.connection.test_avahi(): + self.dispatch('STATUS', 'offline') + self.status = 'offline' + self.dispatch('CONNECTION_LOST', + (_('Could not connect to "%s"') % self.name, + _('Please check if Avahi is installed.'))) + return + self.connection.connect(show, msg) + if not self.connection.listener: + self.status = 'offline' + self.dispatch('CONNECTION_LOST', + (_('Could not start local service') % self.name, + _('Unable to bind to port "%d".' % self.port))) + return else: - self.dispatch('STATUS', 'offline') - self.status = 'offline' + self.connection.announce() + self.roster = self.connection.getRoster() + self.dispatch('ROSTER', self.roster) + + #display contacts already detected and resolved + for jid in self.roster.keys(): + self.dispatch('ROSTER_INFO', (jid, self.roster.getName(jid), 'both', 'no', self.roster.getGroups(jid))) + self.dispatch('NOTIFY', (jid, self.roster.getStatus(jid), self.roster.getMessage(jid), 'local', 0, None, 0)) + + self.connected = STATUS_LIST.index(show) + + # refresh all contacts data every five seconds + self.call_resolve_timeout = True + gobject.timeout_add(5000, self._on_resolve_timeout) + return True def disconnect(self, on_purpose = False): self.connected = 0 self.time_to_reconnect = None if self.connection: - if self.connection.listener: - self.connection.listener.disconnect() + self.connection.disconnect() self.connection = None # stop calling the timeout self.call_resolve_timeout = False - self.zeroconf.disconnect() + - def reconnect(self): + def reannounce(self): if self.connected: txt = {} txt['1st'] = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, 'zeroconf_first_name') txt['last'] = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, 'zeroconf_last_name') txt['jid'] = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, 'zeroconf_jabber_id') txt['email'] = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, 'zeroconf_email') - - self.zeroconf.remove_announce() - self.zeroconf.txt = txt - self.zeroconf.port = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, 'custom_port') - self.zeroconf.username = self.username - self.zeroconf.announce() + self.connection.reannounce(txt) - def restart_listener(self): + def update_details(self): if self.connection: port = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, 'custom_port') - self.connection.kill_all_connections() - if self.connection.listener: - self.connection.listener.disconnect() - self.connection.start_listener(port) + if self.connection: + if port != self.port: + self.port = port + last_msg = self.connection.last_msg + self.disconnect() + if not self.connect(show = self.status, msg = last_msg): + return + if self.status != 'invisible': + self.connection.announce() + else: + self.reannounce() def change_status(self, show, msg, sync = False, auto = False): if not show in STATUS_LIST: @@ -290,22 +279,14 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): self.status = show check = True #to check for errors from zeroconf - - if self.avahi_error: - self.dispatch('STATUS', 'offline') - self.status = 'offline' - self.dispatch('CONNECTION_LOST', - (_('Could not connect to "%s"') % self.name, - _('Please check if Avahi is installed.'))) - return - # 'connect' if show != 'offline' and not self.connected: - self.connect(None, show, msg) + if not self.connect(None, show, msg): + return if show != 'invisible': - check = self.zeroconf.announce() + check = self.connection.announce() else: - self.connected = STATUS_LIST.index(show) + self.connected = STATUS_LIST.index(show) # 'disconnect' elif show == 'offline' and self.connected: @@ -317,14 +298,11 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): was_invisible = self.connected == STATUS_LIST.index('invisible') self.connected = STATUS_LIST.index(show) if show == 'invisible': - check = check and self.zeroconf.remove_announce() + check = check and self.connection.remove_announce() elif was_invisible: - check = check and self.zeroconf.announce() + check = check and self.connection.announce() if self.connection and not show == 'invisible': - txt = {} - txt['status'] = show - txt['msg'] = msg - check = check and self.zeroconf.update_txt(txt) + check = check and self.connection.set_show_msg(show, msg) #stay offline when zeroconf does something wrong if check: diff --git a/src/common/zeroconf/zeroconf.py b/src/common/zeroconf/zeroconf.py index fccf1a635..1977b6f81 100755 --- a/src/common/zeroconf/zeroconf.py +++ b/src/common/zeroconf/zeroconf.py @@ -324,14 +324,9 @@ class Zeroconf: def get_contact(self, jid): return self.contacts[jid] - def update_txt(self, txt): - # update only new non-empty keys - for key in txt.keys(): - if txt[key]: - self.txt[key]=txt[key] - - if txt.has_key('status'): - self.txt['status'] = self.replace_show(txt['status']) + def update_txt(self, show = None): + if show: + self.txt['status'] = self.replace_show(show) txt = avahi.dict_to_txt_array(self.txt) if self.connected and self.entrygroup: diff --git a/src/config.py b/src/config.py index 316f24050..d787e48f8 100644 --- a/src/config.py +++ b/src/config.py @@ -3215,16 +3215,16 @@ class ZeroconfPropertiesWindow: config['sync_with_global_status'] = st st = self.xml.get_widget('first_name_entry').get_text() - config['zeroconf_first_name'] = st + config['zeroconf_first_name'] = st.decode('utf-8') st = self.xml.get_widget('last_name_entry').get_text() - config['zeroconf_last_name'] = st + config['zeroconf_last_name'] = st.decode('utf-8') st = self.xml.get_widget('jabber_id_entry').get_text() - config['zeroconf_jabber_id'] = st + config['zeroconf_jabber_id'] = st.decode('utf-8') st = self.xml.get_widget('email_entry').get_text() - config['zeroconf_email'] = st + config['zeroconf_email'] = st.decode('utf-8') use_custom_port = self.xml.get_widget('custom_port_checkbutton').get_active() config['use_custom_host'] = use_custom_port @@ -3258,12 +3258,9 @@ class ZeroconfPropertiesWindow: gajim.config.set_per('accounts', gajim.ZEROCONF_ACC_NAME, opt, config[opt]) if gajim.connections.has_key(gajim.ZEROCONF_ACC_NAME): - if port != old_port: - # restart listener if port has changed - gajim.connections[gajim.ZEROCONF_ACC_NAME].restart_listener() - if reconnect: - gajim.connections[gajim.ZEROCONF_ACC_NAME].reconnect() - + if port != old_port or reconnect: + gajim.connections[gajim.ZEROCONF_ACC_NAME].update_details() + self.window.destroy() def on_gpg_choose_button_clicked(self, widget, data = None): From 163cfef3b854672d03bbd69137a7ab18d36565bb Mon Sep 17 00:00:00 2001 From: Dimitur Kirov Date: Mon, 2 Oct 2006 22:41:48 +0000 Subject: [PATCH 096/110] disconnect when avahi-daemon stop responding fix reference in connection_handlers --- src/common/zeroconf/client_zeroconf.py | 25 +++++++------ .../zeroconf/connection_handlers_zeroconf.py | 4 +- src/common/zeroconf/connection_zeroconf.py | 17 +++++---- src/common/zeroconf/zeroconf.py | 37 ++++++++++++++----- src/gajim.py | 1 - 5 files changed, 52 insertions(+), 32 deletions(-) diff --git a/src/common/zeroconf/client_zeroconf.py b/src/common/zeroconf/client_zeroconf.py index f28de2135..6f53b7071 100644 --- a/src/common/zeroconf/client_zeroconf.py +++ b/src/common/zeroconf/client_zeroconf.py @@ -470,11 +470,9 @@ class ClientZeroconf: self.ip_to_hash = {} def test_avahi(self): - #~ self.avahi_error = False try: import avahi except ImportError: - #~ self.avahi_error = True return False return True @@ -489,21 +487,24 @@ class ClientZeroconf: self.roster = roster_zeroconf.Roster(self.zeroconf) def remove_announce(self): - return self.zeroconf.remove_announce() + if self.zeroconf: + return self.zeroconf.remove_announce() def announce(self): - return self.zeroconf.announce() + if self.zeroconf: + return self.zeroconf.announce() def set_show_msg(self, show, msg): - self.zeroconf.txt['msg'] = msg - self.last_msg = msg - return self.zeroconf.update_txt(show) + if self.zeroconf: + self.zeroconf.txt['msg'] = msg + self.last_msg = msg + return self.zeroconf.update_txt(show) def resolve_all(self): - self.zeroconf.resolve_all() + if self.zeroconf: + self.zeroconf.resolve_all() def reannounce(self, txt): - #~ if self.zeroconf: self.remove_announce() self.zeroconf.txt = txt self.zeroconf.port = self.port @@ -538,8 +539,6 @@ class ClientZeroconf: self.roster.zeroconf = None self.roster._data = None self.roster = None - #~ self.caller.show = 'offline' - #~ self.caller.dispatch('STATUS', 'offline') def kill_all_connections(self): for connection in self.connections.values(): @@ -575,7 +574,9 @@ class ClientZeroconf: return False def getRoster(self): - return self.roster.getRoster() + if self.roster: + return self.roster.getRoster() + return {} def send(self, msg_iq): msg_iq.setFrom(self.roster.zeroconf.name) diff --git a/src/common/zeroconf/connection_handlers_zeroconf.py b/src/common/zeroconf/connection_handlers_zeroconf.py index 3f23f47d8..cc71cfe74 100644 --- a/src/common/zeroconf/connection_handlers_zeroconf.py +++ b/src/common/zeroconf/connection_handlers_zeroconf.py @@ -712,8 +712,8 @@ class ConnectionHandlersZeroconf(ConnectionVcard, ConnectionBytestream): tim = time.localtime(timegm(tim)) frm = msg.getFrom() if frm == None: - for key in self.zeroconf.contacts: - if ip == self.zeroconf.contacts[key][zeroconf.C_ADDRESS]: + for key in self.connection.zeroconf.contacts: + if ip == self.connection.zeroconf.contacts[key][zeroconf.C_ADDRESS]: frm = key frm = str(frm) jid = frm diff --git a/src/common/zeroconf/connection_zeroconf.py b/src/common/zeroconf/connection_zeroconf.py index ba7c5f74d..761a98b0b 100644 --- a/src/common/zeroconf/connection_zeroconf.py +++ b/src/common/zeroconf/connection_zeroconf.py @@ -203,8 +203,9 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): (_('Connection with account "%s" has been lost') % self.name, _('To continue sending and receiving messages, you will need to reconnect.'))) self.status = 'offline' + self.disconnect() - def connect(self, data = None, show = 'online', msg = ''): + def connect(self, show = 'online', msg = ''): self.get_config_values_or_default() if not self.connection: self.connection = client_zeroconf.ClientZeroconf(self) @@ -214,13 +215,16 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): self.dispatch('CONNECTION_LOST', (_('Could not connect to "%s"') % self.name, _('Please check if Avahi is installed.'))) + self.disconnect() return self.connection.connect(show, msg) if not self.connection.listener: + self.dispatch('STATUS', 'offline') self.status = 'offline' self.dispatch('CONNECTION_LOST', - (_('Could not start local service') % self.name, - _('Unable to bind to port "%d".' % self.port))) + (_('Could not start local service'), + _('Please check if avahi-daemon is running.'))) + self.disconnect() return else: self.connection.announce() @@ -247,8 +251,7 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): self.connection = None # stop calling the timeout self.call_resolve_timeout = False - - + def reannounce(self): if self.connected: txt = {} @@ -266,7 +269,7 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): self.port = port last_msg = self.connection.last_msg self.disconnect() - if not self.connect(show = self.status, msg = last_msg): + if not self.connect(self.status, last_msg): return if self.status != 'invisible': self.connection.announce() @@ -281,7 +284,7 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): check = True #to check for errors from zeroconf # 'connect' if show != 'offline' and not self.connected: - if not self.connect(None, show, msg): + if not self.connect(show, msg): return if show != 'invisible': check = self.connection.announce() diff --git a/src/common/zeroconf/zeroconf.py b/src/common/zeroconf/zeroconf.py index 1977b6f81..b18fdb28c 100755 --- a/src/common/zeroconf/zeroconf.py +++ b/src/common/zeroconf/zeroconf.py @@ -65,6 +65,9 @@ class Zeroconf: # left for eventual later use pass + def error_callback1(self, err): + gajim.log.debug('RR' + str(err)) + def error_callback(self, err): gajim.log.debug(str(err)) # timeouts are non-critical @@ -80,7 +83,7 @@ class Zeroconf: # synchronous resolving self.server.ResolveService( int(interface), int(protocol), name, stype, \ domain, avahi.PROTO_UNSPEC, dbus.UInt32(0), \ - reply_handler=self.service_resolved_callback, error_handler=self.error_callback) + reply_handler=self.service_resolved_callback, error_handler=self.error_callback1) def remove_service_callback(self, interface, protocol, name, stype, domain, flags): gajim.log.debug('Service %s in domain %s on %i.%i disappeared.' % (name, domain, interface, protocol)) @@ -215,9 +218,7 @@ class Zeroconf: else: txt['status'] = 'avail' - self.txt = txt - gajim.log.debug('Publishing service %s of type %s' % (self.name, self.stype)) self.entrygroup.AddService(avahi.IF_UNSPEC, avahi.PROTO_UNSPEC, dbus.UInt32(0), self.name, self.stype, '', '', self.port, avahi.dict_to_txt_array(self.txt), reply_handler=self.service_added_callback, error_handler=self.service_add_fail_callback) self.entrygroup.Commit(reply_handler=self.service_committed_callback, @@ -257,18 +258,34 @@ class Zeroconf: def browse_domain(self, interface, protocol, domain): self.new_service_type(interface, protocol, self.stype, domain, '') + def avahi_dbus_connect_cb(self, a, connect, disconnect): + if connect != "": + gajim.log.debug('Lost connection to avahi-daemon') + try: + self.connected = False + self.disconnect() + self.disconnected_CB() + except Exception, e: + print e + else: + gajim.log.debug('We are connected to avahi-daemon') + + + # connect to dbus def connect_dbus(self): if self.server: return True try: self.bus = dbus.SystemBus() - # is there any way to check if a dbus name exists? - # that might make the Introspect Error go away... + self.bus.add_signal_receiver(self.avahi_dbus_connect_cb, + "NameOwnerChanged", "org.freedesktop.DBus", + arg0="org.freedesktop.Avahi") self.server = dbus.Interface(self.bus.get_object(avahi.DBUS_NAME, \ avahi.DBUS_PATH_SERVER), avahi.DBUS_INTERFACE_SERVER) - self.server.connect_to_signal('StateChanged', self.server_state_changed_callback) - except dbus.dbus_bindings.DBusException, e: + self.server.connect_to_signal('StateChanged', + self.server_state_changed_callback) + except Exception, e: # Avahi service is not present self.server = None gajim.log.debug(str(e)) @@ -280,8 +297,8 @@ class Zeroconf: self.name = self.username + '@' + self.host # service name if not self.connect_dbus(): return False - self.connected = True + self.connected = True # start browsing if self.domain is None: # Explicitly browse .local @@ -304,11 +321,11 @@ class Zeroconf: self.connected = False if self.service_browser: self.service_browser.Free() - self.service_browser = None if self.domain_browser: self.domain_browser.Free() - self.domain_browser = None self.remove_announce() + self.service_browser = None + self.domain_browser = None self.server = None # refresh txt data of all contacts manually (no callback available) diff --git a/src/gajim.py b/src/gajim.py index 3ebd09993..9faa00742 100755 --- a/src/gajim.py +++ b/src/gajim.py @@ -1413,7 +1413,6 @@ class Interface: response = dlg.get_response() if response == gtk.RESPONSE_OK: new_name = dlg.input_entry.get_text() - print 'account, data', account, data, new_name gajim.config.set_per('accounts', account, 'name', new_name) status = gajim.connections[account].status gajim.connections[account].username = new_name From 59b6ae468a8668fc0d6c82470b5d938a05354909 Mon Sep 17 00:00:00 2001 From: Dimitur Kirov Date: Wed, 4 Oct 2006 00:10:49 +0000 Subject: [PATCH 097/110] merge from trunk automake based instalation --- ChangeLog | 208 + INSTALL | 236 + Makefile | 165 - Makefile.am | 19 + Makefile.in | 730 + NEWS | 0 README | 2 +- aclocal.m4 | 7859 +++++ autogen.sh | 6 + compile | 142 + config.guess | 1519 + config.h.in | 85 + config.sub | 1626 + configure | 26061 ++++++++++++++++ configure.ac | 78 + data/Makefile.am | 23 + data/Makefile.in | 682 + data/emoticons/Makefile.am | 36 + data/emoticons/Makefile.in | 448 + data/gajim-remote.1 | 14 + data/gajim.1 | 25 + data/gajim.desktop.in.in | 13 + data/glade/Makefile.am | 5 + data/glade/Makefile.in | 416 + data/glade/account_modification_window.glade | 32 +- data/glade/add_new_contact_window.glade | 43 +- data/glade/privacy_lists_window.glade | 263 +- data/glade/roster_window.glade | 118 +- .../subscription_request_popup_menu.glade | 39 + data/glade/subscription_request_window.glade | 169 +- data/iconsets/Makefile.am | 37 + data/iconsets/Makefile.in | 451 + data/iconsets/goojim/16x16/muc_active.png | Bin 0 -> 852 bytes data/iconsets/goojim/16x16/muc_inactive.png | Bin 0 -> 744 bytes data/other/servers.xml | 493 +- data/pixmaps/Makefile.am | 6 + data/pixmaps/Makefile.in | 419 + depcomp | 530 + install-sh | 323 + intltool-extract.in | 1 + intltool-merge.in | 1 + intltool-update.in | 1 + ltmain.sh | 6971 +++++ m4/glib-gettext.m4 | 398 + m4/python.m4 | 62 + missing | 360 + mkinstalldirs | 158 + po/ChangeLog | 0 po/Makefile | 72 - po/Makefile.in.in | 1 + po/POTFILES.in | 5 +- scripts/{gajim => gajim.in} | 11 +- src/Makefile | 35 - src/Makefile.am | 66 + src/Makefile.in | 855 + src/advanced.py | 2 +- src/cell_renderer_image.py | 2 +- src/chat_control.py | 120 +- src/common/GnuPG.py | 4 +- src/common/Makefile | 25 - src/common/Makefile.am | 20 + src/common/Makefile.in | 540 + src/common/check_paths.py | 2 +- src/common/config.py | 26 +- src/common/connection.py | 74 +- src/common/connection_handlers.py | 43 +- src/common/contacts.py | 2 +- src/common/dbus_support.py | 108 + src/common/events.py | 2 +- src/common/exceptions.py | 12 +- src/common/gajim.py | 43 +- src/common/helpers.py | 35 +- src/common/i18n.py | 2 +- src/common/logger.py | 2 +- src/common/optparser.py | 2 +- src/common/sleepy.py | 2 +- src/common/socks5.py | 4 +- src/common/xmpp/protocol.py | 35 +- src/common/zeroconf/connection_zeroconf.py | 1 + src/config.py | 30 +- src/conversation_textview.py | 43 +- src/dialogs.py | 158 +- src/disco.py | 50 +- src/gajim.py | 103 +- src/gajim_themes_window.py | 2 +- src/groupchat_control.py | 199 +- src/gtkexcepthook.py | 15 +- src/gtkgui_helpers.py | 13 +- src/history_window.py | 2 +- src/htmltextview.py | 968 + src/message_textview.py | 2 +- src/message_window.py | 9 +- src/music_track_listener.py | 4 +- src/notify.py | 131 +- src/profile_window.py | 2 + src/remote_control.py | 11 +- src/roster_window.py | 211 +- src/rst_xhtml_generator.py | 116 + src/systraywin32.py | 2 +- src/vcard.py | 7 +- 100 files changed, 54097 insertions(+), 1407 deletions(-) create mode 100644 ChangeLog create mode 100644 INSTALL delete mode 100644 Makefile create mode 100644 Makefile.am create mode 100644 Makefile.in create mode 100644 NEWS create mode 100644 aclocal.m4 create mode 100755 autogen.sh create mode 100755 compile create mode 100755 config.guess create mode 100644 config.h.in create mode 100755 config.sub create mode 100755 configure create mode 100644 configure.ac create mode 100644 data/Makefile.am create mode 100644 data/Makefile.in create mode 100644 data/emoticons/Makefile.am create mode 100644 data/emoticons/Makefile.in create mode 100644 data/gajim-remote.1 create mode 100644 data/gajim.1 create mode 100644 data/gajim.desktop.in.in create mode 100644 data/glade/Makefile.am create mode 100644 data/glade/Makefile.in create mode 100644 data/glade/subscription_request_popup_menu.glade create mode 100644 data/iconsets/Makefile.am create mode 100644 data/iconsets/Makefile.in create mode 100644 data/iconsets/goojim/16x16/muc_active.png create mode 100644 data/iconsets/goojim/16x16/muc_inactive.png create mode 100644 data/pixmaps/Makefile.am create mode 100644 data/pixmaps/Makefile.in create mode 100755 depcomp create mode 100755 install-sh create mode 120000 intltool-extract.in create mode 120000 intltool-merge.in create mode 120000 intltool-update.in create mode 100644 ltmain.sh create mode 100644 m4/glib-gettext.m4 create mode 100644 m4/python.m4 create mode 100755 missing create mode 100755 mkinstalldirs create mode 100644 po/ChangeLog delete mode 100644 po/Makefile create mode 120000 po/Makefile.in.in rename scripts/{gajim => gajim.in} (86%) delete mode 100644 src/Makefile create mode 100644 src/Makefile.am create mode 100644 src/Makefile.in delete mode 100644 src/common/Makefile create mode 100644 src/common/Makefile.am create mode 100644 src/common/Makefile.in create mode 100644 src/common/dbus_support.py create mode 100644 src/htmltextview.py create mode 100644 src/rst_xhtml_generator.py diff --git a/ChangeLog b/ChangeLog new file mode 100644 index 000000000..f21490300 --- /dev/null +++ b/ChangeLog @@ -0,0 +1,208 @@ +Gajim 0.11 (XX October 2006) + + * Put your stuff here [each dev put their own please; next time we do this everytime we commit sth major and not in the end] + + * We can now operate on more than one contact in one in time in roster (#1514) + * Connection lost is now a non-intrusive popup + * Try to get contact desired nick when we add him to roster aka User Nickname (JEP-0172) + * Better design of User Profile window, with a progress bar + * New Add User dialog, with possibility to register to transport directly from it + * Completion for "Start Chat" input dialog + * We can now have a different spellchecking language in each chat window. (#2383 and #746) + * Support for Privacy Lists + * Forbid to run multiple instances (but you can use differents profiles) + * We can save avatar with right click on avatar in chat banner + * Use differents colors for nickname colors of occupants in groupchats. + * Ability to show only Join/Leave in groupchats instead of all status changes + * New possibilities to insert nickname of an occupant in groupchats conversations : Tab in an empty line now cycle through nicks, maj+right click->insert nickname, maj+click on name in gc-roster, /names command to show all users presents + + * Fixed bugs when removing or renaming an account with tabs open (#2369 and #2370) + + * FIXME : Ad-Hoc for 0.11 ? + * FIXME : does that work ? not tested : Metacontacts across accounts (#1596) + * Gajim now requires Python 2.4 to run + +Gajim 0.10.1 (06 June 2006) + + * Freeze and lost contacts in roster (#1953) + * Popup menus are correctly placed + * High CPU usage on FreeBSD (#1963) + * Nickname can contain '|' (#1913) + * Update pl, cs, fr translations + * Don't play sound, when no event is shown (#1970) + * Set gajim icon for history manager + * gajim.desktop is generated with translation (#834) + * Preventing several TBs and annoyances (r6273, r6275, r6279, r6301, + r6308, r6311, r6323, r6326, r6327, r6335, r6342, r6346, r6348) + +Gajim 0.10 (01 May 2006) + + * One Messages Window ability (default to it) with tab reordering ability + * Non blocking socket connections. Gajim no longer remains unresponsive. + * Gajim now uses less memory + * File Transfer improvements (now should work out of the box for all) + * Meta Contacts ability (relationships between contacts) + * Support for legacy composing event (JEP-0022). Now 'Contact is composing a message' will always work + * Gajim now defaults to theme that uses GTK colors + * Roster Management Improvements (f.e. editablity of transport names, extended Drag and Drop Functionality) + * History (chat logs) Manager (search globally, delete, etc) + * Animated Emoticons ability + * Support for GTalk email notifications for GMail + * Room administrators can modify room ban list + * Gajim no longer optionally depends on pydns or dnspython. Requires + dnsutils (or whatever package provides the nslookup binary) + * gajim-remote has extended functionality + * Improved Preset Status Messages Experience + * Detection for CRUX as user's operating system + * New art included, appropriate sizes of icons used where available + * Translations under Windows now work okay + * Tons of fixes for bugs and annoyances: http://trac.gajim.org/query?status=closed&milestone=0.10 + + +Gajim 0.9.1 (27 December 2005) + + * Fix bug when joining a Groupchat + * Fix bug when starting Gajim without old logs + +Gajim 0.9 (23 December 2005) + + * Avatars and status messages in roster window + * Improved service discovery window + * Emoticons selector, Cooler Popup Windows (notification-daemon). Read more information in case you did not notice something different in http://trac.gajim.org/wiki/GajimDBus#notif_daemon + * Caching of Avatars, Less UI freezing + * New Account creation wizard + * Better History Window with searching capabilities + * Gajim now tries to reconnect to a jabber server if connection is lost + * Queue for all events (File Transfer, private messages, etc) + * A lot of new irc-like commands in group chat. Do for example /help invite + * X11 Session Management support + * Gajim registers and handles xmpp: and xmpp:// (GNOME/gconfd only) + * Use pysqlite for conversation history. Automigration for old logs + * New translations: Italian, Swedish, Slovak, Basque + +Gajim 0.8.2 (06 Sep 2005) + + * Fix so Gajim runs in pygtk2.8.x + * Gajim can use pydns too (apart from dnspython) to do SRV lookup + * Other minor fixes + +Gajim 0.8.1 (02 Sep 2005) + + * Systray icon for windows + * Gajim is available in Dutch + * Gajim can use gpg-agent + +Gajim 0.8 (18 Aug 2005) + + * Avatars (JEP-0153) + * Chat state notifications aka. typing notification (JEP-0085) + * Bookmark storage (JEP-0048) + * File Transfer (JEP-0096) + * Major changes to adhere to GNOME HIG + * Complete vcard fields support + * New and better user interface for chat and groupchat windows + * SRV capabilities and custom hostname/port + * Many improvements in group chat and IRC emulation (eg. nick autocompletation and cycling) + * Gajim can now send and receive single messages + * New iconsets and new dialog for customizing the user interface + * Mouseover information for contacts in the roster window (aka tooltips) + * DBus Capabilities. Now Gajim can be remote controlled + * Authenticating HTTP Requests via XMPP (JEP-0070) + * Now you can lookup a word in Wikipedia, dictionary or in search engine + * XML Console + * Gajim is now also available in norwegian and czech language + + +Gajim 0.7.1 (5 Jun 2005) + + * Transports icon as an option and error/mesage icon for transports + * Gajim is more HIG compatible + * Editing registration information on transports + * Messages stanza without element are not printed + * SASL bugfix + * GtkSpell capabilities + * Support SSL (legacy) connection + * Assign gpg key to specific contact + * Contacts are sortable by status + * Gajim remembers last lines when reopening chat + * New translations available: German, Russian, Spanish, Bulgarian + +Gajim 0.7 (23 May 2005) + + * Ability for groupchat reserved rooms with full affiliations and roles support + * Popup notification for incoming events + * Protocol icons for contacts from transports + * Gajim's user interface is now more HIG compliant + * Gajim now detects and can send operating system information + * Gajim now can inform the user about new version availability + * Gajim jabber library migration from jabberpy to xmpppy + * Rewrite the plugin system to remove threads and improve latency + * Gajim now supports Nodes in Service Discovery + * Greek and Polish translations + + +Gajim 0.6.1 (03 April 2005) + + * Rewrite of service discovery. It doesn't freeze Gajim anymore. + * More HIG Compliant. + * Gajim is faster (do not redraw preferences_window each time we open it, use + of psyco if available) + +Gajim 0.6 (23 March 2005) + + * Gajim's user interface is now nicer. + * Groupchat just got better. + * URL, mailto and ascii formatin (* / _) detection + * Better transports detection, group management, and many minor additions/bugfixes + +Gajim 0.5.1 (27 February 2005) + + * Minor bugfixes. + +Gajim 0.5 (26 February 2005) + + * Possibility to use tabbed chat window + * Sound support under GNU/linux + * Autoaway available under Microsoft Windows + +Gajim 0.4.1 (23 January 2005) + + * Bugfix in config file parser (fix config file parser to handle emoticons) + * Bugfix with GPG signatures + +Gajim 0.4 (21 January 2005) + + * New option: regroup accounts + * Emoticons support with a binder + * GUI improvements + * Bugfixes + +Gajim 0.3 (18 December 2004) + + * GUI improvements + * group chat support with MUC (JEP 45) + * New agent browser (JEP 30) + * GnuPG support + * Autoconnect at startup + * New socket plugin + +Gajim 0.2.1 (1 July 2004) + + * bugfixes : when configfile is incomplete + * icon in systray with popup menu (for linux) + * "auto away even if not online" option + * always show contacts with unread messages + * new imageCellRenderer to show animated gifs + * allow agents unregistration + +Gajim 0.2 (8 June 2004) + + * bugfix for french translation + * multi-resource support + * auto away support (for linux) + * invisible support + * priority support + +Gajim 0.1 (21 May 2004) + + * Initial release. diff --git a/INSTALL b/INSTALL new file mode 100644 index 000000000..23e5f25d0 --- /dev/null +++ b/INSTALL @@ -0,0 +1,236 @@ +Installation Instructions +************************* + +Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005 Free +Software Foundation, Inc. + +This file is free documentation; the Free Software Foundation gives +unlimited permission to copy, distribute and modify it. + +Basic Installation +================== + +These are generic installation instructions. + + The `configure' shell script attempts to guess correct values for +various system-dependent variables used during compilation. It uses +those values to create a `Makefile' in each directory of the package. +It may also create one or more `.h' files containing system-dependent +definitions. Finally, it creates a shell script `config.status' that +you can run in the future to recreate the current configuration, and a +file `config.log' containing compiler output (useful mainly for +debugging `configure'). + + It can also use an optional file (typically called `config.cache' +and enabled with `--cache-file=config.cache' or simply `-C') that saves +the results of its tests to speed up reconfiguring. (Caching is +disabled by default to prevent problems with accidental use of stale +cache files.) + + If you need to do unusual things to compile the package, please try +to figure out how `configure' could check whether to do them, and mail +diffs or instructions to the address given in the `README' so they can +be considered for the next release. If you are using the cache, and at +some point `config.cache' contains results you don't want to keep, you +may remove or edit it. + + The file `configure.ac' (or `configure.in') is used to create +`configure' by a program called `autoconf'. You only need +`configure.ac' if you want to change it or regenerate `configure' using +a newer version of `autoconf'. + +The simplest way to compile this package is: + + 1. `cd' to the directory containing the package's source code and type + `./configure' to configure the package for your system. If you're + using `csh' on an old version of System V, you might need to type + `sh ./configure' instead to prevent `csh' from trying to execute + `configure' itself. + + Running `configure' takes awhile. While running, it prints some + messages telling which features it is checking for. + + 2. Type `make' to compile the package. + + 3. Optionally, type `make check' to run any self-tests that come with + the package. + + 4. Type `make install' to install the programs and any data files and + documentation. + + 5. You can remove the program binaries and object files from the + source code directory by typing `make clean'. To also remove the + files that `configure' created (so you can compile the package for + a different kind of computer), type `make distclean'. There is + also a `make maintainer-clean' target, but that is intended mainly + for the package's developers. If you use it, you may have to get + all sorts of other programs in order to regenerate files that came + with the distribution. + +Compilers and Options +===================== + +Some systems require unusual options for compilation or linking that the +`configure' script does not know about. Run `./configure --help' for +details on some of the pertinent environment variables. + + You can give `configure' initial values for configuration parameters +by setting variables in the command line or in the environment. Here +is an example: + + ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix + + *Note Defining Variables::, for more details. + +Compiling For Multiple Architectures +==================================== + +You can compile the package for more than one kind of computer at the +same time, by placing the object files for each architecture in their +own directory. To do this, you must use a version of `make' that +supports the `VPATH' variable, such as GNU `make'. `cd' to the +directory where you want the object files and executables to go and run +the `configure' script. `configure' automatically checks for the +source code in the directory that `configure' is in and in `..'. + + If you have to use a `make' that does not support the `VPATH' +variable, you have to compile the package for one architecture at a +time in the source code directory. After you have installed the +package for one architecture, use `make distclean' before reconfiguring +for another architecture. + +Installation Names +================== + +By default, `make install' installs the package's commands under +`/usr/local/bin', include files under `/usr/local/include', etc. You +can specify an installation prefix other than `/usr/local' by giving +`configure' the option `--prefix=PREFIX'. + + You can specify separate installation prefixes for +architecture-specific files and architecture-independent files. If you +pass the option `--exec-prefix=PREFIX' to `configure', the package uses +PREFIX as the prefix for installing programs and libraries. +Documentation and other data files still use the regular prefix. + + In addition, if you use an unusual directory layout you can give +options like `--bindir=DIR' to specify different values for particular +kinds of files. Run `configure --help' for a list of the directories +you can set and what kinds of files go in them. + + If the package supports it, you can cause programs to be installed +with an extra prefix or suffix on their names by giving `configure' the +option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. + +Optional Features +================= + +Some packages pay attention to `--enable-FEATURE' options to +`configure', where FEATURE indicates an optional part of the package. +They may also pay attention to `--with-PACKAGE' options, where PACKAGE +is something like `gnu-as' or `x' (for the X Window System). The +`README' should mention any `--enable-' and `--with-' options that the +package recognizes. + + For packages that use the X Window System, `configure' can usually +find the X include and library files automatically, but if it doesn't, +you can use the `configure' options `--x-includes=DIR' and +`--x-libraries=DIR' to specify their locations. + +Specifying the System Type +========================== + +There may be some features `configure' cannot figure out automatically, +but needs to determine by the type of machine the package will run on. +Usually, assuming the package is built to be run on the _same_ +architectures, `configure' can figure that out, but if it prints a +message saying it cannot guess the machine type, give it the +`--build=TYPE' option. TYPE can either be a short name for the system +type, such as `sun4', or a canonical name which has the form: + + CPU-COMPANY-SYSTEM + +where SYSTEM can have one of these forms: + + OS KERNEL-OS + + See the file `config.sub' for the possible values of each field. If +`config.sub' isn't included in this package, then this package doesn't +need to know the machine type. + + If you are _building_ compiler tools for cross-compiling, you should +use the option `--target=TYPE' to select the type of system they will +produce code for. + + If you want to _use_ a cross compiler, that generates code for a +platform different from the build platform, you should specify the +"host" platform (i.e., that on which the generated programs will +eventually be run) with `--host=TYPE'. + +Sharing Defaults +================ + +If you want to set default values for `configure' scripts to share, you +can create a site shell script called `config.site' that gives default +values for variables like `CC', `cache_file', and `prefix'. +`configure' looks for `PREFIX/share/config.site' if it exists, then +`PREFIX/etc/config.site' if it exists. Or, you can set the +`CONFIG_SITE' environment variable to the location of the site script. +A warning: not all `configure' scripts look for a site script. + +Defining Variables +================== + +Variables not defined in a site shell script can be set in the +environment passed to `configure'. However, some packages may run +configure again during the build, and the customized values of these +variables may be lost. In order to avoid this problem, you should set +them in the `configure' command line, using `VAR=value'. For example: + + ./configure CC=/usr/local2/bin/gcc + +causes the specified `gcc' to be used as the C compiler (unless it is +overridden in the site shell script). Here is a another example: + + /bin/bash ./configure CONFIG_SHELL=/bin/bash + +Here the `CONFIG_SHELL=/bin/bash' operand causes subsequent +configuration-related scripts to be executed by `/bin/bash'. + +`configure' Invocation +====================== + +`configure' recognizes the following options to control how it operates. + +`--help' +`-h' + Print a summary of the options to `configure', and exit. + +`--version' +`-V' + Print the version of Autoconf used to generate the `configure' + script, and exit. + +`--cache-file=FILE' + Enable the cache: use and save the results of the tests in FILE, + traditionally `config.cache'. FILE defaults to `/dev/null' to + disable caching. + +`--config-cache' +`-C' + Alias for `--cache-file=config.cache'. + +`--quiet' +`--silent' +`-q' + Do not print messages saying which checks are being made. To + suppress all normal output, redirect it to `/dev/null' (any error + messages will still be shown). + +`--srcdir=DIR' + Look for the package's source code in directory DIR. Usually + `configure' can determine that directory automatically. + +`configure' also accepts some other, not widely useful, options. Run +`configure --help' for more details. + diff --git a/Makefile b/Makefile deleted file mode 100644 index 45d58fa35..000000000 --- a/Makefile +++ /dev/null @@ -1,165 +0,0 @@ -VERSION ?= 0.10 - -GAJIM_AP = 0 # do we build Autopackage? - -MODULES = src src/common po -PREFIX = /usr/local -PYTHON = python -DESTDIR = -OPTFLAGS = -export OPTFLAGS -LIBDIR = /lib -export LIBDIR -MANDIR = $(DESTDIR)$(PREFIX)/share/man - -FIND = find . \( -name '*.glade' -o -name '*.py' -o -name '*.xpm' -o -name '*.gif' -o -name '*.png' -o -name '*.wav' -o -name '*.xml' \) - -FILES = `$(FIND)` -DIRS = `$(FIND) -exec dirname {} \; | sort -u` -FIND_PO = find ./po \( -name '*.mo' \) -FILES_PO = `$(FIND_PO) | sed -e 's/^\.\/po/\./g'` -DIRS_PO = `$(FIND_PO) -exec dirname {} \; | sort -u | sed -e 's/^\.\/po/\./g'` -FIND_LIB = find . -name '*.so' -FILES_LIB = `$(FIND_LIB)` - -SCRIPTS = \ - scripts/gajim \ - scripts/gajim-remote \ - -all: translation trayicon gtkspell idle gajim.desktop - -translation: - ${MAKE} -C po all - -trayicon: - ${MAKE} -C src trayicon.so; - -gtkspell: - ${MAKE} -C src gtkspell.so; - -idle: - ${MAKE} -C src/common all; - -distclean: clean - -rm ./tags - -clean: - find . -name '*.pyc' -exec rm {} \; - find . -name '*.pyo' -exec rm {} \; - ${MAKE} -C po clean - rm -f gajim.desktop - $(foreach sdir, $(MODULES), ${MAKE} -C $(sdir) clean;) -dist: - rm -rf gajim-$(VERSION) - mkdir gajim-$(VERSION) - cp -r data src po gajim-$(VERSION)/ - cp AUTHORS gajim.1 gajim-remote.1 gajim.desktop.in COPYING THANKS Makefile Changelog README launch.sh gajim-$(VERSION) - mkdir gajim-$(VERSION)/scripts - for s in $(SCRIPTS) ; do \ - cp $$s gajim-$(VERSION)/scripts/; \ - done - find gajim-$(VERSION) -name '.svn' -type d | xargs rm -rf - find gajim-$(VERSION) -name '*.pyc' -exec rm {} \; - find gajim-$(VERSION) -name '*.pyo' -exec rm {} \; - find gajim-$(VERSION) -name '.*' -exec rm {} \; - @echo tarring gajim-$(VERSION) ... - @tar czf gajim-$(VERSION).tar.gz gajim-$(VERSION)/ - @tar cjf gajim-$(VERSION).tar.bz2 gajim-$(VERSION)/ - rm -rf gajim-$(VERSION) - -install: - # Remove the old po folder if it exists - if [ -d $(DESTDIR)$(PREFIX)/share/gajim/po ] ; then \ - rm -rf $(DESTDIR)$(PREFIX)/share/gajim/po; \ - fi - for d in $(DIRS) ; do \ - if [ ! -d $(DESTDIR)$(PREFIX)/share/gajim/$$d ] ; then \ - mkdir -p "$(DESTDIR)$(PREFIX)/share/gajim/$$d"; \ - fi; \ - done - for f in $(FILES) ; do \ - DST=`dirname "$$f"`; \ - cp "$$f" "$(DESTDIR)$(PREFIX)/share/gajim/$$DST/"; \ - done - rm "$(DESTDIR)$(PREFIX)/share/gajim/src/systraywin32.py" - for d in $(DIRS_PO) ; do \ - if [ ! -d $(DESTDIR)$(PREFIX)/share/locale/$$d ] ; then \ - mkdir -p "$(DESTDIR)$(PREFIX)/share/locale/$$d"; \ - fi; \ - done - if [[ -n $$(find po -name *.mo) ]]; then \ - ${MAKE} -C po install PREFIX=$(PREFIX) ; \ - fi - cp COPYING "$(DESTDIR)$(PREFIX)/share/gajim/"; - cp THANKS "$(DESTDIR)$(PREFIX)/share/gajim/"; - cp AUTHORS "$(DESTDIR)$(PREFIX)/share/gajim/"; - mkdir -p "$(DESTDIR)$(PREFIX)/share/pixmaps"; - cp data/pixmaps/gajim.png "$(DESTDIR)$(PREFIX)/share/pixmaps/"; - cp data/pixmaps/gajim_about.png "$(DESTDIR)$(PREFIX)/share/pixmaps/"; - mkdir -p "$(DESTDIR)$(PREFIX)/share/applications"; - if [ -f gajim.desktop ]; then \ - cp gajim.desktop "$(DESTDIR)$(PREFIX)/share/applications/"; \ - fi; - mkdir -p "$(MANDIR)/man1"; - cp gajim.1 "$(MANDIR)/man1"; - cp gajim-remote.1 "$(MANDIR)/man1"; - mkdir -p "$(DESTDIR)$(PREFIX)$(LIBDIR)/gajim"; - for f in $(FILES_LIB) ; do \ - cp "$$f" "$(DESTDIR)$(PREFIX)$(LIBDIR)/gajim/"; \ - done - mkdir -p "$(DESTDIR)$(PREFIX)/bin"; - for s in $(SCRIPTS) ; do \ - BASE=`basename "$$s"`; \ - if [ $(GAJIM_AP) -ne 0 ] ; then \ - F=`cat "$$s" | sed -e 's!LIB!$(LIBDIR)!g' -e 's!PYTHON_EXEC!$(PYTHON)!g'`; \ - else \ - F=`cat "$$s" | sed -e 's!PREFIX!$(PREFIX)!g' -e 's!LIB!$(LIBDIR)!g' -e 's!PYTHON_EXEC!$(PYTHON)!g'`; \ - fi; \ - echo "$$F" > "$(DESTDIR)$(PREFIX)/bin/$$BASE"; \ - chmod +x "$(DESTDIR)$(PREFIX)/bin/$$BASE"; \ - done - -gajim.desktop: gajim.desktop.in - intltool-merge -d po gajim.desktop.in gajim.desktop - -# -# show make params we accept -# -help: - @echo Usage: - @echo make - builds all modules - @echo make clean - delete built modules and object files - @echo make distclean - clean plus deletion of all other non-repository files - @echo make install - install binaries into the official directories - @echo make uninstall - uninstall binaries from the official directories - @echo make help - prints this help - @echo - @echo make trayicon - makes only trayicon module - @echo make idle - makes only idle detection module - @echo make translation - makes only translation \(mo files\) - @echo make gtkspell - makes only gtkspell detection module - @echo make tags - makes 'tags' file for use with ctags - @echo - -# -# uninstall application from official directories -# -uninstall: - rm -rf "$(DESTDIR)$(PREFIX)/share/gajim" # the main files are here - rm -rf "$(DESTDIR)$(PREFIX)/lib/gajim" # the .so files are here - rm -f "$(DESTDIR)$(PREFIX)/bin/gajim" # the bash script - rm -f "$(DESTDIR)$(PREFIX)/bin/gajim-remote" # remote-control script - rm -f "$(MANDIR)/man1/gajim.1" # the man page - rm -f "$(MANDIR)/man1/gajim-remote.1" # the man page - rm -f "$(DESTDIR)$(PREFIX)/share/pixmaps/gajim.png" # the icon - rm -f "$(DESTDIR)$(PREFIX)/share/pixmaps/gajim_about.png" # the icon - rm -f "$(DESTDIR)$(PREFIX)/share/applications/gajim.desktop" #the desktop - find "$(DESTDIR)$(PREFIX)/share/locale" -name 'gajim.mo' -exec rm {} \; #the .mo files - @echo done uninstalling - -tags: - -rm tags - exuberant-ctags -R - -.PHONY: all translation trayicon gtkspell idle clean dist distclean install help\ - uninstall tags diff --git a/Makefile.am b/Makefile.am new file mode 100644 index 000000000..6711484ad --- /dev/null +++ b/Makefile.am @@ -0,0 +1,19 @@ +SUBDIRS = po src data +bin_SCRIPTS = scripts/gajim + +EXTRA_DIST = \ + autogen.sh \ + COPYING \ + ChangeLog \ + README \ + THANKS \ + intltool-extract.in \ + intltool-merge.in \ + intltool-update.in \ + scripts/gajim.in + +DISTCLEANFILES = \ + intltool-extract \ + intltool-merge \ + intltool-update \ + scripts/gajim diff --git a/Makefile.in b/Makefile.in new file mode 100644 index 000000000..baf089383 --- /dev/null +++ b/Makefile.in @@ -0,0 +1,730 @@ +# Makefile.in generated by automake 1.9.6 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = . +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in $(srcdir)/config.h.in \ + $(top_srcdir)/configure $(top_srcdir)/scripts/gajim.in AUTHORS \ + COPYING ChangeLog INSTALL NEWS THANKS compile config.guess \ + config.sub depcomp install-sh ltmain.sh missing mkinstalldirs +subdir = . +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/glib-gettext.m4 \ + $(top_srcdir)/m4/python.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ + configure.lineno configure.status.lineno +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = config.h +CONFIG_CLEAN_FILES = scripts/gajim +am__installdirs = "$(DESTDIR)$(bindir)" +binSCRIPT_INSTALL = $(INSTALL_SCRIPT) +SCRIPTS = $(bin_SCRIPTS) +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-exec-recursive install-info-recursive \ + install-recursive installcheck-recursive installdirs-recursive \ + pdf-recursive ps-recursive uninstall-info-recursive \ + uninstall-recursive +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +distdir = $(PACKAGE)-$(VERSION) +top_distdir = $(distdir) +am__remove_distdir = \ + { test ! -d $(distdir) \ + || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ + && rm -fr $(distdir); }; } +DIST_ARCHIVES = $(distdir).tar.gz +GZIP_ENV = --best +distuninstallcheck_listfiles = find . -type f -print +distcleancheck_listfiles = find . -type f -print +ACLOCAL = @ACLOCAL@ +ALL_LINGUAS = @ALL_LINGUAS@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CATALOGS = @CATALOGS@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DBUS_CFLAGS = @DBUS_CFLAGS@ +DBUS_LIBS = @DBUS_LIBS@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GMOFILES = @GMOFILES@ +GMSGFMT = @GMSGFMT@ +GREP = @GREP@ +GTKSPELL_CFLAGS = @GTKSPELL_CFLAGS@ +GTKSPELL_LIBS = @GTKSPELL_LIBS@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLLIBS = @INTLLIBS@ +INTLTOOL_CAVES_RULE = @INTLTOOL_CAVES_RULE@ +INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@ +INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@ +INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ +INTLTOOL_ICONV = @INTLTOOL_ICONV@ +INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@ +INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@ +INTLTOOL_MERGE = @INTLTOOL_MERGE@ +INTLTOOL_MSGFMT = @INTLTOOL_MSGFMT@ +INTLTOOL_MSGMERGE = @INTLTOOL_MSGMERGE@ +INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@ +INTLTOOL_PERL = @INTLTOOL_PERL@ +INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@ +INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@ +INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@ +INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@ +INTLTOOL_SERVICE_RULE = @INTLTOOL_SERVICE_RULE@ +INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@ +INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@ +INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@ +INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@ +INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ +INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@ +INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@ +INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@ +INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ +MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ +MAKEINFO = @MAKEINFO@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +POFILES = @POFILES@ +POSUB = @POSUB@ +PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ +PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ +PYGTK_CFLAGS = @PYGTK_CFLAGS@ +PYGTK_DEFS = @PYGTK_DEFS@ +PYGTK_LIBS = @PYGTK_LIBS@ +PYTHON = @PYTHON@ +PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ +PYTHON_INCLUDES = @PYTHON_INCLUDES@ +PYTHON_PLATFORM = @PYTHON_PLATFORM@ +PYTHON_PREFIX = @PYTHON_PREFIX@ +PYTHON_VERSION = @PYTHON_VERSION@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +XMKMF = @XMKMF@ +XSCRNSAVER_CFLAGS = @XSCRNSAVER_CFLAGS@ +XSCRNSAVER_LIBS = @XSCRNSAVER_LIBS@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgpyexecdir = @pkgpyexecdir@ +pkgpythondir = @pkgpythondir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pyexecdir = @pyexecdir@ +pythondir = @pythondir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +SUBDIRS = po src data +bin_SCRIPTS = scripts/gajim +EXTRA_DIST = \ + autogen.sh \ + COPYING \ + ChangeLog \ + README \ + THANKS \ + intltool-extract.in \ + intltool-merge.in \ + intltool-update.in \ + scripts/gajim.in + +DISTCLEANFILES = \ + intltool-extract \ + intltool-merge \ + intltool-update \ + scripts/gajim + +all: config.h + $(MAKE) $(AM_MAKEFLAGS) all-recursive + +.SUFFIXES: +am--refresh: + @: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + echo ' cd $(srcdir) && $(AUTOMAKE) --gnu '; \ + cd $(srcdir) && $(AUTOMAKE) --gnu \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + echo ' $(SHELL) ./config.status'; \ + $(SHELL) ./config.status;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(srcdir) && $(AUTOCONF) +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) + +config.h: stamp-h1 + @if test ! -f $@; then \ + rm -f stamp-h1; \ + $(MAKE) stamp-h1; \ + else :; fi + +stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status + @rm -f stamp-h1 + cd $(top_builddir) && $(SHELL) ./config.status config.h +$(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_srcdir) && $(AUTOHEADER) + rm -f stamp-h1 + touch $@ + +distclean-hdr: + -rm -f config.h stamp-h1 +scripts/gajim: $(top_builddir)/config.status $(top_srcdir)/scripts/gajim.in + cd $(top_builddir) && $(SHELL) ./config.status $@ +install-binSCRIPTS: $(bin_SCRIPTS) + @$(NORMAL_INSTALL) + test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)" + @list='$(bin_SCRIPTS)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + if test -f $$d$$p; then \ + f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \ + echo " $(binSCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(bindir)/$$f'"; \ + $(binSCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(bindir)/$$f"; \ + else :; fi; \ + done + +uninstall-binSCRIPTS: + @$(NORMAL_UNINSTALL) + @list='$(bin_SCRIPTS)'; for p in $$list; do \ + f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \ + echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \ + rm -f "$(DESTDIR)$(bindir)/$$f"; \ + done + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +mostlyclean-recursive clean-recursive distclean-recursive \ +maintainer-clean-recursive: + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + $(am__remove_distdir) + mkdir $(distdir) + $(mkdir_p) $(distdir)/data $(distdir)/m4 $(distdir)/po $(distdir)/scripts + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(mkdir_p) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + distdir) \ + || exit 1; \ + fi; \ + done + -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \ + ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \ + || chmod -R a+r $(distdir) +dist-gzip: distdir + tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__remove_distdir) + +dist-bzip2: distdir + tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 + $(am__remove_distdir) + +dist-tarZ: distdir + tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z + $(am__remove_distdir) + +dist-shar: distdir + shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz + $(am__remove_distdir) + +dist-zip: distdir + -rm -f $(distdir).zip + zip -rq $(distdir).zip $(distdir) + $(am__remove_distdir) + +dist dist-all: distdir + tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__remove_distdir) + +# This target untars the dist file and tries a VPATH configuration. Then +# it guarantees that the distribution is self-contained by making another +# tarfile. +distcheck: dist + case '$(DIST_ARCHIVES)' in \ + *.tar.gz*) \ + GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\ + *.tar.bz2*) \ + bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\ + *.tar.Z*) \ + uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ + *.shar.gz*) \ + GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\ + *.zip*) \ + unzip $(distdir).zip ;;\ + esac + chmod -R a-w $(distdir); chmod a+w $(distdir) + mkdir $(distdir)/_build + mkdir $(distdir)/_inst + chmod a-w $(distdir) + dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ + && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ + && cd $(distdir)/_build \ + && ../configure --srcdir=.. --prefix="$$dc_install_base" \ + $(DISTCHECK_CONFIGURE_FLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) dvi \ + && $(MAKE) $(AM_MAKEFLAGS) check \ + && $(MAKE) $(AM_MAKEFLAGS) install \ + && $(MAKE) $(AM_MAKEFLAGS) installcheck \ + && $(MAKE) $(AM_MAKEFLAGS) uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ + distuninstallcheck \ + && chmod -R a-w "$$dc_install_base" \ + && ({ \ + (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ + distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ + } || { rm -rf "$$dc_destdir"; exit 1; }) \ + && rm -rf "$$dc_destdir" \ + && $(MAKE) $(AM_MAKEFLAGS) dist \ + && rm -rf $(DIST_ARCHIVES) \ + && $(MAKE) $(AM_MAKEFLAGS) distcleancheck + $(am__remove_distdir) + @(echo "$(distdir) archives ready for distribution: "; \ + list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ + sed -e '1{h;s/./=/g;p;x;}' -e '$${p;x;}' +distuninstallcheck: + @cd $(distuninstallcheck_dir) \ + && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ + || { echo "ERROR: files left after uninstall:" ; \ + if test -n "$(DESTDIR)"; then \ + echo " (check DESTDIR support)"; \ + fi ; \ + $(distuninstallcheck_listfiles) ; \ + exit 1; } >&2 +distcleancheck: distclean + @if test '$(srcdir)' = . ; then \ + echo "ERROR: distcleancheck can only run from a VPATH build" ; \ + exit 1 ; \ + fi + @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left in build directory after distclean:" ; \ + $(distcleancheck_listfiles) ; \ + exit 1; } >&2 +check-am: all-am +check: check-recursive +all-am: Makefile $(SCRIPTS) config.h +installdirs: installdirs-recursive +installdirs-am: + for dir in "$(DESTDIR)$(bindir)"; do \ + test -z "$$dir" || $(mkdir_p) "$$dir"; \ + done +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-hdr \ + distclean-libtool distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +info: info-recursive + +info-am: + +install-data-am: + +install-exec-am: install-binSCRIPTS + +install-info: install-info-recursive + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf $(top_srcdir)/autom4te.cache + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-binSCRIPTS uninstall-info-am + +uninstall-info: uninstall-info-recursive + +.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am am--refresh check \ + check-am clean clean-generic clean-libtool clean-recursive \ + ctags ctags-recursive dist dist-all dist-bzip2 dist-gzip \ + dist-shar dist-tarZ dist-zip distcheck distclean \ + distclean-generic distclean-hdr distclean-libtool \ + distclean-recursive distclean-tags distcleancheck distdir \ + distuninstallcheck dvi dvi-am html html-am info info-am \ + install install-am install-binSCRIPTS install-data \ + install-data-am install-exec install-exec-am install-info \ + install-info-am install-man install-strip installcheck \ + installcheck-am installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic maintainer-clean-recursive \ + mostlyclean mostlyclean-generic mostlyclean-libtool \ + mostlyclean-recursive pdf pdf-am ps ps-am tags tags-recursive \ + uninstall uninstall-am uninstall-binSCRIPTS uninstall-info-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/NEWS b/NEWS new file mode 100644 index 000000000..e69de29bb diff --git a/README b/README index 5e2ad7468..49fdbefff 100644 --- a/README +++ b/README @@ -25,7 +25,7 @@ Optionally: dnsutils (or whatever package provides the nslookup binary) for SRV support; if you don't know what that is, you don't need it gtkspell and aspell-LANG where lang is your locale eg. en, fr etc GnomePythonExtras 2.10 or above so you can avoid compiling trayicon and gtkspell -notification-daemon (and D-Bus) to get cooler popups +notification-daemon or notify-python (and D-Bus) to get cooler popups D-Bus to have gajim-remote working NOTE TO PACKAGERS: diff --git a/aclocal.m4 b/aclocal.m4 new file mode 100644 index 000000000..3344f1ba6 --- /dev/null +++ b/aclocal.m4 @@ -0,0 +1,7859 @@ +# generated automatically by aclocal 1.9.6 -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, +# 2005 Free Software Foundation, Inc. +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + +dnl IT_PROG_INTLTOOL([MINIMUM-VERSION], [no-xml]) +# serial 35 IT_PROG_INTLTOOL +AC_DEFUN([IT_PROG_INTLTOOL], +[AC_PREREQ([2.50])dnl + +case "$am__api_version" in + 1.[01234]) + AC_MSG_ERROR([Automake 1.5 or newer is required to use intltool]) + ;; + *) + ;; +esac + +if test -n "$1"; then + AC_MSG_CHECKING(for intltool >= $1) + + INTLTOOL_REQUIRED_VERSION_AS_INT=`echo $1 | awk -F. '{ print $ 1 * 1000 + $ 2 * 100 + $ 3; }'` + INTLTOOL_APPLIED_VERSION=`awk -F\" '/\\$VERSION / { print $ 2; }' ${ac_aux_dir}/intltool-update.in` + [INTLTOOL_APPLIED_VERSION_AS_INT=`awk -F\" '/\\$VERSION / { split($ 2, VERSION, "."); print VERSION[1] * 1000 + VERSION[2] * 100 + VERSION[3];}' ${ac_aux_dir}/intltool-update.in` + ] + AC_MSG_RESULT([$INTLTOOL_APPLIED_VERSION found]) + test "$INTLTOOL_APPLIED_VERSION_AS_INT" -ge "$INTLTOOL_REQUIRED_VERSION_AS_INT" || + AC_MSG_ERROR([Your intltool is too old. You need intltool $1 or later.]) +fi + + INTLTOOL_DESKTOP_RULE='%.desktop: %.desktop.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' +INTLTOOL_DIRECTORY_RULE='%.directory: %.directory.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' + INTLTOOL_KEYS_RULE='%.keys: %.keys.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -k -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' + INTLTOOL_PROP_RULE='%.prop: %.prop.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' + INTLTOOL_OAF_RULE='%.oaf: %.oaf.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -o -p $(top_srcdir)/po $< [$]@' + INTLTOOL_PONG_RULE='%.pong: %.pong.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' + INTLTOOL_SERVER_RULE='%.server: %.server.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -o -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' + INTLTOOL_SHEET_RULE='%.sheet: %.sheet.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' +INTLTOOL_SOUNDLIST_RULE='%.soundlist: %.soundlist.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' + INTLTOOL_UI_RULE='%.ui: %.ui.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' + INTLTOOL_XML_RULE='%.xml: %.xml.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' + INTLTOOL_XML_NOMERGE_RULE='%.xml: %.xml.in $(INTLTOOL_MERGE) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u /tmp $< [$]@' + INTLTOOL_XAM_RULE='%.xam: %.xml.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' + INTLTOOL_KBD_RULE='%.kbd: %.kbd.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -m -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' + INTLTOOL_CAVES_RULE='%.caves: %.caves.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' + INTLTOOL_SCHEMAS_RULE='%.schemas: %.schemas.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -s -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' + INTLTOOL_THEME_RULE='%.theme: %.theme.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' + INTLTOOL_SERVICE_RULE='%.service: %.service.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' + +AC_SUBST(INTLTOOL_DESKTOP_RULE) +AC_SUBST(INTLTOOL_DIRECTORY_RULE) +AC_SUBST(INTLTOOL_KEYS_RULE) +AC_SUBST(INTLTOOL_PROP_RULE) +AC_SUBST(INTLTOOL_OAF_RULE) +AC_SUBST(INTLTOOL_PONG_RULE) +AC_SUBST(INTLTOOL_SERVER_RULE) +AC_SUBST(INTLTOOL_SHEET_RULE) +AC_SUBST(INTLTOOL_SOUNDLIST_RULE) +AC_SUBST(INTLTOOL_UI_RULE) +AC_SUBST(INTLTOOL_XAM_RULE) +AC_SUBST(INTLTOOL_KBD_RULE) +AC_SUBST(INTLTOOL_XML_RULE) +AC_SUBST(INTLTOOL_XML_NOMERGE_RULE) +AC_SUBST(INTLTOOL_CAVES_RULE) +AC_SUBST(INTLTOOL_SCHEMAS_RULE) +AC_SUBST(INTLTOOL_THEME_RULE) +AC_SUBST(INTLTOOL_SERVICE_RULE) + +# Use the tools built into the package, not the ones that are installed. +AC_SUBST(INTLTOOL_EXTRACT, '$(top_builddir)/intltool-extract') +AC_SUBST(INTLTOOL_MERGE, '$(top_builddir)/intltool-merge') +AC_SUBST(INTLTOOL_UPDATE, '$(top_builddir)/intltool-update') + +AC_PATH_PROG(INTLTOOL_PERL, perl) +if test -z "$INTLTOOL_PERL"; then + AC_MSG_ERROR([perl not found; required for intltool]) +fi +if test -z "`$INTLTOOL_PERL -v | fgrep '5.' 2> /dev/null`"; then + AC_MSG_ERROR([perl 5.x required for intltool]) +fi +if test "x$2" != "xno-xml"; then + AC_MSG_CHECKING([for XML::Parser]) + if `$INTLTOOL_PERL -e "require XML::Parser" 2>/dev/null`; then + AC_MSG_RESULT([ok]) + else + AC_MSG_ERROR([XML::Parser perl module is required for intltool]) + fi +fi + +AC_PATH_PROG(INTLTOOL_ICONV, iconv, iconv) +AC_PATH_PROG(INTLTOOL_MSGFMT, msgfmt, msgfmt) +AC_PATH_PROG(INTLTOOL_MSGMERGE, msgmerge, msgmerge) +AC_PATH_PROG(INTLTOOL_XGETTEXT, xgettext, xgettext) + +# Substitute ALL_LINGUAS so we can use it in po/Makefile +AC_SUBST(ALL_LINGUAS) + +IT_PO_SUBDIR([po]) + +dnl The following is very similar to +dnl +dnl AC_CONFIG_FILES([intltool-extract intltool-merge intltool-update]) +dnl +dnl with the following slight differences: +dnl - the *.in files are in ac_aux_dir, +dnl - if the file haven't changed upon reconfigure, it's not touched, +dnl - the evaluation of the third parameter enables a hack which computes +dnl the actual value of $libdir, +dnl - the user sees "executing intltool commands", instead of +dnl "creating intltool-extract" and such. +dnl +dnl Nothing crucial here, and we could use AC_CONFIG_FILES, if there were +dnl a reason for it. + +AC_CONFIG_COMMANDS([intltool], [ + +for file in intltool-extract intltool-merge intltool-update; do + sed -e "s|@INTLTOOL_EXTRACT@|`pwd`/intltool-extract|g" \ + -e "s|@INTLTOOL_LIBDIR@|${INTLTOOL_LIBDIR}|g" \ + -e "s|@INTLTOOL_ICONV@|${INTLTOOL_ICONV}|g" \ + -e "s|@INTLTOOL_MSGFMT@|${INTLTOOL_MSGFMT}|g" \ + -e "s|@INTLTOOL_MSGMERGE@|${INTLTOOL_MSGMERGE}|g" \ + -e "s|@INTLTOOL_XGETTEXT@|${INTLTOOL_XGETTEXT}|g" \ + -e "s|@INTLTOOL_PERL@|${INTLTOOL_PERL}|g" \ + < ${ac_aux_dir}/${file}.in > ${file}.out + if cmp -s ${file} ${file}.out 2>/dev/null; then + rm -f ${file}.out + else + mv -f ${file}.out ${file} + fi + chmod ugo+x ${file} + chmod u+w ${file} +done + +], +[INTLTOOL_PERL='${INTLTOOL_PERL}' ac_aux_dir='${ac_aux_dir}' +prefix="$prefix" exec_prefix="$exec_prefix" INTLTOOL_LIBDIR="$libdir" +INTLTOOL_EXTRACT='${INTLTOOL_EXTRACT}' INTLTOOL_ICONV='${INTLTOOL_ICONV}' +INTLTOOL_MSGFMT='${INTLTOOL_MSGFMT}' INTLTOOL_MSGMERGE='${INTLTOOL_MSGMERGE}' +INTLTOOL_XGETTEXT='${INTLTOOL_XGETTEXT}']) + +]) + + +# IT_PO_SUBDIR(DIRNAME) +# --------------------- +# All po subdirs have to be declared with this macro; the subdir "po" is +# declared by IT_PROG_INTLTOOL. +# +AC_DEFUN([IT_PO_SUBDIR], +[AC_PREREQ([2.53])dnl We use ac_top_srcdir inside AC_CONFIG_COMMANDS. +dnl +dnl The following CONFIG_COMMANDS should be exetuted at the very end +dnl of config.status. +AC_CONFIG_COMMANDS_PRE([ + AC_CONFIG_COMMANDS([$1/stamp-it], [ + rm -f "$1/stamp-it" "$1/stamp-it.tmp" "$1/POTFILES" "$1/Makefile.tmp" + >"$1/stamp-it.tmp" + [sed '/^#/d + s/^[[].*] *// + /^[ ]*$/d + '"s|^| $ac_top_srcdir/|" \ + "$srcdir/$1/POTFILES.in" | sed '$!s/$/ \\/' >"$1/POTFILES" + ] + if test ! -f "$1/Makefile"; then + AC_MSG_ERROR([$1/Makefile is not ready.]) + fi + mv "$1/Makefile" "$1/Makefile.tmp" + [sed '/^POTFILES =/,/[^\\]$/ { + /^POTFILES =/!d + r $1/POTFILES + } + ' "$1/Makefile.tmp" >"$1/Makefile"] + rm -f "$1/Makefile.tmp" + mv "$1/stamp-it.tmp" "$1/stamp-it" + ]) +])dnl +]) + + +# deprecated macros +AU_ALIAS([AC_PROG_INTLTOOL], [IT_PROG_INTLTOOL]) +# A hint is needed for aclocal from Automake <= 1.9.4: +# AC_DEFUN([AC_PROG_INTLTOOL], ...) + + +# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- + +# serial 48 AC_PROG_LIBTOOL + + +# AC_PROVIDE_IFELSE(MACRO-NAME, IF-PROVIDED, IF-NOT-PROVIDED) +# ----------------------------------------------------------- +# If this macro is not defined by Autoconf, define it here. +m4_ifdef([AC_PROVIDE_IFELSE], + [], + [m4_define([AC_PROVIDE_IFELSE], + [m4_ifdef([AC_PROVIDE_$1], + [$2], [$3])])]) + + +# AC_PROG_LIBTOOL +# --------------- +AC_DEFUN([AC_PROG_LIBTOOL], +[AC_REQUIRE([_AC_PROG_LIBTOOL])dnl +dnl If AC_PROG_CXX has already been expanded, run AC_LIBTOOL_CXX +dnl immediately, otherwise, hook it in at the end of AC_PROG_CXX. + AC_PROVIDE_IFELSE([AC_PROG_CXX], + [AC_LIBTOOL_CXX], + [define([AC_PROG_CXX], defn([AC_PROG_CXX])[AC_LIBTOOL_CXX + ])]) +dnl And a similar setup for Fortran 77 support + AC_PROVIDE_IFELSE([AC_PROG_F77], + [AC_LIBTOOL_F77], + [define([AC_PROG_F77], defn([AC_PROG_F77])[AC_LIBTOOL_F77 +])]) + +dnl Quote A][M_PROG_GCJ so that aclocal doesn't bring it in needlessly. +dnl If either AC_PROG_GCJ or A][M_PROG_GCJ have already been expanded, run +dnl AC_LIBTOOL_GCJ immediately, otherwise, hook it in at the end of both. + AC_PROVIDE_IFELSE([AC_PROG_GCJ], + [AC_LIBTOOL_GCJ], + [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], + [AC_LIBTOOL_GCJ], + [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ], + [AC_LIBTOOL_GCJ], + [ifdef([AC_PROG_GCJ], + [define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[AC_LIBTOOL_GCJ])]) + ifdef([A][M_PROG_GCJ], + [define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[AC_LIBTOOL_GCJ])]) + ifdef([LT_AC_PROG_GCJ], + [define([LT_AC_PROG_GCJ], + defn([LT_AC_PROG_GCJ])[AC_LIBTOOL_GCJ])])])]) +])])# AC_PROG_LIBTOOL + + +# _AC_PROG_LIBTOOL +# ---------------- +AC_DEFUN([_AC_PROG_LIBTOOL], +[AC_REQUIRE([AC_LIBTOOL_SETUP])dnl +AC_BEFORE([$0],[AC_LIBTOOL_CXX])dnl +AC_BEFORE([$0],[AC_LIBTOOL_F77])dnl +AC_BEFORE([$0],[AC_LIBTOOL_GCJ])dnl + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' +AC_SUBST(LIBTOOL)dnl + +# Prevent multiple expansion +define([AC_PROG_LIBTOOL], []) +])# _AC_PROG_LIBTOOL + + +# AC_LIBTOOL_SETUP +# ---------------- +AC_DEFUN([AC_LIBTOOL_SETUP], +[AC_PREREQ(2.50)dnl +AC_REQUIRE([AC_ENABLE_SHARED])dnl +AC_REQUIRE([AC_ENABLE_STATIC])dnl +AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_PROG_LD])dnl +AC_REQUIRE([AC_PROG_LD_RELOAD_FLAG])dnl +AC_REQUIRE([AC_PROG_NM])dnl + +AC_REQUIRE([AC_PROG_LN_S])dnl +AC_REQUIRE([AC_DEPLIBS_CHECK_METHOD])dnl +# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! +AC_REQUIRE([AC_OBJEXT])dnl +AC_REQUIRE([AC_EXEEXT])dnl +dnl + +AC_LIBTOOL_SYS_MAX_CMD_LEN +AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE +AC_LIBTOOL_OBJDIR + +AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl +_LT_AC_PROG_ECHO_BACKSLASH + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed='sed -e 1s/^X//' +[sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g'] + +# Same as above, but do not quote variable references. +[double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g'] + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' + +# Constants: +rm="rm -f" + +# Global variables: +default_ofile=libtool +can_build_shared=yes + +# All known linkers require a `.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a +ltmain="$ac_aux_dir/ltmain.sh" +ofile="$default_ofile" +with_gnu_ld="$lt_cv_prog_gnu_ld" + +AC_CHECK_TOOL(AR, ar, false) +AC_CHECK_TOOL(RANLIB, ranlib, :) +AC_CHECK_TOOL(STRIP, strip, :) + +old_CC="$CC" +old_CFLAGS="$CFLAGS" + +# Set sane defaults for various variables +test -z "$AR" && AR=ar +test -z "$AR_FLAGS" && AR_FLAGS=cru +test -z "$AS" && AS=as +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS +test -z "$DLLTOOL" && DLLTOOL=dlltool +test -z "$LD" && LD=ld +test -z "$LN_S" && LN_S="ln -s" +test -z "$MAGIC_CMD" && MAGIC_CMD=file +test -z "$NM" && NM=nm +test -z "$SED" && SED=sed +test -z "$OBJDUMP" && OBJDUMP=objdump +test -z "$RANLIB" && RANLIB=: +test -z "$STRIP" && STRIP=: +test -z "$ac_objext" && ac_objext=o + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + openbsd*) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" + ;; + *) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" +fi + +_LT_CC_BASENAME([$compiler]) + +# Only perform the check for file, if the check method requires it +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + AC_PATH_MAGIC + fi + ;; +esac + +AC_PROVIDE_IFELSE([AC_LIBTOOL_DLOPEN], enable_dlopen=yes, enable_dlopen=no) +AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL], +enable_win32_dll=yes, enable_win32_dll=no) + +AC_ARG_ENABLE([libtool-lock], + [AC_HELP_STRING([--disable-libtool-lock], + [avoid locking (might break parallel builds)])]) +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +AC_ARG_WITH([pic], + [AC_HELP_STRING([--with-pic], + [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], + [pic_mode="$withval"], + [pic_mode=default]) +test -z "$pic_mode" && pic_mode=default + +# Check if we have a version mismatch between libtool.m4 and ltmain.sh. +# +# Note: This should be in AC_LIBTOOL_SETUP, _after_ $ltmain have been defined. +# We also should do it _before_ AC_LIBTOOL_LANG_C_CONFIG that actually +# calls AC_LIBTOOL_CONFIG and creates libtool. +# +_LT_VERSION_CHECK + +# Use C for the default configuration in the libtool script +tagname= +AC_LIBTOOL_LANG_C_CONFIG +_LT_AC_TAGCONFIG +])# AC_LIBTOOL_SETUP + + +# _LT_VERSION_CHECK +# ----------------- +AC_DEFUN([_LT_VERSION_CHECK], +[AC_MSG_CHECKING([for correct ltmain.sh version]) +if test "x$ltmain" = "x" ; then + AC_MSG_RESULT(no) + AC_MSG_ERROR([ + +*** @<:@Gentoo@:>@ sanity check failed! *** +*** \$ltmain is not defined, please check the patch for consistency! *** +]) +fi +gentoo_lt_version="1.5.22" +gentoo_ltmain_version=`sed -n '/^[[ ]]*VERSION=/{s/^[[ ]]*VERSION=//;p;q;}' "$ltmain"` +if test "x$gentoo_lt_version" != "x$gentoo_ltmain_version" ; then + AC_MSG_RESULT(no) + AC_MSG_ERROR([ + +*** @<:@Gentoo@:>@ sanity check failed! *** +*** libtool.m4 and ltmain.sh have a version mismatch! *** +*** (libtool.m4 = $gentoo_lt_version, ltmain.sh = $gentoo_ltmain_version) *** + +Please run: + + libtoolize --copy --force + +if appropriate, please contact the maintainer of this +package (or your distribution) for help. +]) +else + AC_MSG_RESULT(yes) +fi +])# _LT_VERSION_CHECK + + +# _LT_AC_SYS_COMPILER +# ------------------- +AC_DEFUN([_LT_AC_SYS_COMPILER], +[AC_REQUIRE([AC_PROG_CC])dnl + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC +])# _LT_AC_SYS_COMPILER + + +# _LT_CC_BASENAME(CC) +# ------------------- +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +AC_DEFUN([_LT_CC_BASENAME], +[for cc_temp in $1""; do + case $cc_temp in + compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; + distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` +]) + + +# _LT_COMPILER_BOILERPLATE +# ------------------------ +# Check for compiler boilerplate output or warnings with +# the simple compiler test code. +AC_DEFUN([_LT_COMPILER_BOILERPLATE], +[ac_outfile=conftest.$ac_objext +printf "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* +])# _LT_COMPILER_BOILERPLATE + + +# _LT_LINKER_BOILERPLATE +# ---------------------- +# Check for linker boilerplate output or warnings with +# the simple link test code. +AC_DEFUN([_LT_LINKER_BOILERPLATE], +[ac_outfile=conftest.$ac_objext +printf "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm conftest* +])# _LT_LINKER_BOILERPLATE + + +# _LT_AC_SYS_LIBPATH_AIX +# ---------------------- +# Links a minimal program and checks the executable +# for the system default hardcoded library path. In most cases, +# this is /usr/lib:/lib, but when the MPI compilers are used +# the location of the communication and MPI libs are included too. +# If we don't find anything, use the default library path according +# to the aix ld manual. +AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX], +[AC_LINK_IFELSE(AC_LANG_PROGRAM,[ +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi],[]) +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi +])# _LT_AC_SYS_LIBPATH_AIX + + +# _LT_AC_SHELL_INIT(ARG) +# ---------------------- +AC_DEFUN([_LT_AC_SHELL_INIT], +[ifdef([AC_DIVERSION_NOTICE], + [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)], + [AC_DIVERT_PUSH(NOTICE)]) +$1 +AC_DIVERT_POP +])# _LT_AC_SHELL_INIT + + +# _LT_AC_PROG_ECHO_BACKSLASH +# -------------------------- +# Add some code to the start of the generated configure script which +# will find an echo command which doesn't interpret backslashes. +AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH], +[_LT_AC_SHELL_INIT([ +# Check that we are running under the correct shell. +SHELL=${CONFIG_SHELL-/bin/sh} + +case X$ECHO in +X*--fallback-echo) + # Remove one level of quotation (which was required for Make). + ECHO=`echo "$ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','` + ;; +esac + +echo=${ECHO-echo} +if test "X[$]1" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift +elif test "X[$]1" = X--fallback-echo; then + # Avoid inline document here, it may be left over + : +elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then + # Yippee, $echo works! + : +else + # Restart under the correct shell. + exec $SHELL "[$]0" --no-reexec ${1+"[$]@"} +fi + +if test "X[$]1" = X--fallback-echo; then + # used as fallback echo + shift + cat </dev/null 2>&1 && unset CDPATH + +if test -z "$ECHO"; then +if test "X${echo_test_string+set}" != Xset; then +# find a string as large as possible, as long as the shell can cope with it + for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do + # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... + if (echo_test_string=`eval $cmd`) 2>/dev/null && + echo_test_string=`eval $cmd` && + (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null + then + break + fi + done +fi + +if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + : +else + # The Solaris, AIX, and Digital Unix default echo programs unquote + # backslashes. This makes it impossible to quote backslashes using + # echo "$something" | sed 's/\\/\\\\/g' + # + # So, first we look for a working echo in the user's PATH. + + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for dir in $PATH /usr/ucb; do + IFS="$lt_save_ifs" + if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && + test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + echo="$dir/echo" + break + fi + done + IFS="$lt_save_ifs" + + if test "X$echo" = Xecho; then + # We didn't find a better echo, so look for alternatives. + if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # This shell has a builtin print -r that does the trick. + echo='print -r' + elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && + test "X$CONFIG_SHELL" != X/bin/ksh; then + # If we have ksh, try running configure again with it. + ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} + export ORIGINAL_CONFIG_SHELL + CONFIG_SHELL=/bin/ksh + export CONFIG_SHELL + exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"} + else + # Try using printf. + echo='printf %s\n' + if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # Cool, printf works + : + elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL + export CONFIG_SHELL + SHELL="$CONFIG_SHELL" + export SHELL + echo="$CONFIG_SHELL [$]0 --fallback-echo" + elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + echo="$CONFIG_SHELL [$]0 --fallback-echo" + else + # maybe with a smaller string... + prev=: + + for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do + if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null + then + break + fi + prev="$cmd" + done + + if test "$prev" != 'sed 50q "[$]0"'; then + echo_test_string=`eval $prev` + export echo_test_string + exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"} + else + # Oops. We lost completely, so just stick with echo. + echo=echo + fi + fi + fi + fi +fi +fi + +# Copy echo and quote the copy suitably for passing to libtool from +# the Makefile, instead of quoting the original, which is used later. +ECHO=$echo +if test "X$ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then + ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo" +fi + +AC_SUBST(ECHO) +])])# _LT_AC_PROG_ECHO_BACKSLASH + + +# _LT_AC_LOCK +# ----------- +AC_DEFUN([_LT_AC_LOCK], +[AC_ARG_ENABLE([libtool-lock], + [AC_HELP_STRING([--disable-libtool-lock], + [avoid locking (might break parallel builds)])]) +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE="32" + ;; + *ELF-64*) + HPUX_IA64_MODE="64" + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out which ABI we are using. + echo '[#]line __oline__ "configure"' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + if test "$lt_cv_prog_gnu_ld" = yes; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.o` in + *32-bit*) + case $host in + x86_64-*linux*) + LD="${LD-ld} -m elf_i386" + ;; + ppc64-*linux*|powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + ppc*-*linux*|powerpc*-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -belf" + AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, + [AC_LANG_PUSH(C) + AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) + AC_LANG_POP]) + if test x"$lt_cv_cc_needs_belf" != x"yes"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS="$SAVE_CFLAGS" + fi + ;; +sparc*-*solaris*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.o` in + *64-bit*) + case $lt_cv_prog_gnu_ld in + yes*) LD="${LD-ld} -m elf64_sparc" ;; + *) LD="${LD-ld} -64" ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL], +[*-*-cygwin* | *-*-mingw* | *-*-pw32*) + AC_CHECK_TOOL(DLLTOOL, dlltool, false) + AC_CHECK_TOOL(AS, as, false) + AC_CHECK_TOOL(OBJDUMP, objdump, false) + ;; + ]) +esac + +need_locks="$enable_libtool_lock" + +])# _LT_AC_LOCK + + +# AC_LIBTOOL_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) +# ---------------------------------------------------------------- +# Check whether the given compiler option works +AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], +[AC_REQUIRE([LT_AC_PROG_SED]) +AC_CACHE_CHECK([$1], [$2], + [$2=no + ifelse([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$3" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + fi + $rm conftest* +]) + +if test x"[$]$2" = xyes; then + ifelse([$5], , :, [$5]) +else + ifelse([$6], , :, [$6]) +fi +])# AC_LIBTOOL_COMPILER_OPTION + + +# AC_LIBTOOL_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [ACTION-SUCCESS], [ACTION-FAILURE]) +# ------------------------------------------------------------ +# Check whether the given compiler option works +AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], +[AC_CACHE_CHECK([$1], [$2], + [$2=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $3" + printf "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&AS_MESSAGE_LOG_FD + $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + else + $2=yes + fi + fi + $rm conftest* + LDFLAGS="$save_LDFLAGS" +]) + +if test x"[$]$2" = xyes; then + ifelse([$4], , :, [$4]) +else + ifelse([$5], , :, [$5]) +fi +])# AC_LIBTOOL_LINKER_OPTION + + +# AC_LIBTOOL_SYS_MAX_CMD_LEN +# -------------------------- +AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], +[# find the maximum length of command line arguments +AC_MSG_CHECKING([the maximum length of command line arguments]) +AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl + i=0 + teststring="ABCD" + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + + interix*) + # We know the value 262144 and hardcode it with a safety zone (like BSD) + lt_cv_sys_max_cmd_len=196608 + ;; + + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + sco3.2v5*) + lt_cv_sys_max_cmd_len=102400 + ;; + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then + lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi + ;; + *) + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + while (test "X"`$SHELL [$]0 --fallback-echo "X$teststring" 2>/dev/null` \ + = "XX$teststring") >/dev/null 2>&1 && + new_result=`expr "X$teststring" : ".*" 2>&1` && + lt_cv_sys_max_cmd_len=$new_result && + test $i != 17 # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + teststring= + # Add a significant safety factor because C++ compilers can tack on massive + # amounts of additional arguments before passing them to the linker. + # It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + ;; + esac +]) +if test -n $lt_cv_sys_max_cmd_len ; then + AC_MSG_RESULT($lt_cv_sys_max_cmd_len) +else + AC_MSG_RESULT(none) +fi +])# AC_LIBTOOL_SYS_MAX_CMD_LEN + + +# _LT_AC_CHECK_DLFCN +# ------------------ +AC_DEFUN([_LT_AC_CHECK_DLFCN], +[AC_CHECK_HEADERS(dlfcn.h)dnl +])# _LT_AC_CHECK_DLFCN + + +# _LT_AC_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, +# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) +# --------------------------------------------------------------------- +AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF], +[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl +if test "$cross_compiling" = yes; then : + [$4] +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext < +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + else + puts (dlerror ()); + + exit (status); +}] +EOF + if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) $1 ;; + x$lt_dlneed_uscore) $2 ;; + x$lt_dlunknown|x*) $3 ;; + esac + else : + # compilation failed + $3 + fi +fi +rm -fr conftest* +])# _LT_AC_TRY_DLOPEN_SELF + + +# AC_LIBTOOL_DLOPEN_SELF +# ---------------------- +AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], +[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl +if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen="dlopen" + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ + lt_cv_dlopen="dyld" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ]) + ;; + + *) + AC_CHECK_FUNC([shl_load], + [lt_cv_dlopen="shl_load"], + [AC_CHECK_LIB([dld], [shl_load], + [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"], + [AC_CHECK_FUNC([dlopen], + [lt_cv_dlopen="dlopen"], + [AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], + [AC_CHECK_LIB([svld], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], + [AC_CHECK_LIB([dld], [dld_link], + [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"]) + ]) + ]) + ]) + ]) + ]) + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + AC_CACHE_CHECK([whether a program can dlopen itself], + lt_cv_dlopen_self, [dnl + _LT_AC_TRY_DLOPEN_SELF( + lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, + lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) + ]) + + if test "x$lt_cv_dlopen_self" = xyes; then + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" + AC_CACHE_CHECK([whether a statically linked program can dlopen itself], + lt_cv_dlopen_self_static, [dnl + _LT_AC_TRY_DLOPEN_SELF( + lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, + lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) + ]) + fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi +])# AC_LIBTOOL_DLOPEN_SELF + + +# AC_LIBTOOL_PROG_CC_C_O([TAGNAME]) +# --------------------------------- +# Check to see if options -c and -o are simultaneously supported by compiler +AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O], +[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl +AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], + [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)], + [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no + $rm -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes + fi + fi + chmod u+w . 2>&AS_MESSAGE_LOG_FD + $rm conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files + $rm out/* && rmdir out + cd .. + rmdir conftest + $rm conftest* +]) +])# AC_LIBTOOL_PROG_CC_C_O + + +# AC_LIBTOOL_SYS_HARD_LINK_LOCKS([TAGNAME]) +# ----------------------------------------- +# Check to see if we can do hard links to lock some files if needed +AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], +[AC_REQUIRE([_LT_AC_LOCK])dnl + +hard_links="nottested" +if test "$_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + AC_MSG_CHECKING([if we can lock with hard links]) + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + AC_MSG_RESULT([$hard_links]) + if test "$hard_links" = no; then + AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) + need_locks=warn + fi +else + need_locks=no +fi +])# AC_LIBTOOL_SYS_HARD_LINK_LOCKS + + +# AC_LIBTOOL_OBJDIR +# ----------------- +AC_DEFUN([AC_LIBTOOL_OBJDIR], +[AC_CACHE_CHECK([for objdir], [lt_cv_objdir], +[rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null]) +objdir=$lt_cv_objdir +])# AC_LIBTOOL_OBJDIR + + +# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH([TAGNAME]) +# ---------------------------------------------- +# Check hardcoding attributes. +AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], +[AC_MSG_CHECKING([how to hardcode library paths into programs]) +_LT_AC_TAGVAR(hardcode_action, $1)= +if test -n "$_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)" || \ + test -n "$_LT_AC_TAGVAR(runpath_var, $1)" || \ + test "X$_LT_AC_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then + + # We can hardcode non-existant directories. + if test "$_LT_AC_TAGVAR(hardcode_direct, $1)" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)" != no && + test "$_LT_AC_TAGVAR(hardcode_minus_L, $1)" != no; then + # Linking always hardcodes the temporary library directory. + _LT_AC_TAGVAR(hardcode_action, $1)=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + _LT_AC_TAGVAR(hardcode_action, $1)=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + _LT_AC_TAGVAR(hardcode_action, $1)=unsupported +fi +AC_MSG_RESULT([$_LT_AC_TAGVAR(hardcode_action, $1)]) + +if test "$_LT_AC_TAGVAR(hardcode_action, $1)" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi +])# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH + + +# AC_LIBTOOL_SYS_LIB_STRIP +# ------------------------ +AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP], +[striplib= +old_striplib= +AC_MSG_CHECKING([whether stripping libraries is possible]) +if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + AC_MSG_RESULT([yes]) +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) +fi + ;; + *) + AC_MSG_RESULT([no]) + ;; + esac +fi +])# AC_LIBTOOL_SYS_LIB_STRIP + + +# AC_LIBTOOL_SYS_DYNAMIC_LINKER +# ----------------------------- +# PORTME Fill in your ld.so characteristics +AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER], +[AC_MSG_CHECKING([dynamic linker characteristics]) +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix4* | aix5*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[[01]] | aix4.[[01]].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[[45]]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32*) + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | [grep ';[c-zC-Z]:/' >/dev/null]; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + linux*) + if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + supports_anon_versioning=no + case `$LD -v 2>/dev/null` in + *\ [01].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + if test $supports_anon_versioning = yes; then + archive_expsym_cmds='$echo "{ global:" > $output_objdir/$libname.ver~ +cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ +$echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + else + $archive_expsym_cmds="$archive_cmds" + fi + else + ld_shlibs=no + fi + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. + if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` + else + sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' + fi + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +kfreebsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[[123]]*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + # Handle Gentoo/FreeBSD as it was Linux + case $host_vendor in + gentoo) + version_type=linux ;; + *) + version_type=freebsd-$objformat ;; + esac + + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + linux) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + need_lib_prefix=no + need_version=no + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[[01]]* | freebsdelf3.[[01]]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ + freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + freebsd*) # from 4.6 on + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +interix3*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +knetbsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +nto-qnx*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[[89]] | openbsd2.[[89]].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + export_dynamic_flag_spec='${wl}-Blargedynsym' + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + shlibpath_overrides_runpath=no + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + shlibpath_overrides_runpath=yes + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +AC_MSG_RESULT([$dynamic_linker]) +test "$dynamic_linker" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi +])# AC_LIBTOOL_SYS_DYNAMIC_LINKER + + +# _LT_AC_TAGCONFIG +# ---------------- +AC_DEFUN([_LT_AC_TAGCONFIG], +[AC_ARG_WITH([tags], + [AC_HELP_STRING([--with-tags@<:@=TAGS@:>@], + [include additional configurations @<:@automatic@:>@])], + [tagnames="$withval"]) + +if test -f "$ltmain" && test -n "$tagnames"; then + if test ! -f "${ofile}"; then + AC_MSG_WARN([output file `$ofile' does not exist]) + fi + + if test -z "$LTCC"; then + eval "`$SHELL ${ofile} --config | grep '^LTCC='`" + if test -z "$LTCC"; then + AC_MSG_WARN([output file `$ofile' does not look like a libtool script]) + else + AC_MSG_WARN([using `LTCC=$LTCC', extracted from `$ofile']) + fi + fi + if test -z "$LTCFLAGS"; then + eval "`$SHELL ${ofile} --config | grep '^LTCFLAGS='`" + fi + + # Extract list of available tagged configurations in $ofile. + # Note that this assumes the entire list is on one line. + available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'` + + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for tagname in $tagnames; do + IFS="$lt_save_ifs" + # Check whether tagname contains only valid characters + case `$echo "X$tagname" | $Xsed -e 's:[[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]]::g'` in + "") ;; + *) AC_MSG_ERROR([invalid tag name: $tagname]) + ;; + esac + + if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null + then + AC_MSG_ERROR([tag name \"$tagname\" already exists]) + fi + + # Update the list of available tags. + if test -n "$tagname"; then + echo appending configuration tag \"$tagname\" to $ofile + + case $tagname in + CXX) + if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + AC_LIBTOOL_LANG_CXX_CONFIG + else + tagname="" + fi + ;; + + F77) + if test -n "$F77" && test "X$F77" != "Xno"; then + AC_LIBTOOL_LANG_F77_CONFIG + else + tagname="" + fi + ;; + + GCJ) + if test -n "$GCJ" && test "X$GCJ" != "Xno"; then + AC_LIBTOOL_LANG_GCJ_CONFIG + else + tagname="" + fi + ;; + + RC) + AC_LIBTOOL_LANG_RC_CONFIG + ;; + + *) + AC_MSG_ERROR([Unsupported tag name: $tagname]) + ;; + esac + + # Append the new tag name to the list of available tags. + if test -n "$tagname" ; then + available_tags="$available_tags $tagname" + fi + fi + done + IFS="$lt_save_ifs" + + # Now substitute the updated list of available tags. + if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then + mv "${ofile}T" "$ofile" + chmod +x "$ofile" + else + rm -f "${ofile}T" + AC_MSG_ERROR([unable to update list of available tagged configurations.]) + fi +fi +])# _LT_AC_TAGCONFIG + + +# AC_LIBTOOL_DLOPEN +# ----------------- +# enable checks for dlopen support +AC_DEFUN([AC_LIBTOOL_DLOPEN], + [AC_BEFORE([$0],[AC_LIBTOOL_SETUP]) +])# AC_LIBTOOL_DLOPEN + + +# AC_LIBTOOL_WIN32_DLL +# -------------------- +# declare package support for building win32 DLLs +AC_DEFUN([AC_LIBTOOL_WIN32_DLL], +[AC_BEFORE([$0], [AC_LIBTOOL_SETUP]) +])# AC_LIBTOOL_WIN32_DLL + + +# AC_ENABLE_SHARED([DEFAULT]) +# --------------------------- +# implement the --enable-shared flag +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +AC_DEFUN([AC_ENABLE_SHARED], +[define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl +AC_ARG_ENABLE([shared], + [AC_HELP_STRING([--enable-shared@<:@=PKGS@:>@], + [build shared libraries @<:@default=]AC_ENABLE_SHARED_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_shared=]AC_ENABLE_SHARED_DEFAULT) +])# AC_ENABLE_SHARED + + +# AC_DISABLE_SHARED +# ----------------- +# set the default shared flag to --disable-shared +AC_DEFUN([AC_DISABLE_SHARED], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +AC_ENABLE_SHARED(no) +])# AC_DISABLE_SHARED + + +# AC_ENABLE_STATIC([DEFAULT]) +# --------------------------- +# implement the --enable-static flag +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +AC_DEFUN([AC_ENABLE_STATIC], +[define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl +AC_ARG_ENABLE([static], + [AC_HELP_STRING([--enable-static@<:@=PKGS@:>@], + [build static libraries @<:@default=]AC_ENABLE_STATIC_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_static=]AC_ENABLE_STATIC_DEFAULT) +])# AC_ENABLE_STATIC + + +# AC_DISABLE_STATIC +# ----------------- +# set the default static flag to --disable-static +AC_DEFUN([AC_DISABLE_STATIC], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +AC_ENABLE_STATIC(no) +])# AC_DISABLE_STATIC + + +# AC_ENABLE_FAST_INSTALL([DEFAULT]) +# --------------------------------- +# implement the --enable-fast-install flag +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +AC_DEFUN([AC_ENABLE_FAST_INSTALL], +[define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl +AC_ARG_ENABLE([fast-install], + [AC_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], + [optimize for fast installation @<:@default=]AC_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_fast_install=]AC_ENABLE_FAST_INSTALL_DEFAULT) +])# AC_ENABLE_FAST_INSTALL + + +# AC_DISABLE_FAST_INSTALL +# ----------------------- +# set the default to --disable-fast-install +AC_DEFUN([AC_DISABLE_FAST_INSTALL], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +AC_ENABLE_FAST_INSTALL(no) +])# AC_DISABLE_FAST_INSTALL + + +# AC_LIBTOOL_PICMODE([MODE]) +# -------------------------- +# implement the --with-pic flag +# MODE is either `yes' or `no'. If omitted, it defaults to `both'. +AC_DEFUN([AC_LIBTOOL_PICMODE], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +pic_mode=ifelse($#,1,$1,default) +])# AC_LIBTOOL_PICMODE + + +# AC_PROG_EGREP +# ------------- +# This is predefined starting with Autoconf 2.54, so this conditional +# definition can be removed once we require Autoconf 2.54 or later. +m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP], +[AC_CACHE_CHECK([for egrep], [ac_cv_prog_egrep], + [if echo a | (grep -E '(a|b)') >/dev/null 2>&1 + then ac_cv_prog_egrep='grep -E' + else ac_cv_prog_egrep='egrep' + fi]) + EGREP=$ac_cv_prog_egrep + AC_SUBST([EGREP]) +])]) + + +# AC_PATH_TOOL_PREFIX +# ------------------- +# find a file program which can recognise shared library +AC_DEFUN([AC_PATH_TOOL_PREFIX], +[AC_REQUIRE([AC_PROG_EGREP])dnl +AC_MSG_CHECKING([for $1]) +AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, +[case $MAGIC_CMD in +[[\\/*] | ?:[\\/]*]) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR +dnl $ac_dummy forces splitting on constant user-supplied paths. +dnl POSIX.2 word splitting is done only on the output of word expansions, +dnl not every word. This closes a longstanding sh security hole. + ac_dummy="ifelse([$2], , $PATH, [$2])" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$1; then + lt_cv_path_MAGIC_CMD="$ac_dir/$1" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac]) +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + AC_MSG_RESULT($MAGIC_CMD) +else + AC_MSG_RESULT(no) +fi +])# AC_PATH_TOOL_PREFIX + + +# AC_PATH_MAGIC +# ------------- +# find a file program which can recognise a shared library +AC_DEFUN([AC_PATH_MAGIC], +[AC_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + AC_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) + else + MAGIC_CMD=: + fi +fi +])# AC_PATH_MAGIC + + +# AC_PROG_LD +# ---------- +# find the pathname to the GNU or non-GNU linker +AC_DEFUN([AC_PROG_LD], +[AC_ARG_WITH([gnu-ld], + [AC_HELP_STRING([--with-gnu-ld], + [assume the C compiler uses GNU ld @<:@default=no@:>@])], + [test "$withval" = no || with_gnu_ld=yes], + [with_gnu_ld=no]) +AC_REQUIRE([LT_AC_PROG_SED])dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + AC_MSG_CHECKING([for ld used by $CC]) + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [[\\/]]* | ?:[[\\/]]*) + re_direlt='/[[^/]][[^/]]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + AC_MSG_CHECKING([for GNU ld]) +else + AC_MSG_CHECKING([for non-GNU ld]) +fi +AC_CACHE_VAL(lt_cv_path_LD, +[if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &1 /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case $host_cpu in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]'] + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +interix3*) + # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be Linux ELF. +linux*) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +nto-qnx*) + lt_cv_deplibs_check_method=unknown + ;; + +openbsd*) + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.3*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + pc) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; +esac +]) +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown +])# AC_DEPLIBS_CHECK_METHOD + + +# AC_PROG_NM +# ---------- +# find the pathname to a BSD-compatible name lister +AC_DEFUN([AC_PROG_NM], +[AC_CACHE_CHECK([for BSD-compatible nm], lt_cv_path_NM, +[if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM="$NM" +else + lt_nm_to_check="${ac_tool_prefix}nm" + if test -n "$ac_tool_prefix" && test "$build" = "$host"; then + lt_nm_to_check="$lt_nm_to_check nm" + fi + for lt_tmp_nm in $lt_nm_to_check; do + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + tmp_nm="$ac_dir/$lt_tmp_nm" + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in + */dev/null* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + ;; + esac + fi + done + IFS="$lt_save_ifs" + done + test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm +fi]) +NM="$lt_cv_path_NM" +])# AC_PROG_NM + + +# AC_CHECK_LIBM +# ------------- +# check for math library +AC_DEFUN([AC_CHECK_LIBM], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +LIBM= +case $host in +*-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*) + # These system don't have libm, or don't need it + ;; +*-ncr-sysv4.3*) + AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") + AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") + ;; +*) + AC_CHECK_LIB(m, cos, LIBM="-lm") + ;; +esac +])# AC_CHECK_LIBM + + +# AC_LIBLTDL_CONVENIENCE([DIRECTORY]) +# ----------------------------------- +# sets LIBLTDL to the link flags for the libltdl convenience library and +# LTDLINCL to the include flags for the libltdl header and adds +# --enable-ltdl-convenience to the configure arguments. Note that +# AC_CONFIG_SUBDIRS is not called here. If DIRECTORY is not provided, +# it is assumed to be `libltdl'. LIBLTDL will be prefixed with +# '${top_builddir}/' and LTDLINCL will be prefixed with '${top_srcdir}/' +# (note the single quotes!). If your package is not flat and you're not +# using automake, define top_builddir and top_srcdir appropriately in +# the Makefiles. +AC_DEFUN([AC_LIBLTDL_CONVENIENCE], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl + case $enable_ltdl_convenience in + no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;; + "") enable_ltdl_convenience=yes + ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;; + esac + LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdlc.la + LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) + # For backwards non-gettext consistent compatibility... + INCLTDL="$LTDLINCL" +])# AC_LIBLTDL_CONVENIENCE + + +# AC_LIBLTDL_INSTALLABLE([DIRECTORY]) +# ----------------------------------- +# sets LIBLTDL to the link flags for the libltdl installable library and +# LTDLINCL to the include flags for the libltdl header and adds +# --enable-ltdl-install to the configure arguments. Note that +# AC_CONFIG_SUBDIRS is not called here. If DIRECTORY is not provided, +# and an installed libltdl is not found, it is assumed to be `libltdl'. +# LIBLTDL will be prefixed with '${top_builddir}/'# and LTDLINCL with +# '${top_srcdir}/' (note the single quotes!). If your package is not +# flat and you're not using automake, define top_builddir and top_srcdir +# appropriately in the Makefiles. +# In the future, this macro may have to be called after AC_PROG_LIBTOOL. +AC_DEFUN([AC_LIBLTDL_INSTALLABLE], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl + AC_CHECK_LIB(ltdl, lt_dlinit, + [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no], + [if test x"$enable_ltdl_install" = xno; then + AC_MSG_WARN([libltdl not installed, but installation disabled]) + else + enable_ltdl_install=yes + fi + ]) + if test x"$enable_ltdl_install" = x"yes"; then + ac_configure_args="$ac_configure_args --enable-ltdl-install" + LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdl.la + LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) + else + ac_configure_args="$ac_configure_args --enable-ltdl-install=no" + LIBLTDL="-lltdl" + LTDLINCL= + fi + # For backwards non-gettext consistent compatibility... + INCLTDL="$LTDLINCL" +])# AC_LIBLTDL_INSTALLABLE + + +# AC_LIBTOOL_CXX +# -------------- +# enable support for C++ libraries +AC_DEFUN([AC_LIBTOOL_CXX], +[AC_REQUIRE([_LT_AC_LANG_CXX]) +])# AC_LIBTOOL_CXX + + +# _LT_AC_LANG_CXX +# --------------- +AC_DEFUN([_LT_AC_LANG_CXX], +[AC_REQUIRE([AC_PROG_CXX]) +AC_REQUIRE([_LT_AC_PROG_CXXCPP]) +_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}CXX]) +])# _LT_AC_LANG_CXX + +# _LT_AC_PROG_CXXCPP +# ------------------ +AC_DEFUN([_LT_AC_PROG_CXXCPP], +[ +AC_REQUIRE([AC_PROG_CXX]) +if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + AC_PROG_CXXCPP +fi +])# _LT_AC_PROG_CXXCPP + +# AC_LIBTOOL_F77 +# -------------- +# enable support for Fortran 77 libraries +AC_DEFUN([AC_LIBTOOL_F77], +[AC_REQUIRE([_LT_AC_LANG_F77]) +])# AC_LIBTOOL_F77 + + +# _LT_AC_LANG_F77 +# --------------- +AC_DEFUN([_LT_AC_LANG_F77], +[AC_REQUIRE([AC_PROG_F77]) +_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}F77]) +])# _LT_AC_LANG_F77 + + +# AC_LIBTOOL_GCJ +# -------------- +# enable support for GCJ libraries +AC_DEFUN([AC_LIBTOOL_GCJ], +[AC_REQUIRE([_LT_AC_LANG_GCJ]) +])# AC_LIBTOOL_GCJ + + +# _LT_AC_LANG_GCJ +# --------------- +AC_DEFUN([_LT_AC_LANG_GCJ], +[AC_PROVIDE_IFELSE([AC_PROG_GCJ],[], + [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],[], + [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ],[], + [ifdef([AC_PROG_GCJ],[AC_REQUIRE([AC_PROG_GCJ])], + [ifdef([A][M_PROG_GCJ],[AC_REQUIRE([A][M_PROG_GCJ])], + [AC_REQUIRE([A][C_PROG_GCJ_OR_A][M_PROG_GCJ])])])])])]) +_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}GCJ]) +])# _LT_AC_LANG_GCJ + + +# AC_LIBTOOL_RC +# ------------- +# enable support for Windows resource files +AC_DEFUN([AC_LIBTOOL_RC], +[AC_REQUIRE([LT_AC_PROG_RC]) +_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}RC]) +])# AC_LIBTOOL_RC + + +# AC_LIBTOOL_LANG_C_CONFIG +# ------------------------ +# Ensure that the configuration vars for the C compiler are +# suitably defined. Those variables are subsequently used by +# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. +AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG], [_LT_AC_LANG_C_CONFIG]) +AC_DEFUN([_LT_AC_LANG_C_CONFIG], +[lt_save_CC="$CC" +AC_LANG_PUSH(C) + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +_LT_AC_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;\n" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}\n' + +_LT_AC_SYS_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1) +AC_LIBTOOL_PROG_COMPILER_PIC($1) +AC_LIBTOOL_PROG_CC_C_O($1) +AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) +AC_LIBTOOL_PROG_LD_SHLIBS($1) +AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) +AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) +AC_LIBTOOL_SYS_LIB_STRIP +AC_LIBTOOL_DLOPEN_SELF + +# Report which library types will actually be built +AC_MSG_CHECKING([if libtool supports shared libraries]) +AC_MSG_RESULT([$can_build_shared]) + +AC_MSG_CHECKING([whether to build shared libraries]) +test "$can_build_shared" = "no" && enable_shared=no + +# On AIX, shared libraries and static libraries use the same namespace, and +# are all built from PIC. +case $host_os in +aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + +aix4* | aix5*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; +esac +AC_MSG_RESULT([$enable_shared]) + +AC_MSG_CHECKING([whether to build static libraries]) +# Make sure either enable_shared or enable_static is yes. +test "$enable_shared" = yes || enable_static=yes +AC_MSG_RESULT([$enable_static]) + +AC_LIBTOOL_CONFIG($1) + +AC_LANG_POP +CC="$lt_save_CC" +])# AC_LIBTOOL_LANG_C_CONFIG + + +# AC_LIBTOOL_LANG_CXX_CONFIG +# -------------------------- +# Ensure that the configuration vars for the C compiler are +# suitably defined. Those variables are subsequently used by +# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. +AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG], [_LT_AC_LANG_CXX_CONFIG(CXX)]) +AC_DEFUN([_LT_AC_LANG_CXX_CONFIG], +[AC_LANG_PUSH(C++) +AC_REQUIRE([AC_PROG_CXX]) +AC_REQUIRE([_LT_AC_PROG_CXXCPP]) + +_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_AC_TAGVAR(allow_undefined_flag, $1)= +_LT_AC_TAGVAR(always_export_symbols, $1)=no +_LT_AC_TAGVAR(archive_expsym_cmds, $1)= +_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_AC_TAGVAR(hardcode_direct, $1)=no +_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= +_LT_AC_TAGVAR(hardcode_libdir_separator, $1)= +_LT_AC_TAGVAR(hardcode_minus_L, $1)=no +_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported +_LT_AC_TAGVAR(hardcode_automatic, $1)=no +_LT_AC_TAGVAR(module_cmds, $1)= +_LT_AC_TAGVAR(module_expsym_cmds, $1)= +_LT_AC_TAGVAR(link_all_deplibs, $1)=unknown +_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_AC_TAGVAR(no_undefined_flag, $1)= +_LT_AC_TAGVAR(whole_archive_flag_spec, $1)= +_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Dependencies to place before and after the object being linked: +_LT_AC_TAGVAR(predep_objects, $1)= +_LT_AC_TAGVAR(postdep_objects, $1)= +_LT_AC_TAGVAR(predeps, $1)= +_LT_AC_TAGVAR(postdeps, $1)= +_LT_AC_TAGVAR(compiler_lib_search_path, $1)= + +# Source file extension for C++ test sources. +ac_ext=cpp + +# Object file extension for compiled C++ test sources. +objext=o +_LT_AC_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;\n" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }\n' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_AC_SYS_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_LD=$LD +lt_save_GCC=$GCC +GCC=$GXX +lt_save_with_gnu_ld=$with_gnu_ld +lt_save_path_LD=$lt_cv_path_LD +if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then + lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx +else + $as_unset lt_cv_prog_gnu_ld +fi +if test -n "${lt_cv_path_LDCXX+set}"; then + lt_cv_path_LD=$lt_cv_path_LDCXX +else + $as_unset lt_cv_path_LD +fi +test -z "${LDCXX+set}" || LD=$LDCXX +CC=${CXX-"c++"} +compiler=$CC +_LT_AC_TAGVAR(compiler, $1)=$CC +_LT_CC_BASENAME([$compiler]) + +# We don't want -fno-exception wen compiling C++ code, so set the +# no_builtin_flag separately +if test "$GXX" = yes; then + _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' +else + _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= +fi + +if test "$GXX" = yes; then + # Set up default GNU C++ configuration + + AC_PROG_LD + + # Check if GNU C++ uses GNU ld as the underlying linker, since the + # archiving commands below assume that GNU ld is being used. + if test "$with_gnu_ld" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + + # If archive_cmds runs LD, not CC, wlarc should be empty + # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to + # investigate it a little bit more. (MM) + wlarc='${wl}' + + # ancient GNU ld didn't support --whole-archive et. al. + if eval "`$CC -print-prog-name=ld` --help 2>&1" | \ + grep 'no-whole-archive' > /dev/null; then + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + with_gnu_ld=no + wlarc= + + # A generic and very simple default shared library creation + # command for GNU C++ for the case where it uses the native + # linker, instead of GNU ld. If possible, this setting should + # overridden to take advantage of the native linker features on + # the platform it is being used on. + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + fi + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + +else + GXX=no + with_gnu_ld=no + wlarc= +fi + +# PORTME: fill in a description of your system's C++ link characteristics +AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) +_LT_AC_TAGVAR(ld_shlibs, $1)=yes +case $host_os in + aix3*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*) + for ld_flag in $LDFLAGS; do + case $ld_flag in + *-brtl*) + aix_use_runtimelinking=yes + break + ;; + esac + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_AC_TAGVAR(archive_cmds, $1)='' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + + if test "$GXX" = yes; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + else + # We have old collect2 + _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= + fi + ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + _LT_AC_TAGVAR(always_export_symbols, $1)=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok' + # Determine the default libpath from the value encoded in an empty executable. + _LT_AC_SYS_LIBPATH_AIX + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' + _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + _LT_AC_SYS_LIBPATH_AIX + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' + # Exported symbols can be pulled into shared objects from archives + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes + # This is similar to how AIX traditionally builds its shared libraries. + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + chorus*) + case $cc_basename in + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_AC_TAGVAR(always_export_symbols, $1)=no + _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + darwin* | rhapsody*) + case $host_os in + rhapsody* | darwin1.[[012]]) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[[012]]) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; + esac + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_automatic, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + + if test "$GXX" = yes ; then + lt_int_apple_cc_single_mod=no + output_verbose_link_cmd='echo' + if $CC -dumpspecs 2>&1 | $EGREP 'single_module' >/dev/null ; then + lt_int_apple_cc_single_mod=yes + fi + if test "X$lt_int_apple_cc_single_mod" = Xyes ; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + fi + _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + if test "X$lt_int_apple_cc_single_mod" = Xyes ; then + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + fi + _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' + _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + fi + ;; + + dgux*) + case $cc_basename in + ec++*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + ghcx*) + # Green Hills C++ Compiler + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + freebsd[[12]]*) + # C++ shared libraries reported to be fairly broken before switch to ELF + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + freebsd-elf*) + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + ;; + freebsd* | kfreebsd*-gnu | dragonfly*) + # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF + # conventions + _LT_AC_TAGVAR(ld_shlibs, $1)=yes + ;; + gnu*) + ;; + hpux9*) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + aCC*) + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[[-]]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + hpux10*|hpux11*) + if test $with_gnu_ld = no; then + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + case $host_cpu in + hppa*64*|ia64*) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' + ;; + *) + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + ;; + esac + fi + case $host_cpu in + hppa*64*|ia64*) + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + *) + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + esac + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + aCC*) + case $host_cpu in + hppa*64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes; then + if test $with_gnu_ld = no; then + case $host_cpu in + hppa*64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + fi + else + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + interix3*) + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + irix5* | irix6*) + case $cc_basename in + CC*) + # SGI C++ + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + + # Archives containing C++ object files must be created using + # "CC -ar", where "CC" is the IRIX C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' + ;; + *) + if test "$GXX" = yes; then + if test "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib' + fi + fi + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + ;; + esac + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + linux*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath,$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' + ;; + icpc*) + # Intel C++ + with_gnu_ld=yes + # version 8.0 and above of icpc choke on multiply defined symbols + # if we add $predep_objects and $postdep_objects, however 7.1 and + # earlier do not add the objects themselves. + case `$CC -V 2>&1` in + *"Version 7."*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 8.0 or newer + tmp_idyn= + case $host_cpu in + ia64*) tmp_idyn=' -i_dynamic';; + esac + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + ;; + pgCC*) + # Portland Group C++ compiler + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + ;; + cxx*) + # Compaq C++ + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' + + runpath_var=LD_RUN_PATH + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + esac + ;; + lynxos*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + m88k*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + mvs*) + case $cc_basename in + cxx*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' + wlarc= + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + fi + # Workaround some broken pre-1.5 toolchains + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' + ;; + openbsd2*) + # C++ shared libraries are fairly broken + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + openbsd*) + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + fi + output_verbose_link_cmd='echo' + ;; + osf3*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' + + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + cxx*) + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + + else + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + osf4* | osf5*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Archives containing C++ object files must be created using + # the KAI C++ compiler. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + cxx*) + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ + echo "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~ + $rm $lib.exp' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + + else + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + psos*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + lcc*) + # Lucid + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + solaris*) + case $cc_basename in + CC*) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_AC_TAGVAR(archive_cmds_need_lc,$1)=yes + _LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + # The C++ compiler is used as linker so we must use $wl + # flag to pass the commands to the underlying system + # linker. We must also pass each convience library through + # to the system linker between allextract/defaultextract. + # The C++ compiler will combine linker options so we + # cannot just pass the convience library names through + # without $wl. + # Supported since Solaris 2.6 (maybe 2.5.1?) + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' + ;; + esac + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + + output_verbose_link_cmd='echo' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' + ;; + gcx*) + # Green Hills C++ Compiler + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + + # The C++ compiler must be used to create the archive. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' + ;; + *) + # GNU C++ compiler with Solaris linker + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' + if $CC --version | grep -v '^2\.7' > /dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" + else + # g++ 2.7 appears to require `-G' NOT `-shared' on this + # platform. + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" + fi + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' + fi + ;; + esac + ;; + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) + _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + # For security reasons, it is highly recommended that you always + # use absolute paths for naming shared libraries, and exclude the + # DT_RUNPATH tag from executables and libraries. But doing so + # requires that you compile everything twice, which is a pain. + # So that behaviour is only enabled if SCOABSPATH is set to a + # non-empty value in the environment. Most likely only useful for + # creating official distributions of packages. + # This is a hack until libtool officially supports absolute path + # names for shared libraries. + _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + vxworks*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; +esac +AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)]) +test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no + +_LT_AC_TAGVAR(GCC, $1)="$GXX" +_LT_AC_TAGVAR(LD, $1)="$LD" + +AC_LIBTOOL_POSTDEP_PREDEP($1) +AC_LIBTOOL_PROG_COMPILER_PIC($1) +AC_LIBTOOL_PROG_CC_C_O($1) +AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) +AC_LIBTOOL_PROG_LD_SHLIBS($1) +AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) +AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) + +AC_LIBTOOL_CONFIG($1) + +AC_LANG_POP +CC=$lt_save_CC +LDCXX=$LD +LD=$lt_save_LD +GCC=$lt_save_GCC +with_gnu_ldcxx=$with_gnu_ld +with_gnu_ld=$lt_save_with_gnu_ld +lt_cv_path_LDCXX=$lt_cv_path_LD +lt_cv_path_LD=$lt_save_path_LD +lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld +lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld +])# AC_LIBTOOL_LANG_CXX_CONFIG + +# AC_LIBTOOL_POSTDEP_PREDEP([TAGNAME]) +# ------------------------------------ +# Figure out "hidden" library dependencies from verbose +# compiler output when linking a shared library. +# Parse the compiler output and extract the necessary +# objects, libraries and library flags. +AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP],[ +dnl we can't use the lt_simple_compile_test_code here, +dnl because it contains code intended for an executable, +dnl not a library. It's possible we should let each +dnl tag define a new lt_????_link_test_code variable, +dnl but it's only used here... +ifelse([$1],[],[cat > conftest.$ac_ext < conftest.$ac_ext < conftest.$ac_ext < conftest.$ac_ext <> "$cfgfile" +ifelse([$1], [], +[#! $SHELL + +# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) +# NOTE: Changes made to this file will be lost: look at ltmain.sh. +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 +# Free Software Foundation, Inc. +# +# This file is part of GNU Libtool: +# Originally by Gordon Matzigkeit , 1996 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# A sed program that does not truncate output. +SED=$lt_SED + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="$SED -e 1s/^X//" + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +# The names of the tagged configurations supported by this script. +available_tags= + +# ### BEGIN LIBTOOL CONFIG], +[# ### BEGIN LIBTOOL TAG CONFIG: $tagname]) + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$_LT_AC_TAGVAR(archive_cmds_need_lc, $1) + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1) + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# LTCC compiler flags. +LTCFLAGS=$lt_LTCFLAGS + +# A language-specific compiler. +CC=$lt_[]_LT_AC_TAGVAR(compiler, $1) + +# Is the compiler the GNU C compiler? +with_gcc=$_LT_AC_TAGVAR(GCC, $1) + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_[]_LT_AC_TAGVAR(LD, $1) + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_[]_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1) + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_static, $1) + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_[]_LT_AC_TAGVAR(export_dynamic_flag_spec, $1) + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_[]_LT_AC_TAGVAR(whole_archive_flag_spec, $1) + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_[]_LT_AC_TAGVAR(thread_safe_flag_spec, $1) + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_cmds, $1) +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_new_cmds, $1) + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) + +# Commands used to build and install a shared archive. +archive_cmds=$lt_[]_LT_AC_TAGVAR(archive_cmds, $1) +archive_expsym_cmds=$lt_[]_LT_AC_TAGVAR(archive_expsym_cmds, $1) +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_[]_LT_AC_TAGVAR(module_cmds, $1) +module_expsym_cmds=$lt_[]_LT_AC_TAGVAR(module_expsym_cmds, $1) + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=$lt_[]_LT_AC_TAGVAR(predep_objects, $1) + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_[]_LT_AC_TAGVAR(postdep_objects, $1) + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_[]_LT_AC_TAGVAR(predeps, $1) + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_[]_LT_AC_TAGVAR(postdeps, $1) + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_[]_LT_AC_TAGVAR(compiler_lib_search_path, $1) + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_[]_LT_AC_TAGVAR(allow_undefined_flag, $1) + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_[]_LT_AC_TAGVAR(no_undefined_flag, $1) + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$_LT_AC_TAGVAR(hardcode_action, $1) + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1) + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_separator, $1) + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$_LT_AC_TAGVAR(hardcode_direct, $1) + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$_LT_AC_TAGVAR(hardcode_minus_L, $1) + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1) + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$_LT_AC_TAGVAR(hardcode_automatic, $1) + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$_LT_AC_TAGVAR(link_all_deplibs, $1) + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path="$_LT_AC_TAGVAR(fix_srcfile_path, $1)" + +# Set to yes if exported symbols are required. +always_export_symbols=$_LT_AC_TAGVAR(always_export_symbols, $1) + +# The commands to list exported symbols. +export_symbols_cmds=$lt_[]_LT_AC_TAGVAR(export_symbols_cmds, $1) + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_[]_LT_AC_TAGVAR(exclude_expsyms, $1) + +# Symbols that must always be exported. +include_expsyms=$lt_[]_LT_AC_TAGVAR(include_expsyms, $1) + +ifelse([$1],[], +[# ### END LIBTOOL CONFIG], +[# ### END LIBTOOL TAG CONFIG: $tagname]) + +__EOF__ + +ifelse([$1],[], [ + case $host_os in + aix3*) + cat <<\EOF >> "$cfgfile" + +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +EOF + ;; + esac + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1) + + mv -f "$cfgfile" "$ofile" || \ + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" +]) +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +fi +])# AC_LIBTOOL_CONFIG + + +# AC_LIBTOOL_PROG_COMPILER_NO_RTTI([TAGNAME]) +# ------------------------------------------- +AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], +[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl + +_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= + +if test "$GCC" = yes; then + _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' + + AC_LIBTOOL_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], + lt_cv_prog_compiler_rtti_exceptions, + [-fno-rtti -fno-exceptions], [], + [_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) +fi +])# AC_LIBTOOL_PROG_COMPILER_NO_RTTI + + +# AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE +# --------------------------------- +AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], +[AC_REQUIRE([AC_CANONICAL_HOST]) +AC_REQUIRE([AC_PROG_NM]) +AC_REQUIRE([AC_OBJEXT]) +# Check for command to grab the raw symbol name followed by C symbol from nm. +AC_MSG_CHECKING([command to parse $NM output from $compiler object]) +AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], +[ +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[[BCDEGRST]]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' + +# Transform an extracted symbol line into a proper C declaration +lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[[BCDT]]' + ;; +cygwin* | mingw* | pw32*) + symcode='[[ABCDGISTW]]' + ;; +hpux*) # Its linker distinguishes data from code symbols + if test "$host_cpu" = ia64; then + symcode='[[ABCDEGRST]]' + fi + lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + ;; +linux*) + if test "$host_cpu" = ia64; then + symcode='[[ABCDGIRSTW]]' + lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + fi + ;; +irix* | nonstopux*) + symcode='[[BCDEGRST]]' + ;; +osf*) + symcode='[[BCDEGQRST]]' + ;; +solaris*) + symcode='[[BDRT]]' + ;; +sco3.2v5*) + symcode='[[DT]]' + ;; +sysv4.2uw2*) + symcode='[[DT]]' + ;; +sysv5* | sco5v6* | unixware* | OpenUNIX*) + symcode='[[ABDT]]' + ;; +sysv4) + symcode='[[DFNSTU]]' + ;; +esac + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[[ABCDGIRSTW]]' ;; +esac + +# Try without a prefix undercore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext < $nlist) && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if grep ' nm_test_var$' "$nlist" >/dev/null; then + if grep ' nm_test_func$' "$nlist" >/dev/null; then + cat < conftest.$ac_ext +#ifdef __cplusplus +extern "C" { +#endif + +EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext' + + cat <> conftest.$ac_ext +#if defined (__STDC__) && __STDC__ +# define lt_ptr_t void * +#else +# define lt_ptr_t char * +# define const +#endif + +/* The mapping between symbol names and symbols. */ +const struct { + const char *name; + lt_ptr_t address; +} +lt_preloaded_symbols[[]] = +{ +EOF + $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext + cat <<\EOF >> conftest.$ac_ext + {0, (lt_ptr_t) 0} +}; + +#ifdef __cplusplus +} +#endif +EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_save_LIBS="$LIBS" + lt_save_CFLAGS="$CFLAGS" + LIBS="conftstm.$ac_objext" + CFLAGS="$CFLAGS$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" + if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then + pipe_works=yes + fi + LIBS="$lt_save_LIBS" + CFLAGS="$lt_save_CFLAGS" + else + echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD + fi + else + echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD + cat conftest.$ac_ext >&5 + fi + rm -f conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test "$pipe_works" = yes; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done +]) +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + AC_MSG_RESULT(failed) +else + AC_MSG_RESULT(ok) +fi +]) # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE + + +# AC_LIBTOOL_PROG_COMPILER_PIC([TAGNAME]) +# --------------------------------------- +AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC], +[_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)= +_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= +_LT_AC_TAGVAR(lt_prog_compiler_static, $1)= + +AC_MSG_CHECKING([for $compiler option to produce PIC]) + ifelse([$1],[CXX],[ + # C++ specific cases for pic, static, wl, etc. + if test "$GXX" = yes; then + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + mingw* | os2* | pw32*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + *djgpp*) + # DJGPP does not support shared libraries at all + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + interix3*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + sysv4*MP*) + if test -d /usr/nec; then + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + else + case $host_os in + aix4* | aix5*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + chorus*) + case $cc_basename in + cxch68*) + # Green Hills C++ Compiler + # _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" + ;; + esac + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon' + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + ;; + esac + ;; + dgux*) + case $cc_basename in + ec++*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + ghcx*) + # Green Hills C++ Compiler + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + freebsd* | kfreebsd*-gnu | dragonfly*) + # FreeBSD uses GNU C++ + ;; + hpux9* | hpux10* | hpux11*) + case $cc_basename in + CC*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + if test "$host_cpu" != ia64; then + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + fi + ;; + aCC*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + ;; + *) + ;; + esac + ;; + interix*) + # This is c89, which is MS Visual C++ (no shared libs) + # Anyone wants to do a port? + ;; + irix5* | irix6* | nonstopux*) + case $cc_basename in + CC*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + # CC pic flag -KPIC is the default. + ;; + *) + ;; + esac + ;; + linux*) + case $cc_basename in + KCC*) + # KAI C++ Compiler + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + icpc* | ecpc*) + # Intel C++ + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + pgCC*) + # Portland Group C++ compiler. + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + cxx*) + # Compaq C++ + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + *) + ;; + esac + ;; + lynxos*) + ;; + m88k*) + ;; + mvs*) + case $cc_basename in + cxx*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' + ;; + *) + ;; + esac + ;; + netbsd*) + ;; + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + ;; + RCC*) + # Rational C++ 2.4.1 + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + cxx*) + # Digital/Compaq C++ + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + *) + ;; + esac + ;; + psos*) + ;; + solaris*) + case $cc_basename in + CC*) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + gcx*) + # Green Hills C++ Compiler + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + ;; + *) + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + lcc*) + # Lucid + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + *) + ;; + esac + ;; + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + case $cc_basename in + CC*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + esac + ;; + vxworks*) + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +], +[ + if test "$GCC" = yes; then + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + + beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + + interix3*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + enable_shared=no + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon' + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + ;; + esac + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' + ;; + + hpux9* | hpux10* | hpux11*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC (with -KPIC) is the default. + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + newsos6) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + linux*) + case $cc_basename in + icc* | ecc*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + pgcc* | pgf77* | pgf90* | pgf95*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + ccc*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All Alpha code is PIC. + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + esac + ;; + + osf3* | osf4* | osf5*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All OSF/1 code is PIC. + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + solaris*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + case $cc_basename in + f77* | f90* | f95*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; + *) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; + esac + ;; + + sunos4*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + unicos*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + + uts4*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + *) + _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +]) +AC_MSG_RESULT([$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)]) + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)"; then + AC_LIBTOOL_COMPILER_OPTION([if $compiler PIC flag $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) works], + _LT_AC_TAGVAR(lt_prog_compiler_pic_works, $1), + [$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])], [], + [case $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) in + "" | " "*) ;; + *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)" ;; + esac], + [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) +fi +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])" + ;; +esac + +# +# Check to make sure the static flag actually works. +# +wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_AC_TAGVAR(lt_prog_compiler_static, $1)\" +AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], + _LT_AC_TAGVAR(lt_prog_compiler_static_works, $1), + $lt_tmp_static_flag, + [], + [_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=]) +]) + + +# AC_LIBTOOL_PROG_LD_SHLIBS([TAGNAME]) +# ------------------------------------ +# See if the linker supports building shared libraries. +AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS], +[AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) +ifelse([$1],[CXX],[ + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + case $host_os in + aix4* | aix5*) + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' + else + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' + fi + ;; + pw32*) + _LT_AC_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" + ;; + cygwin* | mingw*) + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]] /s/.* \([[^ ]]*\)/\1 DATA/;/^.* __nm__/s/^.* __nm__\([[^ ]]*\) [[^ ]]*/\1 DATA/;/^I /d;/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols' + ;; + *) + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + ;; + esac +],[ + runpath_var= + _LT_AC_TAGVAR(allow_undefined_flag, $1)= + _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no + _LT_AC_TAGVAR(archive_cmds, $1)= + _LT_AC_TAGVAR(archive_expsym_cmds, $1)= + _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)= + _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1)= + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= + _LT_AC_TAGVAR(thread_safe_flag_spec, $1)= + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_minus_L, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + _LT_AC_TAGVAR(link_all_deplibs, $1)=unknown + _LT_AC_TAGVAR(hardcode_automatic, $1)=no + _LT_AC_TAGVAR(module_cmds, $1)= + _LT_AC_TAGVAR(module_expsym_cmds, $1)= + _LT_AC_TAGVAR(always_export_symbols, $1)=no + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + _LT_AC_TAGVAR(include_expsyms, $1)= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + _LT_AC_TAGVAR(exclude_expsyms, $1)="_GLOBAL_OFFSET_TABLE_" + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + extract_expsyms_cmds= + # Just being paranoid about ensuring that cc_basename is set. + _LT_CC_BASENAME([$compiler]) + case $host_os in + cygwin* | mingw* | pw32*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd*) + with_gnu_ld=no + ;; + esac + + _LT_AC_TAGVAR(ld_shlibs, $1)=yes + if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= + fi + supports_anon_versioning=no + case `$LD -v 2>/dev/null` in + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix3* | aix4* | aix5*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + _LT_AC_TAGVAR(ld_shlibs, $1)=no + cat <&2 + +*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to modify your PATH +*** so that a non-GNU linker is found, and then restart. + +EOF + fi + ;; + + amigaos*) + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + + # Samuel A. Falvo II reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we can't use + # them. + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_AC_TAGVAR(always_export_symbols, $1)=no + _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols' + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + interix3*) + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + linux*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + tmp_addflag= + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + esac + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test $supports_anon_versioning = yes; then + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + $echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then + _LT_AC_TAGVAR(ld_shlibs, $1)=no + cat <&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +EOF + elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) + _LT_AC_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + sunos4*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + + if test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no; then + runpath_var= + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_AC_TAGVAR(always_export_symbols, $1)=yes + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported + fi + ;; + + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' + else + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_AC_TAGVAR(archive_cmds, $1)='' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + + if test "$GCC" = yes; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + else + # We have old collect2 + _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= + fi + ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + _LT_AC_TAGVAR(always_export_symbols, $1)=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok' + # Determine the default libpath from the value encoded in an empty executable. + _LT_AC_SYS_LIBPATH_AIX + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' + _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + _LT_AC_SYS_LIBPATH_AIX + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' + # Exported symbols can be pulled into shared objects from archives + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes + # This is similar to how AIX traditionally builds its shared libraries. + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + # see comment about different semantics on the GNU ld section + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + + bsdi[[45]]*) + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic + ;; + + cygwin* | mingw* | pw32*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='true' + # FIXME: Should let the user specify the lib program. + _LT_AC_TAGVAR(old_archive_cmds, $1)='lib /OUT:$oldlib$oldobjs$old_deplibs' + _LT_AC_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`' + _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + + darwin* | rhapsody*) + case $host_os in + rhapsody* | darwin1.[[012]]) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[[012]]) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; + esac + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_automatic, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + if test "$GCC" = yes ; then + output_verbose_link_cmd='echo' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' + _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + fi + ;; + + dgux*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + freebsd1*) + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | kfreebsd*-gnu | dragonfly*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + hpux9*) + if test "$GCC" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + ;; + + hpux10*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + fi + ;; + + hpux11*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + fi + if test "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + case $host_cpu in + hppa*64*|ia64*) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + *) + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir' + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + newsos6) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + openbsd*) + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + else + case $host_os in + openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + ;; + esac + fi + ;; + + os2*) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_AC_TAGVAR(archive_cmds, $1)='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + else + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ + $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' + + # Both c and cxx compiler support -rpath directly + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + fi + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + solaris*) + _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text' + if test "$GCC" = yes; then + wlarc='${wl}' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' + else + wlarc='' + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + # The compiler driver will combine linker options so we + # cannot just pass the convience library names through + # without $wl, iff we do not link with $LD. + # Luckily, gcc supports the same syntax we need for Sun Studio. + # Supported since Solaris 2.6 (maybe 2.5.1?) + case $wlarc in + '') + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;; + *) + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;; + esac ;; + esac + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4) + case $host_vendor in + sni) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' + _LT_AC_TAGVAR(hardcode_direct, $1)=no + ;; + motorola) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4.3*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + _LT_AC_TAGVAR(ld_shlibs, $1)=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7*) + _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + fi +]) +AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)]) +test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no + +# +# Do we need to explicitly link libc? +# +case "x$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)" in +x|xyes) + # Assume -lc should be added + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $_LT_AC_TAGVAR(archive_cmds, $1) in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + AC_MSG_CHECKING([whether -lc should be explicitly linked in]) + $rm conftest* + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + if AC_TRY_EVAL(ac_compile) 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) + pic_flag=$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$_LT_AC_TAGVAR(allow_undefined_flag, $1) + _LT_AC_TAGVAR(allow_undefined_flag, $1)= + if AC_TRY_EVAL(_LT_AC_TAGVAR(archive_cmds, $1) 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) + then + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + else + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes + fi + _LT_AC_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $rm conftest* + AC_MSG_RESULT([$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)]) + ;; + esac + fi + ;; +esac +])# AC_LIBTOOL_PROG_LD_SHLIBS + + +# _LT_AC_FILE_LTDLL_C +# ------------------- +# Be careful that the start marker always follows a newline. +AC_DEFUN([_LT_AC_FILE_LTDLL_C], [ +# /* ltdll.c starts here */ +# #define WIN32_LEAN_AND_MEAN +# #include +# #undef WIN32_LEAN_AND_MEAN +# #include +# +# #ifndef __CYGWIN__ +# # ifdef __CYGWIN32__ +# # define __CYGWIN__ __CYGWIN32__ +# # endif +# #endif +# +# #ifdef __cplusplus +# extern "C" { +# #endif +# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved); +# #ifdef __cplusplus +# } +# #endif +# +# #ifdef __CYGWIN__ +# #include +# DECLARE_CYGWIN_DLL( DllMain ); +# #endif +# HINSTANCE __hDllInstance_base; +# +# BOOL APIENTRY +# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved) +# { +# __hDllInstance_base = hInst; +# return TRUE; +# } +# /* ltdll.c ends here */ +])# _LT_AC_FILE_LTDLL_C + + +# _LT_AC_TAGVAR(VARNAME, [TAGNAME]) +# --------------------------------- +AC_DEFUN([_LT_AC_TAGVAR], [ifelse([$2], [], [$1], [$1_$2])]) + + +# old names +AC_DEFUN([AM_PROG_LIBTOOL], [AC_PROG_LIBTOOL]) +AC_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) +AC_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) +AC_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) +AC_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) +AC_DEFUN([AM_PROG_LD], [AC_PROG_LD]) +AC_DEFUN([AM_PROG_NM], [AC_PROG_NM]) + +# This is just to silence aclocal about the macro not being used +ifelse([AC_DISABLE_FAST_INSTALL]) + +AC_DEFUN([LT_AC_PROG_GCJ], +[AC_CHECK_TOOL(GCJ, gcj, no) + test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" + AC_SUBST(GCJFLAGS) +]) + +AC_DEFUN([LT_AC_PROG_RC], +[AC_CHECK_TOOL(RC, windres, no) +]) + +# NOTE: This macro has been submitted for inclusion into # +# GNU Autoconf as AC_PROG_SED. When it is available in # +# a released version of Autoconf we should remove this # +# macro and use it instead. # +# LT_AC_PROG_SED +# -------------- +# Check for a fully-functional sed program, that truncates +# as few characters as possible. Prefer GNU sed if found. +AC_DEFUN([LT_AC_PROG_SED], +[AC_MSG_CHECKING([for a sed that does not truncate output]) +AC_CACHE_VAL(lt_cv_path_SED, +[# Loop through the user's path and test for sed and gsed. +# Then use that list of sed's as ones to test for truncation. +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for lt_ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then + lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" + fi + done + done +done +lt_ac_max=0 +lt_ac_count=0 +# Add /usr/xpg4/bin/sed as it is typically found on Solaris +# along with /bin/sed that truncates output. +for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do + test ! -f $lt_ac_sed && continue + cat /dev/null > conftest.in + lt_ac_count=0 + echo $ECHO_N "0123456789$ECHO_C" >conftest.in + # Check for GNU sed and select it if it is found. + if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then + lt_cv_path_SED=$lt_ac_sed + break + fi + while true; do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo >>conftest.nl + $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break + cmp -s conftest.out conftest.nl || break + # 10000 chars as input seems more than enough + test $lt_ac_count -gt 10 && break + lt_ac_count=`expr $lt_ac_count + 1` + if test $lt_ac_count -gt $lt_ac_max; then + lt_ac_max=$lt_ac_count + lt_cv_path_SED=$lt_ac_sed + fi + done +done +]) +SED=$lt_cv_path_SED +AC_MSG_RESULT([$SED]) +]) + +# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- +# +# Copyright © 2004 Scott James Remnant . +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# PKG_PROG_PKG_CONFIG([MIN-VERSION]) +# ---------------------------------- +AC_DEFUN([PKG_PROG_PKG_CONFIG], +[m4_pattern_forbid([^_?PKG_[A-Z_]+$]) +m4_pattern_allow([^PKG_CONFIG(_PATH)?$]) +AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])dnl +if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then + AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) +fi +if test -n "$PKG_CONFIG"; then + _pkg_min_version=m4_default([$1], [0.9.0]) + AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) + if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + PKG_CONFIG="" + fi + +fi[]dnl +])# PKG_PROG_PKG_CONFIG + +# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +# +# Check to see whether a particular set of modules exists. Similar +# to PKG_CHECK_MODULES(), but does not set variables or print errors. +# +# +# Similar to PKG_CHECK_MODULES, make sure that the first instance of +# this or PKG_CHECK_MODULES is called, or make sure to call +# PKG_CHECK_EXISTS manually +# -------------------------------------------------------------- +AC_DEFUN([PKG_CHECK_EXISTS], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +if test -n "$PKG_CONFIG" && \ + AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then + m4_ifval([$2], [$2], [:]) +m4_ifvaln([$3], [else + $3])dnl +fi]) + + +# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) +# --------------------------------------------- +m4_define([_PKG_CONFIG], +[if test -n "$PKG_CONFIG"; then + if test -n "$$1"; then + pkg_cv_[]$1="$$1" + else + PKG_CHECK_EXISTS([$3], + [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`], + [pkg_failed=yes]) + fi +else + pkg_failed=untried +fi[]dnl +])# _PKG_CONFIG + +# _PKG_SHORT_ERRORS_SUPPORTED +# ----------------------------- +AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG]) +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi[]dnl +])# _PKG_SHORT_ERRORS_SUPPORTED + + +# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], +# [ACTION-IF-NOT-FOUND]) +# +# +# Note that if there is a possibility the first call to +# PKG_CHECK_MODULES might not happen, you should be sure to include an +# explicit call to PKG_PROG_PKG_CONFIG in your configure.ac +# +# +# -------------------------------------------------------------- +AC_DEFUN([PKG_CHECK_MODULES], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl +AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl + +pkg_failed=no +AC_MSG_CHECKING([for $1]) + +_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) +_PKG_CONFIG([$1][_LIBS], [libs], [$2]) + +m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS +and $1[]_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details.]) + +if test $pkg_failed = yes; then + _PKG_SHORT_ERRORS_SUPPORTED + if test $_pkg_short_errors_supported = yes; then + $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "$2"` + else + $1[]_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$2"` + fi + # Put the nasty error message in config.log where it belongs + echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD + + ifelse([$4], , [AC_MSG_ERROR(dnl +[Package requirements ($2) were not met: + +$$1_PKG_ERRORS + +Consider adjusting the PKG_CONFIG_PATH environment variable if you +installed software in a non-standard prefix. + +_PKG_TEXT +])], + [AC_MSG_RESULT([no]) + $4]) +elif test $pkg_failed = untried; then + ifelse([$4], , [AC_MSG_FAILURE(dnl +[The pkg-config script could not be found or is too old. Make sure it +is in your PATH or set the PKG_CONFIG environment variable to the full +path to pkg-config. + +_PKG_TEXT + +To get pkg-config, see .])], + [$4]) +else + $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS + $1[]_LIBS=$pkg_cv_[]$1[]_LIBS + AC_MSG_RESULT([yes]) + ifelse([$3], , :, [$3]) +fi[]dnl +])# PKG_CHECK_MODULES + +# Copyright (C) 2002, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_AUTOMAKE_VERSION(VERSION) +# ---------------------------- +# Automake X.Y traces this macro to ensure aclocal.m4 has been +# generated from the m4 files accompanying Automake X.Y. +AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version="1.9"]) + +# AM_SET_CURRENT_AUTOMAKE_VERSION +# ------------------------------- +# Call AM_AUTOMAKE_VERSION so it can be traced. +# This function is AC_REQUIREd by AC_INIT_AUTOMAKE. +AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], + [AM_AUTOMAKE_VERSION([1.9.6])]) + +# AM_AUX_DIR_EXPAND -*- Autoconf -*- + +# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets +# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to +# `$srcdir', `$srcdir/..', or `$srcdir/../..'. +# +# Of course, Automake must honor this variable whenever it calls a +# tool from the auxiliary directory. The problem is that $srcdir (and +# therefore $ac_aux_dir as well) can be either absolute or relative, +# depending on how configure is run. This is pretty annoying, since +# it makes $ac_aux_dir quite unusable in subdirectories: in the top +# source directory, any form will work fine, but in subdirectories a +# relative path needs to be adjusted first. +# +# $ac_aux_dir/missing +# fails when called from a subdirectory if $ac_aux_dir is relative +# $top_srcdir/$ac_aux_dir/missing +# fails if $ac_aux_dir is absolute, +# fails when called from a subdirectory in a VPATH build with +# a relative $ac_aux_dir +# +# The reason of the latter failure is that $top_srcdir and $ac_aux_dir +# are both prefixed by $srcdir. In an in-source build this is usually +# harmless because $srcdir is `.', but things will broke when you +# start a VPATH build or use an absolute $srcdir. +# +# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, +# iff we strip the leading $srcdir from $ac_aux_dir. That would be: +# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` +# and then we would define $MISSING as +# MISSING="\${SHELL} $am_aux_dir/missing" +# This will work as long as MISSING is not called from configure, because +# unfortunately $(top_srcdir) has no meaning in configure. +# However there are other variables, like CC, which are often used in +# configure, and could therefore not use this "fixed" $ac_aux_dir. +# +# Another solution, used here, is to always expand $ac_aux_dir to an +# absolute PATH. The drawback is that using absolute paths prevent a +# configured tree to be moved without reconfiguration. + +AC_DEFUN([AM_AUX_DIR_EXPAND], +[dnl Rely on autoconf to set up CDPATH properly. +AC_PREREQ([2.50])dnl +# expand $ac_aux_dir to an absolute path +am_aux_dir=`cd $ac_aux_dir && pwd` +]) + +# AM_CONDITIONAL -*- Autoconf -*- + +# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 7 + +# AM_CONDITIONAL(NAME, SHELL-CONDITION) +# ------------------------------------- +# Define a conditional. +AC_DEFUN([AM_CONDITIONAL], +[AC_PREREQ(2.52)dnl + ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], + [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl +AC_SUBST([$1_TRUE]) +AC_SUBST([$1_FALSE]) +if $2; then + $1_TRUE= + $1_FALSE='#' +else + $1_TRUE='#' + $1_FALSE= +fi +AC_CONFIG_COMMANDS_PRE( +[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then + AC_MSG_ERROR([[conditional "$1" was never defined. +Usually this means the macro was only invoked conditionally.]]) +fi])]) + + +# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 8 + +# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be +# written in clear, in which case automake, when reading aclocal.m4, +# will think it sees a *use*, and therefore will trigger all it's +# C support machinery. Also note that it means that autoscan, seeing +# CC etc. in the Makefile, will ask for an AC_PROG_CC use... + + +# _AM_DEPENDENCIES(NAME) +# ---------------------- +# See how the compiler implements dependency checking. +# NAME is "CC", "CXX", "GCJ", or "OBJC". +# We try a few techniques and use that to set a single cache variable. +# +# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was +# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular +# dependency, and given that the user is not expected to run this macro, +# just rely on AC_PROG_CC. +AC_DEFUN([_AM_DEPENDENCIES], +[AC_REQUIRE([AM_SET_DEPDIR])dnl +AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl +AC_REQUIRE([AM_MAKE_INCLUDE])dnl +AC_REQUIRE([AM_DEP_TRACK])dnl + +ifelse([$1], CC, [depcc="$CC" am_compiler_list=], + [$1], CXX, [depcc="$CXX" am_compiler_list=], + [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], + [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], + [depcc="$$1" am_compiler_list=]) + +AC_CACHE_CHECK([dependency style of $depcc], + [am_cv_$1_dependencies_compiler_type], +[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_$1_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` + fi + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + case $depmode in + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + none) break ;; + esac + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. + if depmode=$depmode \ + source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_$1_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_$1_dependencies_compiler_type=none +fi +]) +AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) +AM_CONDITIONAL([am__fastdep$1], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) +]) + + +# AM_SET_DEPDIR +# ------------- +# Choose a directory name for dependency files. +# This macro is AC_REQUIREd in _AM_DEPENDENCIES +AC_DEFUN([AM_SET_DEPDIR], +[AC_REQUIRE([AM_SET_LEADING_DOT])dnl +AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl +]) + + +# AM_DEP_TRACK +# ------------ +AC_DEFUN([AM_DEP_TRACK], +[AC_ARG_ENABLE(dependency-tracking, +[ --disable-dependency-tracking speeds up one-time build + --enable-dependency-tracking do not reject slow dependency extractors]) +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' +fi +AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) +AC_SUBST([AMDEPBACKSLASH]) +]) + +# Generate code to set up dependency tracking. -*- Autoconf -*- + +# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +#serial 3 + +# _AM_OUTPUT_DEPENDENCY_COMMANDS +# ------------------------------ +AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], +[for mf in $CONFIG_FILES; do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named `Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # So let's grep whole file. + if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then + dirpart=`AS_DIRNAME("$mf")` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running `make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n 's/^U = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`AS_DIRNAME(["$file"])` + AS_MKDIR_P([$dirpart/$fdir]) + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done +done +])# _AM_OUTPUT_DEPENDENCY_COMMANDS + + +# AM_OUTPUT_DEPENDENCY_COMMANDS +# ----------------------------- +# This macro should only be invoked once -- use via AC_REQUIRE. +# +# This code is only required when automatic dependency tracking +# is enabled. FIXME. This creates each `.P' file that we will +# need in order to bootstrap the dependency handling code. +AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], +[AC_CONFIG_COMMANDS([depfiles], + [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], + [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) +]) + +# Do all the work for Automake. -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 12 + +# This macro actually does too much. Some checks are only needed if +# your package does certain things. But this isn't really a big deal. + +# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) +# AM_INIT_AUTOMAKE([OPTIONS]) +# ----------------------------------------------- +# The call with PACKAGE and VERSION arguments is the old style +# call (pre autoconf-2.50), which is being phased out. PACKAGE +# and VERSION should now be passed to AC_INIT and removed from +# the call to AM_INIT_AUTOMAKE. +# We support both call styles for the transition. After +# the next Automake release, Autoconf can make the AC_INIT +# arguments mandatory, and then we can depend on a new Autoconf +# release and drop the old call support. +AC_DEFUN([AM_INIT_AUTOMAKE], +[AC_PREREQ([2.58])dnl +dnl Autoconf wants to disallow AM_ names. We explicitly allow +dnl the ones we care about. +m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl +AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl +AC_REQUIRE([AC_PROG_INSTALL])dnl +# test to see if srcdir already configured +if test "`cd $srcdir && pwd`" != "`pwd`" && + test -f $srcdir/config.status; then + AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi +AC_SUBST([CYGPATH_W]) + +# Define the identity of the package. +dnl Distinguish between old-style and new-style calls. +m4_ifval([$2], +[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl + AC_SUBST([PACKAGE], [$1])dnl + AC_SUBST([VERSION], [$2])], +[_AM_SET_OPTIONS([$1])dnl + AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl + AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl + +_AM_IF_OPTION([no-define],, +[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) + AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl + +# Some tools Automake needs. +AC_REQUIRE([AM_SANITY_CHECK])dnl +AC_REQUIRE([AC_ARG_PROGRAM])dnl +AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) +AM_MISSING_PROG(AUTOCONF, autoconf) +AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) +AM_MISSING_PROG(AUTOHEADER, autoheader) +AM_MISSING_PROG(MAKEINFO, makeinfo) +AM_PROG_INSTALL_SH +AM_PROG_INSTALL_STRIP +AC_REQUIRE([AM_PROG_MKDIR_P])dnl +# We need awk for the "check" target. The system "awk" is bad on +# some platforms. +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([AC_PROG_MAKE_SET])dnl +AC_REQUIRE([AM_SET_LEADING_DOT])dnl +_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], + [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], + [_AM_PROG_TAR([v7])])]) +_AM_IF_OPTION([no-dependencies],, +[AC_PROVIDE_IFELSE([AC_PROG_CC], + [_AM_DEPENDENCIES(CC)], + [define([AC_PROG_CC], + defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl +AC_PROVIDE_IFELSE([AC_PROG_CXX], + [_AM_DEPENDENCIES(CXX)], + [define([AC_PROG_CXX], + defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl +]) +]) + + +# When config.status generates a header, we must update the stamp-h file. +# This file resides in the same directory as the config header +# that is generated. The stamp files are numbered to have different names. + +# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the +# loop where config.status creates the headers, so we can generate +# our stamp files there. +AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], +[# Compute $1's index in $config_headers. +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $1 | $1:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count]) + +# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_SH +# ------------------ +# Define $install_sh. +AC_DEFUN([AM_PROG_INSTALL_SH], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +install_sh=${install_sh-"$am_aux_dir/install-sh"} +AC_SUBST(install_sh)]) + +# Copyright (C) 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 2 + +# Check whether the underlying file-system supports filenames +# with a leading dot. For instance MS-DOS doesn't. +AC_DEFUN([AM_SET_LEADING_DOT], +[rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null +AC_SUBST([am__leading_dot])]) + +# Add --enable-maintainer-mode option to configure. -*- Autoconf -*- +# From Jim Meyering + +# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 4 + +AC_DEFUN([AM_MAINTAINER_MODE], +[AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) + dnl maintainer-mode is disabled by default + AC_ARG_ENABLE(maintainer-mode, +[ --enable-maintainer-mode enable make rules and dependencies not useful + (and sometimes confusing) to the casual installer], + USE_MAINTAINER_MODE=$enableval, + USE_MAINTAINER_MODE=no) + AC_MSG_RESULT([$USE_MAINTAINER_MODE]) + AM_CONDITIONAL(MAINTAINER_MODE, [test $USE_MAINTAINER_MODE = yes]) + MAINT=$MAINTAINER_MODE_TRUE + AC_SUBST(MAINT)dnl +] +) + +AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE]) + +# Check to see how 'make' treats includes. -*- Autoconf -*- + +# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 3 + +# AM_MAKE_INCLUDE() +# ----------------- +# Check to see how make treats includes. +AC_DEFUN([AM_MAKE_INCLUDE], +[am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo done +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +AC_MSG_CHECKING([for style of include used by $am_make]) +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# We grep out `Entering directory' and `Leaving directory' +# messages which can occur if `w' ends up in MAKEFLAGS. +# In particular we don't look at `^make:' because GNU make might +# be invoked under some other name (usually "gmake"), in which +# case it prints its new name instead of `make'. +if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then + am__include=include + am__quote= + _am_result=GNU +fi +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then + am__include=.include + am__quote="\"" + _am_result=BSD + fi +fi +AC_SUBST([am__include]) +AC_SUBST([am__quote]) +AC_MSG_RESULT([$_am_result]) +rm -f confinc confmf +]) + +# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- + +# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 4 + +# AM_MISSING_PROG(NAME, PROGRAM) +# ------------------------------ +AC_DEFUN([AM_MISSING_PROG], +[AC_REQUIRE([AM_MISSING_HAS_RUN]) +$1=${$1-"${am_missing_run}$2"} +AC_SUBST($1)]) + + +# AM_MISSING_HAS_RUN +# ------------------ +# Define MISSING if not defined so far and test if it supports --run. +# If it does, set am_missing_run to use it, otherwise, to nothing. +AC_DEFUN([AM_MISSING_HAS_RUN], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" +# Use eval to expand $SHELL +if eval "$MISSING --run true"; then + am_missing_run="$MISSING --run " +else + am_missing_run= + AC_MSG_WARN([`missing' script is too old or missing]) +fi +]) + +# Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_MKDIR_P +# --------------- +# Check whether `mkdir -p' is supported, fallback to mkinstalldirs otherwise. +# +# Automake 1.8 used `mkdir -m 0755 -p --' to ensure that directories +# created by `make install' are always world readable, even if the +# installer happens to have an overly restrictive umask (e.g. 077). +# This was a mistake. There are at least two reasons why we must not +# use `-m 0755': +# - it causes special bits like SGID to be ignored, +# - it may be too restrictive (some setups expect 775 directories). +# +# Do not use -m 0755 and let people choose whatever they expect by +# setting umask. +# +# We cannot accept any implementation of `mkdir' that recognizes `-p'. +# Some implementations (such as Solaris 8's) are not thread-safe: if a +# parallel make tries to run `mkdir -p a/b' and `mkdir -p a/c' +# concurrently, both version can detect that a/ is missing, but only +# one can create it and the other will error out. Consequently we +# restrict ourselves to GNU make (using the --version option ensures +# this.) +AC_DEFUN([AM_PROG_MKDIR_P], +[if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then + # We used to keeping the `.' as first argument, in order to + # allow $(mkdir_p) to be used without argument. As in + # $(mkdir_p) $(somedir) + # where $(somedir) is conditionally defined. However this is wrong + # for two reasons: + # 1. if the package is installed by a user who cannot write `.' + # make install will fail, + # 2. the above comment should most certainly read + # $(mkdir_p) $(DESTDIR)$(somedir) + # so it does not work when $(somedir) is undefined and + # $(DESTDIR) is not. + # To support the latter case, we have to write + # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir), + # so the `.' trick is pointless. + mkdir_p='mkdir -p --' +else + # On NextStep and OpenStep, the `mkdir' command does not + # recognize any option. It will interpret all options as + # directories to create, and then abort because `.' already + # exists. + for d in ./-p ./--version; + do + test -d $d && rmdir $d + done + # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists. + if test -f "$ac_aux_dir/mkinstalldirs"; then + mkdir_p='$(mkinstalldirs)' + else + mkdir_p='$(install_sh) -d' + fi +fi +AC_SUBST([mkdir_p])]) + +# Helper functions for option handling. -*- Autoconf -*- + +# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 3 + +# _AM_MANGLE_OPTION(NAME) +# ----------------------- +AC_DEFUN([_AM_MANGLE_OPTION], +[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) + +# _AM_SET_OPTION(NAME) +# ------------------------------ +# Set option NAME. Presently that only means defining a flag for this option. +AC_DEFUN([_AM_SET_OPTION], +[m4_define(_AM_MANGLE_OPTION([$1]), 1)]) + +# _AM_SET_OPTIONS(OPTIONS) +# ---------------------------------- +# OPTIONS is a space-separated list of Automake options. +AC_DEFUN([_AM_SET_OPTIONS], +[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) + +# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) +# ------------------------------------------- +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +AC_DEFUN([_AM_IF_OPTION], +[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) + +# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PATH_PYTHON([MINIMUM-VERSION], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +# --------------------------------------------------------------------------- +# Adds support for distributing Python modules and packages. To +# install modules, copy them to $(pythondir), using the python_PYTHON +# automake variable. To install a package with the same name as the +# automake package, install to $(pkgpythondir), or use the +# pkgpython_PYTHON automake variable. +# +# The variables $(pyexecdir) and $(pkgpyexecdir) are provided as +# locations to install python extension modules (shared libraries). +# Another macro is required to find the appropriate flags to compile +# extension modules. +# +# If your package is configured with a different prefix to python, +# users will have to add the install directory to the PYTHONPATH +# environment variable, or create a .pth file (see the python +# documentation for details). +# +# If the MINIMUM-VERSION argument is passed, AM_PATH_PYTHON will +# cause an error if the version of python installed on the system +# doesn't meet the requirement. MINIMUM-VERSION should consist of +# numbers and dots only. +AC_DEFUN([AM_PATH_PYTHON], + [ + dnl Find a Python interpreter. Python versions prior to 1.5 are not + dnl supported because the default installation locations changed from + dnl $prefix/lib/site-python in 1.4 to $prefix/lib/python1.5/site-packages + dnl in 1.5. + m4_define_default([_AM_PYTHON_INTERPRETER_LIST], + [python python2 python2.5 python2.4 python2.3 python2.2 dnl +python2.1 python2.0 python1.6 python1.5]) + + m4_if([$1],[],[ + dnl No version check is needed. + # Find any Python interpreter. + if test -z "$PYTHON"; then + AC_PATH_PROGS([PYTHON], _AM_PYTHON_INTERPRETER_LIST, :) + fi + am_display_PYTHON=python + ], [ + dnl A version check is needed. + if test -n "$PYTHON"; then + # If the user set $PYTHON, use it and don't search something else. + AC_MSG_CHECKING([whether $PYTHON version >= $1]) + AM_PYTHON_CHECK_VERSION([$PYTHON], [$1], + [AC_MSG_RESULT(yes)], + [AC_MSG_ERROR(too old)]) + am_display_PYTHON=$PYTHON + else + # Otherwise, try each interpreter until we find one that satisfies + # VERSION. + AC_CACHE_CHECK([for a Python interpreter with version >= $1], + [am_cv_pathless_PYTHON],[ + for am_cv_pathless_PYTHON in _AM_PYTHON_INTERPRETER_LIST none; do + test "$am_cv_pathless_PYTHON" = none && break + AM_PYTHON_CHECK_VERSION([$am_cv_pathless_PYTHON], [$1], [break]) + done]) + # Set $PYTHON to the absolute path of $am_cv_pathless_PYTHON. + if test "$am_cv_pathless_PYTHON" = none; then + PYTHON=: + else + AC_PATH_PROG([PYTHON], [$am_cv_pathless_PYTHON]) + fi + am_display_PYTHON=$am_cv_pathless_PYTHON + fi + ]) + + if test "$PYTHON" = :; then + dnl Run any user-specified action, or abort. + m4_default([$3], [AC_MSG_ERROR([no suitable Python interpreter found])]) + else + + dnl Query Python for its version number. Getting [:3] seems to be + dnl the best way to do this; it's what "site.py" does in the standard + dnl library. + + AC_CACHE_CHECK([for $am_display_PYTHON version], [am_cv_python_version], + [am_cv_python_version=`$PYTHON -c "import sys; print sys.version[[:3]]"`]) + AC_SUBST([PYTHON_VERSION], [$am_cv_python_version]) + + dnl Use the values of $prefix and $exec_prefix for the corresponding + dnl values of PYTHON_PREFIX and PYTHON_EXEC_PREFIX. These are made + dnl distinct variables so they can be overridden if need be. However, + dnl general consensus is that you shouldn't need this ability. + + AC_SUBST([PYTHON_PREFIX], ['${prefix}']) + AC_SUBST([PYTHON_EXEC_PREFIX], ['${exec_prefix}']) + + dnl At times (like when building shared libraries) you may want + dnl to know which OS platform Python thinks this is. + + AC_CACHE_CHECK([for $am_display_PYTHON platform], [am_cv_python_platform], + [am_cv_python_platform=`$PYTHON -c "import sys; print sys.platform"`]) + AC_SUBST([PYTHON_PLATFORM], [$am_cv_python_platform]) + + + dnl Set up 4 directories: + + dnl pythondir -- where to install python scripts. This is the + dnl site-packages directory, not the python standard library + dnl directory like in previous automake betas. This behavior + dnl is more consistent with lispdir.m4 for example. + dnl Query distutils for this directory. distutils does not exist in + dnl Python 1.5, so we fall back to the hardcoded directory if it + dnl doesn't work. + AC_CACHE_CHECK([for $am_display_PYTHON script directory], + [am_cv_python_pythondir], + [am_cv_python_pythondir=`$PYTHON -c "from distutils import sysconfig; print sysconfig.get_python_lib(0,0,prefix='$PYTHON_PREFIX')" 2>/dev/null || + echo "$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages"`]) + AC_SUBST([pythondir], [$am_cv_python_pythondir]) + + dnl pkgpythondir -- $PACKAGE directory under pythondir. Was + dnl PYTHON_SITE_PACKAGE in previous betas, but this naming is + dnl more consistent with the rest of automake. + + AC_SUBST([pkgpythondir], [\${pythondir}/$PACKAGE]) + + dnl pyexecdir -- directory for installing python extension modules + dnl (shared libraries) + dnl Query distutils for this directory. distutils does not exist in + dnl Python 1.5, so we fall back to the hardcoded directory if it + dnl doesn't work. + AC_CACHE_CHECK([for $am_display_PYTHON extension module directory], + [am_cv_python_pyexecdir], + [am_cv_python_pyexecdir=`$PYTHON -c "from distutils import sysconfig; print sysconfig.get_python_lib(1,0,prefix='$PYTHON_EXEC_PREFIX')" 2>/dev/null || + echo "${PYTHON_EXEC_PREFIX}/lib/python${PYTHON_VERSION}/site-packages"`]) + AC_SUBST([pyexecdir], [$am_cv_python_pyexecdir]) + + dnl pkgpyexecdir -- $(pyexecdir)/$(PACKAGE) + + AC_SUBST([pkgpyexecdir], [\${pyexecdir}/$PACKAGE]) + + dnl Run any user-specified action. + $2 + fi + +]) + + +# AM_PYTHON_CHECK_VERSION(PROG, VERSION, [ACTION-IF-TRUE], [ACTION-IF-FALSE]) +# --------------------------------------------------------------------------- +# Run ACTION-IF-TRUE if the Python interpreter PROG has version >= VERSION. +# Run ACTION-IF-FALSE otherwise. +# This test uses sys.hexversion instead of the string equivalent (first +# word of sys.version), in order to cope with versions such as 2.2c1. +# hexversion has been introduced in Python 1.5.2; it's probably not +# worth to support older versions (1.5.1 was released on October 31, 1998). +AC_DEFUN([AM_PYTHON_CHECK_VERSION], + [prog="import sys, string +# split strings by '.' and convert to numeric. Append some zeros +# because we need at least 4 digits for the hex conversion. +minver = map(int, string.split('$2', '.')) + [[0, 0, 0]] +minverhex = 0 +for i in xrange(0, 4): minverhex = (minverhex << 8) + minver[[i]] +sys.exit(sys.hexversion < minverhex)" + AS_IF([AM_RUN_LOG([$1 -c "$prog"])], [$3], [$4])]) + +# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_RUN_LOG(COMMAND) +# ------------------- +# Run COMMAND, save the exit status in ac_status, and log it. +# (This has been adapted from Autoconf's _AC_RUN_LOG macro.) +AC_DEFUN([AM_RUN_LOG], +[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD + ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + (exit $ac_status); }]) + +# Check to make sure that the build environment is sane. -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 4 + +# AM_SANITY_CHECK +# --------------- +AC_DEFUN([AM_SANITY_CHECK], +[AC_MSG_CHECKING([whether build environment is sane]) +# Just in case +sleep 1 +echo timestamp > conftest.file +# Do `set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` + if test "$[*]" = "X"; then + # -L didn't work. + set X `ls -t $srcdir/configure conftest.file` + fi + rm -f conftest.file + if test "$[*]" != "X $srcdir/configure conftest.file" \ + && test "$[*]" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken +alias in your environment]) + fi + + test "$[2]" = conftest.file + ) +then + # Ok. + : +else + AC_MSG_ERROR([newly created file is older than distributed files! +Check your system clock]) +fi +AC_MSG_RESULT(yes)]) + +# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_STRIP +# --------------------- +# One issue with vendor `install' (even GNU) is that you can't +# specify the program used to strip binaries. This is especially +# annoying in cross-compiling environments, where the build's strip +# is unlikely to handle the host's binaries. +# Fortunately install-sh will honor a STRIPPROG variable, so we +# always use install-sh in `make install-strip', and initialize +# STRIPPROG with the value of the STRIP variable (set by the user). +AC_DEFUN([AM_PROG_INSTALL_STRIP], +[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +# Installed binaries are usually stripped using `strip' when the user +# run `make install-strip'. However `strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the `STRIP' environment variable to overrule this program. +dnl Don't test for $cross_compiling = yes, because it might be `maybe'. +if test "$cross_compiling" != no; then + AC_CHECK_TOOL([STRIP], [strip], :) +fi +INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" +AC_SUBST([INSTALL_STRIP_PROGRAM])]) + +# Check how to create a tarball. -*- Autoconf -*- + +# Copyright (C) 2004, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 2 + +# _AM_PROG_TAR(FORMAT) +# -------------------- +# Check how to create a tarball in format FORMAT. +# FORMAT should be one of `v7', `ustar', or `pax'. +# +# Substitute a variable $(am__tar) that is a command +# writing to stdout a FORMAT-tarball containing the directory +# $tardir. +# tardir=directory && $(am__tar) > result.tar +# +# Substitute a variable $(am__untar) that extract such +# a tarball read from stdin. +# $(am__untar) < result.tar +AC_DEFUN([_AM_PROG_TAR], +[# Always define AMTAR for backward compatibility. +AM_MISSING_PROG([AMTAR], [tar]) +m4_if([$1], [v7], + [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'], + [m4_case([$1], [ustar],, [pax],, + [m4_fatal([Unknown tar format])]) +AC_MSG_CHECKING([how to create a $1 tar archive]) +# Loop over all known methods to create a tar archive until one works. +_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' +_am_tools=${am_cv_prog_tar_$1-$_am_tools} +# Do not fold the above two line into one, because Tru64 sh and +# Solaris sh will not grok spaces in the rhs of `-'. +for _am_tool in $_am_tools +do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; + do + AM_RUN_LOG([$_am_tar --version]) && break + done + am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x $1 -w "$$tardir"' + am__tar_='pax -L -x $1 -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H $1 -L' + am__tar_='find "$tardir" -print | cpio -o -H $1 -L' + am__untar='cpio -i -H $1 -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac + + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_$1}" && break + + # tar/untar a dummy directory, and stop if the command works + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) + rm -rf conftest.dir + if test -s conftest.tar; then + AM_RUN_LOG([$am__untar /dev/null 2>&1 && break + fi +done +rm -rf conftest.dir + +AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) +AC_MSG_RESULT([$am_cv_prog_tar_$1])]) +AC_SUBST([am__tar]) +AC_SUBST([am__untar]) +]) # _AM_PROG_TAR + +m4_include([m4/glib-gettext.m4]) +m4_include([m4/python.m4]) diff --git a/autogen.sh b/autogen.sh new file mode 100755 index 000000000..866c69b31 --- /dev/null +++ b/autogen.sh @@ -0,0 +1,6 @@ +#!/bin/sh + +aclocal -I ./m4 --force +autoconf +autoheader +automake --add-missing diff --git a/compile b/compile new file mode 100755 index 000000000..1b1d23216 --- /dev/null +++ b/compile @@ -0,0 +1,142 @@ +#! /bin/sh +# Wrapper for compilers which do not understand `-c -o'. + +scriptversion=2005-05-14.22 + +# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc. +# Written by Tom Tromey . +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# This file is maintained in Automake, please report +# bugs to or send patches to +# . + +case $1 in + '') + echo "$0: No command. Try \`$0 --help' for more information." 1>&2 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: compile [--help] [--version] PROGRAM [ARGS] + +Wrapper for compilers which do not understand `-c -o'. +Remove `-o dest.o' from ARGS, run PROGRAM with the remaining +arguments, and rename the output as expected. + +If you are trying to build a whole package this is not the +right script to run: please start by reading the file `INSTALL'. + +Report bugs to . +EOF + exit $? + ;; + -v | --v*) + echo "compile $scriptversion" + exit $? + ;; +esac + +ofile= +cfile= +eat= + +for arg +do + if test -n "$eat"; then + eat= + else + case $1 in + -o) + # configure might choose to run compile as `compile cc -o foo foo.c'. + # So we strip `-o arg' only if arg is an object. + eat=1 + case $2 in + *.o | *.obj) + ofile=$2 + ;; + *) + set x "$@" -o "$2" + shift + ;; + esac + ;; + *.c) + cfile=$1 + set x "$@" "$1" + shift + ;; + *) + set x "$@" "$1" + shift + ;; + esac + fi + shift +done + +if test -z "$ofile" || test -z "$cfile"; then + # If no `-o' option was seen then we might have been invoked from a + # pattern rule where we don't need one. That is ok -- this is a + # normal compilation that the losing compiler can handle. If no + # `.c' file was seen then we are probably linking. That is also + # ok. + exec "$@" +fi + +# Name of file we expect compiler to create. +cofile=`echo "$cfile" | sed -e 's|^.*/||' -e 's/\.c$/.o/'` + +# Create the lock directory. +# Note: use `[/.-]' here to ensure that we don't use the same name +# that we are using for the .o file. Also, base the name on the expected +# object file name, since that is what matters with a parallel build. +lockdir=`echo "$cofile" | sed -e 's|[/.-]|_|g'`.d +while true; do + if mkdir "$lockdir" >/dev/null 2>&1; then + break + fi + sleep 1 +done +# FIXME: race condition here if user kills between mkdir and trap. +trap "rmdir '$lockdir'; exit 1" 1 2 15 + +# Run the compile. +"$@" +ret=$? + +if test -f "$cofile"; then + mv "$cofile" "$ofile" +elif test -f "${cofile}bj"; then + mv "${cofile}bj" "$ofile" +fi + +rmdir "$lockdir" +exit $ret + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-end: "$" +# End: diff --git a/config.guess b/config.guess new file mode 100755 index 000000000..af7f02dc7 --- /dev/null +++ b/config.guess @@ -0,0 +1,1519 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, +# Inc. + +timestamp='2006-07-02' + +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA +# 02110-1301, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + + +# Originally written by Per Bothner . +# Please send patches to . Submit a context +# diff and a properly formatted ChangeLog entry. +# +# This script attempts to guess a canonical system name similar to +# config.sub. If it succeeds, it prints the system name on stdout, and +# exits with 0. Otherwise, it exits with 1. +# +# The plan is that this can be called by configure scripts if you +# don't specify an explicit build system type. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] + +Output the configuration name of the system \`$me' is run on. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.guess ($timestamp) + +Originally written by Per Bothner. +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 +Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + * ) + break ;; + esac +done + +if test $# != 0; then + echo "$me: too many arguments$help" >&2 + exit 1 +fi + +trap 'exit 1' 1 2 15 + +# CC_FOR_BUILD -- compiler used by this script. Note that the use of a +# compiler to aid in system detection is discouraged as it requires +# temporary files to be created and, as you can see below, it is a +# headache to deal with in a portable fashion. + +# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still +# use `HOST_CC' if defined, but it is deprecated. + +# Portable tmp directory creation inspired by the Autoconf team. + +set_cc_for_build=' +trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; +trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; +: ${TMPDIR=/tmp} ; + { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || + { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; +dummy=$tmp/dummy ; +tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; +case $CC_FOR_BUILD,$HOST_CC,$CC in + ,,) echo "int x;" > $dummy.c ; + for c in cc gcc c89 c99 ; do + if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then + CC_FOR_BUILD="$c"; break ; + fi ; + done ; + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found ; + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; +esac ; set_cc_for_build= ;' + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 1994-08-24) +if (test -f /.attbin/uname) >/dev/null 2>&1 ; then + PATH=$PATH:/.attbin ; export PATH +fi + +UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown +UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown + +if [ "${UNAME_SYSTEM}" = "Linux" ] ; then + eval $set_cc_for_build + cat << EOF > $dummy.c + #include + #ifdef __UCLIBC__ + # ifdef __UCLIBC_CONFIG_VERSION__ + LIBC=uclibc __UCLIBC_CONFIG_VERSION__ + # else + LIBC=uclibc + # endif + #else + LIBC=gnu + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep LIBC= | sed -e 's: ::g'` +fi + +# Note: order is significant - the case branches are not exclusive. + +case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in + *:NetBSD:*:*) + # NetBSD (nbsd) targets should (where applicable) match one or + # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, + # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently + # switched to ELF, *-*-netbsd* would select the old + # object file format. This provides both forward + # compatibility and a consistent mechanism for selecting the + # object file format. + # + # Note: NetBSD doesn't particularly care about the vendor + # portion of the name. We always set it to "unknown". + sysctl="sysctl -n hw.machine_arch" + UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ + /usr/sbin/$sysctl 2>/dev/null || echo unknown)` + case "${UNAME_MACHINE_ARCH}" in + armeb) machine=armeb-unknown ;; + arm*) machine=arm-unknown ;; + sh3el) machine=shl-unknown ;; + sh3eb) machine=sh-unknown ;; + *) machine=${UNAME_MACHINE_ARCH}-unknown ;; + esac + # The Operating System including object format, if it has switched + # to ELF recently, or will in the future. + case "${UNAME_MACHINE_ARCH}" in + arm*|i386|m68k|ns32k|sh3*|sparc|vax) + eval $set_cc_for_build + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep __ELF__ >/dev/null + then + # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). + # Return netbsd for either. FIX? + os=netbsd + else + os=netbsdelf + fi + ;; + *) + os=netbsd + ;; + esac + # The OS release + # Debian GNU/NetBSD machines have a different userland, and + # thus, need a distinct triplet. However, they do not need + # kernel version information, so it can be replaced with a + # suitable tag, in the style of linux-gnu. + case "${UNAME_VERSION}" in + Debian*) + release='-gnu' + ;; + *) + release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + ;; + esac + # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: + # contains redundant information, the shorter form: + # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. + echo "${machine}-${os}${release}" + exit ;; + *:OpenBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} + exit ;; + *:ekkoBSD:*:*) + echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} + exit ;; + *:SolidBSD:*:*) + echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} + exit ;; + macppc:MirBSD:*:*) + echo powerpc-unknown-mirbsd${UNAME_RELEASE} + exit ;; + *:MirBSD:*:*) + echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} + exit ;; + alpha:OSF1:*:*) + case $UNAME_RELEASE in + *4.0) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + ;; + *5.*) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` + ;; + esac + # According to Compaq, /usr/sbin/psrinfo has been available on + # OSF/1 and Tru64 systems produced since 1995. I hope that + # covers most systems running today. This code pipes the CPU + # types through head -n 1, so we only detect the type of CPU 0. + ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` + case "$ALPHA_CPU_TYPE" in + "EV4 (21064)") + UNAME_MACHINE="alpha" ;; + "EV4.5 (21064)") + UNAME_MACHINE="alpha" ;; + "LCA4 (21066/21068)") + UNAME_MACHINE="alpha" ;; + "EV5 (21164)") + UNAME_MACHINE="alphaev5" ;; + "EV5.6 (21164A)") + UNAME_MACHINE="alphaev56" ;; + "EV5.6 (21164PC)") + UNAME_MACHINE="alphapca56" ;; + "EV5.7 (21164PC)") + UNAME_MACHINE="alphapca57" ;; + "EV6 (21264)") + UNAME_MACHINE="alphaev6" ;; + "EV6.7 (21264A)") + UNAME_MACHINE="alphaev67" ;; + "EV6.8CB (21264C)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8AL (21264B)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8CX (21264D)") + UNAME_MACHINE="alphaev68" ;; + "EV6.9A (21264/EV69A)") + UNAME_MACHINE="alphaev69" ;; + "EV7 (21364)") + UNAME_MACHINE="alphaev7" ;; + "EV7.9 (21364A)") + UNAME_MACHINE="alphaev79" ;; + esac + # A Pn.n version is a patched version. + # A Vn.n version is a released version. + # A Tn.n version is a released field test version. + # A Xn.n version is an unreleased experimental baselevel. + # 1.2 uses "1.2" for uname -r. + echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + exit ;; + Alpha\ *:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # Should we change UNAME_MACHINE based on the output of uname instead + # of the specific Alpha model? + echo alpha-pc-interix + exit ;; + 21064:Windows_NT:50:3) + echo alpha-dec-winnt3.5 + exit ;; + Amiga*:UNIX_System_V:4.0:*) + echo m68k-unknown-sysv4 + exit ;; + *:[Aa]miga[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-amigaos + exit ;; + *:[Mm]orph[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-morphos + exit ;; + *:OS/390:*:*) + echo i370-ibm-openedition + exit ;; + *:z/VM:*:*) + echo s390-ibm-zvmoe + exit ;; + *:OS400:*:*) + echo powerpc-ibm-os400 + exit ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix${UNAME_RELEASE} + exit ;; + arm:riscos:*:*|arm:RISCOS:*:*) + echo arm-unknown-riscos + exit ;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + echo hppa1.1-hitachi-hiuxmpp + exit ;; + Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) + # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. + if test "`(/bin/universe) 2>/dev/null`" = att ; then + echo pyramid-pyramid-sysv3 + else + echo pyramid-pyramid-bsd + fi + exit ;; + NILE*:*:*:dcosx) + echo pyramid-pyramid-svr4 + exit ;; + DRS?6000:unix:4.0:6*) + echo sparc-icl-nx6 + exit ;; + DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) + case `/usr/bin/uname -p` in + sparc) echo sparc-icl-nx7; exit ;; + esac ;; + sun4H:SunOS:5.*:*) + echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + i86pc:SunOS:5.*:*) + echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize + # SunOS6. Hard to guess exactly what SunOS6 will be like, but + # it's likely to be more like Solaris than SunOS4. + echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:*:*) + case "`/usr/bin/arch -k`" in + Series*|S4*) + UNAME_RELEASE=`uname -v` + ;; + esac + # Japanese Language versions have a version number like `4.1.3-JL'. + echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` + exit ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos${UNAME_RELEASE} + exit ;; + sun*:*:4.2BSD:*) + UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` + test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 + case "`/bin/arch`" in + sun3) + echo m68k-sun-sunos${UNAME_RELEASE} + ;; + sun4) + echo sparc-sun-sunos${UNAME_RELEASE} + ;; + esac + exit ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos${UNAME_RELEASE} + exit ;; + # The situation for MiNT is a little confusing. The machine name + # can be virtually everything (everything which is not + # "atarist" or "atariste" at least should have a processor + # > m68000). The system name ranges from "MiNT" over "FreeMiNT" + # to the lowercase version "mint" (or "freemint"). Finally + # the system name "TOS" denotes a system which is actually not + # MiNT. But MiNT is downward compatible to TOS, so this should + # be no problem. + atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + echo m68k-milan-mint${UNAME_RELEASE} + exit ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + echo m68k-hades-mint${UNAME_RELEASE} + exit ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + echo m68k-unknown-mint${UNAME_RELEASE} + exit ;; + m68k:machten:*:*) + echo m68k-apple-machten${UNAME_RELEASE} + exit ;; + powerpc:machten:*:*) + echo powerpc-apple-machten${UNAME_RELEASE} + exit ;; + RISC*:Mach:*:*) + echo mips-dec-mach_bsd4.3 + exit ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix${UNAME_RELEASE} + exit ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix${UNAME_RELEASE} + exit ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + echo clipper-intergraph-clix${UNAME_RELEASE} + exit ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c +#ifdef __cplusplus +#include /* for printf() prototype */ + int main (int argc, char *argv[]) { +#else + int main (argc, argv) int argc; char *argv[]; { +#endif + #if defined (host_mips) && defined (MIPSEB) + #if defined (SYSTYPE_SYSV) + printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_SVR4) + printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) + printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); + #endif + #endif + exit (-1); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && + dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && + SYSTEM_NAME=`$dummy $dummyarg` && + { echo "$SYSTEM_NAME"; exit; } + echo mips-mips-riscos${UNAME_RELEASE} + exit ;; + Motorola:PowerMAX_OS:*:*) + echo powerpc-motorola-powermax + exit ;; + Motorola:*:4.3:PL8-*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:Power_UNIX:*:*) + echo powerpc-harris-powerunix + exit ;; + m88k:CX/UX:7*:*) + echo m88k-harris-cxux7 + exit ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 + exit ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 + exit ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] + then + if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ + [ ${TARGET_BINARY_INTERFACE}x = x ] + then + echo m88k-dg-dgux${UNAME_RELEASE} + else + echo m88k-dg-dguxbcs${UNAME_RELEASE} + fi + else + echo i586-dg-dgux${UNAME_RELEASE} + fi + exit ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + echo m88k-dolphin-sysv3 + exit ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 + exit ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + echo m88k-tektronix-sysv3 + exit ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + echo m68k-tektronix-bsd + exit ;; + *:IRIX*:*:*) + echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` + exit ;; + ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. + echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id + exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i*86:AIX:*:*) + echo i386-ibm-aix + exit ;; + ia64:AIX:*:*) + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} + exit ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + + main() + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` + then + echo "$SYSTEM_NAME" + else + echo rs6000-ibm-aix3.2.5 + fi + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + echo rs6000-ibm-aix3.2.4 + else + echo rs6000-ibm-aix3.2 + fi + exit ;; + *:AIX:*:[45]) + IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` + if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then + IBM_ARCH=rs6000 + else + IBM_ARCH=powerpc + fi + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${IBM_ARCH}-ibm-aix${IBM_REV} + exit ;; + *:AIX:*:*) + echo rs6000-ibm-aix + exit ;; + ibmrt:4.4BSD:*|romp-ibm:BSD:*) + echo romp-ibm-bsd4.4 + exit ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to + exit ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + echo rs6000-bull-bosx + exit ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 + exit ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd + exit ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 + exit ;; + 9000/[34678]??:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + case "${UNAME_MACHINE}" in + 9000/31? ) HP_ARCH=m68000 ;; + 9000/[34]?? ) HP_ARCH=m68k ;; + 9000/[678][0-9][0-9]) + if [ -x /usr/bin/getconf ]; then + sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case "${sc_cpu_version}" in + 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 + 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 + 532) # CPU_PA_RISC2_0 + case "${sc_kernel_bits}" in + 32) HP_ARCH="hppa2.0n" ;; + 64) HP_ARCH="hppa2.0w" ;; + '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 + esac ;; + esac + fi + if [ "${HP_ARCH}" = "" ]; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + + #define _HPUX_SOURCE + #include + #include + + int main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); + + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } +EOF + (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` + test -z "$HP_ARCH" && HP_ARCH=hppa + fi ;; + esac + if [ ${HP_ARCH} = "hppa2.0w" ] + then + eval $set_cc_for_build + + # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating + # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler + # generating 64-bit code. GNU and HP use different nomenclature: + # + # $ CC_FOR_BUILD=cc ./config.guess + # => hppa2.0w-hp-hpux11.23 + # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess + # => hppa64-hp-hpux11.23 + + if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | + grep __LP64__ >/dev/null + then + HP_ARCH="hppa2.0w" + else + HP_ARCH="hppa64" + fi + fi + echo ${HP_ARCH}-hp-hpux${HPUX_REV} + exit ;; + ia64:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + echo ia64-hp-hpux${HPUX_REV} + exit ;; + 3050*:HI-UX:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + int + main () + { + long cpu = sysconf (_SC_CPU_VERSION); + /* The order matters, because CPU_IS_HP_MC68K erroneously returns + true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct + results, however. */ + if (CPU_IS_PA_RISC (cpu)) + { + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; + case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; + default: puts ("hppa-hitachi-hiuxwe2"); break; + } + } + else if (CPU_IS_HP_MC68K (cpu)) + puts ("m68k-hitachi-hiuxwe2"); + else puts ("unknown-hitachi-hiuxwe2"); + exit (0); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && + { echo "$SYSTEM_NAME"; exit; } + echo unknown-hitachi-hiuxwe2 + exit ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) + echo hppa1.1-hp-bsd + exit ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd + exit ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + echo hppa1.0-hp-mpeix + exit ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) + echo hppa1.1-hp-osf + exit ;; + hp8??:OSF1:*:*) + echo hppa1.0-hp-osf + exit ;; + i*86:OSF1:*:*) + if [ -x /usr/sbin/sysversion ] ; then + echo ${UNAME_MACHINE}-unknown-osf1mk + else + echo ${UNAME_MACHINE}-unknown-osf1 + fi + exit ;; + parisc*:Lites*:*:*) + echo hppa1.1-hp-lites + exit ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + echo c1-convex-bsd + exit ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + echo c34-convex-bsd + exit ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + echo c38-convex-bsd + exit ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + echo c4-convex-bsd + exit ;; + CRAY*Y-MP:*:*:*) + echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*[A-Z]90:*:*:*) + echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ + -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*TS:*:*:*) + echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*T3E:*:*:*) + echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*SV1:*:*:*) + echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + *:UNICOS/mp:*:*) + echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) + FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` + echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + 5000:UNIX_System_V:4.*:*) + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` + echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} + exit ;; + sparc*:BSD/OS:*:*) + echo sparc-unknown-bsdi${UNAME_RELEASE} + exit ;; + *:BSD/OS:*:*) + echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} + exit ;; + *:FreeBSD:*:*) + case ${UNAME_MACHINE} in + pc98) + echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + amd64) + echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + *) + echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + esac + exit ;; + i*:CYGWIN*:*) + echo ${UNAME_MACHINE}-pc-cygwin + exit ;; + i*:MINGW*:*) + echo ${UNAME_MACHINE}-pc-mingw32 + exit ;; + i*:windows32*:*) + # uname -m includes "-pc" on this system. + echo ${UNAME_MACHINE}-mingw32 + exit ;; + i*:PW*:*) + echo ${UNAME_MACHINE}-pc-pw32 + exit ;; + x86:Interix*:[3456]*) + echo i586-pc-interix${UNAME_RELEASE} + exit ;; + EM64T:Interix*:[3456]*) + echo x86_64-unknown-interix${UNAME_RELEASE} + exit ;; + [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) + echo i${UNAME_MACHINE}-pc-mks + exit ;; + i*:Windows_NT*:* | Pentium*:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we + # UNAME_MACHINE based on the output of uname instead of i386? + echo i586-pc-interix + exit ;; + i*:UWIN*:*) + echo ${UNAME_MACHINE}-pc-uwin + exit ;; + amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) + echo x86_64-unknown-cygwin + exit ;; + p*:CYGWIN*:*) + echo powerpcle-unknown-cygwin + exit ;; + prep*:SunOS:5.*:*) + echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + *:GNU:*:*) + # the GNU system + echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + exit ;; + *:GNU/*:*:*) + # other systems with GNU libc and userland + echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu + exit ;; + i*86:Minix:*:*) + echo ${UNAME_MACHINE}-pc-minix + exit ;; + arm*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + avr32*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + cris:Linux:*:*) + echo cris-axis-linux-${LIBC} + exit ;; + crisv32:Linux:*:*) + echo crisv32-axis-linux-${LIBC} + exit ;; + frv:Linux:*:*) + echo frv-unknown-linux-${LIBC} + exit ;; + ia64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + m32r*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + m68*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + mips:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef mips + #undef mipsel + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=mipsel + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=mips + #else + CPU= + #endif + #endif +EOF + eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' + /^CPU/{ + s: ::g + p + }'`" + test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } + ;; + mips64:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef mips64 + #undef mips64el + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=mips64el + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=mips64 + #else + CPU= + #endif + #endif +EOF + eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' + /^CPU/{ + s: ::g + p + }'`" + test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } + ;; + or32:Linux:*:*) + echo or32-unknown-linux-${LIBC} + exit ;; + ppc:Linux:*:*) + echo powerpc-unknown-linux-${LIBC} + exit ;; + ppc64:Linux:*:*) + echo powerpc64-unknown-linux-${LIBC} + exit ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + EV5) UNAME_MACHINE=alphaev5 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null + if test "$?" = 0 ; then LIBC="gnulibc1" ; fi + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + parisc:Linux:*:* | hppa:Linux:*:*) + # Look for CPU level + case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in + PA7*) echo hppa1.1-unknown-linux-${LIBC} ;; + PA8*) echo hppa2.0-unknown-linux-${LIBC} ;; + *) echo hppa-unknown-linux-${LIBC} ;; + esac + exit ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-unknown-linux-${LIBC} + exit ;; + s390:Linux:*:* | s390x:Linux:*:*) + echo ${UNAME_MACHINE}-ibm-linux + exit ;; + sh64*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + sh*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + vax:Linux:*:*) + echo ${UNAME_MACHINE}-dec-linux-${LIBC} + exit ;; + x86_64:Linux:*:*) + echo x86_64-unknown-linux-${LIBC} + exit ;; + i*86:Linux:*:*) + # The BFD linker knows what the default object file format is, so + # first see if it will tell us. cd to the root directory to prevent + # problems with other programs or directories called `ld' in the path. + # Set LC_ALL=C to ensure ld outputs messages in English. + ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ + | sed -ne '/supported targets:/!d + s/[ ][ ]*/ /g + s/.*supported targets: *// + s/ .*// + p'` + case "$ld_supported_targets" in + elf32-i386) + TENTATIVE="${UNAME_MACHINE}-pc-linux-${LIBC}" + ;; + a.out-i386-linux) + echo "${UNAME_MACHINE}-pc-linux-${LIBC}aout" + exit ;; + coff-i386) + echo "${UNAME_MACHINE}-pc-linux-${LIBC}coff" + exit ;; + "") + # Either a pre-BFD a.out linker (linux-gnuoldld) or + # one that does not give us useful --help. + echo "${UNAME_MACHINE}-pc-linux-${LIBC}oldld" + exit ;; + esac + # This should get integrated into the C code below, but now we hack + if [ "$LIBC" != "gnu" ] ; then echo "$TENTATIVE" && exit 0 ; fi + # Determine whether the default compiler is a.out or elf + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + #ifdef __ELF__ + # ifdef __GLIBC__ + # if __GLIBC__ >= 2 + LIBC=gnu + # else + LIBC=gnulibc1 + # endif + # else + LIBC=gnulibc1 + # endif + #else + #if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC) + LIBC=gnu + #else + LIBC=gnuaout + #endif + #endif + #ifdef __dietlibc__ + LIBC=dietlibc + #endif +EOF + eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' + /^LIBC/{ + s: ::g + p + }'`" + test x"${LIBC}" != x && { + echo "${UNAME_MACHINE}-pc-linux-${LIBC}" + exit + } + test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; } + ;; + i*86:DYNIX/ptx:4*:*) + # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. + # earlier versions are messed up and put the nodename in both + # sysname and nodename. + echo i386-sequent-sysv4 + exit ;; + i*86:UNIX_SV:4.2MP:2.*) + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, + # I just have to hope. -- rms. + # Use sysv4.2uw... so that sysv4* matches it. + echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} + exit ;; + i*86:OS/2:*:*) + # If we were able to find `uname', then EMX Unix compatibility + # is probably installed. + echo ${UNAME_MACHINE}-pc-os2-emx + exit ;; + i*86:XTS-300:*:STOP) + echo ${UNAME_MACHINE}-unknown-stop + exit ;; + i*86:atheos:*:*) + echo ${UNAME_MACHINE}-unknown-atheos + exit ;; + i*86:syllable:*:*) + echo ${UNAME_MACHINE}-pc-syllable + exit ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) + echo i386-unknown-lynxos${UNAME_RELEASE} + exit ;; + i*86:*DOS:*:*) + echo ${UNAME_MACHINE}-pc-msdosdjgpp + exit ;; + i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) + UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} + else + echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} + fi + exit ;; + i*86:*:5:[678]*) + # UnixWare 7.x, OpenUNIX and OpenServer 6. + case `/bin/uname -X | grep "^Machine"` in + *486*) UNAME_MACHINE=i486 ;; + *Pentium) UNAME_MACHINE=i586 ;; + *Pent*|*Celeron) UNAME_MACHINE=i686 ;; + esac + echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + exit ;; + i*86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` + (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ + && UNAME_MACHINE=i686 + (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ + && UNAME_MACHINE=i686 + echo ${UNAME_MACHINE}-pc-sco$UNAME_REL + else + echo ${UNAME_MACHINE}-pc-sysv32 + fi + exit ;; + pc:*:*:*) + # Left here for compatibility: + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i386. + echo i386-pc-msdosdjgpp + exit ;; + Intel:Mach:3*:*) + echo i386-pc-mach3 + exit ;; + paragon:*:*:*) + echo i860-intel-osf1 + exit ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then + echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 + fi + exit ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv + exit ;; + mc68k:UNIX:SYSTEM5:3.51m) + echo m68k-convergent-sysv + exit ;; + M680?0:D-NIX:5.3:*) + echo m68k-diab-dnix + exit ;; + M68*:*:R3V[5678]*:*) + test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; + 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4; exit; } ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + echo m68k-unknown-lynxos${UNAME_RELEASE} + exit ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 + exit ;; + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos${UNAME_RELEASE} + exit ;; + rs6000:LynxOS:2.*:*) + echo rs6000-unknown-lynxos${UNAME_RELEASE} + exit ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) + echo powerpc-unknown-lynxos${UNAME_RELEASE} + exit ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv${UNAME_RELEASE} + exit ;; + RM*:ReliantUNIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + RM*:SINIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` + echo ${UNAME_MACHINE}-sni-sysv4 + else + echo ns32k-sni-sysv + fi + exit ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says + echo i586-unisys-sysv4 + exit ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm + echo hppa1.1-stratus-sysv4 + exit ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + echo i860-stratus-sysv4 + exit ;; + i*86:VOS:*:*) + # From Paul.Green@stratus.com. + echo ${UNAME_MACHINE}-stratus-vos + exit ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. + echo hppa1.1-stratus-vos + exit ;; + mc68*:A/UX:*:*) + echo m68k-apple-aux${UNAME_RELEASE} + exit ;; + news*:NEWS-OS:6*:*) + echo mips-sony-newsos6 + exit ;; + R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) + if [ -d /usr/nec ]; then + echo mips-nec-sysv${UNAME_RELEASE} + else + echo mips-unknown-sysv${UNAME_RELEASE} + fi + exit ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + echo powerpc-be-beos + exit ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + echo powerpc-apple-beos + exit ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + echo i586-pc-beos + exit ;; + SX-4:SUPER-UX:*:*) + echo sx4-nec-superux${UNAME_RELEASE} + exit ;; + SX-5:SUPER-UX:*:*) + echo sx5-nec-superux${UNAME_RELEASE} + exit ;; + SX-6:SUPER-UX:*:*) + echo sx6-nec-superux${UNAME_RELEASE} + exit ;; + Power*:Rhapsody:*:*) + echo powerpc-apple-rhapsody${UNAME_RELEASE} + exit ;; + *:Rhapsody:*:*) + echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} + exit ;; + *:Darwin:*:*) + UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown + case $UNAME_PROCESSOR in + unknown) UNAME_PROCESSOR=powerpc ;; + esac + echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} + exit ;; + *:procnto*:*:* | *:QNX:[0123456789]*:*) + UNAME_PROCESSOR=`uname -p` + if test "$UNAME_PROCESSOR" = "x86"; then + UNAME_PROCESSOR=i386 + UNAME_MACHINE=pc + fi + echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} + exit ;; + *:QNX:*:4*) + echo i386-pc-qnx + exit ;; + NSE-?:NONSTOP_KERNEL:*:*) + echo nse-tandem-nsk${UNAME_RELEASE} + exit ;; + NSR-?:NONSTOP_KERNEL:*:*) + echo nsr-tandem-nsk${UNAME_RELEASE} + exit ;; + *:NonStop-UX:*:*) + echo mips-compaq-nonstopux + exit ;; + BS2000:POSIX*:*:*) + echo bs2000-siemens-sysv + exit ;; + DS/*:UNIX_System_V:*:*) + echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} + exit ;; + *:Plan9:*:*) + # "uname -m" is not consistent, so use $cputype instead. 386 + # is converted to i386 for consistency with other x86 + # operating systems. + if test "$cputype" = "386"; then + UNAME_MACHINE=i386 + else + UNAME_MACHINE="$cputype" + fi + echo ${UNAME_MACHINE}-unknown-plan9 + exit ;; + *:TOPS-10:*:*) + echo pdp10-unknown-tops10 + exit ;; + *:TENEX:*:*) + echo pdp10-unknown-tenex + exit ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + echo pdp10-dec-tops20 + exit ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + echo pdp10-xkl-tops20 + exit ;; + *:TOPS-20:*:*) + echo pdp10-unknown-tops20 + exit ;; + *:ITS:*:*) + echo pdp10-unknown-its + exit ;; + SEI:*:*:SEIUX) + echo mips-sei-seiux${UNAME_RELEASE} + exit ;; + *:DragonFly:*:*) + echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` + exit ;; + *:*VMS:*:*) + UNAME_MACHINE=`(uname -p) 2>/dev/null` + case "${UNAME_MACHINE}" in + A*) echo alpha-dec-vms ; exit ;; + I*) echo ia64-dec-vms ; exit ;; + V*) echo vax-dec-vms ; exit ;; + esac ;; + *:XENIX:*:SysV) + echo i386-pc-xenix + exit ;; + i*86:skyos:*:*) + echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' + exit ;; + i*86:rdos:*:*) + echo ${UNAME_MACHINE}-pc-rdos + exit ;; +esac + +#echo '(No uname command or uname output not recognized.)' 1>&2 +#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 + +eval $set_cc_for_build +cat >$dummy.c < +# include +#endif +main () +{ +#if defined (sony) +#if defined (MIPSEB) + /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, + I don't know.... */ + printf ("mips-sony-bsd\n"); exit (0); +#else +#include + printf ("m68k-sony-newsos%s\n", +#ifdef NEWSOS4 + "4" +#else + "" +#endif + ); exit (0); +#endif +#endif + +#if defined (__arm) && defined (__acorn) && defined (__unix) + printf ("arm-acorn-riscix\n"); exit (0); +#endif + +#if defined (hp300) && !defined (hpux) + printf ("m68k-hp-bsd\n"); exit (0); +#endif + +#if defined (NeXT) +#if !defined (__ARCHITECTURE__) +#define __ARCHITECTURE__ "m68k" +#endif + int version; + version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; + if (version < 4) + printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); + else + printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); + exit (0); +#endif + +#if defined (MULTIMAX) || defined (n16) +#if defined (UMAXV) + printf ("ns32k-encore-sysv\n"); exit (0); +#else +#if defined (CMU) + printf ("ns32k-encore-mach\n"); exit (0); +#else + printf ("ns32k-encore-bsd\n"); exit (0); +#endif +#endif +#endif + +#if defined (__386BSD__) + printf ("i386-pc-bsd\n"); exit (0); +#endif + +#if defined (sequent) +#if defined (i386) + printf ("i386-sequent-dynix\n"); exit (0); +#endif +#if defined (ns32000) + printf ("ns32k-sequent-dynix\n"); exit (0); +#endif +#endif + +#if defined (_SEQUENT_) + struct utsname un; + + uname(&un); + + if (strncmp(un.version, "V2", 2) == 0) { + printf ("i386-sequent-ptx2\n"); exit (0); + } + if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ + printf ("i386-sequent-ptx1\n"); exit (0); + } + printf ("i386-sequent-ptx\n"); exit (0); + +#endif + +#if defined (vax) +# if !defined (ultrix) +# include +# if defined (BSD) +# if BSD == 43 + printf ("vax-dec-bsd4.3\n"); exit (0); +# else +# if BSD == 199006 + printf ("vax-dec-bsd4.3reno\n"); exit (0); +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# endif +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# else + printf ("vax-dec-ultrix\n"); exit (0); +# endif +#endif + +#if defined (alliant) && defined (i860) + printf ("i860-alliant-bsd\n"); exit (0); +#endif + + exit (1); +} +EOF + +$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && + { echo "$SYSTEM_NAME"; exit; } + +# Apollos put the system type in the environment. + +test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } + +# Convex versions that predate uname can use getsysinfo(1) + +if [ -x /usr/convex/getsysinfo ] +then + case `getsysinfo -f cpu_type` in + c1*) + echo c1-convex-bsd + exit ;; + c2*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + c34*) + echo c34-convex-bsd + exit ;; + c38*) + echo c38-convex-bsd + exit ;; + c4*) + echo c4-convex-bsd + exit ;; + esac +fi + +cat >&2 < in order to provide the needed +information to handle your system. + +config.guess timestamp = $timestamp + +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null` + +hostinfo = `(hostinfo) 2>/dev/null` +/bin/universe = `(/bin/universe) 2>/dev/null` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` +/bin/arch = `(/bin/arch) 2>/dev/null` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` + +UNAME_MACHINE = ${UNAME_MACHINE} +UNAME_RELEASE = ${UNAME_RELEASE} +UNAME_SYSTEM = ${UNAME_SYSTEM} +UNAME_VERSION = ${UNAME_VERSION} +EOF + +exit 1 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/config.h.in b/config.h.in new file mode 100644 index 000000000..bd5411275 --- /dev/null +++ b/config.h.in @@ -0,0 +1,85 @@ +/* config.h.in. Generated from configure.ac by autoheader. */ + +/* always defined to indicate that i18n is enabled */ +#undef ENABLE_NLS + +/* Gettext package */ +#undef GETTEXT_PACKAGE + +/* Define to 1 if you have the `bind_textdomain_codeset' function. */ +#undef HAVE_BIND_TEXTDOMAIN_CODESET + +/* Define to 1 if you have the `dcgettext' function. */ +#undef HAVE_DCGETTEXT + +/* Define to 1 if you have the header file. */ +#undef HAVE_DLFCN_H + +/* Define if the GNU gettext() function is already present or preinstalled. */ +#undef HAVE_GETTEXT + +/* Define to 1 if you have the header file. */ +#undef HAVE_INTTYPES_H + +/* Define if your file defines LC_MESSAGES. */ +#undef HAVE_LC_MESSAGES + +/* Define to 1 if you have the `X11' library (-lX11). */ +#undef HAVE_LIBX11 + +/* Define to 1 if you have the `Xext' library (-lXext). */ +#undef HAVE_LIBXEXT + +/* Define to 1 if you have the `Xss' library (-lXss). */ +#undef HAVE_LIBXSS + +/* Define to 1 if you have the header file. */ +#undef HAVE_LOCALE_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_MEMORY_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDINT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDLIB_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRINGS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRING_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_STAT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TYPES_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_UNISTD_H + +/* Name of package */ +#undef PACKAGE + +/* Define to the address where bug reports for this package should be sent. */ +#undef PACKAGE_BUGREPORT + +/* Define to the full name of this package. */ +#undef PACKAGE_NAME + +/* Define to the full name and version of this package. */ +#undef PACKAGE_STRING + +/* Define to the one symbol short name of this package. */ +#undef PACKAGE_TARNAME + +/* Define to the version of this package. */ +#undef PACKAGE_VERSION + +/* Define to 1 if you have the ANSI C header files. */ +#undef STDC_HEADERS + +/* Version number of package */ +#undef VERSION diff --git a/config.sub b/config.sub new file mode 100755 index 000000000..ae0b3ddff --- /dev/null +++ b/config.sub @@ -0,0 +1,1626 @@ +#! /bin/sh +# Configuration validation subroutine script. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, +# Inc. + +timestamp='2006-07-02' + +# This file is (in principle) common to ALL GNU software. +# The presence of a machine in this file suggests that SOME GNU software +# can handle that machine. It does not imply ALL GNU software can. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA +# 02110-1301, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + + +# Please send patches to . Submit a context +# diff and a properly formatted ChangeLog entry. +# +# Configuration subroutine to validate and canonicalize a configuration type. +# Supply the specified configuration type as an argument. +# If it is invalid, we print an error message on stderr and exit with code 1. +# Otherwise, we print the canonical config type on stdout and succeed. + +# This file is supposed to be the same for all GNU packages +# and recognize all the CPU types, system types and aliases +# that are meaningful with *any* GNU software. +# Each package is responsible for reporting which valid configurations +# it does not support. The user should be able to distinguish +# a failure to support a valid configuration from a meaningless +# configuration. + +# The goal of this file is to map all the various variations of a given +# machine specification into a single specification in the form: +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or in some cases, the newer four-part form: +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# It is wrong to echo any other type of specification. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] CPU-MFR-OPSYS + $0 [OPTION] ALIAS + +Canonicalize a configuration name. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.sub ($timestamp) + +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 +Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" + exit 1 ;; + + *local*) + # First pass through any local machine types. + echo $1 + exit ;; + + * ) + break ;; + esac +done + +case $# in + 0) echo "$me: missing argument$help" >&2 + exit 1;; + 1) ;; + *) echo "$me: too many arguments$help" >&2 + exit 1;; +esac + +# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). +# Here we must recognize all the valid KERNEL-OS combinations. +maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` +case $maybe_os in + nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \ + uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \ + storm-chaos* | os2-emx* | rtmk-nova*) + os=-$maybe_os + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` + ;; + *) + basic_machine=`echo $1 | sed 's/-[^-]*$//'` + if [ $basic_machine != $1 ] + then os=`echo $1 | sed 's/.*-/-/'` + else os=; fi + ;; +esac + +### Let's recognize common machines as not being operating systems so +### that things like config.sub decstation-3100 work. We also +### recognize some manufacturers as not being operating systems, so we +### can provide default operating systems below. +case $os in + -sun*os*) + # Prevent following clause from handling this invalid input. + ;; + -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ + -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ + -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ + -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ + -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ + -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ + -apple | -axis | -knuth | -cray) + os= + basic_machine=$1 + ;; + -sim | -cisco | -oki | -wec | -winbond) + os= + basic_machine=$1 + ;; + -scout) + ;; + -wrs) + os=-vxworks + basic_machine=$1 + ;; + -chorusos*) + os=-chorusos + basic_machine=$1 + ;; + -chorusrdb) + os=-chorusrdb + basic_machine=$1 + ;; + -hiux*) + os=-hiuxwe2 + ;; + -sco6) + os=-sco5v6 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco5) + os=-sco3.2v5 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco4) + os=-sco3.2v4 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2.[4-9]*) + os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2v[4-9]*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco5v6*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco*) + os=-sco3.2v2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -udk*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -isc) + os=-isc2.2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -clix*) + basic_machine=clipper-intergraph + ;; + -isc*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -lynx*) + os=-lynxos + ;; + -ptx*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` + ;; + -windowsnt*) + os=`echo $os | sed -e 's/windowsnt/winnt/'` + ;; + -psos*) + os=-psos + ;; + -mint | -mint[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; +esac + +# Decode aliases for certain CPU-COMPANY combinations. +case $basic_machine in + # Recognize the basic CPU types without company name. + # Some are omitted here because they have special meanings below. + 1750a | 580 \ + | a29k \ + | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ + | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ + | am33_2.0 \ + | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ + | bfin \ + | c4x | clipper \ + | d10v | d30v | dlx | dsp16xx | dvp \ + | fr30 | frv \ + | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | i370 | i860 | i960 | ia64 \ + | ip2k | iq2000 \ + | m32c | m32r | m32rle | m68000 | m68k | m88k \ + | maxq | mb | microblaze | mcore \ + | mips | mipsbe | mipseb | mipsel | mipsle \ + | mips16 \ + | mips64 | mips64el \ + | mips64vr | mips64vrel \ + | mips64orion | mips64orionel \ + | mips64vr4100 | mips64vr4100el \ + | mips64vr4300 | mips64vr4300el \ + | mips64vr5000 | mips64vr5000el \ + | mips64vr5900 | mips64vr5900el \ + | mipsisa32 | mipsisa32el \ + | mipsisa32r2 | mipsisa32r2el \ + | mipsisa64 | mipsisa64el \ + | mipsisa64r2 | mipsisa64r2el \ + | mipsisa64sb1 | mipsisa64sb1el \ + | mipsisa64sr71k | mipsisa64sr71kel \ + | mipstx39 | mipstx39el \ + | mn10200 | mn10300 \ + | mt \ + | msp430 \ + | nios | nios2 \ + | ns16k | ns32k \ + | or32 \ + | pdp10 | pdp11 | pj | pjl \ + | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ + | pyramid \ + | sh | sh[1234] | sh[24]a | sh[24]a*eb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ + | sh64 | sh64le \ + | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ + | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ + | spu | strongarm \ + | tahoe | thumb | tic4x | tic80 | tron \ + | v850 | v850e \ + | we32k \ + | x86 | xscale | xscalee[bl] | xstormy16 | xtensa \ + | z8k) + basic_machine=$basic_machine-unknown + ;; + m6811 | m68hc11 | m6812 | m68hc12) + # Motorola 68HC11/12. + basic_machine=$basic_machine-unknown + os=-none + ;; + m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) + ;; + ms1) + basic_machine=mt-unknown + ;; + + # We use `pc' rather than `unknown' + # because (1) that's what they normally are, and + # (2) the word "unknown" tends to confuse beginning users. + i*86 | x86_64) + basic_machine=$basic_machine-pc + ;; + # Object if more than one company name word. + *-*-*) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; + # Recognize the basic CPU types with company name. + 580-* \ + | a29k-* \ + | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ + | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ + | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ + | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ + | avr-* | avr32-* \ + | bfin-* | bs2000-* \ + | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ + | clipper-* | craynv-* | cydra-* \ + | d10v-* | d30v-* | dlx-* \ + | elxsi-* \ + | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \ + | h8300-* | h8500-* \ + | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ + | i*86-* | i860-* | i960-* | ia64-* \ + | ip2k-* | iq2000-* \ + | m32c-* | m32r-* | m32rle-* \ + | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ + | m88110-* | m88k-* | maxq-* | mcore-* \ + | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ + | mips16-* \ + | mips64-* | mips64el-* \ + | mips64vr-* | mips64vrel-* \ + | mips64orion-* | mips64orionel-* \ + | mips64vr4100-* | mips64vr4100el-* \ + | mips64vr4300-* | mips64vr4300el-* \ + | mips64vr5000-* | mips64vr5000el-* \ + | mips64vr5900-* | mips64vr5900el-* \ + | mipsisa32-* | mipsisa32el-* \ + | mipsisa32r2-* | mipsisa32r2el-* \ + | mipsisa64-* | mipsisa64el-* \ + | mipsisa64r2-* | mipsisa64r2el-* \ + | mipsisa64sb1-* | mipsisa64sb1el-* \ + | mipsisa64sr71k-* | mipsisa64sr71kel-* \ + | mipstx39-* | mipstx39el-* \ + | mmix-* \ + | mt-* \ + | msp430-* \ + | nios-* | nios2-* \ + | none-* | np1-* | ns16k-* | ns32k-* \ + | orion-* \ + | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ + | pyramid-* \ + | romp-* | rs6000-* \ + | sh-* | sh[1234]-* | sh[24]a-* | sh[24]a*eb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ + | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ + | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ + | sparclite-* \ + | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \ + | tahoe-* | thumb-* \ + | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ + | tron-* \ + | v850-* | v850e-* | vax-* \ + | we32k-* \ + | x86-* | x86_64-* | xps100-* | xscale-* | xscalee[bl]-* \ + | xstormy16-* | xtensa-* \ + | ymp-* \ + | z8k-*) + ;; + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 386bsd) + basic_machine=i386-unknown + os=-bsd + ;; + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + basic_machine=m68000-att + ;; + 3b*) + basic_machine=we32k-att + ;; + a29khif) + basic_machine=a29k-amd + os=-udi + ;; + abacus) + basic_machine=abacus-unknown + ;; + adobe68k) + basic_machine=m68010-adobe + os=-scout + ;; + alliant | fx80) + basic_machine=fx80-alliant + ;; + altos | altos3068) + basic_machine=m68k-altos + ;; + am29k) + basic_machine=a29k-none + os=-bsd + ;; + amd64) + basic_machine=x86_64-pc + ;; + amd64-*) + basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + amdahl) + basic_machine=580-amdahl + os=-sysv + ;; + amiga | amiga-*) + basic_machine=m68k-unknown + ;; + amigaos | amigados) + basic_machine=m68k-unknown + os=-amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + os=-sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + os=-sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + os=-bsd + ;; + aux) + basic_machine=m68k-apple + os=-aux + ;; + balance) + basic_machine=ns32k-sequent + os=-dynix + ;; + c90) + basic_machine=c90-cray + os=-unicos + ;; + convex-c1) + basic_machine=c1-convex + os=-bsd + ;; + convex-c2) + basic_machine=c2-convex + os=-bsd + ;; + convex-c32) + basic_machine=c32-convex + os=-bsd + ;; + convex-c34) + basic_machine=c34-convex + os=-bsd + ;; + convex-c38) + basic_machine=c38-convex + os=-bsd + ;; + cray | j90) + basic_machine=j90-cray + os=-unicos + ;; + craynv) + basic_machine=craynv-cray + os=-unicosmp + ;; + cr16c) + basic_machine=cr16c-unknown + os=-elf + ;; + crds | unos) + basic_machine=m68k-crds + ;; + crisv32 | crisv32-* | etraxfs*) + basic_machine=crisv32-axis + ;; + cris | cris-* | etrax*) + basic_machine=cris-axis + ;; + crx) + basic_machine=crx-unknown + os=-elf + ;; + da30 | da30-*) + basic_machine=m68k-da30 + ;; + decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) + basic_machine=mips-dec + ;; + decsystem10* | dec10*) + basic_machine=pdp10-dec + os=-tops10 + ;; + decsystem20* | dec20*) + basic_machine=pdp10-dec + os=-tops20 + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + basic_machine=m68k-motorola + ;; + delta88) + basic_machine=m88k-motorola + os=-sysv3 + ;; + djgpp) + basic_machine=i586-pc + os=-msdosdjgpp + ;; + dpx20 | dpx20-*) + basic_machine=rs6000-bull + os=-bosx + ;; + dpx2* | dpx2*-bull) + basic_machine=m68k-bull + os=-sysv3 + ;; + ebmon29k) + basic_machine=a29k-amd + os=-ebmon + ;; + elxsi) + basic_machine=elxsi-elxsi + os=-bsd + ;; + encore | umax | mmax) + basic_machine=ns32k-encore + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + os=-ose + ;; + fx2800) + basic_machine=i860-alliant + ;; + genix) + basic_machine=ns32k-ns + ;; + gmicro) + basic_machine=tron-gmicro + os=-sysv + ;; + go32) + basic_machine=i386-pc + os=-go32 + ;; + h3050r* | hiux*) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + h8300hms) + basic_machine=h8300-hitachi + os=-hms + ;; + h8300xray) + basic_machine=h8300-hitachi + os=-xray + ;; + h8500hms) + basic_machine=h8500-hitachi + os=-hms + ;; + harris) + basic_machine=m88k-harris + os=-sysv3 + ;; + hp300-*) + basic_machine=m68k-hp + ;; + hp300bsd) + basic_machine=m68k-hp + os=-bsd + ;; + hp300hpux) + basic_machine=m68k-hp + os=-hpux + ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + basic_machine=m68000-hp + ;; + hp9k3[2-9][0-9]) + basic_machine=m68k-hp + ;; + hp9k6[0-9][0-9] | hp6[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k7[0-79][0-9] | hp7[0-79][0-9]) + basic_machine=hppa1.1-hp + ;; + hp9k78[0-9] | hp78[0-9]) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][13679] | hp8[0-9][13679]) + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hppa-next) + os=-nextstep3 + ;; + hppaosf) + basic_machine=hppa1.1-hp + os=-osf + ;; + hppro) + basic_machine=hppa1.1-hp + os=-proelf + ;; + i370-ibm* | ibm*) + basic_machine=i370-ibm + ;; +# I'm not sure what "Sysv32" means. Should this be sysv3.2? + i*86v32) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv32 + ;; + i*86v4*) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv4 + ;; + i*86v) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv + ;; + i*86sol2) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-solaris2 + ;; + i386mach) + basic_machine=i386-mach + os=-mach + ;; + i386-vsta | vsta) + basic_machine=i386-unknown + os=-vsta + ;; + iris | iris4d) + basic_machine=mips-sgi + case $os in + -irix*) + ;; + *) + os=-irix4 + ;; + esac + ;; + isi68 | isi) + basic_machine=m68k-isi + os=-sysv + ;; + m88k-omron*) + basic_machine=m88k-omron + ;; + magnum | m3230) + basic_machine=mips-mips + os=-sysv + ;; + merlin) + basic_machine=ns32k-utek + os=-sysv + ;; + mingw32) + basic_machine=i386-pc + os=-mingw32 + ;; + miniframe) + basic_machine=m68000-convergent + ;; + *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; + mipsEE* | ee | ps2) + basic_machine=mips64r5900el-scei + case $os in + -linux*) + ;; + *) + os=-elf + ;; + esac + ;; + iop) + basic_machine=mipsel-scei + os=-irx + ;; + dvp) + basic_machine=dvp-scei + os=-elf + ;; + mips3*-*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` + ;; + mips3*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown + ;; + monitor) + basic_machine=m68k-rom68k + os=-coff + ;; + morphos) + basic_machine=powerpc-unknown + os=-morphos + ;; + msdos) + basic_machine=i386-pc + os=-msdos + ;; + ms1-*) + basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` + ;; + mvs) + basic_machine=i370-ibm + os=-mvs + ;; + ncr3000) + basic_machine=i486-ncr + os=-sysv4 + ;; + netbsd386) + basic_machine=i386-unknown + os=-netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + os=-linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + os=-newsos + ;; + news1000) + basic_machine=m68030-sony + os=-newsos + ;; + news-3600 | risc-news) + basic_machine=mips-sony + os=-newsos + ;; + necv70) + basic_machine=v70-nec + os=-sysv + ;; + next | m*-next ) + basic_machine=m68k-next + case $os in + -nextstep* ) + ;; + -ns2*) + os=-nextstep2 + ;; + *) + os=-nextstep3 + ;; + esac + ;; + nh3000) + basic_machine=m68k-harris + os=-cxux + ;; + nh[45]000) + basic_machine=m88k-harris + os=-cxux + ;; + nindy960) + basic_machine=i960-intel + os=-nindy + ;; + mon960) + basic_machine=i960-intel + os=-mon960 + ;; + nonstopux) + basic_machine=mips-compaq + os=-nonstopux + ;; + np1) + basic_machine=np1-gould + ;; + nsr-tandem) + basic_machine=nsr-tandem + ;; + op50n-* | op60c-*) + basic_machine=hppa1.1-oki + os=-proelf + ;; + openrisc | openrisc-*) + basic_machine=or32-unknown + ;; + os400) + basic_machine=powerpc-ibm + os=-os400 + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + os=-ose + ;; + os68k) + basic_machine=m68k-none + os=-os68k + ;; + pa-hitachi) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + paragon) + basic_machine=i860-intel + os=-osf + ;; + pbd) + basic_machine=sparc-tti + ;; + pbb) + basic_machine=m68k-tti + ;; + pc532 | pc532-*) + basic_machine=ns32k-pc532 + ;; + pc98) + basic_machine=i386-pc + ;; + pc98-*) + basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium | p5 | k5 | k6 | nexgen | viac3) + basic_machine=i586-pc + ;; + pentiumpro | p6 | 6x86 | athlon | athlon_*) + basic_machine=i686-pc + ;; + pentiumii | pentium2 | pentiumiii | pentium3) + basic_machine=i686-pc + ;; + pentium4) + basic_machine=i786-pc + ;; + pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) + basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumpro-* | p6-* | 6x86-* | athlon-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium4-*) + basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pn) + basic_machine=pn-gould + ;; + power) basic_machine=power-ibm + ;; + ppc) basic_machine=powerpc-unknown + ;; + ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppcle | powerpclittle | ppc-le | powerpc-little) + basic_machine=powerpcle-unknown + ;; + ppcle-* | powerpclittle-*) + basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64) basic_machine=powerpc64-unknown + ;; + ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64le | powerpc64little | ppc64-le | powerpc64-little) + basic_machine=powerpc64le-unknown + ;; + ppc64le-* | powerpc64little-*) + basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ps2) + basic_machine=i386-ibm + ;; + pw32) + basic_machine=i586-unknown + os=-pw32 + ;; + rdos) + basic_machine=i386-pc + os=-rdos + ;; + rom68k) + basic_machine=m68k-rom68k + os=-coff + ;; + rm[46]00) + basic_machine=mips-siemens + ;; + rtpc | rtpc-*) + basic_machine=romp-ibm + ;; + s390 | s390-*) + basic_machine=s390-ibm + ;; + s390x | s390x-*) + basic_machine=s390x-ibm + ;; + sa29200) + basic_machine=a29k-amd + os=-udi + ;; + sb1) + basic_machine=mipsisa64sb1-unknown + ;; + sb1el) + basic_machine=mipsisa64sb1el-unknown + ;; + sei) + basic_machine=mips-sei + os=-seiux + ;; + sequent) + basic_machine=i386-sequent + ;; + sh) + basic_machine=sh-hitachi + os=-hms + ;; + sh64) + basic_machine=sh64-unknown + ;; + sparclite-wrs | simso-wrs) + basic_machine=sparclite-wrs + os=-vxworks + ;; + sps7) + basic_machine=m68k-bull + os=-sysv2 + ;; + spur) + basic_machine=spur-unknown + ;; + st2000) + basic_machine=m68k-tandem + ;; + stratus) + basic_machine=i860-stratus + os=-sysv4 + ;; + sun2) + basic_machine=m68000-sun + ;; + sun2os3) + basic_machine=m68000-sun + os=-sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + os=-sunos4 + ;; + sun3os3) + basic_machine=m68k-sun + os=-sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + os=-sunos4 + ;; + sun4os3) + basic_machine=sparc-sun + os=-sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + os=-sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + os=-solaris2 + ;; + sun3 | sun3-*) + basic_machine=m68k-sun + ;; + sun4) + basic_machine=sparc-sun + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + ;; + sv1) + basic_machine=sv1-cray + os=-unicos + ;; + symmetry) + basic_machine=i386-sequent + os=-dynix + ;; + t3e) + basic_machine=alphaev5-cray + os=-unicos + ;; + t90) + basic_machine=t90-cray + os=-unicos + ;; + tic54x | c54x*) + basic_machine=tic54x-unknown + os=-coff + ;; + tic55x | c55x*) + basic_machine=tic55x-unknown + os=-coff + ;; + tic6x | c6x*) + basic_machine=tic6x-unknown + os=-coff + ;; + tx39) + basic_machine=mipstx39-unknown + ;; + tx39el) + basic_machine=mipstx39el-unknown + ;; + toad1) + basic_machine=pdp10-xkl + os=-tops20 + ;; + tower | tower-32) + basic_machine=m68k-ncr + ;; + tpf) + basic_machine=s390x-ibm + os=-tpf + ;; + udi29k) + basic_machine=a29k-amd + os=-udi + ;; + ultra3) + basic_machine=a29k-nyu + os=-sym1 + ;; + v810 | necv810) + basic_machine=v810-nec + os=-none + ;; + vaxv) + basic_machine=vax-dec + os=-sysv + ;; + vms) + basic_machine=vax-dec + os=-vms + ;; + vpp*|vx|vx-*) + basic_machine=f301-fujitsu + ;; + vxworks960) + basic_machine=i960-wrs + os=-vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + os=-vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + os=-vxworks + ;; + w65*) + basic_machine=w65-wdc + os=-none + ;; + w89k-*) + basic_machine=hppa1.1-winbond + os=-proelf + ;; + xbox) + basic_machine=i686-pc + os=-mingw32 + ;; + xps | xps100) + basic_machine=xps100-honeywell + ;; + ymp) + basic_machine=ymp-cray + os=-unicos + ;; + z8k-*-coff) + basic_machine=z8k-unknown + os=-sim + ;; + none) + basic_machine=none-none + os=-none + ;; + +# Here we handle the default manufacturer of certain CPU types. It is in +# some cases the only manufacturer, in others, it is the most popular. + w89k) + basic_machine=hppa1.1-winbond + ;; + op50n) + basic_machine=hppa1.1-oki + ;; + op60c) + basic_machine=hppa1.1-oki + ;; + romp) + basic_machine=romp-ibm + ;; + mmix) + basic_machine=mmix-knuth + ;; + rs6000) + basic_machine=rs6000-ibm + ;; + vax) + basic_machine=vax-dec + ;; + pdp10) + # there are many clones, so DEC is not a safe bet + basic_machine=pdp10-unknown + ;; + pdp11) + basic_machine=pdp11-dec + ;; + we32k) + basic_machine=we32k-att + ;; + sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele) + basic_machine=sh-unknown + ;; + sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) + basic_machine=sparc-sun + ;; + cydra) + basic_machine=cydra-cydrome + ;; + orion) + basic_machine=orion-highlevel + ;; + orion105) + basic_machine=clipper-highlevel + ;; + mac | mpw | mac-mpw) + basic_machine=m68k-apple + ;; + pmac | pmac-mpw) + basic_machine=powerpc-apple + ;; + *-unknown) + # Make sure to match an already-canonicalized machine name. + ;; + *) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; +esac + +# Here we canonicalize certain aliases for manufacturers. +case $basic_machine in + *-digital*) + basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` + ;; + *-commodore*) + basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` + ;; + *) + ;; +esac + +# Decode manufacturer-specific aliases for certain operating systems. + +if [ x"$os" != x"" ] +then +case $os in + # First match some system type aliases + # that might get confused with valid system types. + # -solaris* is a basic system type, with this one exception. + -solaris1 | -solaris1.*) + os=`echo $os | sed -e 's|solaris1|sunos4|'` + ;; + -solaris) + os=-solaris2 + ;; + -svr4*) + os=-sysv4 + ;; + -unixware*) + os=-sysv4.2uw + ;; + -gnu/linux*) + os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` + ;; + # First accept the basic system types. + # The portable systems comes first. + # Each alternative MUST END IN A *, to match a version number. + # -sysv* is not here because it comes later, after sysvr4. + -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ + | -aos* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ + | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ + | -openbsd* | -solidbsd* \ + | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ + | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ + | -chorusos* | -chorusrdb* \ + | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \ + | -uxpv* | -beos* | -mpeix* | -udk* \ + | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ + | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ + | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ + | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ + | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ + | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ + | -skyos* | -haiku* | -rdos* | -toppers* | -irx*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -qnx*) + case $basic_machine in + x86-* | i*86-*) + ;; + *) + os=-nto$os + ;; + esac + ;; + -nto-qnx*) + ;; + -nto*) + os=`echo $os | sed -e 's|nto|nto-qnx|'` + ;; + -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ + | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ + | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) + ;; + -mac*) + os=`echo $os | sed -e 's|mac|macos|'` + ;; + -linux-dietlibc) + os=-linux-dietlibc + ;; + -linux*) + os=`echo $os | sed -e 's|linux|linux-gnu|'` + ;; + -sunos5*) + os=`echo $os | sed -e 's|sunos5|solaris2|'` + ;; + -sunos6*) + os=`echo $os | sed -e 's|sunos6|solaris3|'` + ;; + -opened*) + os=-openedition + ;; + -os400*) + os=-os400 + ;; + -wince*) + os=-wince + ;; + -osfrose*) + os=-osfrose + ;; + -osf*) + os=-osf + ;; + -utek*) + os=-bsd + ;; + -dynix*) + os=-bsd + ;; + -acis*) + os=-aos + ;; + -atheos*) + os=-atheos + ;; + -syllable*) + os=-syllable + ;; + -386bsd) + os=-bsd + ;; + -ctix* | -uts*) + os=-sysv + ;; + -nova*) + os=-rtmk-nova + ;; + -ns2 ) + os=-nextstep2 + ;; + -nsk*) + os=-nsk + ;; + # Preserve the version number of sinix5. + -sinix5.*) + os=`echo $os | sed -e 's|sinix|sysv|'` + ;; + -sinix*) + os=-sysv4 + ;; + -tpf*) + os=-tpf + ;; + -triton*) + os=-sysv3 + ;; + -oss*) + os=-sysv3 + ;; + -svr4) + os=-sysv4 + ;; + -svr3) + os=-sysv3 + ;; + -sysvr4) + os=-sysv4 + ;; + # This must come after -sysvr4. + -sysv*) + ;; + -ose*) + os=-ose + ;; + -es1800*) + os=-ose + ;; + -xenix) + os=-xenix + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + os=-mint + ;; + -aros*) + os=-aros + ;; + -kaos*) + os=-kaos + ;; + -zvmoe) + os=-zvmoe + ;; + -none) + ;; + *) + # Get rid of the `-' at the beginning of $os. + os=`echo $os | sed 's/[^-]*-//'` + echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 + exit 1 + ;; +esac +else + +# Here we handle the default operating systems that come with various machines. +# The value should be what the vendor currently ships out the door with their +# machine or put another way, the most popular os provided with the machine. + +# Note that if you're going to try to match "-MANUFACTURER" here (say, +# "-sun"), then you have to tell the case statement up towards the top +# that MANUFACTURER isn't an operating system. Otherwise, code above +# will signal an error saying that MANUFACTURER isn't an operating +# system, and we'll never get to this point. + +case $basic_machine in + spu-*) + os=-elf + ;; + *-acorn) + os=-riscix1.2 + ;; + arm*-rebel) + os=-linux + ;; + arm*-semi) + os=-aout + ;; + c4x-* | tic4x-*) + os=-coff + ;; + # This must come before the *-dec entry. + pdp10-*) + os=-tops20 + ;; + pdp11-*) + os=-none + ;; + *-dec | vax-*) + os=-ultrix4.2 + ;; + m68*-apollo) + os=-domain + ;; + i386-sun) + os=-sunos4.0.2 + ;; + m68000-sun) + os=-sunos3 + # This also exists in the configure program, but was not the + # default. + # os=-sunos4 + ;; + m68*-cisco) + os=-aout + ;; + mips*-cisco) + os=-elf + ;; + mips*-*) + os=-elf + ;; + or32-*) + os=-coff + ;; + *-tti) # must be before sparc entry or we get the wrong os. + os=-sysv3 + ;; + sparc-* | *-sun) + os=-sunos4.1.1 + ;; + *-be) + os=-beos + ;; + *-haiku) + os=-haiku + ;; + *-ibm) + os=-aix + ;; + *-knuth) + os=-mmixware + ;; + *-wec) + os=-proelf + ;; + *-winbond) + os=-proelf + ;; + *-oki) + os=-proelf + ;; + *-hp) + os=-hpux + ;; + *-hitachi) + os=-hiux + ;; + i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) + os=-sysv + ;; + *-cbm) + os=-amigaos + ;; + *-dg) + os=-dgux + ;; + *-dolphin) + os=-sysv3 + ;; + m68k-ccur) + os=-rtu + ;; + m88k-omron*) + os=-luna + ;; + *-next ) + os=-nextstep + ;; + *-sequent) + os=-ptx + ;; + *-crds) + os=-unos + ;; + *-ns) + os=-genix + ;; + i370-*) + os=-mvs + ;; + *-next) + os=-nextstep3 + ;; + *-gould) + os=-sysv + ;; + *-highlevel) + os=-bsd + ;; + *-encore) + os=-bsd + ;; + *-sgi) + os=-irix + ;; + *-siemens) + os=-sysv4 + ;; + *-masscomp) + os=-rtu + ;; + f30[01]-fujitsu | f700-fujitsu) + os=-uxpv + ;; + *-rom68k) + os=-coff + ;; + *-*bug) + os=-coff + ;; + *-apple) + os=-macos + ;; + *-atari*) + os=-mint + ;; + *) + os=-none + ;; +esac +fi + +# Here we handle the case where we know the os, and the CPU type, but not the +# manufacturer. We pick the logical manufacturer. +vendor=unknown +case $basic_machine in + *-unknown) + case $os in + -riscix*) + vendor=acorn + ;; + -sunos*) + vendor=sun + ;; + -aix*) + vendor=ibm + ;; + -beos*) + vendor=be + ;; + -hpux*) + vendor=hp + ;; + -mpeix*) + vendor=hp + ;; + -hiux*) + vendor=hitachi + ;; + -unos*) + vendor=crds + ;; + -dgux*) + vendor=dg + ;; + -luna*) + vendor=omron + ;; + -genix*) + vendor=ns + ;; + -mvs* | -opened*) + vendor=ibm + ;; + -os400*) + vendor=ibm + ;; + -ptx*) + vendor=sequent + ;; + -tpf*) + vendor=ibm + ;; + -vxsim* | -vxworks* | -windiss*) + vendor=wrs + ;; + -aux*) + vendor=apple + ;; + -hms*) + vendor=hitachi + ;; + -mpw* | -macos*) + vendor=apple + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + vendor=atari + ;; + -vos*) + vendor=stratus + ;; + esac + basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` + ;; +esac + +echo $basic_machine$os +exit + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/configure b/configure new file mode 100755 index 000000000..cd2bb157b --- /dev/null +++ b/configure @@ -0,0 +1,26061 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.60 for Gajim 0.11.0. +# +# Report bugs to . +# +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, +# 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + + +# PATH needs CR +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + +# Support unset when possible. +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +as_nl=' +' +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + { (exit 1); exit 1; } +fi + +# Work around bugs in pre-3.0 UWIN ksh. +for as_var in ENV MAIL MAILPATH +do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# CDPATH. +$as_unset CDPATH + + +if test "x$CONFIG_SHELL" = x; then + if (eval ":") 2>/dev/null; then + as_have_required=yes +else + as_have_required=no +fi + + if test $as_have_required = yes && (eval ": +(as_func_return () { + (exit \$1) +} +as_func_success () { + as_func_return 0 +} +as_func_failure () { + as_func_return 1 +} +as_func_ret_success () { + return 0 +} +as_func_ret_failure () { + return 1 +} + +exitcode=0 +if as_func_success; then + : +else + exitcode=1 + echo as_func_success failed. +fi + +if as_func_failure; then + exitcode=1 + echo as_func_failure succeeded. +fi + +if as_func_ret_success; then + : +else + exitcode=1 + echo as_func_ret_success failed. +fi + +if as_func_ret_failure; then + exitcode=1 + echo as_func_ret_failure succeeded. +fi + +if ( set x; as_func_ret_success y && test x = \"\$1\" ); then + : +else + exitcode=1 + echo positional parameters were not saved. +fi + +test \$exitcode = 0) || { (exit 1); exit 1; } + +( + as_lineno_1=\$LINENO + as_lineno_2=\$LINENO + test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" && + test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; } +") 2> /dev/null; then + : +else + as_candidate_shells= + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in /usr/bin/posix$PATH_SEPARATOR/bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + case $as_dir in + /*) + for as_base in sh bash ksh sh5; do + as_candidate_shells="$as_candidate_shells $as_dir/$as_base" + done;; + esac +done +IFS=$as_save_IFS + + + for as_shell in $as_candidate_shells $SHELL; do + # Try only shells that exist, to save several forks. + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + { ("$as_shell") 2> /dev/null <<\_ASEOF +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +: +_ASEOF +}; then + CONFIG_SHELL=$as_shell + as_have_required=yes + if { "$as_shell" 2> /dev/null <<\_ASEOF +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +: +(as_func_return () { + (exit $1) +} +as_func_success () { + as_func_return 0 +} +as_func_failure () { + as_func_return 1 +} +as_func_ret_success () { + return 0 +} +as_func_ret_failure () { + return 1 +} + +exitcode=0 +if as_func_success; then + : +else + exitcode=1 + echo as_func_success failed. +fi + +if as_func_failure; then + exitcode=1 + echo as_func_failure succeeded. +fi + +if as_func_ret_success; then + : +else + exitcode=1 + echo as_func_ret_success failed. +fi + +if as_func_ret_failure; then + exitcode=1 + echo as_func_ret_failure succeeded. +fi + +if ( set x; as_func_ret_success y && test x = "$1" ); then + : +else + exitcode=1 + echo positional parameters were not saved. +fi + +test $exitcode = 0) || { (exit 1); exit 1; } + +( + as_lineno_1=$LINENO + as_lineno_2=$LINENO + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; } + +_ASEOF +}; then + break +fi + +fi + + done + + if test "x$CONFIG_SHELL" != x; then + for as_var in BASH_ENV ENV + do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var + done + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} +fi + + + if test $as_have_required = no; then + echo This script requires a shell more modern than all the + echo shells that I found on your system. Please install a + echo modern shell, or manually run the script under such a + echo shell if you do have one. + { (exit 1); exit 1; } +fi + + +fi + +fi + + + +(eval "as_func_return () { + (exit \$1) +} +as_func_success () { + as_func_return 0 +} +as_func_failure () { + as_func_return 1 +} +as_func_ret_success () { + return 0 +} +as_func_ret_failure () { + return 1 +} + +exitcode=0 +if as_func_success; then + : +else + exitcode=1 + echo as_func_success failed. +fi + +if as_func_failure; then + exitcode=1 + echo as_func_failure succeeded. +fi + +if as_func_ret_success; then + : +else + exitcode=1 + echo as_func_ret_success failed. +fi + +if as_func_ret_failure; then + exitcode=1 + echo as_func_ret_failure succeeded. +fi + +if ( set x; as_func_ret_success y && test x = \"\$1\" ); then + : +else + exitcode=1 + echo positional parameters were not saved. +fi + +test \$exitcode = 0") || { + echo No shell found that supports shell functions. + echo Please tell autoconf@gnu.org about your system, + echo including any error possibly output before this + echo message +} + + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line after each line using $LINENO; the second 'sed' + # does the real work. The second script uses 'N' to pair each + # line-number line with the line containing $LINENO, and appends + # trailing '-' during substitution so that $LINENO is not a special + # case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # scripts with optimization help from Paolo Bonzini. Blame Lee + # E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in +-n*) + case `echo 'x\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + *) ECHO_C='\c';; + esac;; +*) + ECHO_N='-n';; +esac + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir +fi +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -p' +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +# Find out whether ``test -x'' works. Don't use a zero-byte file, as +# systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + as_executable_p="test -x" +else + as_executable_p=: +fi +rm -f conf$$.file + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + + + +# Check that we are running under the correct shell. +SHELL=${CONFIG_SHELL-/bin/sh} + +case X$ECHO in +X*--fallback-echo) + # Remove one level of quotation (which was required for Make). + ECHO=`echo "$ECHO" | sed 's,\\\\\$\\$0,'$0','` + ;; +esac + +echo=${ECHO-echo} +if test "X$1" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift +elif test "X$1" = X--fallback-echo; then + # Avoid inline document here, it may be left over + : +elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then + # Yippee, $echo works! + : +else + # Restart under the correct shell. + exec $SHELL "$0" --no-reexec ${1+"$@"} +fi + +if test "X$1" = X--fallback-echo; then + # used as fallback echo + shift + cat </dev/null 2>&1 && unset CDPATH + +if test -z "$ECHO"; then +if test "X${echo_test_string+set}" != Xset; then +# find a string as large as possible, as long as the shell can cope with it + for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do + # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... + if (echo_test_string=`eval $cmd`) 2>/dev/null && + echo_test_string=`eval $cmd` && + (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null + then + break + fi + done +fi + +if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + : +else + # The Solaris, AIX, and Digital Unix default echo programs unquote + # backslashes. This makes it impossible to quote backslashes using + # echo "$something" | sed 's/\\/\\\\/g' + # + # So, first we look for a working echo in the user's PATH. + + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for dir in $PATH /usr/ucb; do + IFS="$lt_save_ifs" + if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && + test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + echo="$dir/echo" + break + fi + done + IFS="$lt_save_ifs" + + if test "X$echo" = Xecho; then + # We didn't find a better echo, so look for alternatives. + if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # This shell has a builtin print -r that does the trick. + echo='print -r' + elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && + test "X$CONFIG_SHELL" != X/bin/ksh; then + # If we have ksh, try running configure again with it. + ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} + export ORIGINAL_CONFIG_SHELL + CONFIG_SHELL=/bin/ksh + export CONFIG_SHELL + exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"} + else + # Try using printf. + echo='printf %s\n' + if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # Cool, printf works + : + elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL + export CONFIG_SHELL + SHELL="$CONFIG_SHELL" + export SHELL + echo="$CONFIG_SHELL $0 --fallback-echo" + elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + echo="$CONFIG_SHELL $0 --fallback-echo" + else + # maybe with a smaller string... + prev=: + + for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do + if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null + then + break + fi + prev="$cmd" + done + + if test "$prev" != 'sed 50q "$0"'; then + echo_test_string=`eval $prev` + export echo_test_string + exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"} + else + # Oops. We lost completely, so just stick with echo. + echo=echo + fi + fi + fi + fi +fi +fi + +# Copy echo and quote the copy suitably for passing to libtool from +# the Makefile, instead of quoting the original, which is used later. +ECHO=$echo +if test "X$ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then + ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo" +fi + + + + +tagnames=${tagnames+${tagnames},}CXX + +tagnames=${tagnames+${tagnames},}F77 + +exec 7<&0 &1 + +# Name of the host. +# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_clean_files= +ac_config_libobj_dir=. +LIBOBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= +SHELL=${CONFIG_SHELL-/bin/sh} + +# Identity of this package. +PACKAGE_NAME='Gajim' +PACKAGE_TARNAME='gajim' +PACKAGE_VERSION='0.11.0' +PACKAGE_STRING='Gajim 0.11.0' +PACKAGE_BUGREPORT='http://trac.gajim.org/newticket' + +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#if HAVE_SYS_TYPES_H +# include +#endif +#if HAVE_SYS_STAT_H +# include +#endif +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_STRING_H +# if !STDC_HEADERS && HAVE_MEMORY_H +# include +# endif +# include +#endif +#if HAVE_STRINGS_H +# include +#endif +#if HAVE_INTTYPES_H +# include +#endif +#if HAVE_STDINT_H +# include +#endif +#if HAVE_UNISTD_H +# include +#endif" + +ac_subst_vars='SHELL +PATH_SEPARATOR +PACKAGE_NAME +PACKAGE_TARNAME +PACKAGE_VERSION +PACKAGE_STRING +PACKAGE_BUGREPORT +exec_prefix +prefix +program_transform_name +bindir +sbindir +libexecdir +datarootdir +datadir +sysconfdir +sharedstatedir +localstatedir +includedir +oldincludedir +docdir +infodir +htmldir +dvidir +pdfdir +psdir +libdir +localedir +mandir +DEFS +ECHO_C +ECHO_N +ECHO_T +LIBS +build_alias +host_alias +target_alias +INSTALL_PROGRAM +INSTALL_SCRIPT +INSTALL_DATA +CYGPATH_W +PACKAGE +VERSION +ACLOCAL +AUTOCONF +AUTOMAKE +AUTOHEADER +MAKEINFO +install_sh +STRIP +INSTALL_STRIP_PROGRAM +mkdir_p +AWK +SET_MAKE +am__leading_dot +AMTAR +am__tar +am__untar +MAINTAINER_MODE_TRUE +MAINTAINER_MODE_FALSE +MAINT +INTLTOOL_DESKTOP_RULE +INTLTOOL_DIRECTORY_RULE +INTLTOOL_KEYS_RULE +INTLTOOL_PROP_RULE +INTLTOOL_OAF_RULE +INTLTOOL_PONG_RULE +INTLTOOL_SERVER_RULE +INTLTOOL_SHEET_RULE +INTLTOOL_SOUNDLIST_RULE +INTLTOOL_UI_RULE +INTLTOOL_XAM_RULE +INTLTOOL_KBD_RULE +INTLTOOL_XML_RULE +INTLTOOL_XML_NOMERGE_RULE +INTLTOOL_CAVES_RULE +INTLTOOL_SCHEMAS_RULE +INTLTOOL_THEME_RULE +INTLTOOL_SERVICE_RULE +INTLTOOL_EXTRACT +INTLTOOL_MERGE +INTLTOOL_UPDATE +INTLTOOL_PERL +INTLTOOL_ICONV +INTLTOOL_MSGFMT +INTLTOOL_MSGMERGE +INTLTOOL_XGETTEXT +ALL_LINGUAS +CC +CFLAGS +LDFLAGS +CPPFLAGS +ac_ct_CC +EXEEXT +OBJEXT +DEPDIR +am__include +am__quote +AMDEP_TRUE +AMDEP_FALSE +AMDEPBACKSLASH +CCDEPMODE +am__fastdepCC_TRUE +am__fastdepCC_FALSE +build +build_cpu +build_vendor +build_os +host +host_cpu +host_vendor +host_os +GREP +EGREP +LN_S +ECHO +AR +RANLIB +CPP +CXX +CXXFLAGS +ac_ct_CXX +CXXDEPMODE +am__fastdepCXX_TRUE +am__fastdepCXX_FALSE +CXXCPP +F77 +FFLAGS +ac_ct_F77 +LIBTOOL +GETTEXT_PACKAGE +USE_NLS +MSGFMT +GMSGFMT +XGETTEXT +CATALOGS +CATOBJEXT +DATADIRNAME +GMOFILES +INSTOBJEXT +INTLLIBS +PO_IN_DATADIR_TRUE +PO_IN_DATADIR_FALSE +POFILES +POSUB +MKINSTALLDIRS +XMKMF +PKG_CONFIG +DBUS_CFLAGS +DBUS_LIBS +PYGTK_CFLAGS +PYGTK_LIBS +PYGTK_DEFS +GTKSPELL_CFLAGS +GTKSPELL_LIBS +XSCRNSAVER_CFLAGS +XSCRNSAVER_LIBS +PYTHON +PYTHON_VERSION +PYTHON_PREFIX +PYTHON_EXEC_PREFIX +PYTHON_PLATFORM +pythondir +pkgpythondir +pyexecdir +pkgpyexecdir +PYTHON_INCLUDES +LIBOBJS +LTLIBOBJS' +ac_subst_files='' + ac_precious_vars='build_alias +host_alias +target_alias +CC +CFLAGS +LDFLAGS +CPPFLAGS +CPP +CXX +CXXFLAGS +CCC +CXXCPP +F77 +FFLAGS +XMKMF +PKG_CONFIG +DBUS_CFLAGS +DBUS_LIBS +PYGTK_CFLAGS +PYGTK_LIBS +GTKSPELL_CFLAGS +GTKSPELL_LIBS +XSCRNSAVER_CFLAGS +XSCRNSAVER_LIBS' + + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' + +ac_prev= +ac_dashdash= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval $ac_prev=\$ac_option + ac_prev= + continue + fi + + case $ac_option in + *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *) ac_optarg=yes ;; + esac + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/-/_/g'` + eval enable_$ac_feature=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/-/_/g'` + eval enable_$ac_feature=\$ac_optarg ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package| sed 's/-/_/g'` + eval with_$ac_package=\$ac_optarg ;; + + -without-* | --without-*) + ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package | sed 's/-/_/g'` + eval with_$ac_package=no ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) { echo "$as_me: error: unrecognized option: $ac_option +Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; } + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 + { (exit 1); exit 1; }; } + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + { echo "$as_me: error: missing argument to $ac_option" >&2 + { (exit 1); exit 1; }; } +fi + +# Be sure to have absolute directory names. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir +do + eval ac_val=\$$ac_var + case $ac_val in + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac + { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; } +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. + If a cross compiler is detected then cross compile mode will be used." >&2 + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + { echo "$as_me: error: Working directory cannot be determined" >&2 + { (exit 1); exit 1; }; } +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + { echo "$as_me: error: pwd does not report name of working directory" >&2 + { (exit 1); exit 1; }; } + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$0" || +$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$0" : 'X\(//\)[^/]' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +echo X"$0" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r "$srcdir/$ac_unique_file"; then + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 + { (exit 1); exit 1; }; } +fi +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || { echo "$as_me: error: $ac_msg" >&2 + { (exit 1); exit 1; }; } + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +\`configure' configures Gajim 0.11.0 to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root [DATAROOTDIR/doc/gajim] + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_ACEOF + + cat <<\_ACEOF + +Program names: + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM run sed PROGRAM on installed program names + +X features: + --x-includes=DIR X include files are in DIR + --x-libraries=DIR X library files are in DIR + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of Gajim 0.11.0:";; + esac + cat <<\_ACEOF + +Optional Features: + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --enable-maintainer-mode enable make rules and dependencies not useful + (and sometimes confusing) to the casual installer + --enable-static[=PKGS] build static libraries [default=no] + --enable-shared[=PKGS] build shared libraries [default=yes] + --disable-dependency-tracking speeds up one-time build + --enable-dependency-tracking do not reject slow dependency extractors + --enable-fast-install[=PKGS] + optimize for fast installation [default=yes] + --disable-libtool-lock avoid locking (might break parallel builds) + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-gnu-ld assume the C compiler uses GNU ld [default=no] + --with-pic try to use only PIC/non-PIC objects [default=use + both] + --with-tags[=TAGS] include additional configurations [automatic] + --with-x use the X Window System + +Some influential environment variables: + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I if + you have headers in a nonstandard directory + CPP C preprocessor + CXX C++ compiler command + CXXFLAGS C++ compiler flags + CXXCPP C++ preprocessor + F77 Fortran 77 compiler command + FFLAGS Fortran 77 compiler flags + XMKMF Path to xmkmf, Makefile generator for X Window System + PKG_CONFIG path to pkg-config utility + DBUS_CFLAGS C compiler flags for DBUS, overriding pkg-config + DBUS_LIBS linker flags for DBUS, overriding pkg-config + PYGTK_CFLAGS + C compiler flags for PYGTK, overriding pkg-config + PYGTK_LIBS linker flags for PYGTK, overriding pkg-config + GTKSPELL_CFLAGS + C compiler flags for GTKSPELL, overriding pkg-config + GTKSPELL_LIBS + linker flags for GTKSPELL, overriding pkg-config + XSCRNSAVER_CFLAGS + C compiler flags for XSCRNSAVER, overriding pkg-config + XSCRNSAVER_LIBS + linker flags for XSCRNSAVER, overriding pkg-config + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +Report bugs to . +_ACEOF +ac_status=$? +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d "$ac_dir" || continue + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for guested configure. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive + else + echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +fi + +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +Gajim configure 0.11.0 +generated by GNU Autoconf 2.60 + +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, +2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit +fi +cat >config.log <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by Gajim $as_me 0.11.0, which was +generated by GNU Autoconf 2.60. Invocation command line was + + $ $0 $@ + +_ACEOF +exec 5>>config.log +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + echo "PATH: $as_dir" +done +IFS=$as_save_IFS + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *\'*) + ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; + 2) + ac_configure_args1="$ac_configure_args1 '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + ac_configure_args="$ac_configure_args '$ac_arg'" + ;; + esac + done +done +$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } +$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Use '\'' to represent an apostrophe within the trap. +# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + cat <<\_ASBOX +## ---------------- ## +## Cache variables. ## +## ---------------- ## +_ASBOX + echo + # The following way of writing the cache mishandles newlines in values, +( + for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 +echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + *) $as_unset $ac_var ;; + esac ;; + esac + done + (set) 2>&1 | + case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + sed -n \ + "s/'\''/'\''\\\\'\'''\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" + ;; #( + *) + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) + echo + + cat <<\_ASBOX +## ----------------- ## +## Output variables. ## +## ----------------- ## +_ASBOX + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + echo "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then + cat <<\_ASBOX +## ------------------- ## +## File substitutions. ## +## ------------------- ## +_ASBOX + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + echo "$ac_var='\''$ac_val'\''" + done | sort + echo + fi + + if test -s confdefs.h; then + cat <<\_ASBOX +## ----------- ## +## confdefs.h. ## +## ----------- ## +_ASBOX + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + echo "$as_me: caught signal $ac_signal" + echo "$as_me: exit $exit_status" + } >&5 + rm -f core *.core core.conftest.* && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -f -r conftest* confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer explicitly selected file to automatically selected ones. +if test -n "$CONFIG_SITE"; then + set x "$CONFIG_SITE" +elif test "x$prefix" != xNONE; then + set x "$prefix/share/config.site" "$prefix/etc/config.site" +else + set x "$ac_default_prefix/share/config.site" \ + "$ac_default_prefix/etc/config.site" +fi +shift +for ac_site_file +do + if test -r "$ac_site_file"; then + { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 +echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special + # files actually), so we avoid doing that. + if test -f "$cache_file"; then + { echo "$as_me:$LINENO: loading cache $cache_file" >&5 +echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi +else + { echo "$as_me:$LINENO: creating cache $cache_file" >&5 +echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 +echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 +echo "$as_me: former value: $ac_old_val" >&2;} + { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 +echo "$as_me: current value: $ac_new_val" >&2;} + ac_cache_corrupted=: + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 +echo "$as_me: error: changes in the environment can compromise the build" >&2;} + { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 +echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} + { (exit 1); exit 1; }; } +fi + + + + + + + + + + + + + + + + + + + + + + + + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +am__api_version="1.9" +ac_aux_dir= +for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do + if test -f "$ac_dir/install-sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f "$ac_dir/install.sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + elif test -f "$ac_dir/shtool"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break + fi +done +if test -z "$ac_aux_dir"; then + { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&5 +echo "$as_me: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&2;} + { (exit 1); exit 1; }; } +fi + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. +ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. +ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. + + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +{ echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 +echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6; } +if test -z "$INSTALL"; then +if test "${ac_cv_path_install+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in + ./ | .// | /cC/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; }; then + if test $ac_prog = install && + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + done + done + ;; +esac +done +IFS=$as_save_IFS + + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. Don't cache a + # value for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi +fi +{ echo "$as_me:$LINENO: result: $INSTALL" >&5 +echo "${ECHO_T}$INSTALL" >&6; } + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +{ echo "$as_me:$LINENO: checking whether build environment is sane" >&5 +echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6; } +# Just in case +sleep 1 +echo timestamp > conftest.file +# Do `set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t $srcdir/configure conftest.file` + fi + rm -f conftest.file + if test "$*" != "X $srcdir/configure conftest.file" \ + && test "$*" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + { { echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken +alias in your environment" >&5 +echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken +alias in your environment" >&2;} + { (exit 1); exit 1; }; } + fi + + test "$2" = conftest.file + ) +then + # Ok. + : +else + { { echo "$as_me:$LINENO: error: newly created file is older than distributed files! +Check your system clock" >&5 +echo "$as_me: error: newly created file is older than distributed files! +Check your system clock" >&2;} + { (exit 1); exit 1; }; } +fi +{ echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } +test "$program_prefix" != NONE && + program_transform_name="s&^&$program_prefix&;$program_transform_name" +# Use a double $ so make ignores it. +test "$program_suffix" != NONE && + program_transform_name="s&\$&$program_suffix&;$program_transform_name" +# Double any \ or $. echo might interpret backslashes. +# By default was `s,x,x', remove it if useless. +cat <<\_ACEOF >conftest.sed +s/[\\$]/&&/g;s/;s,x,x,$// +_ACEOF +program_transform_name=`echo $program_transform_name | sed -f conftest.sed` +rm -f conftest.sed + +# expand $ac_aux_dir to an absolute path +am_aux_dir=`cd $ac_aux_dir && pwd` + +test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" +# Use eval to expand $SHELL +if eval "$MISSING --run true"; then + am_missing_run="$MISSING --run " +else + am_missing_run= + { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 +echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} +fi + +if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then + # We used to keeping the `.' as first argument, in order to + # allow $(mkdir_p) to be used without argument. As in + # $(mkdir_p) $(somedir) + # where $(somedir) is conditionally defined. However this is wrong + # for two reasons: + # 1. if the package is installed by a user who cannot write `.' + # make install will fail, + # 2. the above comment should most certainly read + # $(mkdir_p) $(DESTDIR)$(somedir) + # so it does not work when $(somedir) is undefined and + # $(DESTDIR) is not. + # To support the latter case, we have to write + # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir), + # so the `.' trick is pointless. + mkdir_p='mkdir -p --' +else + # On NextStep and OpenStep, the `mkdir' command does not + # recognize any option. It will interpret all options as + # directories to create, and then abort because `.' already + # exists. + for d in ./-p ./--version; + do + test -d $d && rmdir $d + done + # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists. + if test -f "$ac_aux_dir/mkinstalldirs"; then + mkdir_p='$(mkinstalldirs)' + else + mkdir_p='$(install_sh) -d' + fi +fi + +for ac_prog in gawk mawk nawk awk +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_AWK+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_AWK="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + { echo "$as_me:$LINENO: result: $AWK" >&5 +echo "${ECHO_T}$AWK" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + + test -n "$AWK" && break +done + +{ echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6; } +set x ${MAKE-make}; ac_make=`echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.make <<\_ACEOF +SHELL = /bin/sh +all: + @echo '@@@%%%=$(MAKE)=@@@%%%' +_ACEOF +# GNU make sometimes prints "make[1]: Entering...", which would confuse us. +case `${MAKE-make} -f conftest.make 2>/dev/null` in + *@@@%%%=?*=@@@%%%*) + eval ac_cv_prog_make_${ac_make}_set=yes;; + *) + eval ac_cv_prog_make_${ac_make}_set=no;; +esac +rm -f conftest.make +fi +if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } + SET_MAKE= +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } + SET_MAKE="MAKE=${MAKE-make}" +fi + +rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null + +# test to see if srcdir already configured +if test "`cd $srcdir && pwd`" != "`pwd`" && + test -f $srcdir/config.status; then + { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 +echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} + { (exit 1); exit 1; }; } +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi + + +# Define the identity of the package. + PACKAGE='gajim' + VERSION='0.11.0' + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE "$PACKAGE" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define VERSION "$VERSION" +_ACEOF + +# Some tools Automake needs. + +ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} + + +AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} + + +AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} + + +AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} + + +MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} + +install_sh=${install_sh-"$am_aux_dir/install-sh"} + +# Installed binaries are usually stripped using `strip' when the user +# run `make install-strip'. However `strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the `STRIP' environment variable to overrule this program. +if test "$cross_compiling" != no; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { echo "$as_me:$LINENO: result: $STRIP" >&5 +echo "${ECHO_T}$STRIP" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_STRIP="strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 +echo "${ECHO_T}$ac_ct_STRIP" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +fi +INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" + +# We need awk for the "check" target. The system "awk" is bad on +# some platforms. +# Always define AMTAR for backward compatibility. + +AMTAR=${AMTAR-"${am_missing_run}tar"} + +am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' + + + + + +ac_config_headers="$ac_config_headers config.h" + + +{ echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5 +echo $ECHO_N "checking whether to enable maintainer-specific portions of Makefiles... $ECHO_C" >&6; } + # Check whether --enable-maintainer-mode was given. +if test "${enable_maintainer_mode+set}" = set; then + enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval +else + USE_MAINTAINER_MODE=no +fi + + { echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5 +echo "${ECHO_T}$USE_MAINTAINER_MODE" >&6; } + + +if test $USE_MAINTAINER_MODE = yes; then + MAINTAINER_MODE_TRUE= + MAINTAINER_MODE_FALSE='#' +else + MAINTAINER_MODE_TRUE='#' + MAINTAINER_MODE_FALSE= +fi + + MAINT=$MAINTAINER_MODE_TRUE + + + + +case "$am__api_version" in + 1.01234) + { { echo "$as_me:$LINENO: error: Automake 1.5 or newer is required to use intltool" >&5 +echo "$as_me: error: Automake 1.5 or newer is required to use intltool" >&2;} + { (exit 1); exit 1; }; } + ;; + *) + ;; +esac + +if test -n "0.35.0"; then + { echo "$as_me:$LINENO: checking for intltool >= 0.35.0" >&5 +echo $ECHO_N "checking for intltool >= 0.35.0... $ECHO_C" >&6; } + + INTLTOOL_REQUIRED_VERSION_AS_INT=`echo 0.35.0 | awk -F. '{ print $ 1 * 1000 + $ 2 * 100 + $ 3; }'` + INTLTOOL_APPLIED_VERSION=`awk -F\" '/\\$VERSION / { print $ 2; }' ${ac_aux_dir}/intltool-update.in` + INTLTOOL_APPLIED_VERSION_AS_INT=`awk -F\" '/\\$VERSION / { split($ 2, VERSION, "."); print VERSION[1] * 1000 + VERSION[2] * 100 + VERSION[3];}' ${ac_aux_dir}/intltool-update.in` + + { echo "$as_me:$LINENO: result: $INTLTOOL_APPLIED_VERSION found" >&5 +echo "${ECHO_T}$INTLTOOL_APPLIED_VERSION found" >&6; } + test "$INTLTOOL_APPLIED_VERSION_AS_INT" -ge "$INTLTOOL_REQUIRED_VERSION_AS_INT" || + { { echo "$as_me:$LINENO: error: Your intltool is too old. You need intltool 0.35.0 or later." >&5 +echo "$as_me: error: Your intltool is too old. You need intltool 0.35.0 or later." >&2;} + { (exit 1); exit 1; }; } +fi + + INTLTOOL_DESKTOP_RULE='%.desktop: %.desktop.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' +INTLTOOL_DIRECTORY_RULE='%.directory: %.directory.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' + INTLTOOL_KEYS_RULE='%.keys: %.keys.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -k -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' + INTLTOOL_PROP_RULE='%.prop: %.prop.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' + INTLTOOL_OAF_RULE='%.oaf: %.oaf.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -o -p $(top_srcdir)/po $< $@' + INTLTOOL_PONG_RULE='%.pong: %.pong.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' + INTLTOOL_SERVER_RULE='%.server: %.server.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -o -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' + INTLTOOL_SHEET_RULE='%.sheet: %.sheet.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' +INTLTOOL_SOUNDLIST_RULE='%.soundlist: %.soundlist.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' + INTLTOOL_UI_RULE='%.ui: %.ui.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' + INTLTOOL_XML_RULE='%.xml: %.xml.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' + INTLTOOL_XML_NOMERGE_RULE='%.xml: %.xml.in $(INTLTOOL_MERGE) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u /tmp $< $@' + INTLTOOL_XAM_RULE='%.xam: %.xml.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' + INTLTOOL_KBD_RULE='%.kbd: %.kbd.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -m -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' + INTLTOOL_CAVES_RULE='%.caves: %.caves.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' + INTLTOOL_SCHEMAS_RULE='%.schemas: %.schemas.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -s -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' + INTLTOOL_THEME_RULE='%.theme: %.theme.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' + INTLTOOL_SERVICE_RULE='%.service: %.service.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' + + + + + + + + + + + + + + + + + + + + +# Use the tools built into the package, not the ones that are installed. +INTLTOOL_EXTRACT='$(top_builddir)/intltool-extract' + +INTLTOOL_MERGE='$(top_builddir)/intltool-merge' + +INTLTOOL_UPDATE='$(top_builddir)/intltool-update' + + +# Extract the first word of "perl", so it can be a program name with args. +set dummy perl; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_path_INTLTOOL_PERL+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $INTLTOOL_PERL in + [\\/]* | ?:[\\/]*) + ac_cv_path_INTLTOOL_PERL="$INTLTOOL_PERL" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_INTLTOOL_PERL="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + + ;; +esac +fi +INTLTOOL_PERL=$ac_cv_path_INTLTOOL_PERL +if test -n "$INTLTOOL_PERL"; then + { echo "$as_me:$LINENO: result: $INTLTOOL_PERL" >&5 +echo "${ECHO_T}$INTLTOOL_PERL" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +if test -z "$INTLTOOL_PERL"; then + { { echo "$as_me:$LINENO: error: perl not found; required for intltool" >&5 +echo "$as_me: error: perl not found; required for intltool" >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "`$INTLTOOL_PERL -v | fgrep '5.' 2> /dev/null`"; then + { { echo "$as_me:$LINENO: error: perl 5.x required for intltool" >&5 +echo "$as_me: error: perl 5.x required for intltool" >&2;} + { (exit 1); exit 1; }; } +fi +if test "x" != "xno-xml"; then + { echo "$as_me:$LINENO: checking for XML::Parser" >&5 +echo $ECHO_N "checking for XML::Parser... $ECHO_C" >&6; } + if `$INTLTOOL_PERL -e "require XML::Parser" 2>/dev/null`; then + { echo "$as_me:$LINENO: result: ok" >&5 +echo "${ECHO_T}ok" >&6; } + else + { { echo "$as_me:$LINENO: error: XML::Parser perl module is required for intltool" >&5 +echo "$as_me: error: XML::Parser perl module is required for intltool" >&2;} + { (exit 1); exit 1; }; } + fi +fi + +# Extract the first word of "iconv", so it can be a program name with args. +set dummy iconv; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_path_INTLTOOL_ICONV+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $INTLTOOL_ICONV in + [\\/]* | ?:[\\/]*) + ac_cv_path_INTLTOOL_ICONV="$INTLTOOL_ICONV" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_INTLTOOL_ICONV="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + + test -z "$ac_cv_path_INTLTOOL_ICONV" && ac_cv_path_INTLTOOL_ICONV="iconv" + ;; +esac +fi +INTLTOOL_ICONV=$ac_cv_path_INTLTOOL_ICONV +if test -n "$INTLTOOL_ICONV"; then + { echo "$as_me:$LINENO: result: $INTLTOOL_ICONV" >&5 +echo "${ECHO_T}$INTLTOOL_ICONV" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +# Extract the first word of "msgfmt", so it can be a program name with args. +set dummy msgfmt; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_path_INTLTOOL_MSGFMT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $INTLTOOL_MSGFMT in + [\\/]* | ?:[\\/]*) + ac_cv_path_INTLTOOL_MSGFMT="$INTLTOOL_MSGFMT" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_INTLTOOL_MSGFMT="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + + test -z "$ac_cv_path_INTLTOOL_MSGFMT" && ac_cv_path_INTLTOOL_MSGFMT="msgfmt" + ;; +esac +fi +INTLTOOL_MSGFMT=$ac_cv_path_INTLTOOL_MSGFMT +if test -n "$INTLTOOL_MSGFMT"; then + { echo "$as_me:$LINENO: result: $INTLTOOL_MSGFMT" >&5 +echo "${ECHO_T}$INTLTOOL_MSGFMT" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +# Extract the first word of "msgmerge", so it can be a program name with args. +set dummy msgmerge; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_path_INTLTOOL_MSGMERGE+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $INTLTOOL_MSGMERGE in + [\\/]* | ?:[\\/]*) + ac_cv_path_INTLTOOL_MSGMERGE="$INTLTOOL_MSGMERGE" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_INTLTOOL_MSGMERGE="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + + test -z "$ac_cv_path_INTLTOOL_MSGMERGE" && ac_cv_path_INTLTOOL_MSGMERGE="msgmerge" + ;; +esac +fi +INTLTOOL_MSGMERGE=$ac_cv_path_INTLTOOL_MSGMERGE +if test -n "$INTLTOOL_MSGMERGE"; then + { echo "$as_me:$LINENO: result: $INTLTOOL_MSGMERGE" >&5 +echo "${ECHO_T}$INTLTOOL_MSGMERGE" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +# Extract the first word of "xgettext", so it can be a program name with args. +set dummy xgettext; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_path_INTLTOOL_XGETTEXT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $INTLTOOL_XGETTEXT in + [\\/]* | ?:[\\/]*) + ac_cv_path_INTLTOOL_XGETTEXT="$INTLTOOL_XGETTEXT" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_INTLTOOL_XGETTEXT="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + + test -z "$ac_cv_path_INTLTOOL_XGETTEXT" && ac_cv_path_INTLTOOL_XGETTEXT="xgettext" + ;; +esac +fi +INTLTOOL_XGETTEXT=$ac_cv_path_INTLTOOL_XGETTEXT +if test -n "$INTLTOOL_XGETTEXT"; then + { echo "$as_me:$LINENO: result: $INTLTOOL_XGETTEXT" >&5 +echo "${ECHO_T}$INTLTOOL_XGETTEXT" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + + +# Substitute ALL_LINGUAS so we can use it in po/Makefile + + + + + +ac_config_commands="$ac_config_commands intltool" + + + + + +# Check whether --enable-static was given. +if test "${enable_static+set}" = set; then + enableval=$enable_static; p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_static=no +fi + + + +# Check whether --enable-shared was given. +if test "${enable_shared+set}" = set; then + enableval=$enable_shared; p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_shared=yes +fi + + +# Check whether --enable-static was given. +if test "${enable_static+set}" = set; then + enableval=$enable_static; p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_static=no +fi + + + +DEPDIR="${am__leading_dot}deps" + +ac_config_commands="$ac_config_commands depfiles" + + +am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo done +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +{ echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 +echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6; } +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# We grep out `Entering directory' and `Leaving directory' +# messages which can occur if `w' ends up in MAKEFLAGS. +# In particular we don't look at `^make:' because GNU make might +# be invoked under some other name (usually "gmake"), in which +# case it prints its new name instead of `make'. +if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then + am__include=include + am__quote= + _am_result=GNU +fi +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then + am__include=.include + am__quote="\"" + _am_result=BSD + fi +fi + + +{ echo "$as_me:$LINENO: result: $_am_result" >&5 +echo "${ECHO_T}$_am_result" >&6; } +rm -f confinc confmf + +# Check whether --enable-dependency-tracking was given. +if test "${enable_dependency_tracking+set}" = set; then + enableval=$enable_dependency_tracking; +fi + +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' +fi + + +if test "x$enable_dependency_tracking" != xno; then + AMDEP_TRUE= + AMDEP_FALSE='#' +else + AMDEP_TRUE='#' + AMDEP_FALSE= +fi + + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CC="gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CC="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi + + +test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&5 +echo "$as_me: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + +# Provide some information about the compiler. +echo "$as_me:$LINENO: checking for C compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (ac_try="$ac_compiler --version >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compiler --version >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (ac_try="$ac_compiler -v >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compiler -v >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (ac_try="$ac_compiler -V >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compiler -V >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +{ echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 +echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6; } +ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` +# +# List of possible output files, starting from the most likely. +# The algorithm is not robust to junk in `.', hence go to wildcards (a.*) +# only as a last resort. b.out is created by i960 compilers. +ac_files='a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out' +# +# The IRIX 6 linker writes into existing files which may not be +# executable, retaining their permissions. Remove them first so a +# subsequent execution test works. +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { (ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link_default") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. +# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an `-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. + break;; + * ) + break;; + esac +done +test "$ac_cv_exeext" = no && ac_cv_exeext= + +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { echo "$as_me:$LINENO: error: C compiler cannot create executables +See \`config.log' for more details." >&5 +echo "$as_me: error: C compiler cannot create executables +See \`config.log' for more details." >&2;} + { (exit 77); exit 77; }; } +fi + +ac_exeext=$ac_cv_exeext +{ echo "$as_me:$LINENO: result: $ac_file" >&5 +echo "${ECHO_T}$ac_file" >&6; } + +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ echo "$as_me:$LINENO: checking whether the C compiler works" >&5 +echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6; } +# FIXME: These cross compiler hacks should be removed for Autoconf 3.0 +# If not cross compiling, check that we can run a simple program. +if test "$cross_compiling" != yes; then + if { ac_try='./$ac_file' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { echo "$as_me:$LINENO: error: cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + fi + fi +fi +{ echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } + +rm -f a.out a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 +echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6; } +{ echo "$as_me:$LINENO: result: $cross_compiling" >&5 +echo "${ECHO_T}$cross_compiling" >&6; } + +{ echo "$as_me:$LINENO: checking for suffix of executables" >&5 +echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6; } +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + break;; + * ) break;; + esac +done +else + { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest$ac_cv_exeext +{ echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 +echo "${ECHO_T}$ac_cv_exeext" >&6; } + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +{ echo "$as_me:$LINENO: checking for suffix of object files" >&5 +echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6; } +if test "${ac_cv_objext+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute suffix of object files: cannot compile +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 +echo "${ECHO_T}$ac_cv_objext" >&6; } +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +{ echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; } +if test "${ac_cv_c_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_compiler_gnu=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +{ echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; } +GCC=`test $ac_compiler_gnu = yes && echo yes` +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 +echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; } +if test "${ac_cv_prog_cc_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cc_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + CFLAGS="" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cc_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag +fi +{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; } +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5 +echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; } +if test "${ac_cv_prog_cc_c89+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#include +#include +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) 'x' +int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ + -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cc_c89=$ac_arg +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC + +fi +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c89" in + x) + { echo "$as_me:$LINENO: result: none needed" >&5 +echo "${ECHO_T}none needed" >&6; } ;; + xno) + { echo "$as_me:$LINENO: result: unsupported" >&5 +echo "${ECHO_T}unsupported" >&6; } ;; + *) + CC="$CC $ac_cv_prog_cc_c89" + { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;; +esac + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +depcc="$CC" am_compiler_list= + +{ echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 +echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; } +if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + case $depmode in + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + none) break ;; + esac + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. + if depmode=$depmode \ + source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + +fi +{ echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 +echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6; } +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + + +if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +fi + + + +{ echo "$as_me:$LINENO: checking for library containing strerror" >&5 +echo $ECHO_N "checking for library containing strerror... $ECHO_C" >&6; } +if test "${ac_cv_search_strerror+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_func_search_save_LIBS=$LIBS +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char strerror (); +int +main () +{ +return strerror (); + ; + return 0; +} +_ACEOF +for ac_lib in '' cposix; do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_search_strerror=$ac_res +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext + if test "${ac_cv_search_strerror+set}" = set; then + break +fi +done +if test "${ac_cv_search_strerror+set}" = set; then + : +else + ac_cv_search_strerror=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_search_strerror" >&5 +echo "${ECHO_T}$ac_cv_search_strerror" >&6; } +ac_res=$ac_cv_search_strerror +if test "$ac_res" != no; then + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CC="gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CC="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi + + +test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&5 +echo "$as_me: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + +# Provide some information about the compiler. +echo "$as_me:$LINENO: checking for C compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (ac_try="$ac_compiler --version >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compiler --version >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (ac_try="$ac_compiler -v >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compiler -v >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (ac_try="$ac_compiler -V >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compiler -V >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + +{ echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; } +if test "${ac_cv_c_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_compiler_gnu=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +{ echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; } +GCC=`test $ac_compiler_gnu = yes && echo yes` +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 +echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; } +if test "${ac_cv_prog_cc_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cc_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + CFLAGS="" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cc_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag +fi +{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; } +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5 +echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; } +if test "${ac_cv_prog_cc_c89+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#include +#include +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) 'x' +int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ + -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cc_c89=$ac_arg +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC + +fi +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c89" in + x) + { echo "$as_me:$LINENO: result: none needed" >&5 +echo "${ECHO_T}none needed" >&6; } ;; + xno) + { echo "$as_me:$LINENO: result: unsupported" >&5 +echo "${ECHO_T}unsupported" >&6; } ;; + *) + CC="$CC $ac_cv_prog_cc_c89" + { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;; +esac + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +depcc="$CC" am_compiler_list= + +{ echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 +echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; } +if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + case $depmode in + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + none) break ;; + esac + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. + if depmode=$depmode \ + source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + +fi +{ echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 +echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6; } +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + + +if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +fi + + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +{ echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 +echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6; } +if test -z "$INSTALL"; then +if test "${ac_cv_path_install+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in + ./ | .// | /cC/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; }; then + if test $ac_prog = install && + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + done + done + ;; +esac +done +IFS=$as_save_IFS + + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. Don't cache a + # value for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi +fi +{ echo "$as_me:$LINENO: result: $INSTALL" >&5 +echo "${ECHO_T}$INSTALL" >&6; } + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +{ echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6; } +set x ${MAKE-make}; ac_make=`echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.make <<\_ACEOF +SHELL = /bin/sh +all: + @echo '@@@%%%=$(MAKE)=@@@%%%' +_ACEOF +# GNU make sometimes prints "make[1]: Entering...", which would confuse us. +case `${MAKE-make} -f conftest.make 2>/dev/null` in + *@@@%%%=?*=@@@%%%*) + eval ac_cv_prog_make_${ac_make}_set=yes;; + *) + eval ac_cv_prog_make_${ac_make}_set=no;; +esac +rm -f conftest.make +fi +if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } + SET_MAKE= +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } + SET_MAKE="MAKE=${MAKE-make}" +fi + +# Check whether --enable-fast-install was given. +if test "${enable_fast_install+set}" = set; then + enableval=$enable_fast_install; p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_fast_install=yes +fi + + +# Make sure we can run config.sub. +$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || + { { echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5 +echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;} + { (exit 1); exit 1; }; } + +{ echo "$as_me:$LINENO: checking build system type" >&5 +echo $ECHO_N "checking build system type... $ECHO_C" >&6; } +if test "${ac_cv_build+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_build_alias=$build_alias +test "x$ac_build_alias" = x && + ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` +test "x$ac_build_alias" = x && + { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 +echo "$as_me: error: cannot guess build type; you must specify one" >&2;} + { (exit 1); exit 1; }; } +ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || + { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5 +echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;} + { (exit 1); exit 1; }; } + +fi +{ echo "$as_me:$LINENO: result: $ac_cv_build" >&5 +echo "${ECHO_T}$ac_cv_build" >&6; } +case $ac_cv_build in +*-*-*) ;; +*) { { echo "$as_me:$LINENO: error: invalid value of canonical build" >&5 +echo "$as_me: error: invalid value of canonical build" >&2;} + { (exit 1); exit 1; }; };; +esac +build=$ac_cv_build +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_build +shift +build_cpu=$1 +build_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +build_os=$* +IFS=$ac_save_IFS +case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac + + +{ echo "$as_me:$LINENO: checking host system type" >&5 +echo $ECHO_N "checking host system type... $ECHO_C" >&6; } +if test "${ac_cv_host+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "x$host_alias" = x; then + ac_cv_host=$ac_cv_build +else + ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || + { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5 +echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;} + { (exit 1); exit 1; }; } +fi + +fi +{ echo "$as_me:$LINENO: result: $ac_cv_host" >&5 +echo "${ECHO_T}$ac_cv_host" >&6; } +case $ac_cv_host in +*-*-*) ;; +*) { { echo "$as_me:$LINENO: error: invalid value of canonical host" >&5 +echo "$as_me: error: invalid value of canonical host" >&2;} + { (exit 1); exit 1; }; };; +esac +host=$ac_cv_host +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_host +shift +host_cpu=$1 +host_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +host_os=$* +IFS=$ac_save_IFS +case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac + + +{ echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5 +echo $ECHO_N "checking for a sed that does not truncate output... $ECHO_C" >&6; } +if test "${lt_cv_path_SED+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Loop through the user's path and test for sed and gsed. +# Then use that list of sed's as ones to test for truncation. +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for lt_ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then + lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" + fi + done + done +done +lt_ac_max=0 +lt_ac_count=0 +# Add /usr/xpg4/bin/sed as it is typically found on Solaris +# along with /bin/sed that truncates output. +for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do + test ! -f $lt_ac_sed && continue + cat /dev/null > conftest.in + lt_ac_count=0 + echo $ECHO_N "0123456789$ECHO_C" >conftest.in + # Check for GNU sed and select it if it is found. + if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then + lt_cv_path_SED=$lt_ac_sed + break + fi + while true; do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo >>conftest.nl + $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break + cmp -s conftest.out conftest.nl || break + # 10000 chars as input seems more than enough + test $lt_ac_count -gt 10 && break + lt_ac_count=`expr $lt_ac_count + 1` + if test $lt_ac_count -gt $lt_ac_max; then + lt_ac_max=$lt_ac_count + lt_cv_path_SED=$lt_ac_sed + fi + done +done + +fi + +SED=$lt_cv_path_SED +{ echo "$as_me:$LINENO: result: $SED" >&5 +echo "${ECHO_T}$SED" >&6; } + +{ echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5 +echo $ECHO_N "checking for grep that handles long lines and -e... $ECHO_C" >&6; } +if test "${ac_cv_path_GREP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Extract the first word of "grep ggrep" to use in msg output +if test -z "$GREP"; then +set dummy grep ggrep; ac_prog_name=$2 +if test "${ac_cv_path_GREP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_path_GREP_found=false +# Loop through the user's path and test for each of PROGNAME-LIST +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in grep ggrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_GREP" && $as_executable_p "$ac_path_GREP"; } || continue + # Check for GNU ac_path_GREP and select it if it is found. + # Check for GNU $ac_path_GREP +case `"$ac_path_GREP" --version 2>&1` in +*GNU*) + ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +*) + ac_count=0 + echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + echo 'GREP' >> "conftest.nl" + "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + ac_count=`expr $ac_count + 1` + if test $ac_count -gt ${ac_path_GREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_GREP="$ac_path_GREP" + ac_path_GREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + + $ac_path_GREP_found && break 3 + done +done + +done +IFS=$as_save_IFS + + +fi + +GREP="$ac_cv_path_GREP" +if test -z "$GREP"; then + { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 +echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} + { (exit 1); exit 1; }; } +fi + +else + ac_cv_path_GREP=$GREP +fi + + +fi +{ echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5 +echo "${ECHO_T}$ac_cv_path_GREP" >&6; } + GREP="$ac_cv_path_GREP" + + +{ echo "$as_me:$LINENO: checking for egrep" >&5 +echo $ECHO_N "checking for egrep... $ECHO_C" >&6; } +if test "${ac_cv_path_EGREP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + # Extract the first word of "egrep" to use in msg output +if test -z "$EGREP"; then +set dummy egrep; ac_prog_name=$2 +if test "${ac_cv_path_EGREP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_path_EGREP_found=false +# Loop through the user's path and test for each of PROGNAME-LIST +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in egrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_EGREP" && $as_executable_p "$ac_path_EGREP"; } || continue + # Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP +case `"$ac_path_EGREP" --version 2>&1` in +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +*) + ac_count=0 + echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + echo 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + ac_count=`expr $ac_count + 1` + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + + $ac_path_EGREP_found && break 3 + done +done + +done +IFS=$as_save_IFS + + +fi + +EGREP="$ac_cv_path_EGREP" +if test -z "$EGREP"; then + { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 +echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} + { (exit 1); exit 1; }; } +fi + +else + ac_cv_path_EGREP=$EGREP +fi + + + fi +fi +{ echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5 +echo "${ECHO_T}$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" + + + +# Check whether --with-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then + withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes +else + with_gnu_ld=no +fi + +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + { echo "$as_me:$LINENO: checking for ld used by $CC" >&5 +echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + { echo "$as_me:$LINENO: checking for GNU ld" >&5 +echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6; } +else + { echo "$as_me:$LINENO: checking for non-GNU ld" >&5 +echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6; } +fi +if test "${lt_cv_path_LD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &5 +echo "${ECHO_T}$LD" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi +test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 +echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} + { (exit 1); exit 1; }; } +{ echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 +echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6; } +if test "${lt_cv_prog_gnu_ld+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 &5 +echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6; } +with_gnu_ld=$lt_cv_prog_gnu_ld + + +{ echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5 +echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6; } +if test "${lt_cv_ld_reload_flag+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_ld_reload_flag='-r' +fi +{ echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5 +echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6; } +reload_flag=$lt_cv_ld_reload_flag +case $reload_flag in +"" | " "*) ;; +*) reload_flag=" $reload_flag" ;; +esac +reload_cmds='$LD$reload_flag -o $output$reload_objs' +case $host_os in + darwin*) + if test "$GCC" = yes; then + reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' + else + reload_cmds='$LD$reload_flag -o $output$reload_objs' + fi + ;; +esac + +{ echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5 +echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6; } +if test "${lt_cv_path_NM+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM="$NM" +else + lt_nm_to_check="${ac_tool_prefix}nm" + if test -n "$ac_tool_prefix" && test "$build" = "$host"; then + lt_nm_to_check="$lt_nm_to_check nm" + fi + for lt_tmp_nm in $lt_nm_to_check; do + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + tmp_nm="$ac_dir/$lt_tmp_nm" + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in + */dev/null* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + ;; + esac + fi + done + IFS="$lt_save_ifs" + done + test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm +fi +fi +{ echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5 +echo "${ECHO_T}$lt_cv_path_NM" >&6; } +NM="$lt_cv_path_NM" + +{ echo "$as_me:$LINENO: checking whether ln -s works" >&5 +echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6; } +LN_S=$as_ln_s +if test "$LN_S" = "ln -s"; then + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } +else + { echo "$as_me:$LINENO: result: no, using $LN_S" >&5 +echo "${ECHO_T}no, using $LN_S" >&6; } +fi + +{ echo "$as_me:$LINENO: checking how to recognise dependent libraries" >&5 +echo $ECHO_N "checking how to recognise dependent libraries... $ECHO_C" >&6; } +if test "${lt_cv_deplibs_check_method+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_file_magic_cmd='$MAGIC_CMD' +lt_cv_file_magic_test_file= +lt_cv_deplibs_check_method='unknown' +# Need to set the preceding variable on all platforms that support +# interlibrary dependencies. +# 'none' -- dependencies not supported. +# `unknown' -- same as none, but documents that we really don't know. +# 'pass_all' -- all dependencies passed with no checks. +# 'test_compile' -- check by making test program. +# 'file_magic [[regex]]' -- check by looking for files in library path +# which responds to the $file_magic_cmd with a given extended regex. +# If you have `file' or equivalent on your system and you're not sure +# whether `pass_all' will *always* work, you probably want this one. + +case $host_os in +aix4* | aix5*) + lt_cv_deplibs_check_method=pass_all + ;; + +beos*) + lt_cv_deplibs_check_method=pass_all + ;; + +bsdi[45]*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' + lt_cv_file_magic_cmd='/usr/bin/file -L' + lt_cv_file_magic_test_file=/shlib/libc.so + ;; + +cygwin*) + # func_win32_libid is a shell function defined in ltmain.sh + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + ;; + +mingw* | pw32*) + # Base MSYS/MinGW do not provide the 'file' command needed by + # func_win32_libid shell function, so use a weaker test based on 'objdump'. + lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; + +freebsd* | kfreebsd*-gnu | dragonfly*) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case $host_cpu in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]' + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +interix3*) + # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be Linux ELF. +linux*) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +nto-qnx*) + lt_cv_deplibs_check_method=unknown + ;; + +openbsd*) + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.3*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + pc) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; +esac + +fi +{ echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5 +echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6; } +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + +# Check whether --enable-libtool-lock was given. +if test "${enable_libtool_lock+set}" = set; then + enableval=$enable_libtool_lock; +fi + +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE="32" + ;; + *ELF-64*) + HPUX_IA64_MODE="64" + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out which ABI we are using. + echo '#line 5891 "configure"' > conftest.$ac_ext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + if test "$lt_cv_prog_gnu_ld" = yes; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + case `/usr/bin/file conftest.o` in + *32-bit*) + case $host in + x86_64-*linux*) + LD="${LD-ld} -m elf_i386" + ;; + ppc64-*linux*|powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + ppc*-*linux*|powerpc*-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -belf" + { echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5 +echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6; } +if test "${lt_cv_cc_needs_belf+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + lt_cv_cc_needs_belf=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + lt_cv_cc_needs_belf=no +fi + +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +fi +{ echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5 +echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6; } + if test x"$lt_cv_cc_needs_belf" != x"yes"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS="$SAVE_CFLAGS" + fi + ;; +sparc*-*solaris*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + case `/usr/bin/file conftest.o` in + *64-bit*) + case $lt_cv_prog_gnu_ld in + yes*) LD="${LD-ld} -m elf64_sparc" ;; + *) LD="${LD-ld} -64" ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + + +esac + +need_locks="$enable_libtool_lock" + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 +echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if test "${ac_cv_prog_CPP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi + +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi + +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ echo "$as_me:$LINENO: result: $CPP" >&5 +echo "${ECHO_T}$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi + +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi + +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + : +else + { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." >&5 +echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +{ echo "$as_me:$LINENO: checking for ANSI C header files" >&5 +echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; } +if test "${ac_cv_header_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#include +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_header_stdc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_header_stdc=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then + : +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + return 2; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_header_stdc=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + + +fi +fi +{ echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 +echo "${ECHO_T}$ac_cv_header_stdc" >&6; } +if test $ac_cv_header_stdc = yes; then + +cat >>confdefs.h <<\_ACEOF +#define STDC_HEADERS 1 +_ACEOF + +fi + +# On IRIX 5.3, sys/types and inttypes.h are conflicting. + + + + + + + + + +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +{ echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default + +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + eval "$as_ac_Header=no" +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + +for ac_header in dlfcn.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + { echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } +else + # Is the header compilable? +{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_compiler=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6; } + +# Is the header present? +{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi + +rm -f conftest.err conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + ( cat <<\_ASBOX +## ---------------------------------------------- ## +## Report this to http://trac.gajim.org/newticket ## +## ---------------------------------------------- ## +_ASBOX + ) | sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +{ echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +if test -z "$CXX"; then + if test -n "$CCC"; then + CXX=$CCC + else + if test -n "$ac_tool_prefix"; then + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CXX"; then + ac_cv_prog_CXX="$CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +CXX=$ac_cv_prog_CXX +if test -n "$CXX"; then + { echo "$as_me:$LINENO: result: $CXX" >&5 +echo "${ECHO_T}$CXX" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + + test -n "$CXX" && break + done +fi +if test -z "$CXX"; then + ac_ct_CXX=$CXX + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CXX"; then + ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CXX="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_CXX=$ac_cv_prog_ac_ct_CXX +if test -n "$ac_ct_CXX"; then + { echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5 +echo "${ECHO_T}$ac_ct_CXX" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + + test -n "$ac_ct_CXX" && break +done + + if test "x$ac_ct_CXX" = x; then + CXX="g++" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + CXX=$ac_ct_CXX + fi +fi + + fi +fi +# Provide some information about the compiler. +echo "$as_me:$LINENO: checking for C++ compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (ac_try="$ac_compiler --version >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compiler --version >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (ac_try="$ac_compiler -v >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compiler -v >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (ac_try="$ac_compiler -V >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compiler -V >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + +{ echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6; } +if test "${ac_cv_cxx_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_compiler_gnu=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_cxx_compiler_gnu=$ac_compiler_gnu + +fi +{ echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6; } +GXX=`test $ac_compiler_gnu = yes && echo yes` +ac_test_CXXFLAGS=${CXXFLAGS+set} +ac_save_CXXFLAGS=$CXXFLAGS +{ echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5 +echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6; } +if test "${ac_cv_prog_cxx_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_save_cxx_werror_flag=$ac_cxx_werror_flag + ac_cxx_werror_flag=yes + ac_cv_prog_cxx_g=no + CXXFLAGS="-g" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cxx_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + CXXFLAGS="" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cxx_werror_flag=$ac_save_cxx_werror_flag + CXXFLAGS="-g" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cxx_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cxx_werror_flag=$ac_save_cxx_werror_flag +fi +{ echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 +echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6; } +if test "$ac_test_CXXFLAGS" = set; then + CXXFLAGS=$ac_save_CXXFLAGS +elif test $ac_cv_prog_cxx_g = yes; then + if test "$GXX" = yes; then + CXXFLAGS="-g -O2" + else + CXXFLAGS="-g" + fi +else + if test "$GXX" = yes; then + CXXFLAGS="-O2" + else + CXXFLAGS= + fi +fi +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +depcc="$CXX" am_compiler_list= + +{ echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 +echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; } +if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CXX_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + case $depmode in + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + none) break ;; + esac + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. + if depmode=$depmode \ + source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CXX_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CXX_dependencies_compiler_type=none +fi + +fi +{ echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5 +echo "${ECHO_T}$am_cv_CXX_dependencies_compiler_type" >&6; } +CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type + + + +if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then + am__fastdepCXX_TRUE= + am__fastdepCXX_FALSE='#' +else + am__fastdepCXX_TRUE='#' + am__fastdepCXX_FALSE= +fi + + + + +if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +{ echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5 +echo $ECHO_N "checking how to run the C++ preprocessor... $ECHO_C" >&6; } +if test -z "$CXXCPP"; then + if test "${ac_cv_prog_CXXCPP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Double quotes because CXXCPP needs to be expanded + for CXXCPP in "$CXX -E" "/lib/cpp" + do + ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_cxx_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi + +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_cxx_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi + +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + break +fi + + done + ac_cv_prog_CXXCPP=$CXXCPP + +fi + CXXCPP=$ac_cv_prog_CXXCPP +else + ac_cv_prog_CXXCPP=$CXXCPP +fi +{ echo "$as_me:$LINENO: result: $CXXCPP" >&5 +echo "${ECHO_T}$CXXCPP" >&6; } +ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_cxx_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi + +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_cxx_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi + +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + : +else + { { echo "$as_me:$LINENO: error: C++ preprocessor \"$CXXCPP\" fails sanity check +See \`config.log' for more details." >&5 +echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +fi + + +ac_ext=f +ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' +ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_f77_compiler_gnu +if test -n "$ac_tool_prefix"; then + for ac_prog in g77 f77 xlf frt pgf77 cf77 fort77 fl32 af77 f90 xlf90 pgf90 pghpf epcf90 gfortran g95 f95 fort xlf95 ifort ifc efc pgf95 lf95 ftn + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_F77+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$F77"; then + ac_cv_prog_F77="$F77" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_F77="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +F77=$ac_cv_prog_F77 +if test -n "$F77"; then + { echo "$as_me:$LINENO: result: $F77" >&5 +echo "${ECHO_T}$F77" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + + test -n "$F77" && break + done +fi +if test -z "$F77"; then + ac_ct_F77=$F77 + for ac_prog in g77 f77 xlf frt pgf77 cf77 fort77 fl32 af77 f90 xlf90 pgf90 pghpf epcf90 gfortran g95 f95 fort xlf95 ifort ifc efc pgf95 lf95 ftn +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_ac_ct_F77+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_F77"; then + ac_cv_prog_ac_ct_F77="$ac_ct_F77" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_F77="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_F77=$ac_cv_prog_ac_ct_F77 +if test -n "$ac_ct_F77"; then + { echo "$as_me:$LINENO: result: $ac_ct_F77" >&5 +echo "${ECHO_T}$ac_ct_F77" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + + test -n "$ac_ct_F77" && break +done + + if test "x$ac_ct_F77" = x; then + F77="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + F77=$ac_ct_F77 + fi +fi + + +# Provide some information about the compiler. +echo "$as_me:$LINENO: checking for Fortran 77 compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (ac_try="$ac_compiler --version >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compiler --version >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (ac_try="$ac_compiler -v >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compiler -v >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (ac_try="$ac_compiler -V >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compiler -V >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +rm -f a.out + +# If we don't use `.F' as extension, the preprocessor is not run on the +# input file. (Note that this only needs to work for GNU compilers.) +ac_save_ext=$ac_ext +ac_ext=F +{ echo "$as_me:$LINENO: checking whether we are using the GNU Fortran 77 compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU Fortran 77 compiler... $ECHO_C" >&6; } +if test "${ac_cv_f77_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF + program main +#ifndef __GNUC__ + choke me +#endif + + end +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_f77_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_compiler_gnu=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_f77_compiler_gnu=$ac_compiler_gnu + +fi +{ echo "$as_me:$LINENO: result: $ac_cv_f77_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_f77_compiler_gnu" >&6; } +ac_ext=$ac_save_ext +ac_test_FFLAGS=${FFLAGS+set} +ac_save_FFLAGS=$FFLAGS +FFLAGS= +{ echo "$as_me:$LINENO: checking whether $F77 accepts -g" >&5 +echo $ECHO_N "checking whether $F77 accepts -g... $ECHO_C" >&6; } +if test "${ac_cv_prog_f77_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + FFLAGS=-g +cat >conftest.$ac_ext <<_ACEOF + program main + + end +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_f77_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_f77_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_prog_f77_g=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +{ echo "$as_me:$LINENO: result: $ac_cv_prog_f77_g" >&5 +echo "${ECHO_T}$ac_cv_prog_f77_g" >&6; } +if test "$ac_test_FFLAGS" = set; then + FFLAGS=$ac_save_FFLAGS +elif test $ac_cv_prog_f77_g = yes; then + if test "x$ac_cv_f77_compiler_gnu" = xyes; then + FFLAGS="-g -O2" + else + FFLAGS="-g" + fi +else + if test "x$ac_cv_f77_compiler_gnu" = xyes; then + FFLAGS="-O2" + else + FFLAGS= + fi +fi + +G77=`test $ac_compiler_gnu = yes && echo yes` +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + +# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! + +# find the maximum length of command line arguments +{ echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5 +echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6; } +if test "${lt_cv_sys_max_cmd_len+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + i=0 + teststring="ABCD" + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + + interix*) + # We know the value 262144 and hardcode it with a safety zone (like BSD) + lt_cv_sys_max_cmd_len=196608 + ;; + + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + sco3.2v5*) + lt_cv_sys_max_cmd_len=102400 + ;; + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then + lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi + ;; + *) + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + while (test "X"`$SHELL $0 --fallback-echo "X$teststring" 2>/dev/null` \ + = "XX$teststring") >/dev/null 2>&1 && + new_result=`expr "X$teststring" : ".*" 2>&1` && + lt_cv_sys_max_cmd_len=$new_result && + test $i != 17 # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + teststring= + # Add a significant safety factor because C++ compilers can tack on massive + # amounts of additional arguments before passing them to the linker. + # It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + ;; + esac + +fi + +if test -n $lt_cv_sys_max_cmd_len ; then + { echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5 +echo "${ECHO_T}$lt_cv_sys_max_cmd_len" >&6; } +else + { echo "$as_me:$LINENO: result: none" >&5 +echo "${ECHO_T}none" >&6; } +fi + + + + +# Check for command to grab the raw symbol name followed by C symbol from nm. +{ echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5 +echo $ECHO_N "checking command to parse $NM output from $compiler object... $ECHO_C" >&6; } +if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[BCDEGRST]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([_A-Za-z][_A-Za-z0-9]*\)' + +# Transform an extracted symbol line into a proper C declaration +lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[BCDT]' + ;; +cygwin* | mingw* | pw32*) + symcode='[ABCDGISTW]' + ;; +hpux*) # Its linker distinguishes data from code symbols + if test "$host_cpu" = ia64; then + symcode='[ABCDEGRST]' + fi + lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + ;; +linux*) + if test "$host_cpu" = ia64; then + symcode='[ABCDGIRSTW]' + lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + fi + ;; +irix* | nonstopux*) + symcode='[BCDEGRST]' + ;; +osf*) + symcode='[BCDEGQRST]' + ;; +solaris*) + symcode='[BDRT]' + ;; +sco3.2v5*) + symcode='[DT]' + ;; +sysv4.2uw2*) + symcode='[DT]' + ;; +sysv5* | sco5v6* | unixware* | OpenUNIX*) + symcode='[ABDT]' + ;; +sysv4) + symcode='[DFNSTU]' + ;; +esac + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[ABCDGIRSTW]' ;; +esac + +# Try without a prefix undercore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext <&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # Now try to grab the symbols. + nlist=conftest.nm + if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5 + (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if grep ' nm_test_var$' "$nlist" >/dev/null; then + if grep ' nm_test_func$' "$nlist" >/dev/null; then + cat < conftest.$ac_ext +#ifdef __cplusplus +extern "C" { +#endif + +EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext' + + cat <> conftest.$ac_ext +#if defined (__STDC__) && __STDC__ +# define lt_ptr_t void * +#else +# define lt_ptr_t char * +# define const +#endif + +/* The mapping between symbol names and symbols. */ +const struct { + const char *name; + lt_ptr_t address; +} +lt_preloaded_symbols[] = +{ +EOF + $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext + cat <<\EOF >> conftest.$ac_ext + {0, (lt_ptr_t) 0} +}; + +#ifdef __cplusplus +} +#endif +EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_save_LIBS="$LIBS" + lt_save_CFLAGS="$CFLAGS" + LIBS="conftstm.$ac_objext" + CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext}; then + pipe_works=yes + fi + LIBS="$lt_save_LIBS" + CFLAGS="$lt_save_CFLAGS" + else + echo "cannot find nm_test_func in $nlist" >&5 + fi + else + echo "cannot find nm_test_var in $nlist" >&5 + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 + fi + else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + fi + rm -f conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test "$pipe_works" = yes; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done + +fi + +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + { echo "$as_me:$LINENO: result: failed" >&5 +echo "${ECHO_T}failed" >&6; } +else + { echo "$as_me:$LINENO: result: ok" >&5 +echo "${ECHO_T}ok" >&6; } +fi + +{ echo "$as_me:$LINENO: checking for objdir" >&5 +echo $ECHO_N "checking for objdir... $ECHO_C" >&6; } +if test "${lt_cv_objdir+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null +fi +{ echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5 +echo "${ECHO_T}$lt_cv_objdir" >&6; } +objdir=$lt_cv_objdir + + + + + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed='sed -e 1s/^X//' +sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' + +# Constants: +rm="rm -f" + +# Global variables: +default_ofile=libtool +can_build_shared=yes + +# All known linkers require a `.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a +ltmain="$ac_aux_dir/ltmain.sh" +ofile="$default_ofile" +with_gnu_ld="$lt_cv_prog_gnu_ld" + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. +set dummy ${ac_tool_prefix}ar; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_AR+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_AR="${ac_tool_prefix}ar" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { echo "$as_me:$LINENO: result: $AR" >&5 +echo "${ECHO_T}$AR" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_AR"; then + ac_ct_AR=$AR + # Extract the first word of "ar", so it can be a program name with args. +set dummy ar; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_ac_ct_AR+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_AR="ar" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + { echo "$as_me:$LINENO: result: $ac_ct_AR" >&5 +echo "${ECHO_T}$ac_ct_AR" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + if test "x$ac_ct_AR" = x; then + AR="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + AR=$ac_ct_AR + fi +else + AR="$ac_cv_prog_AR" +fi + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { echo "$as_me:$LINENO: result: $RANLIB" >&5 +echo "${ECHO_T}$RANLIB" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + { echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 +echo "${ECHO_T}$ac_ct_RANLIB" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi +else + RANLIB="$ac_cv_prog_RANLIB" +fi + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { echo "$as_me:$LINENO: result: $STRIP" >&5 +echo "${ECHO_T}$STRIP" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_STRIP="strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 +echo "${ECHO_T}$ac_ct_STRIP" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + + +old_CC="$CC" +old_CFLAGS="$CFLAGS" + +# Set sane defaults for various variables +test -z "$AR" && AR=ar +test -z "$AR_FLAGS" && AR_FLAGS=cru +test -z "$AS" && AS=as +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS +test -z "$DLLTOOL" && DLLTOOL=dlltool +test -z "$LD" && LD=ld +test -z "$LN_S" && LN_S="ln -s" +test -z "$MAGIC_CMD" && MAGIC_CMD=file +test -z "$NM" && NM=nm +test -z "$SED" && SED=sed +test -z "$OBJDUMP" && OBJDUMP=objdump +test -z "$RANLIB" && RANLIB=: +test -z "$STRIP" && STRIP=: +test -z "$ac_objext" && ac_objext=o + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + openbsd*) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" + ;; + *) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" +fi + +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + +# Only perform the check for file, if the check method requires it +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + { echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5 +echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6; } +if test "${lt_cv_path_MAGIC_CMD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/${ac_tool_prefix}file; then + lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac +fi + +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + { echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 +echo "${ECHO_T}$MAGIC_CMD" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + { echo "$as_me:$LINENO: checking for file" >&5 +echo $ECHO_N "checking for file... $ECHO_C" >&6; } +if test "${lt_cv_path_MAGIC_CMD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/file; then + lt_cv_path_MAGIC_CMD="$ac_dir/file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac +fi + +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + { echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 +echo "${ECHO_T}$MAGIC_CMD" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + else + MAGIC_CMD=: + fi +fi + + fi + ;; +esac + +enable_dlopen=no +enable_win32_dll=no + +# Check whether --enable-libtool-lock was given. +if test "${enable_libtool_lock+set}" = set; then + enableval=$enable_libtool_lock; +fi + +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + + +# Check whether --with-pic was given. +if test "${with_pic+set}" = set; then + withval=$with_pic; pic_mode="$withval" +else + pic_mode=default +fi + +test -z "$pic_mode" && pic_mode=default + +# Check if we have a version mismatch between libtool.m4 and ltmain.sh. +# +# Note: This should be in AC_LIBTOOL_SETUP, _after_ $ltmain have been defined. +# We also should do it _before_ AC_LIBTOOL_LANG_C_CONFIG that actually +# calls AC_LIBTOOL_CONFIG and creates libtool. +# +{ echo "$as_me:$LINENO: checking for correct ltmain.sh version" >&5 +echo $ECHO_N "checking for correct ltmain.sh version... $ECHO_C" >&6; } +if test "x$ltmain" = "x" ; then + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } + { { echo "$as_me:$LINENO: error: + +*** [Gentoo] sanity check failed! *** +*** \$ltmain is not defined, please check the patch for consistency! *** +" >&5 +echo "$as_me: error: + +*** [Gentoo] sanity check failed! *** +*** \$ltmain is not defined, please check the patch for consistency! *** +" >&2;} + { (exit 1); exit 1; }; } +fi +gentoo_lt_version="1.5.22" +gentoo_ltmain_version=`sed -n '/^[ ]*VERSION=/{s/^[ ]*VERSION=//;p;q;}' "$ltmain"` +if test "x$gentoo_lt_version" != "x$gentoo_ltmain_version" ; then + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } + { { echo "$as_me:$LINENO: error: + +*** [Gentoo] sanity check failed! *** +*** libtool.m4 and ltmain.sh have a version mismatch! *** +*** (libtool.m4 = $gentoo_lt_version, ltmain.sh = $gentoo_ltmain_version) *** + +Please run: + + libtoolize --copy --force + +if appropriate, please contact the maintainer of this +package (or your distribution) for help. +" >&5 +echo "$as_me: error: + +*** [Gentoo] sanity check failed! *** +*** libtool.m4 and ltmain.sh have a version mismatch! *** +*** (libtool.m4 = $gentoo_lt_version, ltmain.sh = $gentoo_ltmain_version) *** + +Please run: + + libtoolize --copy --force + +if appropriate, please contact the maintainer of this +package (or your distribution) for help. +" >&2;} + { (exit 1); exit 1; }; } +else + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } +fi + + +# Use C for the default configuration in the libtool script +tagname= +lt_save_CC="$CC" +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +objext=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;\n" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}\n' + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +printf "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* + +ac_outfile=conftest.$ac_objext +printf "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm conftest* + + + +lt_prog_compiler_no_builtin_flag= + +if test "$GCC" = yes; then + lt_prog_compiler_no_builtin_flag=' -fno-builtin' + + +{ echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6; } +if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_rtti_exceptions=no + ac_outfile=conftest.$ac_objext + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="-fno-rtti -fno-exceptions" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:8916: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:8920: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_rtti_exceptions=yes + fi + fi + $rm conftest* + +fi +{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6; } + +if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then + lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" +else + : +fi + +fi + +lt_prog_compiler_wl= +lt_prog_compiler_pic= +lt_prog_compiler_static= + +{ echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 +echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } + + if test "$GCC" = yes; then + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_static='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + fi + ;; + + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' + ;; + + beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic='-DDLL_EXPORT' + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic='-fno-common' + ;; + + interix3*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + lt_prog_compiler_can_build_shared=no + enable_shared=no + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic=-Kconform_pic + fi + ;; + + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + ;; + + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + lt_prog_compiler_wl='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + else + lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' + fi + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + lt_prog_compiler_pic='-qnocommon' + lt_prog_compiler_wl='-Wl,' + ;; + esac + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic='-DDLL_EXPORT' + ;; + + hpux9* | hpux10* | hpux11*) + lt_prog_compiler_wl='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + lt_prog_compiler_static='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + lt_prog_compiler_wl='-Wl,' + # PIC (with -KPIC) is the default. + lt_prog_compiler_static='-non_shared' + ;; + + newsos6) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + linux*) + case $cc_basename in + icc* | ecc*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-static' + ;; + pgcc* | pgf77* | pgf90* | pgf95*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fpic' + lt_prog_compiler_static='-Bstatic' + ;; + ccc*) + lt_prog_compiler_wl='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + esac + ;; + + osf3* | osf4* | osf5*) + lt_prog_compiler_wl='-Wl,' + # All OSF/1 code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + + solaris*) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + case $cc_basename in + f77* | f90* | f95*) + lt_prog_compiler_wl='-Qoption ld ';; + *) + lt_prog_compiler_wl='-Wl,';; + esac + ;; + + sunos4*) + lt_prog_compiler_wl='-Qoption ld ' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + lt_prog_compiler_pic='-Kconform_pic' + lt_prog_compiler_static='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + unicos*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_can_build_shared=no + ;; + + uts4*) + lt_prog_compiler_pic='-pic' + lt_prog_compiler_static='-Bstatic' + ;; + + *) + lt_prog_compiler_can_build_shared=no + ;; + esac + fi + +{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic" >&6; } + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic"; then + +{ echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 +echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic works... $ECHO_C" >&6; } +if test "${lt_prog_compiler_pic_works+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_prog_compiler_pic_works=no + ac_outfile=conftest.$ac_objext + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic -DPIC" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:9184: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:9188: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_prog_compiler_pic_works=yes + fi + fi + $rm conftest* + +fi +{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_works" >&6; } + +if test x"$lt_prog_compiler_pic_works" = xyes; then + case $lt_prog_compiler_pic in + "" | " "*) ;; + *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; + esac +else + lt_prog_compiler_pic= + lt_prog_compiler_can_build_shared=no +fi + +fi +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic= + ;; + *) + lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" + ;; +esac + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" +{ echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; } +if test "${lt_prog_compiler_static_works+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_prog_compiler_static_works=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + printf "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_prog_compiler_static_works=yes + fi + else + lt_prog_compiler_static_works=yes + fi + fi + $rm conftest* + LDFLAGS="$save_LDFLAGS" + +fi +{ echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works" >&5 +echo "${ECHO_T}$lt_prog_compiler_static_works" >&6; } + +if test x"$lt_prog_compiler_static_works" = xyes; then + : +else + lt_prog_compiler_static= +fi + + +{ echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 +echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; } +if test "${lt_cv_prog_compiler_c_o+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_c_o=no + $rm -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:9288: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:9292: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o=yes + fi + fi + chmod u+w . 2>&5 + $rm conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files + $rm out/* && rmdir out + cd .. + rmdir conftest + $rm conftest* + +fi +{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_c_o" >&6; } + + +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 +echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6; } + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + { echo "$as_me:$LINENO: result: $hard_links" >&5 +echo "${ECHO_T}$hard_links" >&6; } + if test "$hard_links" = no; then + { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + +{ echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; } + + runpath_var= + allow_undefined_flag= + enable_shared_with_static_runtimes=no + archive_cmds= + archive_expsym_cmds= + old_archive_From_new_cmds= + old_archive_from_expsyms_cmds= + export_dynamic_flag_spec= + whole_archive_flag_spec= + thread_safe_flag_spec= + hardcode_libdir_flag_spec= + hardcode_libdir_flag_spec_ld= + hardcode_libdir_separator= + hardcode_direct=no + hardcode_minus_L=no + hardcode_shlibpath_var=unsupported + link_all_deplibs=unknown + hardcode_automatic=no + module_cmds= + module_expsym_cmds= + always_export_symbols=no + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + include_expsyms= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + exclude_expsyms="_GLOBAL_OFFSET_TABLE_" + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + extract_expsyms_cmds= + # Just being paranoid about ensuring that cc_basename is set. + for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + case $host_os in + cygwin* | mingw* | pw32*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd*) + with_gnu_ld=no + ;; + esac + + ld_shlibs=yes + if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec= + fi + supports_anon_versioning=no + case `$LD -v 2>/dev/null` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix3* | aix4* | aix5*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + ld_shlibs=no + cat <&2 + +*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to modify your PATH +*** so that a non-GNU linker is found, and then restart. + +EOF + fi + ;; + + amigaos*) + archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + + # Samuel A. Falvo II reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we can't use + # them. + ld_shlibs=no + ;; + + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs=no + fi + ;; + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec='-L$libdir' + allow_undefined_flag=unsupported + always_export_symbols=no + enable_shared_with_static_runtimes=yes + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs=no + fi + ;; + + interix3*) + hardcode_direct=no + hardcode_shlibpath_var=no + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + export_dynamic_flag_spec='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + linux*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + tmp_addflag= + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers + whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + esac + archive_cmds='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test $supports_anon_versioning = yes; then + archive_expsym_cmds='$echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + $echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + else + ld_shlibs=no + fi + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then + ld_shlibs=no + cat <&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +EOF + elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + ;; + + sunos4*) + archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + + if test "$ld_shlibs" = no; then + runpath_var= + hardcode_libdir_flag_spec= + export_dynamic_flag_spec= + whole_archive_flag_spec= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag=unsupported + always_export_symbols=yes + archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L=yes + if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct=unsupported + fi + ;; + + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix5*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds='' + hardcode_direct=yes + hardcode_libdir_separator=':' + link_all_deplibs=yes + + if test "$GCC" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + hardcode_direct=yes + else + # We have old collect2 + hardcode_direct=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L=yes + hardcode_libdir_flag_spec='-L$libdir' + hardcode_libdir_separator= + fi + ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag='-berok' + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag="-z nodefs" + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag=' ${wl}-bernotok' + allow_undefined_flag=' ${wl}-berok' + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec='$convenience' + archive_cmds_need_lc=yes + # This is similar to how AIX traditionally builds its shared libraries. + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + # see comment about different semantics on the GNU ld section + ld_shlibs=no + ;; + + bsdi[45]*) + export_dynamic_flag_spec=-rdynamic + ;; + + cygwin* | mingw* | pw32*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_From_new_cmds='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds='lib /OUT:$oldlib$oldobjs$old_deplibs' + fix_srcfile_path='`cygpath -w "$srcfile"`' + enable_shared_with_static_runtimes=yes + ;; + + darwin* | rhapsody*) + case $host_os in + rhapsody* | darwin1.[012]) + allow_undefined_flag='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[012]) + allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + allow_undefined_flag='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; + esac + archive_cmds_need_lc=no + hardcode_direct=no + hardcode_automatic=yes + hardcode_shlibpath_var=unsupported + whole_archive_flag_spec='' + link_all_deplibs=yes + if test "$GCC" = yes ; then + output_verbose_link_cmd='echo' + archive_cmds='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + archive_cmds='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' + module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + ld_shlibs=no + ;; + esac + fi + ;; + + dgux*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + freebsd1*) + ld_shlibs=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | kfreebsd*-gnu | dragonfly*) + archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + hpux9*) + if test "$GCC" = yes; then + archive_cmds='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + export_dynamic_flag_spec='${wl}-E' + ;; + + hpux10*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + + hardcode_direct=yes + export_dynamic_flag_spec='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + fi + ;; + + hpux11*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*) + archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + + case $host_cpu in + hppa*64*|ia64*) + hardcode_libdir_flag_spec_ld='+b $libdir' + hardcode_direct=no + hardcode_shlibpath_var=no + ;; + *) + hardcode_direct=yes + export_dynamic_flag_spec='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec_ld='-rpath $libdir' + fi + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + link_all_deplibs=yes + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + newsos6) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_shlibpath_var=no + ;; + + openbsd*) + hardcode_direct=yes + hardcode_shlibpath_var=no + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + export_dynamic_flag_spec='${wl}-E' + else + case $host_os in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-R$libdir' + ;; + *) + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + ;; + esac + fi + ;; + + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + old_archive_From_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + fi + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ + $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' + + # Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec='-rpath $libdir' + fi + hardcode_libdir_separator=: + ;; + + solaris*) + no_undefined_flag=' -z text' + if test "$GCC" = yes; then + wlarc='${wl}' + archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' + else + wlarc='' + archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_shlibpath_var=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine linker options so we + # cannot just pass the convience library names through + # without $wl, iff we do not link with $LD. + # Luckily, gcc supports the same syntax we need for Sun Studio. + # Supported since Solaris 2.6 (maybe 2.5.1?) + case $wlarc in + '') + whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;; + *) + whole_archive_flag_spec='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;; + esac ;; + esac + link_all_deplibs=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + sysv4) + case $host_vendor in + sni) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' + reload_cmds='$CC -r -o $output$reload_objs' + hardcode_direct=no + ;; + motorola) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var=no + ;; + + sysv4.3*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + export_dynamic_flag_spec='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7*) + no_undefined_flag='${wl}-z,text' + archive_cmds_need_lc=no + hardcode_shlibpath_var=no + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + no_undefined_flag='${wl}-z,text' + allow_undefined_flag='${wl}-z,nodefs' + archive_cmds_need_lc=no + hardcode_shlibpath_var=no + hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' + hardcode_libdir_separator=':' + link_all_deplibs=yes + export_dynamic_flag_spec='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + *) + ld_shlibs=no + ;; + esac + fi + +{ echo "$as_me:$LINENO: result: $ld_shlibs" >&5 +echo "${ECHO_T}$ld_shlibs" >&6; } +test "$ld_shlibs" = no && can_build_shared=no + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 +echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; } + $rm conftest* + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl + pic_flag=$lt_prog_compiler_pic + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag + allow_undefined_flag= + if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 + (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + then + archive_cmds_need_lc=no + else + archive_cmds_need_lc=yes + fi + allow_undefined_flag=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $rm conftest* + { echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5 +echo "${ECHO_T}$archive_cmds_need_lc" >&6; } + ;; + esac + fi + ;; +esac + +{ echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 +echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; } +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix4* | aix5*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32*) + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + linux*) + if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + supports_anon_versioning=no + case `$LD -v 2>/dev/null` in + *\ 01.* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + if test $supports_anon_versioning = yes; then + archive_expsym_cmds='$echo "{ global:" > $output_objdir/$libname.ver~ +cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ +$echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + else + $archive_expsym_cmds="$archive_cmds" + fi + else + ld_shlibs=no + fi + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. + if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` + else + sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' + fi + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +kfreebsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[123]*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + # Handle Gentoo/FreeBSD as it was Linux + case $host_vendor in + gentoo) + version_type=linux ;; + *) + version_type=freebsd-$objformat ;; + esac + + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + linux) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + need_lib_prefix=no + need_version=no + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + freebsd*) # from 4.6 on + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +interix3*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +knetbsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +nto-qnx*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + export_dynamic_flag_spec='${wl}-Blargedynsym' + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + shlibpath_overrides_runpath=no + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + shlibpath_overrides_runpath=yes + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +{ echo "$as_me:$LINENO: result: $dynamic_linker" >&5 +echo "${ECHO_T}$dynamic_linker" >&6; } +test "$dynamic_linker" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +{ echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 +echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; } +hardcode_action= +if test -n "$hardcode_libdir_flag_spec" || \ + test -n "$runpath_var" || \ + test "X$hardcode_automatic" = "Xyes" ; then + + # We can hardcode non-existant directories. + if test "$hardcode_direct" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, )" != no && + test "$hardcode_minus_L" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action=unsupported +fi +{ echo "$as_me:$LINENO: result: $hardcode_action" >&5 +echo "${ECHO_T}$hardcode_action" >&6; } + +if test "$hardcode_action" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + +striplib= +old_striplib= +{ echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 +echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6; } +if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } + else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + ;; + *) + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } + ;; + esac +fi + +if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen="dlopen" + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + { echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6; } +if test "${ac_cv_lib_dl_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dl_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_dl_dlopen=no +fi + +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6; } +if test $ac_cv_lib_dl_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + + lt_cv_dlopen="dyld" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + +fi + + ;; + + *) + { echo "$as_me:$LINENO: checking for shl_load" >&5 +echo $ECHO_N "checking for shl_load... $ECHO_C" >&6; } +if test "${ac_cv_func_shl_load+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define shl_load to an innocuous variant, in case declares shl_load. + For example, HP-UX 11i declares gettimeofday. */ +#define shl_load innocuous_shl_load + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char shl_load (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef shl_load + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char shl_load (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_shl_load || defined __stub___shl_load +choke me +#endif + +int +main () +{ +return shl_load (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_shl_load=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_func_shl_load=no +fi + +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 +echo "${ECHO_T}$ac_cv_func_shl_load" >&6; } +if test $ac_cv_func_shl_load = yes; then + lt_cv_dlopen="shl_load" +else + { echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 +echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6; } +if test "${ac_cv_lib_dld_shl_load+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char shl_load (); +int +main () +{ +return shl_load (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dld_shl_load=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_dld_shl_load=no +fi + +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 +echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6; } +if test $ac_cv_lib_dld_shl_load = yes; then + lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld" +else + { echo "$as_me:$LINENO: checking for dlopen" >&5 +echo $ECHO_N "checking for dlopen... $ECHO_C" >&6; } +if test "${ac_cv_func_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define dlopen to an innocuous variant, in case declares dlopen. + For example, HP-UX 11i declares gettimeofday. */ +#define dlopen innocuous_dlopen + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char dlopen (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef dlopen + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_dlopen || defined __stub___dlopen +choke me +#endif + +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_func_dlopen=no +fi + +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 +echo "${ECHO_T}$ac_cv_func_dlopen" >&6; } +if test $ac_cv_func_dlopen = yes; then + lt_cv_dlopen="dlopen" +else + { echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6; } +if test "${ac_cv_lib_dl_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dl_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_dl_dlopen=no +fi + +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6; } +if test $ac_cv_lib_dl_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + { echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 +echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6; } +if test "${ac_cv_lib_svld_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsvld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_svld_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_svld_dlopen=no +fi + +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6; } +if test $ac_cv_lib_svld_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" +else + { echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 +echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6; } +if test "${ac_cv_lib_dld_dld_link+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dld_link (); +int +main () +{ +return dld_link (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dld_dld_link=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_dld_dld_link=no +fi + +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 +echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6; } +if test $ac_cv_lib_dld_dld_link = yes; then + lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld" +fi + + +fi + + +fi + + +fi + + +fi + + +fi + + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + { echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 +echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6; } +if test "${lt_cv_dlopen_self+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext < +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + else + puts (dlerror ()); + + exit (status); +} +EOF + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self=no + fi +fi +rm -fr conftest* + + +fi +{ echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 +echo "${ECHO_T}$lt_cv_dlopen_self" >&6; } + + if test "x$lt_cv_dlopen_self" = xyes; then + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" + { echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 +echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6; } +if test "${lt_cv_dlopen_self_static+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self_static=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext < +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + else + puts (dlerror ()); + + exit (status); +} +EOF + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self_static=no + fi +fi +rm -fr conftest* + + +fi +{ echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 +echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6; } + fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi + + +# Report which library types will actually be built +{ echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 +echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6; } +{ echo "$as_me:$LINENO: result: $can_build_shared" >&5 +echo "${ECHO_T}$can_build_shared" >&6; } + +{ echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 +echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6; } +test "$can_build_shared" = "no" && enable_shared=no + +# On AIX, shared libraries and static libraries use the same namespace, and +# are all built from PIC. +case $host_os in +aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + +aix4* | aix5*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; +esac +{ echo "$as_me:$LINENO: result: $enable_shared" >&5 +echo "${ECHO_T}$enable_shared" >&6; } + +{ echo "$as_me:$LINENO: checking whether to build static libraries" >&5 +echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6; } +# Make sure either enable_shared or enable_static is yes. +test "$enable_shared" = yes || enable_static=yes +{ echo "$as_me:$LINENO: result: $enable_static" >&5 +echo "${ECHO_T}$enable_static" >&6; } + +# The else clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + # See if we are running on zsh, and set the options which allow our commands through + # without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ + SED SHELL STRIP \ + libname_spec library_names_spec soname_spec extract_expsyms_cmds \ + old_striplib striplib file_magic_cmd finish_cmds finish_eval \ + deplibs_check_method reload_flag reload_cmds need_locks \ + lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ + lt_cv_sys_global_symbol_to_c_name_address \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + old_postinstall_cmds old_postuninstall_cmds \ + compiler \ + CC \ + LD \ + lt_prog_compiler_wl \ + lt_prog_compiler_pic \ + lt_prog_compiler_static \ + lt_prog_compiler_no_builtin_flag \ + export_dynamic_flag_spec \ + thread_safe_flag_spec \ + whole_archive_flag_spec \ + enable_shared_with_static_runtimes \ + old_archive_cmds \ + old_archive_from_new_cmds \ + predep_objects \ + postdep_objects \ + predeps \ + postdeps \ + compiler_lib_search_path \ + archive_cmds \ + archive_expsym_cmds \ + postinstall_cmds \ + postuninstall_cmds \ + old_archive_from_expsyms_cmds \ + allow_undefined_flag \ + no_undefined_flag \ + export_symbols_cmds \ + hardcode_libdir_flag_spec \ + hardcode_libdir_flag_spec_ld \ + hardcode_libdir_separator \ + hardcode_automatic \ + module_cmds \ + module_expsym_cmds \ + lt_cv_prog_compiler_c_o \ + exclude_expsyms \ + include_expsyms; do + + case $var in + old_archive_cmds | \ + old_archive_from_new_cmds | \ + archive_cmds | \ + archive_expsym_cmds | \ + module_cmds | \ + module_expsym_cmds | \ + old_archive_from_expsyms_cmds | \ + export_symbols_cmds | \ + extract_expsyms_cmds | reload_cmds | finish_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + case $lt_echo in + *'\$0 --fallback-echo"') + lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` + ;; + esac + +cfgfile="${ofile}T" + trap "$rm \"$cfgfile\"; exit 1" 1 2 15 + $rm -f "$cfgfile" + { echo "$as_me:$LINENO: creating $ofile" >&5 +echo "$as_me: creating $ofile" >&6;} + + cat <<__EOF__ >> "$cfgfile" +#! $SHELL + +# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) +# NOTE: Changes made to this file will be lost: look at ltmain.sh. +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 +# Free Software Foundation, Inc. +# +# This file is part of GNU Libtool: +# Originally by Gordon Matzigkeit , 1996 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# A sed program that does not truncate output. +SED=$lt_SED + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="$SED -e 1s/^X//" + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +# The names of the tagged configurations supported by this script. +available_tags= + +# ### BEGIN LIBTOOL CONFIG + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# LTCC compiler flags. +LTCFLAGS=$lt_LTCFLAGS + +# A language-specific compiler. +CC=$lt_compiler + +# Is the compiler the GNU C compiler? +with_gcc=$GCC + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_LD + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_thread_safe_flag_spec + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_old_archive_cmds +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds + +# Commands used to build and install a shared archive. +archive_cmds=$lt_archive_cmds +archive_expsym_cmds=$lt_archive_expsym_cmds +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_module_cmds +module_expsym_cmds=$lt_module_expsym_cmds + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=$lt_predep_objects + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_postdep_objects + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_predeps + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_postdeps + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$hardcode_automatic + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path="$fix_srcfile_path" + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms + +# ### END LIBTOOL CONFIG + +__EOF__ + + + case $host_os in + aix3*) + cat <<\EOF >> "$cfgfile" + +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +EOF + ;; + esac + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1) + + mv -f "$cfgfile" "$ofile" || \ + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" + +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +CC="$lt_save_CC" + + +# Check whether --with-tags was given. +if test "${with_tags+set}" = set; then + withval=$with_tags; tagnames="$withval" +fi + + +if test -f "$ltmain" && test -n "$tagnames"; then + if test ! -f "${ofile}"; then + { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not exist" >&5 +echo "$as_me: WARNING: output file \`$ofile' does not exist" >&2;} + fi + + if test -z "$LTCC"; then + eval "`$SHELL ${ofile} --config | grep '^LTCC='`" + if test -z "$LTCC"; then + { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not look like a libtool script" >&5 +echo "$as_me: WARNING: output file \`$ofile' does not look like a libtool script" >&2;} + else + { echo "$as_me:$LINENO: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&5 +echo "$as_me: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&2;} + fi + fi + if test -z "$LTCFLAGS"; then + eval "`$SHELL ${ofile} --config | grep '^LTCFLAGS='`" + fi + + # Extract list of available tagged configurations in $ofile. + # Note that this assumes the entire list is on one line. + available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'` + + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for tagname in $tagnames; do + IFS="$lt_save_ifs" + # Check whether tagname contains only valid characters + case `$echo "X$tagname" | $Xsed -e 's:[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]::g'` in + "") ;; + *) { { echo "$as_me:$LINENO: error: invalid tag name: $tagname" >&5 +echo "$as_me: error: invalid tag name: $tagname" >&2;} + { (exit 1); exit 1; }; } + ;; + esac + + if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null + then + { { echo "$as_me:$LINENO: error: tag name \"$tagname\" already exists" >&5 +echo "$as_me: error: tag name \"$tagname\" already exists" >&2;} + { (exit 1); exit 1; }; } + fi + + # Update the list of available tags. + if test -n "$tagname"; then + echo appending configuration tag \"$tagname\" to $ofile + + case $tagname in + CXX) + if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + + + +archive_cmds_need_lc_CXX=no +allow_undefined_flag_CXX= +always_export_symbols_CXX=no +archive_expsym_cmds_CXX= +export_dynamic_flag_spec_CXX= +hardcode_direct_CXX=no +hardcode_libdir_flag_spec_CXX= +hardcode_libdir_flag_spec_ld_CXX= +hardcode_libdir_separator_CXX= +hardcode_minus_L_CXX=no +hardcode_shlibpath_var_CXX=unsupported +hardcode_automatic_CXX=no +module_cmds_CXX= +module_expsym_cmds_CXX= +link_all_deplibs_CXX=unknown +old_archive_cmds_CXX=$old_archive_cmds +no_undefined_flag_CXX= +whole_archive_flag_spec_CXX= +enable_shared_with_static_runtimes_CXX=no + +# Dependencies to place before and after the object being linked: +predep_objects_CXX= +postdep_objects_CXX= +predeps_CXX= +postdeps_CXX= +compiler_lib_search_path_CXX= + +# Source file extension for C++ test sources. +ac_ext=cpp + +# Object file extension for compiled C++ test sources. +objext=o +objext_CXX=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;\n" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(int, char *[]) { return(0); }\n' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +printf "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* + +ac_outfile=conftest.$ac_objext +printf "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm conftest* + + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_LD=$LD +lt_save_GCC=$GCC +GCC=$GXX +lt_save_with_gnu_ld=$with_gnu_ld +lt_save_path_LD=$lt_cv_path_LD +if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then + lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx +else + $as_unset lt_cv_prog_gnu_ld +fi +if test -n "${lt_cv_path_LDCXX+set}"; then + lt_cv_path_LD=$lt_cv_path_LDCXX +else + $as_unset lt_cv_path_LD +fi +test -z "${LDCXX+set}" || LD=$LDCXX +CC=${CXX-"c++"} +compiler=$CC +compiler_CXX=$CC +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + +# We don't want -fno-exception wen compiling C++ code, so set the +# no_builtin_flag separately +if test "$GXX" = yes; then + lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' +else + lt_prog_compiler_no_builtin_flag_CXX= +fi + +if test "$GXX" = yes; then + # Set up default GNU C++ configuration + + +# Check whether --with-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then + withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes +else + with_gnu_ld=no +fi + +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + { echo "$as_me:$LINENO: checking for ld used by $CC" >&5 +echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + { echo "$as_me:$LINENO: checking for GNU ld" >&5 +echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6; } +else + { echo "$as_me:$LINENO: checking for non-GNU ld" >&5 +echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6; } +fi +if test "${lt_cv_path_LD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &5 +echo "${ECHO_T}$LD" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi +test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 +echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} + { (exit 1); exit 1; }; } +{ echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 +echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6; } +if test "${lt_cv_prog_gnu_ld+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 &5 +echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6; } +with_gnu_ld=$lt_cv_prog_gnu_ld + + + + # Check if GNU C++ uses GNU ld as the underlying linker, since the + # archiving commands below assume that GNU ld is being used. + if test "$with_gnu_ld" = yes; then + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + + hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + + # If archive_cmds runs LD, not CC, wlarc should be empty + # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to + # investigate it a little bit more. (MM) + wlarc='${wl}' + + # ancient GNU ld didn't support --whole-archive et. al. + if eval "`$CC -print-prog-name=ld` --help 2>&1" | \ + grep 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec_CXX= + fi + else + with_gnu_ld=no + wlarc= + + # A generic and very simple default shared library creation + # command for GNU C++ for the case where it uses the native + # linker, instead of GNU ld. If possible, this setting should + # overridden to take advantage of the native linker features on + # the platform it is being used on. + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + fi + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + +else + GXX=no + with_gnu_ld=no + wlarc= +fi + +# PORTME: fill in a description of your system's C++ link characteristics +{ echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; } +ld_shlibs_CXX=yes +case $host_os in + aix3*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix5*) + for ld_flag in $LDFLAGS; do + case $ld_flag in + *-brtl*) + aix_use_runtimelinking=yes + break + ;; + esac + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds_CXX='' + hardcode_direct_CXX=yes + hardcode_libdir_separator_CXX=':' + link_all_deplibs_CXX=yes + + if test "$GXX" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + hardcode_direct_CXX=yes + else + # We have old collect2 + hardcode_direct_CXX=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L_CXX=yes + hardcode_libdir_flag_spec_CXX='-L$libdir' + hardcode_libdir_separator_CXX= + fi + ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols_CXX=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag_CXX='-berok' + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" + + archive_expsym_cmds_CXX="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag_CXX="-z nodefs" + archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag_CXX=' ${wl}-bernotok' + allow_undefined_flag_CXX=' ${wl}-berok' + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec_CXX='$convenience' + archive_cmds_need_lc_CXX=yes + # This is similar to how AIX traditionally builds its shared libraries. + archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag_CXX=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs_CXX=no + fi + ;; + + chorus*) + case $cc_basename in + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec_CXX='-L$libdir' + allow_undefined_flag_CXX=unsupported + always_export_symbols_CXX=no + enable_shared_with_static_runtimes_CXX=yes + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs_CXX=no + fi + ;; + darwin* | rhapsody*) + case $host_os in + rhapsody* | darwin1.[012]) + allow_undefined_flag_CXX='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + allow_undefined_flag_CXX='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[012]) + allow_undefined_flag_CXX='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + allow_undefined_flag_CXX='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; + esac + archive_cmds_need_lc_CXX=no + hardcode_direct_CXX=no + hardcode_automatic_CXX=yes + hardcode_shlibpath_var_CXX=unsupported + whole_archive_flag_spec_CXX='' + link_all_deplibs_CXX=yes + + if test "$GXX" = yes ; then + lt_int_apple_cc_single_mod=no + output_verbose_link_cmd='echo' + if $CC -dumpspecs 2>&1 | $EGREP 'single_module' >/dev/null ; then + lt_int_apple_cc_single_mod=yes + fi + if test "X$lt_int_apple_cc_single_mod" = Xyes ; then + archive_cmds_CXX='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + else + archive_cmds_CXX='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + fi + module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + if test "X$lt_int_apple_cc_single_mod" = Xyes ; then + archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + fi + module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + archive_cmds_CXX='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' + module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + ld_shlibs_CXX=no + ;; + esac + fi + ;; + + dgux*) + case $cc_basename in + ec++*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + ghcx*) + # Green Hills C++ Compiler + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + freebsd[12]*) + # C++ shared libraries reported to be fairly broken before switch to ELF + ld_shlibs_CXX=no + ;; + freebsd-elf*) + archive_cmds_need_lc_CXX=no + ;; + freebsd* | kfreebsd*-gnu | dragonfly*) + # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF + # conventions + ld_shlibs_CXX=yes + ;; + gnu*) + ;; + hpux9*) + hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_CXX=: + export_dynamic_flag_spec_CXX='${wl}-E' + hardcode_direct_CXX=yes + hardcode_minus_L_CXX=yes # Not in the search PATH, + # but as the default + # location of the library. + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aCC*) + archive_cmds_CXX='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[-]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes; then + archive_cmds_CXX='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + hpux10*|hpux11*) + if test $with_gnu_ld = no; then + hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_CXX=: + + case $host_cpu in + hppa*64*|ia64*) + hardcode_libdir_flag_spec_ld_CXX='+b $libdir' + ;; + *) + export_dynamic_flag_spec_CXX='${wl}-E' + ;; + esac + fi + case $host_cpu in + hppa*64*|ia64*) + hardcode_direct_CXX=no + hardcode_shlibpath_var_CXX=no + ;; + *) + hardcode_direct_CXX=yes + hardcode_minus_L_CXX=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + esac + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aCC*) + case $host_cpu in + hppa*64*) + archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes; then + if test $with_gnu_ld = no; then + case $host_cpu in + hppa*64*) + archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + fi + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + interix3*) + hardcode_direct_CXX=no + hardcode_shlibpath_var_CXX=no + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + export_dynamic_flag_spec_CXX='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds_CXX='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + irix5* | irix6*) + case $cc_basename in + CC*) + # SGI C++ + archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + + # Archives containing C++ object files must be created using + # "CC -ar", where "CC" is the IRIX C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' + ;; + *) + if test "$GXX" = yes; then + if test "$with_gnu_ld" = no; then + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib' + fi + fi + link_all_deplibs_CXX=yes + ;; + esac + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_CXX=: + ;; + linux*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + + hardcode_libdir_flag_spec_CXX='${wl}--rpath,$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' + ;; + icpc*) + # Intel C++ + with_gnu_ld=yes + # version 8.0 and above of icpc choke on multiply defined symbols + # if we add $predep_objects and $postdep_objects, however 7.1 and + # earlier do not add the objects themselves. + case `$CC -V 2>&1` in + *"Version 7."*) + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 8.0 or newer + tmp_idyn= + case $host_cpu in + ia64*) tmp_idyn=' -i_dynamic';; + esac + archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + archive_cmds_need_lc_CXX=no + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + ;; + pgCC*) + # Portland Group C++ compiler + archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + + hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + ;; + cxx*) + # Compaq C++ + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' + + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec_CXX='-rpath $libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + esac + ;; + lynxos*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + m88k*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + mvs*) + case $cc_basename in + cxx*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' + wlarc= + hardcode_libdir_flag_spec_CXX='-R$libdir' + hardcode_direct_CXX=yes + hardcode_shlibpath_var_CXX=no + fi + # Workaround some broken pre-1.5 toolchains + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' + ;; + openbsd2*) + # C++ shared libraries are fairly broken + ld_shlibs_CXX=no + ;; + openbsd*) + hardcode_direct_CXX=yes + hardcode_shlibpath_var_CXX=no + archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' + export_dynamic_flag_spec_CXX='${wl}-E' + whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + fi + output_verbose_link_cmd='echo' + ;; + osf3*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + hardcode_libdir_separator_CXX=: + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' + + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + cxx*) + allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + osf4* | osf5*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + hardcode_libdir_separator_CXX=: + + # Archives containing C++ object files must be created using + # the KAI C++ compiler. + old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + cxx*) + allow_undefined_flag_CXX=' -expect_unresolved \*' + archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ + echo "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~ + $rm $lib.exp' + + hardcode_libdir_flag_spec_CXX='-rpath $libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + psos*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + lcc*) + # Lucid + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + solaris*) + case $cc_basename in + CC*) + # Sun C++ 4.2, 5.x and Centerline C++ + archive_cmds_need_lc_CXX=yes + no_undefined_flag_CXX=' -zdefs' + archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + hardcode_libdir_flag_spec_CXX='-R$libdir' + hardcode_shlibpath_var_CXX=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The C++ compiler is used as linker so we must use $wl + # flag to pass the commands to the underlying system + # linker. We must also pass each convience library through + # to the system linker between allextract/defaultextract. + # The C++ compiler will combine linker options so we + # cannot just pass the convience library names through + # without $wl. + # Supported since Solaris 2.6 (maybe 2.5.1?) + whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' + ;; + esac + link_all_deplibs_CXX=yes + + output_verbose_link_cmd='echo' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' + ;; + gcx*) + # Green Hills C++ Compiler + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + + # The C++ compiler must be used to create the archive. + old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' + ;; + *) + # GNU C++ compiler with Solaris linker + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + no_undefined_flag_CXX=' ${wl}-z ${wl}defs' + if $CC --version | grep -v '^2\.7' > /dev/null; then + archive_cmds_CXX='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" + else + # g++ 2.7 appears to require `-G' NOT `-shared' on this + # platform. + archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" + fi + + hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir' + fi + ;; + esac + ;; + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + no_undefined_flag_CXX='${wl}-z,text' + archive_cmds_need_lc_CXX=no + hardcode_shlibpath_var_CXX=no + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + # For security reasons, it is highly recommended that you always + # use absolute paths for naming shared libraries, and exclude the + # DT_RUNPATH tag from executables and libraries. But doing so + # requires that you compile everything twice, which is a pain. + # So that behaviour is only enabled if SCOABSPATH is set to a + # non-empty value in the environment. Most likely only useful for + # creating official distributions of packages. + # This is a hack until libtool officially supports absolute path + # names for shared libraries. + no_undefined_flag_CXX='${wl}-z,text' + allow_undefined_flag_CXX='${wl}-z,nodefs' + archive_cmds_need_lc_CXX=no + hardcode_shlibpath_var_CXX=no + hardcode_libdir_flag_spec_CXX='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' + hardcode_libdir_separator_CXX=':' + link_all_deplibs_CXX=yes + export_dynamic_flag_spec_CXX='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + archive_cmds_CXX='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + vxworks*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; +esac +{ echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 +echo "${ECHO_T}$ld_shlibs_CXX" >&6; } +test "$ld_shlibs_CXX" = no && can_build_shared=no + +GCC_CXX="$GXX" +LD_CXX="$LD" + + +cat > conftest.$ac_ext <&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # Parse the compiler output and extract the necessary + # objects, libraries and library flags. + + # Sentinel used to keep track of whether or not we are before + # the conftest object file. + pre_test_object_deps_done=no + + # The `*' in the case matches for architectures that use `case' in + # $output_verbose_cmd can trigger glob expansion during the loop + # eval without this substitution. + output_verbose_link_cmd=`$echo "X$output_verbose_link_cmd" | $Xsed -e "$no_glob_subst"` + + for p in `eval $output_verbose_link_cmd`; do + case $p in + + -L* | -R* | -l*) + # Some compilers place space between "-{L,R}" and the path. + # Remove the space. + if test $p = "-L" \ + || test $p = "-R"; then + prev=$p + continue + else + prev= + fi + + if test "$pre_test_object_deps_done" = no; then + case $p in + -L* | -R*) + # Internal compiler library paths should come after those + # provided the user. The postdeps already come after the + # user supplied libs so there is no need to process them. + if test -z "$compiler_lib_search_path_CXX"; then + compiler_lib_search_path_CXX="${prev}${p}" + else + compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}" + fi + ;; + # The "-l" case would never come before the object being + # linked, so don't bother handling this case. + esac + else + if test -z "$postdeps_CXX"; then + postdeps_CXX="${prev}${p}" + else + postdeps_CXX="${postdeps_CXX} ${prev}${p}" + fi + fi + ;; + + *.$objext) + # This assumes that the test object file only shows up + # once in the compiler output. + if test "$p" = "conftest.$objext"; then + pre_test_object_deps_done=yes + continue + fi + + if test "$pre_test_object_deps_done" = no; then + if test -z "$predep_objects_CXX"; then + predep_objects_CXX="$p" + else + predep_objects_CXX="$predep_objects_CXX $p" + fi + else + if test -z "$postdep_objects_CXX"; then + postdep_objects_CXX="$p" + else + postdep_objects_CXX="$postdep_objects_CXX $p" + fi + fi + ;; + + *) ;; # Ignore the rest. + + esac + done + + # Clean up. + rm -f a.out a.exe +else + echo "libtool.m4: error: problem compiling CXX test program" +fi + +$rm -f confest.$objext + +# PORTME: override above test on systems where it is broken +case $host_os in +interix3*) + # Interix 3.5 installs completely hosed .la files for C++, so rather than + # hack all around it, let's just trust "g++" to DTRT. + predep_objects_CXX= + postdep_objects_CXX= + postdeps_CXX= + ;; + +solaris*) + case $cc_basename in + CC*) + # Adding this requires a known-good setup of shared libraries for + # Sun compiler versions before 5.6, else PIC objects from an old + # archive will be linked into the output, leading to subtle bugs. + postdeps_CXX='-lCstd -lCrun' + ;; + esac + ;; +esac + + +case " $postdeps_CXX " in +*" -lc "*) archive_cmds_need_lc_CXX=no ;; +esac + +lt_prog_compiler_wl_CXX= +lt_prog_compiler_pic_CXX= +lt_prog_compiler_static_CXX= + +{ echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 +echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } + + # C++ specific cases for pic, static, wl, etc. + if test "$GXX" = yes; then + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_CXX='-Bstatic' + fi + ;; + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' + ;; + beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + mingw* | os2* | pw32*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic_CXX='-DDLL_EXPORT' + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic_CXX='-fno-common' + ;; + *djgpp*) + # DJGPP does not support shared libraries at all + lt_prog_compiler_pic_CXX= + ;; + interix3*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic_CXX=-Kconform_pic + fi + ;; + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + ;; + *) + lt_prog_compiler_pic_CXX='-fPIC' + ;; + esac + ;; + *) + lt_prog_compiler_pic_CXX='-fPIC' + ;; + esac + else + case $host_os in + aix4* | aix5*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_CXX='-Bstatic' + else + lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' + fi + ;; + chorus*) + case $cc_basename in + cxch68*) + # Green Hills C++ Compiler + # _LT_AC_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" + ;; + esac + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + lt_prog_compiler_pic_CXX='-qnocommon' + lt_prog_compiler_wl_CXX='-Wl,' + ;; + esac + ;; + dgux*) + case $cc_basename in + ec++*) + lt_prog_compiler_pic_CXX='-KPIC' + ;; + ghcx*) + # Green Hills C++ Compiler + lt_prog_compiler_pic_CXX='-pic' + ;; + *) + ;; + esac + ;; + freebsd* | kfreebsd*-gnu | dragonfly*) + # FreeBSD uses GNU C++ + ;; + hpux9* | hpux10* | hpux11*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' + if test "$host_cpu" != ia64; then + lt_prog_compiler_pic_CXX='+Z' + fi + ;; + aCC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_CXX='+Z' + ;; + esac + ;; + *) + ;; + esac + ;; + interix*) + # This is c89, which is MS Visual C++ (no shared libs) + # Anyone wants to do a port? + ;; + irix5* | irix6* | nonstopux*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='-non_shared' + # CC pic flag -KPIC is the default. + ;; + *) + ;; + esac + ;; + linux*) + case $cc_basename in + KCC*) + # KAI C++ Compiler + lt_prog_compiler_wl_CXX='--backend -Wl,' + lt_prog_compiler_pic_CXX='-fPIC' + ;; + icpc* | ecpc*) + # Intel C++ + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-static' + ;; + pgCC*) + # Portland Group C++ compiler. + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-fpic' + lt_prog_compiler_static_CXX='-Bstatic' + ;; + cxx*) + # Compaq C++ + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + lt_prog_compiler_pic_CXX= + lt_prog_compiler_static_CXX='-non_shared' + ;; + *) + ;; + esac + ;; + lynxos*) + ;; + m88k*) + ;; + mvs*) + case $cc_basename in + cxx*) + lt_prog_compiler_pic_CXX='-W c,exportall' + ;; + *) + ;; + esac + ;; + netbsd*) + ;; + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + lt_prog_compiler_wl_CXX='--backend -Wl,' + ;; + RCC*) + # Rational C++ 2.4.1 + lt_prog_compiler_pic_CXX='-pic' + ;; + cxx*) + # Digital/Compaq C++ + lt_prog_compiler_wl_CXX='-Wl,' + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + lt_prog_compiler_pic_CXX= + lt_prog_compiler_static_CXX='-non_shared' + ;; + *) + ;; + esac + ;; + psos*) + ;; + solaris*) + case $cc_basename in + CC*) + # Sun C++ 4.2, 5.x and Centerline C++ + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-Bstatic' + lt_prog_compiler_wl_CXX='-Qoption ld ' + ;; + gcx*) + # Green Hills C++ Compiler + lt_prog_compiler_pic_CXX='-PIC' + ;; + *) + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + lt_prog_compiler_pic_CXX='-pic' + lt_prog_compiler_static_CXX='-Bstatic' + ;; + lcc*) + # Lucid + lt_prog_compiler_pic_CXX='-pic' + ;; + *) + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + lt_prog_compiler_pic_CXX='-KPIC' + ;; + *) + ;; + esac + ;; + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-Bstatic' + ;; + esac + ;; + vxworks*) + ;; + *) + lt_prog_compiler_can_build_shared_CXX=no + ;; + esac + fi + +{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_CXX" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_CXX" >&6; } + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic_CXX"; then + +{ echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 +echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... $ECHO_C" >&6; } +if test "${lt_prog_compiler_pic_works_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_prog_compiler_pic_works_CXX=no + ac_outfile=conftest.$ac_objext + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:14245: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:14249: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_prog_compiler_pic_works_CXX=yes + fi + fi + $rm conftest* + +fi +{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_CXX" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_works_CXX" >&6; } + +if test x"$lt_prog_compiler_pic_works_CXX" = xyes; then + case $lt_prog_compiler_pic_CXX in + "" | " "*) ;; + *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; + esac +else + lt_prog_compiler_pic_CXX= + lt_prog_compiler_can_build_shared_CXX=no +fi + +fi +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic_CXX= + ;; + *) + lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" + ;; +esac + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\" +{ echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; } +if test "${lt_prog_compiler_static_works_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_prog_compiler_static_works_CXX=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + printf "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_prog_compiler_static_works_CXX=yes + fi + else + lt_prog_compiler_static_works_CXX=yes + fi + fi + $rm conftest* + LDFLAGS="$save_LDFLAGS" + +fi +{ echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works_CXX" >&5 +echo "${ECHO_T}$lt_prog_compiler_static_works_CXX" >&6; } + +if test x"$lt_prog_compiler_static_works_CXX" = xyes; then + : +else + lt_prog_compiler_static_CXX= +fi + + +{ echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 +echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; } +if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_c_o_CXX=no + $rm -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:14349: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:14353: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o_CXX=yes + fi + fi + chmod u+w . 2>&5 + $rm conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files + $rm out/* && rmdir out + cd .. + rmdir conftest + $rm conftest* + +fi +{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_CXX" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_c_o_CXX" >&6; } + + +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 +echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6; } + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + { echo "$as_me:$LINENO: result: $hard_links" >&5 +echo "${ECHO_T}$hard_links" >&6; } + if test "$hard_links" = no; then + { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + +{ echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; } + + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + case $host_os in + aix4* | aix5*) + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + fi + ;; + pw32*) + export_symbols_cmds_CXX="$ltdll_cmds" + ;; + cygwin* | mingw*) + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/;/^.* __nm__/s/^.* __nm__\([^ ]*\) [^ ]*/\1 DATA/;/^I /d;/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' + ;; + *) + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + ;; + esac + +{ echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 +echo "${ECHO_T}$ld_shlibs_CXX" >&6; } +test "$ld_shlibs_CXX" = no && can_build_shared=no + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc_CXX" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc_CXX=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds_CXX in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 +echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; } + $rm conftest* + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl_CXX + pic_flag=$lt_prog_compiler_pic_CXX + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag_CXX + allow_undefined_flag_CXX= + if { (eval echo "$as_me:$LINENO: \"$archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 + (eval $archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + then + archive_cmds_need_lc_CXX=no + else + archive_cmds_need_lc_CXX=yes + fi + allow_undefined_flag_CXX=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $rm conftest* + { echo "$as_me:$LINENO: result: $archive_cmds_need_lc_CXX" >&5 +echo "${ECHO_T}$archive_cmds_need_lc_CXX" >&6; } + ;; + esac + fi + ;; +esac + +{ echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 +echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; } +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix4* | aix5*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32*) + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + linux*) + if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + supports_anon_versioning=no + case `$LD -v 2>/dev/null` in + *\ 01.* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + if test $supports_anon_versioning = yes; then + archive_expsym_cmds='$echo "{ global:" > $output_objdir/$libname.ver~ +cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ +$echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + else + $archive_expsym_cmds="$archive_cmds" + fi + else + ld_shlibs=no + fi + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. + if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` + else + sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' + fi + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +kfreebsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[123]*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + # Handle Gentoo/FreeBSD as it was Linux + case $host_vendor in + gentoo) + version_type=linux ;; + *) + version_type=freebsd-$objformat ;; + esac + + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + linux) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + need_lib_prefix=no + need_version=no + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + freebsd*) # from 4.6 on + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +interix3*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +knetbsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +nto-qnx*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + export_dynamic_flag_spec='${wl}-Blargedynsym' + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + shlibpath_overrides_runpath=no + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + shlibpath_overrides_runpath=yes + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +{ echo "$as_me:$LINENO: result: $dynamic_linker" >&5 +echo "${ECHO_T}$dynamic_linker" >&6; } +test "$dynamic_linker" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +{ echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 +echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; } +hardcode_action_CXX= +if test -n "$hardcode_libdir_flag_spec_CXX" || \ + test -n "$runpath_var_CXX" || \ + test "X$hardcode_automatic_CXX" = "Xyes" ; then + + # We can hardcode non-existant directories. + if test "$hardcode_direct_CXX" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, CXX)" != no && + test "$hardcode_minus_L_CXX" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action_CXX=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action_CXX=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action_CXX=unsupported +fi +{ echo "$as_me:$LINENO: result: $hardcode_action_CXX" >&5 +echo "${ECHO_T}$hardcode_action_CXX" >&6; } + +if test "$hardcode_action_CXX" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + + +# The else clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + # See if we are running on zsh, and set the options which allow our commands through + # without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ + SED SHELL STRIP \ + libname_spec library_names_spec soname_spec extract_expsyms_cmds \ + old_striplib striplib file_magic_cmd finish_cmds finish_eval \ + deplibs_check_method reload_flag reload_cmds need_locks \ + lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ + lt_cv_sys_global_symbol_to_c_name_address \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + old_postinstall_cmds old_postuninstall_cmds \ + compiler_CXX \ + CC_CXX \ + LD_CXX \ + lt_prog_compiler_wl_CXX \ + lt_prog_compiler_pic_CXX \ + lt_prog_compiler_static_CXX \ + lt_prog_compiler_no_builtin_flag_CXX \ + export_dynamic_flag_spec_CXX \ + thread_safe_flag_spec_CXX \ + whole_archive_flag_spec_CXX \ + enable_shared_with_static_runtimes_CXX \ + old_archive_cmds_CXX \ + old_archive_from_new_cmds_CXX \ + predep_objects_CXX \ + postdep_objects_CXX \ + predeps_CXX \ + postdeps_CXX \ + compiler_lib_search_path_CXX \ + archive_cmds_CXX \ + archive_expsym_cmds_CXX \ + postinstall_cmds_CXX \ + postuninstall_cmds_CXX \ + old_archive_from_expsyms_cmds_CXX \ + allow_undefined_flag_CXX \ + no_undefined_flag_CXX \ + export_symbols_cmds_CXX \ + hardcode_libdir_flag_spec_CXX \ + hardcode_libdir_flag_spec_ld_CXX \ + hardcode_libdir_separator_CXX \ + hardcode_automatic_CXX \ + module_cmds_CXX \ + module_expsym_cmds_CXX \ + lt_cv_prog_compiler_c_o_CXX \ + exclude_expsyms_CXX \ + include_expsyms_CXX; do + + case $var in + old_archive_cmds_CXX | \ + old_archive_from_new_cmds_CXX | \ + archive_cmds_CXX | \ + archive_expsym_cmds_CXX | \ + module_cmds_CXX | \ + module_expsym_cmds_CXX | \ + old_archive_from_expsyms_cmds_CXX | \ + export_symbols_cmds_CXX | \ + extract_expsyms_cmds | reload_cmds | finish_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + case $lt_echo in + *'\$0 --fallback-echo"') + lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` + ;; + esac + +cfgfile="$ofile" + + cat <<__EOF__ >> "$cfgfile" +# ### BEGIN LIBTOOL TAG CONFIG: $tagname + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc_CXX + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# LTCC compiler flags. +LTCFLAGS=$lt_LTCFLAGS + +# A language-specific compiler. +CC=$lt_compiler_CXX + +# Is the compiler the GNU C compiler? +with_gcc=$GCC_CXX + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_LD_CXX + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl_CXX + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic_CXX +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static_CXX + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_thread_safe_flag_spec_CXX + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_old_archive_cmds_CXX +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX + +# Commands used to build and install a shared archive. +archive_cmds=$lt_archive_cmds_CXX +archive_expsym_cmds=$lt_archive_expsym_cmds_CXX +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_module_cmds_CXX +module_expsym_cmds=$lt_module_expsym_cmds_CXX + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=$lt_predep_objects_CXX + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_postdep_objects_CXX + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_predeps_CXX + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_postdeps_CXX + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path_CXX + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag_CXX + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag_CXX + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action_CXX + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct_CXX + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L_CXX + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$hardcode_automatic_CXX + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs_CXX + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path="$fix_srcfile_path_CXX" + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols_CXX + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds_CXX + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms_CXX + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms_CXX + +# ### END LIBTOOL TAG CONFIG: $tagname + +__EOF__ + + +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +CC=$lt_save_CC +LDCXX=$LD +LD=$lt_save_LD +GCC=$lt_save_GCC +with_gnu_ldcxx=$with_gnu_ld +with_gnu_ld=$lt_save_with_gnu_ld +lt_cv_path_LDCXX=$lt_cv_path_LD +lt_cv_path_LD=$lt_save_path_LD +lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld +lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld + + else + tagname="" + fi + ;; + + F77) + if test -n "$F77" && test "X$F77" != "Xno"; then + +ac_ext=f +ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' +ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_f77_compiler_gnu + + +archive_cmds_need_lc_F77=no +allow_undefined_flag_F77= +always_export_symbols_F77=no +archive_expsym_cmds_F77= +export_dynamic_flag_spec_F77= +hardcode_direct_F77=no +hardcode_libdir_flag_spec_F77= +hardcode_libdir_flag_spec_ld_F77= +hardcode_libdir_separator_F77= +hardcode_minus_L_F77=no +hardcode_automatic_F77=no +module_cmds_F77= +module_expsym_cmds_F77= +link_all_deplibs_F77=unknown +old_archive_cmds_F77=$old_archive_cmds +no_undefined_flag_F77= +whole_archive_flag_spec_F77= +enable_shared_with_static_runtimes_F77=no + +# Source file extension for f77 test sources. +ac_ext=f + +# Object file extension for compiled f77 test sources. +objext=o +objext_F77=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code=" subroutine t\n return\n end\n" + +# Code to be used in simple link tests +lt_simple_link_test_code=" program t\n end\n" + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +printf "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* + +ac_outfile=conftest.$ac_objext +printf "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm conftest* + + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +CC=${F77-"f77"} +compiler=$CC +compiler_F77=$CC +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + +{ echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 +echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6; } +{ echo "$as_me:$LINENO: result: $can_build_shared" >&5 +echo "${ECHO_T}$can_build_shared" >&6; } + +{ echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 +echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6; } +test "$can_build_shared" = "no" && enable_shared=no + +# On AIX, shared libraries and static libraries use the same namespace, and +# are all built from PIC. +case $host_os in +aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; +aix4* | aix5*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; +esac +{ echo "$as_me:$LINENO: result: $enable_shared" >&5 +echo "${ECHO_T}$enable_shared" >&6; } + +{ echo "$as_me:$LINENO: checking whether to build static libraries" >&5 +echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6; } +# Make sure either enable_shared or enable_static is yes. +test "$enable_shared" = yes || enable_static=yes +{ echo "$as_me:$LINENO: result: $enable_static" >&5 +echo "${ECHO_T}$enable_static" >&6; } + +GCC_F77="$G77" +LD_F77="$LD" + +lt_prog_compiler_wl_F77= +lt_prog_compiler_pic_F77= +lt_prog_compiler_static_F77= + +{ echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 +echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } + + if test "$GCC" = yes; then + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_static_F77='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_F77='-Bstatic' + fi + ;; + + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic_F77='-m68020 -resident32 -malways-restore-a4' + ;; + + beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic_F77='-DDLL_EXPORT' + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic_F77='-fno-common' + ;; + + interix3*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + lt_prog_compiler_can_build_shared_F77=no + enable_shared=no + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic_F77=-Kconform_pic + fi + ;; + + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_F77='-fPIC' + ;; + esac + ;; + + *) + lt_prog_compiler_pic_F77='-fPIC' + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + lt_prog_compiler_wl_F77='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_F77='-Bstatic' + else + lt_prog_compiler_static_F77='-bnso -bI:/lib/syscalls.exp' + fi + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + lt_prog_compiler_pic_F77='-qnocommon' + lt_prog_compiler_wl_F77='-Wl,' + ;; + esac + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic_F77='-DDLL_EXPORT' + ;; + + hpux9* | hpux10* | hpux11*) + lt_prog_compiler_wl_F77='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_F77='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + lt_prog_compiler_static_F77='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + lt_prog_compiler_wl_F77='-Wl,' + # PIC (with -KPIC) is the default. + lt_prog_compiler_static_F77='-non_shared' + ;; + + newsos6) + lt_prog_compiler_pic_F77='-KPIC' + lt_prog_compiler_static_F77='-Bstatic' + ;; + + linux*) + case $cc_basename in + icc* | ecc*) + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_pic_F77='-KPIC' + lt_prog_compiler_static_F77='-static' + ;; + pgcc* | pgf77* | pgf90* | pgf95*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_pic_F77='-fpic' + lt_prog_compiler_static_F77='-Bstatic' + ;; + ccc*) + lt_prog_compiler_wl_F77='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static_F77='-non_shared' + ;; + esac + ;; + + osf3* | osf4* | osf5*) + lt_prog_compiler_wl_F77='-Wl,' + # All OSF/1 code is PIC. + lt_prog_compiler_static_F77='-non_shared' + ;; + + solaris*) + lt_prog_compiler_pic_F77='-KPIC' + lt_prog_compiler_static_F77='-Bstatic' + case $cc_basename in + f77* | f90* | f95*) + lt_prog_compiler_wl_F77='-Qoption ld ';; + *) + lt_prog_compiler_wl_F77='-Wl,';; + esac + ;; + + sunos4*) + lt_prog_compiler_wl_F77='-Qoption ld ' + lt_prog_compiler_pic_F77='-PIC' + lt_prog_compiler_static_F77='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_pic_F77='-KPIC' + lt_prog_compiler_static_F77='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + lt_prog_compiler_pic_F77='-Kconform_pic' + lt_prog_compiler_static_F77='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_pic_F77='-KPIC' + lt_prog_compiler_static_F77='-Bstatic' + ;; + + unicos*) + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_can_build_shared_F77=no + ;; + + uts4*) + lt_prog_compiler_pic_F77='-pic' + lt_prog_compiler_static_F77='-Bstatic' + ;; + + *) + lt_prog_compiler_can_build_shared_F77=no + ;; + esac + fi + +{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_F77" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_F77" >&6; } + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic_F77"; then + +{ echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works" >&5 +echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works... $ECHO_C" >&6; } +if test "${lt_prog_compiler_pic_works_F77+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_prog_compiler_pic_works_F77=no + ac_outfile=conftest.$ac_objext + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic_F77" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:15956: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:15960: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_prog_compiler_pic_works_F77=yes + fi + fi + $rm conftest* + +fi +{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_F77" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_works_F77" >&6; } + +if test x"$lt_prog_compiler_pic_works_F77" = xyes; then + case $lt_prog_compiler_pic_F77 in + "" | " "*) ;; + *) lt_prog_compiler_pic_F77=" $lt_prog_compiler_pic_F77" ;; + esac +else + lt_prog_compiler_pic_F77= + lt_prog_compiler_can_build_shared_F77=no +fi + +fi +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic_F77= + ;; + *) + lt_prog_compiler_pic_F77="$lt_prog_compiler_pic_F77" + ;; +esac + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl_F77 eval lt_tmp_static_flag=\"$lt_prog_compiler_static_F77\" +{ echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; } +if test "${lt_prog_compiler_static_works_F77+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_prog_compiler_static_works_F77=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + printf "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_prog_compiler_static_works_F77=yes + fi + else + lt_prog_compiler_static_works_F77=yes + fi + fi + $rm conftest* + LDFLAGS="$save_LDFLAGS" + +fi +{ echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works_F77" >&5 +echo "${ECHO_T}$lt_prog_compiler_static_works_F77" >&6; } + +if test x"$lt_prog_compiler_static_works_F77" = xyes; then + : +else + lt_prog_compiler_static_F77= +fi + + +{ echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 +echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; } +if test "${lt_cv_prog_compiler_c_o_F77+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_c_o_F77=no + $rm -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:16060: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:16064: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o_F77=yes + fi + fi + chmod u+w . 2>&5 + $rm conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files + $rm out/* && rmdir out + cd .. + rmdir conftest + $rm conftest* + +fi +{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_F77" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_c_o_F77" >&6; } + + +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o_F77" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 +echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6; } + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + { echo "$as_me:$LINENO: result: $hard_links" >&5 +echo "${ECHO_T}$hard_links" >&6; } + if test "$hard_links" = no; then + { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + +{ echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; } + + runpath_var= + allow_undefined_flag_F77= + enable_shared_with_static_runtimes_F77=no + archive_cmds_F77= + archive_expsym_cmds_F77= + old_archive_From_new_cmds_F77= + old_archive_from_expsyms_cmds_F77= + export_dynamic_flag_spec_F77= + whole_archive_flag_spec_F77= + thread_safe_flag_spec_F77= + hardcode_libdir_flag_spec_F77= + hardcode_libdir_flag_spec_ld_F77= + hardcode_libdir_separator_F77= + hardcode_direct_F77=no + hardcode_minus_L_F77=no + hardcode_shlibpath_var_F77=unsupported + link_all_deplibs_F77=unknown + hardcode_automatic_F77=no + module_cmds_F77= + module_expsym_cmds_F77= + always_export_symbols_F77=no + export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + include_expsyms_F77= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + exclude_expsyms_F77="_GLOBAL_OFFSET_TABLE_" + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + extract_expsyms_cmds= + # Just being paranoid about ensuring that cc_basename is set. + for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + case $host_os in + cygwin* | mingw* | pw32*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd*) + with_gnu_ld=no + ;; + esac + + ld_shlibs_F77=yes + if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec_F77='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec_F77='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec_F77="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec_F77= + fi + supports_anon_versioning=no + case `$LD -v 2>/dev/null` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix3* | aix4* | aix5*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + ld_shlibs_F77=no + cat <&2 + +*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to modify your PATH +*** so that a non-GNU linker is found, and then restart. + +EOF + fi + ;; + + amigaos*) + archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_minus_L_F77=yes + + # Samuel A. Falvo II reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we can't use + # them. + ld_shlibs_F77=no + ;; + + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag_F77=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds_F77='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs_F77=no + fi + ;; + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, F77) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec_F77='-L$libdir' + allow_undefined_flag_F77=unsupported + always_export_symbols_F77=no + enable_shared_with_static_runtimes_F77=yes + export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds_F77='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs_F77=no + fi + ;; + + interix3*) + hardcode_direct_F77=no + hardcode_shlibpath_var_F77=no + hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' + export_dynamic_flag_spec_F77='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds_F77='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + linux*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + tmp_addflag= + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers + whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + esac + archive_cmds_F77='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test $supports_anon_versioning = yes; then + archive_expsym_cmds_F77='$echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + $echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + else + ld_shlibs_F77=no + fi + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds_F77='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then + ld_shlibs_F77=no + cat <&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +EOF + elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs_F77=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) + ld_shlibs_F77=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + hardcode_libdir_flag_spec_F77='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' + archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib' + archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib' + else + ld_shlibs_F77=no + fi + ;; + esac + ;; + + sunos4*) + archive_cmds_F77='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs_F77=no + fi + ;; + esac + + if test "$ld_shlibs_F77" = no; then + runpath_var= + hardcode_libdir_flag_spec_F77= + export_dynamic_flag_spec_F77= + whole_archive_flag_spec_F77= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag_F77=unsupported + always_export_symbols_F77=yes + archive_expsym_cmds_F77='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L_F77=yes + if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct_F77=unsupported + fi + ;; + + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + export_symbols_cmds_F77='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds_F77='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix5*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds_F77='' + hardcode_direct_F77=yes + hardcode_libdir_separator_F77=':' + link_all_deplibs_F77=yes + + if test "$GCC" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + hardcode_direct_F77=yes + else + # We have old collect2 + hardcode_direct_F77=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L_F77=yes + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_libdir_separator_F77= + fi + ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols_F77=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag_F77='-berok' + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF + program main + + end +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_f77_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath" + archive_expsym_cmds_F77="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec_F77='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag_F77="-z nodefs" + archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF + program main + + end +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_f77_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag_F77=' ${wl}-bernotok' + allow_undefined_flag_F77=' ${wl}-berok' + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec_F77='$convenience' + archive_cmds_need_lc_F77=yes + # This is similar to how AIX traditionally builds its shared libraries. + archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_minus_L_F77=yes + # see comment about different semantics on the GNU ld section + ld_shlibs_F77=no + ;; + + bsdi[45]*) + export_dynamic_flag_spec_F77=-rdynamic + ;; + + cygwin* | mingw* | pw32*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec_F77=' ' + allow_undefined_flag_F77=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + archive_cmds_F77='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_From_new_cmds_F77='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds_F77='lib /OUT:$oldlib$oldobjs$old_deplibs' + fix_srcfile_path_F77='`cygpath -w "$srcfile"`' + enable_shared_with_static_runtimes_F77=yes + ;; + + darwin* | rhapsody*) + case $host_os in + rhapsody* | darwin1.[012]) + allow_undefined_flag_F77='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[012]) + allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + allow_undefined_flag_F77='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; + esac + archive_cmds_need_lc_F77=no + hardcode_direct_F77=no + hardcode_automatic_F77=yes + hardcode_shlibpath_var_F77=unsupported + whole_archive_flag_spec_F77='' + link_all_deplibs_F77=yes + if test "$GCC" = yes ; then + output_verbose_link_cmd='echo' + archive_cmds_F77='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + archive_cmds_F77='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' + module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + ld_shlibs_F77=no + ;; + esac + fi + ;; + + dgux*) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_shlibpath_var_F77=no + ;; + + freebsd1*) + ld_shlibs_F77=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec_F77='-R$libdir' + hardcode_direct_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_F77=yes + hardcode_minus_L_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | kfreebsd*-gnu | dragonfly*) + archive_cmds_F77='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec_F77='-R$libdir' + hardcode_direct_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + hpux9*) + if test "$GCC" = yes; then + archive_cmds_F77='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + archive_cmds_F77='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_F77=: + hardcode_direct_F77=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_F77=yes + export_dynamic_flag_spec_F77='${wl}-E' + ;; + + hpux10*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_F77='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_F77=: + + hardcode_direct_F77=yes + export_dynamic_flag_spec_F77='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_F77=yes + fi + ;; + + hpux11*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*) + archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_F77=: + + case $host_cpu in + hppa*64*|ia64*) + hardcode_libdir_flag_spec_ld_F77='+b $libdir' + hardcode_direct_F77=no + hardcode_shlibpath_var_F77=no + ;; + *) + hardcode_direct_F77=yes + export_dynamic_flag_spec_F77='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_F77=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + archive_cmds_F77='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec_ld_F77='-rpath $libdir' + fi + hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_F77=: + link_all_deplibs_F77=yes + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds_F77='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec_F77='-R$libdir' + hardcode_direct_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + newsos6) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_F77=yes + hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_F77=: + hardcode_shlibpath_var_F77=no + ;; + + openbsd*) + hardcode_direct_F77=yes + hardcode_shlibpath_var_F77=no + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' + export_dynamic_flag_spec_F77='${wl}-E' + else + case $host_os in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_F77='-R$libdir' + ;; + *) + archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' + ;; + esac + fi + ;; + + os2*) + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_minus_L_F77=yes + allow_undefined_flag_F77=unsupported + archive_cmds_F77='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + old_archive_From_new_cmds_F77='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + allow_undefined_flag_F77=' -expect_unresolved \*' + archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + fi + hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_F77=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' + else + allow_undefined_flag_F77=' -expect_unresolved \*' + archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds_F77='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ + $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' + + # Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec_F77='-rpath $libdir' + fi + hardcode_libdir_separator_F77=: + ;; + + solaris*) + no_undefined_flag_F77=' -z text' + if test "$GCC" = yes; then + wlarc='${wl}' + archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' + else + wlarc='' + archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + fi + hardcode_libdir_flag_spec_F77='-R$libdir' + hardcode_shlibpath_var_F77=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine linker options so we + # cannot just pass the convience library names through + # without $wl, iff we do not link with $LD. + # Luckily, gcc supports the same syntax we need for Sun Studio. + # Supported since Solaris 2.6 (maybe 2.5.1?) + case $wlarc in + '') + whole_archive_flag_spec_F77='-z allextract$convenience -z defaultextract' ;; + *) + whole_archive_flag_spec_F77='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;; + esac ;; + esac + link_all_deplibs_F77=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds_F77='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_F77='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_direct_F77=yes + hardcode_minus_L_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + sysv4) + case $host_vendor in + sni) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_F77=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags' + reload_cmds_F77='$CC -r -o $output$reload_objs' + hardcode_direct_F77=no + ;; + motorola) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_F77=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var_F77=no + ;; + + sysv4.3*) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var_F77=no + export_dynamic_flag_spec_F77='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var_F77=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs_F77=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7*) + no_undefined_flag_F77='${wl}-z,text' + archive_cmds_need_lc_F77=no + hardcode_shlibpath_var_F77=no + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds_F77='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_F77='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_F77='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_F77='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + no_undefined_flag_F77='${wl}-z,text' + allow_undefined_flag_F77='${wl}-z,nodefs' + archive_cmds_need_lc_F77=no + hardcode_shlibpath_var_F77=no + hardcode_libdir_flag_spec_F77='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' + hardcode_libdir_separator_F77=':' + link_all_deplibs_F77=yes + export_dynamic_flag_spec_F77='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds_F77='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_F77='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_F77='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_F77='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_shlibpath_var_F77=no + ;; + + *) + ld_shlibs_F77=no + ;; + esac + fi + +{ echo "$as_me:$LINENO: result: $ld_shlibs_F77" >&5 +echo "${ECHO_T}$ld_shlibs_F77" >&6; } +test "$ld_shlibs_F77" = no && can_build_shared=no + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc_F77" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc_F77=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds_F77 in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 +echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; } + $rm conftest* + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl_F77 + pic_flag=$lt_prog_compiler_pic_F77 + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag_F77 + allow_undefined_flag_F77= + if { (eval echo "$as_me:$LINENO: \"$archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 + (eval $archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + then + archive_cmds_need_lc_F77=no + else + archive_cmds_need_lc_F77=yes + fi + allow_undefined_flag_F77=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $rm conftest* + { echo "$as_me:$LINENO: result: $archive_cmds_need_lc_F77" >&5 +echo "${ECHO_T}$archive_cmds_need_lc_F77" >&6; } + ;; + esac + fi + ;; +esac + +{ echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 +echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; } +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix4* | aix5*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32*) + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + linux*) + if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + supports_anon_versioning=no + case `$LD -v 2>/dev/null` in + *\ 01.* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + if test $supports_anon_versioning = yes; then + archive_expsym_cmds='$echo "{ global:" > $output_objdir/$libname.ver~ +cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ +$echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + else + $archive_expsym_cmds="$archive_cmds" + fi + else + ld_shlibs=no + fi + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. + if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` + else + sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' + fi + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +kfreebsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[123]*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + # Handle Gentoo/FreeBSD as it was Linux + case $host_vendor in + gentoo) + version_type=linux ;; + *) + version_type=freebsd-$objformat ;; + esac + + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + linux) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + need_lib_prefix=no + need_version=no + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + freebsd*) # from 4.6 on + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +interix3*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +knetbsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +nto-qnx*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + export_dynamic_flag_spec='${wl}-Blargedynsym' + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + shlibpath_overrides_runpath=no + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + shlibpath_overrides_runpath=yes + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +{ echo "$as_me:$LINENO: result: $dynamic_linker" >&5 +echo "${ECHO_T}$dynamic_linker" >&6; } +test "$dynamic_linker" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +{ echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 +echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; } +hardcode_action_F77= +if test -n "$hardcode_libdir_flag_spec_F77" || \ + test -n "$runpath_var_F77" || \ + test "X$hardcode_automatic_F77" = "Xyes" ; then + + # We can hardcode non-existant directories. + if test "$hardcode_direct_F77" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, F77)" != no && + test "$hardcode_minus_L_F77" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action_F77=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action_F77=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action_F77=unsupported +fi +{ echo "$as_me:$LINENO: result: $hardcode_action_F77" >&5 +echo "${ECHO_T}$hardcode_action_F77" >&6; } + +if test "$hardcode_action_F77" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + + +# The else clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + # See if we are running on zsh, and set the options which allow our commands through + # without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ + SED SHELL STRIP \ + libname_spec library_names_spec soname_spec extract_expsyms_cmds \ + old_striplib striplib file_magic_cmd finish_cmds finish_eval \ + deplibs_check_method reload_flag reload_cmds need_locks \ + lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ + lt_cv_sys_global_symbol_to_c_name_address \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + old_postinstall_cmds old_postuninstall_cmds \ + compiler_F77 \ + CC_F77 \ + LD_F77 \ + lt_prog_compiler_wl_F77 \ + lt_prog_compiler_pic_F77 \ + lt_prog_compiler_static_F77 \ + lt_prog_compiler_no_builtin_flag_F77 \ + export_dynamic_flag_spec_F77 \ + thread_safe_flag_spec_F77 \ + whole_archive_flag_spec_F77 \ + enable_shared_with_static_runtimes_F77 \ + old_archive_cmds_F77 \ + old_archive_from_new_cmds_F77 \ + predep_objects_F77 \ + postdep_objects_F77 \ + predeps_F77 \ + postdeps_F77 \ + compiler_lib_search_path_F77 \ + archive_cmds_F77 \ + archive_expsym_cmds_F77 \ + postinstall_cmds_F77 \ + postuninstall_cmds_F77 \ + old_archive_from_expsyms_cmds_F77 \ + allow_undefined_flag_F77 \ + no_undefined_flag_F77 \ + export_symbols_cmds_F77 \ + hardcode_libdir_flag_spec_F77 \ + hardcode_libdir_flag_spec_ld_F77 \ + hardcode_libdir_separator_F77 \ + hardcode_automatic_F77 \ + module_cmds_F77 \ + module_expsym_cmds_F77 \ + lt_cv_prog_compiler_c_o_F77 \ + exclude_expsyms_F77 \ + include_expsyms_F77; do + + case $var in + old_archive_cmds_F77 | \ + old_archive_from_new_cmds_F77 | \ + archive_cmds_F77 | \ + archive_expsym_cmds_F77 | \ + module_cmds_F77 | \ + module_expsym_cmds_F77 | \ + old_archive_from_expsyms_cmds_F77 | \ + export_symbols_cmds_F77 | \ + extract_expsyms_cmds | reload_cmds | finish_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + case $lt_echo in + *'\$0 --fallback-echo"') + lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` + ;; + esac + +cfgfile="$ofile" + + cat <<__EOF__ >> "$cfgfile" +# ### BEGIN LIBTOOL TAG CONFIG: $tagname + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc_F77 + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_F77 + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# LTCC compiler flags. +LTCFLAGS=$lt_LTCFLAGS + +# A language-specific compiler. +CC=$lt_compiler_F77 + +# Is the compiler the GNU C compiler? +with_gcc=$GCC_F77 + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_LD_F77 + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl_F77 + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic_F77 +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o_F77 + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static_F77 + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_F77 + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_F77 + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec_F77 + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_thread_safe_flag_spec_F77 + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_old_archive_cmds_F77 +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_F77 + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_F77 + +# Commands used to build and install a shared archive. +archive_cmds=$lt_archive_cmds_F77 +archive_expsym_cmds=$lt_archive_expsym_cmds_F77 +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_module_cmds_F77 +module_expsym_cmds=$lt_module_expsym_cmds_F77 + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=$lt_predep_objects_F77 + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_postdep_objects_F77 + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_predeps_F77 + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_postdeps_F77 + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path_F77 + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag_F77 + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag_F77 + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action_F77 + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_F77 + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_F77 + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator_F77 + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct_F77 + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L_F77 + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var_F77 + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$hardcode_automatic_F77 + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs_F77 + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path="$fix_srcfile_path_F77" + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols_F77 + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds_F77 + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms_F77 + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms_F77 + +# ### END LIBTOOL TAG CONFIG: $tagname + +__EOF__ + + +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +CC="$lt_save_CC" + + else + tagname="" + fi + ;; + + GCJ) + if test -n "$GCJ" && test "X$GCJ" != "Xno"; then + + +# Source file extension for Java test sources. +ac_ext=java + +# Object file extension for compiled Java test sources. +objext=o +objext_GCJ=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="class foo {}\n" + +# Code to be used in simple link tests +lt_simple_link_test_code='public class conftest { public static void main(String[] argv) {}; }\n' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +printf "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* + +ac_outfile=conftest.$ac_objext +printf "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm conftest* + + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +CC=${GCJ-"gcj"} +compiler=$CC +compiler_GCJ=$CC +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + +# GCJ did not exist at the time GCC didn't implicitly link libc in. +archive_cmds_need_lc_GCJ=no + +old_archive_cmds_GCJ=$old_archive_cmds + + +lt_prog_compiler_no_builtin_flag_GCJ= + +if test "$GCC" = yes; then + lt_prog_compiler_no_builtin_flag_GCJ=' -fno-builtin' + + +{ echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6; } +if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_rtti_exceptions=no + ac_outfile=conftest.$ac_objext + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="-fno-rtti -fno-exceptions" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:18327: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:18331: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_rtti_exceptions=yes + fi + fi + $rm conftest* + +fi +{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6; } + +if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then + lt_prog_compiler_no_builtin_flag_GCJ="$lt_prog_compiler_no_builtin_flag_GCJ -fno-rtti -fno-exceptions" +else + : +fi + +fi + +lt_prog_compiler_wl_GCJ= +lt_prog_compiler_pic_GCJ= +lt_prog_compiler_static_GCJ= + +{ echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 +echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } + + if test "$GCC" = yes; then + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_static_GCJ='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_GCJ='-Bstatic' + fi + ;; + + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic_GCJ='-m68020 -resident32 -malways-restore-a4' + ;; + + beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic_GCJ='-DDLL_EXPORT' + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic_GCJ='-fno-common' + ;; + + interix3*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + lt_prog_compiler_can_build_shared_GCJ=no + enable_shared=no + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic_GCJ=-Kconform_pic + fi + ;; + + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_GCJ='-fPIC' + ;; + esac + ;; + + *) + lt_prog_compiler_pic_GCJ='-fPIC' + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + lt_prog_compiler_wl_GCJ='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_GCJ='-Bstatic' + else + lt_prog_compiler_static_GCJ='-bnso -bI:/lib/syscalls.exp' + fi + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + lt_prog_compiler_pic_GCJ='-qnocommon' + lt_prog_compiler_wl_GCJ='-Wl,' + ;; + esac + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic_GCJ='-DDLL_EXPORT' + ;; + + hpux9* | hpux10* | hpux11*) + lt_prog_compiler_wl_GCJ='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_GCJ='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + lt_prog_compiler_static_GCJ='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + lt_prog_compiler_wl_GCJ='-Wl,' + # PIC (with -KPIC) is the default. + lt_prog_compiler_static_GCJ='-non_shared' + ;; + + newsos6) + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + + linux*) + case $cc_basename in + icc* | ecc*) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-static' + ;; + pgcc* | pgf77* | pgf90* | pgf95*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_pic_GCJ='-fpic' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + ccc*) + lt_prog_compiler_wl_GCJ='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static_GCJ='-non_shared' + ;; + esac + ;; + + osf3* | osf4* | osf5*) + lt_prog_compiler_wl_GCJ='-Wl,' + # All OSF/1 code is PIC. + lt_prog_compiler_static_GCJ='-non_shared' + ;; + + solaris*) + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-Bstatic' + case $cc_basename in + f77* | f90* | f95*) + lt_prog_compiler_wl_GCJ='-Qoption ld ';; + *) + lt_prog_compiler_wl_GCJ='-Wl,';; + esac + ;; + + sunos4*) + lt_prog_compiler_wl_GCJ='-Qoption ld ' + lt_prog_compiler_pic_GCJ='-PIC' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + lt_prog_compiler_pic_GCJ='-Kconform_pic' + lt_prog_compiler_static_GCJ='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + + unicos*) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_can_build_shared_GCJ=no + ;; + + uts4*) + lt_prog_compiler_pic_GCJ='-pic' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + + *) + lt_prog_compiler_can_build_shared_GCJ=no + ;; + esac + fi + +{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_GCJ" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_GCJ" >&6; } + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic_GCJ"; then + +{ echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works" >&5 +echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works... $ECHO_C" >&6; } +if test "${lt_prog_compiler_pic_works_GCJ+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_prog_compiler_pic_works_GCJ=no + ac_outfile=conftest.$ac_objext + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic_GCJ" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:18595: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:18599: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_prog_compiler_pic_works_GCJ=yes + fi + fi + $rm conftest* + +fi +{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_GCJ" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_works_GCJ" >&6; } + +if test x"$lt_prog_compiler_pic_works_GCJ" = xyes; then + case $lt_prog_compiler_pic_GCJ in + "" | " "*) ;; + *) lt_prog_compiler_pic_GCJ=" $lt_prog_compiler_pic_GCJ" ;; + esac +else + lt_prog_compiler_pic_GCJ= + lt_prog_compiler_can_build_shared_GCJ=no +fi + +fi +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic_GCJ= + ;; + *) + lt_prog_compiler_pic_GCJ="$lt_prog_compiler_pic_GCJ" + ;; +esac + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl_GCJ eval lt_tmp_static_flag=\"$lt_prog_compiler_static_GCJ\" +{ echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; } +if test "${lt_prog_compiler_static_works_GCJ+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_prog_compiler_static_works_GCJ=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + printf "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_prog_compiler_static_works_GCJ=yes + fi + else + lt_prog_compiler_static_works_GCJ=yes + fi + fi + $rm conftest* + LDFLAGS="$save_LDFLAGS" + +fi +{ echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works_GCJ" >&5 +echo "${ECHO_T}$lt_prog_compiler_static_works_GCJ" >&6; } + +if test x"$lt_prog_compiler_static_works_GCJ" = xyes; then + : +else + lt_prog_compiler_static_GCJ= +fi + + +{ echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 +echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; } +if test "${lt_cv_prog_compiler_c_o_GCJ+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_c_o_GCJ=no + $rm -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:18699: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:18703: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o_GCJ=yes + fi + fi + chmod u+w . 2>&5 + $rm conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files + $rm out/* && rmdir out + cd .. + rmdir conftest + $rm conftest* + +fi +{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_GCJ" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_c_o_GCJ" >&6; } + + +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o_GCJ" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 +echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6; } + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + { echo "$as_me:$LINENO: result: $hard_links" >&5 +echo "${ECHO_T}$hard_links" >&6; } + if test "$hard_links" = no; then + { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + +{ echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; } + + runpath_var= + allow_undefined_flag_GCJ= + enable_shared_with_static_runtimes_GCJ=no + archive_cmds_GCJ= + archive_expsym_cmds_GCJ= + old_archive_From_new_cmds_GCJ= + old_archive_from_expsyms_cmds_GCJ= + export_dynamic_flag_spec_GCJ= + whole_archive_flag_spec_GCJ= + thread_safe_flag_spec_GCJ= + hardcode_libdir_flag_spec_GCJ= + hardcode_libdir_flag_spec_ld_GCJ= + hardcode_libdir_separator_GCJ= + hardcode_direct_GCJ=no + hardcode_minus_L_GCJ=no + hardcode_shlibpath_var_GCJ=unsupported + link_all_deplibs_GCJ=unknown + hardcode_automatic_GCJ=no + module_cmds_GCJ= + module_expsym_cmds_GCJ= + always_export_symbols_GCJ=no + export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + include_expsyms_GCJ= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + exclude_expsyms_GCJ="_GLOBAL_OFFSET_TABLE_" + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + extract_expsyms_cmds= + # Just being paranoid about ensuring that cc_basename is set. + for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + case $host_os in + cygwin* | mingw* | pw32*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd*) + with_gnu_ld=no + ;; + esac + + ld_shlibs_GCJ=yes + if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec_GCJ='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec_GCJ='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec_GCJ="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec_GCJ= + fi + supports_anon_versioning=no + case `$LD -v 2>/dev/null` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix3* | aix4* | aix5*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + ld_shlibs_GCJ=no + cat <&2 + +*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to modify your PATH +*** so that a non-GNU linker is found, and then restart. + +EOF + fi + ;; + + amigaos*) + archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_minus_L_GCJ=yes + + # Samuel A. Falvo II reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we can't use + # them. + ld_shlibs_GCJ=no + ;; + + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag_GCJ=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds_GCJ='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs_GCJ=no + fi + ;; + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, GCJ) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec_GCJ='-L$libdir' + allow_undefined_flag_GCJ=unsupported + always_export_symbols_GCJ=no + enable_shared_with_static_runtimes_GCJ=yes + export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds_GCJ='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs_GCJ=no + fi + ;; + + interix3*) + hardcode_direct_GCJ=no + hardcode_shlibpath_var_GCJ=no + hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' + export_dynamic_flag_spec_GCJ='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds_GCJ='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds_GCJ='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + linux*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + tmp_addflag= + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + whole_archive_flag_spec_GCJ='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers + whole_archive_flag_spec_GCJ='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + esac + archive_cmds_GCJ='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test $supports_anon_versioning = yes; then + archive_expsym_cmds_GCJ='$echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + $echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + else + ld_shlibs_GCJ=no + fi + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds_GCJ='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then + ld_shlibs_GCJ=no + cat <&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +EOF + elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs_GCJ=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) + ld_shlibs_GCJ=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + hardcode_libdir_flag_spec_GCJ='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib' + archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib' + else + ld_shlibs_GCJ=no + fi + ;; + esac + ;; + + sunos4*) + archive_cmds_GCJ='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs_GCJ=no + fi + ;; + esac + + if test "$ld_shlibs_GCJ" = no; then + runpath_var= + hardcode_libdir_flag_spec_GCJ= + export_dynamic_flag_spec_GCJ= + whole_archive_flag_spec_GCJ= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag_GCJ=unsupported + always_export_symbols_GCJ=yes + archive_expsym_cmds_GCJ='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L_GCJ=yes + if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct_GCJ=unsupported + fi + ;; + + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + export_symbols_cmds_GCJ='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds_GCJ='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix5*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds_GCJ='' + hardcode_direct_GCJ=yes + hardcode_libdir_separator_GCJ=':' + link_all_deplibs_GCJ=yes + + if test "$GCC" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + hardcode_direct_GCJ=yes + else + # We have old collect2 + hardcode_direct_GCJ=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L_GCJ=yes + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_libdir_separator_GCJ= + fi + ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols_GCJ=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag_GCJ='-berok' + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath" + archive_expsym_cmds_GCJ="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec_GCJ='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag_GCJ="-z nodefs" + archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag_GCJ=' ${wl}-bernotok' + allow_undefined_flag_GCJ=' ${wl}-berok' + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec_GCJ='$convenience' + archive_cmds_need_lc_GCJ=yes + # This is similar to how AIX traditionally builds its shared libraries. + archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_minus_L_GCJ=yes + # see comment about different semantics on the GNU ld section + ld_shlibs_GCJ=no + ;; + + bsdi[45]*) + export_dynamic_flag_spec_GCJ=-rdynamic + ;; + + cygwin* | mingw* | pw32*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec_GCJ=' ' + allow_undefined_flag_GCJ=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + archive_cmds_GCJ='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_From_new_cmds_GCJ='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds_GCJ='lib /OUT:$oldlib$oldobjs$old_deplibs' + fix_srcfile_path_GCJ='`cygpath -w "$srcfile"`' + enable_shared_with_static_runtimes_GCJ=yes + ;; + + darwin* | rhapsody*) + case $host_os in + rhapsody* | darwin1.[012]) + allow_undefined_flag_GCJ='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[012]) + allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + allow_undefined_flag_GCJ='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; + esac + archive_cmds_need_lc_GCJ=no + hardcode_direct_GCJ=no + hardcode_automatic_GCJ=yes + hardcode_shlibpath_var_GCJ=unsupported + whole_archive_flag_spec_GCJ='' + link_all_deplibs_GCJ=yes + if test "$GCC" = yes ; then + output_verbose_link_cmd='echo' + archive_cmds_GCJ='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + archive_cmds_GCJ='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' + module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + ld_shlibs_GCJ=no + ;; + esac + fi + ;; + + dgux*) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_shlibpath_var_GCJ=no + ;; + + freebsd1*) + ld_shlibs_GCJ=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec_GCJ='-R$libdir' + hardcode_direct_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_GCJ=yes + hardcode_minus_L_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | kfreebsd*-gnu | dragonfly*) + archive_cmds_GCJ='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec_GCJ='-R$libdir' + hardcode_direct_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + hpux9*) + if test "$GCC" = yes; then + archive_cmds_GCJ='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + archive_cmds_GCJ='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + hardcode_direct_GCJ=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_GCJ=yes + export_dynamic_flag_spec_GCJ='${wl}-E' + ;; + + hpux10*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_GCJ='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + + hardcode_direct_GCJ=yes + export_dynamic_flag_spec_GCJ='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_GCJ=yes + fi + ;; + + hpux11*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*) + archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + + case $host_cpu in + hppa*64*|ia64*) + hardcode_libdir_flag_spec_ld_GCJ='+b $libdir' + hardcode_direct_GCJ=no + hardcode_shlibpath_var_GCJ=no + ;; + *) + hardcode_direct_GCJ=yes + export_dynamic_flag_spec_GCJ='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_GCJ=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + archive_cmds_GCJ='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec_ld_GCJ='-rpath $libdir' + fi + hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + link_all_deplibs_GCJ=yes + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds_GCJ='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec_GCJ='-R$libdir' + hardcode_direct_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + newsos6) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_GCJ=yes + hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + hardcode_shlibpath_var_GCJ=no + ;; + + openbsd*) + hardcode_direct_GCJ=yes + hardcode_shlibpath_var_GCJ=no + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' + export_dynamic_flag_spec_GCJ='${wl}-E' + else + case $host_os in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_GCJ='-R$libdir' + ;; + *) + archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' + ;; + esac + fi + ;; + + os2*) + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_minus_L_GCJ=yes + allow_undefined_flag_GCJ=unsupported + archive_cmds_GCJ='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + old_archive_From_new_cmds_GCJ='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + allow_undefined_flag_GCJ=' -expect_unresolved \*' + archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + fi + hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' + else + allow_undefined_flag_GCJ=' -expect_unresolved \*' + archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds_GCJ='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ + $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' + + # Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec_GCJ='-rpath $libdir' + fi + hardcode_libdir_separator_GCJ=: + ;; + + solaris*) + no_undefined_flag_GCJ=' -z text' + if test "$GCC" = yes; then + wlarc='${wl}' + archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' + else + wlarc='' + archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + fi + hardcode_libdir_flag_spec_GCJ='-R$libdir' + hardcode_shlibpath_var_GCJ=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine linker options so we + # cannot just pass the convience library names through + # without $wl, iff we do not link with $LD. + # Luckily, gcc supports the same syntax we need for Sun Studio. + # Supported since Solaris 2.6 (maybe 2.5.1?) + case $wlarc in + '') + whole_archive_flag_spec_GCJ='-z allextract$convenience -z defaultextract' ;; + *) + whole_archive_flag_spec_GCJ='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;; + esac ;; + esac + link_all_deplibs_GCJ=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds_GCJ='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_GCJ='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_direct_GCJ=yes + hardcode_minus_L_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + sysv4) + case $host_vendor in + sni) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_GCJ=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags' + reload_cmds_GCJ='$CC -r -o $output$reload_objs' + hardcode_direct_GCJ=no + ;; + motorola) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_GCJ=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var_GCJ=no + ;; + + sysv4.3*) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var_GCJ=no + export_dynamic_flag_spec_GCJ='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var_GCJ=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs_GCJ=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7*) + no_undefined_flag_GCJ='${wl}-z,text' + archive_cmds_need_lc_GCJ=no + hardcode_shlibpath_var_GCJ=no + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds_GCJ='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_GCJ='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_GCJ='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_GCJ='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + no_undefined_flag_GCJ='${wl}-z,text' + allow_undefined_flag_GCJ='${wl}-z,nodefs' + archive_cmds_need_lc_GCJ=no + hardcode_shlibpath_var_GCJ=no + hardcode_libdir_flag_spec_GCJ='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' + hardcode_libdir_separator_GCJ=':' + link_all_deplibs_GCJ=yes + export_dynamic_flag_spec_GCJ='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds_GCJ='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_GCJ='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_GCJ='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_GCJ='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_shlibpath_var_GCJ=no + ;; + + *) + ld_shlibs_GCJ=no + ;; + esac + fi + +{ echo "$as_me:$LINENO: result: $ld_shlibs_GCJ" >&5 +echo "${ECHO_T}$ld_shlibs_GCJ" >&6; } +test "$ld_shlibs_GCJ" = no && can_build_shared=no + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc_GCJ" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc_GCJ=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds_GCJ in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 +echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; } + $rm conftest* + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl_GCJ + pic_flag=$lt_prog_compiler_pic_GCJ + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag_GCJ + allow_undefined_flag_GCJ= + if { (eval echo "$as_me:$LINENO: \"$archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 + (eval $archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + then + archive_cmds_need_lc_GCJ=no + else + archive_cmds_need_lc_GCJ=yes + fi + allow_undefined_flag_GCJ=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $rm conftest* + { echo "$as_me:$LINENO: result: $archive_cmds_need_lc_GCJ" >&5 +echo "${ECHO_T}$archive_cmds_need_lc_GCJ" >&6; } + ;; + esac + fi + ;; +esac + +{ echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 +echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; } +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix4* | aix5*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32*) + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + linux*) + if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + supports_anon_versioning=no + case `$LD -v 2>/dev/null` in + *\ 01.* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + if test $supports_anon_versioning = yes; then + archive_expsym_cmds='$echo "{ global:" > $output_objdir/$libname.ver~ +cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ +$echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + else + $archive_expsym_cmds="$archive_cmds" + fi + else + ld_shlibs=no + fi + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. + if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` + else + sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' + fi + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +kfreebsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[123]*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + # Handle Gentoo/FreeBSD as it was Linux + case $host_vendor in + gentoo) + version_type=linux ;; + *) + version_type=freebsd-$objformat ;; + esac + + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + linux) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + need_lib_prefix=no + need_version=no + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + freebsd*) # from 4.6 on + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +interix3*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +knetbsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +nto-qnx*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + export_dynamic_flag_spec='${wl}-Blargedynsym' + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + shlibpath_overrides_runpath=no + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + shlibpath_overrides_runpath=yes + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +{ echo "$as_me:$LINENO: result: $dynamic_linker" >&5 +echo "${ECHO_T}$dynamic_linker" >&6; } +test "$dynamic_linker" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +{ echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 +echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; } +hardcode_action_GCJ= +if test -n "$hardcode_libdir_flag_spec_GCJ" || \ + test -n "$runpath_var_GCJ" || \ + test "X$hardcode_automatic_GCJ" = "Xyes" ; then + + # We can hardcode non-existant directories. + if test "$hardcode_direct_GCJ" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, GCJ)" != no && + test "$hardcode_minus_L_GCJ" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action_GCJ=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action_GCJ=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action_GCJ=unsupported +fi +{ echo "$as_me:$LINENO: result: $hardcode_action_GCJ" >&5 +echo "${ECHO_T}$hardcode_action_GCJ" >&6; } + +if test "$hardcode_action_GCJ" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + + +# The else clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + # See if we are running on zsh, and set the options which allow our commands through + # without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ + SED SHELL STRIP \ + libname_spec library_names_spec soname_spec extract_expsyms_cmds \ + old_striplib striplib file_magic_cmd finish_cmds finish_eval \ + deplibs_check_method reload_flag reload_cmds need_locks \ + lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ + lt_cv_sys_global_symbol_to_c_name_address \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + old_postinstall_cmds old_postuninstall_cmds \ + compiler_GCJ \ + CC_GCJ \ + LD_GCJ \ + lt_prog_compiler_wl_GCJ \ + lt_prog_compiler_pic_GCJ \ + lt_prog_compiler_static_GCJ \ + lt_prog_compiler_no_builtin_flag_GCJ \ + export_dynamic_flag_spec_GCJ \ + thread_safe_flag_spec_GCJ \ + whole_archive_flag_spec_GCJ \ + enable_shared_with_static_runtimes_GCJ \ + old_archive_cmds_GCJ \ + old_archive_from_new_cmds_GCJ \ + predep_objects_GCJ \ + postdep_objects_GCJ \ + predeps_GCJ \ + postdeps_GCJ \ + compiler_lib_search_path_GCJ \ + archive_cmds_GCJ \ + archive_expsym_cmds_GCJ \ + postinstall_cmds_GCJ \ + postuninstall_cmds_GCJ \ + old_archive_from_expsyms_cmds_GCJ \ + allow_undefined_flag_GCJ \ + no_undefined_flag_GCJ \ + export_symbols_cmds_GCJ \ + hardcode_libdir_flag_spec_GCJ \ + hardcode_libdir_flag_spec_ld_GCJ \ + hardcode_libdir_separator_GCJ \ + hardcode_automatic_GCJ \ + module_cmds_GCJ \ + module_expsym_cmds_GCJ \ + lt_cv_prog_compiler_c_o_GCJ \ + exclude_expsyms_GCJ \ + include_expsyms_GCJ; do + + case $var in + old_archive_cmds_GCJ | \ + old_archive_from_new_cmds_GCJ | \ + archive_cmds_GCJ | \ + archive_expsym_cmds_GCJ | \ + module_cmds_GCJ | \ + module_expsym_cmds_GCJ | \ + old_archive_from_expsyms_cmds_GCJ | \ + export_symbols_cmds_GCJ | \ + extract_expsyms_cmds | reload_cmds | finish_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + case $lt_echo in + *'\$0 --fallback-echo"') + lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` + ;; + esac + +cfgfile="$ofile" + + cat <<__EOF__ >> "$cfgfile" +# ### BEGIN LIBTOOL TAG CONFIG: $tagname + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc_GCJ + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_GCJ + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# LTCC compiler flags. +LTCFLAGS=$lt_LTCFLAGS + +# A language-specific compiler. +CC=$lt_compiler_GCJ + +# Is the compiler the GNU C compiler? +with_gcc=$GCC_GCJ + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_LD_GCJ + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl_GCJ + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic_GCJ +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o_GCJ + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static_GCJ + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_GCJ + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_GCJ + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec_GCJ + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_thread_safe_flag_spec_GCJ + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_old_archive_cmds_GCJ +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_GCJ + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_GCJ + +# Commands used to build and install a shared archive. +archive_cmds=$lt_archive_cmds_GCJ +archive_expsym_cmds=$lt_archive_expsym_cmds_GCJ +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_module_cmds_GCJ +module_expsym_cmds=$lt_module_expsym_cmds_GCJ + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=$lt_predep_objects_GCJ + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_postdep_objects_GCJ + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_predeps_GCJ + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_postdeps_GCJ + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path_GCJ + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag_GCJ + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag_GCJ + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action_GCJ + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_GCJ + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_GCJ + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator_GCJ + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct_GCJ + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L_GCJ + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var_GCJ + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$hardcode_automatic_GCJ + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs_GCJ + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path="$fix_srcfile_path_GCJ" + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols_GCJ + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds_GCJ + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms_GCJ + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms_GCJ + +# ### END LIBTOOL TAG CONFIG: $tagname + +__EOF__ + + +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +CC="$lt_save_CC" + + else + tagname="" + fi + ;; + + RC) + + +# Source file extension for RC test sources. +ac_ext=rc + +# Object file extension for compiled RC test sources. +objext=o +objext_RC=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }\n' + +# Code to be used in simple link tests +lt_simple_link_test_code="$lt_simple_compile_test_code" + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +printf "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* + +ac_outfile=conftest.$ac_objext +printf "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm conftest* + + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +CC=${RC-"windres"} +compiler=$CC +compiler_RC=$CC +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + +lt_cv_prog_compiler_c_o_RC=yes + +# The else clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + # See if we are running on zsh, and set the options which allow our commands through + # without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ + SED SHELL STRIP \ + libname_spec library_names_spec soname_spec extract_expsyms_cmds \ + old_striplib striplib file_magic_cmd finish_cmds finish_eval \ + deplibs_check_method reload_flag reload_cmds need_locks \ + lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ + lt_cv_sys_global_symbol_to_c_name_address \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + old_postinstall_cmds old_postuninstall_cmds \ + compiler_RC \ + CC_RC \ + LD_RC \ + lt_prog_compiler_wl_RC \ + lt_prog_compiler_pic_RC \ + lt_prog_compiler_static_RC \ + lt_prog_compiler_no_builtin_flag_RC \ + export_dynamic_flag_spec_RC \ + thread_safe_flag_spec_RC \ + whole_archive_flag_spec_RC \ + enable_shared_with_static_runtimes_RC \ + old_archive_cmds_RC \ + old_archive_from_new_cmds_RC \ + predep_objects_RC \ + postdep_objects_RC \ + predeps_RC \ + postdeps_RC \ + compiler_lib_search_path_RC \ + archive_cmds_RC \ + archive_expsym_cmds_RC \ + postinstall_cmds_RC \ + postuninstall_cmds_RC \ + old_archive_from_expsyms_cmds_RC \ + allow_undefined_flag_RC \ + no_undefined_flag_RC \ + export_symbols_cmds_RC \ + hardcode_libdir_flag_spec_RC \ + hardcode_libdir_flag_spec_ld_RC \ + hardcode_libdir_separator_RC \ + hardcode_automatic_RC \ + module_cmds_RC \ + module_expsym_cmds_RC \ + lt_cv_prog_compiler_c_o_RC \ + exclude_expsyms_RC \ + include_expsyms_RC; do + + case $var in + old_archive_cmds_RC | \ + old_archive_from_new_cmds_RC | \ + archive_cmds_RC | \ + archive_expsym_cmds_RC | \ + module_cmds_RC | \ + module_expsym_cmds_RC | \ + old_archive_from_expsyms_cmds_RC | \ + export_symbols_cmds_RC | \ + extract_expsyms_cmds | reload_cmds | finish_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + case $lt_echo in + *'\$0 --fallback-echo"') + lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` + ;; + esac + +cfgfile="$ofile" + + cat <<__EOF__ >> "$cfgfile" +# ### BEGIN LIBTOOL TAG CONFIG: $tagname + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc_RC + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_RC + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# LTCC compiler flags. +LTCFLAGS=$lt_LTCFLAGS + +# A language-specific compiler. +CC=$lt_compiler_RC + +# Is the compiler the GNU C compiler? +with_gcc=$GCC_RC + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_LD_RC + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl_RC + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic_RC +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o_RC + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static_RC + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_RC + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_RC + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec_RC + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_thread_safe_flag_spec_RC + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_old_archive_cmds_RC +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_RC + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_RC + +# Commands used to build and install a shared archive. +archive_cmds=$lt_archive_cmds_RC +archive_expsym_cmds=$lt_archive_expsym_cmds_RC +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_module_cmds_RC +module_expsym_cmds=$lt_module_expsym_cmds_RC + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=$lt_predep_objects_RC + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_postdep_objects_RC + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_predeps_RC + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_postdeps_RC + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path_RC + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag_RC + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag_RC + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action_RC + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_RC + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_RC + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator_RC + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct_RC + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L_RC + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var_RC + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$hardcode_automatic_RC + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs_RC + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path="$fix_srcfile_path_RC" + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols_RC + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds_RC + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms_RC + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms_RC + +# ### END LIBTOOL TAG CONFIG: $tagname + +__EOF__ + + +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +CC="$lt_save_CC" + + ;; + + *) + { { echo "$as_me:$LINENO: error: Unsupported tag name: $tagname" >&5 +echo "$as_me: error: Unsupported tag name: $tagname" >&2;} + { (exit 1); exit 1; }; } + ;; + esac + + # Append the new tag name to the list of available tags. + if test -n "$tagname" ; then + available_tags="$available_tags $tagname" + fi + fi + done + IFS="$lt_save_ifs" + + # Now substitute the updated list of available tags. + if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then + mv "${ofile}T" "$ofile" + chmod +x "$ofile" + else + rm -f "${ofile}T" + { { echo "$as_me:$LINENO: error: unable to update list of available tagged configurations." >&5 +echo "$as_me: error: unable to update list of available tagged configurations." >&2;} + { (exit 1); exit 1; }; } + fi +fi + + + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' + +# Prevent multiple expansion + + + + + + + + + + + + + + + + + + + + + +GETTEXT_PACKAGE=gajim + + +cat >>confdefs.h <<_ACEOF +#define GETTEXT_PACKAGE "$GETTEXT_PACKAGE" +_ACEOF + +ALL_LINGUAS="fr pt el pl es ru bg de nb cs nl pt_BR sv it eu sk no zh_CN br eo" + + +for ac_header in locale.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + { echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } +else + # Is the header compilable? +{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_compiler=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6; } + +# Is the header present? +{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi + +rm -f conftest.err conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + ( cat <<\_ASBOX +## ---------------------------------------------- ## +## Report this to http://trac.gajim.org/newticket ## +## ---------------------------------------------- ## +_ASBOX + ) | sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +{ echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + if test $ac_cv_header_locale_h = yes; then + { echo "$as_me:$LINENO: checking for LC_MESSAGES" >&5 +echo $ECHO_N "checking for LC_MESSAGES... $ECHO_C" >&6; } +if test "${am_cv_val_LC_MESSAGES+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +int +main () +{ +return LC_MESSAGES + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + am_cv_val_LC_MESSAGES=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + am_cv_val_LC_MESSAGES=no +fi + +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $am_cv_val_LC_MESSAGES" >&5 +echo "${ECHO_T}$am_cv_val_LC_MESSAGES" >&6; } + if test $am_cv_val_LC_MESSAGES = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_LC_MESSAGES 1 +_ACEOF + + fi + fi + USE_NLS=yes + + + gt_cv_have_gettext=no + + CATOBJEXT=NONE + XGETTEXT=: + INTLLIBS= + + if test "${ac_cv_header_libintl_h+set}" = set; then + { echo "$as_me:$LINENO: checking for libintl.h" >&5 +echo $ECHO_N "checking for libintl.h... $ECHO_C" >&6; } +if test "${ac_cv_header_libintl_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +{ echo "$as_me:$LINENO: result: $ac_cv_header_libintl_h" >&5 +echo "${ECHO_T}$ac_cv_header_libintl_h" >&6; } +else + # Is the header compilable? +{ echo "$as_me:$LINENO: checking libintl.h usability" >&5 +echo $ECHO_N "checking libintl.h usability... $ECHO_C" >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_compiler=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6; } + +# Is the header present? +{ echo "$as_me:$LINENO: checking libintl.h presence" >&5 +echo $ECHO_N "checking libintl.h presence... $ECHO_C" >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi + +rm -f conftest.err conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: libintl.h: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: libintl.h: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: libintl.h: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: libintl.h: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: libintl.h: present but cannot be compiled" >&5 +echo "$as_me: WARNING: libintl.h: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: libintl.h: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: libintl.h: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: libintl.h: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: libintl.h: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: libintl.h: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: libintl.h: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: libintl.h: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: libintl.h: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: libintl.h: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: libintl.h: in the future, the compiler will take precedence" >&2;} + ( cat <<\_ASBOX +## ---------------------------------------------- ## +## Report this to http://trac.gajim.org/newticket ## +## ---------------------------------------------- ## +_ASBOX + ) | sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +{ echo "$as_me:$LINENO: checking for libintl.h" >&5 +echo $ECHO_N "checking for libintl.h... $ECHO_C" >&6; } +if test "${ac_cv_header_libintl_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_header_libintl_h=$ac_header_preproc +fi +{ echo "$as_me:$LINENO: result: $ac_cv_header_libintl_h" >&5 +echo "${ECHO_T}$ac_cv_header_libintl_h" >&6; } + +fi +if test $ac_cv_header_libintl_h = yes; then + gt_cv_func_dgettext_libintl="no" + libintl_extra_libs="" + + # + # First check in libc + # + { echo "$as_me:$LINENO: checking for ngettext in libc" >&5 +echo $ECHO_N "checking for ngettext in libc... $ECHO_C" >&6; } +if test "${gt_cv_func_ngettext_libc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +#include + +int +main () +{ +return !ngettext ("","", 1) + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + gt_cv_func_ngettext_libc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + gt_cv_func_ngettext_libc=no +fi + +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + +fi +{ echo "$as_me:$LINENO: result: $gt_cv_func_ngettext_libc" >&5 +echo "${ECHO_T}$gt_cv_func_ngettext_libc" >&6; } + + if test "$gt_cv_func_ngettext_libc" = "yes" ; then + { echo "$as_me:$LINENO: checking for dgettext in libc" >&5 +echo $ECHO_N "checking for dgettext in libc... $ECHO_C" >&6; } +if test "${gt_cv_func_dgettext_libc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +#include + +int +main () +{ +return !dgettext ("","") + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + gt_cv_func_dgettext_libc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + gt_cv_func_dgettext_libc=no +fi + +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + +fi +{ echo "$as_me:$LINENO: result: $gt_cv_func_dgettext_libc" >&5 +echo "${ECHO_T}$gt_cv_func_dgettext_libc" >&6; } + fi + + if test "$gt_cv_func_ngettext_libc" = "yes" ; then + +for ac_func in bind_textdomain_codeset +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +{ echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } +if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case declares $ac_func. + For example, HP-UX 11i declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $ac_func + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $ac_func (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$ac_func || defined __stub___$ac_func +choke me +#endif + +int +main () +{ +return $ac_func (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + eval "$as_ac_var=no" +fi + +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +ac_res=`eval echo '${'$as_ac_var'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + fi + + # + # If we don't have everything we want, check in libintl + # + if test "$gt_cv_func_dgettext_libc" != "yes" \ + || test "$gt_cv_func_ngettext_libc" != "yes" \ + || test "$ac_cv_func_bind_textdomain_codeset" != "yes" ; then + + { echo "$as_me:$LINENO: checking for bindtextdomain in -lintl" >&5 +echo $ECHO_N "checking for bindtextdomain in -lintl... $ECHO_C" >&6; } +if test "${ac_cv_lib_intl_bindtextdomain+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lintl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char bindtextdomain (); +int +main () +{ +return bindtextdomain (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_intl_bindtextdomain=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_intl_bindtextdomain=no +fi + +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_lib_intl_bindtextdomain" >&5 +echo "${ECHO_T}$ac_cv_lib_intl_bindtextdomain" >&6; } +if test $ac_cv_lib_intl_bindtextdomain = yes; then + { echo "$as_me:$LINENO: checking for ngettext in -lintl" >&5 +echo $ECHO_N "checking for ngettext in -lintl... $ECHO_C" >&6; } +if test "${ac_cv_lib_intl_ngettext+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lintl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char ngettext (); +int +main () +{ +return ngettext (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_intl_ngettext=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_intl_ngettext=no +fi + +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_lib_intl_ngettext" >&5 +echo "${ECHO_T}$ac_cv_lib_intl_ngettext" >&6; } +if test $ac_cv_lib_intl_ngettext = yes; then + { echo "$as_me:$LINENO: checking for dgettext in -lintl" >&5 +echo $ECHO_N "checking for dgettext in -lintl... $ECHO_C" >&6; } +if test "${ac_cv_lib_intl_dgettext+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lintl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dgettext (); +int +main () +{ +return dgettext (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_intl_dgettext=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_intl_dgettext=no +fi + +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_lib_intl_dgettext" >&5 +echo "${ECHO_T}$ac_cv_lib_intl_dgettext" >&6; } +if test $ac_cv_lib_intl_dgettext = yes; then + gt_cv_func_dgettext_libintl=yes +fi + +fi + +fi + + + if test "$gt_cv_func_dgettext_libintl" != "yes" ; then + { echo "$as_me:$LINENO: checking if -liconv is needed to use gettext" >&5 +echo $ECHO_N "checking if -liconv is needed to use gettext... $ECHO_C" >&6; } + { echo "$as_me:$LINENO: result: " >&5 +echo "${ECHO_T}" >&6; } + { echo "$as_me:$LINENO: checking for ngettext in -lintl" >&5 +echo $ECHO_N "checking for ngettext in -lintl... $ECHO_C" >&6; } +if test "${ac_cv_lib_intl_ngettext+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lintl -liconv $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char ngettext (); +int +main () +{ +return ngettext (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_intl_ngettext=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_intl_ngettext=no +fi + +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_lib_intl_ngettext" >&5 +echo "${ECHO_T}$ac_cv_lib_intl_ngettext" >&6; } +if test $ac_cv_lib_intl_ngettext = yes; then + { echo "$as_me:$LINENO: checking for dcgettext in -lintl" >&5 +echo $ECHO_N "checking for dcgettext in -lintl... $ECHO_C" >&6; } +if test "${ac_cv_lib_intl_dcgettext+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lintl -liconv $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dcgettext (); +int +main () +{ +return dcgettext (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_intl_dcgettext=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_intl_dcgettext=no +fi + +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_lib_intl_dcgettext" >&5 +echo "${ECHO_T}$ac_cv_lib_intl_dcgettext" >&6; } +if test $ac_cv_lib_intl_dcgettext = yes; then + gt_cv_func_dgettext_libintl=yes + libintl_extra_libs=-liconv +else + : +fi + +else + : +fi + + fi + + # + # If we found libintl, then check in it for bind_textdomain_codeset(); + # we'll prefer libc if neither have bind_textdomain_codeset(), + # and both have dgettext and ngettext + # + if test "$gt_cv_func_dgettext_libintl" = "yes" ; then + glib_save_LIBS="$LIBS" + LIBS="$LIBS -lintl $libintl_extra_libs" + unset ac_cv_func_bind_textdomain_codeset + +for ac_func in bind_textdomain_codeset +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +{ echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } +if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case declares $ac_func. + For example, HP-UX 11i declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $ac_func + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $ac_func (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$ac_func || defined __stub___$ac_func +choke me +#endif + +int +main () +{ +return $ac_func (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + eval "$as_ac_var=no" +fi + +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +ac_res=`eval echo '${'$as_ac_var'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + LIBS="$glib_save_LIBS" + + if test "$ac_cv_func_bind_textdomain_codeset" = "yes" ; then + gt_cv_func_dgettext_libc=no + else + if test "$gt_cv_func_dgettext_libc" = "yes" \ + && test "$gt_cv_func_ngettext_libc" = "yes"; then + gt_cv_func_dgettext_libintl=no + fi + fi + fi + fi + + if test "$gt_cv_func_dgettext_libc" = "yes" \ + || test "$gt_cv_func_dgettext_libintl" = "yes"; then + gt_cv_have_gettext=yes + fi + + if test "$gt_cv_func_dgettext_libintl" = "yes"; then + INTLLIBS="-lintl $libintl_extra_libs" + fi + + if test "$gt_cv_have_gettext" = "yes"; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_GETTEXT 1 +_ACEOF + + # Extract the first word of "msgfmt", so it can be a program name with args. +set dummy msgfmt; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_path_MSGFMT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case "$MSGFMT" in + /*) + ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + if test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"; then + ac_cv_path_MSGFMT="$ac_dir/$ac_word" + break + fi + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT="no" + ;; +esac +fi +MSGFMT="$ac_cv_path_MSGFMT" +if test "$MSGFMT" != "no"; then + { echo "$as_me:$LINENO: result: $MSGFMT" >&5 +echo "${ECHO_T}$MSGFMT" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + if test "$MSGFMT" != "no"; then + glib_save_LIBS="$LIBS" + LIBS="$LIBS $INTLLIBS" + +for ac_func in dcgettext +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +{ echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } +if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case declares $ac_func. + For example, HP-UX 11i declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $ac_func + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $ac_func (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$ac_func || defined __stub___$ac_func +choke me +#endif + +int +main () +{ +return $ac_func (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + eval "$as_ac_var=no" +fi + +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +ac_res=`eval echo '${'$as_ac_var'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + # Extract the first word of "gmsgfmt", so it can be a program name with args. +set dummy gmsgfmt; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_path_GMSGFMT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $GMSGFMT in + [\\/]* | ?:[\\/]*) + ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + + test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" + ;; +esac +fi +GMSGFMT=$ac_cv_path_GMSGFMT +if test -n "$GMSGFMT"; then + { echo "$as_me:$LINENO: result: $GMSGFMT" >&5 +echo "${ECHO_T}$GMSGFMT" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + + # Extract the first word of "xgettext", so it can be a program name with args. +set dummy xgettext; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_path_XGETTEXT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case "$XGETTEXT" in + /*) + ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + if test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"; then + ac_cv_path_XGETTEXT="$ac_dir/$ac_word" + break + fi + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" + ;; +esac +fi +XGETTEXT="$ac_cv_path_XGETTEXT" +if test "$XGETTEXT" != ":"; then + { echo "$as_me:$LINENO: result: $XGETTEXT" >&5 +echo "${ECHO_T}$XGETTEXT" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +extern int _nl_msg_cat_cntr; + return _nl_msg_cat_cntr + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + CATOBJEXT=.gmo + DATADIRNAME=share +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + case $host in + *-*-solaris*) + { echo "$as_me:$LINENO: checking for bind_textdomain_codeset" >&5 +echo $ECHO_N "checking for bind_textdomain_codeset... $ECHO_C" >&6; } +if test "${ac_cv_func_bind_textdomain_codeset+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define bind_textdomain_codeset to an innocuous variant, in case declares bind_textdomain_codeset. + For example, HP-UX 11i declares gettimeofday. */ +#define bind_textdomain_codeset innocuous_bind_textdomain_codeset + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char bind_textdomain_codeset (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef bind_textdomain_codeset + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char bind_textdomain_codeset (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_bind_textdomain_codeset || defined __stub___bind_textdomain_codeset +choke me +#endif + +int +main () +{ +return bind_textdomain_codeset (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_bind_textdomain_codeset=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_func_bind_textdomain_codeset=no +fi + +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $ac_cv_func_bind_textdomain_codeset" >&5 +echo "${ECHO_T}$ac_cv_func_bind_textdomain_codeset" >&6; } +if test $ac_cv_func_bind_textdomain_codeset = yes; then + CATOBJEXT=.gmo + DATADIRNAME=share +else + CATOBJEXT=.mo + DATADIRNAME=lib +fi + + ;; + *) + CATOBJEXT=.mo + DATADIRNAME=lib + ;; + esac +fi + +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$glib_save_LIBS" + INSTOBJEXT=.mo + else + gt_cv_have_gettext=no + fi + fi + +fi + + + + if test "$gt_cv_have_gettext" = "yes" ; then + +cat >>confdefs.h <<\_ACEOF +#define ENABLE_NLS 1 +_ACEOF + + fi + + if test "$XGETTEXT" != ":"; then + if $XGETTEXT --omit-header /dev/null 2> /dev/null; then + : ; + else + { echo "$as_me:$LINENO: result: found xgettext program is not GNU xgettext; ignore it" >&5 +echo "${ECHO_T}found xgettext program is not GNU xgettext; ignore it" >&6; } + XGETTEXT=":" + fi + fi + + # We need to process the po/ directory. + POSUB=po + + ac_config_commands="$ac_config_commands default-1" + + + for lang in $ALL_LINGUAS; do + GMOFILES="$GMOFILES $lang.gmo" + POFILES="$POFILES $lang.po" + done + + + + + + + + + + + + + + if test "$gt_cv_have_gettext" = "yes"; then + if test "x$ALL_LINGUAS" = "x"; then + LINGUAS= + else + { echo "$as_me:$LINENO: checking for catalogs to be installed" >&5 +echo $ECHO_N "checking for catalogs to be installed... $ECHO_C" >&6; } + NEW_LINGUAS= + for presentlang in $ALL_LINGUAS; do + useit=no + if test "%UNSET%" != "${LINGUAS-%UNSET%}"; then + desiredlanguages="$LINGUAS" + else + desiredlanguages="$ALL_LINGUAS" + fi + for desiredlang in $desiredlanguages; do + # Use the presentlang catalog if desiredlang is + # a. equal to presentlang, or + # b. a variant of presentlang (because in this case, + # presentlang can be used as a fallback for messages + # which are not translated in the desiredlang catalog). + case "$desiredlang" in + "$presentlang"*) useit=yes;; + esac + done + if test $useit = yes; then + NEW_LINGUAS="$NEW_LINGUAS $presentlang" + fi + done + LINGUAS=$NEW_LINGUAS + { echo "$as_me:$LINENO: result: $LINGUAS" >&5 +echo "${ECHO_T}$LINGUAS" >&6; } + fi + + if test -n "$LINGUAS"; then + for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done + fi + fi + + MKINSTALLDIRS= + if test -n "$ac_aux_dir"; then + MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" + fi + if test -z "$MKINSTALLDIRS"; then + MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" + fi + + + test -d po || mkdir po + if test "x$srcdir" != "x."; then + if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then + posrcprefix="$srcdir/" + else + posrcprefix="../$srcdir/" + fi + else + posrcprefix="../" + fi + rm -f po/POTFILES + sed -e "/^#/d" -e "/^\$/d" -e "s,.*, $posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \ + < $srcdir/po/POTFILES.in > po/POTFILES + + +{ echo "$as_me:$LINENO: checking for X" >&5 +echo $ECHO_N "checking for X... $ECHO_C" >&6; } + + +# Check whether --with-x was given. +if test "${with_x+set}" = set; then + withval=$with_x; +fi + +# $have_x is `yes', `no', `disabled', or empty when we do not yet know. +if test "x$with_x" = xno; then + # The user explicitly disabled X. + have_x=disabled +else + case $x_includes,$x_libraries in #( + *\'*) { { echo "$as_me:$LINENO: error: Cannot use X directory names containing '" >&5 +echo "$as_me: error: Cannot use X directory names containing '" >&2;} + { (exit 1); exit 1; }; };; #( + *,NONE | NONE,*) if test "${ac_cv_have_x+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # One or both of the vars are not set, and there is no cached value. +ac_x_includes=no ac_x_libraries=no +rm -f -r conftest.dir +if mkdir conftest.dir; then + cd conftest.dir + cat >Imakefile <<'_ACEOF' +incroot: + @echo incroot='${INCROOT}' +usrlibdir: + @echo usrlibdir='${USRLIBDIR}' +libdir: + @echo libdir='${LIBDIR}' +_ACEOF + if (export CC; ${XMKMF-xmkmf}) >/dev/null 2>/dev/null && test -f Makefile; then + # GNU make sometimes prints "make[1]: Entering...", which would confuse us. + for ac_var in incroot usrlibdir libdir; do + eval "ac_im_$ac_var=\`\${MAKE-make} $ac_var 2>/dev/null | sed -n 's/^$ac_var=//p'\`" + done + # Open Windows xmkmf reportedly sets LIBDIR instead of USRLIBDIR. + for ac_extension in a so sl; do + if test ! -f "$ac_im_usrlibdir/libX11.$ac_extension" && + test -f "$ac_im_libdir/libX11.$ac_extension"; then + ac_im_usrlibdir=$ac_im_libdir; break + fi + done + # Screen out bogus values from the imake configuration. They are + # bogus both because they are the default anyway, and because + # using them would break gcc on systems where it needs fixed includes. + case $ac_im_incroot in + /usr/include) ac_x_includes= ;; + *) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes=$ac_im_incroot;; + esac + case $ac_im_usrlibdir in + /usr/lib | /lib) ;; + *) test -d "$ac_im_usrlibdir" && ac_x_libraries=$ac_im_usrlibdir ;; + esac + fi + cd .. + rm -f -r conftest.dir +fi + +# Standard set of common directories for X headers. +# Check X11 before X11Rn because it is often a symlink to the current release. +ac_x_header_dirs=' +/usr/X11/include +/usr/X11R6/include +/usr/X11R5/include +/usr/X11R4/include + +/usr/include/X11 +/usr/include/X11R6 +/usr/include/X11R5 +/usr/include/X11R4 + +/usr/local/X11/include +/usr/local/X11R6/include +/usr/local/X11R5/include +/usr/local/X11R4/include + +/usr/local/include/X11 +/usr/local/include/X11R6 +/usr/local/include/X11R5 +/usr/local/include/X11R4 + +/usr/X386/include +/usr/x386/include +/usr/XFree86/include/X11 + +/usr/include +/usr/local/include +/usr/unsupported/include +/usr/athena/include +/usr/local/x11r5/include +/usr/lpp/Xamples/include + +/usr/openwin/include +/usr/openwin/share/include' + +if test "$ac_x_includes" = no; then + # Guess where to find include files, by looking for Xlib.h. + # First, try using that file with no special directory specified. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # We can compile using X headers with no special include directory. +ac_x_includes= +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + for ac_dir in $ac_x_header_dirs; do + if test -r "$ac_dir/X11/Xlib.h"; then + ac_x_includes=$ac_dir + break + fi +done +fi + +rm -f conftest.err conftest.$ac_ext +fi # $ac_x_includes = no + +if test "$ac_x_libraries" = no; then + # Check for the libraries. + # See if we find them without any special options. + # Don't add to $LIBS permanently. + ac_save_LIBS=$LIBS + LIBS="-lXt $LIBS" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +int +main () +{ +XrmInitialize () + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + LIBS=$ac_save_LIBS +# We can link X programs with no special library path. +ac_x_libraries= +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + LIBS=$ac_save_LIBS +for ac_dir in `echo "$ac_x_includes $ac_x_header_dirs" | sed s/include/lib/g` +do + # Don't even attempt the hair of trying to link an X program! + for ac_extension in a so sl; do + if test -r "$ac_dir/libXt.$ac_extension"; then + ac_x_libraries=$ac_dir + break 2 + fi + done +done +fi + +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi # $ac_x_libraries = no + +case $ac_x_includes,$ac_x_libraries in #( + no,* | *,no | *\'*) + # Didn't find X, or a directory has "'" in its name. + ac_cv_have_x="have_x=no";; #( + *) + # Record where we found X for the cache. + ac_cv_have_x="have_x=yes\ + ac_x_includes='$ac_x_includes'\ + ac_x_libraries='$ac_x_libraries'" +esac +fi +;; #( + *) have_x=yes;; + esac + eval "$ac_cv_have_x" +fi # $with_x != no + +if test "$have_x" != yes; then + { echo "$as_me:$LINENO: result: $have_x" >&5 +echo "${ECHO_T}$have_x" >&6; } + no_x=yes +else + # If each of the values was on the command line, it overrides each guess. + test "x$x_includes" = xNONE && x_includes=$ac_x_includes + test "x$x_libraries" = xNONE && x_libraries=$ac_x_libraries + # Update the cache value to reflect the command line values. + ac_cv_have_x="have_x=yes\ + ac_x_includes='$x_includes'\ + ac_x_libraries='$x_libraries'" + { echo "$as_me:$LINENO: result: libraries $x_libraries, headers $x_includes" >&5 +echo "${ECHO_T}libraries $x_libraries, headers $x_includes" >&6; } +fi + + + + +if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. +set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_path_PKG_CONFIG+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + + ;; +esac +fi +PKG_CONFIG=$ac_cv_path_PKG_CONFIG +if test -n "$PKG_CONFIG"; then + { echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5 +echo "${ECHO_T}$PKG_CONFIG" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +fi +if test -z "$ac_cv_path_PKG_CONFIG"; then + ac_pt_PKG_CONFIG=$PKG_CONFIG + # Extract the first word of "pkg-config", so it can be a program name with args. +set dummy pkg-config; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $ac_pt_PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + + ;; +esac +fi +ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG +if test -n "$ac_pt_PKG_CONFIG"; then + { echo "$as_me:$LINENO: result: $ac_pt_PKG_CONFIG" >&5 +echo "${ECHO_T}$ac_pt_PKG_CONFIG" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + if test "x$ac_pt_PKG_CONFIG" = x; then + PKG_CONFIG="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + PKG_CONFIG=$ac_pt_PKG_CONFIG + fi +else + PKG_CONFIG="$ac_cv_path_PKG_CONFIG" +fi + +fi +if test -n "$PKG_CONFIG"; then + _pkg_min_version=0.9.0 + { echo "$as_me:$LINENO: checking pkg-config is at least version $_pkg_min_version" >&5 +echo $ECHO_N "checking pkg-config is at least version $_pkg_min_version... $ECHO_C" >&6; } + if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } + else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } + PKG_CONFIG="" + fi + +fi + +pkg_failed=no +{ echo "$as_me:$LINENO: checking for DBUS" >&5 +echo $ECHO_N "checking for DBUS... $ECHO_C" >&6; } + +if test -n "$PKG_CONFIG"; then + if test -n "$DBUS_CFLAGS"; then + pkg_cv_DBUS_CFLAGS="$DBUS_CFLAGS" + else + if test -n "$PKG_CONFIG" && \ + { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"dbus-1 >= 0.61 dbus-glib-1 >= 0.61\"") >&5 + ($PKG_CONFIG --exists --print-errors "dbus-1 >= 0.61 dbus-glib-1 >= 0.61") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + pkg_cv_DBUS_CFLAGS=`$PKG_CONFIG --cflags "dbus-1 >= 0.61 dbus-glib-1 >= 0.61" 2>/dev/null` +else + pkg_failed=yes +fi + fi +else + pkg_failed=untried +fi +if test -n "$PKG_CONFIG"; then + if test -n "$DBUS_LIBS"; then + pkg_cv_DBUS_LIBS="$DBUS_LIBS" + else + if test -n "$PKG_CONFIG" && \ + { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"dbus-1 >= 0.61 dbus-glib-1 >= 0.61\"") >&5 + ($PKG_CONFIG --exists --print-errors "dbus-1 >= 0.61 dbus-glib-1 >= 0.61") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + pkg_cv_DBUS_LIBS=`$PKG_CONFIG --libs "dbus-1 >= 0.61 dbus-glib-1 >= 0.61" 2>/dev/null` +else + pkg_failed=yes +fi + fi +else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + DBUS_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "dbus-1 >= 0.61 dbus-glib-1 >= 0.61"` + else + DBUS_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "dbus-1 >= 0.61 dbus-glib-1 >= 0.61"` + fi + # Put the nasty error message in config.log where it belongs + echo "$DBUS_PKG_ERRORS" >&5 + + { { echo "$as_me:$LINENO: error: Package requirements (dbus-1 >= 0.61 dbus-glib-1 >= 0.61) were not met: + +$DBUS_PKG_ERRORS + +Consider adjusting the PKG_CONFIG_PATH environment variable if you +installed software in a non-standard prefix. + +Alternatively, you may set the environment variables DBUS_CFLAGS +and DBUS_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details. +" >&5 +echo "$as_me: error: Package requirements (dbus-1 >= 0.61 dbus-glib-1 >= 0.61) were not met: + +$DBUS_PKG_ERRORS + +Consider adjusting the PKG_CONFIG_PATH environment variable if you +installed software in a non-standard prefix. + +Alternatively, you may set the environment variables DBUS_CFLAGS +and DBUS_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details. +" >&2;} + { (exit 1); exit 1; }; } +elif test $pkg_failed = untried; then + { { echo "$as_me:$LINENO: error: The pkg-config script could not be found or is too old. Make sure it +is in your PATH or set the PKG_CONFIG environment variable to the full +path to pkg-config. + +Alternatively, you may set the environment variables DBUS_CFLAGS +and DBUS_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details. + +To get pkg-config, see . +See \`config.log' for more details." >&5 +echo "$as_me: error: The pkg-config script could not be found or is too old. Make sure it +is in your PATH or set the PKG_CONFIG environment variable to the full +path to pkg-config. + +Alternatively, you may set the environment variables DBUS_CFLAGS +and DBUS_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details. + +To get pkg-config, see . +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +else + DBUS_CFLAGS=$pkg_cv_DBUS_CFLAGS + DBUS_LIBS=$pkg_cv_DBUS_LIBS + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } + : +fi + + + + +pkg_failed=no +{ echo "$as_me:$LINENO: checking for PYGTK" >&5 +echo $ECHO_N "checking for PYGTK... $ECHO_C" >&6; } + +if test -n "$PKG_CONFIG"; then + if test -n "$PYGTK_CFLAGS"; then + pkg_cv_PYGTK_CFLAGS="$PYGTK_CFLAGS" + else + if test -n "$PKG_CONFIG" && \ + { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"gtk+-2.0 >= 2.6.0 pygtk-2.0 >= 2.6.0\"") >&5 + ($PKG_CONFIG --exists --print-errors "gtk+-2.0 >= 2.6.0 pygtk-2.0 >= 2.6.0") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + pkg_cv_PYGTK_CFLAGS=`$PKG_CONFIG --cflags "gtk+-2.0 >= 2.6.0 pygtk-2.0 >= 2.6.0" 2>/dev/null` +else + pkg_failed=yes +fi + fi +else + pkg_failed=untried +fi +if test -n "$PKG_CONFIG"; then + if test -n "$PYGTK_LIBS"; then + pkg_cv_PYGTK_LIBS="$PYGTK_LIBS" + else + if test -n "$PKG_CONFIG" && \ + { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"gtk+-2.0 >= 2.6.0 pygtk-2.0 >= 2.6.0\"") >&5 + ($PKG_CONFIG --exists --print-errors "gtk+-2.0 >= 2.6.0 pygtk-2.0 >= 2.6.0") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + pkg_cv_PYGTK_LIBS=`$PKG_CONFIG --libs "gtk+-2.0 >= 2.6.0 pygtk-2.0 >= 2.6.0" 2>/dev/null` +else + pkg_failed=yes +fi + fi +else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + PYGTK_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "gtk+-2.0 >= 2.6.0 pygtk-2.0 >= 2.6.0"` + else + PYGTK_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "gtk+-2.0 >= 2.6.0 pygtk-2.0 >= 2.6.0"` + fi + # Put the nasty error message in config.log where it belongs + echo "$PYGTK_PKG_ERRORS" >&5 + + { { echo "$as_me:$LINENO: error: Package requirements (gtk+-2.0 >= 2.6.0 pygtk-2.0 >= 2.6.0) were not met: + +$PYGTK_PKG_ERRORS + +Consider adjusting the PKG_CONFIG_PATH environment variable if you +installed software in a non-standard prefix. + +Alternatively, you may set the environment variables PYGTK_CFLAGS +and PYGTK_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details. +" >&5 +echo "$as_me: error: Package requirements (gtk+-2.0 >= 2.6.0 pygtk-2.0 >= 2.6.0) were not met: + +$PYGTK_PKG_ERRORS + +Consider adjusting the PKG_CONFIG_PATH environment variable if you +installed software in a non-standard prefix. + +Alternatively, you may set the environment variables PYGTK_CFLAGS +and PYGTK_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details. +" >&2;} + { (exit 1); exit 1; }; } +elif test $pkg_failed = untried; then + { { echo "$as_me:$LINENO: error: The pkg-config script could not be found or is too old. Make sure it +is in your PATH or set the PKG_CONFIG environment variable to the full +path to pkg-config. + +Alternatively, you may set the environment variables PYGTK_CFLAGS +and PYGTK_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details. + +To get pkg-config, see . +See \`config.log' for more details." >&5 +echo "$as_me: error: The pkg-config script could not be found or is too old. Make sure it +is in your PATH or set the PKG_CONFIG environment variable to the full +path to pkg-config. + +Alternatively, you may set the environment variables PYGTK_CFLAGS +and PYGTK_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details. + +To get pkg-config, see . +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +else + PYGTK_CFLAGS=$pkg_cv_PYGTK_CFLAGS + PYGTK_LIBS=$pkg_cv_PYGTK_LIBS + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } + : +fi + + +PYGTK_DEFS=`$PKG_CONFIG --variable=defsdir pygtk-2.0` + + + + +pkg_failed=no +{ echo "$as_me:$LINENO: checking for GTKSPELL" >&5 +echo $ECHO_N "checking for GTKSPELL... $ECHO_C" >&6; } + +if test -n "$PKG_CONFIG"; then + if test -n "$GTKSPELL_CFLAGS"; then + pkg_cv_GTKSPELL_CFLAGS="$GTKSPELL_CFLAGS" + else + if test -n "$PKG_CONFIG" && \ + { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"gtkspell-2.0\"") >&5 + ($PKG_CONFIG --exists --print-errors "gtkspell-2.0") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + pkg_cv_GTKSPELL_CFLAGS=`$PKG_CONFIG --cflags "gtkspell-2.0" 2>/dev/null` +else + pkg_failed=yes +fi + fi +else + pkg_failed=untried +fi +if test -n "$PKG_CONFIG"; then + if test -n "$GTKSPELL_LIBS"; then + pkg_cv_GTKSPELL_LIBS="$GTKSPELL_LIBS" + else + if test -n "$PKG_CONFIG" && \ + { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"gtkspell-2.0\"") >&5 + ($PKG_CONFIG --exists --print-errors "gtkspell-2.0") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + pkg_cv_GTKSPELL_LIBS=`$PKG_CONFIG --libs "gtkspell-2.0" 2>/dev/null` +else + pkg_failed=yes +fi + fi +else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + GTKSPELL_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "gtkspell-2.0"` + else + GTKSPELL_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "gtkspell-2.0"` + fi + # Put the nasty error message in config.log where it belongs + echo "$GTKSPELL_PKG_ERRORS" >&5 + + { { echo "$as_me:$LINENO: error: Package requirements (gtkspell-2.0) were not met: + +$GTKSPELL_PKG_ERRORS + +Consider adjusting the PKG_CONFIG_PATH environment variable if you +installed software in a non-standard prefix. + +Alternatively, you may set the environment variables GTKSPELL_CFLAGS +and GTKSPELL_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details. +" >&5 +echo "$as_me: error: Package requirements (gtkspell-2.0) were not met: + +$GTKSPELL_PKG_ERRORS + +Consider adjusting the PKG_CONFIG_PATH environment variable if you +installed software in a non-standard prefix. + +Alternatively, you may set the environment variables GTKSPELL_CFLAGS +and GTKSPELL_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details. +" >&2;} + { (exit 1); exit 1; }; } +elif test $pkg_failed = untried; then + { { echo "$as_me:$LINENO: error: The pkg-config script could not be found or is too old. Make sure it +is in your PATH or set the PKG_CONFIG environment variable to the full +path to pkg-config. + +Alternatively, you may set the environment variables GTKSPELL_CFLAGS +and GTKSPELL_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details. + +To get pkg-config, see . +See \`config.log' for more details." >&5 +echo "$as_me: error: The pkg-config script could not be found or is too old. Make sure it +is in your PATH or set the PKG_CONFIG environment variable to the full +path to pkg-config. + +Alternatively, you may set the environment variables GTKSPELL_CFLAGS +and GTKSPELL_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details. + +To get pkg-config, see . +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +else + GTKSPELL_CFLAGS=$pkg_cv_GTKSPELL_CFLAGS + GTKSPELL_LIBS=$pkg_cv_GTKSPELL_LIBS + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } + : +fi + + + + +pkg_failed=no +{ echo "$as_me:$LINENO: checking for XSCRNSAVER" >&5 +echo $ECHO_N "checking for XSCRNSAVER... $ECHO_C" >&6; } + +if test -n "$PKG_CONFIG"; then + if test -n "$XSCRNSAVER_CFLAGS"; then + pkg_cv_XSCRNSAVER_CFLAGS="$XSCRNSAVER_CFLAGS" + else + if test -n "$PKG_CONFIG" && \ + { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"xscrnsaver\"") >&5 + ($PKG_CONFIG --exists --print-errors "xscrnsaver") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + pkg_cv_XSCRNSAVER_CFLAGS=`$PKG_CONFIG --cflags "xscrnsaver" 2>/dev/null` +else + pkg_failed=yes +fi + fi +else + pkg_failed=untried +fi +if test -n "$PKG_CONFIG"; then + if test -n "$XSCRNSAVER_LIBS"; then + pkg_cv_XSCRNSAVER_LIBS="$XSCRNSAVER_LIBS" + else + if test -n "$PKG_CONFIG" && \ + { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"xscrnsaver\"") >&5 + ($PKG_CONFIG --exists --print-errors "xscrnsaver") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + pkg_cv_XSCRNSAVER_LIBS=`$PKG_CONFIG --libs "xscrnsaver" 2>/dev/null` +else + pkg_failed=yes +fi + fi +else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + XSCRNSAVER_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "xscrnsaver"` + else + XSCRNSAVER_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "xscrnsaver"` + fi + # Put the nasty error message in config.log where it belongs + echo "$XSCRNSAVER_PKG_ERRORS" >&5 + + { { echo "$as_me:$LINENO: error: Package requirements (xscrnsaver) were not met: + +$XSCRNSAVER_PKG_ERRORS + +Consider adjusting the PKG_CONFIG_PATH environment variable if you +installed software in a non-standard prefix. + +Alternatively, you may set the environment variables XSCRNSAVER_CFLAGS +and XSCRNSAVER_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details. +" >&5 +echo "$as_me: error: Package requirements (xscrnsaver) were not met: + +$XSCRNSAVER_PKG_ERRORS + +Consider adjusting the PKG_CONFIG_PATH environment variable if you +installed software in a non-standard prefix. + +Alternatively, you may set the environment variables XSCRNSAVER_CFLAGS +and XSCRNSAVER_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details. +" >&2;} + { (exit 1); exit 1; }; } +elif test $pkg_failed = untried; then + { { echo "$as_me:$LINENO: error: The pkg-config script could not be found or is too old. Make sure it +is in your PATH or set the PKG_CONFIG environment variable to the full +path to pkg-config. + +Alternatively, you may set the environment variables XSCRNSAVER_CFLAGS +and XSCRNSAVER_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details. + +To get pkg-config, see . +See \`config.log' for more details." >&5 +echo "$as_me: error: The pkg-config script could not be found or is too old. Make sure it +is in your PATH or set the PKG_CONFIG environment variable to the full +path to pkg-config. + +Alternatively, you may set the environment variables XSCRNSAVER_CFLAGS +and XSCRNSAVER_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details. + +To get pkg-config, see . +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +else + XSCRNSAVER_CFLAGS=$pkg_cv_XSCRNSAVER_CFLAGS + XSCRNSAVER_LIBS=$pkg_cv_XSCRNSAVER_LIBS + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } + : +fi + +# Checks for libraries. +# FIXME: Replace `main' with a function in `-lX11': + +{ echo "$as_me:$LINENO: checking for main in -lX11" >&5 +echo $ECHO_N "checking for main in -lX11... $ECHO_C" >&6; } +if test "${ac_cv_lib_X11_main+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lX11 $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + + +int +main () +{ +return main (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_X11_main=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_X11_main=no +fi + +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_lib_X11_main" >&5 +echo "${ECHO_T}$ac_cv_lib_X11_main" >&6; } +if test $ac_cv_lib_X11_main = yes; then + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBX11 1 +_ACEOF + + LIBS="-lX11 $LIBS" + +fi + +# FIXME: Replace `main' with a function in `-lXext': + +{ echo "$as_me:$LINENO: checking for main in -lXext" >&5 +echo $ECHO_N "checking for main in -lXext... $ECHO_C" >&6; } +if test "${ac_cv_lib_Xext_main+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lXext $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + + +int +main () +{ +return main (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_Xext_main=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_Xext_main=no +fi + +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_lib_Xext_main" >&5 +echo "${ECHO_T}$ac_cv_lib_Xext_main" >&6; } +if test $ac_cv_lib_Xext_main = yes; then + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBXEXT 1 +_ACEOF + + LIBS="-lXext $LIBS" + +fi + +# FIXME: Replace `main' with a function in `-lXss': + +{ echo "$as_me:$LINENO: checking for main in -lXss" >&5 +echo $ECHO_N "checking for main in -lXss... $ECHO_C" >&6; } +if test "${ac_cv_lib_Xss_main+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lXss $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + + +int +main () +{ +return main (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_Xss_main=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_Xss_main=no +fi + +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_lib_Xss_main" >&5 +echo "${ECHO_T}$ac_cv_lib_Xss_main" >&6; } +if test $ac_cv_lib_Xss_main = yes; then + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBXSS 1 +_ACEOF + + LIBS="-lXss $LIBS" + +fi + + + + + + + + if test -n "$PYTHON"; then + # If the user set $PYTHON, use it and don't search something else. + { echo "$as_me:$LINENO: checking whether $PYTHON version >= 2.4" >&5 +echo $ECHO_N "checking whether $PYTHON version >= 2.4... $ECHO_C" >&6; } + prog="import sys, string +# split strings by '.' and convert to numeric. Append some zeros +# because we need at least 4 digits for the hex conversion. +minver = map(int, string.split('2.4', '.')) + [0, 0, 0] +minverhex = 0 +for i in xrange(0, 4): minverhex = (minverhex << 8) + minver[i] +sys.exit(sys.hexversion < minverhex)" + if { echo "$as_me:$LINENO: $PYTHON -c "$prog"" >&5 + ($PYTHON -c "$prog") >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } +else + { { echo "$as_me:$LINENO: error: too old" >&5 +echo "$as_me: error: too old" >&2;} + { (exit 1); exit 1; }; } +fi + + am_display_PYTHON=$PYTHON + else + # Otherwise, try each interpreter until we find one that satisfies + # VERSION. + { echo "$as_me:$LINENO: checking for a Python interpreter with version >= 2.4" >&5 +echo $ECHO_N "checking for a Python interpreter with version >= 2.4... $ECHO_C" >&6; } +if test "${am_cv_pathless_PYTHON+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + for am_cv_pathless_PYTHON in python python2 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0 python1.6 python1.5 none; do + test "$am_cv_pathless_PYTHON" = none && break + prog="import sys, string +# split strings by '.' and convert to numeric. Append some zeros +# because we need at least 4 digits for the hex conversion. +minver = map(int, string.split('2.4', '.')) + [0, 0, 0] +minverhex = 0 +for i in xrange(0, 4): minverhex = (minverhex << 8) + minver[i] +sys.exit(sys.hexversion < minverhex)" + if { echo "$as_me:$LINENO: $am_cv_pathless_PYTHON -c "$prog"" >&5 + ($am_cv_pathless_PYTHON -c "$prog") >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + break +fi + + done +fi +{ echo "$as_me:$LINENO: result: $am_cv_pathless_PYTHON" >&5 +echo "${ECHO_T}$am_cv_pathless_PYTHON" >&6; } + # Set $PYTHON to the absolute path of $am_cv_pathless_PYTHON. + if test "$am_cv_pathless_PYTHON" = none; then + PYTHON=: + else + # Extract the first word of "$am_cv_pathless_PYTHON", so it can be a program name with args. +set dummy $am_cv_pathless_PYTHON; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_path_PYTHON+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $PYTHON in + [\\/]* | ?:[\\/]*) + ac_cv_path_PYTHON="$PYTHON" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_PYTHON="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + + ;; +esac +fi +PYTHON=$ac_cv_path_PYTHON +if test -n "$PYTHON"; then + { echo "$as_me:$LINENO: result: $PYTHON" >&5 +echo "${ECHO_T}$PYTHON" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + + fi + am_display_PYTHON=$am_cv_pathless_PYTHON + fi + + + if test "$PYTHON" = :; then + { { echo "$as_me:$LINENO: error: no suitable Python interpreter found" >&5 +echo "$as_me: error: no suitable Python interpreter found" >&2;} + { (exit 1); exit 1; }; } + else + + + { echo "$as_me:$LINENO: checking for $am_display_PYTHON version" >&5 +echo $ECHO_N "checking for $am_display_PYTHON version... $ECHO_C" >&6; } +if test "${am_cv_python_version+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + am_cv_python_version=`$PYTHON -c "import sys; print sys.version[:3]"` +fi +{ echo "$as_me:$LINENO: result: $am_cv_python_version" >&5 +echo "${ECHO_T}$am_cv_python_version" >&6; } + PYTHON_VERSION=$am_cv_python_version + + + + PYTHON_PREFIX='${prefix}' + + PYTHON_EXEC_PREFIX='${exec_prefix}' + + + + { echo "$as_me:$LINENO: checking for $am_display_PYTHON platform" >&5 +echo $ECHO_N "checking for $am_display_PYTHON platform... $ECHO_C" >&6; } +if test "${am_cv_python_platform+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + am_cv_python_platform=`$PYTHON -c "import sys; print sys.platform"` +fi +{ echo "$as_me:$LINENO: result: $am_cv_python_platform" >&5 +echo "${ECHO_T}$am_cv_python_platform" >&6; } + PYTHON_PLATFORM=$am_cv_python_platform + + + + + { echo "$as_me:$LINENO: checking for $am_display_PYTHON script directory" >&5 +echo $ECHO_N "checking for $am_display_PYTHON script directory... $ECHO_C" >&6; } +if test "${am_cv_python_pythondir+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + am_cv_python_pythondir=`$PYTHON -c "from distutils import sysconfig; print sysconfig.get_python_lib(0,0,prefix='$PYTHON_PREFIX')" 2>/dev/null || + echo "$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages"` +fi +{ echo "$as_me:$LINENO: result: $am_cv_python_pythondir" >&5 +echo "${ECHO_T}$am_cv_python_pythondir" >&6; } + pythondir=$am_cv_python_pythondir + + + + pkgpythondir=\${pythondir}/$PACKAGE + + + { echo "$as_me:$LINENO: checking for $am_display_PYTHON extension module directory" >&5 +echo $ECHO_N "checking for $am_display_PYTHON extension module directory... $ECHO_C" >&6; } +if test "${am_cv_python_pyexecdir+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + am_cv_python_pyexecdir=`$PYTHON -c "from distutils import sysconfig; print sysconfig.get_python_lib(1,0,prefix='$PYTHON_EXEC_PREFIX')" 2>/dev/null || + echo "${PYTHON_EXEC_PREFIX}/lib/python${PYTHON_VERSION}/site-packages"` +fi +{ echo "$as_me:$LINENO: result: $am_cv_python_pyexecdir" >&5 +echo "${ECHO_T}$am_cv_python_pyexecdir" >&6; } + pyexecdir=$am_cv_python_pyexecdir + + + + pkgpyexecdir=\${pyexecdir}/$PACKAGE + + + + fi + + +if test "x$PYTHON" = "x:"; then + { { echo "$as_me:$LINENO: error: Python not found" >&5 +echo "$as_me: error: Python not found" >&2;} + { (exit 1); exit 1; }; } +fi + + +{ echo "$as_me:$LINENO: checking for headers required to compile python extensions" >&5 +echo $ECHO_N "checking for headers required to compile python extensions... $ECHO_C" >&6; } +py_prefix=`$PYTHON -c "import sys; print sys.prefix"` +py_exec_prefix=`$PYTHON -c "import sys; print sys.exec_prefix"` +PYTHON_INCLUDES="-I${py_prefix}/include/python${PYTHON_VERSION}" +if test "$py_prefix" != "$py_exec_prefix"; then + PYTHON_INCLUDES="$PYTHON_INCLUDES -I${py_exec_prefix}/include/python${PYTHON_VERSION}" +fi + +save_CPPFLAGS="$CPPFLAGS" +CPPFLAGS="$CPPFLAGS $PYTHON_INCLUDES" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + { echo "$as_me:$LINENO: result: found" >&5 +echo "${ECHO_T}found" >&6; } + +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { echo "$as_me:$LINENO: result: not found" >&5 +echo "${ECHO_T}not found" >&6; } +{ { echo "$as_me:$LINENO: error: could not find Python headers" >&5 +echo "$as_me: error: could not find Python headers" >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest.err conftest.$ac_ext +CPPFLAGS="$save_CPPFLAGS" + + + + +ac_config_files="$ac_config_files Makefile data/Makefile data/glade/Makefile data/emoticons/Makefile data/pixmaps/Makefile data/iconsets/Makefile data/gajim.desktop.in src/Makefile src/common/Makefile scripts/gajim po/Makefile.in" + +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, we kill variables containing newlines. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 +echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + *) $as_unset $ac_var ;; + esac ;; + esac + done + + (set) 2>&1 | + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + # `set' does not quote correctly, so add quotes (double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \). + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; #( + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) | + sed ' + /^ac_cv_env_/b end + t clear + :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + test "x$cache_file" != "x/dev/null" && + { echo "$as_me:$LINENO: updating cache $cache_file" >&5 +echo "$as_me: updating cache $cache_file" >&6;} + cat confcache >$cache_file + else + { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5 +echo "$as_me: not updating unwritable cache $cache_file" >&6;} + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +DEFS=-DHAVE_CONFIG_H + +ac_libobjs= +ac_ltlibobjs= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`echo "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext" + ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + +if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"MAINTAINER_MODE\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"MAINTAINER_MODE\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi + + ac_config_commands="$ac_config_commands po/stamp-it" + + +if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi + +: ${CONFIG_STATUS=./config.status} +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 +echo "$as_me: creating $CONFIG_STATUS" >&6;} +cat >$CONFIG_STATUS <<_ACEOF +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false +SHELL=\${CONFIG_SHELL-$SHELL} +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + + +# PATH needs CR +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + +# Support unset when possible. +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +as_nl=' +' +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + { (exit 1); exit 1; } +fi + +# Work around bugs in pre-3.0 UWIN ksh. +for as_var in ENV MAIL MAILPATH +do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# CDPATH. +$as_unset CDPATH + + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line after each line using $LINENO; the second 'sed' + # does the real work. The second script uses 'N' to pair each + # line-number line with the line containing $LINENO, and appends + # trailing '-' during substitution so that $LINENO is not a special + # case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # scripts with optimization help from Paolo Bonzini. Blame Lee + # E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in +-n*) + case `echo 'x\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + *) ECHO_C='\c';; + esac;; +*) + ECHO_N='-n';; +esac + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir +fi +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -p' +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +# Find out whether ``test -x'' works. Don't use a zero-byte file, as +# systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + as_executable_p="test -x" +else + as_executable_p=: +fi +rm -f conf$$.file + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 + +# Save the log message, to keep $[0] and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by Gajim $as_me 0.11.0, which was +generated by GNU Autoconf 2.60. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF +# Files that config.status was made for. +config_files="$ac_config_files" +config_headers="$ac_config_headers" +config_commands="$ac_config_commands" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +ac_cs_usage="\ +\`$as_me' instantiates files from templates according to the +current configuration. + +Usage: $0 [OPTIONS] [FILE]... + + -h, --help print this help, then exit + -V, --version print version number, then exit + -q, --quiet do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration commands: +$config_commands + +Report bugs to ." + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF +ac_cs_version="\\ +Gajim config.status 0.11.0 +configured by $0, generated by GNU Autoconf 2.60, + with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" + +Copyright (C) 2006 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +INSTALL='$INSTALL' +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +# If no file are specified by the user, then we need to provide default +# value. By we need to know if files were specified by the user. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + echo "$ac_cs_version"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + CONFIG_FILES="$CONFIG_FILES $ac_optarg" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" + ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header + { echo "$as_me: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; };; + --help | --hel | -h ) + echo "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) { echo "$as_me: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; } ;; + + *) ac_config_targets="$ac_config_targets $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF +if \$ac_cs_recheck; then + echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 + CONFIG_SHELL=$SHELL + export CONFIG_SHELL + exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion +fi + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + echo "$ac_log" +} >&5 + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF +# +# INIT-COMMANDS +# +INTLTOOL_PERL='${INTLTOOL_PERL}' ac_aux_dir='${ac_aux_dir}' +prefix="$prefix" exec_prefix="$exec_prefix" INTLTOOL_LIBDIR="$libdir" +INTLTOOL_EXTRACT='${INTLTOOL_EXTRACT}' INTLTOOL_ICONV='${INTLTOOL_ICONV}' +INTLTOOL_MSGFMT='${INTLTOOL_MSGFMT}' INTLTOOL_MSGMERGE='${INTLTOOL_MSGMERGE}' +INTLTOOL_XGETTEXT='${INTLTOOL_XGETTEXT}' +AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" + + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; + "intltool") CONFIG_COMMANDS="$CONFIG_COMMANDS intltool" ;; + "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "default-1") CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "data/Makefile") CONFIG_FILES="$CONFIG_FILES data/Makefile" ;; + "data/glade/Makefile") CONFIG_FILES="$CONFIG_FILES data/glade/Makefile" ;; + "data/emoticons/Makefile") CONFIG_FILES="$CONFIG_FILES data/emoticons/Makefile" ;; + "data/pixmaps/Makefile") CONFIG_FILES="$CONFIG_FILES data/pixmaps/Makefile" ;; + "data/iconsets/Makefile") CONFIG_FILES="$CONFIG_FILES data/iconsets/Makefile" ;; + "data/gajim.desktop.in") CONFIG_FILES="$CONFIG_FILES data/gajim.desktop.in" ;; + "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; + "src/common/Makefile") CONFIG_FILES="$CONFIG_FILES src/common/Makefile" ;; + "scripts/gajim") CONFIG_FILES="$CONFIG_FILES scripts/gajim" ;; + "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; + "po/stamp-it") CONFIG_COMMANDS="$CONFIG_COMMANDS po/stamp-it" ;; + + *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 +echo "$as_me: error: invalid argument: $ac_config_target" >&2;} + { (exit 1); exit 1; }; };; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= + trap 'exit_status=$? + { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status +' 0 + trap '{ (exit 1); exit 1; }' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || +{ + echo "$me: cannot create a temporary directory in ." >&2 + { (exit 1); exit 1; } +} + +# +# Set up the sed scripts for CONFIG_FILES section. +# + +# No need to generate the scripts if there are no CONFIG_FILES. +# This happens for instance when ./config.status config.h +if test -n "$CONFIG_FILES"; then + +_ACEOF + + + +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + cat >conf$$subs.sed <<_ACEOF +SHELL!$SHELL$ac_delim +PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim +PACKAGE_NAME!$PACKAGE_NAME$ac_delim +PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim +PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim +PACKAGE_STRING!$PACKAGE_STRING$ac_delim +PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim +exec_prefix!$exec_prefix$ac_delim +prefix!$prefix$ac_delim +program_transform_name!$program_transform_name$ac_delim +bindir!$bindir$ac_delim +sbindir!$sbindir$ac_delim +libexecdir!$libexecdir$ac_delim +datarootdir!$datarootdir$ac_delim +datadir!$datadir$ac_delim +sysconfdir!$sysconfdir$ac_delim +sharedstatedir!$sharedstatedir$ac_delim +localstatedir!$localstatedir$ac_delim +includedir!$includedir$ac_delim +oldincludedir!$oldincludedir$ac_delim +docdir!$docdir$ac_delim +infodir!$infodir$ac_delim +htmldir!$htmldir$ac_delim +dvidir!$dvidir$ac_delim +pdfdir!$pdfdir$ac_delim +psdir!$psdir$ac_delim +libdir!$libdir$ac_delim +localedir!$localedir$ac_delim +mandir!$mandir$ac_delim +DEFS!$DEFS$ac_delim +ECHO_C!$ECHO_C$ac_delim +ECHO_N!$ECHO_N$ac_delim +ECHO_T!$ECHO_T$ac_delim +LIBS!$LIBS$ac_delim +build_alias!$build_alias$ac_delim +host_alias!$host_alias$ac_delim +target_alias!$target_alias$ac_delim +INSTALL_PROGRAM!$INSTALL_PROGRAM$ac_delim +INSTALL_SCRIPT!$INSTALL_SCRIPT$ac_delim +INSTALL_DATA!$INSTALL_DATA$ac_delim +CYGPATH_W!$CYGPATH_W$ac_delim +PACKAGE!$PACKAGE$ac_delim +VERSION!$VERSION$ac_delim +ACLOCAL!$ACLOCAL$ac_delim +AUTOCONF!$AUTOCONF$ac_delim +AUTOMAKE!$AUTOMAKE$ac_delim +AUTOHEADER!$AUTOHEADER$ac_delim +MAKEINFO!$MAKEINFO$ac_delim +install_sh!$install_sh$ac_delim +STRIP!$STRIP$ac_delim +INSTALL_STRIP_PROGRAM!$INSTALL_STRIP_PROGRAM$ac_delim +mkdir_p!$mkdir_p$ac_delim +AWK!$AWK$ac_delim +SET_MAKE!$SET_MAKE$ac_delim +am__leading_dot!$am__leading_dot$ac_delim +AMTAR!$AMTAR$ac_delim +am__tar!$am__tar$ac_delim +am__untar!$am__untar$ac_delim +MAINTAINER_MODE_TRUE!$MAINTAINER_MODE_TRUE$ac_delim +MAINTAINER_MODE_FALSE!$MAINTAINER_MODE_FALSE$ac_delim +MAINT!$MAINT$ac_delim +INTLTOOL_DESKTOP_RULE!$INTLTOOL_DESKTOP_RULE$ac_delim +INTLTOOL_DIRECTORY_RULE!$INTLTOOL_DIRECTORY_RULE$ac_delim +INTLTOOL_KEYS_RULE!$INTLTOOL_KEYS_RULE$ac_delim +INTLTOOL_PROP_RULE!$INTLTOOL_PROP_RULE$ac_delim +INTLTOOL_OAF_RULE!$INTLTOOL_OAF_RULE$ac_delim +INTLTOOL_PONG_RULE!$INTLTOOL_PONG_RULE$ac_delim +INTLTOOL_SERVER_RULE!$INTLTOOL_SERVER_RULE$ac_delim +INTLTOOL_SHEET_RULE!$INTLTOOL_SHEET_RULE$ac_delim +INTLTOOL_SOUNDLIST_RULE!$INTLTOOL_SOUNDLIST_RULE$ac_delim +INTLTOOL_UI_RULE!$INTLTOOL_UI_RULE$ac_delim +INTLTOOL_XAM_RULE!$INTLTOOL_XAM_RULE$ac_delim +INTLTOOL_KBD_RULE!$INTLTOOL_KBD_RULE$ac_delim +INTLTOOL_XML_RULE!$INTLTOOL_XML_RULE$ac_delim +INTLTOOL_XML_NOMERGE_RULE!$INTLTOOL_XML_NOMERGE_RULE$ac_delim +INTLTOOL_CAVES_RULE!$INTLTOOL_CAVES_RULE$ac_delim +INTLTOOL_SCHEMAS_RULE!$INTLTOOL_SCHEMAS_RULE$ac_delim +INTLTOOL_THEME_RULE!$INTLTOOL_THEME_RULE$ac_delim +INTLTOOL_SERVICE_RULE!$INTLTOOL_SERVICE_RULE$ac_delim +INTLTOOL_EXTRACT!$INTLTOOL_EXTRACT$ac_delim +INTLTOOL_MERGE!$INTLTOOL_MERGE$ac_delim +INTLTOOL_UPDATE!$INTLTOOL_UPDATE$ac_delim +INTLTOOL_PERL!$INTLTOOL_PERL$ac_delim +INTLTOOL_ICONV!$INTLTOOL_ICONV$ac_delim +INTLTOOL_MSGFMT!$INTLTOOL_MSGFMT$ac_delim +INTLTOOL_MSGMERGE!$INTLTOOL_MSGMERGE$ac_delim +INTLTOOL_XGETTEXT!$INTLTOOL_XGETTEXT$ac_delim +ALL_LINGUAS!$ALL_LINGUAS$ac_delim +CC!$CC$ac_delim +CFLAGS!$CFLAGS$ac_delim +LDFLAGS!$LDFLAGS$ac_delim +CPPFLAGS!$CPPFLAGS$ac_delim +ac_ct_CC!$ac_ct_CC$ac_delim +EXEEXT!$EXEEXT$ac_delim +OBJEXT!$OBJEXT$ac_delim +DEPDIR!$DEPDIR$ac_delim +am__include!$am__include$ac_delim +_ACEOF + + if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then + break + elif $ac_last_try; then + { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 +echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} + { (exit 1); exit 1; }; } + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done + +ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` +if test -n "$ac_eof"; then + ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` + ac_eof=`expr $ac_eof + 1` +fi + +cat >>$CONFIG_STATUS <<_ACEOF +cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +_ACEOF +sed ' +s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g +s/^/s,@/; s/!/@,|#_!!_#|/ +:n +t n +s/'"$ac_delim"'$/,g/; t +s/$/\\/; p +N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n +' >>$CONFIG_STATUS >$CONFIG_STATUS <<_ACEOF +CEOF$ac_eof +_ACEOF + + +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + cat >conf$$subs.sed <<_ACEOF +am__quote!$am__quote$ac_delim +AMDEP_TRUE!$AMDEP_TRUE$ac_delim +AMDEP_FALSE!$AMDEP_FALSE$ac_delim +AMDEPBACKSLASH!$AMDEPBACKSLASH$ac_delim +CCDEPMODE!$CCDEPMODE$ac_delim +am__fastdepCC_TRUE!$am__fastdepCC_TRUE$ac_delim +am__fastdepCC_FALSE!$am__fastdepCC_FALSE$ac_delim +build!$build$ac_delim +build_cpu!$build_cpu$ac_delim +build_vendor!$build_vendor$ac_delim +build_os!$build_os$ac_delim +host!$host$ac_delim +host_cpu!$host_cpu$ac_delim +host_vendor!$host_vendor$ac_delim +host_os!$host_os$ac_delim +GREP!$GREP$ac_delim +EGREP!$EGREP$ac_delim +LN_S!$LN_S$ac_delim +ECHO!$ECHO$ac_delim +AR!$AR$ac_delim +RANLIB!$RANLIB$ac_delim +CPP!$CPP$ac_delim +CXX!$CXX$ac_delim +CXXFLAGS!$CXXFLAGS$ac_delim +ac_ct_CXX!$ac_ct_CXX$ac_delim +CXXDEPMODE!$CXXDEPMODE$ac_delim +am__fastdepCXX_TRUE!$am__fastdepCXX_TRUE$ac_delim +am__fastdepCXX_FALSE!$am__fastdepCXX_FALSE$ac_delim +CXXCPP!$CXXCPP$ac_delim +F77!$F77$ac_delim +FFLAGS!$FFLAGS$ac_delim +ac_ct_F77!$ac_ct_F77$ac_delim +LIBTOOL!$LIBTOOL$ac_delim +GETTEXT_PACKAGE!$GETTEXT_PACKAGE$ac_delim +USE_NLS!$USE_NLS$ac_delim +MSGFMT!$MSGFMT$ac_delim +GMSGFMT!$GMSGFMT$ac_delim +XGETTEXT!$XGETTEXT$ac_delim +CATALOGS!$CATALOGS$ac_delim +CATOBJEXT!$CATOBJEXT$ac_delim +DATADIRNAME!$DATADIRNAME$ac_delim +GMOFILES!$GMOFILES$ac_delim +INSTOBJEXT!$INSTOBJEXT$ac_delim +INTLLIBS!$INTLLIBS$ac_delim +PO_IN_DATADIR_TRUE!$PO_IN_DATADIR_TRUE$ac_delim +PO_IN_DATADIR_FALSE!$PO_IN_DATADIR_FALSE$ac_delim +POFILES!$POFILES$ac_delim +POSUB!$POSUB$ac_delim +MKINSTALLDIRS!$MKINSTALLDIRS$ac_delim +XMKMF!$XMKMF$ac_delim +PKG_CONFIG!$PKG_CONFIG$ac_delim +DBUS_CFLAGS!$DBUS_CFLAGS$ac_delim +DBUS_LIBS!$DBUS_LIBS$ac_delim +PYGTK_CFLAGS!$PYGTK_CFLAGS$ac_delim +PYGTK_LIBS!$PYGTK_LIBS$ac_delim +PYGTK_DEFS!$PYGTK_DEFS$ac_delim +GTKSPELL_CFLAGS!$GTKSPELL_CFLAGS$ac_delim +GTKSPELL_LIBS!$GTKSPELL_LIBS$ac_delim +XSCRNSAVER_CFLAGS!$XSCRNSAVER_CFLAGS$ac_delim +XSCRNSAVER_LIBS!$XSCRNSAVER_LIBS$ac_delim +PYTHON!$PYTHON$ac_delim +PYTHON_VERSION!$PYTHON_VERSION$ac_delim +PYTHON_PREFIX!$PYTHON_PREFIX$ac_delim +PYTHON_EXEC_PREFIX!$PYTHON_EXEC_PREFIX$ac_delim +PYTHON_PLATFORM!$PYTHON_PLATFORM$ac_delim +pythondir!$pythondir$ac_delim +pkgpythondir!$pkgpythondir$ac_delim +pyexecdir!$pyexecdir$ac_delim +pkgpyexecdir!$pkgpyexecdir$ac_delim +PYTHON_INCLUDES!$PYTHON_INCLUDES$ac_delim +LIBOBJS!$LIBOBJS$ac_delim +LTLIBOBJS!$LTLIBOBJS$ac_delim +_ACEOF + + if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 72; then + break + elif $ac_last_try; then + { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 +echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} + { (exit 1); exit 1; }; } + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done + +ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` +if test -n "$ac_eof"; then + ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` + ac_eof=`expr $ac_eof + 1` +fi + +cat >>$CONFIG_STATUS <<_ACEOF +cat >"\$tmp/subs-2.sed" <<\CEOF$ac_eof +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b end +_ACEOF +sed ' +s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g +s/^/s,@/; s/!/@,|#_!!_#|/ +:n +t n +s/'"$ac_delim"'$/,g/; t +s/$/\\/; p +N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n +' >>$CONFIG_STATUS >$CONFIG_STATUS <<_ACEOF +:end +s/|#_!!_#|//g +CEOF$ac_eof +_ACEOF + + +# VPATH may cause trouble with some makes, so we remove $(srcdir), +# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=/{ +s/:*\$(srcdir):*/:/ +s/:*\${srcdir}:*/:/ +s/:*@srcdir@:*/:/ +s/^\([^=]*=[ ]*\):*/\1/ +s/:*$// +s/^[^=]*=[ ]*$// +}' +fi + +cat >>$CONFIG_STATUS <<\_ACEOF +fi # test -n "$CONFIG_FILES" + + +for ac_tag in :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5 +echo "$as_me: error: Invalid tag $ac_tag." >&2;} + { (exit 1); exit 1; }; };; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5 +echo "$as_me: error: cannot find input file: $ac_f" >&2;} + { (exit 1); exit 1; }; };; + esac + ac_file_inputs="$ac_file_inputs $ac_f" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input="Generated from "`IFS=: + echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure." + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + fi + + case $ac_tag in + *:-:* | *:-) cat >"$tmp/stdin";; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + { as_dir="$ac_dir" + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 +echo "$as_me: error: cannot create directory $as_dir" >&2;} + { (exit 1); exit 1; }; }; } + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= + +case `sed -n '/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p +' $ac_file_inputs` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac +_ACEOF + +# Neutralize VPATH when `$srcdir' = `.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? +cat >>$CONFIG_STATUS <<_ACEOF + sed "$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s&@configure_input@&$configure_input&;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +$ac_datarootdir_hack +" $ac_file_inputs | sed -f "$tmp/subs-1.sed" | sed -f "$tmp/subs-2.sed" >$tmp/out + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && + { echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined." >&5 +echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined." >&2;} + + rm -f "$tmp/stdin" + case $ac_file in + -) cat "$tmp/out"; rm -f "$tmp/out";; + *) rm -f "$ac_file"; mv "$tmp/out" $ac_file;; + esac + ;; + :H) + # + # CONFIG_HEADER + # +_ACEOF + +# Transform confdefs.h into a sed script `conftest.defines', that +# substitutes the proper values into config.h.in to produce config.h. +rm -f conftest.defines conftest.tail +# First, append a space to every undef/define line, to ease matching. +echo 's/$/ /' >conftest.defines +# Then, protect against being on the right side of a sed subst, or in +# an unquoted here document, in config.status. If some macros were +# called several times there might be several #defines for the same +# symbol, which is useless. But do not sort them, since the last +# AC_DEFINE must be honored. +ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* +# These sed commands are passed to sed as "A NAME B PARAMS C VALUE D", where +# NAME is the cpp macro being defined, VALUE is the value it is being given. +# PARAMS is the parameter list in the macro definition--in most cases, it's +# just an empty string. +ac_dA='s,^\\([ #]*\\)[^ ]*\\([ ]*' +ac_dB='\\)[ (].*,\\1define\\2' +ac_dC=' ' +ac_dD=' ,' + +uniq confdefs.h | + sed -n ' + t rset + :rset + s/^[ ]*#[ ]*define[ ][ ]*// + t ok + d + :ok + s/[\\&,]/\\&/g + s/^\('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/ '"$ac_dA"'\1'"$ac_dB"'\2'"${ac_dC}"'\3'"$ac_dD"'/p + s/^\('"$ac_word_re"'\)[ ]*\(.*\)/'"$ac_dA"'\1'"$ac_dB$ac_dC"'\2'"$ac_dD"'/p + ' >>conftest.defines + +# Remove the space that was appended to ease matching. +# Then replace #undef with comments. This is necessary, for +# example, in the case of _POSIX_SOURCE, which is predefined and required +# on some systems where configure will not decide to define it. +# (The regexp can be short, since the line contains either #define or #undef.) +echo 's/ $// +s,^[ #]*u.*,/* & */,' >>conftest.defines + +# Break up conftest.defines: +ac_max_sed_lines=50 + +# First sed command is: sed -f defines.sed $ac_file_inputs >"$tmp/out1" +# Second one is: sed -f defines.sed "$tmp/out1" >"$tmp/out2" +# Third one will be: sed -f defines.sed "$tmp/out2" >"$tmp/out1" +# et cetera. +ac_in='$ac_file_inputs' +ac_out='"$tmp/out1"' +ac_nxt='"$tmp/out2"' + +while : +do + # Write a here document: + cat >>$CONFIG_STATUS <<_ACEOF + # First, check the format of the line: + cat >"\$tmp/defines.sed" <<\\CEOF +/^[ ]*#[ ]*undef[ ][ ]*$ac_word_re[ ]*\$/b def +/^[ ]*#[ ]*define[ ][ ]*$ac_word_re[( ]/b def +b +:def +_ACEOF + sed ${ac_max_sed_lines}q conftest.defines >>$CONFIG_STATUS + echo 'CEOF + sed -f "$tmp/defines.sed"' "$ac_in >$ac_out" >>$CONFIG_STATUS + ac_in=$ac_out; ac_out=$ac_nxt; ac_nxt=$ac_in + sed 1,${ac_max_sed_lines}d conftest.defines >conftest.tail + grep . conftest.tail >/dev/null || break + rm -f conftest.defines + mv conftest.tail conftest.defines +done +rm -f conftest.defines conftest.tail + +echo "ac_result=$ac_in" >>$CONFIG_STATUS +cat >>$CONFIG_STATUS <<\_ACEOF + if test x"$ac_file" != x-; then + echo "/* $configure_input */" >"$tmp/config.h" + cat "$ac_result" >>"$tmp/config.h" + if diff $ac_file "$tmp/config.h" >/dev/null 2>&1; then + { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 +echo "$as_me: $ac_file is unchanged" >&6;} + else + rm -f $ac_file + mv "$tmp/config.h" $ac_file + fi + else + echo "/* $configure_input */" + cat "$ac_result" + fi + rm -f "$tmp/out12" +# Compute $ac_file's index in $config_headers. +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $ac_file | $ac_file:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $ac_file" >`$as_dirname -- $ac_file || +$as_expr X$ac_file : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X$ac_file : 'X\(//\)[^/]' \| \ + X$ac_file : 'X\(//\)$' \| \ + X$ac_file : 'X\(/\)' \| . 2>/dev/null || +echo X$ac_file | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'`/stamp-h$_am_stamp_count + ;; + + :C) { echo "$as_me:$LINENO: executing $ac_file commands" >&5 +echo "$as_me: executing $ac_file commands" >&6;} + ;; + esac + + + case $ac_file$ac_mode in + "intltool":C) + +for file in intltool-extract intltool-merge intltool-update; do + sed -e "s|@INTLTOOL_EXTRACT@|`pwd`/intltool-extract|g" \ + -e "s|@INTLTOOL_LIBDIR@|${INTLTOOL_LIBDIR}|g" \ + -e "s|@INTLTOOL_ICONV@|${INTLTOOL_ICONV}|g" \ + -e "s|@INTLTOOL_MSGFMT@|${INTLTOOL_MSGFMT}|g" \ + -e "s|@INTLTOOL_MSGMERGE@|${INTLTOOL_MSGMERGE}|g" \ + -e "s|@INTLTOOL_XGETTEXT@|${INTLTOOL_XGETTEXT}|g" \ + -e "s|@INTLTOOL_PERL@|${INTLTOOL_PERL}|g" \ + < ${ac_aux_dir}/${file}.in > ${file}.out + if cmp -s ${file} ${file}.out 2>/dev/null; then + rm -f ${file}.out + else + mv -f ${file}.out ${file} + fi + chmod ugo+x ${file} + chmod u+w ${file} +done + + ;; + "depfiles":C) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named `Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # So let's grep whole file. + if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then + dirpart=`$as_dirname -- "$mf" || +$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$mf" : 'X\(//\)[^/]' \| \ + X"$mf" : 'X\(//\)$' \| \ + X"$mf" : 'X\(/\)' \| . 2>/dev/null || +echo X"$mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running `make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n 's/^U = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`$as_dirname -- "$file" || +$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$file" : 'X\(//\)[^/]' \| \ + X"$file" : 'X\(//\)$' \| \ + X"$file" : 'X\(/\)' \| . 2>/dev/null || +echo X"$file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + { as_dir=$dirpart/$fdir + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 +echo "$as_me: error: cannot create directory $as_dir" >&2;} + { (exit 1); exit 1; }; }; } + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done +done + ;; + "default-1":C) case "$CONFIG_FILES" in *po/Makefile.in*) + sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile + esac ;; + "po/stamp-it":C) + rm -f "po/stamp-it" "po/stamp-it.tmp" "po/POTFILES" "po/Makefile.tmp" + >"po/stamp-it.tmp" + sed '/^#/d + s/^[[].*] *// + /^[ ]*$/d + '"s|^| $ac_top_srcdir/|" \ + "$srcdir/po/POTFILES.in" | sed '$!s/$/ \\/' >"po/POTFILES" + + if test ! -f "po/Makefile"; then + { { echo "$as_me:$LINENO: error: po/Makefile is not ready." >&5 +echo "$as_me: error: po/Makefile is not ready." >&2;} + { (exit 1); exit 1; }; } + fi + mv "po/Makefile" "po/Makefile.tmp" + sed '/^POTFILES =/,/[^\\]$/ { + /^POTFILES =/!d + r po/POTFILES + } + ' "po/Makefile.tmp" >"po/Makefile" + rm -f "po/Makefile.tmp" + mv "po/stamp-it.tmp" "po/stamp-it" + ;; + + esac +done # for ac_tag + + +{ (exit 0); exit 0; } +_ACEOF +chmod +x $CONFIG_STATUS +ac_clean_files=$ac_clean_files_save + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || { (exit 1); exit 1; } +fi + + diff --git a/configure.ac b/configure.ac new file mode 100644 index 000000000..9fc4d3a17 --- /dev/null +++ b/configure.ac @@ -0,0 +1,78 @@ +AC_INIT([Gajim],[0.11.0],[http://trac.gajim.org/newticket],[gajim]) +AM_INIT_AUTOMAKE([1.9]) +AC_CONFIG_HEADER(config.h) + +AM_MAINTAINER_MODE + +IT_PROG_INTLTOOL([0.35.0]) + + +AM_DISABLE_STATIC +AC_ENABLE_SHARED(yes) +AC_ENABLE_STATIC(no) + +AC_ISC_POSIX +AC_PROG_CC +AC_PROG_INSTALL +AC_PROG_MAKE_SET +AC_PROG_LIBTOOL + +GETTEXT_PACKAGE=gajim +AC_SUBST([GETTEXT_PACKAGE]) +AC_DEFINE_UNQUOTED([GETTEXT_PACKAGE],["$GETTEXT_PACKAGE"], [Gettext package]) +ALL_LINGUAS="fr pt el pl es ru bg de nb cs nl pt_BR sv it eu sk no zh_CN br eo" +AM_GLIB_GNU_GETTEXT + +AC_PATH_X + +PKG_CHECK_MODULES([DBUS], [dbus-1 >= 0.61 dbus-glib-1 >= 0.61]) +AC_SUBST(DBUS_CFLAGS) +AC_SUBST(DBUS_LIBS) + +PKG_CHECK_MODULES([PYGTK], [gtk+-2.0 >= 2.6.0 pygtk-2.0 >= 2.6.0]) +AC_SUBST(PYGTK_CFLAGS) +AC_SUBST(PYGTK_LIBS) +PYGTK_DEFS=`$PKG_CONFIG --variable=defsdir pygtk-2.0` +AC_SUBST(PYGTK_DEFS) + + +PKG_CHECK_MODULES([GTKSPELL], [gtkspell-2.0]) +AC_SUBST(GTKSPELL_CFLAGS) +AC_SUBST(GTKSPELL_LIBS) + +PKG_CHECK_MODULES([XSCRNSAVER], xscrnsaver) +dnl AC_SUBST(XSCRNSAVER_LIBS) + +# Checks for libraries. +# FIXME: Replace `main' with a function in `-lX11': +AC_CHECK_LIB([X11], [main]) +# FIXME: Replace `main' with a function in `-lXext': +AC_CHECK_LIB([Xext], [main]) +# FIXME: Replace `main' with a function in `-lXss': +AC_CHECK_LIB([Xss], [main]) + + +AM_PATH_PYTHON([2.4]) +if test "x$PYTHON" = "x:"; then + AC_MSG_ERROR([Python not found]) +fi + +AM_CHECK_PYTHON_HEADERS(,[AC_MSG_ERROR(could not find Python headers)]) + + + +AC_CONFIG_FILES([ + Makefile + data/Makefile + data/glade/Makefile + data/emoticons/Makefile + data/pixmaps/Makefile + data/iconsets/Makefile + data/gajim.desktop.in + src/Makefile + src/common/Makefile + scripts/gajim + po/Makefile.in +]) +AC_OUTPUT + diff --git a/data/Makefile.am b/data/Makefile.am new file mode 100644 index 000000000..197d2b6e3 --- /dev/null +++ b/data/Makefile.am @@ -0,0 +1,23 @@ +SUBDIRS = glade emoticons pixmaps iconsets + +desktopdir = $(datadir)/applications +desktop_in_files = gajim.desktop.in.in +desktop_DATA = $(desktop_in_files:.desktop.in.in=.desktop) + +soundsdir = $(pkgdatadir)/data/sounds +sounds_DATA = sounds/*.wav + +otherdir = $(pkgdatadir)/data/others +other_DATA = other/servers.xml + +man_MANS = gajim.1 gajim-remote.1 + +@INTLTOOL_DESKTOP_RULE@ + +EXTRA_DIST = $(desktop_in_files) \ + $(sounds_DATA) \ + $(other_DATA) \ + $(man_MANS) + +DISTCLEANFILES = $(desktop_DATA) + diff --git a/data/Makefile.in b/data/Makefile.in new file mode 100644 index 000000000..4325f55ba --- /dev/null +++ b/data/Makefile.in @@ -0,0 +1,682 @@ +# Makefile.in generated by automake 1.9.6 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = data +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ + $(srcdir)/gajim.desktop.in.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/glib-gettext.m4 \ + $(top_srcdir)/m4/python.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = gajim.desktop.in +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-exec-recursive install-info-recursive \ + install-recursive installcheck-recursive installdirs-recursive \ + pdf-recursive ps-recursive uninstall-info-recursive \ + uninstall-recursive +man1dir = $(mandir)/man1 +am__installdirs = "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(desktopdir)" \ + "$(DESTDIR)$(otherdir)" "$(DESTDIR)$(soundsdir)" +NROFF = nroff +MANS = $(man_MANS) +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +desktopDATA_INSTALL = $(INSTALL_DATA) +otherDATA_INSTALL = $(INSTALL_DATA) +soundsDATA_INSTALL = $(INSTALL_DATA) +DATA = $(desktop_DATA) $(other_DATA) $(sounds_DATA) +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALL_LINGUAS = @ALL_LINGUAS@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CATALOGS = @CATALOGS@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DBUS_CFLAGS = @DBUS_CFLAGS@ +DBUS_LIBS = @DBUS_LIBS@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GMOFILES = @GMOFILES@ +GMSGFMT = @GMSGFMT@ +GREP = @GREP@ +GTKSPELL_CFLAGS = @GTKSPELL_CFLAGS@ +GTKSPELL_LIBS = @GTKSPELL_LIBS@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLLIBS = @INTLLIBS@ +INTLTOOL_CAVES_RULE = @INTLTOOL_CAVES_RULE@ +INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@ +INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@ +INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ +INTLTOOL_ICONV = @INTLTOOL_ICONV@ +INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@ +INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@ +INTLTOOL_MERGE = @INTLTOOL_MERGE@ +INTLTOOL_MSGFMT = @INTLTOOL_MSGFMT@ +INTLTOOL_MSGMERGE = @INTLTOOL_MSGMERGE@ +INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@ +INTLTOOL_PERL = @INTLTOOL_PERL@ +INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@ +INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@ +INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@ +INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@ +INTLTOOL_SERVICE_RULE = @INTLTOOL_SERVICE_RULE@ +INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@ +INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@ +INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@ +INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@ +INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ +INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@ +INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@ +INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@ +INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ +MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ +MAKEINFO = @MAKEINFO@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +POFILES = @POFILES@ +POSUB = @POSUB@ +PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ +PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ +PYGTK_CFLAGS = @PYGTK_CFLAGS@ +PYGTK_DEFS = @PYGTK_DEFS@ +PYGTK_LIBS = @PYGTK_LIBS@ +PYTHON = @PYTHON@ +PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ +PYTHON_INCLUDES = @PYTHON_INCLUDES@ +PYTHON_PLATFORM = @PYTHON_PLATFORM@ +PYTHON_PREFIX = @PYTHON_PREFIX@ +PYTHON_VERSION = @PYTHON_VERSION@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +XMKMF = @XMKMF@ +XSCRNSAVER_CFLAGS = @XSCRNSAVER_CFLAGS@ +XSCRNSAVER_LIBS = @XSCRNSAVER_LIBS@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgpyexecdir = @pkgpyexecdir@ +pkgpythondir = @pkgpythondir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pyexecdir = @pyexecdir@ +pythondir = @pythondir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +SUBDIRS = glade emoticons pixmaps iconsets +desktopdir = $(datadir)/applications +desktop_in_files = gajim.desktop.in.in +desktop_DATA = $(desktop_in_files:.desktop.in.in=.desktop) +soundsdir = $(pkgdatadir)/data/sounds +sounds_DATA = sounds/*.wav +otherdir = $(pkgdatadir)/data/others +other_DATA = other/servers.xml +man_MANS = gajim.1 gajim-remote.1 +EXTRA_DIST = $(desktop_in_files) \ + $(sounds_DATA) \ + $(other_DATA) \ + $(man_MANS) + +DISTCLEANFILES = $(desktop_DATA) +all: all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu data/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu data/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +gajim.desktop.in: $(top_builddir)/config.status $(srcdir)/gajim.desktop.in.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: +install-man1: $(man1_MANS) $(man_MANS) + @$(NORMAL_INSTALL) + test -z "$(man1dir)" || $(mkdir_p) "$(DESTDIR)$(man1dir)" + @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \ + l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ + for i in $$l2; do \ + case "$$i" in \ + *.1*) list="$$list $$i" ;; \ + esac; \ + done; \ + for i in $$list; do \ + if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \ + else file=$$i; fi; \ + ext=`echo $$i | sed -e 's/^.*\\.//'`; \ + case "$$ext" in \ + 1*) ;; \ + *) ext='1' ;; \ + esac; \ + inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ + inst=`echo $$inst | sed -e 's/^.*\///'`; \ + inst=`echo $$inst | sed '$(transform)'`.$$ext; \ + echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ + $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst"; \ + done +uninstall-man1: + @$(NORMAL_UNINSTALL) + @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \ + l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ + for i in $$l2; do \ + case "$$i" in \ + *.1*) list="$$list $$i" ;; \ + esac; \ + done; \ + for i in $$list; do \ + ext=`echo $$i | sed -e 's/^.*\\.//'`; \ + case "$$ext" in \ + 1*) ;; \ + *) ext='1' ;; \ + esac; \ + inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ + inst=`echo $$inst | sed -e 's/^.*\///'`; \ + inst=`echo $$inst | sed '$(transform)'`.$$ext; \ + echo " rm -f '$(DESTDIR)$(man1dir)/$$inst'"; \ + rm -f "$(DESTDIR)$(man1dir)/$$inst"; \ + done +install-desktopDATA: $(desktop_DATA) + @$(NORMAL_INSTALL) + test -z "$(desktopdir)" || $(mkdir_p) "$(DESTDIR)$(desktopdir)" + @list='$(desktop_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(desktopDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(desktopdir)/$$f'"; \ + $(desktopDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(desktopdir)/$$f"; \ + done + +uninstall-desktopDATA: + @$(NORMAL_UNINSTALL) + @list='$(desktop_DATA)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(desktopdir)/$$f'"; \ + rm -f "$(DESTDIR)$(desktopdir)/$$f"; \ + done +install-otherDATA: $(other_DATA) + @$(NORMAL_INSTALL) + test -z "$(otherdir)" || $(mkdir_p) "$(DESTDIR)$(otherdir)" + @list='$(other_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(otherDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(otherdir)/$$f'"; \ + $(otherDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(otherdir)/$$f"; \ + done + +uninstall-otherDATA: + @$(NORMAL_UNINSTALL) + @list='$(other_DATA)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(otherdir)/$$f'"; \ + rm -f "$(DESTDIR)$(otherdir)/$$f"; \ + done +install-soundsDATA: $(sounds_DATA) + @$(NORMAL_INSTALL) + test -z "$(soundsdir)" || $(mkdir_p) "$(DESTDIR)$(soundsdir)" + @list='$(sounds_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(soundsDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(soundsdir)/$$f'"; \ + $(soundsDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(soundsdir)/$$f"; \ + done + +uninstall-soundsDATA: + @$(NORMAL_UNINSTALL) + @list='$(sounds_DATA)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(soundsdir)/$$f'"; \ + rm -f "$(DESTDIR)$(soundsdir)/$$f"; \ + done + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +mostlyclean-recursive clean-recursive distclean-recursive \ +maintainer-clean-recursive: + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + $(mkdir_p) $(distdir)/other $(distdir)/sounds + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(mkdir_p) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile $(MANS) $(DATA) +installdirs: installdirs-recursive +installdirs-am: + for dir in "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(desktopdir)" "$(DESTDIR)$(otherdir)" "$(DESTDIR)$(soundsdir)"; do \ + test -z "$$dir" || $(mkdir_p) "$$dir"; \ + done +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-libtool \ + distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +info: info-recursive + +info-am: + +install-data-am: install-desktopDATA install-man install-otherDATA \ + install-soundsDATA + +install-exec-am: + +install-info: install-info-recursive + +install-man: install-man1 + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-desktopDATA uninstall-info-am uninstall-man \ + uninstall-otherDATA uninstall-soundsDATA + +uninstall-info: uninstall-info-recursive + +uninstall-man: uninstall-man1 + +.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \ + clean clean-generic clean-libtool clean-recursive ctags \ + ctags-recursive distclean distclean-generic distclean-libtool \ + distclean-recursive distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-desktopDATA install-exec \ + install-exec-am install-info install-info-am install-man \ + install-man1 install-otherDATA install-soundsDATA \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + maintainer-clean-recursive mostlyclean mostlyclean-generic \ + mostlyclean-libtool mostlyclean-recursive pdf pdf-am ps ps-am \ + tags tags-recursive uninstall uninstall-am \ + uninstall-desktopDATA uninstall-info-am uninstall-man \ + uninstall-man1 uninstall-otherDATA uninstall-soundsDATA + + +@INTLTOOL_DESKTOP_RULE@ +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/data/emoticons/Makefile.am b/data/emoticons/Makefile.am new file mode 100644 index 000000000..e7d867243 --- /dev/null +++ b/data/emoticons/Makefile.am @@ -0,0 +1,36 @@ +emoticonsdir = $(pkgdatadir)/data/emoticons + +emoticons_DATA = + +EMOTICONS_DIRS = ** + +EMOTICONS_FILES = **/{*.png,*.gif,emoticons.py} + +# copy files recursively +install-data-local: + @for d in $(EMOTICONS_DIRS);do \ + if test -d $$d;then \ + echo " $(mkinstalldirs) $(pkgdatadir)/data/emoticons/$$d"; \ + $(mkinstalldirs) $(pkgdatadir)/data/emoticons/$$d || exit 1; \ + fi; \ + done; \ + for f in $(EMOTICONS_FILES);do \ + if test -f $$f; then \ + echo " $(INSTALL_DATA) $$f $(pkgdatadir)/data/emoticons/$$f"; \ + $(INSTALL_DATA) $$f $(pkgdatadir)/data/emoticons/$$f || exit 1; \ + fi; \ + done; + +dist-hook: + @for d in $(EMOTICONS_DIRS);do \ + if test -d $$d;then \ + echo " $(mkdir_p) $(distdir)/$$d"; \ + $(mkdir_p) $(distdir)/$$d || exit 1; \ + fi; \ + done; \ + for f in $(EMOTICONS_FILES);do \ + if test -f $$f; then \ + echo " cp -pR $(srcdir)/$$f $(distdir)/$$f"; \ + cp -pR $(srcdir)/$$f $(distdir)/$$f || exit 1; \ + fi; \ + done; diff --git a/data/emoticons/Makefile.in b/data/emoticons/Makefile.in new file mode 100644 index 000000000..56630453a --- /dev/null +++ b/data/emoticons/Makefile.in @@ -0,0 +1,448 @@ +# Makefile.in generated by automake 1.9.6 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = ../.. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = data/emoticons +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/glib-gettext.m4 \ + $(top_srcdir)/m4/python.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__installdirs = "$(DESTDIR)$(emoticonsdir)" +emoticonsDATA_INSTALL = $(INSTALL_DATA) +DATA = $(emoticons_DATA) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALL_LINGUAS = @ALL_LINGUAS@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CATALOGS = @CATALOGS@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DBUS_CFLAGS = @DBUS_CFLAGS@ +DBUS_LIBS = @DBUS_LIBS@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GMOFILES = @GMOFILES@ +GMSGFMT = @GMSGFMT@ +GREP = @GREP@ +GTKSPELL_CFLAGS = @GTKSPELL_CFLAGS@ +GTKSPELL_LIBS = @GTKSPELL_LIBS@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLLIBS = @INTLLIBS@ +INTLTOOL_CAVES_RULE = @INTLTOOL_CAVES_RULE@ +INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@ +INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@ +INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ +INTLTOOL_ICONV = @INTLTOOL_ICONV@ +INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@ +INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@ +INTLTOOL_MERGE = @INTLTOOL_MERGE@ +INTLTOOL_MSGFMT = @INTLTOOL_MSGFMT@ +INTLTOOL_MSGMERGE = @INTLTOOL_MSGMERGE@ +INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@ +INTLTOOL_PERL = @INTLTOOL_PERL@ +INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@ +INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@ +INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@ +INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@ +INTLTOOL_SERVICE_RULE = @INTLTOOL_SERVICE_RULE@ +INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@ +INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@ +INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@ +INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@ +INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ +INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@ +INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@ +INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@ +INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ +MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ +MAKEINFO = @MAKEINFO@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +POFILES = @POFILES@ +POSUB = @POSUB@ +PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ +PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ +PYGTK_CFLAGS = @PYGTK_CFLAGS@ +PYGTK_DEFS = @PYGTK_DEFS@ +PYGTK_LIBS = @PYGTK_LIBS@ +PYTHON = @PYTHON@ +PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ +PYTHON_INCLUDES = @PYTHON_INCLUDES@ +PYTHON_PLATFORM = @PYTHON_PLATFORM@ +PYTHON_PREFIX = @PYTHON_PREFIX@ +PYTHON_VERSION = @PYTHON_VERSION@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +XMKMF = @XMKMF@ +XSCRNSAVER_CFLAGS = @XSCRNSAVER_CFLAGS@ +XSCRNSAVER_LIBS = @XSCRNSAVER_LIBS@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgpyexecdir = @pkgpyexecdir@ +pkgpythondir = @pkgpythondir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pyexecdir = @pyexecdir@ +pythondir = @pythondir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +emoticonsdir = $(pkgdatadir)/data/emoticons +emoticons_DATA = +EMOTICONS_DIRS = ** +EMOTICONS_FILES = **/{*.png,*.gif,emoticons.py} +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu data/emoticons/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu data/emoticons/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: +install-emoticonsDATA: $(emoticons_DATA) + @$(NORMAL_INSTALL) + test -z "$(emoticonsdir)" || $(mkdir_p) "$(DESTDIR)$(emoticonsdir)" + @list='$(emoticons_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(emoticonsDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(emoticonsdir)/$$f'"; \ + $(emoticonsDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(emoticonsdir)/$$f"; \ + done + +uninstall-emoticonsDATA: + @$(NORMAL_UNINSTALL) + @list='$(emoticons_DATA)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(emoticonsdir)/$$f'"; \ + rm -f "$(DESTDIR)$(emoticonsdir)/$$f"; \ + done +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$(top_distdir)" distdir="$(distdir)" \ + dist-hook +check-am: all-am +check: check-am +all-am: Makefile $(DATA) +installdirs: + for dir in "$(DESTDIR)$(emoticonsdir)"; do \ + test -z "$$dir" || $(mkdir_p) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-libtool + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: install-data-local install-emoticonsDATA + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-emoticonsDATA uninstall-info-am + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + dist-hook distclean distclean-generic distclean-libtool \ + distdir dvi dvi-am html html-am info info-am install \ + install-am install-data install-data-am install-data-local \ + install-emoticonsDATA install-exec install-exec-am \ + install-info install-info-am install-man install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ + uninstall-emoticonsDATA uninstall-info-am + + +# copy files recursively +install-data-local: + @for d in $(EMOTICONS_DIRS);do \ + if test -d $$d;then \ + echo " $(mkinstalldirs) $(pkgdatadir)/data/emoticons/$$d"; \ + $(mkinstalldirs) $(pkgdatadir)/data/emoticons/$$d || exit 1; \ + fi; \ + done; \ + for f in $(EMOTICONS_FILES);do \ + if test -f $$f; then \ + echo " $(INSTALL_DATA) $$f $(pkgdatadir)/data/emoticons/$$f"; \ + $(INSTALL_DATA) $$f $(pkgdatadir)/data/emoticons/$$f || exit 1; \ + fi; \ + done; + +dist-hook: + @for d in $(EMOTICONS_DIRS);do \ + if test -d $$d;then \ + echo " $(mkdir_p) $(distdir)/$$d"; \ + $(mkdir_p) $(distdir)/$$d || exit 1; \ + fi; \ + done; \ + for f in $(EMOTICONS_FILES);do \ + if test -f $$f; then \ + echo " cp -pR $(srcdir)/$$f $(distdir)/$$f"; \ + cp -pR $(srcdir)/$$f $(distdir)/$$f || exit 1; \ + fi; \ + done; +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/data/gajim-remote.1 b/data/gajim-remote.1 new file mode 100644 index 000000000..8b13ff1a8 --- /dev/null +++ b/data/gajim-remote.1 @@ -0,0 +1,14 @@ +.\" 20050818 +.TH "Gajim-remote" "1" "August 18, 2005" "Gajim dev team" "" +.SH "NAME" +Gajim-remote +.SH "SYNOPSIS" +.B gajim-remote [help] [toggle_roster_appearance] [show_next_unread] [list_contacts] [list_accounts] [change_status] [open_chat] [send_message] [send_file] [contact_info] [account_info] [send_file] [prefs_list] [prefs_put] [prefs_del] [prefs_store] [remove_contact] [add_contact] [get_status] [get_status_message] [get_unread_msgs_number] [start_chat] +.SH "DESCRIPTION" +.B Gajim-remote +is a script to control Gajim by D-Bus +.PP +.SH "FEEDBACK" +You can report bugs or feature requests in http://trac.gajim.org or in the mailing list: https://lists.gajim.org/cgi\-bin/listinfo/gajim\-devel. You can also find us in our room gajim@conference.jabber.no +.SH "AUTHORS" +Written by Yann Le Boulanger , Nikos Kouremenos and Dimitur Kirov . diff --git a/data/gajim.1 b/data/gajim.1 new file mode 100644 index 000000000..b6351cd4f --- /dev/null +++ b/data/gajim.1 @@ -0,0 +1,25 @@ +.\" 20050901 +.TH "Gajim" "1" "September 01, 2005" "Gajim dev team" "" +.SH "NAME" +Gajim \- a jabber client +.SH "SYNOPSIS" +.B gajim [\-v] [\-p] [\-h] +.SH "DESCRIPTION" +.B Gajim +is a jabber client written in PyGTK and released under the GNU GPL. For more information on jabber, see +http://www.jabber.org and on Gajim see http://www.gajim.org +.PP +.SH "OPTIONS" +.TP +\fB\-p\fR, \fB\-\-profile\fR name +Run Gajim using ~/.gajim/config.name +.TP +\fB\-v\fR, \fB\-\-verbose\fR +Print xml stanzas and other debug information. +.TP +\fB\-h\fR, \fB\-\-help\fR +Print this help. +.SH "FEEDBACK" +You can report bugs or feature requests in http://trac.gajim.org or in the mailing list: https://lists.gajim.org/cgi\-bin/listinfo/gajim\-devel. You can also find us in our room gajim@conference.gajim.org +.SH "AUTHORS" +Written by Yann Le Boulanger , Nikos Kouremenos and Dimitur Kirov . diff --git a/data/gajim.desktop.in.in b/data/gajim.desktop.in.in new file mode 100644 index 000000000..55b50e3ec --- /dev/null +++ b/data/gajim.desktop.in.in @@ -0,0 +1,13 @@ +[Desktop Entry] +Categories=Network;InstantMessaging;Application;GTK;GNOME; +_Name=Gajim Instant Messenger +_GenericName=Jabber IM Client +_Comment=A GTK+ Jabber client +Version=@VERSION@ +Encoding=UTF-8 +Exec=gajim +Icon=gajim.png +StartupNotify=true +StartupWMClass=Gajim +Terminal=false +Type=Application diff --git a/data/glade/Makefile.am b/data/glade/Makefile.am new file mode 100644 index 000000000..625f99635 --- /dev/null +++ b/data/glade/Makefile.am @@ -0,0 +1,5 @@ +gladedir = $(pkgdatadir)/data/glade +glade_DATA = *.glade +EXTRA_DIST = $(glade_DATA) + +DISTCLEANFILES = *.h diff --git a/data/glade/Makefile.in b/data/glade/Makefile.in new file mode 100644 index 000000000..5733be2ac --- /dev/null +++ b/data/glade/Makefile.in @@ -0,0 +1,416 @@ +# Makefile.in generated by automake 1.9.6 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = ../.. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = data/glade +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/glib-gettext.m4 \ + $(top_srcdir)/m4/python.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__installdirs = "$(DESTDIR)$(gladedir)" +gladeDATA_INSTALL = $(INSTALL_DATA) +DATA = $(glade_DATA) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALL_LINGUAS = @ALL_LINGUAS@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CATALOGS = @CATALOGS@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DBUS_CFLAGS = @DBUS_CFLAGS@ +DBUS_LIBS = @DBUS_LIBS@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GMOFILES = @GMOFILES@ +GMSGFMT = @GMSGFMT@ +GREP = @GREP@ +GTKSPELL_CFLAGS = @GTKSPELL_CFLAGS@ +GTKSPELL_LIBS = @GTKSPELL_LIBS@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLLIBS = @INTLLIBS@ +INTLTOOL_CAVES_RULE = @INTLTOOL_CAVES_RULE@ +INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@ +INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@ +INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ +INTLTOOL_ICONV = @INTLTOOL_ICONV@ +INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@ +INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@ +INTLTOOL_MERGE = @INTLTOOL_MERGE@ +INTLTOOL_MSGFMT = @INTLTOOL_MSGFMT@ +INTLTOOL_MSGMERGE = @INTLTOOL_MSGMERGE@ +INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@ +INTLTOOL_PERL = @INTLTOOL_PERL@ +INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@ +INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@ +INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@ +INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@ +INTLTOOL_SERVICE_RULE = @INTLTOOL_SERVICE_RULE@ +INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@ +INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@ +INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@ +INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@ +INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ +INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@ +INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@ +INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@ +INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ +MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ +MAKEINFO = @MAKEINFO@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +POFILES = @POFILES@ +POSUB = @POSUB@ +PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ +PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ +PYGTK_CFLAGS = @PYGTK_CFLAGS@ +PYGTK_DEFS = @PYGTK_DEFS@ +PYGTK_LIBS = @PYGTK_LIBS@ +PYTHON = @PYTHON@ +PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ +PYTHON_INCLUDES = @PYTHON_INCLUDES@ +PYTHON_PLATFORM = @PYTHON_PLATFORM@ +PYTHON_PREFIX = @PYTHON_PREFIX@ +PYTHON_VERSION = @PYTHON_VERSION@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +XMKMF = @XMKMF@ +XSCRNSAVER_CFLAGS = @XSCRNSAVER_CFLAGS@ +XSCRNSAVER_LIBS = @XSCRNSAVER_LIBS@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgpyexecdir = @pkgpyexecdir@ +pkgpythondir = @pkgpythondir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pyexecdir = @pyexecdir@ +pythondir = @pythondir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +gladedir = $(pkgdatadir)/data/glade +glade_DATA = *.glade +EXTRA_DIST = $(glade_DATA) +DISTCLEANFILES = *.h +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu data/glade/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu data/glade/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: +install-gladeDATA: $(glade_DATA) + @$(NORMAL_INSTALL) + test -z "$(gladedir)" || $(mkdir_p) "$(DESTDIR)$(gladedir)" + @list='$(glade_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(gladeDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(gladedir)/$$f'"; \ + $(gladeDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(gladedir)/$$f"; \ + done + +uninstall-gladeDATA: + @$(NORMAL_UNINSTALL) + @list='$(glade_DATA)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(gladedir)/$$f'"; \ + rm -f "$(DESTDIR)$(gladedir)/$$f"; \ + done +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(DATA) +installdirs: + for dir in "$(DESTDIR)$(gladedir)"; do \ + test -z "$$dir" || $(mkdir_p) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-libtool + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: install-gladeDATA + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-gladeDATA uninstall-info-am + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-exec install-exec-am \ + install-gladeDATA install-info install-info-am install-man \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + uninstall uninstall-am uninstall-gladeDATA uninstall-info-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/data/glade/account_modification_window.glade b/data/glade/account_modification_window.glade index c2a4150cd..ecbc6f341 100644 --- a/data/glade/account_modification_window.glade +++ b/data/glade/account_modification_window.glade @@ -2,6 +2,7 @@ + 12 Account Modification @@ -16,6 +17,7 @@ GDK_WINDOW_TYPE_HINT_NORMAL GDK_GRAVITY_NORTH_WEST True + False @@ -331,6 +333,29 @@ + + + True + True + _Adjust with status + True + GTK_RELIEF_NORMAL + True + False + False + True + + + + 1 + 2 + 3 + 4 + fill + + + + True @@ -345,11 +370,11 @@ 5 0 127 1 5 5 - 1 - 2 + 2 + 3 3 4 - shrink|fill + fill @@ -1197,4 +1222,5 @@ + diff --git a/data/glade/add_new_contact_window.glade b/data/glade/add_new_contact_window.glade index cf41eca13..dd220be82 100644 --- a/data/glade/add_new_contact_window.glade +++ b/data/glade/add_new_contact_window.glade @@ -180,7 +180,7 @@ 6 True - 4 + 3 2 False 6 @@ -331,28 +331,6 @@ fill - - - - True - True - A_llow this contact to view my status - True - GTK_RELIEF_NORMAL - True - True - False - True - - - 1 - 2 - 3 - 4 - fill - - - 0 @@ -361,6 +339,25 @@ + + + True + True + A_llow this contact to view my status + True + GTK_RELIEF_NORMAL + True + True + False + True + + + 0 + False + False + + + 6 diff --git a/data/glade/privacy_lists_window.glade b/data/glade/privacy_lists_window.glade index 7a7470123..389289500 100644 --- a/data/glade/privacy_lists_window.glade +++ b/data/glade/privacy_lists_window.glade @@ -25,64 +25,31 @@ True False - 0 + 6 - + True - Server-based Privacy Lists - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 5 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - 4 - True - - False - True - - - 0 - True - True - - - - - - True - True - 0 + False + 12 - - 5 + True - True - gtk-delete - True - GTK_RELIEF_NORMAL - True - + Privacy Lists: + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0.5 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 0 @@ -92,15 +59,95 @@ - - 5 + + True + + False + True + + + 0 + True + True + + + + + 0 + False + True + + + + + + True + False + 6 + + + + True + GTK_BUTTONBOX_SPREAD + 0 + + + + 5 + True + True + gtk-delete + True + GTK_RELIEF_NORMAL + True + + + + + + + 5 + True + True + gtk-edit + True + GTK_RELIEF_NORMAL + True + + + + + + + 5 + True + True + gtk-new + True + GTK_RELIEF_NORMAL + True + + + + + + 0 + False + False + + + + + True True - gtk-open - True - GTK_RELIEF_NORMAL - True - + True + True + 0 + + True + ◠+ False 0 @@ -117,93 +164,9 @@ - + True - - - 5 - True - True - - - - - - True - Create your own Privacy Lists - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 5 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - True - True - True - True - 0 - - True - ◠- False - - - 4 - False - False - - - - - - 5 - True - True - gtk-new - True - GTK_RELIEF_NORMAL - True - - - - 0 - False - False - - - - - - True - - - 5 - True - True - - - - - - True - True + GTK_BUTTONBOX_DEFAULT_STYLE 0 @@ -217,11 +180,6 @@ True - - 0 - False - False - @@ -235,11 +193,6 @@ True - - 0 - False - False - diff --git a/data/glade/roster_window.glade b/data/glade/roster_window.glade index d1c9cf194..23c7edaa3 100644 --- a/data/glade/roster_window.glade +++ b/data/glade/roster_window.glade @@ -10,7 +10,7 @@ GTK_WINDOW_TOPLEVEL GTK_WIN_POS_NONE False - 150 + 200 400 True False @@ -56,7 +56,7 @@ True - + True gtk-jump-to 1 @@ -76,7 +76,7 @@ True - + True gtk-connect 1 @@ -102,7 +102,7 @@ True - + True gtk-add 1 @@ -122,7 +122,7 @@ True - + True gtk-find 1 @@ -143,17 +143,6 @@ - - - True - Show _Offline Contacts - True - False - - - - - True @@ -169,7 +158,7 @@ - + True gtk-quit 1 @@ -205,7 +194,7 @@ - + True gtk-network 1 @@ -218,36 +207,14 @@ - - - True - File _Transfers - True - - - - - - True - gtk-file - 1 - 0.5 - 0.5 - 0 - 0 - - - - - True - Profile, Avatar + Profile, A_vatar True - + True gtk-properties 1 @@ -275,7 +242,7 @@ - + True gtk-preferences 1 @@ -292,6 +259,69 @@ + + + True + _View + True + + + + + + + + True + Show _Offline Contacts + True + False + + + + + + + + True + Show Trans_ports + True + False + + + + + + + True + + + + + + True + File _Transfers + True + + + + + + True + gtk-file + 1 + 0.5 + 0.5 + 0 + 0 + + + + + + + + + True @@ -310,7 +340,7 @@ - + True gtk-help 1 diff --git a/data/glade/subscription_request_popup_menu.glade b/data/glade/subscription_request_popup_menu.glade new file mode 100644 index 000000000..3290d3237 --- /dev/null +++ b/data/glade/subscription_request_popup_menu.glade @@ -0,0 +1,39 @@ + + + + + + + + + + True + _Start Chat + True + + + + + True + gtk-jump-to + 1 + 0.5 + 0.5 + 0 + 0 + + + + + + + + True + gtk-info + True + + + + + + diff --git a/data/glade/subscription_request_window.glade b/data/glade/subscription_request_window.glade index ae26f479e..44dbed773 100644 --- a/data/glade/subscription_request_window.glade +++ b/data/glade/subscription_request_window.glade @@ -2,6 +2,7 @@ + 12 Subscription Request @@ -16,6 +17,7 @@ GDK_WINDOW_TYPE_HINT_NORMAL GDK_GRAVITY_NORTH_WEST True + False @@ -181,81 +183,6 @@ - - - True - True - True - GTK_RELIEF_NORMAL - True - - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - gtk-justify-fill - 4 - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - True - Contact _Info - True - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - - - - True @@ -332,6 +259,97 @@ + + + + True + True + GTK_RELIEF_NORMAL + True + + + + + True + 0.5 + 0.5 + 0 + 0 + 0 + 0 + 0 + 0 + + + + True + False + 2 + + + + True + gtk-execute + 4 + 0.5 + 0.5 + 0 + 0 + + + 0 + False + False + + + + + + True + _Actions + True + False + GTK_JUSTIFY_LEFT + False + False + 0.5 + 0.5 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + False + False + + + + + + True + GTK_ARROW_DOWN + GTK_SHADOW_OUT + 0.5 + 0.5 + 0 + 0 + + + 0 + False + False + + + + + + + + 0 @@ -342,4 +360,5 @@ + diff --git a/data/iconsets/Makefile.am b/data/iconsets/Makefile.am new file mode 100644 index 000000000..ce3281cda --- /dev/null +++ b/data/iconsets/Makefile.am @@ -0,0 +1,37 @@ +iconsetdir = $(pkgdatadir)/data/iconsets + +iconset_DATA = + +ICONSET_DIRS = **/{16x16,32x32,48x48} \ + transports/**/{16x16,32x32,48x48} + +ICONSET_FILES = **/{16x16,32x32,48x48}/{*.gif,*.png} \ + transports/**/{16x16,32x32,48x48}/{*.gif,*.png} + +install-data-local: + @for d in $(ICONSET_DIRS);do \ + if test -d $$d;then \ + echo " $(mkinstalldirs) $(pkgdatadir)/data/iconsets/$$d"; \ + $(mkinstalldirs) $(pkgdatadir)/data/iconsets/$$d || exit 1; \ + fi; \ + done + for f in $(ICONSET_FILES);do \ + if test -f $$f; then \ + echo " $(INSTALL_DATA) $$f $(pkgdatadir)/data/iconsets/$$f"; \ + $(INSTALL_DATA) $$f $(pkgdatadir)/data/iconsets/$$f || exit 1; \ + fi; \ + done; + +dist-hook: + @for d in $(ICONSET_DIRS);do \ + if test -d $$d;then \ + echo " $(mkdir_p) $(distdir)/$$d"; \ + $(mkdir_p) $(distdir)/$$d || exit 1; \ + fi; \ + done + for f in $(ICONSET_FILES);do \ + if test -f $$f; then \ + echo " cp -pR $(srcdir)/$$f $(distdir)/$$f"; \ + cp -pR $(srcdir)/$$f $(distdir)/$$f || exit 1; \ + fi; \ + done; diff --git a/data/iconsets/Makefile.in b/data/iconsets/Makefile.in new file mode 100644 index 000000000..2156cb61a --- /dev/null +++ b/data/iconsets/Makefile.in @@ -0,0 +1,451 @@ +# Makefile.in generated by automake 1.9.6 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = ../.. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = data/iconsets +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/glib-gettext.m4 \ + $(top_srcdir)/m4/python.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__installdirs = "$(DESTDIR)$(iconsetdir)" +iconsetDATA_INSTALL = $(INSTALL_DATA) +DATA = $(iconset_DATA) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALL_LINGUAS = @ALL_LINGUAS@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CATALOGS = @CATALOGS@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DBUS_CFLAGS = @DBUS_CFLAGS@ +DBUS_LIBS = @DBUS_LIBS@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GMOFILES = @GMOFILES@ +GMSGFMT = @GMSGFMT@ +GREP = @GREP@ +GTKSPELL_CFLAGS = @GTKSPELL_CFLAGS@ +GTKSPELL_LIBS = @GTKSPELL_LIBS@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLLIBS = @INTLLIBS@ +INTLTOOL_CAVES_RULE = @INTLTOOL_CAVES_RULE@ +INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@ +INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@ +INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ +INTLTOOL_ICONV = @INTLTOOL_ICONV@ +INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@ +INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@ +INTLTOOL_MERGE = @INTLTOOL_MERGE@ +INTLTOOL_MSGFMT = @INTLTOOL_MSGFMT@ +INTLTOOL_MSGMERGE = @INTLTOOL_MSGMERGE@ +INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@ +INTLTOOL_PERL = @INTLTOOL_PERL@ +INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@ +INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@ +INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@ +INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@ +INTLTOOL_SERVICE_RULE = @INTLTOOL_SERVICE_RULE@ +INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@ +INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@ +INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@ +INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@ +INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ +INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@ +INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@ +INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@ +INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ +MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ +MAKEINFO = @MAKEINFO@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +POFILES = @POFILES@ +POSUB = @POSUB@ +PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ +PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ +PYGTK_CFLAGS = @PYGTK_CFLAGS@ +PYGTK_DEFS = @PYGTK_DEFS@ +PYGTK_LIBS = @PYGTK_LIBS@ +PYTHON = @PYTHON@ +PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ +PYTHON_INCLUDES = @PYTHON_INCLUDES@ +PYTHON_PLATFORM = @PYTHON_PLATFORM@ +PYTHON_PREFIX = @PYTHON_PREFIX@ +PYTHON_VERSION = @PYTHON_VERSION@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +XMKMF = @XMKMF@ +XSCRNSAVER_CFLAGS = @XSCRNSAVER_CFLAGS@ +XSCRNSAVER_LIBS = @XSCRNSAVER_LIBS@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgpyexecdir = @pkgpyexecdir@ +pkgpythondir = @pkgpythondir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pyexecdir = @pyexecdir@ +pythondir = @pythondir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +iconsetdir = $(pkgdatadir)/data/iconsets +iconset_DATA = +ICONSET_DIRS = **/{16x16,32x32,48x48} \ + transports/**/{16x16,32x32,48x48} + +ICONSET_FILES = **/{16x16,32x32,48x48}/{*.gif,*.png} \ + transports/**/{16x16,32x32,48x48}/{*.gif,*.png} + +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu data/iconsets/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu data/iconsets/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: +install-iconsetDATA: $(iconset_DATA) + @$(NORMAL_INSTALL) + test -z "$(iconsetdir)" || $(mkdir_p) "$(DESTDIR)$(iconsetdir)" + @list='$(iconset_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(iconsetDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(iconsetdir)/$$f'"; \ + $(iconsetDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(iconsetdir)/$$f"; \ + done + +uninstall-iconsetDATA: + @$(NORMAL_UNINSTALL) + @list='$(iconset_DATA)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(iconsetdir)/$$f'"; \ + rm -f "$(DESTDIR)$(iconsetdir)/$$f"; \ + done +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$(top_distdir)" distdir="$(distdir)" \ + dist-hook +check-am: all-am +check: check-am +all-am: Makefile $(DATA) +installdirs: + for dir in "$(DESTDIR)$(iconsetdir)"; do \ + test -z "$$dir" || $(mkdir_p) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-libtool + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: install-data-local install-iconsetDATA + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-iconsetDATA uninstall-info-am + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + dist-hook distclean distclean-generic distclean-libtool \ + distdir dvi dvi-am html html-am info info-am install \ + install-am install-data install-data-am install-data-local \ + install-exec install-exec-am install-iconsetDATA install-info \ + install-info-am install-man install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ + uninstall-iconsetDATA uninstall-info-am + + +install-data-local: + @for d in $(ICONSET_DIRS);do \ + if test -d $$d;then \ + echo " $(mkinstalldirs) $(pkgdatadir)/data/iconsets/$$d"; \ + $(mkinstalldirs) $(pkgdatadir)/data/iconsets/$$d || exit 1; \ + fi; \ + done + for f in $(ICONSET_FILES);do \ + if test -f $$f; then \ + echo " $(INSTALL_DATA) $$f $(pkgdatadir)/data/iconsets/$$f"; \ + $(INSTALL_DATA) $$f $(pkgdatadir)/data/iconsets/$$f || exit 1; \ + fi; \ + done; + +dist-hook: + @for d in $(ICONSET_DIRS);do \ + if test -d $$d;then \ + echo " $(mkdir_p) $(distdir)/$$d"; \ + $(mkdir_p) $(distdir)/$$d || exit 1; \ + fi; \ + done + for f in $(ICONSET_FILES);do \ + if test -f $$f; then \ + echo " cp -pR $(srcdir)/$$f $(distdir)/$$f"; \ + cp -pR $(srcdir)/$$f $(distdir)/$$f || exit 1; \ + fi; \ + done; +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/data/iconsets/goojim/16x16/muc_active.png b/data/iconsets/goojim/16x16/muc_active.png new file mode 100644 index 0000000000000000000000000000000000000000..5984ee8e80abafb95b0e598476f72bae07178e7f GIT binary patch literal 852 zcmV-a1FQUrP)z|8N{07QzS{whHK90vN|vYi*so}3;FHBXHX($U%Er@bD}2`+9Ehe9WoHirMFzLVH_# zG!ad;5JH|5Xztv<=df5xVirpY;d^!x#oI;H&?9pDoQJHgbLCyGTE$wnh%k(iFpQD7 zTy;+p37#nsEVEb1@i zpb&st+X^GogZn-}X7?f=597gSGu(sSXkM`qBsC6I;!wGZMK-qXi{0VK6aYUF{kIM%iUJJ)-0>K0ZpeJRyJY&^S0gtZ zWlf1_NmWov=OhGp4&hV;v2-9ycKPKfT)$q_T6X#<(F)Pskh>b1Fl~$DJmpL3smNhHXzeJW0 e@@s$=1nLLl22;pmHDJO30000P)kknsFG%#eu9QZaI6m#TXcphZ1BUgdp>fm%>$2>(W0eMJOS~KPiSZM51op zv_Of1#KWRU(DD#OhsGd^VwZ>#Mpzg_Hqhz5dtR4r9vmC&fe*hIemvjz`~3NFIR7&M z)DZOqL-2{ePu}0(e>h8FFc?0mRH{@Y66ePLt|rOa%X4frNiNH_Vo13c6WDsB9X`|R;)r`Yip}Pp-@~al}fa>w!-Cd zVP<9qB$%b|4|=`+b5~avgwvSw6uhSg9DtNo?>ch z3No4OTXS=BK_n7^&*vAR@}jr5xBRle-rimV9oMXFpU;PAGzzi`zu%8gD1?QD1#E0= zU~X;>0)YThsr2gj_?RgRB$G)-B9WxnL1;7@m`o-N3=F_(wSw-7oSmIvZEX#0ZEaAi z)$h*F&uhy97Z(={)yQ_9wTI#1VNk=++1Xhvi7kg*f@;Ua!~~p9=i5S|@T-yY^YgE% zQC|qKlmuvuSXo(t&1S>s=qN@;MxfPd(bv}(KRG#hTyCVt<8e@8;rHa;-riy_5{U#B z7Z))(Iay4;Bk%QkP5FHOrvRymj7H-!C0&v26wBb?;Meu_b%euV(0-NwUSe!)ESyfK z@0V7XLu08uIyz$F@i?=+z5T@PcKfK-?{s2(d>lHRu0ntW-)AzJN7dd0XLED&DNSQ} zXlRIabxqvdk?Qa7|7bRw-_Qng|MajpWU*# - - - - + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - - - - + \ No newline at end of file diff --git a/data/pixmaps/Makefile.am b/data/pixmaps/Makefile.am new file mode 100644 index 000000000..1243beba6 --- /dev/null +++ b/data/pixmaps/Makefile.am @@ -0,0 +1,6 @@ +pixmapsdir = $(pkgdatadir)/data/pixmaps +pixmaps_DATA = *.png \ + gajim.ico \ + events/*.png \ + agents/*.png +EXTRA_DIST = $(pixmaps_DATA) diff --git a/data/pixmaps/Makefile.in b/data/pixmaps/Makefile.in new file mode 100644 index 000000000..ccb40a98b --- /dev/null +++ b/data/pixmaps/Makefile.in @@ -0,0 +1,419 @@ +# Makefile.in generated by automake 1.9.6 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = ../.. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = data/pixmaps +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/glib-gettext.m4 \ + $(top_srcdir)/m4/python.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__installdirs = "$(DESTDIR)$(pixmapsdir)" +pixmapsDATA_INSTALL = $(INSTALL_DATA) +DATA = $(pixmaps_DATA) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALL_LINGUAS = @ALL_LINGUAS@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CATALOGS = @CATALOGS@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DBUS_CFLAGS = @DBUS_CFLAGS@ +DBUS_LIBS = @DBUS_LIBS@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GMOFILES = @GMOFILES@ +GMSGFMT = @GMSGFMT@ +GREP = @GREP@ +GTKSPELL_CFLAGS = @GTKSPELL_CFLAGS@ +GTKSPELL_LIBS = @GTKSPELL_LIBS@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLLIBS = @INTLLIBS@ +INTLTOOL_CAVES_RULE = @INTLTOOL_CAVES_RULE@ +INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@ +INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@ +INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ +INTLTOOL_ICONV = @INTLTOOL_ICONV@ +INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@ +INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@ +INTLTOOL_MERGE = @INTLTOOL_MERGE@ +INTLTOOL_MSGFMT = @INTLTOOL_MSGFMT@ +INTLTOOL_MSGMERGE = @INTLTOOL_MSGMERGE@ +INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@ +INTLTOOL_PERL = @INTLTOOL_PERL@ +INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@ +INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@ +INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@ +INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@ +INTLTOOL_SERVICE_RULE = @INTLTOOL_SERVICE_RULE@ +INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@ +INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@ +INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@ +INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@ +INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ +INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@ +INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@ +INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@ +INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ +MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ +MAKEINFO = @MAKEINFO@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +POFILES = @POFILES@ +POSUB = @POSUB@ +PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ +PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ +PYGTK_CFLAGS = @PYGTK_CFLAGS@ +PYGTK_DEFS = @PYGTK_DEFS@ +PYGTK_LIBS = @PYGTK_LIBS@ +PYTHON = @PYTHON@ +PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ +PYTHON_INCLUDES = @PYTHON_INCLUDES@ +PYTHON_PLATFORM = @PYTHON_PLATFORM@ +PYTHON_PREFIX = @PYTHON_PREFIX@ +PYTHON_VERSION = @PYTHON_VERSION@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +XMKMF = @XMKMF@ +XSCRNSAVER_CFLAGS = @XSCRNSAVER_CFLAGS@ +XSCRNSAVER_LIBS = @XSCRNSAVER_LIBS@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgpyexecdir = @pkgpyexecdir@ +pkgpythondir = @pkgpythondir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pyexecdir = @pyexecdir@ +pythondir = @pythondir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +pixmapsdir = $(pkgdatadir)/data/pixmaps +pixmaps_DATA = *.png \ + gajim.ico \ + events/*.png \ + agents/*.png + +EXTRA_DIST = $(pixmaps_DATA) +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu data/pixmaps/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu data/pixmaps/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: +install-pixmapsDATA: $(pixmaps_DATA) + @$(NORMAL_INSTALL) + test -z "$(pixmapsdir)" || $(mkdir_p) "$(DESTDIR)$(pixmapsdir)" + @list='$(pixmaps_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(pixmapsDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pixmapsdir)/$$f'"; \ + $(pixmapsDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pixmapsdir)/$$f"; \ + done + +uninstall-pixmapsDATA: + @$(NORMAL_UNINSTALL) + @list='$(pixmaps_DATA)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(pixmapsdir)/$$f'"; \ + rm -f "$(DESTDIR)$(pixmapsdir)/$$f"; \ + done +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + $(mkdir_p) $(distdir)/agents $(distdir)/events + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(DATA) +installdirs: + for dir in "$(DESTDIR)$(pixmapsdir)"; do \ + test -z "$$dir" || $(mkdir_p) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-libtool + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: install-pixmapsDATA + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-info-am uninstall-pixmapsDATA + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-exec install-exec-am \ + install-info install-info-am install-man install-pixmapsDATA \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + uninstall uninstall-am uninstall-info-am uninstall-pixmapsDATA + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/depcomp b/depcomp new file mode 100755 index 000000000..04701da53 --- /dev/null +++ b/depcomp @@ -0,0 +1,530 @@ +#! /bin/sh +# depcomp - compile a program generating dependencies as side-effects + +scriptversion=2005-07-09.11 + +# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +# 02110-1301, USA. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Originally written by Alexandre Oliva . + +case $1 in + '') + echo "$0: No command. Try \`$0 --help' for more information." 1>&2 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: depcomp [--help] [--version] PROGRAM [ARGS] + +Run PROGRAMS ARGS to compile a file, generating dependencies +as side-effects. + +Environment variables: + depmode Dependency tracking mode. + source Source file read by `PROGRAMS ARGS'. + object Object file output by `PROGRAMS ARGS'. + DEPDIR directory where to store dependencies. + depfile Dependency file to output. + tmpdepfile Temporary file to use when outputing dependencies. + libtool Whether libtool is used (yes/no). + +Report bugs to . +EOF + exit $? + ;; + -v | --v*) + echo "depcomp $scriptversion" + exit $? + ;; +esac + +if test -z "$depmode" || test -z "$source" || test -z "$object"; then + echo "depcomp: Variables source, object and depmode must be set" 1>&2 + exit 1 +fi + +# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. +depfile=${depfile-`echo "$object" | + sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} +tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} + +rm -f "$tmpdepfile" + +# Some modes work just like other modes, but use different flags. We +# parameterize here, but still list the modes in the big case below, +# to make depend.m4 easier to write. Note that we *cannot* use a case +# here, because this file can only contain one case statement. +if test "$depmode" = hp; then + # HP compiler uses -M and no extra arg. + gccflag=-M + depmode=gcc +fi + +if test "$depmode" = dashXmstdout; then + # This is just like dashmstdout with a different argument. + dashmflag=-xM + depmode=dashmstdout +fi + +case "$depmode" in +gcc3) +## gcc 3 implements dependency tracking that does exactly what +## we want. Yay! Note: for some reason libtool 1.4 doesn't like +## it if -MD -MP comes after the -MF stuff. Hmm. + "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + mv "$tmpdepfile" "$depfile" + ;; + +gcc) +## There are various ways to get dependency output from gcc. Here's +## why we pick this rather obscure method: +## - Don't want to use -MD because we'd like the dependencies to end +## up in a subdir. Having to rename by hand is ugly. +## (We might end up doing this anyway to support other compilers.) +## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like +## -MM, not -M (despite what the docs say). +## - Using -M directly means running the compiler twice (even worse +## than renaming). + if test -z "$gccflag"; then + gccflag=-MD, + fi + "$@" -Wp,"$gccflag$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz +## The second -e expression handles DOS-style file names with drive letters. + sed -e 's/^[^:]*: / /' \ + -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" +## This next piece of magic avoids the `deleted header file' problem. +## The problem is that when a header file which appears in a .P file +## is deleted, the dependency causes make to die (because there is +## typically no way to rebuild the header). We avoid this by adding +## dummy dependencies for each header file. Too bad gcc doesn't do +## this for us directly. + tr ' ' ' +' < "$tmpdepfile" | +## Some versions of gcc put a space before the `:'. On the theory +## that the space means something, we add a space to the output as +## well. +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +sgi) + if test "$libtool" = yes; then + "$@" "-Wp,-MDupdate,$tmpdepfile" + else + "$@" -MDupdate "$tmpdepfile" + fi + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + + if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files + echo "$object : \\" > "$depfile" + + # Clip off the initial element (the dependent). Don't try to be + # clever and replace this with sed code, as IRIX sed won't handle + # lines with more than a fixed number of characters (4096 in + # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; + # the IRIX cc adds comments like `#:fec' to the end of the + # dependency line. + tr ' ' ' +' < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ + tr ' +' ' ' >> $depfile + echo >> $depfile + + # The second pass generates a dummy entry for each header file. + tr ' ' ' +' < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ + >> $depfile + else + # The sourcefile does not contain any dependencies, so just + # store a dummy comment line, to avoid errors with the Makefile + # "include basename.Plo" scheme. + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +aix) + # The C for AIX Compiler uses -M and outputs the dependencies + # in a .u file. In older versions, this file always lives in the + # current directory. Also, the AIX compiler puts `$object:' at the + # start of each line; $object doesn't have directory information. + # Version 6 uses the directory in both cases. + stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'` + tmpdepfile="$stripped.u" + if test "$libtool" = yes; then + "$@" -Wc,-M + else + "$@" -M + fi + stat=$? + + if test -f "$tmpdepfile"; then : + else + stripped=`echo "$stripped" | sed 's,^.*/,,'` + tmpdepfile="$stripped.u" + fi + + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + + if test -f "$tmpdepfile"; then + outname="$stripped.o" + # Each line is of the form `foo.o: dependent.h'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile" + sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" + else + # The sourcefile does not contain any dependencies, so just + # store a dummy comment line, to avoid errors with the Makefile + # "include basename.Plo" scheme. + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +icc) + # Intel's C compiler understands `-MD -MF file'. However on + # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c + # ICC 7.0 will fill foo.d with something like + # foo.o: sub/foo.c + # foo.o: sub/foo.h + # which is wrong. We want: + # sub/foo.o: sub/foo.c + # sub/foo.o: sub/foo.h + # sub/foo.c: + # sub/foo.h: + # ICC 7.1 will output + # foo.o: sub/foo.c sub/foo.h + # and will wrap long lines using \ : + # foo.o: sub/foo.c ... \ + # sub/foo.h ... \ + # ... + + "$@" -MD -MF "$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + # Each line is of the form `foo.o: dependent.h', + # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process this invocation + # correctly. Breaking it into two sed invocations is a workaround. + sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | + sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +tru64) + # The Tru64 compiler uses -MD to generate dependencies as a side + # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. + # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put + # dependencies in `foo.d' instead, so we check for that too. + # Subdirectories are respected. + dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` + test "x$dir" = "x$object" && dir= + base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` + + if test "$libtool" = yes; then + # With Tru64 cc, shared objects can also be used to make a + # static library. This mecanism is used in libtool 1.4 series to + # handle both shared and static libraries in a single compilation. + # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. + # + # With libtool 1.5 this exception was removed, and libtool now + # generates 2 separate objects for the 2 libraries. These two + # compilations output dependencies in in $dir.libs/$base.o.d and + # in $dir$base.o.d. We have to check for both files, because + # one of the two compilations can be disabled. We should prefer + # $dir$base.o.d over $dir.libs/$base.o.d because the latter is + # automatically cleaned when .libs/ is deleted, while ignoring + # the former would cause a distcleancheck panic. + tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 + tmpdepfile2=$dir$base.o.d # libtool 1.5 + tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 + tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 + "$@" -Wc,-MD + else + tmpdepfile1=$dir$base.o.d + tmpdepfile2=$dir$base.d + tmpdepfile3=$dir$base.d + tmpdepfile4=$dir$base.d + "$@" -MD + fi + + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" + do + test -f "$tmpdepfile" && break + done + if test -f "$tmpdepfile"; then + sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" + # That's a tab and a space in the []. + sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" + else + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +#nosideeffect) + # This comment above is used by automake to tell side-effect + # dependency tracking mechanisms from slower ones. + +dashmstdout) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout, regardless of -o. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test $1 != '--mode=compile'; do + shift + done + shift + fi + + # Remove `-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + test -z "$dashmflag" && dashmflag=-M + # Require at least two characters before searching for `:' + # in the target name. This is to cope with DOS-style filenames: + # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. + "$@" $dashmflag | + sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + tr ' ' ' +' < "$tmpdepfile" | \ +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +dashXmstdout) + # This case only exists to satisfy depend.m4. It is never actually + # run, as this mode is specially recognized in the preamble. + exit 1 + ;; + +makedepend) + "$@" || exit $? + # Remove any Libtool call + if test "$libtool" = yes; then + while test $1 != '--mode=compile'; do + shift + done + shift + fi + # X makedepend + shift + cleared=no + for arg in "$@"; do + case $cleared in + no) + set ""; shift + cleared=yes ;; + esac + case "$arg" in + -D*|-I*) + set fnord "$@" "$arg"; shift ;; + # Strip any option that makedepend may not understand. Remove + # the object too, otherwise makedepend will parse it as a source file. + -*|$object) + ;; + *) + set fnord "$@" "$arg"; shift ;; + esac + done + obj_suffix="`echo $object | sed 's/^.*\././'`" + touch "$tmpdepfile" + ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + sed '1,2d' "$tmpdepfile" | tr ' ' ' +' | \ +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" "$tmpdepfile".bak + ;; + +cpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test $1 != '--mode=compile'; do + shift + done + shift + fi + + # Remove `-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + "$@" -E | + sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ + -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | + sed '$ s: \\$::' > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + cat < "$tmpdepfile" >> "$depfile" + sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvisualcpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout, regardless of -o, + # because we must use -o when running libtool. + "$@" || exit $? + IFS=" " + for arg + do + case "$arg" in + "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") + set fnord "$@" + shift + shift + ;; + *) + set fnord "$@" "$arg" + shift + shift + ;; + esac + done + "$@" -E | + sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" + echo " " >> "$depfile" + . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +none) + exec "$@" + ;; + +*) + echo "Unknown depmode $depmode" 1>&2 + exit 1 + ;; +esac + +exit 0 + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-end: "$" +# End: diff --git a/install-sh b/install-sh new file mode 100755 index 000000000..4d4a9519e --- /dev/null +++ b/install-sh @@ -0,0 +1,323 @@ +#!/bin/sh +# install - install a program, script, or datafile + +scriptversion=2005-05-14.22 + +# This originates from X11R5 (mit/util/scripts/install.sh), which was +# later released in X11R6 (xc/config/util/install.sh) with the +# following copyright and license. +# +# Copyright (C) 1994 X Consortium +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to +# deal in the Software without restriction, including without limitation the +# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +# sell copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- +# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# +# Except as contained in this notice, the name of the X Consortium shall not +# be used in advertising or otherwise to promote the sale, use or other deal- +# ings in this Software without prior written authorization from the X Consor- +# tium. +# +# +# FSF changes to this file are in the public domain. +# +# Calling this script install-sh is preferred over install.sh, to prevent +# `make' implicit rules from creating a file called install from it +# when there is no Makefile. +# +# This script is compatible with the BSD install script, but was written +# from scratch. It can only install one file at a time, a restriction +# shared with many OS's install programs. + +# set DOITPROG to echo to test this script + +# Don't use :- since 4.3BSD and earlier shells don't like it. +doit="${DOITPROG-}" + +# put in absolute paths if you don't have them in your path; or use env. vars. + +mvprog="${MVPROG-mv}" +cpprog="${CPPROG-cp}" +chmodprog="${CHMODPROG-chmod}" +chownprog="${CHOWNPROG-chown}" +chgrpprog="${CHGRPPROG-chgrp}" +stripprog="${STRIPPROG-strip}" +rmprog="${RMPROG-rm}" +mkdirprog="${MKDIRPROG-mkdir}" + +chmodcmd="$chmodprog 0755" +chowncmd= +chgrpcmd= +stripcmd= +rmcmd="$rmprog -f" +mvcmd="$mvprog" +src= +dst= +dir_arg= +dstarg= +no_target_directory= + +usage="Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE + or: $0 [OPTION]... SRCFILES... DIRECTORY + or: $0 [OPTION]... -t DIRECTORY SRCFILES... + or: $0 [OPTION]... -d DIRECTORIES... + +In the 1st form, copy SRCFILE to DSTFILE. +In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. +In the 4th, create DIRECTORIES. + +Options: +-c (ignored) +-d create directories instead of installing files. +-g GROUP $chgrpprog installed files to GROUP. +-m MODE $chmodprog installed files to MODE. +-o USER $chownprog installed files to USER. +-s $stripprog installed files. +-t DIRECTORY install into DIRECTORY. +-T report an error if DSTFILE is a directory. +--help display this help and exit. +--version display version info and exit. + +Environment variables override the default commands: + CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG +" + +while test -n "$1"; do + case $1 in + -c) shift + continue;; + + -d) dir_arg=true + shift + continue;; + + -g) chgrpcmd="$chgrpprog $2" + shift + shift + continue;; + + --help) echo "$usage"; exit $?;; + + -m) chmodcmd="$chmodprog $2" + shift + shift + continue;; + + -o) chowncmd="$chownprog $2" + shift + shift + continue;; + + -s) stripcmd=$stripprog + shift + continue;; + + -t) dstarg=$2 + shift + shift + continue;; + + -T) no_target_directory=true + shift + continue;; + + --version) echo "$0 $scriptversion"; exit $?;; + + *) # When -d is used, all remaining arguments are directories to create. + # When -t is used, the destination is already specified. + test -n "$dir_arg$dstarg" && break + # Otherwise, the last argument is the destination. Remove it from $@. + for arg + do + if test -n "$dstarg"; then + # $@ is not empty: it contains at least $arg. + set fnord "$@" "$dstarg" + shift # fnord + fi + shift # arg + dstarg=$arg + done + break;; + esac +done + +if test -z "$1"; then + if test -z "$dir_arg"; then + echo "$0: no input file specified." >&2 + exit 1 + fi + # It's OK to call `install-sh -d' without argument. + # This can happen when creating conditional directories. + exit 0 +fi + +for src +do + # Protect names starting with `-'. + case $src in + -*) src=./$src ;; + esac + + if test -n "$dir_arg"; then + dst=$src + src= + + if test -d "$dst"; then + mkdircmd=: + chmodcmd= + else + mkdircmd=$mkdirprog + fi + else + # Waiting for this to be detected by the "$cpprog $src $dsttmp" command + # might cause directories to be created, which would be especially bad + # if $src (and thus $dsttmp) contains '*'. + if test ! -f "$src" && test ! -d "$src"; then + echo "$0: $src does not exist." >&2 + exit 1 + fi + + if test -z "$dstarg"; then + echo "$0: no destination specified." >&2 + exit 1 + fi + + dst=$dstarg + # Protect names starting with `-'. + case $dst in + -*) dst=./$dst ;; + esac + + # If destination is a directory, append the input filename; won't work + # if double slashes aren't ignored. + if test -d "$dst"; then + if test -n "$no_target_directory"; then + echo "$0: $dstarg: Is a directory" >&2 + exit 1 + fi + dst=$dst/`basename "$src"` + fi + fi + + # This sed command emulates the dirname command. + dstdir=`echo "$dst" | sed -e 's,/*$,,;s,[^/]*$,,;s,/*$,,;s,^$,.,'` + + # Make sure that the destination directory exists. + + # Skip lots of stat calls in the usual case. + if test ! -d "$dstdir"; then + defaultIFS=' + ' + IFS="${IFS-$defaultIFS}" + + oIFS=$IFS + # Some sh's can't handle IFS=/ for some reason. + IFS='%' + set x `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'` + shift + IFS=$oIFS + + pathcomp= + + while test $# -ne 0 ; do + pathcomp=$pathcomp$1 + shift + if test ! -d "$pathcomp"; then + $mkdirprog "$pathcomp" + # mkdir can fail with a `File exist' error in case several + # install-sh are creating the directory concurrently. This + # is OK. + test -d "$pathcomp" || exit + fi + pathcomp=$pathcomp/ + done + fi + + if test -n "$dir_arg"; then + $doit $mkdircmd "$dst" \ + && { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \ + && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \ + && { test -z "$stripcmd" || $doit $stripcmd "$dst"; } \ + && { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; } + + else + dstfile=`basename "$dst"` + + # Make a couple of temp file names in the proper directory. + dsttmp=$dstdir/_inst.$$_ + rmtmp=$dstdir/_rm.$$_ + + # Trap to clean up those temp files at exit. + trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 + trap '(exit $?); exit' 1 2 13 15 + + # Copy the file name to the temp name. + $doit $cpprog "$src" "$dsttmp" && + + # and set any options; do chmod last to preserve setuid bits. + # + # If any of these fail, we abort the whole thing. If we want to + # ignore errors from any of these, just make sure not to ignore + # errors from the above "$doit $cpprog $src $dsttmp" command. + # + { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \ + && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \ + && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \ + && { test -z "$chmodcmd" || $doit $chmodcmd "$dsttmp"; } && + + # Now rename the file to the real destination. + { $doit $mvcmd -f "$dsttmp" "$dstdir/$dstfile" 2>/dev/null \ + || { + # The rename failed, perhaps because mv can't rename something else + # to itself, or perhaps because mv is so ancient that it does not + # support -f. + + # Now remove or move aside any old file at destination location. + # We try this two ways since rm can't unlink itself on some + # systems and the destination file might be busy for other + # reasons. In this case, the final cleanup might fail but the new + # file should still install successfully. + { + if test -f "$dstdir/$dstfile"; then + $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null \ + || $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \ + || { + echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2 + (exit 1); exit 1 + } + else + : + fi + } && + + # Now rename the file to the real destination. + $doit $mvcmd "$dsttmp" "$dstdir/$dstfile" + } + } + fi || { (exit 1); exit 1; } +done + +# The final little trick to "correctly" pass the exit status to the exit trap. +{ + (exit 0); exit 0 +} + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-end: "$" +# End: diff --git a/intltool-extract.in b/intltool-extract.in new file mode 120000 index 000000000..340fc8d6e --- /dev/null +++ b/intltool-extract.in @@ -0,0 +1 @@ +/usr/share/intltool/intltool-extract.in \ No newline at end of file diff --git a/intltool-merge.in b/intltool-merge.in new file mode 120000 index 000000000..2238bbd3b --- /dev/null +++ b/intltool-merge.in @@ -0,0 +1 @@ +/usr/share/intltool/intltool-merge.in \ No newline at end of file diff --git a/intltool-update.in b/intltool-update.in new file mode 120000 index 000000000..0b1800fdd --- /dev/null +++ b/intltool-update.in @@ -0,0 +1 @@ +/usr/share/intltool/intltool-update.in \ No newline at end of file diff --git a/ltmain.sh b/ltmain.sh new file mode 100644 index 000000000..8f7a6ac10 --- /dev/null +++ b/ltmain.sh @@ -0,0 +1,6971 @@ +# ltmain.sh - Provide generalized library-building support services. +# NOTE: Changing this file will not affect anything until you rerun configure. +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005 +# Free Software Foundation, Inc. +# Originally by Gordon Matzigkeit , 1996 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +basename="s,^.*/,,g" + +# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh +# is ksh but when the shell is invoked as "sh" and the current value of +# the _XPG environment variable is not equal to 1 (one), the special +# positional parameter $0, within a function call, is the name of the +# function. +progpath="$0" + +# define SED for historic ltconfig's generated by Libtool 1.3 +test -z "$SED" && SED=sed + +# The name of this program: +progname=`echo "$progpath" | $SED $basename` +modename="$progname" + +# Global variables: +EXIT_SUCCESS=0 +EXIT_FAILURE=1 + +PROGRAM=ltmain.sh +PACKAGE=libtool +VERSION=1.5.22 +TIMESTAMP=" (1.1220.2.365 2005/12/18 22:14:06)" + +# See if we are running on zsh, and set the options which allow our +# commands through without removal of \ escapes. +if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST +fi +# Same for EGREP, and just to be sure, do LTCC as well +if test "X$EGREP" = X ; then + EGREP=egrep +fi +if test "X$LTCC" = X ; then + LTCC=${CC-gcc} +fi + +# Check that we have a working $echo. +if test "X$1" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift +elif test "X$1" = X--fallback-echo; then + # Avoid inline document here, it may be left over + : +elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then + # Yippee, $echo works! + : +else + # Restart under the correct shell, and then maybe $echo will work. + exec $SHELL "$progpath" --no-reexec ${1+"$@"} +fi + +if test "X$1" = X--fallback-echo; then + # used as fallback echo + shift + cat <&2 + $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 + exit $EXIT_FAILURE +fi + +# Global variables. +mode=$default_mode +nonopt= +prev= +prevopt= +run= +show="$echo" +show_help= +execute_dlfiles= +duplicate_deps=no +preserve_args= +lo2o="s/\\.lo\$/.${objext}/" +o2lo="s/\\.${objext}\$/.lo/" + +if test -z "$max_cmd_len"; then + i=0 + testring="ABCD" + new_result= + + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + while (test "X"`$SHELL $0 --fallback-echo "X$testring" 2>/dev/null` \ + = "XX$testring") >/dev/null 2>&1 && + new_result=`expr "X$testring" : ".*" 2>&1` && + max_cmd_len="$new_result" && + test "$i" != 17 # 1/2 MB should be enough + do + i=`expr $i + 1` + testring="$testring$testring" + done + testring= + # Add a significant safety factor because C++ compilers can tack on massive + # amounts of additional arguments before passing them to the linker. + # It appears as though 1/2 is a usable value. + max_cmd_len=`expr $max_cmd_len \/ 2` +fi + +##################################### +# Shell function definitions: +# This seems to be the best place for them + +# func_mktempdir [string] +# Make a temporary directory that won't clash with other running +# libtool processes, and avoids race conditions if possible. If +# given, STRING is the basename for that directory. +func_mktempdir () +{ + my_template="${TMPDIR-/tmp}/${1-$progname}" + + if test "$run" = ":"; then + # Return a directory name, but don't create it in dry-run mode + my_tmpdir="${my_template}-$$" + else + + # If mktemp works, use that first and foremost + my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` + + if test ! -d "$my_tmpdir"; then + # Failing that, at least try and use $RANDOM to avoid a race + my_tmpdir="${my_template}-${RANDOM-0}$$" + + save_mktempdir_umask=`umask` + umask 0077 + $mkdir "$my_tmpdir" + umask $save_mktempdir_umask + fi + + # If we're not in dry-run mode, bomb out on failure + test -d "$my_tmpdir" || { + $echo "cannot create temporary directory \`$my_tmpdir'" 1>&2 + exit $EXIT_FAILURE + } + fi + + $echo "X$my_tmpdir" | $Xsed +} + + +# func_win32_libid arg +# return the library type of file 'arg' +# +# Need a lot of goo to handle *both* DLLs and import libs +# Has to be a shell function in order to 'eat' the argument +# that is supplied when $file_magic_command is called. +func_win32_libid () +{ + win32_libid_type="unknown" + win32_fileres=`file -L $1 2>/dev/null` + case $win32_fileres in + *ar\ archive\ import\ library*) # definitely import + win32_libid_type="x86 archive import" + ;; + *ar\ archive*) # could be an import, or static + if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \ + $EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then + win32_nmres=`eval $NM -f posix -A $1 | \ + $SED -n -e '1,100{/ I /{s,.*,import,;p;q;};}'` + case $win32_nmres in + import*) win32_libid_type="x86 archive import";; + *) win32_libid_type="x86 archive static";; + esac + fi + ;; + *DLL*) + win32_libid_type="x86 DLL" + ;; + *executable*) # but shell scripts are "executable" too... + case $win32_fileres in + *MS\ Windows\ PE\ Intel*) + win32_libid_type="x86 DLL" + ;; + esac + ;; + esac + $echo $win32_libid_type +} + + +# func_infer_tag arg +# Infer tagged configuration to use if any are available and +# if one wasn't chosen via the "--tag" command line option. +# Only attempt this if the compiler in the base compile +# command doesn't match the default compiler. +# arg is usually of the form 'gcc ...' +func_infer_tag () +{ + if test -n "$available_tags" && test -z "$tagname"; then + CC_quoted= + for arg in $CC; do + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + CC_quoted="$CC_quoted $arg" + done + case $@ in + # Blanks in the command may have been stripped by the calling shell, + # but not from the CC environment variable when configure was run. + " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) ;; + # Blanks at the start of $base_compile will cause this to fail + # if we don't check for them as well. + *) + for z in $available_tags; do + if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then + # Evaluate the configuration. + eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" + CC_quoted= + for arg in $CC; do + # Double-quote args containing other shell metacharacters. + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + CC_quoted="$CC_quoted $arg" + done + # user sometimes does CC=-gcc so we need to match that to 'gcc' + trimedcc=`echo ${CC} | $SED -e "s/${host}-//g"` + # and sometimes libtool has CC=-gcc but user does CC=gcc + extendcc=${host}-${CC} + # and sometimes libtool has CC=-gcc but user has CC=-gcc + # (Gentoo-specific hack because we always export $CHOST) + mungedcc=${CHOST-${host}}-${trimedcc} + case "$@ " in + "cc "* | " cc "* | "${host}-cc "* | " ${host}-cc "*|\ + "gcc "* | " gcc "* | "${host}-gcc "* | " ${host}-gcc "*) + tagname=CC + break ;; + "$trimedcc "* | " $trimedcc "* | "`$echo $trimedcc` "* | " `$echo $trimedcc` "*|\ + "$extendcc "* | " $extendcc "* | "`$echo $extendcc` "* | " `$echo $extendcc` "*|\ + "$mungedcc "* | " $mungedcc "* | "`$echo $mungedcc` "* | " `$echo $mungedcc` "*|\ + " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) + # The compiler in the base compile command matches + # the one in the tagged configuration. + # Assume this is the tagged configuration we want. + tagname=$z + break + ;; + esac + fi + done + # If $tagname still isn't set, then no tagged configuration + # was found and let the user know that the "--tag" command + # line option must be used. + if test -z "$tagname"; then + $echo "$modename: unable to infer tagged configuration" + $echo "$modename: specify a tag with \`--tag'" 1>&2 + exit $EXIT_FAILURE +# else +# $echo "$modename: using $tagname tagged configuration" + fi + ;; + esac + fi +} + + +# func_extract_an_archive dir oldlib +func_extract_an_archive () +{ + f_ex_an_ar_dir="$1"; shift + f_ex_an_ar_oldlib="$1" + + $show "(cd $f_ex_an_ar_dir && $AR x $f_ex_an_ar_oldlib)" + $run eval "(cd \$f_ex_an_ar_dir && $AR x \$f_ex_an_ar_oldlib)" || exit $? + if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then + : + else + $echo "$modename: ERROR: object name conflicts: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 1>&2 + exit $EXIT_FAILURE + fi +} + +# func_extract_archives gentop oldlib ... +func_extract_archives () +{ + my_gentop="$1"; shift + my_oldlibs=${1+"$@"} + my_oldobjs="" + my_xlib="" + my_xabs="" + my_xdir="" + my_status="" + + $show "${rm}r $my_gentop" + $run ${rm}r "$my_gentop" + $show "$mkdir $my_gentop" + $run $mkdir "$my_gentop" + my_status=$? + if test "$my_status" -ne 0 && test ! -d "$my_gentop"; then + exit $my_status + fi + + for my_xlib in $my_oldlibs; do + # Extract the objects. + case $my_xlib in + [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; + *) my_xabs=`pwd`"/$my_xlib" ;; + esac + my_xlib=`$echo "X$my_xlib" | $Xsed -e 's%^.*/%%'` + my_xdir="$my_gentop/$my_xlib" + + $show "${rm}r $my_xdir" + $run ${rm}r "$my_xdir" + $show "$mkdir $my_xdir" + $run $mkdir "$my_xdir" + exit_status=$? + if test "$exit_status" -ne 0 && test ! -d "$my_xdir"; then + exit $exit_status + fi + case $host in + *-darwin*) + $show "Extracting $my_xabs" + # Do not bother doing anything if just a dry run + if test -z "$run"; then + darwin_orig_dir=`pwd` + cd $my_xdir || exit $? + darwin_archive=$my_xabs + darwin_curdir=`pwd` + darwin_base_archive=`$echo "X$darwin_archive" | $Xsed -e 's%^.*/%%'` + darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $EGREP Architectures 2>/dev/null` + if test -n "$darwin_arches"; then + darwin_arches=`echo "$darwin_arches" | $SED -e 's/.*are://'` + darwin_arch= + $show "$darwin_base_archive has multiple architectures $darwin_arches" + for darwin_arch in $darwin_arches ; do + mkdir -p "unfat-$$/${darwin_base_archive}-${darwin_arch}" + lipo -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" + cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" + func_extract_an_archive "`pwd`" "${darwin_base_archive}" + cd "$darwin_curdir" + $rm "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" + done # $darwin_arches + ## Okay now we have a bunch of thin objects, gotta fatten them up :) + darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print| xargs basename | sort -u | $NL2SP` + darwin_file= + darwin_files= + for darwin_file in $darwin_filelist; do + darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP` + lipo -create -output "$darwin_file" $darwin_files + done # $darwin_filelist + ${rm}r unfat-$$ + cd "$darwin_orig_dir" + else + cd "$darwin_orig_dir" + func_extract_an_archive "$my_xdir" "$my_xabs" + fi # $darwin_arches + fi # $run + ;; + *) + func_extract_an_archive "$my_xdir" "$my_xabs" + ;; + esac + my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` + done + func_extract_archives_result="$my_oldobjs" +} +# End of Shell function definitions +##################################### + +# Darwin sucks +eval std_shrext=\"$shrext_cmds\" + +disable_libs=no + +# Parse our command line options once, thoroughly. +while test "$#" -gt 0 +do + arg="$1" + shift + + case $arg in + -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;; + *) optarg= ;; + esac + + # If the previous option needs an argument, assign it. + if test -n "$prev"; then + case $prev in + execute_dlfiles) + execute_dlfiles="$execute_dlfiles $arg" + ;; + tag) + tagname="$arg" + preserve_args="${preserve_args}=$arg" + + # Check whether tagname contains only valid characters + case $tagname in + *[!-_A-Za-z0-9,/]*) + $echo "$progname: invalid tag name: $tagname" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + case $tagname in + CC) + # Don't test for the "default" C tag, as we know, it's there, but + # not specially marked. + ;; + *) + if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$progpath" > /dev/null; then + taglist="$taglist $tagname" + # Evaluate the configuration. + eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $progpath`" + else + $echo "$progname: ignoring unknown tag $tagname" 1>&2 + fi + ;; + esac + ;; + *) + eval "$prev=\$arg" + ;; + esac + + prev= + prevopt= + continue + fi + + # Have we seen a non-optional argument yet? + case $arg in + --help) + show_help=yes + ;; + + --version) + $echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP" + $echo + $echo "Copyright (C) 2005 Free Software Foundation, Inc." + $echo "This is free software; see the source for copying conditions. There is NO" + $echo "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + exit $? + ;; + + --config) + ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $progpath + # Now print the configurations for the tags. + for tagname in $taglist; do + ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$progpath" + done + exit $? + ;; + + --debug) + $echo "$progname: enabling shell trace mode" + set -x + preserve_args="$preserve_args $arg" + ;; + + --dry-run | -n) + run=: + ;; + + --features) + $echo "host: $host" + if test "$build_libtool_libs" = yes; then + $echo "enable shared libraries" + else + $echo "disable shared libraries" + fi + if test "$build_old_libs" = yes; then + $echo "enable static libraries" + else + $echo "disable static libraries" + fi + exit $? + ;; + + --finish) mode="finish" ;; + + --mode) prevopt="--mode" prev=mode ;; + --mode=*) mode="$optarg" ;; + + --preserve-dup-deps) duplicate_deps="yes" ;; + + --quiet | --silent) + show=: + preserve_args="$preserve_args $arg" + ;; + + --tag) + prevopt="--tag" + prev=tag + preserve_args="$preserve_args --tag" + ;; + --tag=*) + set tag "$optarg" ${1+"$@"} + shift + prev=tag + preserve_args="$preserve_args --tag" + ;; + + -dlopen) + prevopt="-dlopen" + prev=execute_dlfiles + ;; + + -*) + $echo "$modename: unrecognized option \`$arg'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + ;; + + *) + nonopt="$arg" + break + ;; + esac +done + +if test -n "$prevopt"; then + $echo "$modename: option \`$prevopt' requires an argument" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE +fi + +case $disable_libs in +no) + ;; +shared) + build_libtool_libs=no + build_old_libs=yes + ;; +static) + build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` + ;; +esac + +# If this variable is set in any of the actions, the command in it +# will be execed at the end. This prevents here-documents from being +# left over by shells. +exec_cmd= + +if test -z "$show_help"; then + + # Infer the operation mode. + if test -z "$mode"; then + $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2 + $echo "*** Future versions of Libtool will require --mode=MODE be specified." 1>&2 + case $nonopt in + *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*) + mode=link + for arg + do + case $arg in + -c) + mode=compile + break + ;; + esac + done + ;; + *db | *dbx | *strace | *truss) + mode=execute + ;; + *install*|cp|mv) + mode=install + ;; + *rm) + mode=uninstall + ;; + *) + # If we have no mode, but dlfiles were specified, then do execute mode. + test -n "$execute_dlfiles" && mode=execute + + # Just use the default operation mode. + if test -z "$mode"; then + if test -n "$nonopt"; then + $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2 + else + $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2 + fi + fi + ;; + esac + fi + + # Only execute mode is allowed to have -dlopen flags. + if test -n "$execute_dlfiles" && test "$mode" != execute; then + $echo "$modename: unrecognized option \`-dlopen'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Change the help message to a mode-specific one. + generic_help="$help" + help="Try \`$modename --help --mode=$mode' for more information." + + # These modes are in order of execution frequency so that they run quickly. + case $mode in + # libtool compile mode + compile) + modename="$modename: compile" + # Get the compilation command and the source file. + base_compile= + srcfile="$nonopt" # always keep a non-empty value in "srcfile" + suppress_opt=yes + suppress_output= + arg_mode=normal + libobj= + later= + + for arg + do + case $arg_mode in + arg ) + # do not "continue". Instead, add this to base_compile + lastarg="$arg" + arg_mode=normal + ;; + + target ) + libobj="$arg" + arg_mode=normal + continue + ;; + + normal ) + # Accept any command-line options. + case $arg in + -o) + if test -n "$libobj" ; then + $echo "$modename: you cannot specify \`-o' more than once" 1>&2 + exit $EXIT_FAILURE + fi + arg_mode=target + continue + ;; + + -static | -prefer-pic | -prefer-non-pic) + later="$later $arg" + continue + ;; + + -no-suppress) + suppress_opt=no + continue + ;; + + -Xcompiler) + arg_mode=arg # the next one goes into the "base_compile" arg list + continue # The current "srcfile" will either be retained or + ;; # replaced later. I would guess that would be a bug. + + -Wc,*) + args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"` + lastarg= + save_ifs="$IFS"; IFS=',' + for arg in $args; do + IFS="$save_ifs" + + # Double-quote args containing other shell metacharacters. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + lastarg="$lastarg $arg" + done + IFS="$save_ifs" + lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"` + + # Add the arguments to base_compile. + base_compile="$base_compile $lastarg" + continue + ;; + + * ) + # Accept the current argument as the source file. + # The previous "srcfile" becomes the current argument. + # + lastarg="$srcfile" + srcfile="$arg" + ;; + esac # case $arg + ;; + esac # case $arg_mode + + # Aesthetically quote the previous argument. + lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"` + + case $lastarg in + # Double-quote args containing other shell metacharacters. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, and some SunOS ksh mistreat backslash-escaping + # in scan sets (worked around with variable expansion), + # and furthermore cannot handle '|' '&' '(' ')' in scan sets + # at all, so we specify them separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + lastarg="\"$lastarg\"" + ;; + esac + + base_compile="$base_compile $lastarg" + done # for arg + + case $arg_mode in + arg) + $echo "$modename: you must specify an argument for -Xcompile" + exit $EXIT_FAILURE + ;; + target) + $echo "$modename: you must specify a target with \`-o'" 1>&2 + exit $EXIT_FAILURE + ;; + *) + # Get the name of the library object. + [ -z "$libobj" ] && libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'` + ;; + esac + + # Recognize several different file suffixes. + # If the user specifies -o file.o, it is replaced with file.lo + xform='[cCFSifmso]' + case $libobj in + *.ada) xform=ada ;; + *.adb) xform=adb ;; + *.ads) xform=ads ;; + *.asm) xform=asm ;; + *.c++) xform=c++ ;; + *.cc) xform=cc ;; + *.ii) xform=ii ;; + *.class) xform=class ;; + *.cpp) xform=cpp ;; + *.cxx) xform=cxx ;; + *.f90) xform=f90 ;; + *.for) xform=for ;; + *.java) xform=java ;; + esac + + libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"` + + case $libobj in + *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;; + *) + $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + func_infer_tag $base_compile + + for arg in $later; do + case $arg in + -static) + build_old_libs=yes + continue + ;; + + -prefer-pic) + pic_mode=yes + continue + ;; + + -prefer-non-pic) + pic_mode=no + continue + ;; + esac + done + + qlibobj=`$echo "X$libobj" | $Xsed -e "$sed_quote_subst"` + case $qlibobj in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + qlibobj="\"$qlibobj\"" ;; + esac + test "X$libobj" != "X$qlibobj" \ + && $echo "X$libobj" | grep '[]~#^*{};<>?"'"'"' &()|`$[]' \ + && $echo "$modename: libobj name \`$libobj' may not contain shell special characters." + objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` + xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$obj"; then + xdir= + else + xdir=$xdir/ + fi + lobj=${xdir}$objdir/$objname + + if test -z "$base_compile"; then + $echo "$modename: you must specify a compilation command" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Delete any leftover library objects. + if test "$build_old_libs" = yes; then + removelist="$obj $lobj $libobj ${libobj}T" + else + removelist="$lobj $libobj ${libobj}T" + fi + + $run $rm $removelist + trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 + + # On Cygwin there's no "real" PIC flag so we must build both object types + case $host_os in + cygwin* | mingw* | pw32* | os2*) + pic_mode=default + ;; + esac + if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then + # non-PIC code in shared libraries is not supported + pic_mode=default + fi + + # Calculate the filename of the output object if compiler does + # not support -o with -c + if test "$compiler_c_o" = no; then + output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} + lockfile="$output_obj.lock" + removelist="$removelist $output_obj $lockfile" + trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 + else + output_obj= + need_locks=no + lockfile= + fi + + # Lock this critical section if it is needed + # We use this script file to make the link, it avoids creating a new file + if test "$need_locks" = yes; then + until $run ln "$srcfile" "$lockfile" 2>/dev/null; do + $show "Waiting for $lockfile to be removed" + sleep 2 + done + elif test "$need_locks" = warn; then + if test -f "$lockfile"; then + $echo "\ +*** ERROR, $lockfile exists and contains: +`cat $lockfile 2>/dev/null` + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $run $rm $removelist + exit $EXIT_FAILURE + fi + $echo "$srcfile" > "$lockfile" + fi + + if test -n "$fix_srcfile_path"; then + eval srcfile=\"$fix_srcfile_path\" + fi + qsrcfile=`$echo "X$srcfile" | $Xsed -e "$sed_quote_subst"` + case $qsrcfile in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + qsrcfile="\"$qsrcfile\"" ;; + esac + + $run $rm "$libobj" "${libobj}T" + + # Create a libtool object file (analogous to a ".la" file), + # but don't create it if we're doing a dry run. + test -z "$run" && cat > ${libobj}T </dev/null`" != "X$srcfile"; then + $echo "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $run $rm $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed, then go on to compile the next one + if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then + $show "$mv $output_obj $lobj" + if $run $mv $output_obj $lobj; then : + else + error=$? + $run $rm $removelist + exit $error + fi + fi + + # Append the name of the PIC object to the libtool object file. + test -z "$run" && cat >> ${libobj}T <> ${libobj}T </dev/null`" != "X$srcfile"; then + $echo "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $run $rm $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed + if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then + $show "$mv $output_obj $obj" + if $run $mv $output_obj $obj; then : + else + error=$? + $run $rm $removelist + exit $error + fi + fi + + # Append the name of the non-PIC object the libtool object file. + # Only append if the libtool object file exists. + test -z "$run" && cat >> ${libobj}T <> ${libobj}T <&2 + fi + if test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=yes + else + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=built + fi + build_libtool_libs=no + build_old_libs=yes + break + ;; + esac + done + + # See if our shared archives depend on static archives. + test -n "$old_archive_from_new_cmds" && build_old_libs=yes + + # Go through the arguments, transforming them on the way. + while test "$#" -gt 0; do + arg="$1" + shift + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test + ;; + *) qarg=$arg ;; + esac + libtool_args="$libtool_args $qarg" + + # If the previous option needs an argument, assign it. + if test -n "$prev"; then + case $prev in + output) + compile_command="$compile_command @OUTPUT@" + finalize_command="$finalize_command @OUTPUT@" + ;; + esac + + case $prev in + dlfiles|dlprefiles) + if test "$preload" = no; then + # Add the symbol object into the linking commands. + compile_command="$compile_command @SYMFILE@" + finalize_command="$finalize_command @SYMFILE@" + preload=yes + fi + case $arg in + *.la | *.lo) ;; # We handle these cases below. + force) + if test "$dlself" = no; then + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + self) + if test "$prev" = dlprefiles; then + dlself=yes + elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then + dlself=yes + else + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + *) + if test "$prev" = dlfiles; then + dlfiles="$dlfiles $arg" + else + dlprefiles="$dlprefiles $arg" + fi + prev= + continue + ;; + esac + ;; + expsyms) + export_symbols="$arg" + if test ! -f "$arg"; then + $echo "$modename: symbol file \`$arg' does not exist" + exit $EXIT_FAILURE + fi + prev= + continue + ;; + expsyms_regex) + export_symbols_regex="$arg" + prev= + continue + ;; + inst_prefix) + inst_prefix_dir="$arg" + prev= + continue + ;; + precious_regex) + precious_files_regex="$arg" + prev= + continue + ;; + release) + release="-$arg" + prev= + continue + ;; + objectlist) + if test -f "$arg"; then + save_arg=$arg + moreargs= + for fil in `cat $save_arg` + do +# moreargs="$moreargs $fil" + arg=$fil + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + pic_object= + non_pic_object= + + # Read the .lo file + # If there is no directory component, then add one. + case $arg in + */* | *\\*) . $arg ;; + *) . ./$arg ;; + esac + + if test -z "$pic_object" || \ + test -z "$non_pic_object" || + test "$pic_object" = none && \ + test "$non_pic_object" = none; then + $echo "$modename: cannot find name of object for \`$arg'" 1>&2 + exit $EXIT_FAILURE + fi + + # Extract subdirectory from the argument. + xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$arg"; then + xdir= + else + xdir="$xdir/" + fi + + if test "$pic_object" != none; then + # Prepend the subdirectory the object is found in. + pic_object="$xdir$pic_object" + + if test "$prev" = dlfiles; then + if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then + dlfiles="$dlfiles $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test "$prev" = dlprefiles; then + # Preload the old-style object. + dlprefiles="$dlprefiles $pic_object" + prev= + fi + + # A PIC object. + libobjs="$libobjs $pic_object" + arg="$pic_object" + fi + + # Non-PIC object. + if test "$non_pic_object" != none; then + # Prepend the subdirectory the object is found in. + non_pic_object="$xdir$non_pic_object" + + # A standard non-PIC object + non_pic_objects="$non_pic_objects $non_pic_object" + if test -z "$pic_object" || test "$pic_object" = none ; then + arg="$non_pic_object" + fi + else + # If the PIC object exists, use it instead. + # $xdir was prepended to $pic_object above. + non_pic_object="$pic_object" + non_pic_objects="$non_pic_objects $non_pic_object" + fi + else + # Only an error if not doing a dry-run. + if test -z "$run"; then + $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 + exit $EXIT_FAILURE + else + # Dry-run case. + + # Extract subdirectory from the argument. + xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$arg"; then + xdir= + else + xdir="$xdir/" + fi + + pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` + non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` + libobjs="$libobjs $pic_object" + non_pic_objects="$non_pic_objects $non_pic_object" + fi + fi + done + else + $echo "$modename: link input file \`$save_arg' does not exist" + exit $EXIT_FAILURE + fi + arg=$save_arg + prev= + continue + ;; + rpath | xrpath) + # We need an absolute path. + case $arg in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + $echo "$modename: only absolute run-paths are allowed" 1>&2 + exit $EXIT_FAILURE + ;; + esac + if test "$prev" = rpath; then + case "$rpath " in + *" $arg "*) ;; + *) rpath="$rpath $arg" ;; + esac + else + case "$xrpath " in + *" $arg "*) ;; + *) xrpath="$xrpath $arg" ;; + esac + fi + prev= + continue + ;; + xcompiler) + compiler_flags="$compiler_flags $qarg" + prev= + compile_command="$compile_command $qarg" + finalize_command="$finalize_command $qarg" + continue + ;; + xlinker) + linker_flags="$linker_flags $qarg" + compiler_flags="$compiler_flags $wl$qarg" + prev= + compile_command="$compile_command $wl$qarg" + finalize_command="$finalize_command $wl$qarg" + continue + ;; + xcclinker) + linker_flags="$linker_flags $qarg" + compiler_flags="$compiler_flags $qarg" + prev= + compile_command="$compile_command $qarg" + finalize_command="$finalize_command $qarg" + continue + ;; + shrext) + shrext_cmds="$arg" + prev= + continue + ;; + darwin_framework|darwin_framework_skip) + test "$prev" = "darwin_framework" && compiler_flags="$compiler_flags $arg" + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + prev= + continue + ;; + *) + eval "$prev=\"\$arg\"" + prev= + continue + ;; + esac + fi # test -n "$prev" + + prevarg="$arg" + + case $arg in + -all-static) + if test -n "$link_static_flag"; then + compile_command="$compile_command $link_static_flag" + finalize_command="$finalize_command $link_static_flag" + fi + continue + ;; + + -allow-undefined) + # FIXME: remove this flag sometime in the future. + $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2 + continue + ;; + + -avoid-version) + avoid_version=yes + continue + ;; + + -dlopen) + prev=dlfiles + continue + ;; + + -dlpreopen) + prev=dlprefiles + continue + ;; + + -export-dynamic) + export_dynamic=yes + continue + ;; + + -export-symbols | -export-symbols-regex) + if test -n "$export_symbols" || test -n "$export_symbols_regex"; then + $echo "$modename: more than one -exported-symbols argument is not allowed" + exit $EXIT_FAILURE + fi + if test "X$arg" = "X-export-symbols"; then + prev=expsyms + else + prev=expsyms_regex + fi + continue + ;; + + -framework|-arch|-isysroot) + case " $CC " in + *" ${arg} ${1} "* | *" ${arg} ${1} "*) + prev=darwin_framework_skip ;; + *) compiler_flags="$compiler_flags $arg" + prev=darwin_framework ;; + esac + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + continue + ;; + + -inst-prefix-dir) + prev=inst_prefix + continue + ;; + + # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* + # so, if we see these flags be careful not to treat them like -L + -L[A-Z][A-Z]*:*) + case $with_gcc/$host in + no/*-*-irix* | /*-*-irix*) + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + ;; + esac + continue + ;; + + -L*) + dir=`$echo "X$arg" | $Xsed -e 's/^-L//'` + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + absdir=`cd "$dir" && pwd` + if test -z "$absdir"; then + $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2 + absdir="$dir" + notinst_path="$notinst_path $dir" + fi + dir="$absdir" + ;; + esac + case "$deplibs " in + *" -L$dir "*) ;; + *) + deplibs="$deplibs -L$dir" + lib_search_path="$lib_search_path $dir" + ;; + esac + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) + testbindir=`$echo "X$dir" | $Xsed -e 's*/lib$*/bin*'` + case :$dllsearchpath: in + *":$dir:"*) ;; + *) dllsearchpath="$dllsearchpath:$dir";; + esac + case :$dllsearchpath: in + *":$testbindir:"*) ;; + *) dllsearchpath="$dllsearchpath:$testbindir";; + esac + ;; + esac + continue + ;; + + -l*) + if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos*) + # These systems don't actually have a C or math library (as such) + continue + ;; + *-*-os2*) + # These systems don't actually have a C library (as such) + test "X$arg" = "X-lc" && continue + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc due to us having libc/libc_r. + test "X$arg" = "X-lc" && continue + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C and math libraries are in the System framework + deplibs="$deplibs -framework System" + continue + ;; + *-*-sco3.2v5* | *-*-sco5v6*) + # Causes problems with __ctype + test "X$arg" = "X-lc" && continue + ;; + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) + # Compiler inserts libc in the correct place for threads to work + test "X$arg" = "X-lc" && continue + ;; + esac + elif test "X$arg" = "X-lc_r"; then + case $host in + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc_r directly, use -pthread flag. + continue + ;; + esac + fi + deplibs="$deplibs $arg" + continue + ;; + + # Tru64 UNIX uses -model [arg] to determine the layout of C++ + # classes, name mangling, and exception handling. + -model) + compile_command="$compile_command $arg" + compiler_flags="$compiler_flags $arg" + finalize_command="$finalize_command $arg" + prev=xcompiler + continue + ;; + + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe) + compiler_flags="$compiler_flags $arg" + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + continue + ;; + + -module) + module=yes + continue + ;; + + # -64, -mips[0-9] enable 64-bit mode on the SGI compiler + # -r[0-9][0-9]* specifies the processor on the SGI compiler + # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler + # +DA*, +DD* enable 64-bit mode on the HP compiler + # -q* pass through compiler args for the IBM compiler + # -m* pass through architecture-specific compiler args for GCC + # -m*, -t[45]*, -txscale* pass through architecture-specific + # compiler args for GCC + # -pg pass through profiling flag for GCC + # @file GCC response files + -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*|-pg| \ + -t[45]*|-txscale*|@*) + + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + compiler_flags="$compiler_flags $arg" + continue + ;; + + -shrext) + prev=shrext + continue + ;; + + -no-fast-install) + fast_install=no + continue + ;; + + -no-install) + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) + # The PATH hackery in wrapper scripts is required on Windows + # in order for the loader to find any dlls it needs. + $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2 + $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2 + fast_install=no + ;; + *) no_install=yes ;; + esac + continue + ;; + + -no-undefined) + allow_undefined=no + continue + ;; + + -objectlist) + prev=objectlist + continue + ;; + + -o) prev=output ;; + + -precious-files-regex) + prev=precious_regex + continue + ;; + + -release) + prev=release + continue + ;; + + -rpath) + prev=rpath + continue + ;; + + -R) + prev=xrpath + continue + ;; + + -R*) + dir=`$echo "X$arg" | $Xsed -e 's/^-R//'` + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + $echo "$modename: only absolute run-paths are allowed" 1>&2 + exit $EXIT_FAILURE + ;; + esac + case "$xrpath " in + *" $dir "*) ;; + *) xrpath="$xrpath $dir" ;; + esac + continue + ;; + + -static) + # The effects of -static are defined in a previous loop. + # We used to do the same as -all-static on platforms that + # didn't have a PIC flag, but the assumption that the effects + # would be equivalent was wrong. It would break on at least + # Digital Unix and AIX. + continue + ;; + + -thread-safe) + thread_safe=yes + continue + ;; + + -version-info) + prev=vinfo + continue + ;; + -version-number) + prev=vinfo + vinfo_number=yes + continue + ;; + + -Wc,*) + args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'` + arg= + save_ifs="$IFS"; IFS=',' + for flag in $args; do + IFS="$save_ifs" + case $flag in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + flag="\"$flag\"" + ;; + esac + arg="$arg $wl$flag" + compiler_flags="$compiler_flags $flag" + done + IFS="$save_ifs" + arg=`$echo "X$arg" | $Xsed -e "s/^ //"` + ;; + + -Wl,*) + args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'` + arg= + save_ifs="$IFS"; IFS=',' + for flag in $args; do + IFS="$save_ifs" + case $flag in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + flag="\"$flag\"" + ;; + esac + arg="$arg $wl$flag" + compiler_flags="$compiler_flags $wl$flag" + linker_flags="$linker_flags $flag" + done + IFS="$save_ifs" + arg=`$echo "X$arg" | $Xsed -e "s/^ //"` + ;; + + -Xcompiler) + prev=xcompiler + continue + ;; + + -Xlinker) + prev=xlinker + continue + ;; + + -XCClinker) + prev=xcclinker + continue + ;; + + # Some other compiler flag. + -* | +*) + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + ;; + + *.$objext) + # A standard object. + objs="$objs $arg" + ;; + + *.lo) + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + pic_object= + non_pic_object= + + # Read the .lo file + # If there is no directory component, then add one. + case $arg in + */* | *\\*) . $arg ;; + *) . ./$arg ;; + esac + + if test -z "$pic_object" || \ + test -z "$non_pic_object" || + test "$pic_object" = none && \ + test "$non_pic_object" = none; then + $echo "$modename: cannot find name of object for \`$arg'" 1>&2 + exit $EXIT_FAILURE + fi + + # Extract subdirectory from the argument. + xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$arg"; then + xdir= + else + xdir="$xdir/" + fi + + if test "$pic_object" != none; then + # Prepend the subdirectory the object is found in. + pic_object="$xdir$pic_object" + + if test "$prev" = dlfiles; then + if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then + dlfiles="$dlfiles $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test "$prev" = dlprefiles; then + # Preload the old-style object. + dlprefiles="$dlprefiles $pic_object" + prev= + fi + + # A PIC object. + libobjs="$libobjs $pic_object" + arg="$pic_object" + fi + + # Non-PIC object. + if test "$non_pic_object" != none; then + # Prepend the subdirectory the object is found in. + non_pic_object="$xdir$non_pic_object" + + # A standard non-PIC object + non_pic_objects="$non_pic_objects $non_pic_object" + if test -z "$pic_object" || test "$pic_object" = none ; then + arg="$non_pic_object" + fi + else + # If the PIC object exists, use it instead. + # $xdir was prepended to $pic_object above. + non_pic_object="$pic_object" + non_pic_objects="$non_pic_objects $non_pic_object" + fi + else + # Only an error if not doing a dry-run. + if test -z "$run"; then + $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 + exit $EXIT_FAILURE + else + # Dry-run case. + + # Extract subdirectory from the argument. + xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$arg"; then + xdir= + else + xdir="$xdir/" + fi + + pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` + non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` + libobjs="$libobjs $pic_object" + non_pic_objects="$non_pic_objects $non_pic_object" + fi + fi + ;; + + *.$libext) + # An archive. + deplibs="$deplibs $arg" + old_deplibs="$old_deplibs $arg" + continue + ;; + + *.la) + # A libtool-controlled library. + + if test "$prev" = dlfiles; then + # This library was specified with -dlopen. + dlfiles="$dlfiles $arg" + prev= + elif test "$prev" = dlprefiles; then + # The library was specified with -dlpreopen. + dlprefiles="$dlprefiles $arg" + prev= + else + deplibs="$deplibs $arg" + fi + continue + ;; + + # Some other compiler argument. + *) + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + ;; + esac # arg + + # Now actually substitute the argument into the commands. + if test -n "$arg"; then + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + fi + done # argument parsing loop + + if test -n "$prev"; then + $echo "$modename: the \`$prevarg' option requires an argument" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then + eval arg=\"$export_dynamic_flag_spec\" + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + fi + + oldlibs= + # calculate the name of the file, without its directory + outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'` + libobjs_save="$libobjs" + + if test -n "$shlibpath_var"; then + # get the directories listed in $shlibpath_var + eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` + else + shlib_search_path= + fi + eval sys_lib_search_path=\"$sys_lib_search_path_spec\" + eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" + + output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'` + if test "X$output_objdir" = "X$output"; then + output_objdir="$objdir" + else + output_objdir="$output_objdir/$objdir" + fi + # Create the object directory. + if test ! -d "$output_objdir"; then + $show "$mkdir $output_objdir" + $run $mkdir $output_objdir + exit_status=$? + if test "$exit_status" -ne 0 && test ! -d "$output_objdir"; then + exit $exit_status + fi + fi + + # Determine the type of output + case $output in + "") + $echo "$modename: you must specify an output file" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + ;; + *.$libext) linkmode=oldlib ;; + *.lo | *.$objext) linkmode=obj ;; + *.la) linkmode=lib ;; + *) linkmode=prog ;; # Anything else should be a program. + esac + + case $host in + *cygwin* | *mingw* | *pw32*) + # don't eliminate duplications in $postdeps and $predeps + duplicate_compiler_generated_deps=yes + ;; + *) + duplicate_compiler_generated_deps=$duplicate_deps + ;; + esac + specialdeplibs= + + libs= + # Find all interdependent deplibs by searching for libraries + # that are linked more than once (e.g. -la -lb -la) + for deplib in $deplibs; do + if test "X$duplicate_deps" = "Xyes" ; then + case "$libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + libs="$libs $deplib" + done + + if test "$linkmode" = lib; then + libs="$predeps $libs $compiler_lib_search_path $postdeps" + + # Compute libraries that are listed more than once in $predeps + # $postdeps and mark them as special (i.e., whose duplicates are + # not to be eliminated). + pre_post_deps= + if test "X$duplicate_compiler_generated_deps" = "Xyes" ; then + for pre_post_dep in $predeps $postdeps; do + case "$pre_post_deps " in + *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; + esac + pre_post_deps="$pre_post_deps $pre_post_dep" + done + fi + pre_post_deps= + fi + + deplibs= + newdependency_libs= + newlib_search_path= + need_relink=no # whether we're linking any uninstalled libtool libraries + notinst_deplibs= # not-installed libtool libraries + case $linkmode in + lib) + passes="conv link" + for file in $dlfiles $dlprefiles; do + case $file in + *.la) ;; + *) + $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2 + exit $EXIT_FAILURE + ;; + esac + done + ;; + prog) + compile_deplibs= + finalize_deplibs= + alldeplibs=no + newdlfiles= + newdlprefiles= + passes="conv scan dlopen dlpreopen link" + ;; + *) passes="conv" + ;; + esac + for pass in $passes; do + if test "$linkmode,$pass" = "lib,link" || + test "$linkmode,$pass" = "prog,scan"; then + libs="$deplibs" + deplibs= + fi + if test "$linkmode" = prog; then + case $pass in + dlopen) libs="$dlfiles" ;; + dlpreopen) libs="$dlprefiles" ;; + link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; + esac + fi + if test "$pass" = dlopen; then + # Collect dlpreopened libraries + save_deplibs="$deplibs" + deplibs= + fi + for deplib in $libs; do + lib= + found=no + case $deplib in + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe) + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + compiler_flags="$compiler_flags $deplib" + fi + continue + ;; + -l*) + if test "$linkmode" != lib && test "$linkmode" != prog; then + $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2 + continue + fi + name=`$echo "X$deplib" | $Xsed -e 's/^-l//'` + for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do + for search_ext in .la $std_shrext .so .a; do + # Search the libtool library + lib="$searchdir/lib${name}${search_ext}" + if test -f "$lib"; then + if test "$search_ext" = ".la"; then + found=yes + else + found=no + fi + break 2 + fi + done + done + if test "$found" != yes; then + # deplib doesn't seem to be a libtool library + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" + fi + continue + else # deplib is a libtool library + # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, + # We need to do some special things here, and not later. + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + case " $predeps $postdeps " in + *" $deplib "*) + if (${SED} -e '2q' $lib | + grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + library_names= + old_library= + case $lib in + */* | *\\*) . $lib ;; + *) . ./$lib ;; + esac + for l in $old_library $library_names; do + ll="$l" + done + if test "X$ll" = "X$old_library" ; then # only static version available + found=no + ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` + test "X$ladir" = "X$lib" && ladir="." + lib=$ladir/$old_library + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" + fi + continue + fi + fi + ;; + *) ;; + esac + fi + fi + ;; # -l + -L*) + case $linkmode in + lib) + deplibs="$deplib $deplibs" + test "$pass" = conv && continue + newdependency_libs="$deplib $newdependency_libs" + newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` + ;; + prog) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + continue + fi + if test "$pass" = scan; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` + ;; + *) + $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2 + ;; + esac # linkmode + continue + ;; # -L + -R*) + if test "$pass" = link; then + dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'` + # Make sure the xrpath contains only unique directories. + case "$xrpath " in + *" $dir "*) ;; + *) xrpath="$xrpath $dir" ;; + esac + fi + deplibs="$deplib $deplibs" + continue + ;; + *.la) lib="$deplib" ;; + *.$libext) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + continue + fi + case $linkmode in + lib) + valid_a_lib=no + case $deplibs_check_method in + match_pattern*) + set dummy $deplibs_check_method + match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` + if eval $echo \"$deplib\" 2>/dev/null \ + | $SED 10q \ + | $EGREP "$match_pattern_regex" > /dev/null; then + valid_a_lib=yes + fi + ;; + pass_all) + valid_a_lib=yes + ;; + esac + if test "$valid_a_lib" != yes; then + $echo + $echo "*** Warning: Trying to link with static lib archive $deplib." + $echo "*** I have the capability to make that library automatically link in when" + $echo "*** you link to this library. But I can only do this if you have a" + $echo "*** shared version of the library, which you do not appear to have" + $echo "*** because the file extensions .$libext of this argument makes me believe" + $echo "*** that it is just a static archive that I should not used here." + else + $echo + $echo "*** Warning: Linking the shared library $output against the" + $echo "*** static library $deplib is not portable!" + deplibs="$deplib $deplibs" + fi + continue + ;; + prog) + if test "$pass" != link; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + continue + ;; + esac # linkmode + ;; # *.$libext + *.lo | *.$objext) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + elif test "$linkmode" = prog; then + if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then + # If there is no dlopen support or we're linking statically, + # we need to preload. + newdlprefiles="$newdlprefiles $deplib" + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + newdlfiles="$newdlfiles $deplib" + fi + fi + continue + ;; + %DEPLIBS%) + alldeplibs=yes + continue + ;; + esac # case $deplib + if test "$found" = yes || test -f "$lib"; then : + else + $echo "$modename: cannot find the library \`$lib' or unhandled argument \`$deplib'" 1>&2 + exit $EXIT_FAILURE + fi + + # Check to see that this really is a libtool archive. + if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : + else + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + exit $EXIT_FAILURE + fi + + ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` + test "X$ladir" = "X$lib" && ladir="." + + dlname= + dlopen= + dlpreopen= + libdir= + library_names= + old_library= + # If the library was installed with an old release of libtool, + # it will not redefine variables installed, or shouldnotlink + installed=yes + shouldnotlink=no + avoidtemprpath= + + + # Read the .la file + case $lib in + */* | *\\*) . $lib ;; + *) . ./$lib ;; + esac + + if test "$linkmode,$pass" = "lib,link" || + test "$linkmode,$pass" = "prog,scan" || + { test "$linkmode" != prog && test "$linkmode" != lib; }; then + test -n "$dlopen" && dlfiles="$dlfiles $dlopen" + test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" + fi + + if test "$pass" = conv; then + # Only check for convenience libraries + deplibs="$lib $deplibs" + if test -z "$libdir"; then + if test -z "$old_library"; then + $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 + exit $EXIT_FAILURE + fi + # It is a libtool convenience library, so add in its objects. + convenience="$convenience $ladir/$objdir/$old_library" + old_convenience="$old_convenience $ladir/$objdir/$old_library" + tmp_libs= + for deplib in $dependency_libs; do + deplibs="$deplib $deplibs" + if test "X$duplicate_deps" = "Xyes" ; then + case "$tmp_libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + tmp_libs="$tmp_libs $deplib" + done + elif test "$linkmode" != prog && test "$linkmode" != lib; then + $echo "$modename: \`$lib' is not a convenience library" 1>&2 + exit $EXIT_FAILURE + fi + continue + fi # $pass = conv + + + # Get the name of the library we link against. + linklib= + for l in $old_library $library_names; do + linklib="$l" + done + if test -z "$linklib"; then + $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 + exit $EXIT_FAILURE + fi + + # This library was specified with -dlopen. + if test "$pass" = dlopen; then + if test -z "$libdir"; then + $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2 + exit $EXIT_FAILURE + fi + if test -z "$dlname" || + test "$dlopen_support" != yes || + test "$build_libtool_libs" = no; then + # If there is no dlname, no dlopen support or we're linking + # statically, we need to preload. We also need to preload any + # dependent libraries so libltdl's deplib preloader doesn't + # bomb out in the load deplibs phase. + dlprefiles="$dlprefiles $lib $dependency_libs" + else + newdlfiles="$newdlfiles $lib" + fi + continue + fi # $pass = dlopen + + # We need an absolute path. + case $ladir in + [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; + *) + abs_ladir=`cd "$ladir" && pwd` + if test -z "$abs_ladir"; then + $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2 + $echo "$modename: passing it literally to the linker, although it might fail" 1>&2 + abs_ladir="$ladir" + fi + ;; + esac + laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` + + # Find the relevant object directory and library name. + if test "X$installed" = Xyes; then + if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then + $echo "$modename: warning: library \`$lib' was moved." 1>&2 + dir="$ladir" + absdir="$abs_ladir" + libdir="$abs_ladir" + else + dir="$libdir" + absdir="$libdir" + fi + test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes + else + if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then + dir="$ladir" + absdir="$abs_ladir" + # Remove this search path later + notinst_path="$notinst_path $abs_ladir" + else + dir="$ladir/$objdir" + absdir="$abs_ladir/$objdir" + # Remove this search path later + notinst_path="$notinst_path $abs_ladir" + fi + fi # $installed = yes + name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` + + # This library was specified with -dlpreopen. + if test "$pass" = dlpreopen; then + if test -z "$libdir"; then + $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2 + exit $EXIT_FAILURE + fi + # Prefer using a static library (so that no silly _DYNAMIC symbols + # are required to link). + if test -n "$old_library"; then + newdlprefiles="$newdlprefiles $dir/$old_library" + # Otherwise, use the dlname, so that lt_dlopen finds it. + elif test -n "$dlname"; then + newdlprefiles="$newdlprefiles $dir/$dlname" + else + newdlprefiles="$newdlprefiles $dir/$linklib" + fi + fi # $pass = dlpreopen + + if test -z "$libdir"; then + # Link the convenience library + if test "$linkmode" = lib; then + deplibs="$dir/$old_library $deplibs" + elif test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$dir/$old_library $compile_deplibs" + finalize_deplibs="$dir/$old_library $finalize_deplibs" + else + deplibs="$lib $deplibs" # used for prog,scan pass + fi + continue + fi + + + if test "$linkmode" = prog && test "$pass" != link; then + newlib_search_path="$newlib_search_path $ladir" + deplibs="$lib $deplibs" + + linkalldeplibs=no + if test "$link_all_deplibs" != no || test -z "$library_names" || + test "$build_libtool_libs" = no; then + linkalldeplibs=yes + fi + + tmp_libs= + for deplib in $dependency_libs; do + case $deplib in + -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test + esac + # Need to link against all dependency_libs? + if test "$linkalldeplibs" = yes; then + deplibs="$deplib $deplibs" + else + # Need to hardcode shared library paths + # or/and link against static libraries + newdependency_libs="$deplib $newdependency_libs" + fi + if test "X$duplicate_deps" = "Xyes" ; then + case "$tmp_libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + tmp_libs="$tmp_libs $deplib" + done # for deplib + continue + fi # $linkmode = prog... + + if test "$linkmode,$pass" = "prog,link"; then + if test -n "$library_names" && + { test "$prefer_static_libs" = no || test -z "$old_library"; }; then + # We need to hardcode the library path + if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then + # Make sure the rpath contains only unique directories. + case "$temp_rpath " in + *" $dir "*) ;; + *" $absdir "*) ;; + *) temp_rpath="$temp_rpath $absdir" ;; + esac + fi + + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) compile_rpath="$compile_rpath $absdir" + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" + esac + ;; + esac + fi # $linkmode,$pass = prog,link... + + if test "$alldeplibs" = yes && + { test "$deplibs_check_method" = pass_all || + { test "$build_libtool_libs" = yes && + test -n "$library_names"; }; }; then + # We only need to search for static libraries + continue + fi + fi + + link_static=no # Whether the deplib will be linked statically + use_static_libs=$prefer_static_libs + if test "$use_static_libs" = built && test "$installed" = yes ; then + use_static_libs=no + fi + if test -n "$library_names" && + { test "$use_static_libs" = no || test -z "$old_library"; }; then + if test "$installed" = no; then + notinst_deplibs="$notinst_deplibs $lib" + need_relink=yes + fi + # This is a shared library + + # Warn about portability, can't link against -module's on + # some systems (darwin) + if test "$shouldnotlink" = yes && test "$pass" = link ; then + $echo + if test "$linkmode" = prog; then + $echo "*** Warning: Linking the executable $output against the loadable module" + else + $echo "*** Warning: Linking the shared library $output against the loadable module" + fi + $echo "*** $linklib is not portable!" + fi + if test "$linkmode" = lib && + test "$hardcode_into_libs" = yes; then + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) compile_rpath="$compile_rpath $absdir" + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" + esac + ;; + esac + fi + + if test -n "$old_archive_from_expsyms_cmds"; then + # figure out the soname + set dummy $library_names + realname="$2" + shift; shift + libname=`eval \\$echo \"$libname_spec\"` + # use dlname if we got it. it's perfectly good, no? + if test -n "$dlname"; then + soname="$dlname" + elif test -n "$soname_spec"; then + # bleh windows + case $host in + *cygwin* | mingw*) + major=`expr $current - $age` + versuffix="-$major" + ;; + esac + eval soname=\"$soname_spec\" + else + soname="$realname" + fi + + # Make a new name for the extract_expsyms_cmds to use + soroot="$soname" + soname=`$echo $soroot | ${SED} -e 's/^.*\///'` + newlib="libimp-`$echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a" + + # If the library has no export list, then create one now + if test -f "$output_objdir/$soname-def"; then : + else + $show "extracting exported symbol list from \`$soname'" + save_ifs="$IFS"; IFS='~' + cmds=$extract_expsyms_cmds + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + fi + + # Create $newlib + if test -f "$output_objdir/$newlib"; then :; else + $show "generating import library for \`$soname'" + save_ifs="$IFS"; IFS='~' + cmds=$old_archive_from_expsyms_cmds + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + fi + # make sure the library variables are pointing to the new library + dir=$output_objdir + linklib=$newlib + fi # test -n "$old_archive_from_expsyms_cmds" + + if test "$linkmode" = prog || test "$mode" != relink; then + add_shlibpath= + add_dir= + add= + lib_linked=yes + case $hardcode_action in + immediate | unsupported) + if test "$hardcode_direct" = no; then + add="$dir/$linklib" + case $host in + *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; + *-*-sysv4*uw2*) add_dir="-L$dir" ;; + *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ + *-*-unixware7*) add_dir="-L$dir" ;; + *-*-darwin* ) + # if the lib is a module then we can not link against + # it, someone is ignoring the new warnings I added + if /usr/bin/file -L $add 2> /dev/null | + $EGREP ": [^:]* bundle" >/dev/null ; then + $echo "** Warning, lib $linklib is a module, not a shared library" + if test -z "$old_library" ; then + $echo + $echo "** And there doesn't seem to be a static archive available" + $echo "** The link will probably fail, sorry" + else + add="$dir/$old_library" + fi + fi + esac + elif test "$hardcode_minus_L" = no; then + case $host in + *-*-sunos*) add_shlibpath="$dir" ;; + esac + add_dir="-L$dir" + add="-l$name" + elif test "$hardcode_shlibpath_var" = no; then + add_shlibpath="$dir" + add="-l$name" + else + lib_linked=no + fi + ;; + relink) + if test "$hardcode_direct" = yes; then + add="$dir/$linklib" + elif test "$hardcode_minus_L" = yes; then + add_dir="-L$dir" + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case $libdir in + [\\/]*) + add_dir="$add_dir -L$inst_prefix_dir$libdir" + ;; + esac + fi + add="-l$name" + elif test "$hardcode_shlibpath_var" = yes; then + add_shlibpath="$dir" + add="-l$name" + else + lib_linked=no + fi + ;; + *) lib_linked=no ;; + esac + + if test "$lib_linked" != yes; then + $echo "$modename: configuration error: unsupported hardcode properties" + exit $EXIT_FAILURE + fi + + if test -n "$add_shlibpath"; then + case :$compile_shlibpath: in + *":$add_shlibpath:"*) ;; + *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; + esac + fi + if test "$linkmode" = prog; then + test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" + test -n "$add" && compile_deplibs="$add $compile_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + if test "$hardcode_direct" != yes && \ + test "$hardcode_minus_L" != yes && \ + test "$hardcode_shlibpath_var" = yes; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; + esac + fi + fi + fi + + if test "$linkmode" = prog || test "$mode" = relink; then + add_shlibpath= + add_dir= + add= + # Finalize command for both is simple: just hardcode it. + if test "$hardcode_direct" = yes; then + add="$libdir/$linklib" + elif test "$hardcode_minus_L" = yes; then + add_dir="-L$libdir" + add="-l$name" + elif test "$hardcode_shlibpath_var" = yes; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; + esac + add="-l$name" + elif test "$hardcode_automatic" = yes; then + if test -n "$inst_prefix_dir" && + test -f "$inst_prefix_dir$libdir/$linklib" ; then + add="$inst_prefix_dir$libdir/$linklib" + else + add="$libdir/$linklib" + fi + else + # We cannot seem to hardcode it, guess we'll fake it. + add_dir="-L$libdir" + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case $libdir in + [\\/]*) + add_dir="$add_dir -L$inst_prefix_dir$libdir" + ;; + esac + fi + add="-l$name" + fi + + if test "$linkmode" = prog; then + test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" + test -n "$add" && finalize_deplibs="$add $finalize_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + fi + fi + elif test "$linkmode" = prog; then + # Here we assume that one of hardcode_direct or hardcode_minus_L + # is not unsupported. This is valid on all known static and + # shared platforms. + if test "$hardcode_direct" != unsupported; then + test -n "$old_library" && linklib="$old_library" + compile_deplibs="$dir/$linklib $compile_deplibs" + finalize_deplibs="$dir/$linklib $finalize_deplibs" + else + compile_deplibs="-l$name -L$dir $compile_deplibs" + finalize_deplibs="-l$name -L$dir $finalize_deplibs" + fi + elif test "$build_libtool_libs" = yes; then + # Not a shared library + if test "$deplibs_check_method" != pass_all; then + # We're trying link a shared library against a static one + # but the system doesn't support it. + + # Just print a warning and add the library to dependency_libs so + # that the program can be linked against the static library. + $echo + $echo "*** Warning: This system can not link to static lib archive $lib." + $echo "*** I have the capability to make that library automatically link in when" + $echo "*** you link to this library. But I can only do this if you have a" + $echo "*** shared version of the library, which you do not appear to have." + if test "$module" = yes; then + $echo "*** But as you try to build a module library, libtool will still create " + $echo "*** a static module, that should work as long as the dlopening application" + $echo "*** is linked with the -dlopen flag to resolve symbols at runtime." + if test -z "$global_symbol_pipe"; then + $echo + $echo "*** However, this would only work if libtool was able to extract symbol" + $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" + $echo "*** not find such a program. So, this module is probably useless." + $echo "*** \`nm' from GNU binutils and a full rebuild may help." + fi + if test "$build_old_libs" = no; then + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + else + deplibs="$dir/$old_library $deplibs" + link_static=yes + fi + fi # link shared/static library? + + if test "$linkmode" = lib; then + if test -n "$dependency_libs" && + { test "$hardcode_into_libs" != yes || + test "$build_old_libs" = yes || + test "$link_static" = yes; }; then + # Extract -R from dependency_libs + temp_deplibs= + for libdir in $dependency_libs; do + case $libdir in + -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'` + case " $xrpath " in + *" $temp_xrpath "*) ;; + *) xrpath="$xrpath $temp_xrpath";; + esac;; + *) temp_deplibs="$temp_deplibs $libdir";; + esac + done + dependency_libs="$temp_deplibs" + fi + + newlib_search_path="$newlib_search_path $absdir" + # Link against this library + test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" + # ... and its dependency_libs + tmp_libs= + for deplib in $dependency_libs; do + newdependency_libs="$deplib $newdependency_libs" + if test "X$duplicate_deps" = "Xyes" ; then + case "$tmp_libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + tmp_libs="$tmp_libs $deplib" + done + + if test "$link_all_deplibs" != no; then + # Add the search paths of all dependency libraries + for deplib in $dependency_libs; do + case $deplib in + -L*) path="$deplib" ;; + *.la) + dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'` + test "X$dir" = "X$deplib" && dir="." + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; + *) + absdir=`cd "$dir" && pwd` + if test -z "$absdir"; then + $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2 + absdir="$dir" + fi + ;; + esac + if grep "^installed=no" $deplib > /dev/null; then + path="$absdir/$objdir" + else + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + if test -z "$libdir"; then + $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 + exit $EXIT_FAILURE + fi + if test "$absdir" != "$libdir"; then + $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2 + fi + path="$absdir" + fi + depdepl= + case $host in + *-*-darwin*) + # we do not want to link against static libs, + # but need to link against shared + eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` + if test -n "$deplibrary_names" ; then + for tmp in $deplibrary_names ; do + depdepl=$tmp + done + if test -f "$path/$depdepl" ; then + depdepl="$path/$depdepl" + fi + # do not add paths which are already there + case " $newlib_search_path " in + *" $path "*) ;; + *) newlib_search_path="$newlib_search_path $path";; + esac + fi + path="" + ;; + *) + path="-L$path" + ;; + esac + ;; + -l*) + case $host in + *-*-darwin*) + # Again, we only want to link against shared libraries + eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"` + for tmp in $newlib_search_path ; do + if test -f "$tmp/lib$tmp_libs.dylib" ; then + eval depdepl="$tmp/lib$tmp_libs.dylib" + break + fi + done + path="" + ;; + *) continue ;; + esac + ;; + *) continue ;; + esac + case " $deplibs " in + *" $path "*) ;; + *) deplibs="$path $deplibs" ;; + esac + case " $deplibs " in + *" $depdepl "*) ;; + *) deplibs="$depdepl $deplibs" ;; + esac + done + fi # link_all_deplibs != no + fi # linkmode = lib + done # for deplib in $libs + dependency_libs="$newdependency_libs" + if test "$pass" = dlpreopen; then + # Link the dlpreopened libraries before other libraries + for deplib in $save_deplibs; do + deplibs="$deplib $deplibs" + done + fi + if test "$pass" != dlopen; then + if test "$pass" != conv; then + # Make sure lib_search_path contains only unique directories. + lib_search_path= + for dir in $newlib_search_path; do + case "$lib_search_path " in + *" $dir "*) ;; + *) lib_search_path="$lib_search_path $dir" ;; + esac + done + newlib_search_path= + fi + + if test "$linkmode,$pass" != "prog,link"; then + vars="deplibs" + else + vars="compile_deplibs finalize_deplibs" + fi + for var in $vars dependency_libs; do + # Add libraries to $var in reverse order + eval tmp_libs=\"\$$var\" + new_libs= + for deplib in $tmp_libs; do + # FIXME: Pedantically, this is the right thing to do, so + # that some nasty dependency loop isn't accidentally + # broken: + #new_libs="$deplib $new_libs" + # Pragmatically, this seems to cause very few problems in + # practice: + case $deplib in + -L*) new_libs="$deplib $new_libs" ;; + -R*) ;; + *) + # And here is the reason: when a library appears more + # than once as an explicit dependence of a library, or + # is implicitly linked in more than once by the + # compiler, it is considered special, and multiple + # occurrences thereof are not removed. Compare this + # with having the same library being listed as a + # dependency of multiple other libraries: in this case, + # we know (pedantically, we assume) the library does not + # need to be listed more than once, so we keep only the + # last copy. This is not always right, but it is rare + # enough that we require users that really mean to play + # such unportable linking tricks to link the library + # using -Wl,-lname, so that libtool does not consider it + # for duplicate removal. + case " $specialdeplibs " in + *" $deplib "*) new_libs="$deplib $new_libs" ;; + *) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs="$deplib $new_libs" ;; + esac + ;; + esac + ;; + esac + done + tmp_libs= + for deplib in $new_libs; do + case $deplib in + -L*) + case " $tmp_libs " in + *" $deplib "*) ;; + *) tmp_libs="$tmp_libs $deplib" ;; + esac + ;; + *) tmp_libs="$tmp_libs $deplib" ;; + esac + done + eval $var=\"$tmp_libs\" + done # for var + fi + # Last step: remove runtime libs from dependency_libs + # (they stay in deplibs) + tmp_libs= + for i in $dependency_libs ; do + case " $predeps $postdeps $compiler_lib_search_path " in + *" $i "*) + i="" + ;; + esac + if test -n "$i" ; then + tmp_libs="$tmp_libs $i" + fi + done + dependency_libs=$tmp_libs + done # for pass + if test "$linkmode" = prog; then + dlfiles="$newdlfiles" + dlprefiles="$newdlprefiles" + fi + + case $linkmode in + oldlib) + if test -n "$deplibs"; then + $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2 + fi + + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2 + fi + + if test -n "$rpath"; then + $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2 + fi + + if test -n "$xrpath"; then + $echo "$modename: warning: \`-R' is ignored for archives" 1>&2 + fi + + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info/-version-number' is ignored for archives" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for archives" 1>&2 + fi + + if test -n "$export_symbols" || test -n "$export_symbols_regex"; then + $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2 + fi + + # Now set the variables for building old libraries. + build_libtool_libs=no + oldlibs="$output" + objs="$objs$old_deplibs" + ;; + + lib) + # Make sure we only generate libraries of the form `libNAME.la'. + case $outputname in + lib*) + name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + ;; + *) + if test "$module" = no; then + $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + if test "$need_lib_prefix" != no; then + # Add the "lib" prefix for modules if required + name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + else + libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` + fi + ;; + esac + + if test -n "$objs"; then + if test "$deplibs_check_method" != pass_all; then + $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1 + exit $EXIT_FAILURE + else + $echo + $echo "*** Warning: Linking the shared library $output against the non-libtool" + $echo "*** objects $objs is not portable!" + libobjs="$libobjs $objs" + fi + fi + + if test "$dlself" != no; then + $echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2 + fi + + set dummy $rpath + if test "$#" -gt 2; then + $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2 + fi + install_libdir="$2" + + oldlibs= + if test -z "$rpath"; then + if test "$build_libtool_libs" = yes; then + # Building a libtool convenience library. + # Some compilers have problems with a `.al' extension so + # convenience libraries should have the same extension an + # archive normally would. + oldlibs="$output_objdir/$libname.$libext $oldlibs" + build_libtool_libs=convenience + build_old_libs=yes + fi + + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info/-version-number' is ignored for convenience libraries" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2 + fi + else + + # Parse the version information argument. + save_ifs="$IFS"; IFS=':' + set dummy $vinfo 0 0 0 + IFS="$save_ifs" + + if test -n "$8"; then + $echo "$modename: too many parameters to \`-version-info'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # convert absolute version numbers to libtool ages + # this retains compatibility with .la files and attempts + # to make the code below a bit more comprehensible + + case $vinfo_number in + yes) + number_major="$2" + number_minor="$3" + number_revision="$4" + # + # There are really only two kinds -- those that + # use the current revision as the major version + # and those that subtract age and use age as + # a minor version. But, then there is irix + # which has an extra 1 added just for fun + # + case $version_type in + darwin|linux|osf|windows) + current=`expr $number_major + $number_minor` + age="$number_minor" + revision="$number_revision" + ;; + freebsd-aout|freebsd-elf|sunos) + current="$number_major" + revision="$number_minor" + age="0" + ;; + irix|nonstopux) + current=`expr $number_major + $number_minor - 1` + age="$number_minor" + revision="$number_minor" + ;; + esac + ;; + no) + current="$2" + revision="$3" + age="$4" + ;; + esac + + # Check that each of the things are valid numbers. + case $current in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + $echo "$modename: CURRENT \`$current' must be a nonnegative integer" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + case $revision in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + $echo "$modename: REVISION \`$revision' must be a nonnegative integer" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + case $age in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + $echo "$modename: AGE \`$age' must be a nonnegative integer" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + if test "$age" -gt "$current"; then + $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit $EXIT_FAILURE + fi + + # Calculate the version variables. + major= + versuffix= + verstring= + case $version_type in + none) ;; + + darwin) + # Like Linux, but with the current version available in + # verstring for coding it into the library header + major=.`expr $current - $age` + versuffix="$major.$age.$revision" + # Darwin ld doesn't like 0 for these options... + minor_current=`expr $current + 1` + verstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" + ;; + + freebsd-aout) + major=".$current" + versuffix=".$current.$revision"; + ;; + + freebsd-elf) + major=".$current" + versuffix=".$current"; + ;; + + irix | nonstopux) + major=`expr $current - $age + 1` + + case $version_type in + nonstopux) verstring_prefix=nonstopux ;; + *) verstring_prefix=sgi ;; + esac + verstring="$verstring_prefix$major.$revision" + + # Add in all the interfaces that we are compatible with. + loop=$revision + while test "$loop" -ne 0; do + iface=`expr $revision - $loop` + loop=`expr $loop - 1` + verstring="$verstring_prefix$major.$iface:$verstring" + done + + # Before this point, $major must not contain `.'. + major=.$major + versuffix="$major.$revision" + ;; + + linux) + major=.`expr $current - $age` + versuffix="$major.$age.$revision" + ;; + + osf) + major=.`expr $current - $age` + versuffix=".$current.$age.$revision" + verstring="$current.$age.$revision" + + # Add in all the interfaces that we are compatible with. + loop=$age + while test "$loop" -ne 0; do + iface=`expr $current - $loop` + loop=`expr $loop - 1` + verstring="$verstring:${iface}.0" + done + + # Make executables depend on our current version. + verstring="$verstring:${current}.0" + ;; + + sunos) + major=".$current" + versuffix=".$current.$revision" + ;; + + windows) + # Use '-' rather than '.', since we only want one + # extension on DOS 8.3 filesystems. + major=`expr $current - $age` + versuffix="-$major" + ;; + + *) + $echo "$modename: unknown library version type \`$version_type'" 1>&2 + $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 + exit $EXIT_FAILURE + ;; + esac + + # Clear the version info if we defaulted, and they specified a release. + if test -z "$vinfo" && test -n "$release"; then + major= + case $version_type in + darwin) + # we can't check for "0.0" in archive_cmds due to quoting + # problems, so we reset it completely + verstring= + ;; + *) + verstring="0.0" + ;; + esac + if test "$need_version" = no; then + versuffix= + else + versuffix=".0.0" + fi + fi + + # Remove version info from name if versioning should be avoided + if test "$avoid_version" = yes && test "$need_version" = no; then + major= + versuffix= + verstring="" + fi + + # Check to see if the archive will have undefined symbols. + if test "$allow_undefined" = yes; then + if test "$allow_undefined_flag" = unsupported; then + $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2 + build_libtool_libs=no + build_old_libs=yes + fi + else + # Don't allow undefined symbols. + allow_undefined_flag="$no_undefined_flag" + fi + fi + + if test "$mode" != relink; then + # Remove our outputs, but don't remove object files since they + # may have been created when compiling PIC objects. + removelist= + tempremovelist=`$echo "$output_objdir/*"` + for p in $tempremovelist; do + case $p in + *.$objext) + ;; + $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) + if test "X$precious_files_regex" != "X"; then + if echo $p | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 + then + continue + fi + fi + removelist="$removelist $p" + ;; + *) ;; + esac + done + if test -n "$removelist"; then + $show "${rm}r $removelist" + $run ${rm}r $removelist + fi + fi + + # Now set the variables for building old libraries. + if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then + oldlibs="$oldlibs $output_objdir/$libname.$libext" + + # Transform .lo files to .o files. + oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` + fi + + # Eliminate all temporary directories. + for path in $notinst_path; do + lib_search_path=`$echo "$lib_search_path " | ${SED} -e "s% $path % %g"` + deplibs=`$echo "$deplibs " | ${SED} -e "s% -L$path % %g"` + dependency_libs=`$echo "$dependency_libs " | ${SED} -e "s% -L$path % %g"` + done + + if test -n "$xrpath"; then + # If the user specified any rpath flags, then add them. + temp_xrpath= + for libdir in $xrpath; do + temp_xrpath="$temp_xrpath -R$libdir" + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" ;; + esac + done + if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then + dependency_libs="$temp_xrpath $dependency_libs" + fi + fi + + # Make sure dlfiles contains only unique files that won't be dlpreopened + old_dlfiles="$dlfiles" + dlfiles= + for lib in $old_dlfiles; do + case " $dlprefiles $dlfiles " in + *" $lib "*) ;; + *) dlfiles="$dlfiles $lib" ;; + esac + done + + # Make sure dlprefiles contains only unique files + old_dlprefiles="$dlprefiles" + dlprefiles= + for lib in $old_dlprefiles; do + case "$dlprefiles " in + *" $lib "*) ;; + *) dlprefiles="$dlprefiles $lib" ;; + esac + done + + if test "$build_libtool_libs" = yes; then + if test -n "$rpath"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*) + # these systems don't actually have a c library (as such)! + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C library is in the System framework + deplibs="$deplibs -framework System" + ;; + *-*-netbsd*) + # Don't link with libc until the a.out ld.so is fixed. + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc due to us having libc/libc_r. + ;; + *-*-sco3.2v5* | *-*-sco5v6*) + # Causes problems with __ctype + ;; + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) + # Compiler inserts libc in the correct place for threads to work + ;; + *) + # Add libc to deplibs on all other systems if necessary. + if test "$build_libtool_need_lc" = "yes"; then + deplibs="$deplibs -lc" + fi + ;; + esac + fi + + # Transform deplibs into only deplibs that can be linked in shared. + name_save=$name + libname_save=$libname + release_save=$release + versuffix_save=$versuffix + major_save=$major + # I'm not sure if I'm treating the release correctly. I think + # release should show up in the -l (ie -lgmp5) so we don't want to + # add it in twice. Is that correct? + release="" + versuffix="" + major="" + newdeplibs= + droppeddeps=no + case $deplibs_check_method in + pass_all) + # Don't check for shared/static. Everything works. + # This might be a little naive. We might want to check + # whether the library exists or not. But this is on + # osf3 & osf4 and I'm not really sure... Just + # implementing what was already the behavior. + newdeplibs=$deplibs + ;; + test_compile) + # This code stresses the "libraries are programs" paradigm to its + # limits. Maybe even breaks it. We compile a program, linking it + # against the deplibs as a proxy for the library. Then we can check + # whether they linked in statically or dynamically with ldd. + $rm conftest.c + cat > conftest.c </dev/null` + for potent_lib in $potential_libs; do + # Follow soft links. + if ls -lLd "$potent_lib" 2>/dev/null \ + | grep " -> " >/dev/null; then + continue + fi + # The statement above tries to avoid entering an + # endless loop below, in case of cyclic links. + # We might still enter an endless loop, since a link + # loop can be closed while we follow links, + # but so what? + potlib="$potent_lib" + while test -h "$potlib" 2>/dev/null; do + potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` + case $potliblink in + [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; + *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; + esac + done + # It is ok to link against an archive when + # building a shared library. + if $AR -t $potlib > /dev/null 2>&1; then + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + break 2 + fi + if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \ + | ${SED} 10q \ + | $EGREP "$file_magic_regex" > /dev/null; then + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + break 2 + fi + done + done + fi + if test -n "$a_deplib" ; then + droppeddeps=yes + $echo + $echo "*** Warning: linker path does not have real file for library $a_deplib." + $echo "*** I have the capability to make that library automatically link in when" + $echo "*** you link to this library. But I can only do this if you have a" + $echo "*** shared version of the library, which you do not appear to have" + $echo "*** because I did check the linker path looking for a file starting" + if test -z "$potlib" ; then + $echo "*** with $libname but no candidates were found. (...for file magic test)" + else + $echo "*** with $libname and none of the candidates passed a file format test" + $echo "*** using a file magic. Last file checked: $potlib" + fi + fi + else + # Add a -L argument. + newdeplibs="$newdeplibs $a_deplib" + fi + done # Gone through all deplibs. + ;; + match_pattern*) + set dummy $deplibs_check_method + match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` + for a_deplib in $deplibs; do + name=`expr $a_deplib : '-l\(.*\)'` + # If $name is empty we are operating on a -L argument. + if test -n "$name" && test "$name" != "0"; then + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + case " $predeps $postdeps " in + *" $a_deplib "*) + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + ;; + esac + fi + if test -n "$a_deplib" ; then + libname=`eval \\$echo \"$libname_spec\"` + for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do + potential_libs=`ls $i/$libname[.-]* 2>/dev/null` + for potent_lib in $potential_libs; do + potlib="$potent_lib" # see symlink-check above in file_magic test + if eval $echo \"$potent_lib\" 2>/dev/null \ + | ${SED} 10q \ + | $EGREP "$match_pattern_regex" > /dev/null; then + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + break 2 + fi + done + done + fi + if test -n "$a_deplib" ; then + droppeddeps=yes + $echo + $echo "*** Warning: linker path does not have real file for library $a_deplib." + $echo "*** I have the capability to make that library automatically link in when" + $echo "*** you link to this library. But I can only do this if you have a" + $echo "*** shared version of the library, which you do not appear to have" + $echo "*** because I did check the linker path looking for a file starting" + if test -z "$potlib" ; then + $echo "*** with $libname but no candidates were found. (...for regex pattern test)" + else + $echo "*** with $libname and none of the candidates passed a file format test" + $echo "*** using a regex pattern. Last file checked: $potlib" + fi + fi + else + # Add a -L argument. + newdeplibs="$newdeplibs $a_deplib" + fi + done # Gone through all deplibs. + ;; + none | unknown | *) + newdeplibs="" + tmp_deplibs=`$echo "X $deplibs" | $Xsed -e 's/ -lc$//' \ + -e 's/ -[LR][^ ]*//g'` + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + for i in $predeps $postdeps ; do + # can't use Xsed below, because $i might contain '/' + tmp_deplibs=`$echo "X $tmp_deplibs" | ${SED} -e "1s,^X,," -e "s,$i,,"` + done + fi + if $echo "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' \ + | grep . >/dev/null; then + $echo + if test "X$deplibs_check_method" = "Xnone"; then + $echo "*** Warning: inter-library dependencies are not supported in this platform." + else + $echo "*** Warning: inter-library dependencies are not known to be supported." + fi + $echo "*** All declared inter-library dependencies are being dropped." + droppeddeps=yes + fi + ;; + esac + versuffix=$versuffix_save + major=$major_save + release=$release_save + libname=$libname_save + name=$name_save + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library is the System framework + newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'` + ;; + esac + + if test "$droppeddeps" = yes; then + if test "$module" = yes; then + $echo + $echo "*** Warning: libtool could not satisfy all declared inter-library" + $echo "*** dependencies of module $libname. Therefore, libtool will create" + $echo "*** a static module, that should work as long as the dlopening" + $echo "*** application is linked with the -dlopen flag." + if test -z "$global_symbol_pipe"; then + $echo + $echo "*** However, this would only work if libtool was able to extract symbol" + $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" + $echo "*** not find such a program. So, this module is probably useless." + $echo "*** \`nm' from GNU binutils and a full rebuild may help." + fi + if test "$build_old_libs" = no; then + oldlibs="$output_objdir/$libname.$libext" + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + else + $echo "*** The inter-library dependencies that have been dropped here will be" + $echo "*** automatically added whenever a program is linked with this library" + $echo "*** or is declared to -dlopen it." + + if test "$allow_undefined" = no; then + $echo + $echo "*** Since this library must not contain undefined symbols," + $echo "*** because either the platform does not support them or" + $echo "*** it was explicitly requested with -no-undefined," + $echo "*** libtool will only create a static version of it." + if test "$build_old_libs" = no; then + oldlibs="$output_objdir/$libname.$libext" + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + fi + fi + # Done checking deplibs! + deplibs=$newdeplibs + fi + + + # move library search paths that coincide with paths to not yet + # installed libraries to the beginning of the library search list + new_libs= + for path in $notinst_path; do + case " $new_libs " in + *" -L$path/$objdir "*) ;; + *) + case " $deplibs " in + *" -L$path/$objdir "*) + new_libs="$new_libs -L$path/$objdir" ;; + esac + ;; + esac + done + for deplib in $deplibs; do + case $deplib in + -L*) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs="$new_libs $deplib" ;; + esac + ;; + *) new_libs="$new_libs $deplib" ;; + esac + done + deplibs="$new_libs" + + + # All the library-specific variables (install_libdir is set above). + library_names= + old_library= + dlname= + + # Test again, we may have decided not to build it any more + if test "$build_libtool_libs" = yes; then + if test "$hardcode_into_libs" = yes; then + # Hardcode the library paths + hardcode_libdirs= + dep_rpath= + rpath="$finalize_rpath" + test "$mode" != relink && rpath="$compile_rpath$rpath" + for libdir in $rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + dep_rpath="$dep_rpath $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) perm_rpath="$perm_rpath $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + if test -n "$hardcode_libdir_flag_spec_ld"; then + eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" + else + eval dep_rpath=\"$hardcode_libdir_flag_spec\" + fi + fi + if test -n "$runpath_var" && test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + rpath="$rpath$dir:" + done + eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" + fi + test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" + fi + + shlibpath="$finalize_shlibpath" + test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" + if test -n "$shlibpath"; then + eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" + fi + + # Get the real and link names of the library. + eval shared_ext=\"$shrext_cmds\" + eval library_names=\"$library_names_spec\" + set dummy $library_names + realname="$2" + shift; shift + + if test -n "$soname_spec"; then + eval soname=\"$soname_spec\" + else + soname="$realname" + fi + if test -z "$dlname"; then + dlname=$soname + fi + + lib="$output_objdir/$realname" + linknames= + for link + do + linknames="$linknames $link" + done + + # Use standard objects if they are pic + test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then + $show "generating symbol list for \`$libname.la'" + export_symbols="$output_objdir/$libname.exp" + $run $rm $export_symbols + cmds=$export_symbols_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + if len=`expr "X$cmd" : ".*"` && + test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then + $show "$cmd" + $run eval "$cmd" || exit $? + skipped_export=false + else + # The command line is too long to execute in one step. + $show "using reloadable object file for export list..." + skipped_export=: + # Break out early, otherwise skipped_export may be + # set to false by a later but shorter cmd. + break + fi + done + IFS="$save_ifs" + if test -n "$export_symbols_regex"; then + $show "$EGREP -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\"" + $run eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' + $show "$mv \"${export_symbols}T\" \"$export_symbols\"" + $run eval '$mv "${export_symbols}T" "$export_symbols"' + fi + fi + fi + + if test -n "$export_symbols" && test -n "$include_expsyms"; then + $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"' + fi + + tmp_deplibs= + for test_deplib in $deplibs; do + case " $convenience " in + *" $test_deplib "*) ;; + *) + tmp_deplibs="$tmp_deplibs $test_deplib" + ;; + esac + done + deplibs="$tmp_deplibs" + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + else + gentop="$output_objdir/${outputname}x" + generated="$generated $gentop" + + func_extract_archives $gentop $convenience + libobjs="$libobjs $func_extract_archives_result" + fi + fi + + if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then + eval flag=\"$thread_safe_flag_spec\" + linker_flags="$linker_flags $flag" + fi + + # Make a backup of the uninstalled library when relinking + if test "$mode" = relink; then + $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $? + fi + + # Do each of the archive commands. + if test "$module" = yes && test -n "$module_cmds" ; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + eval test_cmds=\"$module_expsym_cmds\" + cmds=$module_expsym_cmds + else + eval test_cmds=\"$module_cmds\" + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + eval test_cmds=\"$archive_expsym_cmds\" + cmds=$archive_expsym_cmds + else + eval test_cmds=\"$archive_cmds\" + cmds=$archive_cmds + fi + fi + + if test "X$skipped_export" != "X:" && + len=`expr "X$test_cmds" : ".*" 2>/dev/null` && + test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then + : + else + # The command line is too long to link in one step, link piecewise. + $echo "creating reloadable object files..." + + # Save the value of $output and $libobjs because we want to + # use them later. If we have whole_archive_flag_spec, we + # want to use save_libobjs as it was before + # whole_archive_flag_spec was expanded, because we can't + # assume the linker understands whole_archive_flag_spec. + # This may have to be revisited, in case too many + # convenience libraries get linked in and end up exceeding + # the spec. + if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + fi + save_output=$output + output_la=`$echo "X$output" | $Xsed -e "$basename"` + + # Clear the reloadable object creation command queue and + # initialize k to one. + test_cmds= + concat_cmds= + objlist= + delfiles= + last_robj= + k=1 + output=$output_objdir/$output_la-${k}.$objext + # Loop over the list of objects to be linked. + for obj in $save_libobjs + do + eval test_cmds=\"$reload_cmds $objlist $last_robj\" + if test "X$objlist" = X || + { len=`expr "X$test_cmds" : ".*" 2>/dev/null` && + test "$len" -le "$max_cmd_len"; }; then + objlist="$objlist $obj" + else + # The command $test_cmds is almost too long, add a + # command to the queue. + if test "$k" -eq 1 ; then + # The first file doesn't have a previous command to add. + eval concat_cmds=\"$reload_cmds $objlist $last_robj\" + else + # All subsequent reloadable object files will link in + # the last one created. + eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\" + fi + last_robj=$output_objdir/$output_la-${k}.$objext + k=`expr $k + 1` + output=$output_objdir/$output_la-${k}.$objext + objlist=$obj + len=1 + fi + done + # Handle the remaining objects by creating one last + # reloadable object file. All subsequent reloadable object + # files will link in the last one created. + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\" + + if ${skipped_export-false}; then + $show "generating symbol list for \`$libname.la'" + export_symbols="$output_objdir/$libname.exp" + $run $rm $export_symbols + libobjs=$output + # Append the command to create the export file. + eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\" + fi + + # Set up a command to remove the reloadable object files + # after they are used. + i=0 + while test "$i" -lt "$k" + do + i=`expr $i + 1` + delfiles="$delfiles $output_objdir/$output_la-${i}.$objext" + done + + $echo "creating a temporary reloadable object file: $output" + + # Loop through the commands generated above and execute them. + save_ifs="$IFS"; IFS='~' + for cmd in $concat_cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + + libobjs=$output + # Restore the value of output. + output=$save_output + + if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + fi + # Expand the library linking commands again to reset the + # value of $libobjs for piecewise linking. + + # Do each of the archive commands. + if test "$module" = yes && test -n "$module_cmds" ; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + cmds=$module_expsym_cmds + else + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + cmds=$archive_expsym_cmds + else + cmds=$archive_cmds + fi + fi + + # Append the command to remove the reloadable object files + # to the just-reset $cmds. + eval cmds=\"\$cmds~\$rm $delfiles\" + fi + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || { + lt_exit=$? + + # Restore the uninstalled library and exit + if test "$mode" = relink; then + $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)' + fi + + exit $lt_exit + } + done + IFS="$save_ifs" + + # Restore the uninstalled library and exit + if test "$mode" = relink; then + $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $? + + if test -n "$convenience"; then + if test -z "$whole_archive_flag_spec"; then + $show "${rm}r $gentop" + $run ${rm}r "$gentop" + fi + fi + + exit $EXIT_SUCCESS + fi + + # Create links to the real library. + for linkname in $linknames; do + if test "$realname" != "$linkname"; then + $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)" + $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $? + fi + done + + # If -module or -export-dynamic was specified, set the dlname. + if test "$module" = yes || test "$export_dynamic" = yes; then + # On all known operating systems, these are identical. + dlname="$soname" + fi + fi + ;; + + obj) + if test -n "$deplibs"; then + $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2 + fi + + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2 + fi + + if test -n "$rpath"; then + $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2 + fi + + if test -n "$xrpath"; then + $echo "$modename: warning: \`-R' is ignored for objects" 1>&2 + fi + + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for objects" 1>&2 + fi + + case $output in + *.lo) + if test -n "$objs$old_deplibs"; then + $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2 + exit $EXIT_FAILURE + fi + libobj="$output" + obj=`$echo "X$output" | $Xsed -e "$lo2o"` + ;; + *) + libobj= + obj="$output" + ;; + esac + + # Delete the old objects. + $run $rm $obj $libobj + + # Objects from convenience libraries. This assumes + # single-version convenience libraries. Whenever we create + # different ones for PIC/non-PIC, this we'll have to duplicate + # the extraction. + reload_conv_objs= + gentop= + # reload_cmds runs $LD directly, so let us get rid of + # -Wl from whole_archive_flag_spec + wl= + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec"; then + eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\" + else + gentop="$output_objdir/${obj}x" + generated="$generated $gentop" + + func_extract_archives $gentop $convenience + reload_conv_objs="$reload_objs $func_extract_archives_result" + fi + fi + + # Create the old-style object. + reload_objs="$objs$old_deplibs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test + + output="$obj" + cmds=$reload_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + + # Exit if we aren't doing a library object file. + if test -z "$libobj"; then + if test -n "$gentop"; then + $show "${rm}r $gentop" + $run ${rm}r $gentop + fi + + exit $EXIT_SUCCESS + fi + + if test "$build_libtool_libs" != yes; then + if test -n "$gentop"; then + $show "${rm}r $gentop" + $run ${rm}r $gentop + fi + + # Create an invalid libtool object if no PIC, so that we don't + # accidentally link it into a program. + # $show "echo timestamp > $libobj" + # $run eval "echo timestamp > $libobj" || exit $? + exit $EXIT_SUCCESS + fi + + if test -n "$pic_flag" || test "$pic_mode" != default; then + # Only do commands if we really have different PIC objects. + reload_objs="$libobjs $reload_conv_objs" + output="$libobj" + cmds=$reload_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + fi + + if test -n "$gentop"; then + $show "${rm}r $gentop" + $run ${rm}r $gentop + fi + + exit $EXIT_SUCCESS + ;; + + prog) + case $host in + *cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;; + esac + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for programs" 1>&2 + fi + + if test "$preload" = yes; then + if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown && + test "$dlopen_self_static" = unknown; then + $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support." + fi + fi + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library is the System framework + compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'` + finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'` + ;; + esac + + case $host in + *darwin*) + # Don't allow lazy linking, it breaks C++ global constructors + if test "$tagname" = CXX ; then + compile_command="$compile_command ${wl}-bind_at_load" + finalize_command="$finalize_command ${wl}-bind_at_load" + fi + ;; + esac + + + # move library search paths that coincide with paths to not yet + # installed libraries to the beginning of the library search list + new_libs= + for path in $notinst_path; do + case " $new_libs " in + *" -L$path/$objdir "*) ;; + *) + case " $compile_deplibs " in + *" -L$path/$objdir "*) + new_libs="$new_libs -L$path/$objdir" ;; + esac + ;; + esac + done + for deplib in $compile_deplibs; do + case $deplib in + -L*) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs="$new_libs $deplib" ;; + esac + ;; + *) new_libs="$new_libs $deplib" ;; + esac + done + compile_deplibs="$new_libs" + + + compile_command="$compile_command $compile_deplibs" + finalize_command="$finalize_command $finalize_deplibs" + + if test -n "$rpath$xrpath"; then + # If the user specified any rpath flags, then add them. + for libdir in $rpath $xrpath; do + # This is the magic to use -rpath. + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" ;; + esac + done + fi + + # Now hardcode the library paths + rpath= + hardcode_libdirs= + for libdir in $compile_rpath $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + rpath="$rpath $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) perm_rpath="$perm_rpath $libdir" ;; + esac + fi + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) + testbindir=`$echo "X$libdir" | $Xsed -e 's*/lib$*/bin*'` + case :$dllsearchpath: in + *":$libdir:"*) ;; + *) dllsearchpath="$dllsearchpath:$libdir";; + esac + case :$dllsearchpath: in + *":$testbindir:"*) ;; + *) dllsearchpath="$dllsearchpath:$testbindir";; + esac + ;; + esac + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + compile_rpath="$rpath" + + rpath= + hardcode_libdirs= + for libdir in $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + rpath="$rpath $flag" + fi + elif test -n "$runpath_var"; then + case "$finalize_perm_rpath " in + *" $libdir "*) ;; + *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + finalize_rpath="$rpath" + + if test -n "$libobjs" && test "$build_old_libs" = yes; then + # Transform all the library objects into standard objects. + compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + fi + + dlsyms= + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + if test -n "$NM" && test -n "$global_symbol_pipe"; then + dlsyms="${outputname}S.c" + else + $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2 + fi + fi + + if test -n "$dlsyms"; then + case $dlsyms in + "") ;; + *.c) + # Discover the nlist of each of the dlfiles. + nlist="$output_objdir/${outputname}.nm" + + $show "$rm $nlist ${nlist}S ${nlist}T" + $run $rm "$nlist" "${nlist}S" "${nlist}T" + + # Parse the name list into a source file. + $show "creating $output_objdir/$dlsyms" + + test -z "$run" && $echo > "$output_objdir/$dlsyms" "\ +/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */ +/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */ + +#ifdef __cplusplus +extern \"C\" { +#endif + +/* Prevent the only kind of declaration conflicts we can make. */ +#define lt_preloaded_symbols some_other_symbol + +/* External symbol declarations for the compiler. */\ +" + + if test "$dlself" = yes; then + $show "generating symbol list for \`$output'" + + test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist" + + # Add our own program objects to the symbol list. + progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + for arg in $progfiles; do + $show "extracting global C symbols from \`$arg'" + $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" + done + + if test -n "$exclude_expsyms"; then + $run eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' + $run eval '$mv "$nlist"T "$nlist"' + fi + + if test -n "$export_symbols_regex"; then + $run eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' + $run eval '$mv "$nlist"T "$nlist"' + fi + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + export_symbols="$output_objdir/$outputname.exp" + $run $rm $export_symbols + $run eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' + case $host in + *cygwin* | *mingw* ) + $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' + $run eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' + ;; + esac + else + $run eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' + $run eval 'grep -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' + $run eval 'mv "$nlist"T "$nlist"' + case $host in + *cygwin* | *mingw* ) + $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' + $run eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' + ;; + esac + fi + fi + + for arg in $dlprefiles; do + $show "extracting global C symbols from \`$arg'" + name=`$echo "$arg" | ${SED} -e 's%^.*/%%'` + $run eval '$echo ": $name " >> "$nlist"' + $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" + done + + if test -z "$run"; then + # Make sure we have at least an empty file. + test -f "$nlist" || : > "$nlist" + + if test -n "$exclude_expsyms"; then + $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T + $mv "$nlist"T "$nlist" + fi + + # Try sorting and uniquifying the output. + if grep -v "^: " < "$nlist" | + if sort -k 3 /dev/null 2>&1; then + sort -k 3 + else + sort +2 + fi | + uniq > "$nlist"S; then + : + else + grep -v "^: " < "$nlist" > "$nlist"S + fi + + if test -f "$nlist"S; then + eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"' + else + $echo '/* NONE */' >> "$output_objdir/$dlsyms" + fi + + $echo >> "$output_objdir/$dlsyms" "\ + +#undef lt_preloaded_symbols + +#if defined (__STDC__) && __STDC__ +# define lt_ptr void * +#else +# define lt_ptr char * +# define const +#endif + +/* The mapping between symbol names and symbols. */ +" + + case $host in + *cygwin* | *mingw* ) + $echo >> "$output_objdir/$dlsyms" "\ +/* DATA imports from DLLs on WIN32 can't be const, because + runtime relocations are performed -- see ld's documentation + on pseudo-relocs */ +struct { +" + ;; + * ) + $echo >> "$output_objdir/$dlsyms" "\ +const struct { +" + ;; + esac + + + $echo >> "$output_objdir/$dlsyms" "\ + const char *name; + lt_ptr address; +} +lt_preloaded_symbols[] = +{\ +" + + eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms" + + $echo >> "$output_objdir/$dlsyms" "\ + {0, (lt_ptr) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif\ +" + fi + + pic_flag_for_symtable= + case $host in + # compiling the symbol table file with pic_flag works around + # a FreeBSD bug that causes programs to crash when -lm is + # linked before any other PIC object. But we must not use + # pic_flag when linking with -static. The problem exists in + # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. + *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) + case "$compile_command " in + *" -static "*) ;; + *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";; + esac;; + *-*-hpux*) + case "$compile_command " in + *" -static "*) ;; + *) pic_flag_for_symtable=" $pic_flag";; + esac + esac + + # Now compile the dynamic symbol file. + $show "(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")" + $run eval '(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $? + + # Clean up the generated files. + $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T" + $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T" + + # Transform the symbol file into the correct name. + case $host in + *cygwin* | *mingw* ) + if test -f "$output_objdir/${outputname}.def" ; then + compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%"` + finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%"` + else + compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` + finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` + fi + ;; + * ) + compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` + finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` + ;; + esac + ;; + *) + $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2 + exit $EXIT_FAILURE + ;; + esac + else + # We keep going just in case the user didn't refer to + # lt_preloaded_symbols. The linker will fail if global_symbol_pipe + # really was required. + + # Nullify the symbol file. + compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` + finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` + fi + + if test "$need_relink" = no || test "$build_libtool_libs" != yes; then + # Replace the output file specification. + compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` + link_command="$compile_command$compile_rpath" + + # We have no uninstalled library dependencies, so finalize right now. + $show "$link_command" + $run eval "$link_command" + exit_status=$? + + # Delete the generated files. + if test -n "$dlsyms"; then + $show "$rm $output_objdir/${outputname}S.${objext}" + $run $rm "$output_objdir/${outputname}S.${objext}" + fi + + exit $exit_status + fi + + if test -n "$shlibpath_var"; then + # We should set the shlibpath_var + rpath= + for dir in $temp_rpath; do + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) + # Absolute path. + rpath="$rpath$dir:" + ;; + *) + # Relative path: add a thisdir entry. + rpath="$rpath\$thisdir/$dir:" + ;; + esac + done + temp_rpath="$rpath" + fi + + if test -n "$compile_shlibpath$finalize_shlibpath"; then + compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" + fi + if test -n "$finalize_shlibpath"; then + finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" + fi + + compile_var= + finalize_var= + if test -n "$runpath_var"; then + if test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + rpath="$rpath$dir:" + done + compile_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + if test -n "$finalize_perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $finalize_perm_rpath; do + rpath="$rpath$dir:" + done + finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + fi + + if test "$no_install" = yes; then + # We don't need to create a wrapper script. + link_command="$compile_var$compile_command$compile_rpath" + # Replace the output file specification. + link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` + # Delete the old output file. + $run $rm $output + # Link the executable and exit + $show "$link_command" + $run eval "$link_command" || exit $? + exit $EXIT_SUCCESS + fi + + if test "$hardcode_action" = relink; then + # Fast installation is not supported + link_command="$compile_var$compile_command$compile_rpath" + relink_command="$finalize_var$finalize_command$finalize_rpath" + + $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2 + $echo "$modename: \`$output' will be relinked during installation" 1>&2 + else + if test "$fast_install" != no; then + link_command="$finalize_var$compile_command$finalize_rpath" + if test "$fast_install" = yes; then + relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'` + else + # fast_install is set to needless + relink_command= + fi + else + link_command="$compile_var$compile_command$compile_rpath" + relink_command="$finalize_var$finalize_command$finalize_rpath" + fi + fi + + # Replace the output file specification. + link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` + + # Delete the old output files. + $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname + + $show "$link_command" + $run eval "$link_command" || exit $? + + # Now create the wrapper script. + $show "creating $output" + + # Quote the relink command for shipping. + if test -n "$relink_command"; then + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` + relink_command="$var=\"$var_value\"; export $var; $relink_command" + fi + done + relink_command="(cd `pwd`; $relink_command)" + relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` + fi + + # Quote $echo for shipping. + if test "X$echo" = "X$SHELL $progpath --fallback-echo"; then + case $progpath in + [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; + *) qecho="$SHELL `pwd`/$progpath --fallback-echo";; + esac + qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"` + else + qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"` + fi + + # Only actually do things if our run command is non-null. + if test -z "$run"; then + # win32 will think the script is a binary if it has + # a .exe suffix, so we strip it off here. + case $output in + *.exe) output=`$echo $output|${SED} 's,.exe$,,'` ;; + esac + # test for cygwin because mv fails w/o .exe extensions + case $host in + *cygwin*) + exeext=.exe + outputname=`$echo $outputname|${SED} 's,.exe$,,'` ;; + *) exeext= ;; + esac + case $host in + *cygwin* | *mingw* ) + output_name=`basename $output` + output_path=`dirname $output` + cwrappersource="$output_path/$objdir/lt-$output_name.c" + cwrapper="$output_path/$output_name.exe" + $rm $cwrappersource $cwrapper + trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 + + cat > $cwrappersource <> $cwrappersource<<"EOF" +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if defined(PATH_MAX) +# define LT_PATHMAX PATH_MAX +#elif defined(MAXPATHLEN) +# define LT_PATHMAX MAXPATHLEN +#else +# define LT_PATHMAX 1024 +#endif + +#ifndef DIR_SEPARATOR +# define DIR_SEPARATOR '/' +# define PATH_SEPARATOR ':' +#endif + +#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ + defined (__OS2__) +# define HAVE_DOS_BASED_FILE_SYSTEM +# ifndef DIR_SEPARATOR_2 +# define DIR_SEPARATOR_2 '\\' +# endif +# ifndef PATH_SEPARATOR_2 +# define PATH_SEPARATOR_2 ';' +# endif +#endif + +#ifndef DIR_SEPARATOR_2 +# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) +#else /* DIR_SEPARATOR_2 */ +# define IS_DIR_SEPARATOR(ch) \ + (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) +#endif /* DIR_SEPARATOR_2 */ + +#ifndef PATH_SEPARATOR_2 +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) +#else /* PATH_SEPARATOR_2 */ +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) +#endif /* PATH_SEPARATOR_2 */ + +#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) +#define XFREE(stale) do { \ + if (stale) { free ((void *) stale); stale = 0; } \ +} while (0) + +/* -DDEBUG is fairly common in CFLAGS. */ +#undef DEBUG +#if defined DEBUGWRAPPER +# define DEBUG(format, ...) fprintf(stderr, format, __VA_ARGS__) +#else +# define DEBUG(format, ...) +#endif + +const char *program_name = NULL; + +void * xmalloc (size_t num); +char * xstrdup (const char *string); +const char * base_name (const char *name); +char * find_executable(const char *wrapper); +int check_executable(const char *path); +char * strendzap(char *str, const char *pat); +void lt_fatal (const char *message, ...); + +int +main (int argc, char *argv[]) +{ + char **newargz; + int i; + + program_name = (char *) xstrdup (base_name (argv[0])); + DEBUG("(main) argv[0] : %s\n",argv[0]); + DEBUG("(main) program_name : %s\n",program_name); + newargz = XMALLOC(char *, argc+2); +EOF + + cat >> $cwrappersource <> $cwrappersource <<"EOF" + newargz[1] = find_executable(argv[0]); + if (newargz[1] == NULL) + lt_fatal("Couldn't find %s", argv[0]); + DEBUG("(main) found exe at : %s\n",newargz[1]); + /* we know the script has the same name, without the .exe */ + /* so make sure newargz[1] doesn't end in .exe */ + strendzap(newargz[1],".exe"); + for (i = 1; i < argc; i++) + newargz[i+1] = xstrdup(argv[i]); + newargz[argc+1] = NULL; + + for (i=0; i> $cwrappersource <> $cwrappersource <> $cwrappersource <<"EOF" + return 127; +} + +void * +xmalloc (size_t num) +{ + void * p = (void *) malloc (num); + if (!p) + lt_fatal ("Memory exhausted"); + + return p; +} + +char * +xstrdup (const char *string) +{ + return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL +; +} + +const char * +base_name (const char *name) +{ + const char *base; + +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + /* Skip over the disk name in MSDOS pathnames. */ + if (isalpha ((unsigned char)name[0]) && name[1] == ':') + name += 2; +#endif + + for (base = name; *name; name++) + if (IS_DIR_SEPARATOR (*name)) + base = name + 1; + return base; +} + +int +check_executable(const char * path) +{ + struct stat st; + + DEBUG("(check_executable) : %s\n", path ? (*path ? path : "EMPTY!") : "NULL!"); + if ((!path) || (!*path)) + return 0; + + if ((stat (path, &st) >= 0) && + ( + /* MinGW & native WIN32 do not support S_IXOTH or S_IXGRP */ +#if defined (S_IXOTH) + ((st.st_mode & S_IXOTH) == S_IXOTH) || +#endif +#if defined (S_IXGRP) + ((st.st_mode & S_IXGRP) == S_IXGRP) || +#endif + ((st.st_mode & S_IXUSR) == S_IXUSR)) + ) + return 1; + else + return 0; +} + +/* Searches for the full path of the wrapper. Returns + newly allocated full path name if found, NULL otherwise */ +char * +find_executable (const char* wrapper) +{ + int has_slash = 0; + const char* p; + const char* p_next; + /* static buffer for getcwd */ + char tmp[LT_PATHMAX + 1]; + int tmp_len; + char* concat_name; + + DEBUG("(find_executable) : %s\n", wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!"); + + if ((wrapper == NULL) || (*wrapper == '\0')) + return NULL; + + /* Absolute path? */ +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + if (isalpha ((unsigned char)wrapper[0]) && wrapper[1] == ':') + { + concat_name = xstrdup (wrapper); + if (check_executable(concat_name)) + return concat_name; + XFREE(concat_name); + } + else + { +#endif + if (IS_DIR_SEPARATOR (wrapper[0])) + { + concat_name = xstrdup (wrapper); + if (check_executable(concat_name)) + return concat_name; + XFREE(concat_name); + } +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + } +#endif + + for (p = wrapper; *p; p++) + if (*p == '/') + { + has_slash = 1; + break; + } + if (!has_slash) + { + /* no slashes; search PATH */ + const char* path = getenv ("PATH"); + if (path != NULL) + { + for (p = path; *p; p = p_next) + { + const char* q; + size_t p_len; + for (q = p; *q; q++) + if (IS_PATH_SEPARATOR(*q)) + break; + p_len = q - p; + p_next = (*q == '\0' ? q : q + 1); + if (p_len == 0) + { + /* empty path: current directory */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal ("getcwd failed"); + tmp_len = strlen(tmp); + concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1); + memcpy (concat_name, tmp, tmp_len); + concat_name[tmp_len] = '/'; + strcpy (concat_name + tmp_len + 1, wrapper); + } + else + { + concat_name = XMALLOC(char, p_len + 1 + strlen(wrapper) + 1); + memcpy (concat_name, p, p_len); + concat_name[p_len] = '/'; + strcpy (concat_name + p_len + 1, wrapper); + } + if (check_executable(concat_name)) + return concat_name; + XFREE(concat_name); + } + } + /* not found in PATH; assume curdir */ + } + /* Relative path | not found in path: prepend cwd */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal ("getcwd failed"); + tmp_len = strlen(tmp); + concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1); + memcpy (concat_name, tmp, tmp_len); + concat_name[tmp_len] = '/'; + strcpy (concat_name + tmp_len + 1, wrapper); + + if (check_executable(concat_name)) + return concat_name; + XFREE(concat_name); + return NULL; +} + +char * +strendzap(char *str, const char *pat) +{ + size_t len, patlen; + + assert(str != NULL); + assert(pat != NULL); + + len = strlen(str); + patlen = strlen(pat); + + if (patlen <= len) + { + str += len - patlen; + if (strcmp(str, pat) == 0) + *str = '\0'; + } + return str; +} + +static void +lt_error_core (int exit_status, const char * mode, + const char * message, va_list ap) +{ + fprintf (stderr, "%s: %s: ", program_name, mode); + vfprintf (stderr, message, ap); + fprintf (stderr, ".\n"); + + if (exit_status >= 0) + exit (exit_status); +} + +void +lt_fatal (const char *message, ...) +{ + va_list ap; + va_start (ap, message); + lt_error_core (EXIT_FAILURE, "FATAL", message, ap); + va_end (ap); +} +EOF + # we should really use a build-platform specific compiler + # here, but OTOH, the wrappers (shell script and this C one) + # are only useful if you want to execute the "real" binary. + # Since the "real" binary is built for $host, then this + # wrapper might as well be built for $host, too. + $run $LTCC $LTCFLAGS -s -o $cwrapper $cwrappersource + ;; + esac + $rm $output + trap "$rm $output; exit $EXIT_FAILURE" 1 2 15 + + $echo > $output "\ +#! $SHELL + +# $output - temporary wrapper script for $objdir/$outputname +# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP +# +# The $output program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed='${SED} -e 1s/^X//' +sed_quote_subst='$sed_quote_subst' + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command=\"$relink_command\" + +# This environment variable determines our operation mode. +if test \"\$libtool_install_magic\" = \"$magic\"; then + # install mode needs the following variable: + notinst_deplibs='$notinst_deplibs' +else + # When we are sourced in execute mode, \$file and \$echo are already set. + if test \"\$libtool_execute_magic\" != \"$magic\"; then + echo=\"$qecho\" + file=\"\$0\" + # Make sure echo works. + if test \"X\$1\" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift + elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then + # Yippee, \$echo works! + : + else + # Restart under the correct shell, and then maybe \$echo will work. + exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} + fi + fi\ +" + $echo >> $output "\ + + # Find the directory that this script lives in. + thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` + test \"x\$thisdir\" = \"x\$file\" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` + while test -n \"\$file\"; do + destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` + + # If there was a directory component, then change thisdir. + if test \"x\$destdir\" != \"x\$file\"; then + case \"\$destdir\" in + [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; + *) thisdir=\"\$thisdir/\$destdir\" ;; + esac + fi + + file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\` + file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` + done + + # Try to get the absolute directory name. + absdir=\`cd \"\$thisdir\" && pwd\` + test -n \"\$absdir\" && thisdir=\"\$absdir\" +" + + if test "$fast_install" = yes; then + $echo >> $output "\ + program=lt-'$outputname'$exeext + progdir=\"\$thisdir/$objdir\" + + if test ! -f \"\$progdir/\$program\" || \\ + { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ + test \"X\$file\" != \"X\$progdir/\$program\"; }; then + + file=\"\$\$-\$program\" + + if test ! -d \"\$progdir\"; then + $mkdir \"\$progdir\" + else + $rm \"\$progdir/\$file\" + fi" + + $echo >> $output "\ + + # relink executable if necessary + if test -n \"\$relink_command\"; then + if relink_command_output=\`eval \$relink_command 2>&1\`; then : + else + $echo \"\$relink_command_output\" >&2 + $rm \"\$progdir/\$file\" + exit $EXIT_FAILURE + fi + fi + + $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || + { $rm \"\$progdir/\$program\"; + $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; } + $rm \"\$progdir/\$file\" + fi" + else + $echo >> $output "\ + program='$outputname' + progdir=\"\$thisdir/$objdir\" +" + fi + + $echo >> $output "\ + + if test -f \"\$progdir/\$program\"; then" + + # Export our shlibpath_var if we have one. + if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then + $echo >> $output "\ + # Add our own library path to $shlibpath_var + $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" + + # Some systems cannot cope with colon-terminated $shlibpath_var + # The second colon is a workaround for a bug in BeOS R4 sed + $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` + + export $shlibpath_var +" + fi + + # fixup the dll searchpath if we need to. + if test -n "$dllsearchpath"; then + $echo >> $output "\ + # Add the dll search path components to the executable PATH + PATH=$dllsearchpath:\$PATH +" + fi + + $echo >> $output "\ + if test \"\$libtool_execute_magic\" != \"$magic\"; then + # Run the actual program with our arguments. + + # Make sure env LD_LIBRARY_PATH does not mess us up + if test -n \"\${LD_LIBRARY_PATH+set}\"; then + export LD_LIBRARY_PATH=\$progdir:\$LD_LIBRARY_PATH + fi +" + case $host in + # Backslashes separate directories on plain windows + *-*-mingw | *-*-os2*) + $echo >> $output "\ + exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} +" + ;; + + *) + $echo >> $output "\ + exec \"\$progdir/\$program\" \${1+\"\$@\"} +" + ;; + esac + $echo >> $output "\ + \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\" + exit $EXIT_FAILURE + fi + else + # The program doesn't exist. + \$echo \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 + \$echo \"This script is just a wrapper for \$program.\" 1>&2 + $echo \"See the $PACKAGE documentation for more information.\" 1>&2 + exit $EXIT_FAILURE + fi +fi\ +" + chmod +x $output + fi + exit $EXIT_SUCCESS + ;; + esac + + # See if we need to build an old-fashioned archive. + for oldlib in $oldlibs; do + + if test "$build_libtool_libs" = convenience; then + oldobjs="$libobjs_save" + addlibs="$convenience" + build_libtool_libs=no + else + if test "$build_libtool_libs" = module; then + oldobjs="$libobjs_save" + build_libtool_libs=no + else + oldobjs="$old_deplibs $non_pic_objects" + fi + addlibs="$old_convenience" + fi + + if test -n "$addlibs"; then + gentop="$output_objdir/${outputname}x" + generated="$generated $gentop" + + func_extract_archives $gentop $addlibs + oldobjs="$oldobjs $func_extract_archives_result" + fi + + # Do each command in the archive commands. + if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then + cmds=$old_archive_from_new_cmds + else + # POSIX demands no paths to be encoded in archives. We have + # to avoid creating archives with duplicate basenames if we + # might have to extract them afterwards, e.g., when creating a + # static archive out of a convenience library, or when linking + # the entirety of a libtool archive into another (currently + # not supported by libtool). + if (for obj in $oldobjs + do + $echo "X$obj" | $Xsed -e 's%^.*/%%' + done | sort | sort -uc >/dev/null 2>&1); then + : + else + $echo "copying selected object files to avoid basename conflicts..." + + if test -z "$gentop"; then + gentop="$output_objdir/${outputname}x" + generated="$generated $gentop" + + $show "${rm}r $gentop" + $run ${rm}r "$gentop" + $show "$mkdir $gentop" + $run $mkdir "$gentop" + exit_status=$? + if test "$exit_status" -ne 0 && test ! -d "$gentop"; then + exit $exit_status + fi + fi + + save_oldobjs=$oldobjs + oldobjs= + counter=1 + for obj in $save_oldobjs + do + objbase=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` + case " $oldobjs " in + " ") oldobjs=$obj ;; + *[\ /]"$objbase "*) + while :; do + # Make sure we don't pick an alternate name that also + # overlaps. + newobj=lt$counter-$objbase + counter=`expr $counter + 1` + case " $oldobjs " in + *[\ /]"$newobj "*) ;; + *) if test ! -f "$gentop/$newobj"; then break; fi ;; + esac + done + $show "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" + $run ln "$obj" "$gentop/$newobj" || + $run cp "$obj" "$gentop/$newobj" + oldobjs="$oldobjs $gentop/$newobj" + ;; + *) oldobjs="$oldobjs $obj" ;; + esac + done + fi + + eval cmds=\"$old_archive_cmds\" + + if len=`expr "X$cmds" : ".*"` && + test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then + cmds=$old_archive_cmds + else + # the command line is too long to link in one step, link in parts + $echo "using piecewise archive linking..." + save_RANLIB=$RANLIB + RANLIB=: + objlist= + concat_cmds= + save_oldobjs=$oldobjs + + # Is there a better way of finding the last object in the list? + for obj in $save_oldobjs + do + last_oldobj=$obj + done + for obj in $save_oldobjs + do + oldobjs="$objlist $obj" + objlist="$objlist $obj" + eval test_cmds=\"$old_archive_cmds\" + if len=`expr "X$test_cmds" : ".*" 2>/dev/null` && + test "$len" -le "$max_cmd_len"; then + : + else + # the above command should be used before it gets too long + oldobjs=$objlist + if test "$obj" = "$last_oldobj" ; then + RANLIB=$save_RANLIB + fi + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" + objlist= + fi + done + RANLIB=$save_RANLIB + oldobjs=$objlist + if test "X$oldobjs" = "X" ; then + eval cmds=\"\$concat_cmds\" + else + eval cmds=\"\$concat_cmds~\$old_archive_cmds\" + fi + fi + fi + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + eval cmd=\"$cmd\" + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + done + + if test -n "$generated"; then + $show "${rm}r$generated" + $run ${rm}r$generated + fi + + # Now create the libtool archive. + case $output in + *.la) + old_library= + test "$build_old_libs" = yes && old_library="$libname.$libext" + $show "creating $output" + + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` + relink_command="$var=\"$var_value\"; export $var; $relink_command" + fi + done + # Quote the link command for shipping. + relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" + relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` + if test "$hardcode_automatic" = yes ; then + relink_command= + fi + + + # Only create the output if not a dry run. + if test -z "$run"; then + for installed in no yes; do + if test "$installed" = yes; then + if test -z "$install_libdir"; then + break + fi + output="$output_objdir/$outputname"i + # Replace all uninstalled libtool libraries with the installed ones + newdependency_libs= + for deplib in $dependency_libs; do + case $deplib in + *.la) + name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'` + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + if test -z "$libdir"; then + $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 + exit $EXIT_FAILURE + fi + if test "X$EGREP" = X ; then + EGREP=egrep + fi + # We do not want portage's install root ($D) present. Check only for + # this if the .la is being installed. + if test "$installed" = yes && test "$D"; then + eval mynewdependency_lib=`echo "$libdir/$name" |sed -e "s:$D:/:g" -e 's:/\+:/:g'` + else + mynewdependency_lib="$libdir/$name" + fi + # Do not add duplicates + if test "$mynewdependency_lib"; then + my_little_ninja_foo_1=`echo $newdependency_libs |$EGREP -e "$mynewdependency_lib"` + if test -z "$my_little_ninja_foo_1"; then + newdependency_libs="$newdependency_libs $mynewdependency_lib" + fi + fi + ;; + *) + if test "$installed" = yes; then + # Rather use S=WORKDIR if our version of portage supports it. + # This is because some ebuild (gcc) do not use $S as buildroot. + if test "$PWORKDIR"; then + S="$PWORKDIR" + fi + # We do not want portage's build root ($S) present. + my_little_ninja_foo_2=`echo $deplib |$EGREP -e "$S"` + # We do not want portage's install root ($D) present. + my_little_ninja_foo_3=`echo $deplib |$EGREP -e "$D"` + if test -n "$my_little_ninja_foo_2" && test "$S"; then + mynewdependency_lib="" + elif test -n "$my_little_ninja_foo_3" && test "$D"; then + eval mynewdependency_lib=`echo "$deplib" |sed -e "s:$D:/:g" -e 's:/\+:/:g'` + else + mynewdependency_lib="$deplib" + fi + else + mynewdependency_lib="$deplib" + fi + # Do not add duplicates + if test "$mynewdependency_lib"; then + my_little_ninja_foo_4=`echo $newdependency_libs |$EGREP -e "$mynewdependency_lib"` + if test -z "$my_little_ninja_foo_4"; then + newdependency_libs="$newdependency_libs $mynewdependency_lib" + fi + fi + ;; + esac + done + dependency_libs="$newdependency_libs" + newdlfiles= + for lib in $dlfiles; do + name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + if test -z "$libdir"; then + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + exit $EXIT_FAILURE + fi + newdlfiles="$newdlfiles $libdir/$name" + done + dlfiles="$newdlfiles" + newdlprefiles= + for lib in $dlprefiles; do + name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + if test -z "$libdir"; then + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + exit $EXIT_FAILURE + fi + newdlprefiles="$newdlprefiles $libdir/$name" + done + dlprefiles="$newdlprefiles" + else + newdlfiles= + for lib in $dlfiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; + *) abs=`pwd`"/$lib" ;; + esac + newdlfiles="$newdlfiles $abs" + done + dlfiles="$newdlfiles" + newdlprefiles= + for lib in $dlprefiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; + *) abs=`pwd`"/$lib" ;; + esac + newdlprefiles="$newdlprefiles $abs" + done + dlprefiles="$newdlprefiles" + fi + $rm $output + # place dlname in correct position for cygwin + tdlname=$dlname + case $host,$output,$installed,$module,$dlname in + *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; + esac + # Do not add duplicates + if test "$installed" = yes && test "$D"; then + install_libdir=`echo "$install_libdir" |sed -e "s:$D:/:g" -e 's:/\+:/:g'` + fi + $echo > $output "\ +# $outputname - a libtool library file +# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='$tdlname' + +# Names of this library. +library_names='$library_names' + +# The name of the static archive. +old_library='$old_library' + +# Libraries that this one depends upon. +dependency_libs='$dependency_libs' + +# Version information for $libname. +current=$current +age=$age +revision=$revision + +# Is this an already installed library? +installed=$installed + +# Should we warn about portability when linking against -modules? +shouldnotlink=$module + +# Files to dlopen/dlpreopen +dlopen='$dlfiles' +dlpreopen='$dlprefiles' + +# Directory that this library needs to be installed in: +libdir='$install_libdir'" + if test "$installed" = no && test "$need_relink" = yes; then + $echo >> $output "\ +relink_command=\"$relink_command\"" + fi + done + fi + + # Do a symbolic link so that the libtool archive can be found in + # LD_LIBRARY_PATH before the program is installed. + $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" + $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $? + ;; + esac + exit $EXIT_SUCCESS + ;; + + # libtool install mode + install) + modename="$modename: install" + + # There may be an optional sh(1) argument at the beginning of + # install_prog (especially on Windows NT). + if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || + # Allow the use of GNU shtool's install command. + $echo "X$nonopt" | grep shtool > /dev/null; then + # Aesthetically quote it. + arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + install_prog="$arg " + arg="$1" + shift + else + install_prog= + arg=$nonopt + fi + + # The real first argument should be the name of the installation program. + # Aesthetically quote it. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + install_prog="$install_prog$arg" + + # We need to accept at least all the BSD install flags. + dest= + files= + opts= + prev= + install_type= + isdir=no + stripme= + for arg + do + if test -n "$dest"; then + files="$files $dest" + dest=$arg + continue + fi + + case $arg in + -d) isdir=yes ;; + -f) + case " $install_prog " in + *[\\\ /]cp\ *) ;; + *) prev=$arg ;; + esac + ;; + -g | -m | -o) prev=$arg ;; + -s) + stripme=" -s" + continue + ;; + -*) + ;; + *) + # If the previous option needed an argument, then skip it. + if test -n "$prev"; then + prev= + else + dest=$arg + continue + fi + ;; + esac + + # Aesthetically quote the argument. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + install_prog="$install_prog $arg" + done + + if test -z "$install_prog"; then + $echo "$modename: you must specify an install program" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + if test -n "$prev"; then + $echo "$modename: the \`$prev' option requires an argument" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + if test -z "$files"; then + if test -z "$dest"; then + $echo "$modename: no file or destination specified" 1>&2 + else + $echo "$modename: you must specify a destination" 1>&2 + fi + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Strip any trailing slash from the destination. + dest=`$echo "X$dest" | $Xsed -e 's%/$%%'` + + # Check to see that the destination is a directory. + test -d "$dest" && isdir=yes + if test "$isdir" = yes; then + destdir="$dest" + destname= + else + destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'` + test "X$destdir" = "X$dest" && destdir=. + destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'` + + # Not a directory, so check to see that there is only one file specified. + set dummy $files + if test "$#" -gt 2; then + $echo "$modename: \`$dest' is not a directory" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + fi + case $destdir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + for file in $files; do + case $file in + *.lo) ;; + *) + $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + ;; + esac + done + ;; + esac + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic="$magic" + + staticlibs= + future_libdirs= + current_libdirs= + for file in $files; do + + # Do each installation. + case $file in + *.$libext) + # Do the static libraries later. + staticlibs="$staticlibs $file" + ;; + + *.la) + # Check to see that this really is a libtool archive. + if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : + else + $echo "$modename: \`$file' is not a valid libtool archive" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + library_names= + old_library= + relink_command= + # If there is no directory component, then add one. + case $file in + */* | *\\*) . $file ;; + *) . ./$file ;; + esac + + # Add the libdir to current_libdirs if it is the destination. + if test "X$destdir" = "X$libdir"; then + case "$current_libdirs " in + *" $libdir "*) ;; + *) current_libdirs="$current_libdirs $libdir" ;; + esac + else + # Note the libdir as a future libdir. + case "$future_libdirs " in + *" $libdir "*) ;; + *) future_libdirs="$future_libdirs $libdir" ;; + esac + fi + + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/ + test "X$dir" = "X$file/" && dir= + dir="$dir$objdir" + + if test -n "$relink_command"; then + # Determine the prefix the user has applied to our future dir. + inst_prefix_dir=`$echo "$destdir" | $SED "s%$libdir\$%%"` + + # Don't allow the user to place us outside of our expected + # location b/c this prevents finding dependent libraries that + # are installed to the same prefix. + # At present, this check doesn't affect windows .dll's that + # are installed into $libdir/../bin (currently, that works fine) + # but it's something to keep an eye on. + if test "$inst_prefix_dir" = "$destdir"; then + $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2 + exit $EXIT_FAILURE + fi + + if test -n "$inst_prefix_dir"; then + # Stick the inst_prefix_dir data into the link command. + relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` + else + relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%%"` + fi + + $echo "$modename: warning: relinking \`$file'" 1>&2 + $show "$relink_command" + if $run eval "$relink_command"; then : + else + $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 + exit $EXIT_FAILURE + fi + fi + + # See the names of the shared library. + set dummy $library_names + if test -n "$2"; then + realname="$2" + shift + shift + + srcname="$realname" + test -n "$relink_command" && srcname="$realname"T + + # Install the shared library and build the symlinks. + $show "$install_prog $dir/$srcname $destdir/$realname" + $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $? + if test -n "$stripme" && test -n "$striplib"; then + $show "$striplib $destdir/$realname" + $run eval "$striplib $destdir/$realname" || exit $? + fi + + if test "$#" -gt 0; then + # Delete the old symlinks, and create new ones. + # Try `ln -sf' first, because the `ln' binary might depend on + # the symlink we replace! Solaris /bin/ln does not understand -f, + # so we also need to try rm && ln -s. + for linkname + do + if test "$linkname" != "$realname"; then + $show "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })" + $run eval "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })" + fi + done + fi + + # Do each command in the postinstall commands. + lib="$destdir/$realname" + cmds=$postinstall_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || { + lt_exit=$? + + # Restore the uninstalled library and exit + if test "$mode" = relink; then + $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)' + fi + + exit $lt_exit + } + done + IFS="$save_ifs" + fi + + # Install the pseudo-library for information purposes. + name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + instname="$dir/$name"i + $show "$install_prog $instname $destdir/$name" + $run eval "$install_prog $instname $destdir/$name" || exit $? + + # Maybe install the static library, too. + test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" + ;; + + *.lo) + # Install (i.e. copy) a libtool object. + + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile="$destdir/$destname" + else + destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + destfile="$destdir/$destfile" + fi + + # Deduce the name of the destination old-style object file. + case $destfile in + *.lo) + staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"` + ;; + *.$objext) + staticdest="$destfile" + destfile= + ;; + *) + $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + # Install the libtool object if requested. + if test -n "$destfile"; then + $show "$install_prog $file $destfile" + $run eval "$install_prog $file $destfile" || exit $? + fi + + # Install the old object if enabled. + if test "$build_old_libs" = yes; then + # Deduce the name of the old-style object file. + staticobj=`$echo "X$file" | $Xsed -e "$lo2o"` + + $show "$install_prog $staticobj $staticdest" + $run eval "$install_prog \$staticobj \$staticdest" || exit $? + fi + exit $EXIT_SUCCESS + ;; + + *) + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile="$destdir/$destname" + else + destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + destfile="$destdir/$destfile" + fi + + # If the file is missing, and there is a .exe on the end, strip it + # because it is most likely a libtool script we actually want to + # install + stripped_ext="" + case $file in + *.exe) + if test ! -f "$file"; then + file=`$echo $file|${SED} 's,.exe$,,'` + stripped_ext=".exe" + fi + ;; + esac + + # Do a test to see if this is really a libtool program. + case $host in + *cygwin*|*mingw*) + wrapper=`$echo $file | ${SED} -e 's,.exe$,,'` + ;; + *) + wrapper=$file + ;; + esac + if (${SED} -e '4q' $wrapper | grep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then + notinst_deplibs= + relink_command= + + # Note that it is not necessary on cygwin/mingw to append a dot to + # foo even if both foo and FILE.exe exist: automatic-append-.exe + # behavior happens only for exec(3), not for open(2)! Also, sourcing + # `FILE.' does not work on cygwin managed mounts. + # + # If there is no directory component, then add one. + case $wrapper in + */* | *\\*) . ${wrapper} ;; + *) . ./${wrapper} ;; + esac + + # Check the variables that should have been set. + if test -z "$notinst_deplibs"; then + $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2 + exit $EXIT_FAILURE + fi + + finalize=yes + for lib in $notinst_deplibs; do + # Check to see that each library is installed. + libdir= + if test -f "$lib"; then + # If there is no directory component, then add one. + case $lib in + */* | *\\*) . $lib ;; + *) . ./$lib ;; + esac + fi + libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test + if test -n "$libdir" && test ! -f "$libfile"; then + $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2 + finalize=no + fi + done + + relink_command= + # Note that it is not necessary on cygwin/mingw to append a dot to + # foo even if both foo and FILE.exe exist: automatic-append-.exe + # behavior happens only for exec(3), not for open(2)! Also, sourcing + # `FILE.' does not work on cygwin managed mounts. + # + # If there is no directory component, then add one. + case $wrapper in + */* | *\\*) . ${wrapper} ;; + *) . ./${wrapper} ;; + esac + + outputname= + if test "$fast_install" = no && test -n "$relink_command"; then + if test "$finalize" = yes && test -z "$run"; then + tmpdir=`func_mktempdir` + file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'` + outputname="$tmpdir/$file" + # Replace the output file specification. + relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` + + $show "$relink_command" + if $run eval "$relink_command"; then : + else + $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 + ${rm}r "$tmpdir" + continue + fi + file="$outputname" + else + $echo "$modename: warning: cannot relink \`$file'" 1>&2 + fi + else + # Install the binary that we compiled earlier. + file=`$echo "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` + fi + fi + + # remove .exe since cygwin /usr/bin/install will append another + # one anyway + case $install_prog,$host in + */usr/bin/install*,*cygwin*) + case $file:$destfile in + *.exe:*.exe) + # this is ok + ;; + *.exe:*) + destfile=$destfile.exe + ;; + *:*.exe) + destfile=`$echo $destfile | ${SED} -e 's,.exe$,,'` + ;; + esac + ;; + esac + $show "$install_prog$stripme $file $destfile" + $run eval "$install_prog\$stripme \$file \$destfile" || exit $? + test -n "$outputname" && ${rm}r "$tmpdir" + ;; + esac + done + + for file in $staticlibs; do + name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + + # Set up the ranlib parameters. + oldlib="$destdir/$name" + + $show "$install_prog $file $oldlib" + $run eval "$install_prog \$file \$oldlib" || exit $? + + if test -n "$stripme" && test -n "$old_striplib"; then + $show "$old_striplib $oldlib" + $run eval "$old_striplib $oldlib" || exit $? + fi + + # Do each command in the postinstall commands. + cmds=$old_postinstall_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + done + + if test -n "$future_libdirs"; then + $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2 + fi + + if test -n "$current_libdirs"; then + # Maybe just do a dry run. + test -n "$run" && current_libdirs=" -n$current_libdirs" + exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' + else + exit $EXIT_SUCCESS + fi + ;; + + # libtool finish mode + finish) + modename="$modename: finish" + libdirs="$nonopt" + admincmds= + + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then + for dir + do + libdirs="$libdirs $dir" + done + + for libdir in $libdirs; do + if test -n "$finish_cmds"; then + # Do each command in the finish commands. + cmds=$finish_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || admincmds="$admincmds + $cmd" + done + IFS="$save_ifs" + fi + if test -n "$finish_eval"; then + # Do the single finish_eval. + eval cmds=\"$finish_eval\" + $run eval "$cmds" || admincmds="$admincmds + $cmds" + fi + done + fi + + # Exit here if they wanted silent mode. + test "$show" = : && exit $EXIT_SUCCESS + + $echo "X----------------------------------------------------------------------" | $Xsed + $echo "Libraries have been installed in:" + for libdir in $libdirs; do + $echo " $libdir" + done + $echo + $echo "If you ever happen to want to link against installed libraries" + $echo "in a given directory, LIBDIR, you must either use libtool, and" + $echo "specify the full pathname of the library, or use the \`-LLIBDIR'" + $echo "flag during linking and do at least one of the following:" + if test -n "$shlibpath_var"; then + $echo " - add LIBDIR to the \`$shlibpath_var' environment variable" + $echo " during execution" + fi + if test -n "$runpath_var"; then + $echo " - add LIBDIR to the \`$runpath_var' environment variable" + $echo " during linking" + fi + if test -n "$hardcode_libdir_flag_spec"; then + libdir=LIBDIR + eval flag=\"$hardcode_libdir_flag_spec\" + + $echo " - use the \`$flag' linker flag" + fi + if test -n "$admincmds"; then + $echo " - have your system administrator run these commands:$admincmds" + fi + if test -f /etc/ld.so.conf; then + $echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" + fi + $echo + $echo "See any operating system documentation about shared libraries for" + $echo "more information, such as the ld(1) and ld.so(8) manual pages." + $echo "X----------------------------------------------------------------------" | $Xsed + exit $EXIT_SUCCESS + ;; + + # libtool execute mode + execute) + modename="$modename: execute" + + # The first argument is the command name. + cmd="$nonopt" + if test -z "$cmd"; then + $echo "$modename: you must specify a COMMAND" 1>&2 + $echo "$help" + exit $EXIT_FAILURE + fi + + # Handle -dlopen flags immediately. + for file in $execute_dlfiles; do + if test ! -f "$file"; then + $echo "$modename: \`$file' is not a file" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + dir= + case $file in + *.la) + # Check to see that this really is a libtool archive. + if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : + else + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Read the libtool library. + dlname= + library_names= + + # If there is no directory component, then add one. + case $file in + */* | *\\*) . $file ;; + *) . ./$file ;; + esac + + # Skip this library if it cannot be dlopened. + if test -z "$dlname"; then + # Warn if it was a shared library. + test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'" + continue + fi + + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` + test "X$dir" = "X$file" && dir=. + + if test -f "$dir/$objdir/$dlname"; then + dir="$dir/$objdir" + else + $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2 + exit $EXIT_FAILURE + fi + ;; + + *.lo) + # Just add the directory containing the .lo file. + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` + test "X$dir" = "X$file" && dir=. + ;; + + *) + $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2 + continue + ;; + esac + + # Get the absolute pathname. + absdir=`cd "$dir" && pwd` + test -n "$absdir" && dir="$absdir" + + # Now add the directory to shlibpath_var. + if eval "test -z \"\$$shlibpath_var\""; then + eval "$shlibpath_var=\"\$dir\"" + else + eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" + fi + done + + # This variable tells wrapper scripts just to set shlibpath_var + # rather than running their programs. + libtool_execute_magic="$magic" + + # Check if any of the arguments is a wrapper script. + args= + for file + do + case $file in + -*) ;; + *) + # Do a test to see if this is really a libtool program. + if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + # If there is no directory component, then add one. + case $file in + */* | *\\*) . $file ;; + *) . ./$file ;; + esac + + # Transform arg to wrapped name. + file="$progdir/$program" + fi + ;; + esac + # Quote arguments (to preserve shell metacharacters). + file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"` + args="$args \"$file\"" + done + + if test -z "$run"; then + if test -n "$shlibpath_var"; then + # Export the shlibpath_var. + eval "export $shlibpath_var" + fi + + # Restore saved environment variables + if test "${save_LC_ALL+set}" = set; then + LC_ALL="$save_LC_ALL"; export LC_ALL + fi + if test "${save_LANG+set}" = set; then + LANG="$save_LANG"; export LANG + fi + + # Now prepare to actually exec the command. + exec_cmd="\$cmd$args" + else + # Display what would be done. + if test -n "$shlibpath_var"; then + eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\"" + $echo "export $shlibpath_var" + fi + $echo "$cmd$args" + exit $EXIT_SUCCESS + fi + ;; + + # libtool clean and uninstall mode + clean | uninstall) + modename="$modename: $mode" + rm="$nonopt" + files= + rmforce= + exit_status=0 + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic="$magic" + + for arg + do + case $arg in + -f) rm="$rm $arg"; rmforce=yes ;; + -*) rm="$rm $arg" ;; + *) files="$files $arg" ;; + esac + done + + if test -z "$rm"; then + $echo "$modename: you must specify an RM program" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + rmdirs= + + origobjdir="$objdir" + for file in $files; do + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` + if test "X$dir" = "X$file"; then + dir=. + objdir="$origobjdir" + else + objdir="$dir/$origobjdir" + fi + name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + test "$mode" = uninstall && objdir="$dir" + + # Remember objdir for removal later, being careful to avoid duplicates + if test "$mode" = clean; then + case " $rmdirs " in + *" $objdir "*) ;; + *) rmdirs="$rmdirs $objdir" ;; + esac + fi + + # Don't error if the file doesn't exist and rm -f was used. + if (test -L "$file") >/dev/null 2>&1 \ + || (test -h "$file") >/dev/null 2>&1 \ + || test -f "$file"; then + : + elif test -d "$file"; then + exit_status=1 + continue + elif test "$rmforce" = yes; then + continue + fi + + rmfiles="$file" + + case $name in + *.la) + # Possibly a libtool archive, so verify it. + if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + . $dir/$name + + # Delete the libtool libraries and symlinks. + for n in $library_names; do + rmfiles="$rmfiles $objdir/$n" + done + test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" + + case "$mode" in + clean) + case " $library_names " in + # " " in the beginning catches empty $dlname + *" $dlname "*) ;; + *) rmfiles="$rmfiles $objdir/$dlname" ;; + esac + test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" + ;; + uninstall) + if test -n "$library_names"; then + # Do each command in the postuninstall commands. + cmds=$postuninstall_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" + if test "$?" -ne 0 && test "$rmforce" != yes; then + exit_status=1 + fi + done + IFS="$save_ifs" + fi + + if test -n "$old_library"; then + # Do each command in the old_postuninstall commands. + cmds=$old_postuninstall_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" + if test "$?" -ne 0 && test "$rmforce" != yes; then + exit_status=1 + fi + done + IFS="$save_ifs" + fi + # FIXME: should reinstall the best remaining shared library. + ;; + esac + fi + ;; + + *.lo) + # Possibly a libtool object, so verify it. + if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + + # Read the .lo file + . $dir/$name + + # Add PIC object to the list of files to remove. + if test -n "$pic_object" \ + && test "$pic_object" != none; then + rmfiles="$rmfiles $dir/$pic_object" + fi + + # Add non-PIC object to the list of files to remove. + if test -n "$non_pic_object" \ + && test "$non_pic_object" != none; then + rmfiles="$rmfiles $dir/$non_pic_object" + fi + fi + ;; + + *) + if test "$mode" = clean ; then + noexename=$name + case $file in + *.exe) + file=`$echo $file|${SED} 's,.exe$,,'` + noexename=`$echo $name|${SED} 's,.exe$,,'` + # $file with .exe has already been added to rmfiles, + # add $file without .exe + rmfiles="$rmfiles $file" + ;; + esac + # Do a test to see if this is a libtool program. + if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + relink_command= + . $dir/$noexename + + # note $name still contains .exe if it was in $file originally + # as does the version of $file that was added into $rmfiles + rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" + if test "$fast_install" = yes && test -n "$relink_command"; then + rmfiles="$rmfiles $objdir/lt-$name" + fi + if test "X$noexename" != "X$name" ; then + rmfiles="$rmfiles $objdir/lt-${noexename}.c" + fi + fi + fi + ;; + esac + $show "$rm $rmfiles" + $run $rm $rmfiles || exit_status=1 + done + objdir="$origobjdir" + + # Try to remove the ${objdir}s in the directories where we deleted files + for dir in $rmdirs; do + if test -d "$dir"; then + $show "rmdir $dir" + $run rmdir $dir >/dev/null 2>&1 + fi + done + + exit $exit_status + ;; + + "") + $echo "$modename: you must specify a MODE" 1>&2 + $echo "$generic_help" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + if test -z "$exec_cmd"; then + $echo "$modename: invalid operation mode \`$mode'" 1>&2 + $echo "$generic_help" 1>&2 + exit $EXIT_FAILURE + fi +fi # test -z "$show_help" + +if test -n "$exec_cmd"; then + eval exec $exec_cmd + exit $EXIT_FAILURE +fi + +# We need to display help for each of the modes. +case $mode in +"") $echo \ +"Usage: $modename [OPTION]... [MODE-ARG]... + +Provide generalized library-building support services. + + --config show all configuration variables + --debug enable verbose shell tracing +-n, --dry-run display commands without modifying any files + --features display basic configuration information and exit + --finish same as \`--mode=finish' + --help display this help message and exit + --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS] + --quiet same as \`--silent' + --silent don't print informational messages + --tag=TAG use configuration variables from tag TAG + --version print version information + +MODE must be one of the following: + + clean remove files from the build directory + compile compile a source file into a libtool object + execute automatically set library path, then run a program + finish complete the installation of libtool libraries + install install libraries or executables + link create a library or an executable + uninstall remove libraries from an installed directory + +MODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for +a more detailed description of MODE. + +Report bugs to ." + exit $EXIT_SUCCESS + ;; + +clean) + $echo \ +"Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE... + +Remove files from the build directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed +to RM. + +If FILE is a libtool library, object or program, all the files associated +with it are deleted. Otherwise, only FILE itself is deleted using RM." + ;; + +compile) + $echo \ +"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE + +Compile a source file into a libtool library object. + +This mode accepts the following additional options: + + -o OUTPUT-FILE set the output file name to OUTPUT-FILE + -prefer-pic try to building PIC objects only + -prefer-non-pic try to building non-PIC objects only + -static always build a \`.o' file suitable for static linking + +COMPILE-COMMAND is a command to be used in creating a \`standard' object file +from the given SOURCEFILE. + +The output file name is determined by removing the directory component from +SOURCEFILE, then substituting the C source code suffix \`.c' with the +library object suffix, \`.lo'." + ;; + +execute) + $echo \ +"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]... + +Automatically set library path, then run a program. + +This mode accepts the following additional options: + + -dlopen FILE add the directory containing FILE to the library path + +This mode sets the library path environment variable according to \`-dlopen' +flags. + +If any of the ARGS are libtool executable wrappers, then they are translated +into their corresponding uninstalled binary, and any of their required library +directories are added to the library path. + +Then, COMMAND is executed, with ARGS as arguments." + ;; + +finish) + $echo \ +"Usage: $modename [OPTION]... --mode=finish [LIBDIR]... + +Complete the installation of libtool libraries. + +Each LIBDIR is a directory that contains libtool libraries. + +The commands that this mode executes may require superuser privileges. Use +the \`--dry-run' option if you just want to see what would be executed." + ;; + +install) + $echo \ +"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND... + +Install executables or libraries. + +INSTALL-COMMAND is the installation command. The first component should be +either the \`install' or \`cp' program. + +The rest of the components are interpreted as arguments to that command (only +BSD-compatible install options are recognized)." + ;; + +link) + $echo \ +"Usage: $modename [OPTION]... --mode=link LINK-COMMAND... + +Link object files or libraries together to form another library, or to +create an executable program. + +LINK-COMMAND is a command using the C compiler that you would use to create +a program from several object files. + +The following components of LINK-COMMAND are treated specially: + + -all-static do not do any dynamic linking at all + -avoid-version do not add a version suffix if possible + -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime + -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols + -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) + -export-symbols SYMFILE + try to export only the symbols listed in SYMFILE + -export-symbols-regex REGEX + try to export only the symbols matching REGEX + -LLIBDIR search LIBDIR for required installed libraries + -lNAME OUTPUT-FILE requires the installed library libNAME + -module build a library that can dlopened + -no-fast-install disable the fast-install mode + -no-install link a not-installable executable + -no-undefined declare that a library does not refer to external symbols + -o OUTPUT-FILE create OUTPUT-FILE from the specified objects + -objectlist FILE Use a list of object files found in FILE to specify objects + -precious-files-regex REGEX + don't remove output files matching REGEX + -release RELEASE specify package release information + -rpath LIBDIR the created library will eventually be installed in LIBDIR + -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries + -static do not do any dynamic linking of libtool libraries + -version-info CURRENT[:REVISION[:AGE]] + specify library version info [each variable defaults to 0] + +All other options (arguments beginning with \`-') are ignored. + +Every other argument is treated as a filename. Files ending in \`.la' are +treated as uninstalled libtool libraries, other files are standard or library +object files. + +If the OUTPUT-FILE ends in \`.la', then a libtool library is created, +only library objects (\`.lo' files) may be specified, and \`-rpath' is +required, except when creating a convenience library. + +If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created +using \`ar' and \`ranlib', or on Windows using \`lib'. + +If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file +is created, otherwise an executable program is created." + ;; + +uninstall) + $echo \ +"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... + +Remove libraries from an installation directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed +to RM. + +If FILE is a libtool library, all the files associated with it are deleted. +Otherwise, only FILE itself is deleted using RM." + ;; + +*) + $echo "$modename: invalid operation mode \`$mode'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + ;; +esac + +$echo +$echo "Try \`$modename --help' for more information about other modes." + +exit $? + +# The TAGs below are defined such that we never get into a situation +# in which we disable both kinds of libraries. Given conflicting +# choices, we go for a static library, that is the most portable, +# since we can't tell whether shared libraries were disabled because +# the user asked for that or because the platform doesn't support +# them. This is particularly important on AIX, because we don't +# support having both static and shared libraries enabled at the same +# time on that platform, so we default to a shared-only configuration. +# If a disable-shared tag is given, we'll fallback to a static-only +# configuration. But we'll never go from static-only to shared-only. + +# ### BEGIN LIBTOOL TAG CONFIG: disable-shared +disable_libs=shared +# ### END LIBTOOL TAG CONFIG: disable-shared + +# ### BEGIN LIBTOOL TAG CONFIG: disable-static +disable_libs=static +# ### END LIBTOOL TAG CONFIG: disable-static + +# Local Variables: +# mode:shell-script +# sh-indentation:2 +# End: diff --git a/m4/glib-gettext.m4 b/m4/glib-gettext.m4 new file mode 100644 index 000000000..01db6de13 --- /dev/null +++ b/m4/glib-gettext.m4 @@ -0,0 +1,398 @@ +# Copyright (C) 1995-2002 Free Software Foundation, Inc. +# Copyright (C) 2001-2003,2004 Red Hat, Inc. +# +# This file is free software, distributed under the terms of the GNU +# General Public License. As a special exception to the GNU General +# Public License, this file may be distributed as part of a program +# that contains a configuration script generated by Autoconf, under +# the same distribution terms as the rest of that program. +# +# This file can be copied and used freely without restrictions. It can +# be used in projects which are not available under the GNU Public License +# but which still want to provide support for the GNU gettext functionality. +# +# Macro to add for using GNU gettext. +# Ulrich Drepper , 1995, 1996 +# +# Modified to never use included libintl. +# Owen Taylor , 12/15/1998 +# +# Major rework to remove unused code +# Owen Taylor , 12/11/2002 +# +# Added better handling of ALL_LINGUAS from GNU gettext version +# written by Bruno Haible, Owen Taylor 5/30/3002 +# +# Modified to require ngettext +# Matthias Clasen 08/06/2004 +# +# We need this here as well, since someone might use autoconf-2.5x +# to configure GLib then an older version to configure a package +# using AM_GLIB_GNU_GETTEXT +AC_PREREQ(2.53) + +dnl +dnl We go to great lengths to make sure that aclocal won't +dnl try to pull in the installed version of these macros +dnl when running aclocal in the glib directory. +dnl +m4_copy([AC_DEFUN],[glib_DEFUN]) +m4_copy([AC_REQUIRE],[glib_REQUIRE]) +dnl +dnl At the end, if we're not within glib, we'll define the public +dnl definitions in terms of our private definitions. +dnl + +# GLIB_LC_MESSAGES +#-------------------- +glib_DEFUN([GLIB_LC_MESSAGES], + [AC_CHECK_HEADERS([locale.h]) + if test $ac_cv_header_locale_h = yes; then + AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES, + [AC_TRY_LINK([#include ], [return LC_MESSAGES], + am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)]) + if test $am_cv_val_LC_MESSAGES = yes; then + AC_DEFINE(HAVE_LC_MESSAGES, 1, + [Define if your file defines LC_MESSAGES.]) + fi + fi]) + +# GLIB_PATH_PROG_WITH_TEST +#---------------------------- +dnl GLIB_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR, +dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]]) +glib_DEFUN([GLIB_PATH_PROG_WITH_TEST], +[# Extract the first word of "$2", so it can be a program name with args. +set dummy $2; ac_word=[$]2 +AC_MSG_CHECKING([for $ac_word]) +AC_CACHE_VAL(ac_cv_path_$1, +[case "[$]$1" in + /*) + ac_cv_path_$1="[$]$1" # Let the user override the test with a path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in ifelse([$5], , $PATH, [$5]); do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + if [$3]; then + ac_cv_path_$1="$ac_dir/$ac_word" + break + fi + fi + done + IFS="$ac_save_ifs" +dnl If no 4th arg is given, leave the cache variable unset, +dnl so AC_PATH_PROGS will keep looking. +ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" +])dnl + ;; +esac])dnl +$1="$ac_cv_path_$1" +if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then + AC_MSG_RESULT([$]$1) +else + AC_MSG_RESULT(no) +fi +AC_SUBST($1)dnl +]) + +# GLIB_WITH_NLS +#----------------- +glib_DEFUN([GLIB_WITH_NLS], + dnl NLS is obligatory + [USE_NLS=yes + AC_SUBST(USE_NLS) + + gt_cv_have_gettext=no + + CATOBJEXT=NONE + XGETTEXT=: + INTLLIBS= + + AC_CHECK_HEADER(libintl.h, + [gt_cv_func_dgettext_libintl="no" + libintl_extra_libs="" + + # + # First check in libc + # + AC_CACHE_CHECK([for ngettext in libc], gt_cv_func_ngettext_libc, + [AC_TRY_LINK([ +#include +], + [return !ngettext ("","", 1)], + gt_cv_func_ngettext_libc=yes, + gt_cv_func_ngettext_libc=no) + ]) + + if test "$gt_cv_func_ngettext_libc" = "yes" ; then + AC_CACHE_CHECK([for dgettext in libc], gt_cv_func_dgettext_libc, + [AC_TRY_LINK([ +#include +], + [return !dgettext ("","")], + gt_cv_func_dgettext_libc=yes, + gt_cv_func_dgettext_libc=no) + ]) + fi + + if test "$gt_cv_func_ngettext_libc" = "yes" ; then + AC_CHECK_FUNCS(bind_textdomain_codeset) + fi + + # + # If we don't have everything we want, check in libintl + # + if test "$gt_cv_func_dgettext_libc" != "yes" \ + || test "$gt_cv_func_ngettext_libc" != "yes" \ + || test "$ac_cv_func_bind_textdomain_codeset" != "yes" ; then + + AC_CHECK_LIB(intl, bindtextdomain, + [AC_CHECK_LIB(intl, ngettext, + [AC_CHECK_LIB(intl, dgettext, + gt_cv_func_dgettext_libintl=yes)])]) + + if test "$gt_cv_func_dgettext_libintl" != "yes" ; then + AC_MSG_CHECKING([if -liconv is needed to use gettext]) + AC_MSG_RESULT([]) + AC_CHECK_LIB(intl, ngettext, + [AC_CHECK_LIB(intl, dcgettext, + [gt_cv_func_dgettext_libintl=yes + libintl_extra_libs=-liconv], + :,-liconv)], + :,-liconv) + fi + + # + # If we found libintl, then check in it for bind_textdomain_codeset(); + # we'll prefer libc if neither have bind_textdomain_codeset(), + # and both have dgettext and ngettext + # + if test "$gt_cv_func_dgettext_libintl" = "yes" ; then + glib_save_LIBS="$LIBS" + LIBS="$LIBS -lintl $libintl_extra_libs" + unset ac_cv_func_bind_textdomain_codeset + AC_CHECK_FUNCS(bind_textdomain_codeset) + LIBS="$glib_save_LIBS" + + if test "$ac_cv_func_bind_textdomain_codeset" = "yes" ; then + gt_cv_func_dgettext_libc=no + else + if test "$gt_cv_func_dgettext_libc" = "yes" \ + && test "$gt_cv_func_ngettext_libc" = "yes"; then + gt_cv_func_dgettext_libintl=no + fi + fi + fi + fi + + if test "$gt_cv_func_dgettext_libc" = "yes" \ + || test "$gt_cv_func_dgettext_libintl" = "yes"; then + gt_cv_have_gettext=yes + fi + + if test "$gt_cv_func_dgettext_libintl" = "yes"; then + INTLLIBS="-lintl $libintl_extra_libs" + fi + + if test "$gt_cv_have_gettext" = "yes"; then + AC_DEFINE(HAVE_GETTEXT,1, + [Define if the GNU gettext() function is already present or preinstalled.]) + GLIB_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, + [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], no)dnl + if test "$MSGFMT" != "no"; then + glib_save_LIBS="$LIBS" + LIBS="$LIBS $INTLLIBS" + AC_CHECK_FUNCS(dcgettext) + AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) + GLIB_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, + [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :) + AC_TRY_LINK(, [extern int _nl_msg_cat_cntr; + return _nl_msg_cat_cntr], + [CATOBJEXT=.gmo + DATADIRNAME=share], + [case $host in + *-*-solaris*) + dnl On Solaris, if bind_textdomain_codeset is in libc, + dnl GNU format message catalog is always supported, + dnl since both are added to the libc all together. + dnl Hence, we'd like to go with DATADIRNAME=share and + dnl and CATOBJEXT=.gmo in this case. + AC_CHECK_FUNC(bind_textdomain_codeset, + [CATOBJEXT=.gmo + DATADIRNAME=share], + [CATOBJEXT=.mo + DATADIRNAME=lib]) + ;; + *) + CATOBJEXT=.mo + DATADIRNAME=lib + ;; + esac]) + LIBS="$glib_save_LIBS" + INSTOBJEXT=.mo + else + gt_cv_have_gettext=no + fi + fi + ]) + + if test "$gt_cv_have_gettext" = "yes" ; then + AC_DEFINE(ENABLE_NLS, 1, + [always defined to indicate that i18n is enabled]) + fi + + dnl Test whether we really found GNU xgettext. + if test "$XGETTEXT" != ":"; then + dnl If it is not GNU xgettext we define it as : so that the + dnl Makefiles still can work. + if $XGETTEXT --omit-header /dev/null 2> /dev/null; then + : ; + else + AC_MSG_RESULT( + [found xgettext program is not GNU xgettext; ignore it]) + XGETTEXT=":" + fi + fi + + # We need to process the po/ directory. + POSUB=po + + AC_OUTPUT_COMMANDS( + [case "$CONFIG_FILES" in *po/Makefile.in*) + sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile + esac]) + + dnl These rules are solely for the distribution goal. While doing this + dnl we only have to keep exactly one list of the available catalogs + dnl in configure.in. + for lang in $ALL_LINGUAS; do + GMOFILES="$GMOFILES $lang.gmo" + POFILES="$POFILES $lang.po" + done + + dnl Make all variables we use known to autoconf. + AC_SUBST(CATALOGS) + AC_SUBST(CATOBJEXT) + AC_SUBST(DATADIRNAME) + AC_SUBST(GMOFILES) + AC_SUBST(INSTOBJEXT) + AC_SUBST(INTLLIBS) + AC_SUBST(PO_IN_DATADIR_TRUE) + AC_SUBST(PO_IN_DATADIR_FALSE) + AC_SUBST(POFILES) + AC_SUBST(POSUB) + ]) + +# AM_GLIB_GNU_GETTEXT +# ------------------- +# Do checks necessary for use of gettext. If a suitable implementation +# of gettext is found in either in libintl or in the C library, +# it will set INTLLIBS to the libraries needed for use of gettext +# and AC_DEFINE() HAVE_GETTEXT and ENABLE_NLS. (The shell variable +# gt_cv_have_gettext will be set to "yes".) It will also call AC_SUBST() +# on various variables needed by the Makefile.in.in installed by +# glib-gettextize. +dnl +glib_DEFUN([GLIB_GNU_GETTEXT], + [AC_REQUIRE([AC_PROG_CC])dnl + AC_REQUIRE([AC_HEADER_STDC])dnl + + GLIB_LC_MESSAGES + GLIB_WITH_NLS + + if test "$gt_cv_have_gettext" = "yes"; then + if test "x$ALL_LINGUAS" = "x"; then + LINGUAS= + else + AC_MSG_CHECKING(for catalogs to be installed) + NEW_LINGUAS= + for presentlang in $ALL_LINGUAS; do + useit=no + if test "%UNSET%" != "${LINGUAS-%UNSET%}"; then + desiredlanguages="$LINGUAS" + else + desiredlanguages="$ALL_LINGUAS" + fi + for desiredlang in $desiredlanguages; do + # Use the presentlang catalog if desiredlang is + # a. equal to presentlang, or + # b. a variant of presentlang (because in this case, + # presentlang can be used as a fallback for messages + # which are not translated in the desiredlang catalog). + case "$desiredlang" in + "$presentlang"*) useit=yes;; + esac + done + if test $useit = yes; then + NEW_LINGUAS="$NEW_LINGUAS $presentlang" + fi + done + LINGUAS=$NEW_LINGUAS + AC_MSG_RESULT($LINGUAS) + fi + + dnl Construct list of names of catalog files to be constructed. + if test -n "$LINGUAS"; then + for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done + fi + fi + + dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly + dnl find the mkinstalldirs script in another subdir but ($top_srcdir). + dnl Try to locate is. + MKINSTALLDIRS= + if test -n "$ac_aux_dir"; then + MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" + fi + if test -z "$MKINSTALLDIRS"; then + MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" + fi + AC_SUBST(MKINSTALLDIRS) + + dnl Generate list of files to be processed by xgettext which will + dnl be included in po/Makefile. + test -d po || mkdir po + if test "x$srcdir" != "x."; then + if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then + posrcprefix="$srcdir/" + else + posrcprefix="../$srcdir/" + fi + else + posrcprefix="../" + fi + rm -f po/POTFILES + sed -e "/^#/d" -e "/^\$/d" -e "s,.*, $posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \ + < $srcdir/po/POTFILES.in > po/POTFILES + ]) + +# AM_GLIB_DEFINE_LOCALEDIR(VARIABLE) +# ------------------------------- +# Define VARIABLE to the location where catalog files will +# be installed by po/Makefile. +glib_DEFUN([GLIB_DEFINE_LOCALEDIR], +[glib_REQUIRE([GLIB_GNU_GETTEXT])dnl +glib_save_prefix="$prefix" +glib_save_exec_prefix="$exec_prefix" +test "x$prefix" = xNONE && prefix=$ac_default_prefix +test "x$exec_prefix" = xNONE && exec_prefix=$prefix +if test "x$CATOBJEXT" = "x.mo" ; then + localedir=`eval echo "${libdir}/locale"` +else + localedir=`eval echo "${datadir}/locale"` +fi +prefix="$glib_save_prefix" +exec_prefix="$glib_save_exec_prefix" +AC_DEFINE_UNQUOTED($1, "$localedir", + [Define the location where the catalogs will be installed]) +]) + +dnl +dnl Now the definitions that aclocal will find +dnl +ifdef(glib_configure_in,[],[ +AC_DEFUN([AM_GLIB_GNU_GETTEXT],[GLIB_GNU_GETTEXT($@)]) +AC_DEFUN([AM_GLIB_DEFINE_LOCALEDIR],[GLIB_DEFINE_LOCALEDIR($@)]) +])dnl diff --git a/m4/python.m4 b/m4/python.m4 new file mode 100644 index 000000000..e1c5266de --- /dev/null +++ b/m4/python.m4 @@ -0,0 +1,62 @@ +## this one is commonly used with AM_PATH_PYTHONDIR ... +dnl AM_CHECK_PYMOD(MODNAME [,SYMBOL [,ACTION-IF-FOUND [,ACTION-IF-NOT-FOUND]]]) +dnl Check if a module containing a given symbol is visible to python. +AC_DEFUN([AM_CHECK_PYMOD], +[AC_REQUIRE([AM_PATH_PYTHON]) +py_mod_var=`echo $1['_']$2 | sed 'y%./+-%__p_%'` +AC_MSG_CHECKING(for ifelse([$2],[],,[$2 in ])python module $1) +AC_CACHE_VAL(py_cv_mod_$py_mod_var, [ +ifelse([$2],[], [prog=" +import sys +try: + import $1 +except ImportError: + sys.exit(1) +except: + sys.exit(0) +sys.exit(0)"], [prog=" +import $1 +$1.$2"]) +if $PYTHON -c "$prog" 1>&AC_FD_CC 2>&AC_FD_CC + then + eval "py_cv_mod_$py_mod_var=yes" + else + eval "py_cv_mod_$py_mod_var=no" + fi +]) +py_val=`eval "echo \`echo '$py_cv_mod_'$py_mod_var\`"` +if test "x$py_val" != xno; then + AC_MSG_RESULT(yes) + ifelse([$3], [],, [$3 +])dnl +else + AC_MSG_RESULT(no) + ifelse([$4], [],, [$4 +])dnl +fi +]) + +dnl a macro to check for ability to create python extensions +dnl AM_CHECK_PYTHON_HEADERS([ACTION-IF-POSSIBLE], [ACTION-IF-NOT-POSSIBLE]) +dnl function also defines PYTHON_INCLUDES +AC_DEFUN([AM_CHECK_PYTHON_HEADERS], +[AC_REQUIRE([AM_PATH_PYTHON]) +AC_MSG_CHECKING(for headers required to compile python extensions) +dnl deduce PYTHON_INCLUDES +py_prefix=`$PYTHON -c "import sys; print sys.prefix"` +py_exec_prefix=`$PYTHON -c "import sys; print sys.exec_prefix"` +PYTHON_INCLUDES="-I${py_prefix}/include/python${PYTHON_VERSION}" +if test "$py_prefix" != "$py_exec_prefix"; then + PYTHON_INCLUDES="$PYTHON_INCLUDES -I${py_exec_prefix}/include/python${PYTHON_VERSION}" +fi +AC_SUBST(PYTHON_INCLUDES) +dnl check if the headers exist: +save_CPPFLAGS="$CPPFLAGS" +CPPFLAGS="$CPPFLAGS $PYTHON_INCLUDES" +AC_TRY_CPP([#include ],dnl +[AC_MSG_RESULT(found) +$1],dnl +[AC_MSG_RESULT(not found) +$2]) +CPPFLAGS="$save_CPPFLAGS" +]) diff --git a/missing b/missing new file mode 100755 index 000000000..894e786e1 --- /dev/null +++ b/missing @@ -0,0 +1,360 @@ +#! /bin/sh +# Common stub for a few missing GNU programs while installing. + +scriptversion=2005-06-08.21 + +# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005 +# Free Software Foundation, Inc. +# Originally by Fran,cois Pinard , 1996. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +# 02110-1301, USA. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +if test $# -eq 0; then + echo 1>&2 "Try \`$0 --help' for more information" + exit 1 +fi + +run=: + +# In the cases where this matters, `missing' is being run in the +# srcdir already. +if test -f configure.ac; then + configure_ac=configure.ac +else + configure_ac=configure.in +fi + +msg="missing on your system" + +case "$1" in +--run) + # Try to run requested program, and just exit if it succeeds. + run= + shift + "$@" && exit 0 + # Exit code 63 means version mismatch. This often happens + # when the user try to use an ancient version of a tool on + # a file that requires a minimum version. In this case we + # we should proceed has if the program had been absent, or + # if --run hadn't been passed. + if test $? = 63; then + run=: + msg="probably too old" + fi + ;; + + -h|--h|--he|--hel|--help) + echo "\ +$0 [OPTION]... PROGRAM [ARGUMENT]... + +Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an +error status if there is no known handling for PROGRAM. + +Options: + -h, --help display this help and exit + -v, --version output version information and exit + --run try to run the given command, and emulate it if it fails + +Supported PROGRAM values: + aclocal touch file \`aclocal.m4' + autoconf touch file \`configure' + autoheader touch file \`config.h.in' + automake touch all \`Makefile.in' files + bison create \`y.tab.[ch]', if possible, from existing .[ch] + flex create \`lex.yy.c', if possible, from existing .c + help2man touch the output file + lex create \`lex.yy.c', if possible, from existing .c + makeinfo touch the output file + tar try tar, gnutar, gtar, then tar without non-portable flags + yacc create \`y.tab.[ch]', if possible, from existing .[ch] + +Send bug reports to ." + exit $? + ;; + + -v|--v|--ve|--ver|--vers|--versi|--versio|--version) + echo "missing $scriptversion (GNU Automake)" + exit $? + ;; + + -*) + echo 1>&2 "$0: Unknown \`$1' option" + echo 1>&2 "Try \`$0 --help' for more information" + exit 1 + ;; + +esac + +# Now exit if we have it, but it failed. Also exit now if we +# don't have it and --version was passed (most likely to detect +# the program). +case "$1" in + lex|yacc) + # Not GNU programs, they don't have --version. + ;; + + tar) + if test -n "$run"; then + echo 1>&2 "ERROR: \`tar' requires --run" + exit 1 + elif test "x$2" = "x--version" || test "x$2" = "x--help"; then + exit 1 + fi + ;; + + *) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + elif test "x$2" = "x--version" || test "x$2" = "x--help"; then + # Could not run --version or --help. This is probably someone + # running `$TOOL --version' or `$TOOL --help' to check whether + # $TOOL exists and not knowing $TOOL uses missing. + exit 1 + fi + ;; +esac + +# If it does not exist, or fails to run (possibly an outdated version), +# try to emulate it. +case "$1" in + aclocal*) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified \`acinclude.m4' or \`${configure_ac}'. You might want + to install the \`Automake' and \`Perl' packages. Grab them from + any GNU archive site." + touch aclocal.m4 + ;; + + autoconf) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified \`${configure_ac}'. You might want to install the + \`Autoconf' and \`GNU m4' packages. Grab them from any GNU + archive site." + touch configure + ;; + + autoheader) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified \`acconfig.h' or \`${configure_ac}'. You might want + to install the \`Autoconf' and \`GNU m4' packages. Grab them + from any GNU archive site." + files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` + test -z "$files" && files="config.h" + touch_files= + for f in $files; do + case "$f" in + *:*) touch_files="$touch_files "`echo "$f" | + sed -e 's/^[^:]*://' -e 's/:.*//'`;; + *) touch_files="$touch_files $f.in";; + esac + done + touch $touch_files + ;; + + automake*) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. + You might want to install the \`Automake' and \`Perl' packages. + Grab them from any GNU archive site." + find . -type f -name Makefile.am -print | + sed 's/\.am$/.in/' | + while read f; do touch "$f"; done + ;; + + autom4te) + echo 1>&2 "\ +WARNING: \`$1' is needed, but is $msg. + You might have modified some files without having the + proper tools for further handling them. + You can get \`$1' as part of \`Autoconf' from any GNU + archive site." + + file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'` + test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'` + if test -f "$file"; then + touch $file + else + test -z "$file" || exec >$file + echo "#! /bin/sh" + echo "# Created by GNU Automake missing as a replacement of" + echo "# $ $@" + echo "exit 0" + chmod +x $file + exit 1 + fi + ;; + + bison|yacc) + echo 1>&2 "\ +WARNING: \`$1' $msg. You should only need it if + you modified a \`.y' file. You may need the \`Bison' package + in order for those modifications to take effect. You can get + \`Bison' from any GNU archive site." + rm -f y.tab.c y.tab.h + if [ $# -ne 1 ]; then + eval LASTARG="\${$#}" + case "$LASTARG" in + *.y) + SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" y.tab.c + fi + SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" y.tab.h + fi + ;; + esac + fi + if [ ! -f y.tab.h ]; then + echo >y.tab.h + fi + if [ ! -f y.tab.c ]; then + echo 'main() { return 0; }' >y.tab.c + fi + ;; + + lex|flex) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified a \`.l' file. You may need the \`Flex' package + in order for those modifications to take effect. You can get + \`Flex' from any GNU archive site." + rm -f lex.yy.c + if [ $# -ne 1 ]; then + eval LASTARG="\${$#}" + case "$LASTARG" in + *.l) + SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" lex.yy.c + fi + ;; + esac + fi + if [ ! -f lex.yy.c ]; then + echo 'main() { return 0; }' >lex.yy.c + fi + ;; + + help2man) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified a dependency of a manual page. You may need the + \`Help2man' package in order for those modifications to take + effect. You can get \`Help2man' from any GNU archive site." + + file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` + if test -z "$file"; then + file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'` + fi + if [ -f "$file" ]; then + touch $file + else + test -z "$file" || exec >$file + echo ".ab help2man is required to generate this page" + exit 1 + fi + ;; + + makeinfo) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified a \`.texi' or \`.texinfo' file, or any other file + indirectly affecting the aspect of the manual. The spurious + call might also be the consequence of using a buggy \`make' (AIX, + DU, IRIX). You might want to install the \`Texinfo' package or + the \`GNU make' package. Grab either from any GNU archive site." + # The file to touch is that specified with -o ... + file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` + if test -z "$file"; then + # ... or it is the one specified with @setfilename ... + infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` + file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $infile` + # ... or it is derived from the source name (dir/f.texi becomes f.info) + test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info + fi + # If the file does not exist, the user really needs makeinfo; + # let's fail without touching anything. + test -f $file || exit 1 + touch $file + ;; + + tar) + shift + + # We have already tried tar in the generic part. + # Look for gnutar/gtar before invocation to avoid ugly error + # messages. + if (gnutar --version > /dev/null 2>&1); then + gnutar "$@" && exit 0 + fi + if (gtar --version > /dev/null 2>&1); then + gtar "$@" && exit 0 + fi + firstarg="$1" + if shift; then + case "$firstarg" in + *o*) + firstarg=`echo "$firstarg" | sed s/o//` + tar "$firstarg" "$@" && exit 0 + ;; + esac + case "$firstarg" in + *h*) + firstarg=`echo "$firstarg" | sed s/h//` + tar "$firstarg" "$@" && exit 0 + ;; + esac + fi + + echo 1>&2 "\ +WARNING: I can't seem to be able to run \`tar' with the given arguments. + You may want to install GNU tar or Free paxutils, or check the + command line arguments." + exit 1 + ;; + + *) + echo 1>&2 "\ +WARNING: \`$1' is needed, and is $msg. + You might have modified some files without having the + proper tools for further handling them. Check the \`README' file, + it often tells you about the needed prerequisites for installing + this package. You may also peek at any GNU archive site, in case + some other package would contain this missing \`$1' program." + exit 1 + ;; +esac + +exit 0 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-end: "$" +# End: diff --git a/mkinstalldirs b/mkinstalldirs new file mode 100755 index 000000000..259dbfcd3 --- /dev/null +++ b/mkinstalldirs @@ -0,0 +1,158 @@ +#! /bin/sh +# mkinstalldirs --- make directory hierarchy + +scriptversion=2005-06-29.22 + +# Original author: Noah Friedman +# Created: 1993-05-16 +# Public domain. +# +# This file is maintained in Automake, please report +# bugs to or send patches to +# . + +errstatus=0 +dirmode= + +usage="\ +Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ... + +Create each directory DIR (with mode MODE, if specified), including all +leading file name components. + +Report bugs to ." + +# process command line arguments +while test $# -gt 0 ; do + case $1 in + -h | --help | --h*) # -h for help + echo "$usage" + exit $? + ;; + -m) # -m PERM arg + shift + test $# -eq 0 && { echo "$usage" 1>&2; exit 1; } + dirmode=$1 + shift + ;; + --version) + echo "$0 $scriptversion" + exit $? + ;; + --) # stop option processing + shift + break + ;; + -*) # unknown option + echo "$usage" 1>&2 + exit 1 + ;; + *) # first non-opt arg + break + ;; + esac +done + +for file +do + if test -d "$file"; then + shift + else + break + fi +done + +case $# in + 0) exit 0 ;; +esac + +# Solaris 8's mkdir -p isn't thread-safe. If you mkdir -p a/b and +# mkdir -p a/c at the same time, both will detect that a is missing, +# one will create a, then the other will try to create a and die with +# a "File exists" error. This is a problem when calling mkinstalldirs +# from a parallel make. We use --version in the probe to restrict +# ourselves to GNU mkdir, which is thread-safe. +case $dirmode in + '') + if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then + echo "mkdir -p -- $*" + exec mkdir -p -- "$@" + else + # On NextStep and OpenStep, the `mkdir' command does not + # recognize any option. It will interpret all options as + # directories to create, and then abort because `.' already + # exists. + test -d ./-p && rmdir ./-p + test -d ./--version && rmdir ./--version + fi + ;; + *) + if mkdir -m "$dirmode" -p --version . >/dev/null 2>&1 && + test ! -d ./--version; then + echo "mkdir -m $dirmode -p -- $*" + exec mkdir -m "$dirmode" -p -- "$@" + else + # Clean up after NextStep and OpenStep mkdir. + for d in ./-m ./-p ./--version "./$dirmode"; + do + test -d $d && rmdir $d + done + fi + ;; +esac + +for file +do + case $file in + /*) pathcomp=/ ;; + *) pathcomp= ;; + esac + oIFS=$IFS + IFS=/ + set fnord $file + shift + IFS=$oIFS + + for d + do + test "x$d" = x && continue + + pathcomp=$pathcomp$d + case $pathcomp in + -*) pathcomp=./$pathcomp ;; + esac + + if test ! -d "$pathcomp"; then + echo "mkdir $pathcomp" + + mkdir "$pathcomp" || lasterr=$? + + if test ! -d "$pathcomp"; then + errstatus=$lasterr + else + if test ! -z "$dirmode"; then + echo "chmod $dirmode $pathcomp" + lasterr= + chmod "$dirmode" "$pathcomp" || lasterr=$? + + if test ! -z "$lasterr"; then + errstatus=$lasterr + fi + fi + fi + fi + + pathcomp=$pathcomp/ + done +done + +exit $errstatus + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-end: "$" +# End: diff --git a/po/ChangeLog b/po/ChangeLog new file mode 100644 index 000000000..e69de29bb diff --git a/po/Makefile b/po/Makefile deleted file mode 100644 index 2b10a9676..000000000 --- a/po/Makefile +++ /dev/null @@ -1,72 +0,0 @@ -NAME = gajim -LANGS := fr pt el pl es ru bg de nb cs nl pt_BR sv it eu sk no zh_CN br eo -LANGS_PO:=$(foreach LANG, ${LANGS}, ${LANG}.po) -LANGS_MO:=$(foreach LANG, ${LANGS}, ${LANG}.mo) -DATADIR:=$(subst //,/,${DESTDIR}/${PREFIX}/share) - -all: $(LANGS_MO) - -%.mo: %.po - msgfmt $< -o $@ - -%.glade.h: %.glade - intltool-extract --type=gettext/glade $< - -gajim.pot: ../src/*py ../src/common/*py \ - ../data/glade/account_context_menu.glade.h \ - ../data/glade/account_creation_wizard_window.glade.h \ - ../data/glade/account_modification_window.glade.h \ - ../data/glade/accounts_window.glade.h \ - ../data/glade/add_new_contact_window.glade.h \ - ../data/glade/advanced_configuration_window.glade.h \ - ../data/glade/advanced_notifications_window.glade.h \ - ../data/glade/advanced_menuitem_menu.glade.h \ - ../data/glade/change_password_dialog.glade.h \ - ../data/glade/change_status_message_dialog.glade.h \ - ../data/glade/chat_context_menu.glade.h \ - ../data/glade/chat_control_popup_menu.glade.h \ - ../data/glade/choose_gpg_key_dialog.glade.h \ - ../data/glade/data_form_window.glade.h \ - ../data/glade/edit_groups_dialog.glade.h \ - ../data/glade/filetransfers.glade.h \ - ../data/glade/gajim_themes_window.glade.h \ - ../data/glade/gc_control_popup_menu.glade.h \ - ../data/glade/gc_occupants_menu.glade.h \ - ../data/glade/history_manager.glade.h \ - ../data/glade/history_window.glade.h \ - ../data/glade/input_dialog.glade.h \ - ../data/glade/invitation_received_dialog.glade.h \ - ../data/glade/join_groupchat_window.glade.h \ - ../data/glade/manage_accounts_window.glade.h \ - ../data/glade/manage_bookmarks_window.glade.h \ - ../data/glade/manage_proxies_window.glade.h \ - ../data/glade/message_window.glade.h \ - ../data/glade/passphrase_dialog.glade.h \ - ../data/glade/popup_notification_window.glade.h \ - ../data/glade/preferences_window.glade.h \ - ../data/glade/privacy_list_edit_window.glade.h \ - ../data/glade/privacy_lists_first_window.glade.h \ - ../data/glade/progress_dialog.glade.h \ - ../data/glade/remove_account_window.glade.h \ - ../data/glade/roster_contact_context_menu.glade.h \ - ../data/glade/roster_window.glade.h \ - ../data/glade/service_discovery_window.glade.h \ - ../data/glade/service_registration_window.glade.h \ - ../data/glade/single_message_window.glade.h \ - ../data/glade/subscription_request_window.glade.h \ - ../data/glade/systray_context_menu.glade.h \ - ../data/glade/vcard_information_window.glade.h \ - ../data/glade/xml_console_window.glade.h - intltool-update --pot --gettext-package=$(NAME) - -install: - for l in ${LANGS}; do\ - dir=${DATADIR}/locale/$${l}/LC_MESSAGES;\ - if test ! -d $${dir}; then\ - install -m 755 -d $${dir};\ - fi;\ - install -m 644 $${l}.mo $${dir}/${NAME}.mo;\ - done - -clean: - rm -f *.mo diff --git a/po/Makefile.in.in b/po/Makefile.in.in new file mode 120000 index 000000000..e4713cf84 --- /dev/null +++ b/po/Makefile.in.in @@ -0,0 +1 @@ +/usr/share/intltool/Makefile.in.in \ No newline at end of file diff --git a/po/POTFILES.in b/po/POTFILES.in index 35ae4380c..fa1a11b6e 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -35,8 +35,9 @@ data/glade/message_window.glade.h data/glade/passphrase_dialog.glade.h data/glade/popup_notification_window.glade.h data/glade/preferences_window.glade.h -data/glade/privacy_list_edit_window.glade.h -data/glade/privacy_lists_first_window.glade.h +data/glade/privacy_list_window.glade.h +data/glade/privacy_lists_window.glade.h +data/glade/profile_window.glade.h data/glade/progress_dialog.glade.h data/glade/remove_account_window.glade.h data/glade/roster_contact_context_menu.glade.h diff --git a/scripts/gajim b/scripts/gajim.in similarity index 86% rename from scripts/gajim rename to scripts/gajim.in index fb83a4f84..82ef6f822 100644 --- a/scripts/gajim +++ b/scripts/gajim.in @@ -27,6 +27,11 @@ if [ `id -u` -eq 0 ]; then echo "You must not launch Gajim as root, it is INSECURE" fi -cd PREFIX/share/gajim/src -export PYTHONPATH="$PYTHONPATH:PREFIXLIB/gajim" -exec -a gajim PYTHON_EXEC -OO gajim.py $@ + +prefix=@prefix@ +exec_prefix=@exec_prefix@ +PYTHON_EXEC=@PYTHON@ + +cd ${prefix}/share/gajim/src +export PYTHONPATH="$PYTHONPATH:@libdir@/gajim" +exec -a gajim ${PYTHON_EXEC} -OO gajim.py $@ diff --git a/src/Makefile b/src/Makefile deleted file mode 100644 index 7d5053885..000000000 --- a/src/Makefile +++ /dev/null @@ -1,35 +0,0 @@ -# Set the C flags to include the GTK+ and Python libraries -PYTHON ?= python -PYTHONVER = `$(PYTHON) -c 'import sys; print sys.version[:3]'` -gtk_CFLAGS = `pkg-config --cflags gtk+-2.0 pygtk-2.0` -fPIC -I/usr/include/python$(PYTHONVER) -I. -gtk_LDFLAGS = `pkg-config --libs gtk+-2.0 pygtk-2.0` -lpython$(PYTHONVER) - -all: trayicon.so gtkspell.so - -# Build the shared objects -trayicon.so: trayicon.o eggtrayicon.o trayiconmodule.o - $(CC) -shared $^ -o $@ $(LDFLAGS) $(gtk_LDFLAGS) - -gtkspell.so: - $(CC) $(OPTFLAGS) $(CFLAGS) $(LDFLAGS) $(gtk_CFLAGS) $(gtk_LDFLAGS) `pkg-config --libs --cflags gtkspell-2.0` -shared gtkspellmodule.c $^ -o $@ - -# The path to the GTK+ python types -DEFS=`pkg-config --variable=defsdir pygtk-2.0` - -%.o: %.c - $(CC) -o $@ -c $< $(CFLAGS) $(gtk_CFLAGS) - -# Generate the C wrapper from the defs and our override file -trayicon.c: trayicon.defs trayicon.override - pygtk-codegen-2.0 --prefix trayicon \ - --register $(DEFS)/gdk-types.defs \ - --register $(DEFS)/gtk-types.defs \ - --override trayicon.override \ - trayicon.defs > $@ - - -# A rule to clean the generated files -clean: - rm -f trayicon.so *.o trayicon.c gtkspell.so *~ - -.PHONY: clean diff --git a/src/Makefile.am b/src/Makefile.am new file mode 100644 index 000000000..8b780770c --- /dev/null +++ b/src/Makefile.am @@ -0,0 +1,66 @@ +SUBDIRS = common + +CLEANFILES = \ + trayicon.c +INCLUDES = \ + $(PYTHON_INCLUDES) + +gtkspelllib_LTLIBRARIES = gtkspell.la +gtkspelllibdir = $(libdir)/gajim + +gtkspell_la_LIBADD = \ + $(GTKSPELL_LIBS) $(PYGTK_LIBS) + +gtkspell_la_SOURCES = \ + gtkspellmodule.c + +gtkspell_la_LDFLAGS = \ + -module -avoid-version -no-undefined + +gtkspell_la_CFLAGS = $(GTKSPELL_CFLAGS) $(PYGTK_CFLAGS) + +trayiconlib_LTLIBRARIES = trayicon.la +trayiconlibdir = $(libdir)/gajim +trayicon_la_LIBADD = $(PYGTK_LIBS) +trayicon_la_SOURCES = \ + eggtrayicon.c \ + trayiconmodule.c +nodist_trayicon_la_SOURCES = \ + trayicon.c +trayicon_la_LDFLAGS = \ + -module -avoid-version -no-undefined +trayicon_la_CFLAGS = $(PYGTK_CFLAGS) + +trayicon.c: trayicon.defs trayicon.override + pygtk-codegen-2.0 --prefix trayicon \ + --register $(PYGTK_DEFS)/gdk-types.defs \ + --register $(PYGTK_DEFS)/gtk-types.defs \ + --override trayicon.override \ + trayicon.defs > $@ + +gajimsrcdir = $(pkgdatadir)/src +gajimsrc_DATA = *.py + +gajimsrc1dir = $(pkgdatadir)/src/common +gajimsrc1_DATA = \ + common/*.py + +gajimsrc2dir = $(pkgdatadir)/src/common/xmpp +gajimsrc2_DATA = \ + common/xmpp/*.py + +gajimsrc3dir = $(pkgdatadir)/src/common/zeroconf +gajimsrc3_DATA = \ + common/zeroconf/*.py + +EXTRA_DIST = $(gajimsrc_DATA) \ + $(gajimsrc1_DATA) \ + $(gajimsrc2_DATA) \ + $(gajimsrc3_DATA) \ + gtkspellmodule.c \ + eggtrayicon.c \ + trayiconmodule.c \ + eggtrayicon.h \ + trayicon.defs \ + trayicon.override + diff --git a/src/Makefile.in b/src/Makefile.in new file mode 100644 index 000000000..485304e88 --- /dev/null +++ b/src/Makefile.in @@ -0,0 +1,855 @@ +# Makefile.in generated by automake 1.9.6 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = src +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/glib-gettext.m4 \ + $(top_srcdir)/m4/python.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__installdirs = "$(DESTDIR)$(gtkspelllibdir)" \ + "$(DESTDIR)$(trayiconlibdir)" "$(DESTDIR)$(gajimsrcdir)" \ + "$(DESTDIR)$(gajimsrc1dir)" "$(DESTDIR)$(gajimsrc2dir)" \ + "$(DESTDIR)$(gajimsrc3dir)" +gtkspelllibLTLIBRARIES_INSTALL = $(INSTALL) +trayiconlibLTLIBRARIES_INSTALL = $(INSTALL) +LTLIBRARIES = $(gtkspelllib_LTLIBRARIES) $(trayiconlib_LTLIBRARIES) +am__DEPENDENCIES_1 = +gtkspell_la_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +am_gtkspell_la_OBJECTS = gtkspell_la-gtkspellmodule.lo +gtkspell_la_OBJECTS = $(am_gtkspell_la_OBJECTS) +trayicon_la_DEPENDENCIES = $(am__DEPENDENCIES_1) +am_trayicon_la_OBJECTS = trayicon_la-eggtrayicon.lo \ + trayicon_la-trayiconmodule.lo +nodist_trayicon_la_OBJECTS = trayicon_la-trayicon.lo +trayicon_la_OBJECTS = $(am_trayicon_la_OBJECTS) \ + $(nodist_trayicon_la_OBJECTS) +DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +SOURCES = $(gtkspell_la_SOURCES) $(trayicon_la_SOURCES) \ + $(nodist_trayicon_la_SOURCES) +DIST_SOURCES = $(gtkspell_la_SOURCES) $(trayicon_la_SOURCES) +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-exec-recursive install-info-recursive \ + install-recursive installcheck-recursive installdirs-recursive \ + pdf-recursive ps-recursive uninstall-info-recursive \ + uninstall-recursive +gajimsrcDATA_INSTALL = $(INSTALL_DATA) +gajimsrc1DATA_INSTALL = $(INSTALL_DATA) +gajimsrc2DATA_INSTALL = $(INSTALL_DATA) +gajimsrc3DATA_INSTALL = $(INSTALL_DATA) +DATA = $(gajimsrc_DATA) $(gajimsrc1_DATA) $(gajimsrc2_DATA) \ + $(gajimsrc3_DATA) +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALL_LINGUAS = @ALL_LINGUAS@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CATALOGS = @CATALOGS@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DBUS_CFLAGS = @DBUS_CFLAGS@ +DBUS_LIBS = @DBUS_LIBS@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GMOFILES = @GMOFILES@ +GMSGFMT = @GMSGFMT@ +GREP = @GREP@ +GTKSPELL_CFLAGS = @GTKSPELL_CFLAGS@ +GTKSPELL_LIBS = @GTKSPELL_LIBS@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLLIBS = @INTLLIBS@ +INTLTOOL_CAVES_RULE = @INTLTOOL_CAVES_RULE@ +INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@ +INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@ +INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ +INTLTOOL_ICONV = @INTLTOOL_ICONV@ +INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@ +INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@ +INTLTOOL_MERGE = @INTLTOOL_MERGE@ +INTLTOOL_MSGFMT = @INTLTOOL_MSGFMT@ +INTLTOOL_MSGMERGE = @INTLTOOL_MSGMERGE@ +INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@ +INTLTOOL_PERL = @INTLTOOL_PERL@ +INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@ +INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@ +INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@ +INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@ +INTLTOOL_SERVICE_RULE = @INTLTOOL_SERVICE_RULE@ +INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@ +INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@ +INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@ +INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@ +INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ +INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@ +INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@ +INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@ +INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ +MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ +MAKEINFO = @MAKEINFO@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +POFILES = @POFILES@ +POSUB = @POSUB@ +PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ +PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ +PYGTK_CFLAGS = @PYGTK_CFLAGS@ +PYGTK_DEFS = @PYGTK_DEFS@ +PYGTK_LIBS = @PYGTK_LIBS@ +PYTHON = @PYTHON@ +PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ +PYTHON_INCLUDES = @PYTHON_INCLUDES@ +PYTHON_PLATFORM = @PYTHON_PLATFORM@ +PYTHON_PREFIX = @PYTHON_PREFIX@ +PYTHON_VERSION = @PYTHON_VERSION@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +XMKMF = @XMKMF@ +XSCRNSAVER_CFLAGS = @XSCRNSAVER_CFLAGS@ +XSCRNSAVER_LIBS = @XSCRNSAVER_LIBS@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgpyexecdir = @pkgpyexecdir@ +pkgpythondir = @pkgpythondir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pyexecdir = @pyexecdir@ +pythondir = @pythondir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +SUBDIRS = common +CLEANFILES = \ + trayicon.c + +INCLUDES = \ + $(PYTHON_INCLUDES) + +gtkspelllib_LTLIBRARIES = gtkspell.la +gtkspelllibdir = $(libdir)/gajim +gtkspell_la_LIBADD = \ + $(GTKSPELL_LIBS) $(PYGTK_LIBS) + +gtkspell_la_SOURCES = \ + gtkspellmodule.c + +gtkspell_la_LDFLAGS = \ + -module -avoid-version -no-undefined + +gtkspell_la_CFLAGS = $(GTKSPELL_CFLAGS) $(PYGTK_CFLAGS) +trayiconlib_LTLIBRARIES = trayicon.la +trayiconlibdir = $(libdir)/gajim +trayicon_la_LIBADD = $(PYGTK_LIBS) +trayicon_la_SOURCES = \ + eggtrayicon.c \ + trayiconmodule.c + +nodist_trayicon_la_SOURCES = \ + trayicon.c + +trayicon_la_LDFLAGS = \ + -module -avoid-version -no-undefined + +trayicon_la_CFLAGS = $(PYGTK_CFLAGS) +gajimsrcdir = $(pkgdatadir)/src +gajimsrc_DATA = *.py +gajimsrc1dir = $(pkgdatadir)/src/common +gajimsrc1_DATA = \ + common/*.py + +gajimsrc2dir = $(pkgdatadir)/src/common/xmpp +gajimsrc2_DATA = \ + common/xmpp/*.py + +gajimsrc3dir = $(pkgdatadir)/src/common/zeroconf +gajimsrc3_DATA = \ + common/zeroconf/*.py + +EXTRA_DIST = $(gajimsrc_DATA) \ + $(gajimsrc1_DATA) \ + $(gajimsrc2_DATA) \ + $(gajimsrc3_DATA) \ + gtkspellmodule.c \ + eggtrayicon.c \ + trayiconmodule.c \ + eggtrayicon.h \ + trayicon.defs \ + trayicon.override + +all: all-recursive + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu src/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +install-gtkspelllibLTLIBRARIES: $(gtkspelllib_LTLIBRARIES) + @$(NORMAL_INSTALL) + test -z "$(gtkspelllibdir)" || $(mkdir_p) "$(DESTDIR)$(gtkspelllibdir)" + @list='$(gtkspelllib_LTLIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ + f=$(am__strip_dir) \ + echo " $(LIBTOOL) --mode=install $(gtkspelllibLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(gtkspelllibdir)/$$f'"; \ + $(LIBTOOL) --mode=install $(gtkspelllibLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(gtkspelllibdir)/$$f"; \ + else :; fi; \ + done + +uninstall-gtkspelllibLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @set -x; list='$(gtkspelllib_LTLIBRARIES)'; for p in $$list; do \ + p=$(am__strip_dir) \ + echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(gtkspelllibdir)/$$p'"; \ + $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(gtkspelllibdir)/$$p"; \ + done + +clean-gtkspelllibLTLIBRARIES: + -test -z "$(gtkspelllib_LTLIBRARIES)" || rm -f $(gtkspelllib_LTLIBRARIES) + @list='$(gtkspelllib_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done +install-trayiconlibLTLIBRARIES: $(trayiconlib_LTLIBRARIES) + @$(NORMAL_INSTALL) + test -z "$(trayiconlibdir)" || $(mkdir_p) "$(DESTDIR)$(trayiconlibdir)" + @list='$(trayiconlib_LTLIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ + f=$(am__strip_dir) \ + echo " $(LIBTOOL) --mode=install $(trayiconlibLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(trayiconlibdir)/$$f'"; \ + $(LIBTOOL) --mode=install $(trayiconlibLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(trayiconlibdir)/$$f"; \ + else :; fi; \ + done + +uninstall-trayiconlibLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @set -x; list='$(trayiconlib_LTLIBRARIES)'; for p in $$list; do \ + p=$(am__strip_dir) \ + echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(trayiconlibdir)/$$p'"; \ + $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(trayiconlibdir)/$$p"; \ + done + +clean-trayiconlibLTLIBRARIES: + -test -z "$(trayiconlib_LTLIBRARIES)" || rm -f $(trayiconlib_LTLIBRARIES) + @list='$(trayiconlib_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done +gtkspell.la: $(gtkspell_la_OBJECTS) $(gtkspell_la_DEPENDENCIES) + $(LINK) -rpath $(gtkspelllibdir) $(gtkspell_la_LDFLAGS) $(gtkspell_la_OBJECTS) $(gtkspell_la_LIBADD) $(LIBS) +trayicon.la: $(trayicon_la_OBJECTS) $(trayicon_la_DEPENDENCIES) + $(LINK) -rpath $(trayiconlibdir) $(trayicon_la_LDFLAGS) $(trayicon_la_OBJECTS) $(trayicon_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gtkspell_la-gtkspellmodule.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/trayicon_la-eggtrayicon.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/trayicon_la-trayicon.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/trayicon_la-trayiconmodule.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + +gtkspell_la-gtkspellmodule.lo: gtkspellmodule.c +@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gtkspell_la_CFLAGS) $(CFLAGS) -MT gtkspell_la-gtkspellmodule.lo -MD -MP -MF "$(DEPDIR)/gtkspell_la-gtkspellmodule.Tpo" -c -o gtkspell_la-gtkspellmodule.lo `test -f 'gtkspellmodule.c' || echo '$(srcdir)/'`gtkspellmodule.c; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/gtkspell_la-gtkspellmodule.Tpo" "$(DEPDIR)/gtkspell_la-gtkspellmodule.Plo"; else rm -f "$(DEPDIR)/gtkspell_la-gtkspellmodule.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='gtkspellmodule.c' object='gtkspell_la-gtkspellmodule.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gtkspell_la_CFLAGS) $(CFLAGS) -c -o gtkspell_la-gtkspellmodule.lo `test -f 'gtkspellmodule.c' || echo '$(srcdir)/'`gtkspellmodule.c + +trayicon_la-eggtrayicon.lo: eggtrayicon.c +@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(trayicon_la_CFLAGS) $(CFLAGS) -MT trayicon_la-eggtrayicon.lo -MD -MP -MF "$(DEPDIR)/trayicon_la-eggtrayicon.Tpo" -c -o trayicon_la-eggtrayicon.lo `test -f 'eggtrayicon.c' || echo '$(srcdir)/'`eggtrayicon.c; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/trayicon_la-eggtrayicon.Tpo" "$(DEPDIR)/trayicon_la-eggtrayicon.Plo"; else rm -f "$(DEPDIR)/trayicon_la-eggtrayicon.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='eggtrayicon.c' object='trayicon_la-eggtrayicon.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(trayicon_la_CFLAGS) $(CFLAGS) -c -o trayicon_la-eggtrayicon.lo `test -f 'eggtrayicon.c' || echo '$(srcdir)/'`eggtrayicon.c + +trayicon_la-trayiconmodule.lo: trayiconmodule.c +@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(trayicon_la_CFLAGS) $(CFLAGS) -MT trayicon_la-trayiconmodule.lo -MD -MP -MF "$(DEPDIR)/trayicon_la-trayiconmodule.Tpo" -c -o trayicon_la-trayiconmodule.lo `test -f 'trayiconmodule.c' || echo '$(srcdir)/'`trayiconmodule.c; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/trayicon_la-trayiconmodule.Tpo" "$(DEPDIR)/trayicon_la-trayiconmodule.Plo"; else rm -f "$(DEPDIR)/trayicon_la-trayiconmodule.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='trayiconmodule.c' object='trayicon_la-trayiconmodule.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(trayicon_la_CFLAGS) $(CFLAGS) -c -o trayicon_la-trayiconmodule.lo `test -f 'trayiconmodule.c' || echo '$(srcdir)/'`trayiconmodule.c + +trayicon_la-trayicon.lo: trayicon.c +@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(trayicon_la_CFLAGS) $(CFLAGS) -MT trayicon_la-trayicon.lo -MD -MP -MF "$(DEPDIR)/trayicon_la-trayicon.Tpo" -c -o trayicon_la-trayicon.lo `test -f 'trayicon.c' || echo '$(srcdir)/'`trayicon.c; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/trayicon_la-trayicon.Tpo" "$(DEPDIR)/trayicon_la-trayicon.Plo"; else rm -f "$(DEPDIR)/trayicon_la-trayicon.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='trayicon.c' object='trayicon_la-trayicon.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(trayicon_la_CFLAGS) $(CFLAGS) -c -o trayicon_la-trayicon.lo `test -f 'trayicon.c' || echo '$(srcdir)/'`trayicon.c + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: +install-gajimsrcDATA: $(gajimsrc_DATA) + @$(NORMAL_INSTALL) + test -z "$(gajimsrcdir)" || $(mkdir_p) "$(DESTDIR)$(gajimsrcdir)" + @list='$(gajimsrc_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(gajimsrcDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(gajimsrcdir)/$$f'"; \ + $(gajimsrcDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(gajimsrcdir)/$$f"; \ + done + +uninstall-gajimsrcDATA: + @$(NORMAL_UNINSTALL) + @list='$(gajimsrc_DATA)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(gajimsrcdir)/$$f'"; \ + rm -f "$(DESTDIR)$(gajimsrcdir)/$$f"; \ + done +install-gajimsrc1DATA: $(gajimsrc1_DATA) + @$(NORMAL_INSTALL) + test -z "$(gajimsrc1dir)" || $(mkdir_p) "$(DESTDIR)$(gajimsrc1dir)" + @list='$(gajimsrc1_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(gajimsrc1DATA_INSTALL) '$$d$$p' '$(DESTDIR)$(gajimsrc1dir)/$$f'"; \ + $(gajimsrc1DATA_INSTALL) "$$d$$p" "$(DESTDIR)$(gajimsrc1dir)/$$f"; \ + done + +uninstall-gajimsrc1DATA: + @$(NORMAL_UNINSTALL) + @list='$(gajimsrc1_DATA)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(gajimsrc1dir)/$$f'"; \ + rm -f "$(DESTDIR)$(gajimsrc1dir)/$$f"; \ + done +install-gajimsrc2DATA: $(gajimsrc2_DATA) + @$(NORMAL_INSTALL) + test -z "$(gajimsrc2dir)" || $(mkdir_p) "$(DESTDIR)$(gajimsrc2dir)" + @list='$(gajimsrc2_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(gajimsrc2DATA_INSTALL) '$$d$$p' '$(DESTDIR)$(gajimsrc2dir)/$$f'"; \ + $(gajimsrc2DATA_INSTALL) "$$d$$p" "$(DESTDIR)$(gajimsrc2dir)/$$f"; \ + done + +uninstall-gajimsrc2DATA: + @$(NORMAL_UNINSTALL) + @list='$(gajimsrc2_DATA)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(gajimsrc2dir)/$$f'"; \ + rm -f "$(DESTDIR)$(gajimsrc2dir)/$$f"; \ + done +install-gajimsrc3DATA: $(gajimsrc3_DATA) + @$(NORMAL_INSTALL) + test -z "$(gajimsrc3dir)" || $(mkdir_p) "$(DESTDIR)$(gajimsrc3dir)" + @list='$(gajimsrc3_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(gajimsrc3DATA_INSTALL) '$$d$$p' '$(DESTDIR)$(gajimsrc3dir)/$$f'"; \ + $(gajimsrc3DATA_INSTALL) "$$d$$p" "$(DESTDIR)$(gajimsrc3dir)/$$f"; \ + done + +uninstall-gajimsrc3DATA: + @$(NORMAL_UNINSTALL) + @list='$(gajimsrc3_DATA)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(gajimsrc3dir)/$$f'"; \ + rm -f "$(DESTDIR)$(gajimsrc3dir)/$$f"; \ + done + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +mostlyclean-recursive clean-recursive distclean-recursive \ +maintainer-clean-recursive: + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + $(mkdir_p) $(distdir)/common $(distdir)/common/xmpp $(distdir)/common/zeroconf + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(mkdir_p) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile $(LTLIBRARIES) $(DATA) +installdirs: installdirs-recursive +installdirs-am: + for dir in "$(DESTDIR)$(gtkspelllibdir)" "$(DESTDIR)$(trayiconlibdir)" "$(DESTDIR)$(gajimsrcdir)" "$(DESTDIR)$(gajimsrc1dir)" "$(DESTDIR)$(gajimsrc2dir)" "$(DESTDIR)$(gajimsrc3dir)"; do \ + test -z "$$dir" || $(mkdir_p) "$$dir"; \ + done +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-gtkspelllibLTLIBRARIES clean-libtool \ + clean-trayiconlibLTLIBRARIES mostlyclean-am + +distclean: distclean-recursive + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-libtool distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +info: info-recursive + +info-am: + +install-data-am: install-gajimsrc1DATA install-gajimsrc2DATA \ + install-gajimsrc3DATA install-gajimsrcDATA \ + install-gtkspelllibLTLIBRARIES install-trayiconlibLTLIBRARIES + +install-exec-am: + +install-info: install-info-recursive + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-gajimsrc1DATA uninstall-gajimsrc2DATA \ + uninstall-gajimsrc3DATA uninstall-gajimsrcDATA \ + uninstall-gtkspelllibLTLIBRARIES uninstall-info-am \ + uninstall-trayiconlibLTLIBRARIES + +uninstall-info: uninstall-info-recursive + +.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \ + clean clean-generic clean-gtkspelllibLTLIBRARIES clean-libtool \ + clean-recursive clean-trayiconlibLTLIBRARIES ctags \ + ctags-recursive distclean distclean-compile distclean-generic \ + distclean-libtool distclean-recursive distclean-tags distdir \ + dvi dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-exec install-exec-am \ + install-gajimsrc1DATA install-gajimsrc2DATA \ + install-gajimsrc3DATA install-gajimsrcDATA \ + install-gtkspelllibLTLIBRARIES install-info install-info-am \ + install-man install-strip install-trayiconlibLTLIBRARIES \ + installcheck installcheck-am installdirs installdirs-am \ + maintainer-clean maintainer-clean-generic \ + maintainer-clean-recursive mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool mostlyclean-recursive \ + pdf pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \ + uninstall-gajimsrc1DATA uninstall-gajimsrc2DATA \ + uninstall-gajimsrc3DATA uninstall-gajimsrcDATA \ + uninstall-gtkspelllibLTLIBRARIES uninstall-info-am \ + uninstall-trayiconlibLTLIBRARIES + + +trayicon.c: trayicon.defs trayicon.override + pygtk-codegen-2.0 --prefix trayicon \ + --register $(PYGTK_DEFS)/gdk-types.defs \ + --register $(PYGTK_DEFS)/gtk-types.defs \ + --override trayicon.override \ + trayicon.defs > $@ +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/src/advanced.py b/src/advanced.py index 76bf6ed4f..c0b8df496 100644 --- a/src/advanced.py +++ b/src/advanced.py @@ -9,7 +9,7 @@ ## Vincent Hanquez ## Copyright (C) 2005 Yann Le Boulanger ## Vincent Hanquez -## Nikos Kouremenos +## Nikos Kouremenos ## Dimitur Kirov ## Travis Shirk ## Norman Rasmussen diff --git a/src/cell_renderer_image.py b/src/cell_renderer_image.py index f09dfa7ac..d6a9fbc63 100644 --- a/src/cell_renderer_image.py +++ b/src/cell_renderer_image.py @@ -8,7 +8,7 @@ ## Vincent Hanquez ## Copyright (C) 2005 Yann Le Boulanger ## Vincent Hanquez -## Nikos Kouremenos +## Nikos Kouremenos ## Dimitur Kirov ## Travis Shirk ## Norman Rasmussen diff --git a/src/chat_control.py b/src/chat_control.py index 7b19fc563..9c5e33efa 100644 --- a/src/chat_control.py +++ b/src/chat_control.py @@ -34,6 +34,8 @@ from message_textview import MessageTextView from common.contacts import GC_Contact from common.logger import Constants constants = Constants() +from rst_xhtml_generator import create_xhtml +from common.xmpp.protocol import NS_XHTML try: import gtkspell @@ -112,7 +114,7 @@ class ChatControlBase(MessageControl): acct, resource = None): MessageControl.__init__(self, type_id, parent_win, widget_name, display_names, contact, acct, resource = resource); - # when/if we do XHTML we will but formatting buttons back + # when/if we do XHTML we will put formatting buttons back widget = self.xml.get_widget('emoticons_button') id = widget.connect('clicked', self.on_emoticons_button_clicked) self.handlers[id] = widget @@ -228,6 +230,11 @@ class ChatControlBase(MessageControl): item = gtk.SeparatorMenuItem() menu.prepend(item) + item = gtk.ImageMenuItem(gtk.STOCK_CLEAR) + menu.prepend(item) + id = item.connect('activate', self.msg_textview.clear) + self.handlers[id] = item + if gajim.config.get('use_speller') and HAS_GTK_SPELL: item = gtk.MenuItem(_('Spelling language')) menu.prepend(item) @@ -241,11 +248,6 @@ class ChatControlBase(MessageControl): id = item.connect('activate', _on_select_dictionary, langs[lang]) self.handlers[id] = item - item = gtk.ImageMenuItem(gtk.STOCK_CLEAR) - menu.prepend(item) - id = item.connect('activate', self.msg_textview.clear) - self.handlers[id] = item - menu.show_all() # moved from ChatControl @@ -424,7 +426,8 @@ class ChatControlBase(MessageControl): message_textview = widget message_buffer = message_textview.get_buffer() start_iter, end_iter = message_buffer.get_bounds() - message = message_buffer.get_text(start_iter, end_iter, False).decode('utf-8') + message = message_buffer.get_text(start_iter, end_iter, False).decode( + 'utf-8') # construct event instance from binding event = gtk.gdk.Event(gtk.gdk.KEY_PRESS) # it's always a key-press here @@ -470,7 +473,8 @@ class ChatControlBase(MessageControl): self.send_message(message) # send the message else: # Give the control itself a chance to process - self.handle_message_textview_mykey_press(widget, event_keyval, event_keymod) + self.handle_message_textview_mykey_press(widget, event_keyval, + event_keymod) def _process_command(self, message): if not message: @@ -533,7 +537,7 @@ class ChatControlBase(MessageControl): def print_conversation_line(self, text, kind, name, tim, other_tags_for_name = [], other_tags_for_time = [], other_tags_for_text = [], count_as_new = True, - subject = None, old_kind = None): + subject = None, old_kind = None, xhtml = None): '''prints 'chat' type messages''' jid = self.contact.jid full_jid = self.get_full_jid() @@ -543,7 +547,7 @@ class ChatControlBase(MessageControl): end = True textview.print_conversation_line(text, jid, kind, name, tim, other_tags_for_name, other_tags_for_time, other_tags_for_text, - subject, old_kind) + subject, old_kind, xhtml) if not count_as_new: return @@ -554,9 +558,15 @@ class ChatControlBase(MessageControl): full_jid != self.parent_win.get_active_jid() or \ not self.parent_win.is_active() or not end) and \ kind in ('incoming', 'incoming_queue'): - if self.notify_on_new_messages(): + gc_message = False + if self.type_id == message_control.TYPE_GC: + gc_message = True + if self.notify_on_new_messages() or \ + (gc_message and other_tags_for_text == ['marked']): + # we want to have save this message in events list + # other_tags_for_text == ['marked'] --> highlighted gc message type_ = 'printed_' + self.type_id - if self.type_id == message_control.TYPE_GC: + if gc_message: type_ = 'printed_gc_msg' show_in_roster = notify.get_show_in_roster('message_received', self.account, self.contact) @@ -759,7 +769,8 @@ class ChatControlBase(MessageControl): #whatever is already typed start_iter = conv_buf.get_start_iter() end_iter = conv_buf.get_end_iter() - self.orig_msg = conv_buf.get_text(start_iter, end_iter, 0).decode('utf-8') + self.orig_msg = conv_buf.get_text(start_iter, end_iter, 0).decode( + 'utf-8') self.typing_new = False if direction == 'up': if self.sent_history_pos == 0: @@ -819,8 +830,8 @@ class ChatControl(ChatControlBase): old_msg_kind = None # last kind of the printed message def __init__(self, parent_win, contact, acct, resource = None): - ChatControlBase.__init__(self, self.TYPE_ID, parent_win, 'chat_child_vbox', - (_('Chat'), _('Chats')), contact, acct, resource) + ChatControlBase.__init__(self, self.TYPE_ID, parent_win, + 'chat_child_vbox', (_('Chat'), _('Chats')), contact, acct, resource) # for muc use: # widget = self.xml.get_widget('muc_window_actions_button') @@ -828,13 +839,16 @@ class ChatControl(ChatControlBase): id = widget.connect('clicked', self.on_actions_button_clicked) self.handlers[id] = widget - self.hide_chat_buttons_always = gajim.config.get('always_hide_chat_buttons') + self.hide_chat_buttons_always = gajim.config.get( + 'always_hide_chat_buttons') self.chat_buttons_set_visible(self.hide_chat_buttons_always) - self.widget_set_visible(self.xml.get_widget('banner_eventbox'), gajim.config.get('hide_chat_banner')) + self.widget_set_visible(self.xml.get_widget('banner_eventbox'), + gajim.config.get('hide_chat_banner')) # Initialize drag-n-drop self.TARGET_TYPE_URI_LIST = 80 self.dnd_list = [ ( 'text/uri-list', 0, self.TARGET_TYPE_URI_LIST ) ] - id = self.widget.connect('drag_data_received', self._on_drag_data_received) + id = self.widget.connect('drag_data_received', + self._on_drag_data_received) self.handlers[id] = self.widget self.widget.drag_dest_set(gtk.DEST_DEFAULT_MOTION | gtk.DEST_DEFAULT_HIGHLIGHT | @@ -856,17 +870,21 @@ class ChatControl(ChatControlBase): self._on_window_motion_notify) self.handlers[id] = self.parent_win.window message_tv_buffer = self.msg_textview.get_buffer() - id = message_tv_buffer.connect('changed', self._on_message_tv_buffer_changed) + id = message_tv_buffer.connect('changed', + self._on_message_tv_buffer_changed) self.handlers[id] = message_tv_buffer widget = self.xml.get_widget('avatar_eventbox') - id = widget.connect('enter-notify-event', self.on_avatar_eventbox_enter_notify_event) + id = widget.connect('enter-notify-event', + self.on_avatar_eventbox_enter_notify_event) self.handlers[id] = widget - id = widget.connect('leave-notify-event', self.on_avatar_eventbox_leave_notify_event) + id = widget.connect('leave-notify-event', + self.on_avatar_eventbox_leave_notify_event) self.handlers[id] = widget - id = widget.connect('button-press-event', self.on_avatar_eventbox_button_press_event) + id = widget.connect('button-press-event', + self.on_avatar_eventbox_button_press_event) self.handlers[id] = widget widget = self.xml.get_widget('gpg_togglebutton') @@ -880,8 +898,6 @@ class ChatControl(ChatControlBase): self.update_ui() # restore previous conversation self.restore_conversation() - # is account displayed after nick in banner ? - self.account_displayed= False def notify_on_new_messages(self): return gajim.config.get('trayicon_notification_on_new_messages') @@ -1000,34 +1016,31 @@ class ChatControl(ChatControlBase): banner_name_label = self.xml.get_widget('banner_name_label') name = contact.get_shown_name() - avoid_showing_account_too = False if self.resource: name += '/' + self.resource - avoid_showing_account_too = True if self.TYPE_ID == message_control.TYPE_PM: room_jid = self.contact.jid.split('/')[0] room_ctrl = gajim.interface.msg_win_mgr.get_control(room_jid, self.account) - name = _('%s from room %s') % (name, room_ctrl.name) + name = _('%(nickname)s from room %(room_name)s') %\ + {'nickname': name, 'room_name': room_ctrl.name} name = gtkgui_helpers.escape_for_pango_markup(name) - # We know our contacts nick, but if there are any other controls - # with the same nick we need to also display the account + # We know our contacts nick, but if another contact has the same nick + # in another account we need to also display the account. # except if we are talking to two different resources of the same contact acct_info = '' - self.account_displayed = False - for ctrl in self.parent_win.controls(): - if ctrl == self or ctrl.type_id == 'gc': + for account in gajim.contacts.get_accounts(): + if account == self.account: continue - if self.contact.get_shown_name() == ctrl.contact.get_shown_name()\ - and not avoid_showing_account_too: - self.account_displayed = True - if not ctrl.account_displayed: - # do that after this instance exists - gobject.idle_add(ctrl.draw_banner) - acct_info = ' (%s)' % \ - gtkgui_helpers.escape_for_pango_markup(self.account) + if acct_info: # We already found a contact with same nick break + for jid in gajim.contacts.get_jid_list(account): + contact_ = gajim.contacts.get_first_contact_from_jid(account, jid) + if contact_.get_shown_name() == self.contact.get_shown_name(): + acct_info = ' (%s)' % \ + gtkgui_helpers.escape_for_pango_markup(self.account) + break status = contact.status if status is not None: @@ -1165,8 +1178,8 @@ class ChatControl(ChatControlBase): if current_state == 'composing': self.send_chatstate('paused') # pause composing - # assume no activity and let the motion-notify or 'insert-text' make them True - # refresh 30 seconds vars too or else it's 30 - 5 = 25 seconds! + # assume no activity and let the motion-notify or 'insert-text' make them + # True refresh 30 seconds vars too or else it's 30 - 5 = 25 seconds! self.reset_kbd_mouse_timeout_vars() return True # loop forever @@ -1185,11 +1198,12 @@ class ChatControl(ChatControlBase): if self.mouse_over_in_last_5_secs or self.kbd_activity_in_last_5_secs: return True # loop forever - if not self.mouse_over_in_last_30_secs or self.kbd_activity_in_last_30_secs: + if not self.mouse_over_in_last_30_secs or \ + self.kbd_activity_in_last_30_secs: self.send_chatstate('inactive', contact) - # assume no activity and let the motion-notify or 'insert-text' make them True - # refresh 30 seconds too or else it's 30 - 5 = 25 seconds! + # assume no activity and let the motion-notify or 'insert-text' make them + # True refresh 30 seconds too or else it's 30 - 5 = 25 seconds! self.reset_kbd_mouse_timeout_vars() return True # loop forever @@ -1200,7 +1214,7 @@ class ChatControl(ChatControlBase): self.kbd_activity_in_last_30_secs = False def print_conversation(self, text, frm = '', tim = None, - encrypted = False, subject = None): + encrypted = False, subject = None, xhtml = None): '''Print a line in the conversation: if contact is set to status: it's a status message if contact is set to another value: it's an outgoing message @@ -1239,8 +1253,10 @@ class ChatControl(ChatControlBase): else: kind = 'outgoing' name = gajim.nicks[self.account] + if not xhtml and not encrypted and gajim.config.get('rst_formatting_outgoing_messages'): + xhtml = '%s' % (NS_XHTML, create_xhtml(text)) ChatControlBase.print_conversation_line(self, text, kind, name, tim, - subject = subject, old_kind = self.old_msg_kind) + subject = subject, old_kind = self.old_msg_kind, xhtml = xhtml) if text.startswith('/me ') or text.startswith('/me\n'): self.old_msg_kind = None else: @@ -1458,18 +1474,20 @@ class ChatControl(ChatControlBase): # prevent going paused if we we were not composing (JEP violation) if state == 'paused' and not contact.our_chatstate == 'composing': - MessageControl.send_message(self, None, chatstate = 'active') # go active before + # go active before + MessageControl.send_message(self, None, chatstate = 'active') contact.our_chatstate = 'active' self.reset_kbd_mouse_timeout_vars() # if we're inactive prevent composing (JEP violation) elif contact.our_chatstate == 'inactive' and state == 'composing': - MessageControl.send_message(self, None, chatstate = 'active') # go active before + # go active before + MessageControl.send_message(self, None, chatstate = 'active') contact.our_chatstate = 'active' self.reset_kbd_mouse_timeout_vars() - MessageControl.send_message(self, None, chatstate = state, msg_id = contact.msg_id, - composing_jep = contact.composing_jep) + MessageControl.send_message(self, None, chatstate = state, + msg_id = contact.msg_id, composing_jep = contact.composing_jep) contact.our_chatstate = state if contact.our_chatstate == 'active': self.reset_kbd_mouse_timeout_vars() diff --git a/src/common/GnuPG.py b/src/common/GnuPG.py index bb6753fca..af38cddf9 100644 --- a/src/common/GnuPG.py +++ b/src/common/GnuPG.py @@ -2,13 +2,13 @@ ## ## Contributors for this file: ## - Yann Le Boulanger -## - Nikos Kouremenos +## - Nikos Kouremenos ## ## Copyright (C) 2003-2004 Yann Le Boulanger ## Vincent Hanquez ## Copyright (C) 2005 Yann Le Boulanger ## Vincent Hanquez -## Nikos Kouremenos +## Nikos Kouremenos ## Dimitur Kirov ## Travis Shirk ## Norman Rasmussen diff --git a/src/common/Makefile b/src/common/Makefile deleted file mode 100644 index c6d05a2d4..000000000 --- a/src/common/Makefile +++ /dev/null @@ -1,25 +0,0 @@ -# Set the C flags to include the GTK+ and Python libraries -PYTHON ?= python -PYTHONVER = `$(PYTHON) -c 'import sys; print sys.version[:3]'` - -HAVE_XSCRNSAVER = $(shell pkg-config --exists xscrnsaver && echo 'YES') - -ifeq ($(HAVE_XSCRNSAVER),YES) -# We link with libXScrnsaver from modular X.Org X11 -gtk_and_x_CFLAGS = `pkg-config --cflags gtk+-2.0 pygtk-2.0 xscrnsaver` -fpic -I/usr/include/python$(PYTHONVER) -I. -gtk_and_x_LDFLAGS = `pkg-config --libs gtk+-2.0 pygtk-2.0 xscrnsaver` -lpython$(PYTHONVER) -else -# # We link with libXScrnsaver from monolithic X.Org X11 -gtk_and_x_CFLAGS = `pkg-config --cflags gtk+-2.0 pygtk-2.0` -fpic -I/usr/include/python$(PYTHONVER) -I. -gtk_and_x_LDFLAGS = `pkg-config --libs gtk+-2.0 pygtk-2.0` \ - -L/usr/X11R6$(LIBDIR) -lX11 -lXss -lXext -lpython$(PYTHONVER) -endif - -all: idle.so - -idle.so: - $(CC) $(OPTFLAGS) $(CFLAGS) $(LDFLAGS) $(gtk_and_x_CFLAGS) $(gtk_and_x_LDFLAGS) -shared idle.c $^ -o $@ - -clean: - rm -f *.so - rm -rf build diff --git a/src/common/Makefile.am b/src/common/Makefile.am new file mode 100644 index 000000000..22d2fd827 --- /dev/null +++ b/src/common/Makefile.am @@ -0,0 +1,20 @@ + +#CLEANFILES = \ +# trayicon.c + +INCLUDES = \ + $(PYTHON_INCLUDES) + + +idlelib_LTLIBRARIES = idle.la +idlelibdir = $(libdir)/gajim + +idle_la_LIBADD = $(XSCREENSAVER_LIBS) + +idle_la_SOURCES = idle.c + +idle_la_LDFLAGS = \ + -module -avoid-version -no-undefined + +idle_la_CFLAGS = $(XSCREENSAVER_CFLAGS) + diff --git a/src/common/Makefile.in b/src/common/Makefile.in new file mode 100644 index 000000000..db08087f3 --- /dev/null +++ b/src/common/Makefile.in @@ -0,0 +1,540 @@ +# Makefile.in generated by automake 1.9.6 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +#CLEANFILES = \ +# trayicon.c + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = ../.. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = src/common +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/glib-gettext.m4 \ + $(top_srcdir)/m4/python.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__installdirs = "$(DESTDIR)$(idlelibdir)" +idlelibLTLIBRARIES_INSTALL = $(INSTALL) +LTLIBRARIES = $(idlelib_LTLIBRARIES) +idle_la_DEPENDENCIES = +am_idle_la_OBJECTS = idle_la-idle.lo +idle_la_OBJECTS = $(am_idle_la_OBJECTS) +DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +SOURCES = $(idle_la_SOURCES) +DIST_SOURCES = $(idle_la_SOURCES) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALL_LINGUAS = @ALL_LINGUAS@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CATALOGS = @CATALOGS@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DBUS_CFLAGS = @DBUS_CFLAGS@ +DBUS_LIBS = @DBUS_LIBS@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GMOFILES = @GMOFILES@ +GMSGFMT = @GMSGFMT@ +GREP = @GREP@ +GTKSPELL_CFLAGS = @GTKSPELL_CFLAGS@ +GTKSPELL_LIBS = @GTKSPELL_LIBS@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLLIBS = @INTLLIBS@ +INTLTOOL_CAVES_RULE = @INTLTOOL_CAVES_RULE@ +INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@ +INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@ +INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ +INTLTOOL_ICONV = @INTLTOOL_ICONV@ +INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@ +INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@ +INTLTOOL_MERGE = @INTLTOOL_MERGE@ +INTLTOOL_MSGFMT = @INTLTOOL_MSGFMT@ +INTLTOOL_MSGMERGE = @INTLTOOL_MSGMERGE@ +INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@ +INTLTOOL_PERL = @INTLTOOL_PERL@ +INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@ +INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@ +INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@ +INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@ +INTLTOOL_SERVICE_RULE = @INTLTOOL_SERVICE_RULE@ +INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@ +INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@ +INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@ +INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@ +INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ +INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@ +INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@ +INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@ +INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ +MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ +MAKEINFO = @MAKEINFO@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +POFILES = @POFILES@ +POSUB = @POSUB@ +PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ +PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ +PYGTK_CFLAGS = @PYGTK_CFLAGS@ +PYGTK_DEFS = @PYGTK_DEFS@ +PYGTK_LIBS = @PYGTK_LIBS@ +PYTHON = @PYTHON@ +PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ +PYTHON_INCLUDES = @PYTHON_INCLUDES@ +PYTHON_PLATFORM = @PYTHON_PLATFORM@ +PYTHON_PREFIX = @PYTHON_PREFIX@ +PYTHON_VERSION = @PYTHON_VERSION@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +XMKMF = @XMKMF@ +XSCRNSAVER_CFLAGS = @XSCRNSAVER_CFLAGS@ +XSCRNSAVER_LIBS = @XSCRNSAVER_LIBS@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgpyexecdir = @pkgpyexecdir@ +pkgpythondir = @pkgpythondir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pyexecdir = @pyexecdir@ +pythondir = @pythondir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +INCLUDES = \ + $(PYTHON_INCLUDES) + +idlelib_LTLIBRARIES = idle.la +idlelibdir = $(libdir)/gajim +idle_la_LIBADD = $(XSCREENSAVER_LIBS) +idle_la_SOURCES = idle.c +idle_la_LDFLAGS = \ + -module -avoid-version -no-undefined + +idle_la_CFLAGS = $(XSCREENSAVER_CFLAGS) +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/common/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu src/common/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +install-idlelibLTLIBRARIES: $(idlelib_LTLIBRARIES) + @$(NORMAL_INSTALL) + test -z "$(idlelibdir)" || $(mkdir_p) "$(DESTDIR)$(idlelibdir)" + @list='$(idlelib_LTLIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ + f=$(am__strip_dir) \ + echo " $(LIBTOOL) --mode=install $(idlelibLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(idlelibdir)/$$f'"; \ + $(LIBTOOL) --mode=install $(idlelibLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(idlelibdir)/$$f"; \ + else :; fi; \ + done + +uninstall-idlelibLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @set -x; list='$(idlelib_LTLIBRARIES)'; for p in $$list; do \ + p=$(am__strip_dir) \ + echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(idlelibdir)/$$p'"; \ + $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(idlelibdir)/$$p"; \ + done + +clean-idlelibLTLIBRARIES: + -test -z "$(idlelib_LTLIBRARIES)" || rm -f $(idlelib_LTLIBRARIES) + @list='$(idlelib_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done +idle.la: $(idle_la_OBJECTS) $(idle_la_DEPENDENCIES) + $(LINK) -rpath $(idlelibdir) $(idle_la_LDFLAGS) $(idle_la_OBJECTS) $(idle_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/idle_la-idle.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + +idle_la-idle.lo: idle.c +@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(idle_la_CFLAGS) $(CFLAGS) -MT idle_la-idle.lo -MD -MP -MF "$(DEPDIR)/idle_la-idle.Tpo" -c -o idle_la-idle.lo `test -f 'idle.c' || echo '$(srcdir)/'`idle.c; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/idle_la-idle.Tpo" "$(DEPDIR)/idle_la-idle.Plo"; else rm -f "$(DEPDIR)/idle_la-idle.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='idle.c' object='idle_la-idle.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(idle_la_CFLAGS) $(CFLAGS) -c -o idle_la-idle.lo `test -f 'idle.c' || echo '$(srcdir)/'`idle.c + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LTLIBRARIES) +installdirs: + for dir in "$(DESTDIR)$(idlelibdir)"; do \ + test -z "$$dir" || $(mkdir_p) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-idlelibLTLIBRARIES clean-libtool \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-libtool distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: install-idlelibLTLIBRARIES + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-idlelibLTLIBRARIES uninstall-info-am + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-idlelibLTLIBRARIES clean-libtool ctags distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-exec \ + install-exec-am install-idlelibLTLIBRARIES install-info \ + install-info-am install-man install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags uninstall uninstall-am uninstall-idlelibLTLIBRARIES \ + uninstall-info-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/src/common/check_paths.py b/src/common/check_paths.py index 03913473d..a6bc52bf1 100644 --- a/src/common/check_paths.py +++ b/src/common/check_paths.py @@ -7,7 +7,7 @@ ## Vincent Hanquez ## Copyright (C) 2005 Yann Le Boulanger ## Vincent Hanquez -## Nikos Kouremenos +## Nikos Kouremenos ## Dimitur Kirov ## Travis Shirk ## Norman Rasmussen diff --git a/src/common/config.py b/src/common/config.py index ec95f4903..7527528f3 100644 --- a/src/common/config.py +++ b/src/common/config.py @@ -53,7 +53,8 @@ class Config: 'autopopupaway': [ opt_bool, False ], 'use_notif_daemon': [ opt_bool, True , _('Use D-Bus and Notification-Daemon to show notifications') ], 'ignore_unknown_contacts': [ opt_bool, False ], - 'showoffline': [ opt_bool, False, '', True ], + 'showoffline': [ opt_bool, False ], + 'show_transports_group': [ opt_bool, True ], 'autoaway': [ opt_bool, True ], 'autoawaytime': [ opt_int, 5, _('Time in minutes, after which your status changes to away.') ], 'autoaway_message': [ opt_str, _('Away as a result of being idle') ], @@ -86,12 +87,14 @@ class Config: 'use_speller': [ opt_bool, False, ], 'speller_language': [ opt_str, '', _('Language used by speller')], 'print_time': [ opt_str, 'always', _('\'always\' - print time for every message.\n\'sometimes\' - print time every print_ichat_every_foo_minutes minute.\n\'never\' - never print time.')], - 'print_time_fuzzy': [ opt_int, 0, _('Value of fuzziness from 1 to 4 or 0 to disable fuzzyclock. 1 is the most precise clock, 4 the less precise one.') ], + 'print_time_fuzzy': [ opt_int, 0, _('Print time in chats using Fuzzy Clock. Value of fuzziness from 1 to 4, or 0 to disable fuzzyclock. 1 is the most precise clock, 4 the less precise one. This is used only if print_time is \'sometimes\'.') ], 'emoticons_theme': [opt_str, 'static', '', True ], 'ascii_formatting': [ opt_bool, True, _('Treat * / _ pairs as possible formatting characters.'), True], 'show_ascii_formatting_chars': [ opt_bool, True , _('If True, do not ' 'remove */_ . So *abc* will be bold but with * * not removed.')], + 'rst_formatting_outgoing_messages': [ opt_bool, False, + _('Uses ReStructured text markup for HTML, plus ascii formatting if selected.')], 'sounds_on': [ opt_bool, True ], # 'aplay', 'play', 'esdplay', 'artsplay' detected first time only 'soundplayer': [ opt_str, '' ], @@ -220,6 +223,13 @@ class Config: 'password': [ opt_str, '' ], 'resource': [ opt_str, 'gajim', '', True ], 'priority': [ opt_int, 5, '', True ], + 'adjust_priority_with_status': [ opt_bool, True, _('Priority will change automatically according to your status. Priorities are defined in autopriority_* options.') ], + 'autopriority_online': [ opt_int, 50], + 'autopriority_chat': [ opt_int, 50], + 'autopriority_away': [ opt_int, 40], + 'autopriority_xa': [ opt_int, 30], + 'autopriority_dnd': [ opt_int, 20], + 'autopriority_invisible': [ opt_int, 10], 'autoconnect': [ opt_bool, False, '', True ], 'autoreconnect': [ opt_bool, True ], 'active': [ opt_bool, True], @@ -335,15 +345,15 @@ class Config: _('Movie'): _("I'm watching a movie."), _('Working'): _("I'm working."), _('Phone'): _("I'm on the phone."), - _('Out'): _("I'm out enjoying life"), + _('Out'): _("I'm out enjoying life."), } defaultstatusmsg_default = { - 'online': [ False, _("I'm available") ], - 'chat': [ False, _("I'm free for chat") ], - 'away': [ False, _('Be right back') ], - 'xa': [ False, _("I'm not available") ], - 'dnd': [ False, _('Do not disturb') ], + 'online': [ False, _("I'm available.") ], + 'chat': [ False, _("I'm free for chat.") ], + 'away': [ False, _('Be right back.') ], + 'xa': [ False, _("I'm not available.") ], + 'dnd': [ False, _('Do not disturb.') ], 'invisible': [ False, _('Bye!') ], 'offline': [ False, _('Bye!') ], } diff --git a/src/common/connection.py b/src/common/connection.py index 96abbc3c8..d59a0add0 100644 --- a/src/common/connection.py +++ b/src/common/connection.py @@ -42,6 +42,8 @@ from common import GnuPG from connection_handlers import * USE_GPG = GnuPG.USE_GPG +from rst_xhtml_generator import create_xhtml + class Connection(ConnectionHandlers): '''Connection class''' def __init__(self, name): @@ -54,6 +56,7 @@ class Connection(ConnectionHandlers): self.is_zeroconf = False self.gpg = None self.status = '' + self.priority = gajim.get_priority(name, 'offline') self.old_show = '' # increase/decrease default timeout for server responses self.try_connecting_for_foo_secs = 45 @@ -119,6 +122,7 @@ class Connection(ConnectionHandlers): self.on_purpose = on_purpose self.connected = 0 self.time_to_reconnect = None + self.privacy_rules_supported = False if self.connection: # make sure previous connection is completely closed gajim.proxy65_manager.disconnect(self.connection) @@ -129,8 +133,8 @@ class Connection(ConnectionHandlers): def _disconnectedReconnCB(self): '''Called when we are disconnected''' gajim.log.debug('disconnectedReconnCB') - if self.connected > 1: - # we cannot change our status to offline or connectiong + if gajim.account_is_connected(self.name): + # we cannot change our status to offline or connecting # after we auth to server self.old_show = STATUS_LIST[self.connected] self.connected = 0 @@ -405,8 +409,6 @@ class Connection(ConnectionHandlers): con.RegisterDisconnectHandler(self._disconnectedReconnCB) gajim.log.debug(_('Connected to server %s:%s with %s') % (self._current_host['host'], self._current_host['port'], con_type)) - # Ask metacontacts before roster - self.get_metacontacts() self._register_handlers(con, con_type) return True @@ -460,7 +462,7 @@ class Connection(ConnectionHandlers): # END connect def quit(self, kill_core): - if kill_core and self.connected > 1: + if kill_core and gajim.account_is_connected(self.name): self.disconnect(on_purpose = True) def get_privacy_lists(self): @@ -532,14 +534,15 @@ class Connection(ConnectionHandlers): # active the privacy rule self.privacy_rules_supported = True self.activate_privacy_rule('invisible') - prio = unicode(gajim.config.get_per('accounts', self.name, 'priority')) - p = common.xmpp.Presence(typ = ptype, priority = prio, show = show) + priority = unicode(gajim.get_priority(self.name, show)) + p = common.xmpp.Presence(typ = ptype, priority = priority, show = show) p = self.add_sha(p, ptype != 'unavailable') if msg: p.setStatus(msg) if signed: p.setTag(common.xmpp.NS_SIGNED + ' x').setData(signed) self.connection.send(p) + self.priority = priority self.dispatch('STATUS', 'invisible') if initial: #ask our VCard @@ -592,8 +595,11 @@ class Connection(ConnectionHandlers): if self.connection: con.set_send_timeout(self.keepalives, self.send_keepalive) self.connection.onreceive(None) - # Ask metacontacts before roster - self.get_metacontacts() + iq = common.xmpp.Iq('get', common.xmpp.NS_PRIVACY, xmlns = '') + id = self.connection.getAnID() + iq.setID(id) + self.awaiting_answers[id] = (PRIVACY_ARRIVED, ) + self.connection.send(iq) def change_status(self, show, msg, auto = False): if not show in STATUS_LIST: @@ -647,9 +653,8 @@ class Connection(ConnectionHandlers): iq = self.build_privacy_rule('visible', 'allow') self.connection.send(iq) self.activate_privacy_rule('visible') - prio = unicode(gajim.config.get_per('accounts', self.name, - 'priority')) - p = common.xmpp.Presence(typ = None, priority = prio, show = sshow) + priority = unicode(gajim.get_priority(self.name, sshow)) + p = common.xmpp.Presence(typ = None, priority = priority, show = sshow) p = self.add_sha(p) if msg: p.setStatus(msg) @@ -657,6 +662,7 @@ class Connection(ConnectionHandlers): p.setTag(common.xmpp.NS_SIGNED + ' x').setData(signed) if self.connection: self.connection.send(p) + self.priority = priority self.dispatch('STATUS', show) def _on_disconnected(self): @@ -667,17 +673,22 @@ class Connection(ConnectionHandlers): def get_status(self): return STATUS_LIST[self.connected] - def send_motd(self, jid, subject = '', msg = ''): + + def send_motd(self, jid, subject = '', msg = '', xhtml = None): if not self.connection: return - msg_iq = common.xmpp.Message(to = jid, body = msg, subject = subject) + msg_iq = common.xmpp.Message(to = jid, body = msg, subject = subject, + xhtml = xhtml) + self.connection.send(msg_iq) def send_message(self, jid, msg, keyID, type = 'chat', subject='', chatstate = None, msg_id = None, composing_jep = None, resource = None, - user_nick = None): + user_nick = None, xhtml = None): if not self.connection: return + if not xhtml and gajim.config.get('rst_formatting_outgoing_messages'): + xhtml = create_xhtml(msg) if not msg and chatstate is None: return fjid = jid @@ -691,18 +702,24 @@ class Connection(ConnectionHandlers): if msgenc: msgtxt = '[This message is encrypted]' lang = os.getenv('LANG') - if lang is not None or lang != 'en': # we're not english - msgtxt = _('[This message is encrypted]') +\ - ' ([This message is encrypted])' # one in locale and one en + if lang is not None and lang != 'en': # we're not english + # one in locale and one en + msgtxt = _('[This message is *encrypted* (See :JEP:`27`]') +\ + ' ([This message is *encrypted* (See :JEP:`27`])' + if msgtxt and not xhtml and gajim.config.get( + 'rst_formatting_outgoing_messages'): + # Generate a XHTML part using reStructured text markup + xhtml = create_xhtml(msgtxt) if type == 'chat': - msg_iq = common.xmpp.Message(to = fjid, body = msgtxt, typ = type) + msg_iq = common.xmpp.Message(to = fjid, body = msgtxt, typ = type, + xhtml = xhtml) else: if subject: msg_iq = common.xmpp.Message(to = fjid, body = msgtxt, - typ = 'normal', subject = subject) + typ = 'normal', subject = subject, xhtml = xhtml) else: msg_iq = common.xmpp.Message(to = fjid, body = msgtxt, - typ = 'normal') + typ = 'normal', xhtml = xhtml) if msgenc: msg_iq.setTag(common.xmpp.NS_ENCRYPTED + ' x').setData(msgenc) @@ -720,7 +737,8 @@ class Connection(ConnectionHandlers): msg_iq.setTag(chatstate, namespace = common.xmpp.NS_CHATSTATES) if composing_jep == 'JEP-0022' or not composing_jep: # JEP-0022 - chatstate_node = msg_iq.setTag('x', namespace = common.xmpp.NS_EVENT) + chatstate_node = msg_iq.setTag('x', + namespace = common.xmpp.NS_EVENT) if not msgtxt: # when no , add if not msg_id: # avoid putting 'None' in tag msg_id = '' @@ -982,10 +1000,12 @@ class Connection(ConnectionHandlers): last_log = 0 self.last_history_line[jid]= last_log - def send_gc_message(self, jid, msg): + def send_gc_message(self, jid, msg, xhtml = None): if not self.connection: return - msg_iq = common.xmpp.Message(jid, msg, typ = 'groupchat') + if not xhtml and gajim.config.get('rst_formatting_outgoing_messages'): + xhtml = create_xhtml(msg) + msg_iq = common.xmpp.Message(jid, msg, typ = 'groupchat', xhtml = xhtml) self.connection.send(msg_iq) self.dispatch('MSGSENT', (jid, msg)) @@ -1111,11 +1131,11 @@ class Connection(ConnectionHandlers): self.connection.send(iq) def unregister_account(self, on_remove_success): - # no need to write this as a class method and keep the value of on_remove_success - # as a class property as pass it as an argument + # no need to write this as a class method and keep the value of + # on_remove_success as a class property as pass it as an argument def _on_unregister_account_connect(con): self.on_connect_auth = None - if self.connected > 1: + if gajim.account_is_connected(self.name): hostname = gajim.config.get_per('accounts', self.name, 'hostname') iq = common.xmpp.Iq(typ = 'set', to = hostname) q = iq.setTag(common.xmpp.NS_REGISTER + ' query').setTag('remove') diff --git a/src/common/connection_handlers.py b/src/common/connection_handlers.py index c29cf539a..3e955b35a 100644 --- a/src/common/connection_handlers.py +++ b/src/common/connection_handlers.py @@ -3,7 +3,7 @@ ## ## Contributors for this file: ## - Yann Le Boulanger -## - Nikos Kouremenos +## - Nikos Kouremenos ## - Dimitur Kirov ## - Travis Shirk ## @@ -41,6 +41,7 @@ VCARD_PUBLISHED = 'vcard_published' VCARD_ARRIVED = 'vcard_arrived' AGENT_REMOVED = 'agent_removed' METACONTACTS_ARRIVED = 'metacontacts_arrived' +PRIVACY_ARRIVED = 'privacy_arrived' HAS_IDLE = True try: import common.idle as idle # when we launch gajim from sources @@ -955,9 +956,7 @@ class ConnectionVcard: 'invisible': self.vcard_sha = new_sha sshow = helpers.get_xmpp_show(STATUS_LIST[self.connected]) - prio = unicode(gajim.config.get_per('accounts', self.name, - 'priority')) - p = common.xmpp.Presence(typ = None, priority = prio, + p = common.xmpp.Presence(typ = None, priority = self.priority, show = sshow, status = self.status) p = self.add_sha(p) self.connection.send(p) @@ -1004,6 +1003,11 @@ class ConnectionVcard: self.dispatch('METACONTACTS', meta_list) # We can now continue connection by requesting the roster self.connection.initRoster() + elif self.awaiting_answers[id][0] == PRIVACY_ARRIVED: + if iq_obj.getType() != 'error': + self.privacy_rules_supported = True + # Ask metacontacts before roster + self.get_metacontacts() del self.awaiting_answers[id] @@ -1083,10 +1087,8 @@ class ConnectionVcard: if STATUS_LIST[self.connected] == 'invisible': return sshow = helpers.get_xmpp_show(STATUS_LIST[self.connected]) - prio = unicode(gajim.config.get_per('accounts', self.name, - 'priority')) - p = common.xmpp.Presence(typ = None, priority = prio, show = sshow, - status = self.status) + p = common.xmpp.Presence(typ = None, priority = self.priority, + show = sshow, status = self.status) p = self.add_sha(p) self.connection.send(p) else: @@ -1115,11 +1117,11 @@ class ConnectionHandlers(ConnectionVcard, ConnectionBytestream, ConnectionDisco) def build_http_auth_answer(self, iq_obj, answer): if answer == 'yes': - iq = iq_obj.buildReply('result') + self.connection.send(iq_obj.buildReply('result')) elif answer == 'no': - iq = iq_obj.buildReply('error') - iq.setError('not-authorized', 401) - self.connection.send(iq) + err = common.xmpp.Error(iq_obj, + common.xmpp.protocol.ERR_NOT_AUTHORIZED) + self.connection.send(err) def _HttpAuthCB(self, con, iq_obj): gajim.log.debug('HttpAuthCB') @@ -1311,6 +1313,7 @@ class ConnectionHandlers(ConnectionVcard, ConnectionBytestream, ConnectionDisco) def _messageCB(self, con, msg): '''Called when we receive a message''' msgtxt = msg.getBody() + msghtml = msg.getXHTML() mtype = msg.getType() subject = msg.getSubject() # if not there, it's None tim = msg.getTimestamp() @@ -1396,7 +1399,7 @@ class ConnectionHandlers(ConnectionVcard, ConnectionBytestream, ConnectionDisco) has_timestamp = False if msg.timestamp: has_timestamp = True - self.dispatch('GC_MSG', (frm, msgtxt, tim, has_timestamp)) + self.dispatch('GC_MSG', (frm, msgtxt, tim, has_timestamp, msghtml)) if self.name not in no_log_for and not int(float(time.mktime(tim))) <= \ self.last_history_line[jid] and msgtxt: gajim.logger.write('gc_msg', frm, msgtxt, tim = tim) @@ -1408,7 +1411,7 @@ class ConnectionHandlers(ConnectionVcard, ConnectionBytestream, ConnectionDisco) msg_id = gajim.logger.write('chat_msg_recv', frm, msgtxt, tim = tim, subject = subject) self.dispatch('MSG', (frm, msgtxt, tim, encrypted, mtype, subject, - chatstate, msg_id, composing_jep, user_nick)) + chatstate, msg_id, composing_jep, user_nick, msghtml)) else: # it's single message if self.name not in no_log_for and jid not in no_log_for and msgtxt: gajim.logger.write('single_msg_recv', frm, msgtxt, tim = tim, @@ -1422,7 +1425,7 @@ class ConnectionHandlers(ConnectionVcard, ConnectionBytestream, ConnectionDisco) self.dispatch('GC_INVITATION',(frm, jid_from, reason, password)) else: self.dispatch('MSG', (frm, msgtxt, tim, encrypted, 'normal', - subject, chatstate, msg_id, composing_jep, user_nick)) + subject, chatstate, msg_id, composing_jep, user_nick, msghtml)) # END messageCB def _presenceCB(self, con, prs): @@ -1439,8 +1442,8 @@ class ConnectionHandlers(ConnectionVcard, ConnectionBytestream, ConnectionDisco) # one who = str(prs.getFrom()) jid_stripped, resource = gajim.get_room_and_nick_from_fjid(who) - self.dispatch('GC_MSG', (jid_stripped, _('Nickname not allowed: %s') % \ - resource, None, False)) + self.dispatch('GC_MSG', (jid_stripped, + _('Nickname not allowed: %s') % resource, None, False, None)) return jid_stripped, resource = gajim.get_room_and_nick_from_fjid(who) timestamp = None @@ -1796,12 +1799,11 @@ class ConnectionHandlers(ConnectionVcard, ConnectionBytestream, ConnectionDisco) if show == 'invisible': self.send_invisible_presence(msg, signed, True) return - prio = unicode(gajim.config.get_per('accounts', self.name, - 'priority')) + priority = gajim.get_priority(self.name, sshow) vcard = self.get_cached_vcard(jid) if vcard and vcard.has_key('PHOTO') and vcard['PHOTO'].has_key('SHA'): self.vcard_sha = vcard['PHOTO']['SHA'] - p = common.xmpp.Presence(typ = None, priority = prio, show = sshow) + p = common.xmpp.Presence(typ = None, priority = priority, show = sshow) p = self.add_sha(p) if msg: p.setStatus(msg) @@ -1810,6 +1812,7 @@ class ConnectionHandlers(ConnectionVcard, ConnectionBytestream, ConnectionDisco) if self.connection: self.connection.send(p) + self.priority = priority self.dispatch('STATUS', show) # ask our VCard self.request_vcard(None) diff --git a/src/common/contacts.py b/src/common/contacts.py index e6d095641..7757cfb1f 100644 --- a/src/common/contacts.py +++ b/src/common/contacts.py @@ -7,7 +7,7 @@ ## Vincent Hanquez ## Copyright (C) 2005 Yann Le Boulanger ## Vincent Hanquez -## Nikos Kouremenos +## Nikos Kouremenos ## Dimitur Kirov ## Travis Shirk ## Norman Rasmussen diff --git a/src/common/dbus_support.py b/src/common/dbus_support.py new file mode 100644 index 000000000..f4b997587 --- /dev/null +++ b/src/common/dbus_support.py @@ -0,0 +1,108 @@ +## dbus_support.py +## +## Copyright (C) 2005 Yann Le Boulanger +## Copyright (C) 2005 Nikos Kouremenos +## Copyright (C) 2005 Dimitur Kirov +## Copyright (C) 2005 Andrew Sayman +## +## This program is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published +## by the Free Software Foundation; version 2 only. +## +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. +## + +import os +import sys + +from common import gajim +from common import exceptions + +_GAJIM_ERROR_IFACE = 'org.gajim.dbus.Error' + +try: + import dbus + import dbus.service + import dbus.glib + supported = True # does use have D-Bus bindings? +except ImportError: + supported = False + if not os.name == 'nt': # only say that to non Windows users + print _('D-Bus python bindings are missing in this computer') + print _('D-Bus capabilities of Gajim cannot be used') + +class SessionBus: + '''A Singleton for the D-Bus SessionBus''' + def __init__(self): + self.session_bus = None + + def SessionBus(self): + if not supported: + raise exceptions.DbusNotSupported + + if not self.present(): + raise exceptions.SessionBusNotPresent + return self.session_bus + + def bus(self): + return self.SessionBus() + + def present(self): + if not supported: + return False + if self.session_bus is None: + try: + self.session_bus = dbus.SessionBus() + except dbus.dbus_bindings.DBusException: + self.session_bus = None + return False + if self.session_bus is None: + return False + return True + +session_bus = SessionBus() + +def get_interface(interface, path): + '''Returns an interface on the current SessionBus. If the interface isn't + running, it tries to start it first.''' + if not supported: + return None + if session_bus.present(): + bus = session_bus.SessionBus() + else: + return None + try: + obj = bus.get_object('org.freedesktop.DBus', '/org/freedesktop/DBus') + dbus_iface = dbus.Interface(obj, 'org.freedesktop.DBus') + running_services = dbus_iface.ListNames() + started = True + if interface not in running_services: + # try to start the service + if dbus_iface.StartServiceByName(interface, dbus.UInt32(0)) == 1: + started = True + else: + started = False + if not started: + return None + obj = bus.get_object(interface, path) + return dbus.Interface(obj, interface) + except Exception, e: + gajim.log.debug(str(e)) + return None + + +def get_notifications_interface(): + '''Returns the notifications interface.''' + return get_interface('org.freedesktop.Notifications', + '/org/freedesktop/Notifications') + +if supported: + class MissingArgument(dbus.DBusException): + _dbus_error_name = _GAJIM_ERROR_IFACE + '.MissingArgument' + + class InvalidArgument(dbus.DBusException): + '''Raised when one of the provided arguments is invalid.''' + _dbus_error_name = _GAJIM_ERROR_IFACE + '.InvalidArgument' diff --git a/src/common/events.py b/src/common/events.py index 4a7ba9e87..542c355e5 100644 --- a/src/common/events.py +++ b/src/common/events.py @@ -5,7 +5,7 @@ ## ## Copyright (C) 2006 Yann Le Boulanger ## Vincent Hanquez -## Nikos Kouremenos +## Nikos Kouremenos ## Dimitur Kirov ## Travis Shirk ## Norman Rasmussen diff --git a/src/common/exceptions.py b/src/common/exceptions.py index 0b1bc8c4a..4731829f5 100644 --- a/src/common/exceptions.py +++ b/src/common/exceptions.py @@ -2,16 +2,10 @@ ## ## Contributors for this file: ## - Yann Le Boulanger -## - Nikos Kouremenos +## - ## -## Copyright (C) 2003-2004 Yann Le Boulanger -## Vincent Hanquez -## Copyright (C) 2005 Yann Le Boulanger -## Vincent Hanquez -## Nikos Kouremenos -## Dimitur Kirov -## Travis Shirk -## Norman Rasmussen +## Copyright (C) 2005-2006 Yann Le Boulanger +## Nikos Kouremenos ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published diff --git a/src/common/gajim.py b/src/common/gajim.py index ce9f0119d..03c04ac45 100644 --- a/src/common/gajim.py +++ b/src/common/gajim.py @@ -28,7 +28,7 @@ from events import Events interface = None # The actual interface (the gtk one for the moment) config = config.Config() version = config.get('version') -connections = {} +connections = {} # 'account name': 'account (connection.Connection) instance' verbose = False h = logging.StreamHandler() @@ -122,6 +122,9 @@ SHOW_LIST = ['offline', 'connecting', 'online', 'chat', 'away', 'xa', 'dnd', # zeroconf account name ZEROCONF_ACC_NAME = 'Local' +priority_dict = {} +for status in ('online', 'chat', 'away', 'xa', 'dnd', 'invisible'): + priority_dict[status] = config.get('autopriority' + status) def get_nick_from_jid(jid): pos = jid.find('@') @@ -210,11 +213,36 @@ def get_number_of_connected_accounts(accounts_list = None): accounts = connections.keys() else: accounts = accounts_list - for acct in accounts: - if connections[acct].connected > 1: + for account in accounts: + if account_is_connected(account): connected_accounts = connected_accounts + 1 return connected_accounts +def account_is_connected(account): + if account not in connections: + return False + if connections[account].connected > 1: # 0 is offline, 1 is connecting + return True + else: + return False + +def account_is_disconnected(account): + return not account_is_connected(account) + +def get_number_of_securely_connected_accounts(): + '''returns the number of the accounts that are SSL/TLS connected''' + num_of_secured = 0 + for account in connections: + if account_is_securely_connected(account): + num_of_secured += 1 + return num_of_secured + +def account_is_securely_connected(account): + if account in con_types and con_types[account] in ('tls', 'ssl'): + return True + else: + return False + def get_transport_name_from_jid(jid, use_config_setting = True): '''returns 'aim', 'gg', 'irc' etc if JID is not from transport returns None''' @@ -302,3 +330,12 @@ def get_name_from_jid(account, jid): else: actor = jid return actor + +def get_priority(account, show): + '''return the priority an account must have''' + if not show: + show = 'online' + if show in priority_dict and config.get_per('accounts', account, + 'adjust_priority_with_status'): + return priority_dict[show] + return config.get_per('accounts', account, 'priority') diff --git a/src/common/helpers.py b/src/common/helpers.py index 1f3a7206b..96a1b790e 100644 --- a/src/common/helpers.py +++ b/src/common/helpers.py @@ -377,9 +377,14 @@ def is_in_path(name_of_command, return_abs_path = False): return is_in_dir def exec_command(command): - '''command is a string that contain arguments''' -# os.system(command) - subprocess.Popen(command.split()) + subprocess.Popen(command, shell = True) + +def build_command(executable, parameter): + # we add to the parameter (can hold path with spaces) + # "" so we have good parsing from shell + parameter = parameter.replace('"', '\\"') # but first escape " + command = '%s "%s"' % (executable, parameter) + return command def launch_browser_mailer(kind, uri): #kind = 'url' or 'mail' @@ -404,7 +409,8 @@ def launch_browser_mailer(kind, uri): command = gajim.config.get('custommailapp') if command == '': # if no app is configured return - command = command + ' ' + uri + + command = build_command(command, uri) try: exec_command(command) except: @@ -425,7 +431,7 @@ def launch_file_manager(path_to_open): command = gajim.config.get('custom_file_manager') if command == '': # if no app is configured return - command = command + ' ' + path_to_open + command = build_command(command, path_to_open) try: exec_command(command) except: @@ -453,7 +459,7 @@ def play_sound_file(path_to_soundfile): if gajim.config.get('soundplayer') == '': return player = gajim.config.get('soundplayer') - command = player + ' ' + path_to_soundfile + command = build_command(player, path_to_soundfile) exec_command(command) def get_file_path_from_dnd_dropped_uri(uri): @@ -614,7 +620,6 @@ def get_documents_path(): path = os.path.expanduser('~') return path -# moved from connection.py def get_full_jid_from_iq(iq_obj): '''return the full jid (with resource) from an iq as unicode''' return parse_jid(str(iq_obj.getFrom())) @@ -741,23 +746,21 @@ def sanitize_filename(filename): return filename -def allow_showing_notification(account, type = None, advanced_notif_num = None, -first = True): +def allow_showing_notification(account, type = None, +advanced_notif_num = None, is_first_message = True): '''is it allowed to show nofication? check OUR status and if we allow notifications for that status - type is the option that need to be True ex: notify_on_signing - first: set it to false when it's not the first message''' - if advanced_notif_num != None: + type is the option that need to be True e.g.: notify_on_signing + is_first_message: set it to false when it's not the first message''' + if advanced_notif_num is not None: popup = gajim.config.get_per('notifications', str(advanced_notif_num), 'popup') if popup == 'yes': return True if popup == 'no': return False - if type and (not gajim.config.get(type) or not first): + if type and (not gajim.config.get(type) or not is_first_message): return False - if type and gajim.config.get(type) and first: - return True if gajim.config.get('autopopupaway'): # always show notification return True if gajim.connections[account].connected in (2, 3): # we're online or chat @@ -781,7 +784,7 @@ def allow_popup_window(account, advanced_notif_num = None): return False def allow_sound_notification(sound_event, advanced_notif_num = None): - if advanced_notif_num != None: + if advanced_notif_num is not None: sound = gajim.config.get_per('notifications', str(advanced_notif_num), 'sound') if sound == 'yes': diff --git a/src/common/i18n.py b/src/common/i18n.py index ae23f0e2f..8eae35621 100644 --- a/src/common/i18n.py +++ b/src/common/i18n.py @@ -8,7 +8,7 @@ ## Vincent Hanquez ## Copyright (C) 2005 Yann Le Boulanger ## Vincent Hanquez -## Nikos Kouremenos +## Nikos Kouremenos ## Dimitur Kirov ## Travis Shirk ## Norman Rasmussen diff --git a/src/common/logger.py b/src/common/logger.py index 11f784406..dfc06941d 100644 --- a/src/common/logger.py +++ b/src/common/logger.py @@ -8,7 +8,7 @@ ## Vincent Hanquez ## Copyright (C) 2005 Yann Le Boulanger ## Vincent Hanquez -## Nikos Kouremenos +## Nikos Kouremenos ## Dimitur Kirov ## Travis Shirk ## Norman Rasmussen diff --git a/src/common/optparser.py b/src/common/optparser.py index 5459905b7..69e736c0a 100644 --- a/src/common/optparser.py +++ b/src/common/optparser.py @@ -7,7 +7,7 @@ ## Vincent Hanquez ## Copyright (C) 2005 Yann Le Boulanger ## Vincent Hanquez -## Nikos Kouremenos +## Nikos Kouremenos ## Dimitur Kirov ## Travis Shirk ## Norman Rasmussen diff --git a/src/common/sleepy.py b/src/common/sleepy.py index fa6315c4d..5d31e90b3 100644 --- a/src/common/sleepy.py +++ b/src/common/sleepy.py @@ -8,7 +8,7 @@ ## Vincent Hanquez ## Copyright (C) 2005 Yann Le Boulanger ## Vincent Hanquez -## Nikos Kouremenos +## Nikos Kouremenos ## Dimitur Kirov ## Travis Shirk ## Norman Rasmussen diff --git a/src/common/socks5.py b/src/common/socks5.py index 26d8e5672..77158b3e3 100644 --- a/src/common/socks5.py +++ b/src/common/socks5.py @@ -3,14 +3,14 @@ ## ## Contributors for this file: ## - Yann Le Boulanger -## - Nikos Kouremenos +## - Nikos Kouremenos ## - Dimitur Kirov ## ## Copyright (C) 2003-2004 Yann Le Boulanger ## Vincent Hanquez ## Copyright (C) 2005 Yann Le Boulanger ## Vincent Hanquez -## Nikos Kouremenos +## Nikos Kouremenos ## Dimitur Kirov ## Travis Shirk ## Norman Rasmussen diff --git a/src/common/xmpp/protocol.py b/src/common/xmpp/protocol.py index b9d2ad9ff..daf309773 100644 --- a/src/common/xmpp/protocol.py +++ b/src/common/xmpp/protocol.py @@ -357,10 +357,10 @@ class Protocol(Node): if tag.getName()=='text': return tag.getData() return self.getError() def getErrorCode(self): - """ Return the error code. Obsolette. """ + """ Return the error code. Obsolete. """ return self.getTagAttr('error','code') def setError(self,error,code=None): - """ Set the error code. Obsolette. Use error-conditions instead. """ + """ Set the error code. Obsolete. Use error-conditions instead. """ if code: if str(code) in _errorcodes.keys(): error=ErrorNode(_errorcodes[str(code)],text=error) else: error=ErrorNode(ERR_UNDEFINED_CONDITION,code=code,typ='cancel',text=error) @@ -397,10 +397,18 @@ class Message(Protocol): def getBody(self): """ Returns text of the message. """ return self.getTagData('body') - def getXHTML(self): - """ Returns serialized xhtml-im body text of the message. """ + def getXHTML(self, xmllang=None): + """ Returns serialized xhtml-im element text of the message. + + TODO: Returning a DOM could make rendering faster.""" xhtml = self.getTag('html') - return str(xhtml.getTag('body')) + if xhtml: + if xmllang: + body = xhtml.getTag('body', attrs={'xml:lang':xmllang}) + else: + body = xhtml.getTag('body') + return str(body) + return None def getSubject(self): """ Returns subject of the message. """ return self.getTagData('subject') @@ -410,11 +418,22 @@ class Message(Protocol): def setBody(self,val): """ Sets the text of the message. """ self.setTagData('body',val) - def setXHTML(self,val): + + def setXHTML(self,val,xmllang=None): """ Sets the xhtml text of the message (JEP-0071). The parameter is the "inner html" to the body.""" - dom = NodeBuilder(val) - self.setTag('html',namespace=NS_XHTML_IM).setTag('body',namespace=NS_XHTML).addChild(node=dom.getDom()) + try: + if xmllang: + dom = NodeBuilder('' + val + '').getDom() + else: + dom = NodeBuilder(''+val+'',0).getDom() + if self.getTag('html'): + self.getTag('html').addChild(node=dom) + else: + self.setTag('html',namespace=NS_XHTML_IM).addChild(node=dom) + except Exception, e: + print "Error", e + pass #FIXME: log. we could not set xhtml (parse error, whatever) def setSubject(self,val): """ Sets the subject of the message. """ self.setTagData('subject',val) diff --git a/src/common/zeroconf/connection_zeroconf.py b/src/common/zeroconf/connection_zeroconf.py index 761a98b0b..fde3e3068 100644 --- a/src/common/zeroconf/connection_zeroconf.py +++ b/src/common/zeroconf/connection_zeroconf.py @@ -62,6 +62,7 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): self.privacy_rules_supported = False self.status = '' self.old_show = '' + self.priority = 0 self.call_resolve_timeout = False diff --git a/src/config.py b/src/config.py index d787e48f8..0db7eccfb 100644 --- a/src/config.py +++ b/src/config.py @@ -462,9 +462,14 @@ class PreferencesWindow: self.xml.get_widget('send_os_info_checkbutton').set_active(st) # set status msg from currently playing music track - st = gajim.config.get('set_status_msg_from_current_music_track') - self.xml.get_widget( - 'set_status_msg_from_current_music_track_checkbutton').set_active(st) + widget = self.xml.get_widget( + 'set_status_msg_from_current_music_track_checkbutton') + if os.name == 'nt': + widget.set_no_show_all(True) + widget.hide() + else: + st = gajim.config.get('set_status_msg_from_current_music_track') + widget.set_active(st) # Notify user of new gmail e-mail messages, # only show checkbox if user has a gtalk account @@ -1189,6 +1194,9 @@ class AccountModificationWindow: self.xml.get_widget('resource_entry').set_text(gajim.config.get_per( 'accounts', self.account, 'resource')) + self.xml.get_widget('adjust_priority_with_status_checkbutton').set_active( + gajim.config.get_per('accounts', self.account, + 'adjust_priority_with_status')) self.xml.get_widget('priority_spinbutton').set_value(gajim.config.\ get_per('accounts', self.account, 'priority')) @@ -1253,6 +1261,10 @@ class AccountModificationWindow: return True return False + def on_adjust_priority_with_status_checkbutton_toggled(self, widget): + self.xml.get_widget('priority_spinbutton').set_sensitive( + not widget.get_active()) + def on_save_button_clicked(self, widget): '''When save button is clicked: Save information in config file''' config = {} @@ -1858,6 +1870,14 @@ class AccountsWindow: else: gajim.interface.instances[account]['remove_account'] = \ RemoveAccountWindow(account) + if win_opened: + self.dialog = dialogs.ConfirmationDialog( + _('You have opened chat in account %s') % account, + _('All chat and groupchat windows will be closed. Do you want to ' + 'continue?'), + on_response_ok = (remove, account)) + else: + remove(widget, account) def on_modify_button_clicked(self, widget): '''When modify button is clicked: @@ -2442,7 +2462,7 @@ class RemoveAccountWindow: if not res: return # Close all opened windows - gajim.interface.roster.close_all(self.account) + gajim.interface.roster.close_all(self.account, force = True) gajim.connections[self.account].disconnect(on_purpose = True) del gajim.connections[self.account] gajim.config.del_per('accounts', self.account) @@ -2485,7 +2505,7 @@ class ManageBookmarksWindow: if gajim.connections[account].connected <= 1: continue iter = self.treestore.append(None, [None, account,None, - None, None, None, None]) + None, None, None, None]) for bookmark in gajim.connections[account].bookmarks: if bookmark['name'] == '': diff --git a/src/conversation_textview.py b/src/conversation_textview.py index daf1fc7c3..18e907a6f 100644 --- a/src/conversation_textview.py +++ b/src/conversation_textview.py @@ -8,7 +8,7 @@ ## Vincent Hanquez ## Copyright (C) 2005 Yann Le Boulanger ## Vincent Hanquez -## Nikos Kouremenos +## Nikos Kouremenos ## Dimitur Kirov ## Travis Shirk ## Norman Rasmussen @@ -39,12 +39,16 @@ from common import helpers from calendar import timegm from common.fuzzyclock import FuzzyClock +from htmltextview import HtmlTextView + + class ConversationTextview: '''Class for the conversation textview (where user reads already said messages) for chat/groupchat windows''' def __init__(self, account): # no need to inherit TextView, use it as property is safer - self.tv = gtk.TextView() + self.tv = HtmlTextView() + self.tv.html_hyperlink_handler = self.html_hyperlink_handler # set properties self.tv.set_border_width(1) @@ -98,7 +102,7 @@ class ConversationTextview: tag.set_property('weight', pango.WEIGHT_BOLD) tag = buffer.create_tag('time_sometimes') - tag.set_property('foreground', 'grey') + tag.set_property('foreground', 'darkgrey') tag.set_property('scale', pango.SCALE_SMALL) tag.set_property('justification', gtk.JUSTIFY_CENTER) @@ -141,6 +145,8 @@ class ConversationTextview: path_to_file = os.path.join(gajim.DATA_DIR, 'pixmaps', 'muc_separator.png') self.focus_out_line_pixbuf = gtk.gdk.pixbuf_new_from_file(path_to_file) + # use it for hr too + self.tv.focus_out_line_pixbuf = self.focus_out_line_pixbuf def del_handlers(self): for i in self.handlers.keys(): @@ -504,6 +510,15 @@ class ConversationTextview: # we launch the correct application helpers.launch_browser_mailer(kind, word) + def html_hyperlink_handler(self, texttag, widget, event, iter, kind, href): + if event.type == gtk.gdk.BUTTON_PRESS: + if event.button == 3: # right click + self.make_link_menu(event, kind, href) + else: + # we launch the correct application + helpers.launch_browser_mailer(kind, href) + + def detect_and_print_special_text(self, otext, other_tags): '''detects special text (emots & links & formatting) prints normal text before any special text it founts, @@ -637,11 +652,11 @@ class ConversationTextview: def print_empty_line(self): buffer = self.tv.get_buffer() end_iter = buffer.get_end_iter() - buffer.insert(end_iter, '\n') + buffer.insert_with_tags_by_name(end_iter, '\n', 'eol') def print_conversation_line(self, text, jid, kind, name, tim, - other_tags_for_name = [], other_tags_for_time = [], - other_tags_for_text = [], subject = None, old_kind = None): + other_tags_for_name = [], other_tags_for_time = [], other_tags_for_text = [], + subject = None, old_kind = None, xhtml = None): '''prints 'chat' type messages''' buffer = self.tv.get_buffer() buffer.begin_user_action() @@ -651,7 +666,7 @@ class ConversationTextview: at_the_end = True if buffer.get_char_count() > 0: - buffer.insert(end_iter, '\n') + buffer.insert_with_tags_by_name(end_iter, '\n', 'eol') if kind == 'incoming_queue': kind = 'incoming' if old_kind == 'incoming_queue': @@ -726,7 +741,7 @@ class ConversationTextview: else: self.print_name(name, kind, other_tags_for_name) self.print_subject(subject) - self.print_real_text(text, text_tags, name) + self.print_real_text(text, text_tags, name, xhtml) # scroll to the end of the textview if at_the_end or kind == 'outgoing': @@ -763,8 +778,18 @@ class ConversationTextview: buffer.insert(end_iter, subject) self.print_empty_line() - def print_real_text(self, text, text_tags = [], name = None): + def print_real_text(self, text, text_tags = [], name = None, xhtml = None): '''this adds normal and special text. call this to add text''' + if xhtml: + try: + if name and (text.startswith('/me ') or text.startswith('/me\n')): + xhtml = xhtml.replace('/me', '%s'% (name,), 1) + self.tv.display_html(xhtml.encode('utf-8')) + return + except Exception, e: + gajim.log.debug(str("Error processing xhtml")+str(e)) + gajim.log.debug(str("with |"+xhtml+"|")) + buffer = self.tv.get_buffer() # /me is replaced by name if name is given if name and (text.startswith('/me ') or text.startswith('/me\n')): diff --git a/src/dialogs.py b/src/dialogs.py index d6183ea8a..b5f919454 100644 --- a/src/dialogs.py +++ b/src/dialogs.py @@ -3,7 +3,7 @@ ## ## Copyright (C) 2003-2006 Yann Le Boulanger ## Copyright (C) 2003-2004 Vincent Hanquez -## Copyright (C) 2005-2006 Nikos Kouremenos +## Copyright (C) 2005-2006 Nikos Kouremenos ## Copyright (C) 2005 Dimitur Kirov ## Copyright (C) 2005-2006 Travis Shirk ## Copyright (C) 2005 Norman Rasmussen @@ -405,12 +405,12 @@ class ChangeStatusMessageDialog: class AddNewContactWindow: '''Class for AddNewContactWindow''' - uid_labels = {'jabber': _('Jabber ID'), - 'aim': _('AIM Address'), - 'gadu-gadu': _('GG Number'), - 'icq': _('ICQ Number'), - 'msn': _('MSN Address'), - 'yahoo': _('Yahoo! Address')} + uid_labels = {'jabber': _('Jabber ID:'), + 'aim': _('AIM Address:'), + 'gadu-gadu': _('GG Number:'), + 'icq': _('ICQ Number:'), + 'msn': _('MSN Address:'), + 'yahoo': _('Yahoo! Address:')} def __init__(self, account = None, jid = None, user_nick = None, group = None): self.account = account @@ -441,7 +441,8 @@ class AddNewContactWindow: 'uid_label', 'uid_entry', 'protocol_combobox', 'protocol_jid_combobox', 'protocol_hbox', 'nickname_entry', 'message_scrolledwindow', 'register_hbox', 'subscription_table', 'add_button', - 'message_textview', 'connected_label', 'group_comboboxentry'): + 'message_textview', 'connected_label', 'group_comboboxentry', + 'auto_authorize_checkbutton'): self.__dict__[w] = self.xml.get_widget(w) if account and len(gajim.connections) >= 2: prompt_text =\ @@ -486,8 +487,10 @@ _('Please fill in the data of the contact you want to add in account %s') %accou liststore.append([type_, type_]) self.protocol_combobox.set_model(liststore) self.protocol_combobox.set_active(0) - self.protocol_jid_combobox.set_sensitive(False) + self.protocol_jid_combobox.set_no_show_all(True) + self.protocol_jid_combobox.hide() self.subscription_table.set_no_show_all(True) + self.auto_authorize_checkbutton.show() self.message_scrolledwindow.set_no_show_all(True) self.register_hbox.set_no_show_all(True) self.register_hbox.hide() @@ -497,7 +500,9 @@ _('Please fill in the data of the contact you want to add in account %s') %accou self.protocol_jid_combobox.set_model(liststore) self.xml.signal_autoconnect(self) if jid: - type_ = gajim.get_transport_name_from_jid(jid) or 'jabber' + type_ = gajim.get_transport_name_from_jid(jid) + if not type_: + type_ = 'jabber' if type_ == 'jabber': self.uid_entry.set_text(jid) else: @@ -515,13 +520,13 @@ _('Please fill in the data of the contact you want to add in account %s') %accou i += 1 # set protocol_jid_combobox - self.protocol_combobox.set_active(0) + self.protocol_jid_combobox.set_active(0) model = self.protocol_jid_combobox.get_model() iter = model.get_iter_first() i = 0 while iter: if model[iter][0] == transport: - self.protocol_combobox.set_active(i) + self.protocol_jid_combobox.set_active(i) break iter = model.iter_next(iter) i += 1 @@ -626,7 +631,7 @@ _('Please fill in the data of the contact you want to add in account %s') %accou else: message= '' group = self.group_comboboxentry.child.get_text().decode('utf-8') - auto_auth = self.xml.get_widget('auto_authorize_checkbutton').get_active() + auto_auth = self.auto_authorize_checkbutton.get_active() gajim.interface.roster.req_sub(self, jid, message, self.account, group = group, pseudo = nickname, auto_auth = auto_auth) self.window.destroy() @@ -641,13 +646,15 @@ _('Please fill in the data of the contact you want to add in account %s') %accou for jid_ in self.agents[type_]: model.append([jid_]) self.protocol_jid_combobox.set_active(0) - self.protocol_jid_combobox.set_sensitive(True) + if len(self.agents[type_]) > 1: + self.protocol_jid_combobox.set_no_show_all(False) + self.protocol_jid_combobox.show_all() else: - self.protocol_jid_combobox.set_sensitive(False) + self.protocol_jid_combobox.hide() if type_ in self.uid_labels: self.uid_label.set_text(self.uid_labels[type_]) else: - self.uid_label.set_text(_('User ID')) + self.uid_label.set_text(_('User ID:')) if type_ == 'jabber': self.message_scrolledwindow.show() else: @@ -655,6 +662,7 @@ _('Please fill in the data of the contact you want to add in account %s') %accou if type_ in self.available_types: self.register_hbox.set_no_show_all(False) self.register_hbox.show_all() + self.auto_authorize_checkbutton.hide() self.connected_label.hide() self.subscription_table.hide() self.add_button.set_sensitive(False) @@ -668,9 +676,11 @@ _('Please fill in the data of the contact you want to add in account %s') %accou self.subscription_table.hide() self.connected_label.show() self.add_button.set_sensitive(False) + self.auto_authorize_checkbutton.hide() return self.subscription_table.set_no_show_all(False) self.subscription_table.show_all() + self.auto_authorize_checkbutton.show() self.connected_label.hide() self.add_button.set_sensitive(True) @@ -1019,6 +1029,12 @@ class SubscriptionRequestWindow: xml.signal_autoconnect(self) self.window.show_all() + def prepare_popup_menu(self): + xml = gtkgui_helpers.get_glade('subscription_request_popup_menu.glade') + menu = xml.get_widget('subscription_request_popup_menu') + xml.signal_autoconnect(self) + return menu + def on_close_button_clicked(self, widget): self.window.destroy() @@ -1029,7 +1045,7 @@ class SubscriptionRequestWindow: if self.jid not in gajim.contacts.get_jid_list(self.account): AddNewContactWindow(self.account, self.jid, self.user_nick) - def on_contact_info_button_clicked(self, widget): + def on_contact_info_activate(self, widget): '''ask vcard''' if gajim.interface.instances[self.account]['infos'].has_key(self.jid): gajim.interface.instances[self.account]['infos'][self.jid].window.present() @@ -1043,11 +1059,22 @@ class SubscriptionRequestWindow: gajim.interface.instances[self.account]['infos'][self.jid].xml.\ get_widget('information_notebook').remove_page(0) + def on_start_chat_activate(self, widget): + '''open chat''' + gajim.interface.roster.new_chat_from_jid(self.account, self.jid) + def on_deny_button_clicked(self, widget): '''refuse the request''' gajim.connections[self.account].refuse_authorization(self.jid) self.window.destroy() + def on_actions_button_clicked(self, widget): + '''popup action menu''' + menu = self.prepare_popup_menu() + menu.show_all() + gtkgui_helpers.popup_emoticons_under_button(menu, widget, self.window.window) + + class JoinGroupchatWindow: def __init__(self, account, server = '', room = '', nick = '', automatic = False): @@ -1306,7 +1333,8 @@ class PopupNotificationWindow: # default image if not path_to_image: path_to_image = os.path.abspath( - os.path.join(gajim.DATA_DIR, 'pixmaps', 'events', 'chat_msg_recv.png')) # img to display + os.path.join(gajim.DATA_DIR, 'pixmaps', 'events', + 'chat_msg_recv.png')) # img to display if event_type == _('Contact Signed In'): bg_color = 'limegreen' @@ -1326,7 +1354,7 @@ class PopupNotificationWindow: bg_color = 'tan1' elif event_type == _('Contact Changed Status'): bg_color = 'thistle2' - else: # Unknown event ! Shouldn't happen but deal with it + else: # Unknown event! Shouldn't happen but deal with it bg_color = 'white' popup_bg_color = gtk.gdk.color_parse(bg_color) close_button.modify_bg(gtk.STATE_NORMAL, popup_bg_color) @@ -1732,7 +1760,7 @@ class PrivacyListWindow: '''Window that is used for creating NEW or EDITING already there privacy lists''' def __init__(self, account, privacy_list_name, action): - '''action is 'edit' or 'new' depending on if we create a new priv list + '''action is 'EDIT' or 'NEW' depending on if we create a new priv list or edit an already existing one''' self.account = account self.privacy_list_name = privacy_list_name @@ -1784,7 +1812,7 @@ class PrivacyListWindow: self.privacy_list_active_checkbutton.set_sensitive(False) self.privacy_list_default_checkbutton.set_sensitive(False) - if action == 'edit': + if action == 'EDIT': self.refresh_rules() count = 0 @@ -1803,11 +1831,9 @@ class PrivacyListWindow: self.xml.signal_autoconnect(self) def on_privacy_list_edit_window_destroy(self, widget): - '''close window''' - if gajim.interface.instances[self.account].has_key('privacy_list_%s' % \ - self.privacy_list_name): - del gajim.interface.instances[self.account]['privacy_list_%s' % \ - self.privacy_list_name] + key_name = 'privacy_list_%s' % self.privacy_list_name + if key_name in gajim.interface.instances[self.account]: + del gajim.interface.instances[self.account][key_name] def check_active_default(self, a_d_dict): if a_d_dict['active'] == self.privacy_list_name: @@ -1824,11 +1850,10 @@ class PrivacyListWindow: self.global_rules = {} for rule in rules: if rule.has_key('type'): - text_item = 'Order: %s, action: %s, type: %s, value: %s' % \ - (rule['order'], rule['action'], rule['type'], - rule['value']) + text_item = _('Order: %s, action: %s, type: %s, value: %s') % \ + (rule['order'], rule['action'], rule['type'], rule['value']) else: - text_item = 'Order: %s, action: %s' % (rule['order'], + text_item = _('Order: %s, action: %s') % (rule['order'], rule['action']) self.global_rules[text_item] = rule self.list_of_rules_combobox.append_text(text_item) @@ -1856,8 +1881,7 @@ class PrivacyListWindow: def on_delete_rule_button_clicked(self, widget): tags = [] for rule in self.global_rules: - if rule != \ - self.list_of_rules_combobox.get_active_text().decode('utf-8'): + if rule != self.list_of_rules_combobox.get_active_text(): tags.append(self.global_rules[rule]) gajim.connections[self.account].set_privacy_list( self.privacy_list_name, tags) @@ -1866,7 +1890,7 @@ class PrivacyListWindow: def on_open_rule_button_clicked(self, widget): self.add_edit_rule_label.set_label( - _('Edit a rule')) + _('Edit a rule')) active_num = self.list_of_rules_combobox.get_active() if active_num == -1: self.active_rule = '' @@ -1917,20 +1941,22 @@ class PrivacyListWindow: self.edit_send_messages_checkbutton.set_active(True) if rule_info['action'] == 'allow': - self.edit_allow_radiobutton.set_active(True) + self.edit_allow_radiobutton.set_active(True) else: - self.edit_deny_radiobutton.set_active(True) + self.edit_deny_radiobutton.set_active(True) self.add_edit_vbox.show() def on_privacy_list_active_checkbutton_toggled(self, widget): if widget.get_active(): - gajim.connections[self.account].set_active_list(self.privacy_list_name) + gajim.connections[self.account].set_active_list( + self.privacy_list_name) else: gajim.connections[self.account].set_active_list(None) def on_privacy_list_default_checkbutton_toggled(self, widget): if widget.get_active(): - gajim.connections[self.account].set_default_list(self.privacy_list_name) + gajim.connections[self.account].set_default_list( + self.privacy_list_name) else: gajim.connections[self.account].set_default_list(None) @@ -1956,12 +1982,10 @@ class PrivacyListWindow: def get_current_tags(self): if self.edit_type_jabberid_radiobutton.get_active(): edit_type = 'jid' - edit_value = \ - self.edit_type_jabberid_entry.get_text().decode('utf-8') + edit_value = self.edit_type_jabberid_entry.get_text() elif self.edit_type_group_radiobutton.get_active(): edit_type = 'group' - edit_value = \ - self.edit_type_group_combobox.get_active_text().decode('utf-8') + edit_value = self.edit_type_group_combobox.get_active_text() elif self.edit_type_subscription_radiobutton.get_active(): edit_type = 'subscription' subs = ['none', 'both', 'from', 'to'] @@ -2000,7 +2024,8 @@ class PrivacyListWindow: else: tags.append(current_tags) - gajim.connections[self.account].set_privacy_list(self.privacy_list_name, tags) + gajim.connections[self.account].set_privacy_list( + self.privacy_list_name, tags) self.privacy_list_received(tags) self.add_edit_vbox.hide() @@ -2030,19 +2055,18 @@ class PrivacyListsWindow: or edit an already there one''' def __init__(self, account): self.account = account - self.privacy_lists = [] - self.privacy_lists_save = [] self.xml = gtkgui_helpers.get_glade('privacy_lists_window.glade') self.window = self.xml.get_widget('privacy_lists_first_window') for widget_to_add in ['list_of_privacy_lists_combobox', - 'delete_privacy_list_button', 'open_privacy_list_button', - 'new_privacy_list_button', 'new_privacy_list_entry', 'buttons_hbox', - 'privacy_lists_refresh_button', 'close_privacy_lists_window_button']: - self.__dict__[widget_to_add] = self.xml.get_widget(widget_to_add) + 'delete_privacy_list_button', 'open_privacy_list_button', + 'new_privacy_list_button', 'new_privacy_list_entry', + 'privacy_lists_refresh_button', 'close_privacy_lists_window_button']: + self.__dict__[widget_to_add] = self.xml.get_widget( + widget_to_add) self.draw_privacy_lists_in_combobox() self.privacy_lists_refresh() @@ -2061,8 +2085,7 @@ class PrivacyListsWindow: self.xml.signal_autoconnect(self) def on_privacy_lists_first_window_destroy(self, widget): - '''close window''' - if gajim.interface.instances[self.account].has_key('privacy_lists'): + if 'privacy_lists' in gajim.interface.instances[self.account]: del gajim.interface.instances[self.account]['privacy_lists'] def draw_privacy_lists_in_combobox(self): @@ -2073,15 +2096,18 @@ class PrivacyListsWindow: self.list_of_privacy_lists_combobox.append_text(add_item) if len(self.privacy_lists) == 0: self.list_of_privacy_lists_combobox.set_sensitive(False) - self.buttons_hbox.set_sensitive(False) + self.open_privacy_list_button.set_sensitive(False) + self.delete_privacy_list_button.set_sensitive(False) elif len(self.privacy_lists) == 1: self.list_of_privacy_lists_combobox.set_active(0) self.list_of_privacy_lists_combobox.set_sensitive(False) - self.buttons_hbox.set_sensitive(True) + self.open_privacy_list_button.set_sensitive(True) + self.delete_privacy_list_button.set_sensitive(True) else: self.list_of_privacy_lists_combobox.set_sensitive(True) - self.buttons_hbox.set_sensitive(True) self.list_of_privacy_lists_combobox.set_active(0) + self.open_privacy_list_button.set_sensitive(True) + self.delete_privacy_list_button.set_sensitive(True) self.privacy_lists = [] def on_privacy_lists_refresh_button_clicked(self, widget): @@ -2108,14 +2134,13 @@ class PrivacyListsWindow: gajim.connections[self.account].get_privacy_lists() def on_new_privacy_list_button_clicked(self, widget): - name = self.new_privacy_list_entry.get_text().decode('utf-8') - if gajim.interface.instances[self.account].has_key( - 'privacy_list_%s' % name): - gajim.interface.instances[self.account]['privacy_list_%s' % name].\ - window.present() + name = self.new_privacy_list_entry.get_text() + key_name = 'privacy_list_%s' % name + if gajim.interface.instances[self.account].has_key(key_name): + gajim.interface.instances[self.account][key_name].window.present() else: - gajim.interface.instances[self.account]['privacy_list_%s' % name] = \ - PrivacyListWindow(self.account, name, 'new') + gajim.interface.instances[self.account][key_name] = \ + PrivacyListWindow(self.account, name, 'NEW') self.new_privacy_list_entry.set_text('') def on_privacy_lists_refresh_button_clicked(self, widget): @@ -2124,16 +2149,17 @@ class PrivacyListsWindow: def on_open_privacy_list_button_clicked(self, widget): name = self.privacy_lists_save[ self.list_of_privacy_lists_combobox.get_active()] + key_name = 'privacy_list_%s' % name if gajim.interface.instances[self.account].has_key( - 'privacy_list_%s' % name): - gajim.interface.instances[self.account]['privacy_list_%s' % name].\ - window.present() + key_name): + gajim.interface.instances[self.account][key_name].window.present() else: - gajim.interface.instances[self.account]['privacy_list_%s' % name] = \ - PrivacyListWindow(self.account, name, 'edit') + gajim.interface.instances[self.account][key_name] = \ + PrivacyListWindow(self.account, name, 'EDIT') class InvitationReceivedDialog: - def __init__(self, account, room_jid, contact_jid, password = None, comment = None): + def __init__(self, account, room_jid, contact_jid, password = None, + comment = None): self.room_jid = room_jid self.account = account diff --git a/src/disco.py b/src/disco.py index e0f928f91..ff1e12c63 100644 --- a/src/disco.py +++ b/src/disco.py @@ -1,19 +1,9 @@ # -*- coding: utf-8 -*- ## config.py ## -## Contributors for this file: -## - Yann Le Boulanger -## - Nikos Kouremenos -## - Stéphan Kochen -## -## Copyright (C) 2003-2004 Yann Le Boulanger -## Vincent Hanquez -## Copyright (C) 2005 Yann Le Boulanger -## Vincent Hanquez -## Nikos Kouremenos -## Dimitur Kirov -## Travis Shirk -## Norman Rasmussen +## Copyright (C) 2005-2006 Yann Le Boulanger +## Copyright (C) 2005-2006 Nikos Kouremenos +## Copyright (C) 2005-2006 Stéphan Kochen ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published @@ -390,12 +380,12 @@ class ServicesCache: if self._cbs.has_key(cbkey): del self._cbs[cbkey] -# object is needed so that property() works +# object is needed so that @property works class ServiceDiscoveryWindow(object): '''Class that represents the Services Discovery window.''' def __init__(self, account, jid = '', node = '', address_entry = False, parent = None): - self._account = account + self.account = account self.parent = parent if not jid: jid = gajim.config.get_per('accounts', account, 'hostname') @@ -473,30 +463,35 @@ _('Without a connection, you can not browse available services')) self.travel(jid, node) self.window.show_all() + @property def _get_account(self): - return self._account + return self.account + @property def _set_account(self, value): - self._account = value + self.account = value self.cache.account = value if self.browser: self.browser.account = value - account = property(_get_account, _set_account) def _initial_state(self): '''Set some initial state on the window. Separated in a method because it's handy to use within browser's cleanup method.''' self.progressbar.hide() - self.window.set_title(_('Service Discovery using account %s') % self.account) + title_text = _('Service Discovery using account %s') % self.account + self.window.set_title(title_text) self._set_window_banner_text(_('Service Discovery')) - # FIXME: use self.banner_icon.clear() when we switch to GTK 2.8 - self.banner_icon.set_from_file(None) - self.banner_icon.hide() # Just clearing it doesn't work + if gtk.gtk_version >= (2, 8, 0) and gtk.pygtk_version >= (2, 8, 0): + self.banner_icon.clear() + else: + self.banner_icon.set_from_file(None) + self.banner_icon.hide() # Just clearing it doesn't work def _set_window_banner_text(self, text, text_after = None): theme = gajim.config.get('roster_theme') bannerfont = gajim.config.get_per('themes', theme, 'bannerfont') - bannerfontattrs = gajim.config.get_per('themes', theme, 'bannerfontattrs') + bannerfontattrs = gajim.config.get_per('themes', theme, + 'bannerfontattrs') if bannerfont: font = pango.FontDescription(bannerfont) @@ -1239,10 +1234,11 @@ class ToplevelAgentBrowser(AgentBrowser): # We can register this agent registered_transports = [] jid_list = gajim.contacts.get_jid_list(self.account) - for j in jid_list: - contact = gajim.contacts.get_first_contact_from_jid(self.account, j) + for jid in jid_list: + contact = gajim.contacts.get_first_contact_from_jid( + self.account, jid) if _('Transports') in contact.groups: - registered_transports.append(j) + registered_transports.append(jid) if jid in registered_transports: self.register_button.set_label(_('_Edit')) else: @@ -1528,7 +1524,7 @@ class MucBrowser(AgentBrowser): service = services[1] else: room = model[iter][1].decode('utf-8') - if not gajim.interface.instances[self.account].has_key('join_gc'): + if 'join_gc' not in gajim.interface.instances[self.account]: try: dialogs.JoinGroupchatWindow(self.account, service, room) except RuntimeError: diff --git a/src/gajim.py b/src/gajim.py index 9faa00742..611536643 100755 --- a/src/gajim.py +++ b/src/gajim.py @@ -14,7 +14,7 @@ exec python -OOt "$0" ${1+"$@"} ## Vincent Hanquez ## Copyright (C) 2005 Yann Le Boulanger ## Vincent Hanquez -## Nikos Kouremenos +## Nikos Kouremenos ## Dimitur Kirov ## Travis Shirk ## Norman Rasmussen @@ -509,13 +509,14 @@ class Interface: def handle_event_msg(self, account, array): # 'MSG' (account, (jid, msg, time, encrypted, msg_type, subject, - # chatstate, msg_id, composing_jep, user_nick)) user_nick is JEP-0172 + # chatstate, msg_id, composing_jep, user_nick, xhtml)) user_nick is JEP-0172 full_jid_with_resource = array[0] jid = gajim.get_jid_without_resource(full_jid_with_resource) resource = gajim.get_resource_from_jid(full_jid_with_resource) message = array[1] + encrypted = array[3] msg_type = array[4] subject = array[5] chatstate = array[6] @@ -599,18 +600,26 @@ class Interface: if pm: nickname = resource msg_type = 'pm' - groupchat_control.on_private_message(nickname, message, array[2]) + groupchat_control.on_private_message(nickname, message, array[2], + array[10]) else: # array: (jid, msg, time, encrypted, msg_type, subject) - self.roster.on_message(jid, message, array[2], account, array[3], - msg_type, subject, resource, msg_id, array[9], advanced_notif_num) + if encrypted: + self.roster.on_message(jid, message, array[2], account, array[3], + msg_type, subject, resource, msg_id, array[9], + advanced_notif_num) + else: + #xhtml in last element + self.roster.on_message(jid, message, array[2], account, array[3], + msg_type, subject, resource, msg_id, array[9], + advanced_notif_num, xhtml = array[10]) nickname = gajim.get_name_from_jid(account, jid) # Check and do wanted notifications msg = message if subject: msg = _('Subject: %s') % subject + '\n' + msg - notify.notify('new_message', full_jid_with_resource, account, [msg_type, first, nickname, - msg], advanced_notif_num) + notify.notify('new_message', full_jid_with_resource, account, [msg_type, + first, nickname, msg], advanced_notif_num) if self.remote_ctrl: self.remote_ctrl.raise_signal('NewMessage', (account, array)) @@ -620,33 +629,35 @@ class Interface: full_jid_with_resource = array[0] jids = full_jid_with_resource.split('/', 1) jid = jids[0] - gcs = self.msg_win_mgr.get_controls(message_control.TYPE_GC) - for gc_control in gcs: - if jid == gc_control.contact.jid: - if len(jids) > 1: # it's a pm - nick = jids[1] - if not self.msg_win_mgr.get_control(full_jid_with_resource, account): - tv = gc_control.list_treeview - model = tv.get_model() - i = gc_control.get_contact_iter(nick) - if i: - show = model[i][3] - else: - show = 'offline' - gc_c = gajim.contacts.create_gc_contact(room_jid = jid, - name = nick, show = show) - c = gajim.contacts.contact_from_gc_contact(gc_c) - self.roster.new_chat(c, account, private_chat = True) - ctrl = self.msg_win_mgr.get_control(full_jid_with_resource, account) - ctrl.print_conversation('Error %s: %s' % (array[1], array[2]), - 'status') - return - - gc_control.print_conversation('Error %s: %s' % (array[1], array[2])) - if gc_control.parent_win.get_active_jid() == jid: - gc_control.set_subject(gc_control.subject) + gc_control = self.msg_win_mgr.get_control(jid, account) + if gc_control and gc_control.type_id != message_control.TYPE_GC: + gc_control = None + if gc_control: + if len(jids) > 1: # it's a pm + nick = jids[1] + if not self.msg_win_mgr.get_control(full_jid_with_resource, + account): + tv = gc_control.list_treeview + model = tv.get_model() + iter = gc_control.get_contact_iter(nick) + if iter: + show = model[iter][3] + else: + show = 'offline' + gc_c = gajim.contacts.create_gc_contact(room_jid = jid, + name = nick, show = show) + c = gajim.contacts.contact_from_gc_contact(gc_c) + self.roster.new_chat(c, account, private_chat = True) + ctrl = self.msg_win_mgr.get_control(full_jid_with_resource, account) + ctrl.print_conversation('Error %s: %s' % (array[1], array[2]), + 'status') return + gc_control.print_conversation('Error %s: %s' % (array[1], array[2])) + if gc_control.parent_win.get_active_jid() == jid: + gc_control.set_subject(gc_control.subject) + return + if gajim.jid_is_transport(jid): jid = jid.replace('@', '') msg = array[2] @@ -700,8 +711,8 @@ class Interface: self.remote_ctrl.raise_signal('Subscribed', (account, array)) def handle_event_unsubscribed(self, account, jid): - dialogs.InformationDialog(_('Contact "%s" removed subscription from you') % jid, - _('You will always see him or her as offline.')) + dialogs.InformationDialog(_('Contact "%s" removed subscription from you')\ + % jid, _('You will always see him or her as offline.')) # FIXME: Per RFC 3921, we can "deny" ack as well, but the GUI does not show deny gajim.connections[account].ack_unsubscribed(jid) if self.remote_ctrl: @@ -744,8 +755,8 @@ class Interface: config.ServiceRegistrationWindow(array[0], array[1], account, array[2]) else: - dialogs.ErrorDialog(_('Contact with "%s" cannot be established')\ -% array[0], _('Check your connection or try again later.')) + dialogs.ErrorDialog(_('Contact with "%s" cannot be established') \ + % array[0], _('Check your connection or try again later.')) def handle_event_agent_info_items(self, account, array): #('AGENT_INFO_ITEMS', account, (agent, node, items)) @@ -879,8 +890,8 @@ class Interface: # Get the window and control for the updated status, this may be a PrivateChatControl control = self.msg_win_mgr.get_control(room_jid, account) if control: - control.chg_contact_status(nick, show, status, array[4], array[5], array[6], - array[7], array[8], array[9], array[10]) + control.chg_contact_status(nick, show, status, array[4], array[5], + array[6], array[7], array[8], array[9], array[10]) # print status in chat window and update status/GPG image if self.msg_win_mgr.has_window(fjid, account): @@ -898,7 +909,7 @@ class Interface: def handle_event_gc_msg(self, account, array): - # ('GC_MSG', account, (jid, msg, time, has_timestamp)) + # ('GC_MSG', account, (jid, msg, time, has_timestamp, htmlmsg)) jids = array[0].split('/', 1) room_jid = jids[0] gc_control = self.msg_win_mgr.get_control(room_jid, account) @@ -910,7 +921,7 @@ class Interface: else: # message from someone nick = jids[1] - gc_control.on_message(nick, array[1], array[2], array[3]) + gc_control.on_message(nick, array[1], array[2], array[3], array[4]) if self.remote_ctrl: self.remote_ctrl.raise_signal('GCMessage', (account, array)) @@ -927,7 +938,8 @@ class Interface: gc_control.print_conversation(array[2]) # ... Or the message comes from the occupant who set the subject elif len(jids) > 1: - gc_control.print_conversation('%s has set the subject to %s' % (jids[1], array[1])) + gc_control.print_conversation('%s has set the subject to %s' % ( + jids[1], array[1])) def handle_event_gc_config(self, account, array): #('GC_CONFIG', account, (jid, config)) config is a dict @@ -1794,12 +1806,8 @@ class Interface: # Open the window self.roster.open_event(account, fjid, event) elif type_ == 'gmail': - if gajim.config.get_per('accounts', account, 'savepass'): - url = ('http://www.google.com/accounts/ServiceLoginAuth?service=mail&Email=%s&Passwd=%s&continue=https://mail.google.com/mail') %\ - (urllib.quote(gajim.config.get_per('accounts', account, 'name')), - urllib.quote(gajim.config.get_per('accounts', account, 'password'))) - else: - url = ('http://mail.google.com/') + url = 'http://mail.google.com/mail?account_id=%s' % urllib.quote( + gajim.config.get_per('accounts', account, 'name')) helpers.launch_browser_mailer('url', url) elif type_ == 'gc-invitation': event = gajim.events.get_first_event(account, jid, type_) @@ -1807,6 +1815,7 @@ class Interface: dialogs.InvitationReceivedDialog(account, data[0], jid, data[2], data[1]) gajim.events.remove_events(account, jid, event) + self.roster.draw_contact(jid, account) if w: w.set_active_tab(fjid, account) w.window.present() diff --git a/src/gajim_themes_window.py b/src/gajim_themes_window.py index ef40d4b22..93e979cda 100644 --- a/src/gajim_themes_window.py +++ b/src/gajim_themes_window.py @@ -9,7 +9,7 @@ ## Vincent Hanquez ## Copyright (C) 2005 Yann Le Boulanger ## Vincent Hanquez -## Nikos Kouremenos +## Nikos Kouremenos ## Dimitur Kirov ## Travis Shirk ## Norman Rasmussen diff --git a/src/groupchat_control.py b/src/groupchat_control.py index 607053d48..3590163d9 100644 --- a/src/groupchat_control.py +++ b/src/groupchat_control.py @@ -4,7 +4,7 @@ ## Vincent Hanquez ## Copyright (C) 2005 Yann Le Boulanger ## Vincent Hanquez -## Nikos Kouremenos +## Nikos Kouremenos ## Dimitur Kirov ## Travis Shirk ## Norman Rasmussen @@ -103,9 +103,10 @@ class PrivateChatControl(ChatControl): if not message: return - # We need to make sure that we can still send through the room and that the - # recipient did not go away - contact = gajim.contacts.get_first_contact_from_jid(self.account, self.contact.jid) + # We need to make sure that we can still send through the room and that + # the recipient did not go away + contact = gajim.contacts.get_first_contact_from_jid(self.account, + self.contact.jid) if contact is None: # contact was from pm in MUC room, nick = gajim.get_room_and_nick_from_fjid(self.contact.jid) @@ -172,17 +173,20 @@ class GroupchatControl(ChatControlBase): self.nick = contact.name self.name = self.room_jid.split('@')[0] - self.hide_chat_buttons_always = gajim.config.get('always_hide_groupchat_buttons') + self.hide_chat_buttons_always = gajim.config.get( + 'always_hide_groupchat_buttons') self.chat_buttons_set_visible(self.hide_chat_buttons_always) - self.widget_set_visible(self.xml.get_widget('banner_eventbox'), gajim.config.get('hide_groupchat_banner')) - self.widget_set_visible(self.xml.get_widget('list_scrolledwindow'), gajim.config.get('hide_groupchat_occupants_list')) + self.widget_set_visible(self.xml.get_widget('banner_eventbox'), + gajim.config.get('hide_groupchat_banner')) + self.widget_set_visible(self.xml.get_widget('list_scrolledwindow'), + gajim.config.get('hide_groupchat_occupants_list')) self.gc_refer_to_nick_char = gajim.config.get('gc_refer_to_nick_char') self._last_selected_contact = None # None or holds jid, account tuple # alphanum sorted self.muc_cmds = ['ban', 'chat', 'query', 'clear', 'close', 'compact', - 'help', 'invite', 'join', 'kick', 'leave', 'me', 'msg', 'nick', 'part', - 'names', 'say', 'topic'] + 'help', 'invite', 'join', 'kick', 'leave', 'me', 'msg', 'nick', + 'part', 'names', 'say', 'topic'] # muc attention flag (when we are mentioned in a muc) # if True, the room has mentioned us self.attention_flag = False @@ -200,7 +204,8 @@ class GroupchatControl(ChatControlBase): xm = gtkgui_helpers.get_glade('gc_control_popup_menu.glade') widget = xm.get_widget('bookmark_room_menuitem') - id = widget.connect('activate', self._on_bookmark_room_menuitem_activate) + id = widget.connect('activate', + self._on_bookmark_room_menuitem_activate) self.handlers[id] = widget widget = xm.get_widget('change_nick_menuitem') @@ -208,11 +213,13 @@ class GroupchatControl(ChatControlBase): self.handlers[id] = widget widget = xm.get_widget('configure_room_menuitem') - id = widget.connect('activate', self._on_configure_room_menuitem_activate) + id = widget.connect('activate', + self._on_configure_room_menuitem_activate) self.handlers[id] = widget widget = xm.get_widget('change_subject_menuitem') - id = widget.connect('activate', self._on_change_subject_menuitem_activate) + id = widget.connect('activate', + self._on_change_subject_menuitem_activate) self.handlers[id] = widget widget = xm.get_widget('compact_view_menuitem') @@ -232,13 +239,14 @@ class GroupchatControl(ChatControlBase): self.hpaned = self.xml.get_widget('hpaned') self.hpaned.set_position(self.hpaned_position) - list_treeview = self.list_treeview = self.xml.get_widget('list_treeview') - selection = list_treeview.get_selection() + self.list_treeview = self.xml.get_widget('list_treeview') + selection = self.list_treeview.get_selection() id = selection.connect('changed', self.on_list_treeview_selection_changed) self.handlers[id] = selection - id = list_treeview.connect('style-set', self.on_list_treeview_style_set) - self.handlers[id] = list_treeview + id = self.list_treeview.connect('style-set', + self.on_list_treeview_style_set) + self.handlers[id] = self.list_treeview # we want to know when the the widget resizes, because that is # an indication that the hpaned has moved... # FIXME: Find a better indicator that the hpaned has moved. @@ -272,7 +280,8 @@ class GroupchatControl(ChatControlBase): renderer_text = gtk.CellRendererText() # nickname column.pack_start(renderer_text, expand = True) column.add_attribute(renderer_text, 'markup', C_TEXT) - column.set_cell_data_func(renderer_text, tree_cell_data_func, self.list_treeview) + column.set_cell_data_func(renderer_text, tree_cell_data_func, + self.list_treeview) self.list_treeview.append_column(column) @@ -314,8 +323,7 @@ class GroupchatControl(ChatControlBase): menu.show_all() def notify_on_new_messages(self): - return gajim.config.get('notify_on_all_muc_messages') or \ - self.attention_flag + return gajim.config.get('notify_on_all_muc_messages') def on_treeview_size_allocate(self, widget, allocation): '''The MUC treeview has resized. Move the hpaned in all tabs to match''' @@ -377,26 +385,30 @@ class GroupchatControl(ChatControlBase): color = self.parent_win.notebook.style.fg[gtk.STATE_ACTIVE] elif chatstate == 'newmsg' and (not has_focus or not current_tab) and\ not self.attention_flag: - color_name = gajim.config.get_per('themes', theme, 'state_muc_msg_color') + color_name = gajim.config.get_per('themes', theme, + 'state_muc_msg_color') if color_name: color = gtk.gdk.colormap_get_system().alloc_color(color_name) label_str = self.name + + # count waiting highlighted messages + unread = '' + jid = self.contact.jid + num_unread = len(gajim.events.get_events(self.account, jid, + ['printed_gc_msg'])) + if num_unread > 1: + unread = '[' + unicode(num_unread) + ']' + label_str = unread + label_str return (label_str, color) def get_tab_image(self): - # Set tab image (always 16x16); unread messages show the 'message' image - img_16 = gajim.interface.roster.get_appropriate_state_images( - self.room_jid, icon_name = 'message') - + # Set tab image (always 16x16) tab_image = None - if self.attention_flag and gajim.config.get('show_unread_tab_icon'): - tab_image = img_16['message'] + if gajim.gc_connected[self.account][self.room_jid]: + tab_image = gajim.interface.roster.load_icon('muc_active') else: - if gajim.gc_connected[self.account][self.room_jid]: - tab_image = img_16['muc_active'] - else: - tab_image = img_16['muc_inactive'] + tab_image = gajim.interface.roster.load_icon('muc_inactive') return tab_image def update_ui(self): @@ -423,18 +435,18 @@ class GroupchatControl(ChatControlBase): childs[3].set_sensitive(False) return menu - def on_message(self, nick, msg, tim, has_timestamp = False): + def on_message(self, nick, msg, tim, has_timestamp = False, xhtml = None): if not nick: # message from server - self.print_conversation(msg, tim = tim) + self.print_conversation(msg, tim = tim, xhtml = xhtml) else: # message from someone if has_timestamp: - self.print_old_conversation(msg, nick, tim) + self.print_old_conversation(msg, nick, tim, xhtml) else: - self.print_conversation(msg, nick, tim) + self.print_conversation(msg, nick, tim, xhtml) - def on_private_message(self, nick, msg, tim): + def on_private_message(self, nick, msg, tim, xhtml): # Do we have a queue? fjid = self.room_jid + '/' + nick no_queue = len(gajim.events.get_events(self.account, fjid)) == 0 @@ -442,7 +454,7 @@ class GroupchatControl(ChatControlBase): # We print if window is opened pm_control = gajim.interface.msg_win_mgr.get_control(fjid, self.account) if pm_control: - pm_control.print_conversation(msg, tim = tim) + pm_control.print_conversation(msg, tim = tim, xhtml = xhtml) return event = gajim.events.create_event('pm', (msg, '', 'incoming', tim, @@ -495,7 +507,7 @@ class GroupchatControl(ChatControlBase): gc_count_nicknames_colors = 0 gc_custom_colors = {} - def print_old_conversation(self, text, contact, tim = None): + def print_old_conversation(self, text, contact, tim = None, xhtml = None): if isinstance(text, str): text = unicode(text, 'utf-8') if contact == self.nick: # it's us @@ -508,9 +520,9 @@ class GroupchatControl(ChatControlBase): small_attr = [] ChatControlBase.print_conversation_line(self, text, kind, contact, tim, small_attr, small_attr + ['restored_message'], - small_attr + ['restored_message']) + small_attr + ['restored_message'], xhtml = xhtml) - def print_conversation(self, text, contact = '', tim = None): + def print_conversation(self, text, contact = '', tim = None, xhtml = None): '''Print a line in the conversation: if contact is set: it's a message from someone or an info message (contact = 'info' in such a case) @@ -564,7 +576,7 @@ class GroupchatControl(ChatControlBase): self.check_and_possibly_add_focus_out_line() ChatControlBase.print_conversation_line(self, text, kind, contact, tim, - other_tags_for_name, [], other_tags_for_text) + other_tags_for_name, [], other_tags_for_text, xhtml = xhtml) def get_nb_unread(self): nb = len(gajim.events.get_events(self.account, self.room_jid, @@ -633,13 +645,16 @@ class GroupchatControl(ChatControlBase): word[char_position:char_position+1] if (refer_to_nick_char != ''): refer_to_nick_char_code = ord(refer_to_nick_char) - if ((refer_to_nick_char_code < 65 or refer_to_nick_char_code > 123)\ - or (refer_to_nick_char_code < 97 and refer_to_nick_char_code > 90)): + if ((refer_to_nick_char_code < 65 or \ + refer_to_nick_char_code > 123) or \ + (refer_to_nick_char_code < 97 and \ + refer_to_nick_char_code > 90)): return True else: - # This is A->Z or a->z, we can be sure our nick is the beginning - # of a real word, do not highlight. Note that we can probably - # do a better detection of non-punctuation characters + # This is A->Z or a->z, we can be sure our nick is the + # beginning of a real word, do not highlight. Note that we + # can probably do a better detection of non-punctuation + # characters return False else: # Special word == word, no char after in word return True @@ -688,7 +703,8 @@ class GroupchatControl(ChatControlBase): gc_contact.affiliation, gc_contact.status, gc_contact.jid) - def on_send_pm(self, widget=None, model=None, iter=None, nick=None, msg=None): + def on_send_pm(self, widget = None, model = None, iter = None, nick = None, + msg = None): '''opens a chat window and msg is not None sends private message to a contact in a room''' if nick is None: @@ -697,14 +713,16 @@ class GroupchatControl(ChatControlBase): self._start_private_message(nick) if msg: - gajim.interface.msg_win_mgr.get_control(fjid, self.account).send_message(msg) + gajim.interface.msg_win_mgr.get_control(fjid, self.account).\ + send_message(msg) def draw_contact(self, nick, selected=False, focus=False): iter = self.get_contact_iter(nick) if not iter: return model = self.list_treeview.get_model() - gc_contact = gajim.contacts.get_gc_contact(self.account, self.room_jid, nick) + gc_contact = gajim.contacts.get_gc_contact(self.account, self.room_jid, + nick) state_images = gajim.interface.roster.jabber_state_images['16'] if len(gajim.events.get_events(self.account, self.room_jid + '/' + nick)): image = state_images['message'] @@ -742,8 +760,8 @@ class GroupchatControl(ChatControlBase): scaled_pixbuf = None model[iter][C_AVATAR] = scaled_pixbuf - def chg_contact_status(self, nick, show, status, role, affiliation, jid, reason, actor, - statusCode, new_nick): + def chg_contact_status(self, nick, show, status, role, affiliation, jid, + reason, actor, statusCode, new_nick): '''When an occupant changes his or her status''' if show == 'invisible': return @@ -835,7 +853,8 @@ class GroupchatControl(ChatControlBase): self.add_contact_to_roster(nick, show, role, affiliation, status, jid) else: - c = gajim.contacts.get_gc_contact(self.account, self.room_jid, nick) + c = gajim.contacts.get_gc_contact(self.account, self.room_jid, + nick) if c.show == show and c.status == status and \ c.affiliation == affiliation: #no change return @@ -938,7 +957,8 @@ class GroupchatControl(ChatControlBase): iter = self.get_contact_iter(nick) if not iter: return - gc_contact = gajim.contacts.get_gc_contact(self.account, self.room_jid, nick) + gc_contact = gajim.contacts.get_gc_contact(self.account, self.room_jid, + nick) if gc_contact: gajim.contacts.remove_gc_contact(self.account, gc_contact) parent_iter = model.iter_parent(iter) @@ -1086,7 +1106,8 @@ class GroupchatControl(ChatControlBase): if len(message_array): message_array = message_array[0].split() nick = message_array.pop(0) - room_nicks = gajim.contacts.get_nick_list(self.account, self.room_jid) + room_nicks = gajim.contacts.get_nick_list(self.account, + self.room_jid) reason = ' '.join(message_array) if nick in room_nicks: ban_jid = gajim.construct_fjid(self.room_jid, nick) @@ -1107,7 +1128,8 @@ class GroupchatControl(ChatControlBase): if len(message_array): message_array = message_array[0].split() nick = message_array.pop(0) - room_nicks = gajim.contacts.get_nick_list(self.account, self.room_jid) + room_nicks = gajim.contacts.get_nick_list(self.account, + self.room_jid) reason = ' '.join(message_array) if nick in room_nicks: gajim.connections[self.account].gc_set_role(self.room_jid, nick, @@ -1167,7 +1189,8 @@ class GroupchatControl(ChatControlBase): if not self._process_command(message): # Send the message - gajim.connections[self.account].send_gc_message(self.room_jid, message) + gajim.connections[self.account].send_gc_message(self.room_jid, + message) self.msg_textview.get_buffer().set_text('') self.msg_textview.grab_focus() @@ -1190,7 +1213,8 @@ class GroupchatControl(ChatControlBase): self.print_conversation(_('Usage: /%s [reason], closes the current ' 'window or tab, displaying reason if specified.') % command, 'info') elif command == 'compact': - self.print_conversation(_('Usage: /%s, hide the chat buttons.') % command, 'info') + self.print_conversation(_('Usage: /%s, hide the chat buttons.') % \ + command, 'info') elif command == 'invite': self.print_conversation(_('Usage: /%s [reason], invites JID to ' 'the current room, optionally providing a reason.') % command, @@ -1231,7 +1255,8 @@ class GroupchatControl(ChatControlBase): self.print_conversation(_('No help info for /%s') % command, 'info') def get_role(self, nick): - gc_contact = gajim.contacts.get_gc_contact(self.account, self.room_jid, nick) + gc_contact = gajim.contacts.get_gc_contact(self.account, self.room_jid, + nick) if gc_contact: return gc_contact.role else: @@ -1317,7 +1342,8 @@ class GroupchatControl(ChatControlBase): _('Please specify the new subject:'), self.subject) response = instance.get_response() if response == gtk.RESPONSE_OK: - # Note, we don't update self.subject since we don't know whether it will work yet + # Note, we don't update self.subject since we don't know whether it + # will work yet subject = instance.input_entry.get_text().decode('utf-8') gajim.connections[self.account].send_gc_subject(self.room_jid, subject) @@ -1362,7 +1388,8 @@ class GroupchatControl(ChatControlBase): _('Bookmark has been added successfully'), _('You can manage your bookmarks via Actions menu in your roster.')) - def handle_message_textview_mykey_press(self, widget, event_keyval, event_keymod): + def handle_message_textview_mykey_press(self, widget, event_keyval, + event_keymod): # NOTE: handles mykeypress which is custom signal connected to this # CB in new_room(). for this singal see message_textview.py @@ -1374,12 +1401,14 @@ class GroupchatControl(ChatControlBase): message_buffer = widget.get_buffer() start_iter, end_iter = message_buffer.get_bounds() - message = message_buffer.get_text(start_iter, end_iter, False).decode('utf-8') + message = message_buffer.get_text(start_iter, end_iter, False).decode( + 'utf-8') if event.keyval == gtk.keysyms.Tab: # TAB cursor_position = message_buffer.get_insert() end_iter = message_buffer.get_iter_at_mark(cursor_position) - text = message_buffer.get_text(start_iter, end_iter, False).decode('utf-8') + text = message_buffer.get_text(start_iter, end_iter, False).decode( + 'utf-8') if text.endswith(' '): if not self.last_key_tabs: return False @@ -1495,8 +1524,8 @@ class GroupchatControl(ChatControlBase): # looking for user's affiliation and role user_nick = self.nick - user_affiliation = gajim.contacts.get_gc_contact(self.account, self.room_jid, - user_nick).affiliation + user_affiliation = gajim.contacts.get_gc_contact(self.account, + self.room_jid, user_nick).affiliation user_role = self.get_role(user_nick) # making menu from glade @@ -1505,9 +1534,10 @@ class GroupchatControl(ChatControlBase): # these conditions were taken from JEP 0045 item = xml.get_widget('kick_menuitem') if user_role != 'moderator' or \ - (user_affiliation == 'admin' and target_affiliation == 'owner') or \ - (user_affiliation == 'member' and target_affiliation in ('admin', 'owner')) or \ - (user_affiliation == 'none' and target_affiliation != 'none'): + (user_affiliation == 'admin' and target_affiliation == 'owner') or \ + (user_affiliation == 'member' and target_affiliation in ('admin', + 'owner')) or (user_affiliation == 'none' and target_affiliation != \ + 'none'): item.set_sensitive(False) id = item.connect('activate', self.kick, nick) self.handlers[id] = item @@ -1515,18 +1545,18 @@ class GroupchatControl(ChatControlBase): item = xml.get_widget('voice_checkmenuitem') item.set_active(target_role != 'visitor') if user_role != 'moderator' or \ - user_affiliation == 'none' or \ - (user_affiliation=='member' and target_affiliation!='none') or \ - target_affiliation in ('admin', 'owner'): + user_affiliation == 'none' or \ + (user_affiliation=='member' and target_affiliation!='none') or \ + target_affiliation in ('admin', 'owner'): item.set_sensitive(False) id = item.connect('activate', self.on_voice_checkmenuitem_activate, - nick) + nick) self.handlers[id] = item item = xml.get_widget('moderator_checkmenuitem') item.set_active(target_role == 'moderator') if not user_affiliation in ('admin', 'owner') or \ - target_affiliation in ('admin', 'owner'): + target_affiliation in ('admin', 'owner'): item.set_sensitive(False) id = item.connect('activate', self.on_moderator_checkmenuitem_activate, nick) @@ -1534,8 +1564,8 @@ class GroupchatControl(ChatControlBase): item = xml.get_widget('ban_menuitem') if not user_affiliation in ('admin', 'owner') or \ - (target_affiliation in ('admin', 'owner') and\ - user_affiliation != 'owner'): + (target_affiliation in ('admin', 'owner') and\ + user_affiliation != 'owner'): item.set_sensitive(False) id = item.connect('activate', self.ban, jid) self.handlers[id] = item @@ -1543,7 +1573,7 @@ class GroupchatControl(ChatControlBase): item = xml.get_widget('member_checkmenuitem') item.set_active(target_affiliation != 'none') if not user_affiliation in ('admin', 'owner') or \ - (user_affiliation != 'owner' and target_affiliation in ('admin','owner')): + (user_affiliation != 'owner' and target_affiliation in ('admin','owner')): item.set_sensitive(False) id = item.connect('activate', self.on_member_checkmenuitem_activate, jid) @@ -1733,19 +1763,23 @@ class GroupchatControl(ChatControlBase): def grant_voice(self, widget, nick): '''grant voice privilege to a user''' - gajim.connections[self.account].gc_set_role(self.room_jid, nick, 'participant') + gajim.connections[self.account].gc_set_role(self.room_jid, nick, + 'participant') def revoke_voice(self, widget, nick): '''revoke voice privilege to a user''' - gajim.connections[self.account].gc_set_role(self.room_jid, nick, 'visitor') + gajim.connections[self.account].gc_set_role(self.room_jid, nick, + 'visitor') def grant_moderator(self, widget, nick): '''grant moderator privilege to a user''' - gajim.connections[self.account].gc_set_role(self.room_jid, nick, 'moderator') + gajim.connections[self.account].gc_set_role(self.room_jid, nick, + 'moderator') def revoke_moderator(self, widget, nick): '''revoke moderator privilege to a user''' - gajim.connections[self.account].gc_set_role(self.room_jid, nick, 'participant') + gajim.connections[self.account].gc_set_role(self.room_jid, nick, + 'participant') def ban(self, widget, jid): '''ban a user''' @@ -1760,17 +1794,17 @@ class GroupchatControl(ChatControlBase): else: return # stop banning procedure gajim.connections[self.account].gc_set_affiliation(self.room_jid, jid, - 'outcast', reason) + 'outcast', reason) def grant_membership(self, widget, jid): '''grant membership privilege to a user''' gajim.connections[self.account].gc_set_affiliation(self.room_jid, jid, - 'member') + 'member') def revoke_membership(self, widget, jid): '''revoke membership privilege to a user''' gajim.connections[self.account].gc_set_affiliation(self.room_jid, jid, - 'none') + 'none') def grant_admin(self, widget, jid): '''grant administrative privilege to a user''' @@ -1794,7 +1828,8 @@ class GroupchatControl(ChatControlBase): c = gajim.contacts.get_gc_contact(self.account, self.room_jid, nick) c2 = gajim.contacts.contact_from_gc_contact(c) if gajim.interface.instances[self.account]['infos'].has_key(c2.jid): - gajim.interface.instances[self.account]['infos'][c2.jid].window.present() + gajim.interface.instances[self.account]['infos'][c2.jid].window.\ + present() else: gajim.interface.instances[self.account]['infos'][c2.jid] = \ vcard.VcardWindow(c2, self.account, is_fake = True) diff --git a/src/gtkexcepthook.py b/src/gtkexcepthook.py index 875da8ee4..1bc552a24 100644 --- a/src/gtkexcepthook.py +++ b/src/gtkexcepthook.py @@ -1,18 +1,7 @@ ## gtkexcepthook.py ## -## Contributors for this file: -## - Yann Le Boulanger -## - Nikos Kouremenos -## - Dimitur Kirov -## -## Copyright (C) 2003-2004 Yann Le Boulanger -## Vincent Hanquez -## Copyright (C) 2005 Yann Le Boulanger -## Vincent Hanquez -## Nikos Kouremenos -## Dimitur Kirov -## Travis Shirk -## Norman Rasmussen +## Copyright (C) 2005-2006 Yann Le Boulanger +## Copyright (C) 2005-2006 Nikos Kouremenos ## ## Initially written and submitted by Gustavo J. A. M. Carneiro ## diff --git a/src/gtkgui_helpers.py b/src/gtkgui_helpers.py index 7b99c3ae9..e1f094a29 100644 --- a/src/gtkgui_helpers.py +++ b/src/gtkgui_helpers.py @@ -2,7 +2,7 @@ ## ## Copyright (C) 2003-2006 Yann Le Boulanger ## Copyright (C) 2004-2005 Vincent Hanquez -## Copyright (C) 2005-2006 Nikos Kouremenos +## Copyright (C) 2005-2006 Nikos Kouremenos ## Copyright (C) 2005 Dimitur Kirov ## Copyright (C) 2005 Travis Shirk ## Copyright (C) 2005 Norman Rasmussen @@ -175,11 +175,14 @@ def reduce_chars_newlines(text, max_chars = 0, max_lines = 0): If any of the params is not present (None or 0) the action on it is not performed''' - def _cut_if_long(str): - if len(str) > max_chars: - str = str[:max_chars - 3] + '...' - return str + def _cut_if_long(string): + if len(string) > max_chars: + string = string[:max_chars - 3] + '...' + return string + if isinstance(text, str): + text = text.decode('utf-8') + if max_lines == 0: lines = text.split('\n') else: diff --git a/src/history_window.py b/src/history_window.py index fba1684ff..e6c3f00fa 100644 --- a/src/history_window.py +++ b/src/history_window.py @@ -8,7 +8,7 @@ ## Vincent Hanquez ## Copyright (C) 2005 Yann Le Boulanger ## Vincent Hanquez -## Nikos Kouremenos +## Nikos Kouremenos ## Dimitur Kirov ## Travis Shirk ## Norman Rasmussen diff --git a/src/htmltextview.py b/src/htmltextview.py new file mode 100644 index 000000000..4a57a2adb --- /dev/null +++ b/src/htmltextview.py @@ -0,0 +1,968 @@ +### Copyright (C) 2005 Gustavo J. A. M. Carneiro +### Copyright (C) 2006 Santiago Gala +### +### This library is free software; you can redistribute it and/or +### modify it under the terms of the GNU Lesser General Public +### License as published by the Free Software Foundation; either +### version 2 of the License, or (at your option) any later version. +### +### This library is distributed in the hope that it will be useful, +### but WITHOUT ANY WARRANTY; without even the implied warranty of +### MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +### Lesser General Public License for more details. +### +### You should have received a copy of the GNU Lesser General Public +### License along with this library; if not, write to the +### Free Software Foundation, Inc., 59 Temple Place - Suite 330, +### Boston, MA 02111-1307, USA. + + +""" +A gtk.TextView-based renderer for XHTML-IM, as described in: + http://www.jabber.org/jeps/jep-0071.html + +Starting with the version posted by Gustavo Carneiro, +I (Santiago Gala) am trying to make it more compatible +with the markup that docutils generate, and also more +modular. + +""" + +import gobject +import pango +import gtk +import xml.sax, xml.sax.handler +import re +import warnings +from cStringIO import StringIO +import urllib2 +import operator + +#from common import i18n + + +import tooltips + + +__all__ = ['HtmlTextView'] + +whitespace_rx = re.compile("\\s+") +allwhitespace_rx = re.compile("^\\s*$") + +## pixels = points * display_resolution +display_resolution = 0.3514598*(gtk.gdk.screen_height() / + float(gtk.gdk.screen_height_mm())) + +#embryo of CSS classes +classes = { + #'system-message':';display: none', + 'problematic':';color: red', +} + +#styles for elemens +element_styles = { + 'u' : ';text-decoration: underline', + 'em' : ';font-style: oblique', + 'cite' : '; background-color:rgb(170,190,250); font-style: oblique', + 'li' : '; margin-left: 1em; margin-right: 10%', + 'strong' : ';font-weight: bold', + 'pre' : '; background-color:rgb(190,190,190); font-family: monospace; white-space: pre; margin-left: 1em; margin-right: 10%', + 'kbd' : ';background-color:rgb(210,210,210);font-family: monospace', + 'blockquote': '; background-color:rgb(170,190,250); margin-left: 2em; margin-right: 10%', + 'dt' : ';font-weight: bold; font-style: oblique', + 'dd' : ';margin-left: 2em; font-style: oblique' +} +# no difference for the moment +element_styles['dfn'] = element_styles['em'] +element_styles['var'] = element_styles['em'] +# deprecated, legacy, presentational +element_styles['tt'] = element_styles['kbd'] +element_styles['i'] = element_styles['em'] +element_styles['b'] = element_styles['strong'] + +class_styles = { +} + +""" +========== + JEP-0071 +========== + +This Integration Set includes a subset of the modules defined for +XHTML 1.0 but does not redefine any existing modules, nor +does it define any new modules. Specifically, it includes the +following modules only: + +- Structure +- Text + + * Block + + phrasal + addr, blockquote, pre + Struc + div,p + Heading + h1, h2, h3, h4, h5, h6 + + * Inline + + phrasal + abbr, acronym, cite, code, dfn, em, kbd, q, samp, strong, var + structural + br, span + +- Hypertext (a) +- List (ul, ol, dl) +- Image (img) +- Style Attribute + +Therefore XHTML-IM uses the following content models: + + Block.mix + Block-like elements, e.g., paragraphs + Flow.mix + Any block or inline elements + Inline.mix + Character-level elements + InlineNoAnchor.class + Anchor element + InlinePre.mix + Pre element + +XHTML-IM also uses the following Attribute Groups: + +Core.extra.attrib + TBD +I18n.extra.attrib + TBD +Common.extra + style + + +... +#block level: +#Heading h +# ( pres = h1 | h2 | h3 | h4 | h5 | h6 ) +#Block ( phrasal = address | blockquote | pre ) +#NOT ( presentational = hr ) +# ( structural = div | p ) +#other: section +#Inline ( phrasal = abbr | acronym | cite | code | dfn | em | kbd | q | samp | strong | var ) +#NOT ( presentational = b | big | i | small | sub | sup | tt ) +# ( structural = br | span ) +#Param/Legacy param, font, basefont, center, s, strike, u, dir, menu, isindex +# +""" + +BLOCK_HEAD = set(( 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', )) +BLOCK_PHRASAL = set(( 'address', 'blockquote', 'pre', )) +BLOCK_PRES = set(( 'hr', )) #not in xhtml-im +BLOCK_STRUCT = set(( 'div', 'p', )) +BLOCK_HACKS = set(( 'table', 'tr' )) +BLOCK = BLOCK_HEAD.union(BLOCK_PHRASAL).union(BLOCK_STRUCT).union(BLOCK_PRES).union(BLOCK_HACKS) + +INLINE_PHRASAL = set('abbr, acronym, cite, code, dfn, em, kbd, q, samp, strong, var'.split(', ')) +INLINE_PRES = set('b, i, u, tt'.split(', ')) #not in xhtml-im +INLINE_STRUCT = set('br, span'.split(', ')) +INLINE = INLINE_PHRASAL.union(INLINE_PRES).union(INLINE_STRUCT) + +LIST_ELEMS = set( 'dl, ol, ul'.split(', ')) + +for name in BLOCK_HEAD: + num = eval(name[1]) + size = (num-1) // 2 + weigth = (num - 1) % 2 + element_styles[name] = '; font-size: %s; %s' % ( ('large', 'medium', 'small')[size], + ('font-weight: bold', 'font-style: oblique')[weigth], + ) + + +def build_patterns(view, config, interface): + #extra, rst does not mark _underline_ or /it/ up + #actually , or are not in the JEP-0071, but are seen in the wild + basic_pattern = r'(? gtk.gdk.Color''' + if color.startswith("rgb(") and color.endswith(')'): + r, g, b = [int(c)*257 for c in color[4:-1].split(',')] + return gtk.gdk.Color(r, g, b) + else: + return gtk.gdk.color_parse(color) + + +class HtmlHandler(xml.sax.handler.ContentHandler): + + def __init__(self, textview, startiter): + xml.sax.handler.ContentHandler.__init__(self) + self.textbuf = textview.get_buffer() + self.textview = textview + self.iter = startiter + self.text = '' + self.starting=True + self.preserve = False + self.styles = [] # a gtk.TextTag or None, for each span level + self.list_counters = [] # stack (top at head) of list + # counters, or None for unordered list + + def _parse_style_color(self, tag, value): + color = _parse_css_color(value) + tag.set_property("foreground-gdk", color) + + def _parse_style_background_color(self, tag, value): + color = _parse_css_color(value) + tag.set_property("background-gdk", color) + if gtk.gtk_version >= (2, 8): + tag.set_property("paragraph-background-gdk", color) + + + if gtk.gtk_version >= (2, 8, 5) or gobject.pygtk_version >= (2, 8, 1): + + def _get_current_attributes(self): + attrs = self.textview.get_default_attributes() + self.iter.backward_char() + self.iter.get_attributes(attrs) + self.iter.forward_char() + return attrs + + else: + + ## Workaround http://bugzilla.gnome.org/show_bug.cgi?id=317455 + def _get_current_style_attr(self, propname, comb_oper=None): + tags = [tag for tag in self.styles if tag is not None] + tags.reverse() + is_set_name = propname + "-set" + value = None + for tag in tags: + if tag.get_property(is_set_name): + if value is None: + value = tag.get_property(propname) + if comb_oper is None: + return value + else: + value = comb_oper(value, tag.get_property(propname)) + return value + + class _FakeAttrs(object): + __slots__ = ("font", "font_scale") + + def _get_current_attributes(self): + attrs = self._FakeAttrs() + attrs.font_scale = self._get_current_style_attr("scale", + operator.mul) + if attrs.font_scale is None: + attrs.font_scale = 1.0 + attrs.font = self._get_current_style_attr("font-desc") + if attrs.font is None: + attrs.font = self.textview.style.font_desc + return attrs + + + def __parse_length_frac_size_allocate(self, textview, allocation, + frac, callback, args): + callback(allocation.width*frac, *args) + + def _parse_length(self, value, font_relative, callback, *args): + '''Parse/calc length, converting to pixels, calls callback(length, *args) + when the length is first computed or changes''' + if value.endswith('%'): + frac = float(value[:-1])/100 + if font_relative: + attrs = self._get_current_attributes() + font_size = attrs.font.get_size() / pango.SCALE + callback(frac*display_resolution*font_size, *args) + else: + ## CSS says "Percentage values: refer to width of the closest + ## block-level ancestor" + ## This is difficult/impossible to implement, so we use + ## textview width instead; a reasonable approximation.. + alloc = self.textview.get_allocation() + self.__parse_length_frac_size_allocate(self.textview, alloc, + frac, callback, args) + self.textview.connect("size-allocate", + self.__parse_length_frac_size_allocate, + frac, callback, args) + + elif value.endswith('pt'): # points + callback(float(value[:-2])*display_resolution, *args) + + elif value.endswith('em'): # ems, the height of the element's font + attrs = self._get_current_attributes() + font_size = attrs.font.get_size() / pango.SCALE + callback(float(value[:-2])*display_resolution*font_size, *args) + + elif value.endswith('ex'): # x-height, ~ the height of the letter 'x' + ## FIXME: figure out how to calculate this correctly + ## for now 'em' size is used as approximation + attrs = self._get_current_attributes() + font_size = attrs.font.get_size() / pango.SCALE + callback(float(value[:-2])*display_resolution*font_size, *args) + + elif value.endswith('px'): # pixels + callback(int(value[:-2]), *args) + + else: + warnings.warn("Unable to parse length value '%s'" % value) + + def __parse_font_size_cb(length, tag): + tag.set_property("size-points", length/display_resolution) + __parse_font_size_cb = staticmethod(__parse_font_size_cb) + + def _parse_style_display(self, tag, value): + if value == 'none': + tag.set_property('invisible','true') + #Fixme: display: block, inline + + def _parse_style_font_size(self, tag, value): + try: + scale = { + "xx-small": pango.SCALE_XX_SMALL, + "x-small": pango.SCALE_X_SMALL, + "small": pango.SCALE_SMALL, + "medium": pango.SCALE_MEDIUM, + "large": pango.SCALE_LARGE, + "x-large": pango.SCALE_X_LARGE, + "xx-large": pango.SCALE_XX_LARGE, + } [value] + except KeyError: + pass + else: + attrs = self._get_current_attributes() + tag.set_property("scale", scale / attrs.font_scale) + return + if value == 'smaller': + tag.set_property("scale", pango.SCALE_SMALL) + return + if value == 'larger': + tag.set_property("scale", pango.SCALE_LARGE) + return + self._parse_length(value, True, self.__parse_font_size_cb, tag) + + def _parse_style_font_style(self, tag, value): + try: + style = { + "normal": pango.STYLE_NORMAL, + "italic": pango.STYLE_ITALIC, + "oblique": pango.STYLE_OBLIQUE, + } [value] + except KeyError: + warnings.warn("unknown font-style %s" % value) + else: + tag.set_property("style", style) + + def __frac_length_tag_cb(self,length, tag, propname): + styles = self._get_style_tags() + if styles: + length += styles[-1].get_property(propname) + tag.set_property(propname, length) + #__frac_length_tag_cb = staticmethod(__frac_length_tag_cb) + + def _parse_style_margin_left(self, tag, value): + self._parse_length(value, False, self.__frac_length_tag_cb, + tag, "left-margin") + + def _parse_style_margin_right(self, tag, value): + self._parse_length(value, False, self.__frac_length_tag_cb, + tag, "right-margin") + + def _parse_style_font_weight(self, tag, value): + ## TODO: missing 'bolder' and 'lighter' + try: + weight = { + '100': pango.WEIGHT_ULTRALIGHT, + '200': pango.WEIGHT_ULTRALIGHT, + '300': pango.WEIGHT_LIGHT, + '400': pango.WEIGHT_NORMAL, + '500': pango.WEIGHT_NORMAL, + '600': pango.WEIGHT_BOLD, + '700': pango.WEIGHT_BOLD, + '800': pango.WEIGHT_ULTRABOLD, + '900': pango.WEIGHT_HEAVY, + 'normal': pango.WEIGHT_NORMAL, + 'bold': pango.WEIGHT_BOLD, + } [value] + except KeyError: + warnings.warn("unknown font-style %s" % value) + else: + tag.set_property("weight", weight) + + def _parse_style_font_family(self, tag, value): + tag.set_property("family", value) + + def _parse_style_text_align(self, tag, value): + try: + align = { + 'left': gtk.JUSTIFY_LEFT, + 'right': gtk.JUSTIFY_RIGHT, + 'center': gtk.JUSTIFY_CENTER, + 'justify': gtk.JUSTIFY_FILL, + } [value] + except KeyError: + warnings.warn("Invalid text-align:%s requested" % value) + else: + tag.set_property("justification", align) + + def _parse_style_text_decoration(self, tag, value): + if value == "none": + tag.set_property("underline", pango.UNDERLINE_NONE) + tag.set_property("strikethrough", False) + elif value == "underline": + tag.set_property("underline", pango.UNDERLINE_SINGLE) + tag.set_property("strikethrough", False) + elif value == "overline": + warnings.warn("text-decoration:overline not implemented") + tag.set_property("underline", pango.UNDERLINE_NONE) + tag.set_property("strikethrough", False) + elif value == "line-through": + tag.set_property("underline", pango.UNDERLINE_NONE) + tag.set_property("strikethrough", True) + elif value == "blink": + warnings.warn("text-decoration:blink not implemented") + else: + warnings.warn("text-decoration:%s not implemented" % value) + + def _parse_style_white_space(self, tag, value): + if value == 'pre': + tag.set_property("wrap_mode", gtk.WRAP_NONE) + elif value == 'normal': + tag.set_property("wrap_mode", gtk.WRAP_WORD) + elif value == 'nowrap': + tag.set_property("wrap_mode", gtk.WRAP_NONE) + + + ## build a dictionary mapping styles to methods, for greater speed + __style_methods = dict() + for style in ["background-color", "color", "font-family", "font-size", + "font-style", "font-weight", "margin-left", "margin-right", + "text-align", "text-decoration", "white-space", 'display' ]: + try: + method = locals()["_parse_style_%s" % style.replace('-', '_')] + except KeyError: + warnings.warn("Style attribute '%s' not yet implemented" % style) + else: + __style_methods[style] = method + del style + ## -- + + def _get_style_tags(self): + return [tag for tag in self.styles if tag is not None] + + def _create_url(self, href, title, type_, id_): + tag = self.textbuf.create_tag(id_) + if href and href[0] != '#': + tag.href = href + tag.type_ = type_ # to be used by the URL handler + tag.connect('event', self.textview.html_hyperlink_handler, 'url', href) + tag.set_property('foreground', '#0000ff') + tag.set_property('underline', pango.UNDERLINE_SINGLE) + tag.is_anchor = True + if title: + tag.title = title + return tag + + + def _begin_span(self, style, tag=None, id_=None): + if style is None: + self.styles.append(tag) + return None + if tag is None: + if id_: + tag = self.textbuf.create_tag(id_) + else: + tag = self.textbuf.create_tag() + for attr, val in [item.split(':', 1) for item in style.split(';') if len(item.strip())]: + attr = attr.strip().lower() + val = val.strip() + try: + method = self.__style_methods[attr] + except KeyError: + warnings.warn("Style attribute '%s' requested " + "but not yet implemented" % attr) + else: + method(self, tag, val) + self.styles.append(tag) + + def _end_span(self): + self.styles.pop() + + def _jump_line(self): + self.textbuf.insert_with_tags_by_name(self.iter, '\n', 'eol') + self.starting = True + + def _insert_text(self, text): + if self.starting and text != '\n': + self.starting = (text[-1] == '\n') + tags = self._get_style_tags() + if tags: + self.textbuf.insert_with_tags(self.iter, text, *tags) + else: + self.textbuf.insert(self.iter, text) + + def _starts_line(self): + return self.starting or self.iter.starts_line() + + def _flush_text(self): + if not self.text: return + text, self.text = self.text, '' + if not self.preserve: + text = text.replace('\n', ' ') + self.handle_specials(whitespace_rx.sub(' ', text)) + else: + self._insert_text(text.strip("\n")) + + def _anchor_event(self, tag, textview, event, iter, href, type_): + if event.type == gtk.gdk.BUTTON_PRESS: + self.textview.emit("url-clicked", href, type_) + return True + return False + + def handle_specials(self, text): + index = 0 + se = self.textview.config.get('show_ascii_formatting_chars') + if self.textview.config.get('emoticons_theme'): + iterator = self.textview.emot_and_basic_re.finditer(text) + else: + iterator = self.textview.basic_pattern_re.finditer(text) + for match in iterator: + start, end = match.span() + special_text = text[start:end] + if start != 0: + self._insert_text(text[index:start]) + index = end # update index + #emoticons + possible_emot_ascii_caps = special_text.upper() # emoticons keys are CAPS + if self.textview.config.get('emoticons_theme') and \ + possible_emot_ascii_caps in self.textview.interface.emoticons.keys(): + #it's an emoticon + emot_ascii = possible_emot_ascii_caps + anchor = self.textbuf.create_child_anchor(self.iter) + img = gtk.Image() + img.set_from_file(self.textview.interface.emoticons[emot_ascii]) + # TODO: add alt/tooltip with the special_text (a11y) + self.textview.add_child_at_anchor(img, anchor) + img.show() + else: + # now print it + if special_text.startswith('/'): # it's explicit italics + self.startElement('i', {}) + elif special_text.startswith('_'): # it's explicit underline + self.startElement("u", {}) + if se: self._insert_text(special_text[0]) + self.handle_specials(special_text[1:-1]) + if se: self._insert_text(special_text[0]) + if special_text.startswith('_'): # it's explicit underline + self.endElement('u') + if special_text.startswith('/'): # it's explicit italics + self.endElement('i') + self._insert_text(text[index:]) + + def characters(self, content): + if self.preserve: + self.text += content + return + if allwhitespace_rx.match(content) is not None and self._starts_line(): + return + self.text += content + #if self.text: self.text += ' ' + #self.handle_specials(whitespace_rx.sub(' ', content)) + if allwhitespace_rx.match(self.text) is not None and self._starts_line(): + self.text = '' + #self._flush_text() + + + def startElement(self, name, attrs): + self._flush_text() + klass = [i for i in attrs.get('class',' ').split(' ') if i] + style = attrs.get('style','') + #Add styles defined for classes + #TODO: priority between class and style elements? + for k in klass: + if k in classes: + style += classes[k] + + tag = None + #FIXME: if we want to use id, it needs to be unique across + # the whole textview, so we need to add something like the + # message-id to it. + #id_ = attrs.get('id',None) + id_ = None + if name == 'a': + #TODO: accesskey, charset, hreflang, rel, rev, tabindex, type + href = attrs.get('href', None) + title = attrs.get('title', attrs.get('rel',href)) + type_ = attrs.get('type', None) + tag = self._create_url(href, title, type_, id_) + elif name == 'blockquote': + cite = attrs.get('cite', None) + if cite: + tag = self.textbuf.create_tag(id_) + tag.title = title + tag.is_anchor = True + elif name in LIST_ELEMS: + style += ';margin-left: 2em' + if name in element_styles: + style += element_styles[name] + + if style == '': + style = None + self._begin_span(style, tag, id_) + + if name == 'br': + pass # handled in endElement + elif name == 'hr': + pass # handled in endElement + elif name in BLOCK: + if not self._starts_line(): + self._jump_line() + if name == 'pre': + self.preserve = True + elif name == 'span': + pass + elif name in ('dl', 'ul'): + if not self._starts_line(): + self._jump_line() + self.list_counters.append(None) + elif name == 'ol': + if not self._starts_line(): + self._jump_line() + self.list_counters.append(0) + elif name == 'li': + if self.list_counters[-1] is None: + li_head = unichr(0x2022) + else: + self.list_counters[-1] += 1 + li_head = "%i." % self.list_counters[-1] + self.text = ' '*len(self.list_counters)*4 + li_head + ' ' + self._flush_text() + self.starting = True + elif name == 'dd': + self._jump_line() + elif name == 'dt': + if not self.starting: + self._jump_line() + elif name == 'img': + try: + ## Max image size = 10 MB (to try to prevent DoS) + mem = urllib2.urlopen(attrs['src']).read(10*1024*1024) + ## Caveat: GdkPixbuf is known not to be safe to load + ## images from network... this program is now potentially + ## hackable ;) + loader = gtk.gdk.PixbufLoader() + loader.write(mem); loader.close() + pixbuf = loader.get_pixbuf() + except Exception, ex: + gajim.log.debug(str('Error loading image'+ex)) + pixbuf = None + alt = attrs.get('alt', "Broken image") + try: + loader.close() + except: pass + if pixbuf is not None: + tags = self._get_style_tags() + if tags: + tmpmark = self.textbuf.create_mark(None, self.iter, True) + + self.textbuf.insert_pixbuf(self.iter, pixbuf) + + if tags: + start = self.textbuf.get_iter_at_mark(tmpmark) + for tag in tags: + self.textbuf.apply_tag(tag, start, self.iter) + self.textbuf.delete_mark(tmpmark) + else: + self._insert_text("[IMG: %s]" % alt) + elif name == 'body' or name == 'html': + pass + elif name == 'a': + pass + elif name in INLINE: + pass + else: + warnings.warn("Unhandled element '%s'" % name) + + def endElement(self, name): + endPreserving = False + newLine = False + if name == 'br': + newLine = True + elif name == 'hr': + #FIXME: plenty of unused attributes (width, height,...) :) + self._jump_line() + try: + self.textbuf.insert_pixbuf(self.iter, self.textview.focus_out_line_pixbuf) + #self._insert_text(u"\u2550"*40) + self._jump_line() + except Exception, e: + log.debug(str("Error in hr"+e)) + elif name in LIST_ELEMS: + self.list_counters.pop() + elif name == 'li': + newLine = True + elif name == 'img': + pass + elif name == 'body' or name == 'html': + pass + elif name == 'a': + pass + elif name in INLINE: + pass + elif name in ('dd', 'dt', ): + pass + elif name in BLOCK: + if name == 'pre': + endPreserving = True + else: + warnings.warn("Unhandled element '%s'" % name) + self._flush_text() + if endPreserving: + self.preserve = False + if newLine: + self._jump_line() + self._end_span() + #if not self._starts_line(): + # self.text = ' ' + +class HtmlTextView(gtk.TextView): + __gtype_name__ = 'HtmlTextView' + __gsignals__ = { + 'url-clicked': (gobject.SIGNAL_RUN_LAST, None, (str, str)), # href, type + } + + def __init__(self): + gobject.GObject.__init__(self) + self.set_wrap_mode(gtk.WRAP_CHAR) + self.set_editable(False) + self._changed_cursor = False + self.connect("motion-notify-event", self.__motion_notify_event) + self.connect("leave-notify-event", self.__leave_event) + self.connect("enter-notify-event", self.__motion_notify_event) + self.get_buffer().create_tag('eol', scale = pango.SCALE_XX_SMALL) + self.tooltip = tooltips.BaseTooltip() + # needed to avoid bootstrapping problems + from common import gajim + self.config = gajim.config + self.interface = gajim.interface + self.log = gajim.log + # end big hack + build_patterns(self,gajim.config,gajim.interface) + + def __leave_event(self, widget, event): + if self._changed_cursor: + window = widget.get_window(gtk.TEXT_WINDOW_TEXT) + window.set_cursor(gtk.gdk.Cursor(gtk.gdk.XTERM)) + self._changed_cursor = False + + def show_tooltip(self, tag): + if not self.tooltip.win: + # check if the current pointer is still over the line + text = getattr(tag, 'title', False) + if text: + pointer = self.get_pointer() + position = self.window.get_origin() + win = self.get_toplevel() + self.tooltip.show_tooltip(text, 8, position[1] + pointer[1]) + + def __motion_notify_event(self, widget, event): + x, y, _ = widget.window.get_pointer() + x, y = widget.window_to_buffer_coords(gtk.TEXT_WINDOW_TEXT, x, y) + tags = widget.get_iter_at_location(x, y).get_tags() + is_over_anchor = False + for tag in tags: + if getattr(tag, 'is_anchor', False): + is_over_anchor = True + break + if self.tooltip.timeout != 0: + # Check if we should hide the line tooltip + if not is_over_anchor: + self.tooltip.hide_tooltip() + if not self._changed_cursor and is_over_anchor: + window = widget.get_window(gtk.TEXT_WINDOW_TEXT) + window.set_cursor(gtk.gdk.Cursor(gtk.gdk.HAND2)) + self._changed_cursor = True + gobject.timeout_add(500, + self.show_tooltip, tag) + elif self._changed_cursor and not is_over_anchor: + window = widget.get_window(gtk.TEXT_WINDOW_TEXT) + window.set_cursor(gtk.gdk.Cursor(gtk.gdk.XTERM)) + self._changed_cursor = False + return False + + def display_html(self, html): + buffer = self.get_buffer() + eob = buffer.get_end_iter() + ## this works too if libxml2 is not available + # parser = xml.sax.make_parser(['drv_libxml2']) + # parser.setFeature(xml.sax.handler.feature_validation, True) + parser = xml.sax.make_parser() + parser.setContentHandler(HtmlHandler(self, eob)) + parser.parse(StringIO(html)) + + #if not eob.starts_line(): + # buffer.insert(eob, "\n") + +if gobject.pygtk_version < (2, 8): + gobject.type_register(HtmlTextView) + +change_cursor = None + +if __name__ == '__main__': + + htmlview = HtmlTextView() + + tooltip = tooltips.BaseTooltip() + def on_textview_motion_notify_event(widget, event): + '''change the cursor to a hand when we are over a mail or an url''' + global change_cursor + pointer_x, pointer_y, spam = htmlview.window.get_pointer() + x, y = htmlview.window_to_buffer_coords(gtk.TEXT_WINDOW_TEXT, pointer_x, + pointer_y) + tags = htmlview.get_iter_at_location(x, y).get_tags() + if change_cursor: + htmlview.get_window(gtk.TEXT_WINDOW_TEXT).set_cursor( + gtk.gdk.Cursor(gtk.gdk.XTERM)) + change_cursor = None + tag_table = htmlview.get_buffer().get_tag_table() + over_line = False + for tag in tags: + try: + if tag.is_anchor: + htmlview.get_window(gtk.TEXT_WINDOW_TEXT).set_cursor( + gtk.gdk.Cursor(gtk.gdk.HAND2)) + change_cursor = tag + elif tag == tag_table.lookup('focus-out-line'): + over_line = True + except: pass + + #if line_tooltip.timeout != 0: + # Check if we should hide the line tooltip + # if not over_line: + # line_tooltip.hide_tooltip() + #if over_line and not line_tooltip.win: + # line_tooltip.timeout = gobject.timeout_add(500, + # show_line_tooltip) + # htmlview.get_window(gtk.TEXT_WINDOW_TEXT).set_cursor( + # gtk.gdk.Cursor(gtk.gdk.LEFT_PTR)) + # change_cursor = tag + + htmlview.connect('motion_notify_event', on_textview_motion_notify_event) + + def handler(texttag, widget, event, iter, kind, href): + if event.type == gtk.gdk.BUTTON_PRESS: + print href + + htmlview.html_hyperlink_handler = handler + + htmlview.display_html('

Hello
\n' + '
\n' + ' World\n' + '
\n') + htmlview.display_html("
") + htmlview.display_html(""" +

+ OMG, + I'm green + with envy! +

+ """) + htmlview.display_html("
") + htmlview.display_html(""" + +

As Emerson said in his essay Self-Reliance:

+

+ "A foolish consistency is the hobgoblin of little minds." +

+ + """) + htmlview.display_html("
") + htmlview.display_html(""" + +

Hey, are you licensed to Jabber?

+

A License to Jabber

+ + """) + htmlview.display_html("
") + htmlview.display_html(""" + +
    +
  • One
  • +
  • Two
  • +
  • Three
  • +

def fac(n):
+  def faciter(n,acc): 
+	if n==0: return acc
+	return faciter(n-1, acc*n)
+  if n<0: raise ValueError("Must be non-negative")
+  return faciter(n,1)
+ + """) + htmlview.display_html("
") + htmlview.display_html(""" + +
    +
  1. One
  2. +
  3. Two is nested:
      +
    • One
    • +
    • Two
    • +
    • Three
    • +
  4. +
  5. Three
+ + """) + htmlview.show() + sw = gtk.ScrolledWindow() + sw.set_property("hscrollbar-policy", gtk.POLICY_AUTOMATIC) + sw.set_property("vscrollbar-policy", gtk.POLICY_AUTOMATIC) + sw.set_property("border-width", 0) + sw.add(htmlview) + sw.show() + frame = gtk.Frame() + frame.set_shadow_type(gtk.SHADOW_IN) + frame.show() + frame.add(sw) + w = gtk.Window() + w.add(frame) + w.set_default_size(400, 300) + w.show_all() + w.connect("destroy", lambda w: gtk.main_quit()) + gtk.main() diff --git a/src/message_textview.py b/src/message_textview.py index cdf21ab54..de5e61c5f 100644 --- a/src/message_textview.py +++ b/src/message_textview.py @@ -8,7 +8,7 @@ ## Vincent Hanquez ## Copyright (C) 2005 Yann Le Boulanger ## Vincent Hanquez -## Nikos Kouremenos +## Nikos Kouremenos ## Dimitur Kirov ## Travis Shirk ## Norman Rasmussen diff --git a/src/message_window.py b/src/message_window.py index 42be57e1c..73faa6112 100644 --- a/src/message_window.py +++ b/src/message_window.py @@ -4,7 +4,7 @@ ## Vincent Hanquez ## Copyright (C) 2005 Yann Le Boulanger ## Vincent Hanquez -## Nikos Kouremenos +## Nikos Kouremenos ## Dimitur Kirov ## Travis Shirk ## Norman Rasmussen @@ -279,10 +279,11 @@ class MessageWindow: ctrl_page = self.notebook.page_num(ctrl.widget) self.notebook.set_current_page(ctrl_page) - def remove_tab(self, ctrl, reason = None): - '''reason is only for gc (offline status message)''' + def remove_tab(self, ctrl, reason = None, force = False): + '''reason is only for gc (offline status message) + if force is True, do not ask any confirmation''' # Shutdown the MessageControl - if not ctrl.allow_shutdown(): + if not force and not ctrl.allow_shutdown(): return if reason is not None: # We are leaving gc with a status message ctrl.shutdown(reason) diff --git a/src/music_track_listener.py b/src/music_track_listener.py index ca4550749..9cffd7a55 100644 --- a/src/music_track_listener.py +++ b/src/music_track_listener.py @@ -15,8 +15,10 @@ ## import gobject if __name__ == '__main__': + # install _() func before importing dbus_support from common import i18n -import dbus_support + +from common import dbus_support if dbus_support.supported: import dbus import dbus.glib diff --git a/src/notify.py b/src/notify.py index 79fd847a9..b50aed37c 100644 --- a/src/notify.py +++ b/src/notify.py @@ -4,7 +4,7 @@ ## Copyright (C) 2005-2006 Nikos Kouremenos ## Copyright (C) 2005-2006 Andrew Sayman ## -## DBUS/libnotify connection code: +## Notification daemon connection via D-Bus code: ## Copyright (C) 2005 by Sebastian Estienne ## ## This program is free software; you can redistribute it and/or modify @@ -25,12 +25,20 @@ import gtkgui_helpers from common import gajim from common import helpers -import dbus_support +from common import dbus_support if dbus_support.supported: import dbus import dbus.glib import dbus.service + +USER_HAS_PYNOTIFY = True # user has pynotify module +try: + import pynotify + pynotify.init('Gajim Notification') +except ImportError: + USER_HAS_PYNOTIFY = False + def get_show_in_roster(event, account, contact): '''Return True if this event must be shown in roster, else False''' num = get_advanced_notification(event, account, contact) @@ -56,7 +64,8 @@ def get_show_in_systray(event, account, contact): return True def get_advanced_notification(event, account, contact): - '''Returns the number of the first advanced notification or None''' + '''Returns the number of the first (top most) + advanced notification else None''' num = 0 notif = gajim.config.get_per('notifications', str(num)) while notif: @@ -103,17 +112,19 @@ def get_advanced_notification(event, account, contact): notif = gajim.config.get_per('notifications', str(num)) def notify(event, jid, account, parameters, advanced_notif_num = None): - '''Check what type of notifications we want, depending on basic configuration - of notifications and advanced one and do these notifications''' + '''Check what type of notifications we want, depending on basic + and the advanced configuration of notifications and do these notifications; + advanced_notif_num holds the number of the first (top most) advanced + notification''' # First, find what notifications we want do_popup = False do_sound = False do_cmd = False - if (event == 'status_change'): + if event == 'status_change': new_show = parameters[0] status_message = parameters[1] - # Default : No popup for status change - elif (event == 'contact_connected'): + # Default: No popup for status change + elif event == 'contact_connected': status_message = parameters j = gajim.get_jid_without_resource(jid) server = gajim.get_server_from_jid(j) @@ -129,43 +140,44 @@ def notify(event, jid, account, parameters, advanced_notif_num = None): 'enabled') and not gajim.block_signed_in_notifications[account] and \ not block_transport: do_sound = True - elif (event == 'contact_disconnected'): + elif event == 'contact_disconnected': status_message = parameters if helpers.allow_showing_notification(account, 'notify_on_signout'): do_popup = True if gajim.config.get_per('soundevents', 'contact_disconnected', 'enabled'): do_sound = True - elif (event == 'new_message'): + elif event == 'new_message': message_type = parameters[0] - first = parameters[1] + is_first_message = parameters[1] nickname = parameters[2] message = parameters[3] if helpers.allow_showing_notification(account, 'notify_on_new_message', - advanced_notif_num, first): + advanced_notif_num, is_first_message): do_popup = True - if first and helpers.allow_sound_notification('first_message_received', - advanced_notif_num): + if is_first_message and helpers.allow_sound_notification( + 'first_message_received', advanced_notif_num): do_sound = True - elif not first and helpers.allow_sound_notification( + elif not is_first_message and helpers.allow_sound_notification( 'next_message_received', advanced_notif_num): do_sound = True else: print '*Event not implemeted yet*' - if advanced_notif_num != None and gajim.config.get_per('notifications', + if advanced_notif_num is not None and gajim.config.get_per('notifications', str(advanced_notif_num), 'run_command'): do_cmd = True # Do the wanted notifications - if (do_popup): - if (event == 'contact_connected' or event == 'contact_disconnected' or \ - event == 'status_change'): # Common code for popup for these 3 events - if (event == 'contact_disconnected'): + if do_popup: + if event in ('contact_connected', 'contact_disconnected', + 'status_change'): # Common code for popup for these three events + if event == 'contact_disconnected': show_image = 'offline.png' suffix = '_notif_size_bw.png' else: #Status Change or Connected - # TODO : for status change, we don't always 'online.png', but we + # FIXME: for status change, + # we don't always 'online.png', but we # first need 48x48 for all status show_image = 'online.png' suffix = '_notif_size_colored.png' @@ -180,7 +192,7 @@ def notify(event, jid, account, parameters, advanced_notif_num = None): iconset, '48x48', show_image) path = gtkgui_helpers.get_path_to_generic_or_avatar(img, jid = jid, suffix = suffix) - if (event == 'status_change'): + if event == 'status_change': title = _('%(nick)s Changed Status') % \ {'nick': gajim.get_name_from_jid(account, jid)} text = _('%(nick)s is now %(status)s') % \ @@ -190,7 +202,7 @@ def notify(event, jid, account, parameters, advanced_notif_num = None): text = text + " : " + status_message popup(_('Contact Changed Status'), jid, account, path_to_image = path, title = title, text = text) - elif (event == 'contact_connected'): + elif event == 'contact_connected': title = _('%(nickname)s Signed In') % \ {'nickname': gajim.get_name_from_jid(account, jid)} text = '' @@ -198,7 +210,7 @@ def notify(event, jid, account, parameters, advanced_notif_num = None): text = status_message popup(_('Contact Signed In'), jid, account, path_to_image = path, title = title, text = text) - elif (event == 'contact_disconnected'): + elif event == 'contact_disconnected': title = _('%(nickname)s Signed Out') % \ {'nickname': gajim.get_name_from_jid(account, jid)} text = '' @@ -206,7 +218,7 @@ def notify(event, jid, account, parameters, advanced_notif_num = None): text = status_message popup(_('Contact Signed Out'), jid, account, path_to_image = path, title = title, text = text) - elif (event == 'new_message'): + elif event == 'new_message': if message_type == 'normal': # single message event_type = _('New Single Message') img = os.path.join(gajim.DATA_DIR, 'pixmaps', 'events', @@ -233,18 +245,18 @@ def notify(event, jid, account, parameters, advanced_notif_num = None): popup(event_type, jid, account, message_type, path_to_image = path, title = title, text = text) - if (do_sound): + if do_sound: snd_file = None snd_event = None # If not snd_file, play the event - if (event == 'new_message'): - if advanced_notif_num != None and gajim.config.get_per('notifications', - str(advanced_notif_num), 'sound') == 'yes': + if event == 'new_message': + if advanced_notif_num is not None and gajim.config.get_per( + 'notifications', str(advanced_notif_num), 'sound') == 'yes': snd_file = gajim.config.get_per('notifications', str(advanced_notif_num), 'sound_file') - elif advanced_notif_num != None and gajim.config.get_per( + elif advanced_notif_num is not None and gajim.config.get_per( 'notifications', str(advanced_notif_num), 'sound') == 'no': pass # do not set snd_event - elif first: + elif is_first_message: snd_event = 'first_message_received' else: snd_event = 'next_message_received' @@ -270,20 +282,61 @@ def popup(event_type, jid, account, msg_type = '', path_to_image = None, the older style PopupNotificationWindow method.''' text = gtkgui_helpers.escape_for_pango_markup(text) title = gtkgui_helpers.escape_for_pango_markup(title) + if gajim.config.get('use_notif_daemon') and dbus_support.supported: try: - DesktopNotification(event_type, jid, account, msg_type, path_to_image, - title, text) - return + DesktopNotification(event_type, jid, account, msg_type, + path_to_image, title, text) + return # sucessfully did D-Bus Notification procedure! except dbus.dbus_bindings.DBusException, e: - # Connection to D-Bus failed, try popup + # Connection to D-Bus failed gajim.log.debug(str(e)) except TypeError, e: # This means that we sent the message incorrectly gajim.log.debug(str(e)) - instance = dialogs.PopupNotificationWindow(event_type, jid, account, msg_type, \ - path_to_image, title, text) - gajim.interface.roster.popup_notification_windows.append(instance) + # we failed to speak to notification daemon via D-Bus + if USER_HAS_PYNOTIFY: # try via libnotify + if not text: + text = gajim.get_name_from_jid(account, jid) # default value of text + if not title: + title = event_type + # default image + if not path_to_image: + path_to_image = os.path.abspath( + os.path.join(gajim.DATA_DIR, 'pixmaps', 'events', + 'chat_msg_recv.png')) # img to display + + + notification = pynotify.Notification(title, text) + timeout = gajim.config.get('notification_timeout') * 1000 # make it ms + notification.set_timeout(timeout) + + notification.set_category(event_type) + notification.set_data('event_type', event_type) + notification.set_data('jid', jid) + notification.set_data('account', account) + notification.set_data('msg_type', event_type) + notification.set_data('path_to_image', path_to_image) + notification.add_action('default', 'Default Action', + on_pynotify_notification_clicked) + + notification.show() + + else: # go old style + instance = dialogs.PopupNotificationWindow(event_type, jid, + account, msg_type, path_to_image, title, text) + gajim.interface.roster.popup_notification_windows.append( + instance) + +def on_pynotify_notification_clicked(notification, action): + event_type = notification.get_data('event_type') + jid = notification.get_data('jid') + account = notification.get_data('account') + msg_type = notification.get_data('msg_type') + path_to_image = notification.get_data('path_to_image') + + notification.close() + gajim.interface.handle_event(account, jid, msg_type) class NotificationResponseManager: '''Collects references to pending DesktopNotifications and manages there @@ -336,7 +389,7 @@ class NotificationResponseManager: notification_response_manager = NotificationResponseManager() class DesktopNotification: - '''A DesktopNotification that interfaces with DBus via the Desktop + '''A DesktopNotification that interfaces with D-Bus via the Desktop Notification specification''' def __init__(self, event_type, jid, account, msg_type = '', path_to_image = None, title = None, text = None): diff --git a/src/profile_window.py b/src/profile_window.py index badcbb310..72ce0f98d 100644 --- a/src/profile_window.py +++ b/src/profile_window.py @@ -13,6 +13,8 @@ ## GNU General Public License for more details. ## +# THIS FILE IS FOR **OUR** PROFILE (when we edit our INFO) + import gtk import gobject import base64 diff --git a/src/remote_control.py b/src/remote_control.py index 0ce901e24..7423e5aff 100644 --- a/src/remote_control.py +++ b/src/remote_control.py @@ -23,7 +23,7 @@ from common import helpers from time import time from dialogs import AddNewContactWindow, NewChatDialog -import dbus_support +from common import dbus_support if dbus_support.supported: import dbus if dbus_support: @@ -228,7 +228,7 @@ class SignalObject(dbus.service.Object): message to 'jid', using account(optional) 'account' ''' jid, account = self._get_real_arguments(args, 2) if not jid: - # FIXME: raise exception for missing argument (dbus0.35+) + raise MissingArgument return None jid = self._get_real_jid(jid, account) @@ -277,7 +277,7 @@ class SignalObject(dbus.service.Object): status, message, account = self._get_real_arguments(args, 3) if status not in ('offline', 'online', 'chat', 'away', 'xa', 'dnd', 'invisible'): - # FIXME: raise exception for bad status (dbus0.35) + raise InvalidArgument return None if account: gobject.idle_add(gajim.interface.roster.send_status, account, @@ -305,7 +305,7 @@ class SignalObject(dbus.service.Object): if not isinstance(jid, unicode): jid = unicode(jid) if not jid: - # FIXME: raise exception for missing argument (0.3+) + raise MissingArgument return None jid = self._get_real_jid(jid, account) @@ -341,8 +341,7 @@ class SignalObject(dbus.service.Object): result['name'] = DBUS_STRING(account.name) result['jid'] = DBUS_STRING(gajim.get_jid_from_account(account.name)) result['message'] = DBUS_STRING(account.status) - result['priority'] = DBUS_STRING(unicode(gajim.config.get_per('accounts', - account.name, 'priority'))) + result['priority'] = DBUS_STRING(unicode(account.priority)) result['resource'] = DBUS_STRING(unicode(gajim.config.get_per('accounts', account.name, 'resource'))) return result diff --git a/src/roster_window.py b/src/roster_window.py index 14a1c9ff4..380e20c49 100644 --- a/src/roster_window.py +++ b/src/roster_window.py @@ -40,7 +40,7 @@ from chat_control import ChatControl from groupchat_control import GroupchatControl from groupchat_control import PrivateChatControl -import dbus_support +from common import dbus_support if dbus_support.supported: from music_track_listener import MusicTrackListener @@ -56,7 +56,7 @@ C_SECPIXBUF, # secondary_pixbuf (holds avatar or padlock) ) = range(7) class RosterWindow: - '''Class for main window of gtkgui interface''' + '''Class for main window of the GTK+ interface''' def get_account_iter(self, name): model = self.tree.get_model() @@ -145,8 +145,7 @@ class RosterWindow: show = gajim.SHOW_LIST[gajim.connections[account].connected] tls_pixbuf = None - if gajim.con_types.has_key(account) and \ - gajim.con_types[account] in ('tls', 'ssl'): + if gajim.account_is_securely_connected(account): tls_pixbuf = self.window.render_icon(gtk.STOCK_DIALOG_AUTHENTICATION, gtk.ICON_SIZE_MENU) # the only way to create a pixbuf from stock @@ -164,11 +163,7 @@ class RosterWindow: else: accounts = [account] num_of_accounts = len(accounts) - num_of_secured = 0 - for acct in accounts: - if gajim.con_types.has_key(acct) and \ - gajim.con_types[acct] in ('tls', 'ssl'): - num_of_secured += 1 + num_of_secured = gajim.get_number_of_securely_connected_accounts() if num_of_secured: tls_pixbuf = self.window.render_icon(gtk.STOCK_DIALOG_AUTHENTICATION, gtk.ICON_SIZE_MENU) # the only way to create a pixbuf from stock @@ -208,7 +203,7 @@ class RosterWindow: def add_contact_to_roster(self, jid, account): '''Add a contact to the roster and add groups if they aren't in roster - force is about force to add it, even if it is offline and show offline + force is about force to add it, even if it is offline and show offline is False, because it has online children, so we need to show it. If add_children is True, we also add all children, even if they were not already drawn''' @@ -224,7 +219,11 @@ class RosterWindow: self.add_self_contact(account) return if gajim.jid_is_transport(contact.jid): + # if jid is transport, check if we wanna show it in roster + if not gajim.config.get('show_transports_group'): + return contact.groups = [_('Transports')] + # JEP-0162 hide = True @@ -308,25 +307,25 @@ class RosterWindow: groups = [_('Observers')] elif not groups: groups = [_('General')] - for g in groups: - iterG = self.get_group_iter(g, account) + for group in groups: + iterG = self.get_group_iter(group, account) if not iterG: IterAcct = self.get_account_iter(account) iterG = model.append(IterAcct, [ self.jabber_state_images['16']['closed'], - gtkgui_helpers.escape_for_pango_markup(g), 'group', g, account, - False, None]) - if not gajim.groups[account].has_key(g): # It can probably never append - if account + g in self.collapsed_rows: + gtkgui_helpers.escape_for_pango_markup(group), 'group', + group, account, False, None]) + if group not in gajim.groups[account]: # It can probably never append + if account + group in self.collapsed_rows: ishidden = False else: ishidden = True - gajim.groups[account][g] = { 'expand': ishidden } + gajim.groups[account][group] = {'expand': ishidden} if not account in self.collapsed_rows: self.tree.expand_row((model.get_path(iterG)[0]), False) typestr = 'contact' - if g == _('Transports'): + if group == _('Transports'): typestr = 'agent' name = contact.get_shown_name() @@ -334,7 +333,7 @@ class RosterWindow: model.append(iterG, (None, name, typestr, contact.jid, account, False, None)) - if gajim.groups[account][g]['expand']: + if gajim.groups[account][group]['expand']: self.tree.expand_row(model.get_path(iterG), False) self.draw_contact(jid, account) self.draw_avatar(jid, account) @@ -389,8 +388,8 @@ class RosterWindow: return if contact.jid in gajim.newly_added[account]: return - if contact.jid.find('@') < 1 and gajim.connections[account].connected > 1: - # It's an agent + if gajim.jid_is_transport(contact.jid) and gajim.account_is_connected( + account): # It's an agent return if contact.jid in gajim.to_be_removed[account]: gajim.to_be_removed[account].remove(contact.jid) @@ -406,7 +405,7 @@ class RosterWindow: showOffline = gajim.config.get('showoffline') if (contact.show in ('offline', 'error') or hide) and \ not showOffline and (not _('Transports') in contact.groups or \ - gajim.connections[account].connected < 2) and \ + gajim.account_is_disconnected(account)) and \ len(gajim.events.get_events(account, contact.jid, ['chat'])) == 0: self.remove_contact(contact, account) else: @@ -460,7 +459,7 @@ class RosterWindow: def get_appropriate_state_images(self, jid, size = '16', icon_name = 'online'): '''check jid and return the appropriate state images dict for - the demanded size. icon_name is taken into account when jis is from + the demanded size. icon_name is taken into account when jid is from transport: transport iconset doesn't contain all icons, so we fall back to jabber one''' transport = gajim.get_transport_name_from_jid(jid) @@ -491,11 +490,16 @@ class RosterWindow: if self.regroup: add_acct = False # look through all contacts of all accounts - for a in gajim.connections: - for j in gajim.contacts.get_jid_list(a): + for account_iter in gajim.connections: + if account_iter == account: # useless to add accout name + continue + for jid_iter in gajim.contacts.get_jid_list(account_iter): # [0] cause it'fster than highest_prio - c = gajim.contacts.get_first_contact_from_jid(a, j) - if c.name == contact.name and (j, a) != (jid, account): + contact_iter = gajim.contacts.\ + get_first_contact_from_jid(account_iter, jid_iter) + if contact_iter.get_shown_name() == \ + contact.get_shown_name() and\ + (jid_iter, account_iter) != (jid, account): add_acct = True break if add_acct: @@ -719,11 +723,9 @@ class RosterWindow: return new_chat_menuitem = self.xml.get_widget('new_chat_menuitem') join_gc_menuitem = self.xml.get_widget('join_gc_menuitem') - iconset = gajim.config.get('iconset') - path = os.path.join(gajim.DATA_DIR, 'iconsets', iconset, '16x16') - state_images = self.load_iconset(path) - if state_images.has_key('muc_active'): - join_gc_menuitem.set_image(state_images['muc_active']) + muc_icon = self.load_icon('muc_active') + if muc_icon: + join_gc_menuitem.set_image(muc_icon) add_new_contact_menuitem = self.xml.get_widget('add_new_contact_menuitem') service_disco_menuitem = self.xml.get_widget('service_disco_menuitem') advanced_menuitem = self.xml.get_widget('advanced_menuitem') @@ -829,7 +831,7 @@ class RosterWindow: elif connected_accounts == 1: # user has only one account for account in gajim.connections: - if gajim.connections[account].connected > 1: # THE connected account + if gajim.account_is_connected(account): # THE connected account # gc self.add_bookmarks_list(gc_sub_menu, account) # add @@ -872,7 +874,7 @@ class RosterWindow: connected_accounts_with_vcard = [] for account in gajim.connections: - if gajim.connections[account].connected > 1 and \ + if gajim.account_is_connected(account) and \ gajim.connections[account].vcard_supported: connected_accounts_with_vcard.append(account) if len(connected_accounts_with_vcard) > 1: @@ -900,11 +902,12 @@ class RosterWindow: else: profile_avatar_menuitem.set_sensitive(True) - newitem = gtk.ImageMenuItem(_('Manage Bookmarks...')) + newitem = gtk.ImageMenuItem(_('_Manage Bookmarks...')) img = gtk.image_new_from_stock(gtk.STOCK_PREFERENCES, gtk.ICON_SIZE_MENU) newitem.set_image(img) - newitem.connect('activate', self.on_manage_bookmarks_menuitem_activate) + newitem.connect('activate', + self.on_manage_bookmarks_menuitem_activate) gc_sub_menu.append(newitem) gc_sub_menu.show_all() @@ -923,7 +926,11 @@ class RosterWindow: advanced_menuitem_menu.show_all() else: # user has *more* than one account : build advanced submenus advanced_sub_menu = gtk.Menu() + accounts = [] # Put accounts in a list to sort them for account in gajim.connections: + accounts.append(account) + accounts.sort() + for account in accounts: advanced_item = gtk.MenuItem(_('for account %s') % account, False) advanced_sub_menu.append(advanced_item) advanced_menuitem_menu = self.get_and_connect_advanced_menuitem_menu( @@ -1187,8 +1194,7 @@ class RosterWindow: status = connection.status, resource = gajim.config.get_per('accounts', connection.name, 'resource'), - priority = gajim.config.get_per('accounts', connection.name, - 'priority'), + priority = connection.priority, keyID = gajim.config.get_per('accounts', connection.name, 'keyid')) contacts.append(contact) @@ -1510,11 +1516,9 @@ class RosterWindow: img.set_from_file(path_to_kbd_input_img) rename_menuitem.set_image(img) - iconset = gajim.config.get('iconset') - path = os.path.join(gajim.DATA_DIR, 'iconsets', iconset, '16x16') - state_images = self.load_iconset(path) - if state_images.has_key('muc_active'): - invite_menuitem.set_image(state_images['muc_active']) + muc_icon = self.load_icon('muc_active') + if muc_icon: + invite_menuitem.set_image(muc_icon) above_subscription_separator = xml.get_widget( 'above_subscription_separator') @@ -1824,7 +1828,6 @@ class RosterWindow: jid = model[iter][C_JID].decode('utf-8') path = model.get_path(iter) account = model[iter][C_ACCOUNT].decode('utf-8') - is_connected = gajim.connections[account].connected > 1 contact = gajim.contacts.get_contact_with_highest_priority(account, jid) menu = gtk.Menu() @@ -1833,7 +1836,8 @@ class RosterWindow: item.set_image(icon) menu.append(item) show = contact.show - if (show != 'offline' and show != 'error') or not is_connected: + if (show != 'offline' and show != 'error') or\ + gajim.account_is_disconnected(account): item.set_sensitive(False) item.connect('activate', self.on_agent_logging, jid, None, account) @@ -1841,7 +1845,8 @@ class RosterWindow: icon = gtk.image_new_from_stock(gtk.STOCK_NO, gtk.ICON_SIZE_MENU) item.set_image(icon) menu.append(item) - if show in ('offline', 'error') or not is_connected: + if show in ('offline', 'error') or gajim.account_is_disconnected( + account): item.set_sensitive(False) item.connect('activate', self.on_agent_logging, jid, 'unavailable', account) @@ -1854,7 +1859,7 @@ class RosterWindow: item.set_image(icon) menu.append(item) item.connect('activate', self.on_edit_agent, contact, account) - if not is_connected: + if gajim.account_is_disconnected(account): item.set_sensitive(False) item = gtk.ImageMenuItem(_('_Rename')) @@ -1866,7 +1871,7 @@ class RosterWindow: item.set_image(img) menu.append(item) item.connect('activate', self.on_rename, iter, path) - if not is_connected: + if gajim.account_is_disconnected(account): item.set_sensitive(False) item = gtk.ImageMenuItem(_('_Remove from Roster')) @@ -1874,7 +1879,7 @@ class RosterWindow: item.set_image(icon) menu.append(item) item.connect('activate', self.on_remove_agent, [(contact, account)]) - if not is_connected: + if gajim.account_is_disconnected(account): item.set_sensitive(False) event_button = gtkgui_helpers.get_possible_button_event(event) @@ -1901,12 +1906,8 @@ class RosterWindow: config.ZeroconfPropertiesWindow() def on_open_gmail_inbox(self, widget, account): - if gajim.config.get_per('accounts', account, 'savepass'): - url = ('http://www.google.com/accounts/ServiceLoginAuth?service=mail&Email=%s&Passwd=%s&continue=https://mail.google.com/mail') %\ - (urllib.quote(gajim.config.get_per('accounts', account, 'name')), - urllib.quote(gajim.config.get_per('accounts', account, 'password'))) - else: - url = ('http://mail.google.com/') + url = 'http://mail.google.com/mail?account_id=%s' % urllib.quote( + gajim.config.get_per('accounts', account, 'name')) helpers.launch_browser_mailer('url', url) def on_change_status_message_activate(self, widget, account): @@ -2253,7 +2254,7 @@ _('If "%s" accepts this request you will know his or her status.') % jid) return True for acct in gajim.connections: if not gajim.config.get_per('accounts', acct, - 'sync_with_global_status'): + 'sync_with_global_status'): continue current_show = gajim.SHOW_LIST[gajim.connections[acct].connected] self.send_status(acct, current_show, message) @@ -2440,7 +2441,7 @@ _('If "%s" accepts this request you will know his or her status.') % jid) if gc_control.account == account: gajim.connections[account].send_gc_status(gc_control.nick, gc_control.room_jid, status, txt) - if gajim.connections[account].connected > 1: + if gajim.account_is_connected(account): if status == 'online' and gajim.interface.sleeper.getState() != \ common.sleepy.STATE_UNKNOWN: gajim.sleeper_state[account] = 'online' @@ -2507,14 +2508,16 @@ _('If "%s" accepts this request you will know his or her status.') % jid) dlg = dialogs.ChangeStatusMessageDialog(status) message = dlg.run() if message is not None: # None if user pressed Cancel - for acct in accounts: - if not gajim.config.get_per('accounts', acct, + for account in accounts: + if not gajim.config.get_per('accounts', account, 'sync_with_global_status'): continue - current_show = gajim.SHOW_LIST[gajim.connections[acct].connected] - self.send_status(acct, current_show, message) + current_show = gajim.SHOW_LIST[ + gajim.connections[account].connected] + self.send_status(account, current_show, message) self.combobox_callback_active = False - self.status_combobox.set_active(self.previous_status_combobox_active) + self.status_combobox.set_active( + self.previous_status_combobox_active) self.combobox_callback_active = True return # we are about to change show, so save this new show so in case @@ -2524,13 +2527,13 @@ _('If "%s" accepts this request you will know his or her status.') % jid) connected_accounts = gajim.get_number_of_connected_accounts() if status == 'invisible': bug_user = False - for acct in accounts: - if connected_accounts < 1 or gajim.connections[acct].connected > 1: - if not gajim.config.get_per('accounts', acct, + for account in accounts: + if connected_accounts < 1 or gajim.account_is_connected(account): + if not gajim.config.get_per('accounts', account, 'sync_with_global_status'): continue # We're going to change our status to invisible - if self.connected_rooms(acct): + if self.connected_rooms(account): bug_user = True break if bug_user: @@ -2550,15 +2553,16 @@ _('If "%s" accepts this request you will know his or her status.') % jid) global_sync_accounts.append(acct) global_sync_connected_accounts = gajim.get_number_of_connected_accounts( global_sync_accounts) - for acct in accounts: - if not gajim.config.get_per('accounts', acct, 'sync_with_global_status'): + for account in accounts: + if not gajim.config.get_per('accounts', account, + 'sync_with_global_status'): continue # we are connected (so we wanna change show and status) # or no account is connected and we want to connect with new show and status if not global_sync_connected_accounts > 0 or \ - gajim.connections[acct].connected > 1: - self.send_status(acct, status, message) + gajim.account_is_connected(account): + self.send_status(account, status, message) self.update_status_combobox() ## enable setting status msg from currently playing music track @@ -2591,14 +2595,14 @@ _('If "%s" accepts this request you will know his or her status.') % jid) status_message = _('♪ "%(title)s" by %(artist)s ♪') % \ {'title': music_track_info.title, 'artist': music_track_info.artist } - for acct in accounts: - if not gajim.config.get_per('accounts', acct, + for account in accounts: + if not gajim.config.get_per('accounts', account, 'sync_with_global_status'): continue - if not gajim.connections[acct].connected: + if not gajim.connections[account].connected: continue - current_show = gajim.SHOW_LIST[gajim.connections[acct].connected] - self.send_status(acct, current_show, status_message) + current_show = gajim.SHOW_LIST[gajim.connections[account].connected] + self.send_status(account, current_show, status_message) def update_status_combobox(self): @@ -2706,7 +2710,7 @@ _('If "%s" accepts this request you will know his or her status.') % jid) def on_message(self, jid, msg, tim, account, encrypted = False, msg_type = '', subject = None, resource = '', msg_id = None, - user_nick = '', advanced_notif_num = None): + user_nick = '', advanced_notif_num = None, xhtml = None): '''when we receive a message''' contact = None # if chat window will be for specific resource @@ -2774,7 +2778,7 @@ _('If "%s" accepts this request you will know his or her status.') % jid) if msg_type == 'error': typ = 'status' ctrl.print_conversation(msg, typ, tim = tim, encrypted = encrypted, - subject = subject) + subject = subject, xhtml = xhtml) if msg_id: gajim.logger.set_read_messages([msg_id]) return @@ -2788,7 +2792,7 @@ _('If "%s" accepts this request you will know his or her status.') % jid) show_in_roster = notify.get_show_in_roster(event_type, account, contact) show_in_systray = notify.get_show_in_systray(event_type, account, contact) event = gajim.events.create_event(type_, (msg, subject, msg_type, tim, - encrypted, resource, msg_id), show_in_roster = show_in_roster, + encrypted, resource, msg_id, xhtml), show_in_roster = show_in_roster, show_in_systray = show_in_systray) gajim.events.add_event(account, fjid, event) if popup: @@ -2874,6 +2878,10 @@ _('If "%s" accepts this request you will know his or her status.') % jid) else: gajim.interface.instances['file_transfers'].window.show_all() + def on_show_transports_menuitem_activate(self, widget): + gajim.config.set('show_transports_group', widget.get_active()) + self.draw_roster() + def on_manage_bookmarks_menuitem_activate(self, widget): config.ManageBookmarksWindow() @@ -2888,11 +2896,13 @@ _('If "%s" accepts this request you will know his or her status.') % jid) else: w.window.destroy() - def close_all(self, account): - '''close all the windows from an account''' + def close_all(self, account, force = False): + '''close all the windows from an account + if force is True, do not ask confirmation before closing chat/gc windows + ''' self.close_all_from_dict(gajim.interface.instances[account]) for ctrl in gajim.interface.msg_win_mgr.get_controls(acct = account): - ctrl.parent_win.remove_tab(ctrl) + ctrl.parent_win.remove_tab(ctrl, force = force) def on_roster_window_delete_event(self, widget, event): '''When we want to close the window''' @@ -3060,6 +3070,11 @@ _('If "%s" accepts this request you will know his or her status.') % jid) gajim.interface.remove_first_event(account, jid, event.type_) ft.show_completed(jid, data) return True + elif event.type_ == 'gc-invitation': + dialogs.InvitationReceivedDialog(account, data[0], jid, data[2], + data[1]) + gajim.interface.remove_first_event(account, jid, event.type_) + return True return False def on_open_chat_window(self, widget, contact, account, resource = None): @@ -3276,9 +3291,8 @@ _('If "%s" accepts this request you will know his or her status.') % jid) pass def load_iconset(self, path, pixbuf2 = None, transport = False): - '''load an iconset from the given path, and add pixbuf2 on top left of - each static images''' - imgs = {} + '''load full iconset from the given path, and add + pixbuf2 on top left of each static images''' path += '/' if transport: list = ('online', 'chat', 'away', 'xa', 'dnd', 'offline', @@ -3290,15 +3304,28 @@ _('If "%s" accepts this request you will know his or her status.') % jid) if pixbuf2: list = ('connecting', 'online', 'chat', 'away', 'xa', 'dnd', 'offline', 'error', 'requested', 'message', 'not in roster') - for state in list: + return self._load_icon_list(list, path, pixbuf2) + + def load_icon(self, icon_name): + '''load an icon from the iconset in 16x16''' + iconset = gajim.config.get('iconset') + path = os.path.join(gajim.DATA_DIR, 'iconsets', iconset, '16x16'+ '/') + icon_list = self._load_icon_list([icon_name], path) + return icon_list[icon_name] + + def _load_icon_list(self, icons_list, path, pixbuf2 = None): + '''load icons in icons_list from the given path, + and add pixbuf2 on top left of each static images''' + imgs = {} + for icon in icons_list: # try to open a pixfile with the correct method - state_file = state.replace(' ', '_') + icon_file = icon.replace(' ', '_') files = [] - files.append(path + state_file + '.gif') - files.append(path + state_file + '.png') + files.append(path + icon_file + '.gif') + files.append(path + icon_file + '.png') image = gtk.Image() image.show() - imgs[state] = image + imgs[icon] = image for file in files: # loop seeking for either gif or png if os.path.exists(file): image.set_from_file(file) @@ -3704,7 +3731,7 @@ _('If "%s" accepts this request you will know his or her status.') % jid) if account_dest == 'all': # drop on account row in merged mode: we can't know which account it is return - + # if account is not connected, do nothing if gajim.connections[account_dest].connected < 2: return @@ -4040,6 +4067,10 @@ _('If "%s" accepts this request you will know his or her status.') % jid) self.xml.get_widget('show_offline_contacts_menuitem').set_active( showOffline) + show_transports_group = gajim.config.get('show_transports_group') + self.xml.get_widget('show_transports_menuitem').set_active( + show_transports_group) + # columns # this col has 3 cells: diff --git a/src/rst_xhtml_generator.py b/src/rst_xhtml_generator.py new file mode 100644 index 000000000..c44d3a9d8 --- /dev/null +++ b/src/rst_xhtml_generator.py @@ -0,0 +1,116 @@ +## rst_xhtml_generator.py +## +## Copyright (C) 2006 Yann Le Boulanger +## Copyright (C) 2006 Nikos Kouremenos +## Copyright (C) 2006 Santiago Gala +## +## This program is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published +## by the Free Software Foundation; version 2 only. +## +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. +## + +from docutils import io +from docutils.core import Publisher +from docutils.parsers.rst import roles + +def jep_reference_role(role, rawtext, text, lineno, inliner, + options={}, content=[]): + '''Role to make handy references to Jabber Enhancement Proposals (JEP). + + Use as :JEP:`71` (or jep, or jep-reference). + Modeled after the sample in docutils documentation. + ''' + from docutils import nodes,utils + from docutils.parsers.rst.roles import set_classes + + jep_base_url = 'http://www.jabber.org/jeps/' + jep_url = 'jep-%04d.html' + try: + jepnum = int(text) + if jepnum <= 0: + raise ValueError + except ValueError: + msg = inliner.reporter.error( + 'JEP number must be a number greater than or equal to 1; ' + '"%s" is invalid.' % text, line=lineno) + prb = inliner.problematic(rawtext, rawtext, msg) + return [prb], [msg] + ref = jep_base_url + jep_url % jepnum + set_classes(options) + node = nodes.reference(rawtext, 'JEP ' + utils.unescape(text), refuri=ref, + **options) + return [node], [] + +roles.register_canonical_role('jep-reference', jep_reference_role) +from docutils.parsers.rst.languages.en import roles +roles['jep-reference'] = 'jep-reference' +roles['jep'] = 'jep-reference' + +class HTMLGenerator: + '''Really simple HTMLGenerator starting from publish_parts. + + It reuses the docutils.core.Publisher class, which means it is *not* + threadsafe. + ''' + def __init__(self, + settings_spec=None, + settings_overrides=dict(report_level=5, halt_level=5), + config_section='general'): + self.pub = Publisher(reader=None, parser=None, writer=None, + settings=None, + source_class=io.StringInput, + destination_class=io.StringOutput) + self.pub.set_components(reader_name='standalone', + parser_name='restructuredtext', + writer_name='html') + #hack: JEP-0071 does not allow HTML char entities, so we hack our way out of it. + # — == u"\u2014" + # a setting to only emit charater entities in the writer would be nice + # FIXME: several   are emitted, and they are explicitly forbidden in the JEP + #   == u"\u00a0" + self.pub.writer.translator_class.attribution_formats['dash'] = (u'\u2014', '') + self.pub.process_programmatic_settings(settings_spec, + settings_overrides, + config_section) + + + def create_xhtml(self, text, + destination=None, + destination_path=None, + enable_exit_status=None): + ''' Create xhtml for a fragment of IM dialog. + We can use the source_name to store info about + the message.''' + self.pub.set_source(text, None) + self.pub.set_destination(destination, destination_path) + output = self.pub.publish(enable_exit_status=enable_exit_status) + #kludge until we can get docutils to stop generating (rare)   entities + return u'\u00a0'.join(self.pub.writer.parts['fragment'].strip().split(' ')) + +Generator = HTMLGenerator() + +def create_xhtml(text): + return Generator.create_xhtml(text) + +if __name__ == '__main__': + print Generator.create_xhtml(''' +test:: + + >>> print 1 + 1 + +*I* like it. It is for :JEP:`71` + +this `` should trigger`` should trigger the   problem. + +''') + print Generator.create_xhtml(''' +*test1 + +test2_ +''') diff --git a/src/systraywin32.py b/src/systraywin32.py index 2705897f7..d354a6517 100644 --- a/src/systraywin32.py +++ b/src/systraywin32.py @@ -13,7 +13,7 @@ ## Vincent Hanquez ## Copyright (C) 2005 Yann Le Boulanger ## Vincent Hanquez -## Nikos Kouremenos +## Nikos Kouremenos ## Dimitur Kirov ## Travis Shirk ## Norman Rasmussen diff --git a/src/vcard.py b/src/vcard.py index 77ff4fd07..0ee005e72 100644 --- a/src/vcard.py +++ b/src/vcard.py @@ -14,6 +14,8 @@ ## GNU General Public License for more details. ## +# THIS FILE IS FOR **OTHERS'** PROFILE (when we VIEW their INFO) + import gtk import gobject import base64 @@ -130,6 +132,7 @@ class VcardWindow: widget = gtk.LinkButton(value, value) else: widget = gtk.Label(value) + widget.show() table = self.xml.get_widget('personal_info_table') table.attach(widget, 1, 4, 3, 4, yoptions = 0) else: @@ -150,7 +153,7 @@ class VcardWindow: pixbuf = gtkgui_helpers.get_scaled_pixbuf(pixbuf, 'vcard') image.set_from_pixbuf(pixbuf) continue - if i == 'ADR' or i == 'TEL' or i == 'EMAIL': + if i in ('ADR', 'TEL', 'EMAIL'): for entry in vcard[i]: add_on = '_HOME' if 'WORK' in entry: @@ -316,7 +319,7 @@ class VcardWindow: self.fill_status_label() gajim.connections[self.account].request_vcard(self.contact.jid, self.is_fake) - + def on_close_button_clicked(self, widget): self.window.destroy() From 81872c518cbfc8309a766824de2535001883cfbc Mon Sep 17 00:00:00 2001 From: Dimitur Kirov Date: Wed, 4 Oct 2006 07:10:36 +0000 Subject: [PATCH 098/110] remove some file that are already in data/ dir install common files in pkgdatadir --- Makefile.am | 20 +++++++------ Makefile.in | 75 ++++++++++++++++++++++++++++++++++-------------- gajim-remote.1 | 14 --------- gajim.1 | 25 ---------------- gajim.desktop.in | 13 --------- 5 files changed, 66 insertions(+), 81 deletions(-) delete mode 100644 gajim-remote.1 delete mode 100644 gajim.1 delete mode 100644 gajim.desktop.in diff --git a/Makefile.am b/Makefile.am index 6711484ad..5bb0e4958 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,15 +1,19 @@ -SUBDIRS = po src data +SUBDIRS = data src po bin_SCRIPTS = scripts/gajim +commonfilesdir = $(pkgdatadir) +commonfiles_DATA = COPYING \ + README \ + ChangeLog \ + THANKS \ + AUTHORS + EXTRA_DIST = \ - autogen.sh \ - COPYING \ - ChangeLog \ - README \ - THANKS \ - intltool-extract.in \ + $(commonfiles_DATA) \ + autogen.sh \ + intltool-extract.in \ intltool-merge.in \ - intltool-update.in \ + intltool-update.in \ scripts/gajim.in DISTCLEANFILES = \ diff --git a/Makefile.in b/Makefile.in index baf089383..77602aa52 100644 --- a/Makefile.in +++ b/Makefile.in @@ -14,6 +14,7 @@ @SET_MAKE@ + srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ @@ -52,7 +53,7 @@ am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = scripts/gajim -am__installdirs = "$(DESTDIR)$(bindir)" +am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(commonfilesdir)" binSCRIPT_INSTALL = $(INSTALL_SCRIPT) SCRIPTS = $(bin_SCRIPTS) SOURCES = @@ -63,6 +64,14 @@ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ install-recursive installcheck-recursive installdirs-recursive \ pdf-recursive ps-recursive uninstall-info-recursive \ uninstall-recursive +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +commonfilesDATA_INSTALL = $(INSTALL_DATA) +DATA = $(commonfiles_DATA) ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) @@ -245,17 +254,21 @@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ -SUBDIRS = po src data +SUBDIRS = data src po bin_SCRIPTS = scripts/gajim +commonfilesdir = $(pkgdatadir) +commonfiles_DATA = COPYING \ + README \ + ChangeLog \ + THANKS \ + AUTHORS + EXTRA_DIST = \ - autogen.sh \ - COPYING \ - ChangeLog \ - README \ - THANKS \ - intltool-extract.in \ + $(commonfiles_DATA) \ + autogen.sh \ + intltool-extract.in \ intltool-merge.in \ - intltool-update.in \ + intltool-update.in \ scripts/gajim.in DISTCLEANFILES = \ @@ -349,6 +362,23 @@ clean-libtool: distclean-libtool: -rm -f libtool uninstall-info-am: +install-commonfilesDATA: $(commonfiles_DATA) + @$(NORMAL_INSTALL) + test -z "$(commonfilesdir)" || $(mkdir_p) "$(DESTDIR)$(commonfilesdir)" + @list='$(commonfiles_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(commonfilesDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(commonfilesdir)/$$f'"; \ + $(commonfilesDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(commonfilesdir)/$$f"; \ + done + +uninstall-commonfilesDATA: + @$(NORMAL_UNINSTALL) + @list='$(commonfiles_DATA)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(commonfilesdir)/$$f'"; \ + rm -f "$(DESTDIR)$(commonfilesdir)/$$f"; \ + done # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. @@ -626,10 +656,10 @@ distcleancheck: distclean exit 1; } >&2 check-am: all-am check: check-recursive -all-am: Makefile $(SCRIPTS) config.h +all-am: Makefile $(SCRIPTS) $(DATA) config.h installdirs: installdirs-recursive installdirs-am: - for dir in "$(DESTDIR)$(bindir)"; do \ + for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(commonfilesdir)"; do \ test -z "$$dir" || $(mkdir_p) "$$dir"; \ done install: install-recursive @@ -677,7 +707,7 @@ info: info-recursive info-am: -install-data-am: +install-data-am: install-commonfilesDATA install-exec-am: install-binSCRIPTS @@ -705,7 +735,8 @@ ps: ps-recursive ps-am: -uninstall-am: uninstall-binSCRIPTS uninstall-info-am +uninstall-am: uninstall-binSCRIPTS uninstall-commonfilesDATA \ + uninstall-info-am uninstall-info: uninstall-info-recursive @@ -716,14 +747,16 @@ uninstall-info: uninstall-info-recursive distclean-generic distclean-hdr distclean-libtool \ distclean-recursive distclean-tags distcleancheck distdir \ distuninstallcheck dvi dvi-am html html-am info info-am \ - install install-am install-binSCRIPTS install-data \ - install-data-am install-exec install-exec-am install-info \ - install-info-am install-man install-strip installcheck \ - installcheck-am installdirs installdirs-am maintainer-clean \ - maintainer-clean-generic maintainer-clean-recursive \ - mostlyclean mostlyclean-generic mostlyclean-libtool \ - mostlyclean-recursive pdf pdf-am ps ps-am tags tags-recursive \ - uninstall uninstall-am uninstall-binSCRIPTS uninstall-info-am + install install-am install-binSCRIPTS install-commonfilesDATA \ + install-data install-data-am install-exec install-exec-am \ + install-info install-info-am install-man install-strip \ + installcheck installcheck-am installdirs installdirs-am \ + maintainer-clean maintainer-clean-generic \ + maintainer-clean-recursive mostlyclean mostlyclean-generic \ + mostlyclean-libtool mostlyclean-recursive pdf pdf-am ps ps-am \ + tags tags-recursive uninstall uninstall-am \ + uninstall-binSCRIPTS uninstall-commonfilesDATA \ + uninstall-info-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. diff --git a/gajim-remote.1 b/gajim-remote.1 deleted file mode 100644 index 8b13ff1a8..000000000 --- a/gajim-remote.1 +++ /dev/null @@ -1,14 +0,0 @@ -.\" 20050818 -.TH "Gajim-remote" "1" "August 18, 2005" "Gajim dev team" "" -.SH "NAME" -Gajim-remote -.SH "SYNOPSIS" -.B gajim-remote [help] [toggle_roster_appearance] [show_next_unread] [list_contacts] [list_accounts] [change_status] [open_chat] [send_message] [send_file] [contact_info] [account_info] [send_file] [prefs_list] [prefs_put] [prefs_del] [prefs_store] [remove_contact] [add_contact] [get_status] [get_status_message] [get_unread_msgs_number] [start_chat] -.SH "DESCRIPTION" -.B Gajim-remote -is a script to control Gajim by D-Bus -.PP -.SH "FEEDBACK" -You can report bugs or feature requests in http://trac.gajim.org or in the mailing list: https://lists.gajim.org/cgi\-bin/listinfo/gajim\-devel. You can also find us in our room gajim@conference.jabber.no -.SH "AUTHORS" -Written by Yann Le Boulanger , Nikos Kouremenos and Dimitur Kirov . diff --git a/gajim.1 b/gajim.1 deleted file mode 100644 index b6351cd4f..000000000 --- a/gajim.1 +++ /dev/null @@ -1,25 +0,0 @@ -.\" 20050901 -.TH "Gajim" "1" "September 01, 2005" "Gajim dev team" "" -.SH "NAME" -Gajim \- a jabber client -.SH "SYNOPSIS" -.B gajim [\-v] [\-p] [\-h] -.SH "DESCRIPTION" -.B Gajim -is a jabber client written in PyGTK and released under the GNU GPL. For more information on jabber, see -http://www.jabber.org and on Gajim see http://www.gajim.org -.PP -.SH "OPTIONS" -.TP -\fB\-p\fR, \fB\-\-profile\fR name -Run Gajim using ~/.gajim/config.name -.TP -\fB\-v\fR, \fB\-\-verbose\fR -Print xml stanzas and other debug information. -.TP -\fB\-h\fR, \fB\-\-help\fR -Print this help. -.SH "FEEDBACK" -You can report bugs or feature requests in http://trac.gajim.org or in the mailing list: https://lists.gajim.org/cgi\-bin/listinfo/gajim\-devel. You can also find us in our room gajim@conference.gajim.org -.SH "AUTHORS" -Written by Yann Le Boulanger , Nikos Kouremenos and Dimitur Kirov . diff --git a/gajim.desktop.in b/gajim.desktop.in deleted file mode 100644 index 957abc264..000000000 --- a/gajim.desktop.in +++ /dev/null @@ -1,13 +0,0 @@ -[Desktop Entry] -Categories=Network;InstantMessaging;Application;GTK;GNOME; -_Name=Gajim Instant Messenger -_GenericName=Jabber IM Client -_Comment=A GTK+ Jabber client -Version=0.9.4 -Encoding=UTF-8 -Exec=gajim -Icon=gajim.png -StartupNotify=true -StartupWMClass=Gajim -Terminal=false -Type=Application From 1a68b63302a6afb187542d4a5bd7d39b40351126 Mon Sep 17 00:00:00 2001 From: Dimitur Kirov Date: Wed, 4 Oct 2006 12:22:37 +0000 Subject: [PATCH 099/110] add --enable-gtkspell check. check xscrnsaver's libs only when xscrnsaver.pc is not installed fix DESTDIR add explicit AC_SUBST for PYTHON_INCLUDES --- Makefile.in | 2 + configure | 723 ++++++++++++++++++++----------------- configure.ac | 45 ++- data/Makefile.in | 2 + data/emoticons/Makefile.am | 10 +- data/emoticons/Makefile.in | 11 +- data/glade/Makefile.in | 2 + data/iconsets/Makefile.am | 8 +- data/iconsets/Makefile.in | 10 +- data/pixmaps/Makefile.in | 2 + src/Makefile.am | 6 +- src/Makefile.in | 34 +- src/common/Makefile.am | 8 +- src/common/Makefile.in | 9 +- 14 files changed, 487 insertions(+), 385 deletions(-) diff --git a/Makefile.in b/Makefile.in index 77602aa52..c8069eba4 100644 --- a/Makefile.in +++ b/Makefile.in @@ -96,6 +96,8 @@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ +BUILD_GTKSPELL_FALSE = @BUILD_GTKSPELL_FALSE@ +BUILD_GTKSPELL_TRUE = @BUILD_GTKSPELL_TRUE@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ diff --git a/configure b/configure index cd2bb157b..da8885ffd 100755 --- a/configure +++ b/configure @@ -883,6 +883,7 @@ F77 FFLAGS ac_ct_F77 LIBTOOL +XMKMF GETTEXT_PACKAGE USE_NLS MSGFMT @@ -899,7 +900,6 @@ PO_IN_DATADIR_FALSE POFILES POSUB MKINSTALLDIRS -XMKMF PKG_CONFIG DBUS_CFLAGS DBUS_LIBS @@ -908,6 +908,8 @@ PYGTK_LIBS PYGTK_DEFS GTKSPELL_CFLAGS GTKSPELL_LIBS +BUILD_GTKSPELL_TRUE +BUILD_GTKSPELL_FALSE XSCRNSAVER_CFLAGS XSCRNSAVER_LIBS PYTHON @@ -1539,6 +1541,7 @@ Optional Features: --enable-fast-install[=PKGS] optimize for fast installation [default=yes] --disable-libtool-lock avoid locking (might break parallel builds) + --enable-gtkspell build spell checking support default auto Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] @@ -5888,7 +5891,7 @@ ia64-*-hpux*) ;; *-*-irix6*) # Find out which ABI we are using. - echo '#line 5891 "configure"' > conftest.$ac_ext + echo '#line 5894 "configure"' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? @@ -8913,11 +8916,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:8916: $lt_compile\"" >&5) + (eval echo "\"\$as_me:8919: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:8920: \$? = $ac_status" >&5 + echo "$as_me:8923: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -9181,11 +9184,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:9184: $lt_compile\"" >&5) + (eval echo "\"\$as_me:9187: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:9188: \$? = $ac_status" >&5 + echo "$as_me:9191: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -9285,11 +9288,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:9288: $lt_compile\"" >&5) + (eval echo "\"\$as_me:9291: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:9292: \$? = $ac_status" >&5 + echo "$as_me:9295: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -11774,7 +11777,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < conftest.$ac_ext <&5) + (eval echo "\"\$as_me:14248: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:14249: \$? = $ac_status" >&5 + echo "$as_me:14252: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -14346,11 +14349,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:14349: $lt_compile\"" >&5) + (eval echo "\"\$as_me:14352: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:14353: \$? = $ac_status" >&5 + echo "$as_me:14356: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -15953,11 +15956,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:15956: $lt_compile\"" >&5) + (eval echo "\"\$as_me:15959: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:15960: \$? = $ac_status" >&5 + echo "$as_me:15963: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -16057,11 +16060,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:16060: $lt_compile\"" >&5) + (eval echo "\"\$as_me:16063: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:16064: \$? = $ac_status" >&5 + echo "$as_me:16067: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -18324,11 +18327,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:18327: $lt_compile\"" >&5) + (eval echo "\"\$as_me:18330: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:18331: \$? = $ac_status" >&5 + echo "$as_me:18334: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -18592,11 +18595,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:18595: $lt_compile\"" >&5) + (eval echo "\"\$as_me:18598: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:18599: \$? = $ac_status" >&5 + echo "$as_me:18602: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -18696,11 +18699,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:18699: $lt_compile\"" >&5) + (eval echo "\"\$as_me:18702: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:18703: \$? = $ac_status" >&5 + echo "$as_me:18706: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -21427,6 +21430,268 @@ LIBTOOL='$(SHELL) $(top_builddir)/libtool' +{ echo "$as_me:$LINENO: checking for X" >&5 +echo $ECHO_N "checking for X... $ECHO_C" >&6; } + + +# Check whether --with-x was given. +if test "${with_x+set}" = set; then + withval=$with_x; +fi + +# $have_x is `yes', `no', `disabled', or empty when we do not yet know. +if test "x$with_x" = xno; then + # The user explicitly disabled X. + have_x=disabled +else + case $x_includes,$x_libraries in #( + *\'*) { { echo "$as_me:$LINENO: error: Cannot use X directory names containing '" >&5 +echo "$as_me: error: Cannot use X directory names containing '" >&2;} + { (exit 1); exit 1; }; };; #( + *,NONE | NONE,*) if test "${ac_cv_have_x+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # One or both of the vars are not set, and there is no cached value. +ac_x_includes=no ac_x_libraries=no +rm -f -r conftest.dir +if mkdir conftest.dir; then + cd conftest.dir + cat >Imakefile <<'_ACEOF' +incroot: + @echo incroot='${INCROOT}' +usrlibdir: + @echo usrlibdir='${USRLIBDIR}' +libdir: + @echo libdir='${LIBDIR}' +_ACEOF + if (export CC; ${XMKMF-xmkmf}) >/dev/null 2>/dev/null && test -f Makefile; then + # GNU make sometimes prints "make[1]: Entering...", which would confuse us. + for ac_var in incroot usrlibdir libdir; do + eval "ac_im_$ac_var=\`\${MAKE-make} $ac_var 2>/dev/null | sed -n 's/^$ac_var=//p'\`" + done + # Open Windows xmkmf reportedly sets LIBDIR instead of USRLIBDIR. + for ac_extension in a so sl; do + if test ! -f "$ac_im_usrlibdir/libX11.$ac_extension" && + test -f "$ac_im_libdir/libX11.$ac_extension"; then + ac_im_usrlibdir=$ac_im_libdir; break + fi + done + # Screen out bogus values from the imake configuration. They are + # bogus both because they are the default anyway, and because + # using them would break gcc on systems where it needs fixed includes. + case $ac_im_incroot in + /usr/include) ac_x_includes= ;; + *) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes=$ac_im_incroot;; + esac + case $ac_im_usrlibdir in + /usr/lib | /lib) ;; + *) test -d "$ac_im_usrlibdir" && ac_x_libraries=$ac_im_usrlibdir ;; + esac + fi + cd .. + rm -f -r conftest.dir +fi + +# Standard set of common directories for X headers. +# Check X11 before X11Rn because it is often a symlink to the current release. +ac_x_header_dirs=' +/usr/X11/include +/usr/X11R6/include +/usr/X11R5/include +/usr/X11R4/include + +/usr/include/X11 +/usr/include/X11R6 +/usr/include/X11R5 +/usr/include/X11R4 + +/usr/local/X11/include +/usr/local/X11R6/include +/usr/local/X11R5/include +/usr/local/X11R4/include + +/usr/local/include/X11 +/usr/local/include/X11R6 +/usr/local/include/X11R5 +/usr/local/include/X11R4 + +/usr/X386/include +/usr/x386/include +/usr/XFree86/include/X11 + +/usr/include +/usr/local/include +/usr/unsupported/include +/usr/athena/include +/usr/local/x11r5/include +/usr/lpp/Xamples/include + +/usr/openwin/include +/usr/openwin/share/include' + +if test "$ac_x_includes" = no; then + # Guess where to find include files, by looking for Xlib.h. + # First, try using that file with no special directory specified. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # We can compile using X headers with no special include directory. +ac_x_includes= +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + for ac_dir in $ac_x_header_dirs; do + if test -r "$ac_dir/X11/Xlib.h"; then + ac_x_includes=$ac_dir + break + fi +done +fi + +rm -f conftest.err conftest.$ac_ext +fi # $ac_x_includes = no + +if test "$ac_x_libraries" = no; then + # Check for the libraries. + # See if we find them without any special options. + # Don't add to $LIBS permanently. + ac_save_LIBS=$LIBS + LIBS="-lXt $LIBS" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +int +main () +{ +XrmInitialize () + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + LIBS=$ac_save_LIBS +# We can link X programs with no special library path. +ac_x_libraries= +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + LIBS=$ac_save_LIBS +for ac_dir in `echo "$ac_x_includes $ac_x_header_dirs" | sed s/include/lib/g` +do + # Don't even attempt the hair of trying to link an X program! + for ac_extension in a so sl; do + if test -r "$ac_dir/libXt.$ac_extension"; then + ac_x_libraries=$ac_dir + break 2 + fi + done +done +fi + +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi # $ac_x_libraries = no + +case $ac_x_includes,$ac_x_libraries in #( + no,* | *,no | *\'*) + # Didn't find X, or a directory has "'" in its name. + ac_cv_have_x="have_x=no";; #( + *) + # Record where we found X for the cache. + ac_cv_have_x="have_x=yes\ + ac_x_includes='$ac_x_includes'\ + ac_x_libraries='$ac_x_libraries'" +esac +fi +;; #( + *) have_x=yes;; + esac + eval "$ac_cv_have_x" +fi # $with_x != no + +if test "$have_x" != yes; then + { echo "$as_me:$LINENO: result: $have_x" >&5 +echo "${ECHO_T}$have_x" >&6; } + no_x=yes +else + # If each of the values was on the command line, it overrides each guess. + test "x$x_includes" = xNONE && x_includes=$ac_x_includes + test "x$x_libraries" = xNONE && x_libraries=$ac_x_libraries + # Update the cache value to reflect the command line values. + ac_cv_have_x="have_x=yes\ + ac_x_includes='$x_includes'\ + ac_x_libraries='$x_libraries'" + { echo "$as_me:$LINENO: result: libraries $x_libraries, headers $x_includes" >&5 +echo "${ECHO_T}libraries $x_libraries, headers $x_includes" >&6; } +fi + GETTEXT_PACKAGE=gajim @@ -23190,269 +23455,6 @@ echo "${ECHO_T}$LINGUAS" >&6; } < $srcdir/po/POTFILES.in > po/POTFILES -{ echo "$as_me:$LINENO: checking for X" >&5 -echo $ECHO_N "checking for X... $ECHO_C" >&6; } - - -# Check whether --with-x was given. -if test "${with_x+set}" = set; then - withval=$with_x; -fi - -# $have_x is `yes', `no', `disabled', or empty when we do not yet know. -if test "x$with_x" = xno; then - # The user explicitly disabled X. - have_x=disabled -else - case $x_includes,$x_libraries in #( - *\'*) { { echo "$as_me:$LINENO: error: Cannot use X directory names containing '" >&5 -echo "$as_me: error: Cannot use X directory names containing '" >&2;} - { (exit 1); exit 1; }; };; #( - *,NONE | NONE,*) if test "${ac_cv_have_x+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - # One or both of the vars are not set, and there is no cached value. -ac_x_includes=no ac_x_libraries=no -rm -f -r conftest.dir -if mkdir conftest.dir; then - cd conftest.dir - cat >Imakefile <<'_ACEOF' -incroot: - @echo incroot='${INCROOT}' -usrlibdir: - @echo usrlibdir='${USRLIBDIR}' -libdir: - @echo libdir='${LIBDIR}' -_ACEOF - if (export CC; ${XMKMF-xmkmf}) >/dev/null 2>/dev/null && test -f Makefile; then - # GNU make sometimes prints "make[1]: Entering...", which would confuse us. - for ac_var in incroot usrlibdir libdir; do - eval "ac_im_$ac_var=\`\${MAKE-make} $ac_var 2>/dev/null | sed -n 's/^$ac_var=//p'\`" - done - # Open Windows xmkmf reportedly sets LIBDIR instead of USRLIBDIR. - for ac_extension in a so sl; do - if test ! -f "$ac_im_usrlibdir/libX11.$ac_extension" && - test -f "$ac_im_libdir/libX11.$ac_extension"; then - ac_im_usrlibdir=$ac_im_libdir; break - fi - done - # Screen out bogus values from the imake configuration. They are - # bogus both because they are the default anyway, and because - # using them would break gcc on systems where it needs fixed includes. - case $ac_im_incroot in - /usr/include) ac_x_includes= ;; - *) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes=$ac_im_incroot;; - esac - case $ac_im_usrlibdir in - /usr/lib | /lib) ;; - *) test -d "$ac_im_usrlibdir" && ac_x_libraries=$ac_im_usrlibdir ;; - esac - fi - cd .. - rm -f -r conftest.dir -fi - -# Standard set of common directories for X headers. -# Check X11 before X11Rn because it is often a symlink to the current release. -ac_x_header_dirs=' -/usr/X11/include -/usr/X11R6/include -/usr/X11R5/include -/usr/X11R4/include - -/usr/include/X11 -/usr/include/X11R6 -/usr/include/X11R5 -/usr/include/X11R4 - -/usr/local/X11/include -/usr/local/X11R6/include -/usr/local/X11R5/include -/usr/local/X11R4/include - -/usr/local/include/X11 -/usr/local/include/X11R6 -/usr/local/include/X11R5 -/usr/local/include/X11R4 - -/usr/X386/include -/usr/x386/include -/usr/XFree86/include/X11 - -/usr/include -/usr/local/include -/usr/unsupported/include -/usr/athena/include -/usr/local/x11r5/include -/usr/lpp/Xamples/include - -/usr/openwin/include -/usr/openwin/share/include' - -if test "$ac_x_includes" = no; then - # Guess where to find include files, by looking for Xlib.h. - # First, try using that file with no special directory specified. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - # We can compile using X headers with no special include directory. -ac_x_includes= -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - for ac_dir in $ac_x_header_dirs; do - if test -r "$ac_dir/X11/Xlib.h"; then - ac_x_includes=$ac_dir - break - fi -done -fi - -rm -f conftest.err conftest.$ac_ext -fi # $ac_x_includes = no - -if test "$ac_x_libraries" = no; then - # Check for the libraries. - # See if we find them without any special options. - # Don't add to $LIBS permanently. - ac_save_LIBS=$LIBS - LIBS="-lXt $LIBS" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -int -main () -{ -XrmInitialize () - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - LIBS=$ac_save_LIBS -# We can link X programs with no special library path. -ac_x_libraries= -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - LIBS=$ac_save_LIBS -for ac_dir in `echo "$ac_x_includes $ac_x_header_dirs" | sed s/include/lib/g` -do - # Don't even attempt the hair of trying to link an X program! - for ac_extension in a so sl; do - if test -r "$ac_dir/libXt.$ac_extension"; then - ac_x_libraries=$ac_dir - break 2 - fi - done -done -fi - -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi # $ac_x_libraries = no - -case $ac_x_includes,$ac_x_libraries in #( - no,* | *,no | *\'*) - # Didn't find X, or a directory has "'" in its name. - ac_cv_have_x="have_x=no";; #( - *) - # Record where we found X for the cache. - ac_cv_have_x="have_x=yes\ - ac_x_includes='$ac_x_includes'\ - ac_x_libraries='$ac_x_libraries'" -esac -fi -;; #( - *) have_x=yes;; - esac - eval "$ac_cv_have_x" -fi # $with_x != no - -if test "$have_x" != yes; then - { echo "$as_me:$LINENO: result: $have_x" >&5 -echo "${ECHO_T}$have_x" >&6; } - no_x=yes -else - # If each of the values was on the command line, it overrides each guess. - test "x$x_includes" = xNONE && x_includes=$ac_x_includes - test "x$x_libraries" = xNONE && x_libraries=$ac_x_libraries - # Update the cache value to reflect the command line values. - ac_cv_have_x="have_x=yes\ - ac_x_includes='$x_includes'\ - ac_x_libraries='$x_libraries'" - { echo "$as_me:$LINENO: result: libraries $x_libraries, headers $x_includes" >&5 -echo "${ECHO_T}libraries $x_libraries, headers $x_includes" >&6; } -fi - - if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then @@ -23803,8 +23805,28 @@ fi PYGTK_DEFS=`$PKG_CONFIG --variable=defsdir pygtk-2.0` +# Check whether --enable-gtkspell was given. +if test "${enable_gtkspell+set}" = set; then + enableval=$enable_gtkspell; +else + enable_gtkspell=auto +fi +if test "x$enable_gtkspell" = "xauto";then + if test -n "$PKG_CONFIG" && \ + { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"gtkspell-2.0\"") >&5 + ($PKG_CONFIG --exists --print-errors "gtkspell-2.0") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + enable_gtkspell=yes +else + enable_gtkspell=no +fi +fi +if test "x$enable_gtkspell" = "xyes";then + pkg_failed=no { echo "$as_me:$LINENO: checking for GTKSPELL" >&5 echo $ECHO_N "checking for GTKSPELL... $ECHO_C" >&6; } @@ -23917,8 +23939,34 @@ echo "${ECHO_T}yes" >&6; } fi + have_gtkspell=true +else + have_gtkspell=false +fi +if $have_gtkspell; then + BUILD_GTKSPELL_TRUE= + BUILD_GTKSPELL_FALSE='#' +else + BUILD_GTKSPELL_TRUE='#' + BUILD_GTKSPELL_FALSE= +fi + + +if test -n "$PKG_CONFIG" && \ + { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"xscrnsaver\"") >&5 + ($PKG_CONFIG --exists --print-errors "xscrnsaver") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + have_xscrnsaver=yes +else + have_xscrnsaver=no +fi + +if test "x$have_xscrnsaver" = "xyes";then + pkg_failed=no { echo "$as_me:$LINENO: checking for XSCRNSAVER" >&5 echo $ECHO_N "checking for XSCRNSAVER... $ECHO_C" >&6; } @@ -24030,12 +24078,12 @@ echo "${ECHO_T}yes" >&6; } : fi -# Checks for libraries. -# FIXME: Replace `main' with a function in `-lX11': +else + # Checks for libraries. -{ echo "$as_me:$LINENO: checking for main in -lX11" >&5 -echo $ECHO_N "checking for main in -lX11... $ECHO_C" >&6; } -if test "${ac_cv_lib_X11_main+set}" = set; then +{ echo "$as_me:$LINENO: checking for XOpenDisplay in -lX11" >&5 +echo $ECHO_N "checking for XOpenDisplay in -lX11... $ECHO_C" >&6; } +if test "${ac_cv_lib_X11_XOpenDisplay+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS @@ -24047,11 +24095,17 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ - +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char XOpenDisplay (); int main () { -return main (); +return XOpenDisplay (); ; return 0; } @@ -24090,21 +24144,21 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - ac_cv_lib_X11_main=yes + ac_cv_lib_X11_XOpenDisplay=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_lib_X11_main=no + ac_cv_lib_X11_XOpenDisplay=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_X11_main" >&5 -echo "${ECHO_T}$ac_cv_lib_X11_main" >&6; } -if test $ac_cv_lib_X11_main = yes; then +{ echo "$as_me:$LINENO: result: $ac_cv_lib_X11_XOpenDisplay" >&5 +echo "${ECHO_T}$ac_cv_lib_X11_XOpenDisplay" >&6; } +if test $ac_cv_lib_X11_XOpenDisplay = yes; then cat >>confdefs.h <<_ACEOF #define HAVE_LIBX11 1 _ACEOF @@ -24113,11 +24167,10 @@ _ACEOF fi -# FIXME: Replace `main' with a function in `-lXext': -{ echo "$as_me:$LINENO: checking for main in -lXext" >&5 -echo $ECHO_N "checking for main in -lXext... $ECHO_C" >&6; } -if test "${ac_cv_lib_Xext_main+set}" = set; then +{ echo "$as_me:$LINENO: checking for XMissingExtension in -lXext" >&5 +echo $ECHO_N "checking for XMissingExtension in -lXext... $ECHO_C" >&6; } +if test "${ac_cv_lib_Xext_XMissingExtension+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS @@ -24129,11 +24182,17 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ - +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char XMissingExtension (); int main () { -return main (); +return XMissingExtension (); ; return 0; } @@ -24172,21 +24231,21 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - ac_cv_lib_Xext_main=yes + ac_cv_lib_Xext_XMissingExtension=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_lib_Xext_main=no + ac_cv_lib_Xext_XMissingExtension=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_Xext_main" >&5 -echo "${ECHO_T}$ac_cv_lib_Xext_main" >&6; } -if test $ac_cv_lib_Xext_main = yes; then +{ echo "$as_me:$LINENO: result: $ac_cv_lib_Xext_XMissingExtension" >&5 +echo "${ECHO_T}$ac_cv_lib_Xext_XMissingExtension" >&6; } +if test $ac_cv_lib_Xext_XMissingExtension = yes; then cat >>confdefs.h <<_ACEOF #define HAVE_LIBXEXT 1 _ACEOF @@ -24195,11 +24254,10 @@ _ACEOF fi -# FIXME: Replace `main' with a function in `-lXss': -{ echo "$as_me:$LINENO: checking for main in -lXss" >&5 -echo $ECHO_N "checking for main in -lXss... $ECHO_C" >&6; } -if test "${ac_cv_lib_Xss_main+set}" = set; then +{ echo "$as_me:$LINENO: checking for XScreenSaverAllocInfo in -lXss" >&5 +echo $ECHO_N "checking for XScreenSaverAllocInfo in -lXss... $ECHO_C" >&6; } +if test "${ac_cv_lib_Xss_XScreenSaverAllocInfo+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS @@ -24211,11 +24269,17 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ - +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char XScreenSaverAllocInfo (); int main () { -return main (); +return XScreenSaverAllocInfo (); ; return 0; } @@ -24254,21 +24318,21 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - ac_cv_lib_Xss_main=yes + ac_cv_lib_Xss_XScreenSaverAllocInfo=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_lib_Xss_main=no + ac_cv_lib_Xss_XScreenSaverAllocInfo=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_Xss_main" >&5 -echo "${ECHO_T}$ac_cv_lib_Xss_main" >&6; } -if test $ac_cv_lib_Xss_main = yes; then +{ echo "$as_me:$LINENO: result: $ac_cv_lib_Xss_XScreenSaverAllocInfo" >&5 +echo "${ECHO_T}$ac_cv_lib_Xss_XScreenSaverAllocInfo" >&6; } +if test $ac_cv_lib_Xss_XScreenSaverAllocInfo = yes; then cat >>confdefs.h <<_ACEOF #define HAVE_LIBXSS 1 _ACEOF @@ -24277,6 +24341,9 @@ _ACEOF fi + XSCRNSAVER_LIBS=" -lX11 -lXss -lXext" + +fi @@ -24533,7 +24600,6 @@ CPPFLAGS="$save_CPPFLAGS" - ac_config_files="$ac_config_files Makefile data/Makefile data/glade/Makefile data/emoticons/Makefile data/pixmaps/Makefile data/iconsets/Makefile data/gajim.desktop.in src/Makefile src/common/Makefile scripts/gajim po/Makefile.in" cat >confcache <<\_ACEOF @@ -24671,6 +24737,13 @@ echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi +if test -z "${BUILD_GTKSPELL_TRUE}" && test -z "${BUILD_GTKSPELL_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"BUILD_GTKSPELL\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"BUILD_GTKSPELL\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi : ${CONFIG_STATUS=./config.status} ac_clean_files_save=$ac_clean_files @@ -25379,6 +25452,7 @@ F77!$F77$ac_delim FFLAGS!$FFLAGS$ac_delim ac_ct_F77!$ac_ct_F77$ac_delim LIBTOOL!$LIBTOOL$ac_delim +XMKMF!$XMKMF$ac_delim GETTEXT_PACKAGE!$GETTEXT_PACKAGE$ac_delim USE_NLS!$USE_NLS$ac_delim MSGFMT!$MSGFMT$ac_delim @@ -25395,7 +25469,6 @@ PO_IN_DATADIR_FALSE!$PO_IN_DATADIR_FALSE$ac_delim POFILES!$POFILES$ac_delim POSUB!$POSUB$ac_delim MKINSTALLDIRS!$MKINSTALLDIRS$ac_delim -XMKMF!$XMKMF$ac_delim PKG_CONFIG!$PKG_CONFIG$ac_delim DBUS_CFLAGS!$DBUS_CFLAGS$ac_delim DBUS_LIBS!$DBUS_LIBS$ac_delim @@ -25404,6 +25477,8 @@ PYGTK_LIBS!$PYGTK_LIBS$ac_delim PYGTK_DEFS!$PYGTK_DEFS$ac_delim GTKSPELL_CFLAGS!$GTKSPELL_CFLAGS$ac_delim GTKSPELL_LIBS!$GTKSPELL_LIBS$ac_delim +BUILD_GTKSPELL_TRUE!$BUILD_GTKSPELL_TRUE$ac_delim +BUILD_GTKSPELL_FALSE!$BUILD_GTKSPELL_FALSE$ac_delim XSCRNSAVER_CFLAGS!$XSCRNSAVER_CFLAGS$ac_delim XSCRNSAVER_LIBS!$XSCRNSAVER_LIBS$ac_delim PYTHON!$PYTHON$ac_delim @@ -25420,7 +25495,7 @@ LIBOBJS!$LIBOBJS$ac_delim LTLIBOBJS!$LTLIBOBJS$ac_delim _ACEOF - if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 72; then + if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 74; then break elif $ac_last_try; then { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 diff --git a/configure.ac b/configure.ac index 9fc4d3a17..1d7805662 100644 --- a/configure.ac +++ b/configure.ac @@ -16,6 +16,7 @@ AC_PROG_CC AC_PROG_INSTALL AC_PROG_MAKE_SET AC_PROG_LIBTOOL +AC_PATH_X GETTEXT_PACKAGE=gajim AC_SUBST([GETTEXT_PACKAGE]) @@ -23,8 +24,6 @@ AC_DEFINE_UNQUOTED([GETTEXT_PACKAGE],["$GETTEXT_PACKAGE"], [Gettext package]) ALL_LINGUAS="fr pt el pl es ru bg de nb cs nl pt_BR sv it eu sk no zh_CN br eo" AM_GLIB_GNU_GETTEXT -AC_PATH_X - PKG_CHECK_MODULES([DBUS], [dbus-1 >= 0.61 dbus-glib-1 >= 0.61]) AC_SUBST(DBUS_CFLAGS) AC_SUBST(DBUS_LIBS) @@ -35,21 +34,36 @@ AC_SUBST(PYGTK_LIBS) PYGTK_DEFS=`$PKG_CONFIG --variable=defsdir pygtk-2.0` AC_SUBST(PYGTK_DEFS) +AC_ARG_ENABLE(gtkspell, + [ --enable-gtkspell build spell checking support [default auto]],, + enable_gtkspell=auto) -PKG_CHECK_MODULES([GTKSPELL], [gtkspell-2.0]) -AC_SUBST(GTKSPELL_CFLAGS) -AC_SUBST(GTKSPELL_LIBS) +if test "x$enable_gtkspell" = "xauto";then + PKG_CHECK_EXISTS([gtkspell-2.0], [enable_gtkspell=yes], [enable_gtkspell=no]) +fi +if test "x$enable_gtkspell" = "xyes";then + PKG_CHECK_MODULES([GTKSPELL], [gtkspell-2.0]) + AC_SUBST(GTKSPELL_CFLAGS) + AC_SUBST(GTKSPELL_LIBS) + have_gtkspell=true +else + have_gtkspell=false +fi +AM_CONDITIONAL(BUILD_GTKSPELL, $have_gtkspell) -PKG_CHECK_MODULES([XSCRNSAVER], xscrnsaver) -dnl AC_SUBST(XSCRNSAVER_LIBS) +PKG_CHECK_EXISTS([xscrnsaver], [have_xscrnsaver=yes], [have_xscrnsaver=no]) -# Checks for libraries. -# FIXME: Replace `main' with a function in `-lX11': -AC_CHECK_LIB([X11], [main]) -# FIXME: Replace `main' with a function in `-lXext': -AC_CHECK_LIB([Xext], [main]) -# FIXME: Replace `main' with a function in `-lXss': -AC_CHECK_LIB([Xss], [main]) +if test "x$have_xscrnsaver" = "xyes";then + PKG_CHECK_MODULES([XSCRNSAVER], xscrnsaver) + AC_SUBST(XSCRNSAVER_LIBS) +else + # Checks for libraries. + AC_CHECK_LIB([X11], [XOpenDisplay]) + AC_CHECK_LIB([Xext], [XMissingExtension]) + AC_CHECK_LIB([Xss], [XScreenSaverAllocInfo]) + XSCRNSAVER_LIBS=" -lX11 -lXss -lXext" + AC_SUBST([XSCRNSAVER_LIBS]) +fi AM_PATH_PYTHON([2.4]) @@ -58,8 +72,7 @@ if test "x$PYTHON" = "x:"; then fi AM_CHECK_PYTHON_HEADERS(,[AC_MSG_ERROR(could not find Python headers)]) - - +AC_SUBST([PYTHON_INCLUDES]) AC_CONFIG_FILES([ Makefile diff --git a/data/Makefile.in b/data/Makefile.in index 4325f55ba..bb11e75e0 100644 --- a/data/Makefile.in +++ b/data/Makefile.in @@ -84,6 +84,8 @@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ +BUILD_GTKSPELL_FALSE = @BUILD_GTKSPELL_FALSE@ +BUILD_GTKSPELL_TRUE = @BUILD_GTKSPELL_TRUE@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ diff --git a/data/emoticons/Makefile.am b/data/emoticons/Makefile.am index e7d867243..463c36e5a 100644 --- a/data/emoticons/Makefile.am +++ b/data/emoticons/Makefile.am @@ -6,18 +6,18 @@ EMOTICONS_DIRS = ** EMOTICONS_FILES = **/{*.png,*.gif,emoticons.py} -# copy files recursively + install-data-local: @for d in $(EMOTICONS_DIRS);do \ if test -d $$d;then \ - echo " $(mkinstalldirs) $(pkgdatadir)/data/emoticons/$$d"; \ - $(mkinstalldirs) $(pkgdatadir)/data/emoticons/$$d || exit 1; \ + echo " $(mkinstalldirs) $(DESTDIR)$(pkgdatadir)/data/emoticons/$$d"; \ + $(mkinstalldirs) $(DESTDIR)$(pkgdatadir)/data/emoticons/$$d || exit 1; \ fi; \ done; \ for f in $(EMOTICONS_FILES);do \ if test -f $$f; then \ - echo " $(INSTALL_DATA) $$f $(pkgdatadir)/data/emoticons/$$f"; \ - $(INSTALL_DATA) $$f $(pkgdatadir)/data/emoticons/$$f || exit 1; \ + echo " $(INSTALL_DATA) $$f $(DESTDIR)$(pkgdatadir)/data/emoticons/$$f"; \ + $(INSTALL_DATA) $$f $(DESTDIR)$(pkgdatadir)/data/emoticons/$$f || exit 1; \ fi; \ done; diff --git a/data/emoticons/Makefile.in b/data/emoticons/Makefile.in index 56630453a..e3de48d31 100644 --- a/data/emoticons/Makefile.in +++ b/data/emoticons/Makefile.in @@ -68,6 +68,8 @@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ +BUILD_GTKSPELL_FALSE = @BUILD_GTKSPELL_FALSE@ +BUILD_GTKSPELL_TRUE = @BUILD_GTKSPELL_TRUE@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ @@ -415,18 +417,17 @@ uninstall-am: uninstall-emoticonsDATA uninstall-info-am uninstall-emoticonsDATA uninstall-info-am -# copy files recursively install-data-local: @for d in $(EMOTICONS_DIRS);do \ if test -d $$d;then \ - echo " $(mkinstalldirs) $(pkgdatadir)/data/emoticons/$$d"; \ - $(mkinstalldirs) $(pkgdatadir)/data/emoticons/$$d || exit 1; \ + echo " $(mkinstalldirs) $(DESTDIR)$(pkgdatadir)/data/emoticons/$$d"; \ + $(mkinstalldirs) $(DESTDIR)$(pkgdatadir)/data/emoticons/$$d || exit 1; \ fi; \ done; \ for f in $(EMOTICONS_FILES);do \ if test -f $$f; then \ - echo " $(INSTALL_DATA) $$f $(pkgdatadir)/data/emoticons/$$f"; \ - $(INSTALL_DATA) $$f $(pkgdatadir)/data/emoticons/$$f || exit 1; \ + echo " $(INSTALL_DATA) $$f $(DESTDIR)$(pkgdatadir)/data/emoticons/$$f"; \ + $(INSTALL_DATA) $$f $(DESTDIR)$(pkgdatadir)/data/emoticons/$$f || exit 1; \ fi; \ done; diff --git a/data/glade/Makefile.in b/data/glade/Makefile.in index 5733be2ac..bc613093a 100644 --- a/data/glade/Makefile.in +++ b/data/glade/Makefile.in @@ -68,6 +68,8 @@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ +BUILD_GTKSPELL_FALSE = @BUILD_GTKSPELL_FALSE@ +BUILD_GTKSPELL_TRUE = @BUILD_GTKSPELL_TRUE@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ diff --git a/data/iconsets/Makefile.am b/data/iconsets/Makefile.am index ce3281cda..547b110b8 100644 --- a/data/iconsets/Makefile.am +++ b/data/iconsets/Makefile.am @@ -11,14 +11,14 @@ ICONSET_FILES = **/{16x16,32x32,48x48}/{*.gif,*.png} \ install-data-local: @for d in $(ICONSET_DIRS);do \ if test -d $$d;then \ - echo " $(mkinstalldirs) $(pkgdatadir)/data/iconsets/$$d"; \ - $(mkinstalldirs) $(pkgdatadir)/data/iconsets/$$d || exit 1; \ + echo " $(mkinstalldirs) $(DESTDIR)$(pkgdatadir)/data/iconsets/$$d"; \ + $(mkinstalldirs) $(DESTDIR)$(pkgdatadir)/data/iconsets/$$d || exit 1; \ fi; \ done for f in $(ICONSET_FILES);do \ if test -f $$f; then \ - echo " $(INSTALL_DATA) $$f $(pkgdatadir)/data/iconsets/$$f"; \ - $(INSTALL_DATA) $$f $(pkgdatadir)/data/iconsets/$$f || exit 1; \ + echo " $(INSTALL_DATA) $$f $(DESTDIR)$(pkgdatadir)/data/iconsets/$$f"; \ + $(INSTALL_DATA) $$f $(DESTDIR)$(pkgdatadir)/data/iconsets/$$f || exit 1; \ fi; \ done; diff --git a/data/iconsets/Makefile.in b/data/iconsets/Makefile.in index 2156cb61a..ec04cccd2 100644 --- a/data/iconsets/Makefile.in +++ b/data/iconsets/Makefile.in @@ -68,6 +68,8 @@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ +BUILD_GTKSPELL_FALSE = @BUILD_GTKSPELL_FALSE@ +BUILD_GTKSPELL_TRUE = @BUILD_GTKSPELL_TRUE@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ @@ -422,14 +424,14 @@ uninstall-am: uninstall-iconsetDATA uninstall-info-am install-data-local: @for d in $(ICONSET_DIRS);do \ if test -d $$d;then \ - echo " $(mkinstalldirs) $(pkgdatadir)/data/iconsets/$$d"; \ - $(mkinstalldirs) $(pkgdatadir)/data/iconsets/$$d || exit 1; \ + echo " $(mkinstalldirs) $(DESTDIR)$(pkgdatadir)/data/iconsets/$$d"; \ + $(mkinstalldirs) $(DESTDIR)$(pkgdatadir)/data/iconsets/$$d || exit 1; \ fi; \ done for f in $(ICONSET_FILES);do \ if test -f $$f; then \ - echo " $(INSTALL_DATA) $$f $(pkgdatadir)/data/iconsets/$$f"; \ - $(INSTALL_DATA) $$f $(pkgdatadir)/data/iconsets/$$f || exit 1; \ + echo " $(INSTALL_DATA) $$f $(DESTDIR)$(pkgdatadir)/data/iconsets/$$f"; \ + $(INSTALL_DATA) $$f $(DESTDIR)$(pkgdatadir)/data/iconsets/$$f || exit 1; \ fi; \ done; diff --git a/data/pixmaps/Makefile.in b/data/pixmaps/Makefile.in index ccb40a98b..2037fd50a 100644 --- a/data/pixmaps/Makefile.in +++ b/data/pixmaps/Makefile.in @@ -68,6 +68,8 @@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ +BUILD_GTKSPELL_FALSE = @BUILD_GTKSPELL_FALSE@ +BUILD_GTKSPELL_TRUE = @BUILD_GTKSPELL_TRUE@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ diff --git a/src/Makefile.am b/src/Makefile.am index 8b780770c..608409f1a 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -5,6 +5,7 @@ CLEANFILES = \ INCLUDES = \ $(PYTHON_INCLUDES) +if BUILD_GTKSPELL gtkspelllib_LTLIBRARIES = gtkspell.la gtkspelllibdir = $(libdir)/gajim @@ -15,9 +16,10 @@ gtkspell_la_SOURCES = \ gtkspellmodule.c gtkspell_la_LDFLAGS = \ - -module -avoid-version -no-undefined + -module -avoid-version gtkspell_la_CFLAGS = $(GTKSPELL_CFLAGS) $(PYGTK_CFLAGS) +endif trayiconlib_LTLIBRARIES = trayicon.la trayiconlibdir = $(libdir)/gajim @@ -28,7 +30,7 @@ trayicon_la_SOURCES = \ nodist_trayicon_la_SOURCES = \ trayicon.c trayicon_la_LDFLAGS = \ - -module -avoid-version -no-undefined + -module -avoid-version trayicon_la_CFLAGS = $(PYGTK_CFLAGS) trayicon.c: trayicon.defs trayicon.override diff --git a/src/Makefile.in b/src/Makefile.in index 485304e88..3dd32bf57 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -61,9 +61,13 @@ gtkspelllibLTLIBRARIES_INSTALL = $(INSTALL) trayiconlibLTLIBRARIES_INSTALL = $(INSTALL) LTLIBRARIES = $(gtkspelllib_LTLIBRARIES) $(trayiconlib_LTLIBRARIES) am__DEPENDENCIES_1 = -gtkspell_la_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) -am_gtkspell_la_OBJECTS = gtkspell_la-gtkspellmodule.lo +@BUILD_GTKSPELL_TRUE@gtkspell_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \ +@BUILD_GTKSPELL_TRUE@ $(am__DEPENDENCIES_1) +am__gtkspell_la_SOURCES_DIST = gtkspellmodule.c +@BUILD_GTKSPELL_TRUE@am_gtkspell_la_OBJECTS = \ +@BUILD_GTKSPELL_TRUE@ gtkspell_la-gtkspellmodule.lo gtkspell_la_OBJECTS = $(am_gtkspell_la_OBJECTS) +@BUILD_GTKSPELL_TRUE@am_gtkspell_la_rpath = -rpath $(gtkspelllibdir) trayicon_la_DEPENDENCIES = $(am__DEPENDENCIES_1) am_trayicon_la_OBJECTS = trayicon_la-eggtrayicon.lo \ trayicon_la-trayiconmodule.lo @@ -83,7 +87,7 @@ LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ SOURCES = $(gtkspell_la_SOURCES) $(trayicon_la_SOURCES) \ $(nodist_trayicon_la_SOURCES) -DIST_SOURCES = $(gtkspell_la_SOURCES) $(trayicon_la_SOURCES) +DIST_SOURCES = $(am__gtkspell_la_SOURCES_DIST) $(trayicon_la_SOURCES) RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-exec-recursive install-info-recursive \ @@ -110,6 +114,8 @@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ +BUILD_GTKSPELL_FALSE = @BUILD_GTKSPELL_FALSE@ +BUILD_GTKSPELL_TRUE = @BUILD_GTKSPELL_TRUE@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ @@ -275,18 +281,18 @@ CLEANFILES = \ INCLUDES = \ $(PYTHON_INCLUDES) -gtkspelllib_LTLIBRARIES = gtkspell.la -gtkspelllibdir = $(libdir)/gajim -gtkspell_la_LIBADD = \ - $(GTKSPELL_LIBS) $(PYGTK_LIBS) +@BUILD_GTKSPELL_TRUE@gtkspelllib_LTLIBRARIES = gtkspell.la +@BUILD_GTKSPELL_TRUE@gtkspelllibdir = $(libdir)/gajim +@BUILD_GTKSPELL_TRUE@gtkspell_la_LIBADD = \ +@BUILD_GTKSPELL_TRUE@ $(GTKSPELL_LIBS) $(PYGTK_LIBS) -gtkspell_la_SOURCES = \ - gtkspellmodule.c +@BUILD_GTKSPELL_TRUE@gtkspell_la_SOURCES = \ +@BUILD_GTKSPELL_TRUE@ gtkspellmodule.c -gtkspell_la_LDFLAGS = \ - -module -avoid-version -no-undefined +@BUILD_GTKSPELL_TRUE@gtkspell_la_LDFLAGS = \ +@BUILD_GTKSPELL_TRUE@ -module -avoid-version -gtkspell_la_CFLAGS = $(GTKSPELL_CFLAGS) $(PYGTK_CFLAGS) +@BUILD_GTKSPELL_TRUE@gtkspell_la_CFLAGS = $(GTKSPELL_CFLAGS) $(PYGTK_CFLAGS) trayiconlib_LTLIBRARIES = trayicon.la trayiconlibdir = $(libdir)/gajim trayicon_la_LIBADD = $(PYGTK_LIBS) @@ -298,7 +304,7 @@ nodist_trayicon_la_SOURCES = \ trayicon.c trayicon_la_LDFLAGS = \ - -module -avoid-version -no-undefined + -module -avoid-version trayicon_la_CFLAGS = $(PYGTK_CFLAGS) gajimsrcdir = $(pkgdatadir)/src @@ -414,7 +420,7 @@ clean-trayiconlibLTLIBRARIES: rm -f "$${dir}/so_locations"; \ done gtkspell.la: $(gtkspell_la_OBJECTS) $(gtkspell_la_DEPENDENCIES) - $(LINK) -rpath $(gtkspelllibdir) $(gtkspell_la_LDFLAGS) $(gtkspell_la_OBJECTS) $(gtkspell_la_LIBADD) $(LIBS) + $(LINK) $(am_gtkspell_la_rpath) $(gtkspell_la_LDFLAGS) $(gtkspell_la_OBJECTS) $(gtkspell_la_LIBADD) $(LIBS) trayicon.la: $(trayicon_la_OBJECTS) $(trayicon_la_DEPENDENCIES) $(LINK) -rpath $(trayiconlibdir) $(trayicon_la_LDFLAGS) $(trayicon_la_OBJECTS) $(trayicon_la_LIBADD) $(LIBS) diff --git a/src/common/Makefile.am b/src/common/Makefile.am index 22d2fd827..0b28a0f42 100644 --- a/src/common/Makefile.am +++ b/src/common/Makefile.am @@ -1,11 +1,7 @@ -#CLEANFILES = \ -# trayicon.c - INCLUDES = \ $(PYTHON_INCLUDES) - idlelib_LTLIBRARIES = idle.la idlelibdir = $(libdir)/gajim @@ -14,7 +10,7 @@ idle_la_LIBADD = $(XSCREENSAVER_LIBS) idle_la_SOURCES = idle.c idle_la_LDFLAGS = \ - -module -avoid-version -no-undefined + -module -avoid-version -idle_la_CFLAGS = $(XSCREENSAVER_CFLAGS) +idle_la_CFLAGS = $(XSCREENSAVER_CFLAGS) $(PYTHON_INCLUDES) diff --git a/src/common/Makefile.in b/src/common/Makefile.in index db08087f3..145b6dbf6 100644 --- a/src/common/Makefile.in +++ b/src/common/Makefile.in @@ -14,9 +14,6 @@ @SET_MAKE@ -#CLEANFILES = \ -# trayicon.c - srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ @@ -87,6 +84,8 @@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ +BUILD_GTKSPELL_FALSE = @BUILD_GTKSPELL_FALSE@ +BUILD_GTKSPELL_TRUE = @BUILD_GTKSPELL_TRUE@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ @@ -253,9 +252,9 @@ idlelibdir = $(libdir)/gajim idle_la_LIBADD = $(XSCREENSAVER_LIBS) idle_la_SOURCES = idle.c idle_la_LDFLAGS = \ - -module -avoid-version -no-undefined + -module -avoid-version -idle_la_CFLAGS = $(XSCREENSAVER_CFLAGS) +idle_la_CFLAGS = $(XSCREENSAVER_CFLAGS) $(PYTHON_INCLUDES) all: all-am .SUFFIXES: From f56897745db5c49fa4ab0afc239d05dc6bab7809 Mon Sep 17 00:00:00 2001 From: Dimitur Kirov Date: Thu, 5 Oct 2006 15:08:07 +0000 Subject: [PATCH 100/110] adding some enable options. using $(srcdir) for files refered by wildcars --- Makefile.am | 5 +- Makefile.in | 27 +- aclocal.m4 | 1 + autogen.sh | 10 +- config.h.in | 6 + configure | 786 ++++++++++++++++++++++++++++--------- configure.ac | 102 ++++- data/Makefile.am | 2 +- data/Makefile.in | 17 +- data/emoticons/Makefile.in | 13 +- data/glade/Makefile.am | 3 +- data/glade/Makefile.in | 16 +- data/iconsets/Makefile.in | 13 +- data/pixmaps/Makefile.am | 6 +- data/pixmaps/Makefile.in | 21 +- m4/nls.m4 | 31 ++ po/POTFILES.in | 128 +++--- src/Makefile.am | 18 +- src/Makefile.in | 74 ++-- src/common/Makefile.am | 4 +- src/common/Makefile.in | 35 +- 21 files changed, 973 insertions(+), 345 deletions(-) create mode 100644 m4/nls.m4 diff --git a/Makefile.am b/Makefile.am index 5bb0e4958..36783955e 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,4 +1,7 @@ SUBDIRS = data src po + +ACLOCAL_AMFLAGS = -I m4 + bin_SCRIPTS = scripts/gajim commonfilesdir = $(pkgdatadir) @@ -8,7 +11,7 @@ commonfiles_DATA = COPYING \ THANKS \ AUTHORS -EXTRA_DIST = \ +EXTRA_DIST = config.rpath \ $(commonfiles_DATA) \ autogen.sh \ intltool-extract.in \ diff --git a/Makefile.in b/Makefile.in index c8069eba4..23a41499f 100644 --- a/Makefile.in +++ b/Makefile.in @@ -39,13 +39,15 @@ build_triplet = @build@ host_triplet = @host@ DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in $(srcdir)/config.h.in \ - $(top_srcdir)/configure $(top_srcdir)/scripts/gajim.in AUTHORS \ - COPYING ChangeLog INSTALL NEWS THANKS compile config.guess \ - config.sub depcomp install-sh ltmain.sh missing mkinstalldirs + $(top_srcdir)/configure $(top_srcdir)/scripts/gajim.in \ + ABOUT-NLS AUTHORS COPYING ChangeLog INSTALL NEWS THANKS \ + compile config.guess config.rpath config.sub depcomp \ + install-sh ltmain.sh missing mkinstalldirs subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/glib-gettext.m4 \ - $(top_srcdir)/m4/python.m4 $(top_srcdir)/configure.ac + $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/python.m4 \ + $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ @@ -98,6 +100,12 @@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BUILD_GTKSPELL_FALSE = @BUILD_GTKSPELL_FALSE@ BUILD_GTKSPELL_TRUE = @BUILD_GTKSPELL_TRUE@ +BUILD_IDLE_FALSE = @BUILD_IDLE_FALSE@ +BUILD_IDLE_TRUE = @BUILD_IDLE_TRUE@ +BUILD_REMOTE_CONTROL_FALSE = @BUILD_REMOTE_CONTROL_FALSE@ +BUILD_REMOTE_CONTROL_TRUE = @BUILD_REMOTE_CONTROL_TRUE@ +BUILD_TRAYICON_FALSE = @BUILD_TRAYICON_FALSE@ +BUILD_TRAYICON_TRUE = @BUILD_TRAYICON_TRUE@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ @@ -257,6 +265,7 @@ sharedstatedir = @sharedstatedir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ SUBDIRS = data src po +ACLOCAL_AMFLAGS = -I m4 bin_SCRIPTS = scripts/gajim commonfilesdir = $(pkgdatadir) commonfiles_DATA = COPYING \ @@ -265,7 +274,7 @@ commonfiles_DATA = COPYING \ THANKS \ AUTHORS -EXTRA_DIST = \ +EXTRA_DIST = config.rpath \ $(commonfiles_DATA) \ autogen.sh \ intltool-extract.in \ @@ -289,15 +298,15 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - echo ' cd $(srcdir) && $(AUTOMAKE) --gnu '; \ - cd $(srcdir) && $(AUTOMAKE) --gnu \ + echo ' cd $(srcdir) && $(AUTOMAKE) --foreign '; \ + cd $(srcdir) && $(AUTOMAKE) --foreign \ && exit 0; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu Makefile + $(AUTOMAKE) --foreign Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ diff --git a/aclocal.m4 b/aclocal.m4 index 3344f1ba6..826f5098f 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -7856,4 +7856,5 @@ AC_SUBST([am__untar]) ]) # _AM_PROG_TAR m4_include([m4/glib-gettext.m4]) +m4_include([m4/nls.m4]) m4_include([m4/python.m4]) diff --git a/autogen.sh b/autogen.sh index 866c69b31..3957564a4 100755 --- a/autogen.sh +++ b/autogen.sh @@ -1,6 +1,8 @@ #!/bin/sh -aclocal -I ./m4 --force -autoconf -autoheader -automake --add-missing +aclocal -I ./m4 \ + && libtoolize --force --copy \ + && autoheader \ + && automake --add-missing --foreign --copy \ + && autoconf \ + && ./configure $@ diff --git a/config.h.in b/config.h.in index bd5411275..ffb64246e 100644 --- a/config.h.in +++ b/config.h.in @@ -24,6 +24,9 @@ /* Define if your file defines LC_MESSAGES. */ #undef HAVE_LC_MESSAGES +/* Define to 1 if you have the header file. */ +#undef HAVE_LIBINTL_H + /* Define to 1 if you have the `X11' library (-lX11). */ #undef HAVE_LIBX11 @@ -83,3 +86,6 @@ /* Version number of package */ #undef VERSION + +/* Define to empty if `const' does not conform to ANSI C. */ +#undef const diff --git a/configure b/configure index da8885ffd..71b4b8af7 100755 --- a/configure +++ b/configure @@ -1,8 +1,8 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.60 for Gajim 0.11.0. +# Generated by GNU Autoconf 2.60 for Gajim - A Jabber Instant Messager 0.11.0. # -# Report bugs to . +# Report bugs to . # # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, # 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. @@ -711,11 +711,11 @@ MAKEFLAGS= SHELL=${CONFIG_SHELL-/bin/sh} # Identity of this package. -PACKAGE_NAME='Gajim' +PACKAGE_NAME='Gajim - A Jabber Instant Messager' PACKAGE_TARNAME='gajim' PACKAGE_VERSION='0.11.0' -PACKAGE_STRING='Gajim 0.11.0' -PACKAGE_BUGREPORT='http://trac.gajim.org/newticket' +PACKAGE_STRING='Gajim - A Jabber Instant Messager 0.11.0' +PACKAGE_BUGREPORT='http://trac.gajim.org/' # Factoring default headers for most tests. ac_includes_default="\ @@ -901,17 +901,21 @@ POFILES POSUB MKINSTALLDIRS PKG_CONFIG -DBUS_CFLAGS -DBUS_LIBS PYGTK_CFLAGS PYGTK_LIBS PYGTK_DEFS +DBUS_CFLAGS +DBUS_LIBS +BUILD_REMOTE_CONTROL_TRUE +BUILD_REMOTE_CONTROL_FALSE GTKSPELL_CFLAGS GTKSPELL_LIBS BUILD_GTKSPELL_TRUE BUILD_GTKSPELL_FALSE XSCRNSAVER_CFLAGS XSCRNSAVER_LIBS +BUILD_IDLE_TRUE +BUILD_IDLE_FALSE PYTHON PYTHON_VERSION PYTHON_PREFIX @@ -921,6 +925,8 @@ pythondir pkgpythondir pyexecdir pkgpyexecdir +BUILD_TRAYICON_TRUE +BUILD_TRAYICON_FALSE PYTHON_INCLUDES LIBOBJS LTLIBOBJS' @@ -941,10 +947,10 @@ F77 FFLAGS XMKMF PKG_CONFIG -DBUS_CFLAGS -DBUS_LIBS PYGTK_CFLAGS PYGTK_LIBS +DBUS_CFLAGS +DBUS_LIBS GTKSPELL_CFLAGS GTKSPELL_LIBS XSCRNSAVER_CFLAGS @@ -1451,7 +1457,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures Gajim 0.11.0 to adapt to many kinds of systems. +\`configure' configures Gajim - A Jabber Instant Messager 0.11.0 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1525,7 +1531,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of Gajim 0.11.0:";; + short | recursive ) echo "Configuration of Gajim - A Jabber Instant Messager 0.11.0:";; esac cat <<\_ACEOF @@ -1541,7 +1547,11 @@ Optional Features: --enable-fast-install[=PKGS] optimize for fast installation [default=yes] --disable-libtool-lock avoid locking (might break parallel builds) - --enable-gtkspell build spell checking support default auto + --disable-nls do not use Native Language Support + --disable-remote enable remote control via DBus default auto + --disable-gtkspell build spell checking support default auto + --disable-idle build idle module default auto + --disable-trayicon build trayicon module default yes Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] @@ -1567,11 +1577,11 @@ Some influential environment variables: FFLAGS Fortran 77 compiler flags XMKMF Path to xmkmf, Makefile generator for X Window System PKG_CONFIG path to pkg-config utility - DBUS_CFLAGS C compiler flags for DBUS, overriding pkg-config - DBUS_LIBS linker flags for DBUS, overriding pkg-config PYGTK_CFLAGS C compiler flags for PYGTK, overriding pkg-config PYGTK_LIBS linker flags for PYGTK, overriding pkg-config + DBUS_CFLAGS C compiler flags for DBUS, overriding pkg-config + DBUS_LIBS linker flags for DBUS, overriding pkg-config GTKSPELL_CFLAGS C compiler flags for GTKSPELL, overriding pkg-config GTKSPELL_LIBS @@ -1584,7 +1594,7 @@ Some influential environment variables: Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. -Report bugs to . +Report bugs to . _ACEOF ac_status=$? fi @@ -1645,7 +1655,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -Gajim configure 0.11.0 +Gajim - A Jabber Instant Messager configure 0.11.0 generated by GNU Autoconf 2.60 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, @@ -1659,7 +1669,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by Gajim $as_me 0.11.0, which was +It was created by Gajim - A Jabber Instant Messager $as_me 0.11.0, which was generated by GNU Autoconf 2.60. Invocation command line was $ $0 $@ @@ -2815,7 +2825,6 @@ ac_config_commands="$ac_config_commands intltool" - # Check whether --enable-static was given. if test "${enable_static+set}" = set; then enableval=$enable_static; p=${PACKAGE-default} @@ -5891,7 +5900,7 @@ ia64-*-hpux*) ;; *-*-irix6*) # Find out which ABI we are using. - echo '#line 5894 "configure"' > conftest.$ac_ext + echo '#line 5903 "configure"' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? @@ -6763,9 +6772,9 @@ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >& { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX -## ---------------------------------------------- ## -## Report this to http://trac.gajim.org/newticket ## -## ---------------------------------------------- ## +## ------------------------------------- ## +## Report this to http://trac.gajim.org/ ## +## ------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; @@ -8916,11 +8925,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:8919: $lt_compile\"" >&5) + (eval echo "\"\$as_me:8928: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:8923: \$? = $ac_status" >&5 + echo "$as_me:8932: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -9184,11 +9193,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:9187: $lt_compile\"" >&5) + (eval echo "\"\$as_me:9196: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:9191: \$? = $ac_status" >&5 + echo "$as_me:9200: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -9288,11 +9297,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:9291: $lt_compile\"" >&5) + (eval echo "\"\$as_me:9300: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:9295: \$? = $ac_status" >&5 + echo "$as_me:9304: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -11777,7 +11786,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < conftest.$ac_ext <&5) + (eval echo "\"\$as_me:14257: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:14252: \$? = $ac_status" >&5 + echo "$as_me:14261: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -14349,11 +14358,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:14352: $lt_compile\"" >&5) + (eval echo "\"\$as_me:14361: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:14356: \$? = $ac_status" >&5 + echo "$as_me:14365: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -15956,11 +15965,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:15959: $lt_compile\"" >&5) + (eval echo "\"\$as_me:15968: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:15963: \$? = $ac_status" >&5 + echo "$as_me:15972: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -16060,11 +16069,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:16063: $lt_compile\"" >&5) + (eval echo "\"\$as_me:16072: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:16067: \$? = $ac_status" >&5 + echo "$as_me:16076: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -18327,11 +18336,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:18330: $lt_compile\"" >&5) + (eval echo "\"\$as_me:18339: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:18334: \$? = $ac_status" >&5 + echo "$as_me:18343: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -18595,11 +18604,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:18598: $lt_compile\"" >&5) + (eval echo "\"\$as_me:18607: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:18602: \$? = $ac_status" >&5 + echo "$as_me:18611: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -18699,11 +18708,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:18702: $lt_compile\"" >&5) + (eval echo "\"\$as_me:18711: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:18706: \$? = $ac_status" >&5 + echo "$as_me:18715: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -21430,6 +21439,298 @@ LIBTOOL='$(SHELL) $(top_builddir)/libtool' +{ echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5 +echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6; } +if test "${ac_cv_c_const+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +/* FIXME: Include the comments suggested by Paul. */ +#ifndef __cplusplus + /* Ultrix mips cc rejects this. */ + typedef int charset[2]; + const charset x; + /* SunOS 4.1.1 cc rejects this. */ + char const *const *ccp; + char **p; + /* NEC SVR4.0.2 mips cc rejects this. */ + struct point {int x, y;}; + static struct point const zero = {0,0}; + /* AIX XL C 1.02.0.0 rejects this. + It does not let you subtract one const X* pointer from another in + an arm of an if-expression whose if-part is not a constant + expression */ + const char *g = "string"; + ccp = &g + (g ? g-g : 0); + /* HPUX 7.0 cc rejects these. */ + ++ccp; + p = (char**) ccp; + ccp = (char const *const *) p; + { /* SCO 3.2v4 cc rejects this. */ + char *t; + char const *s = 0 ? (char *) 0 : (char const *) 0; + + *t++ = 0; + if (s) return 0; + } + { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ + int x[] = {25, 17}; + const int *foo = &x[0]; + ++foo; + } + { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ + typedef const int *iptr; + iptr p = 0; + ++p; + } + { /* AIX XL C 1.02.0.0 rejects this saying + "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ + struct s { int j; const int *ap[3]; }; + struct s *b; b->j = 5; + } + { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ + const int foo = 10; + if (!foo) return 0; + } + return !x[0] && !zero.x; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_c_const=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_c_const=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5 +echo "${ECHO_T}$ac_cv_c_const" >&6; } +if test $ac_cv_c_const = no; then + +cat >>confdefs.h <<\_ACEOF +#define const +_ACEOF + +fi + + +for ac_header in libintl.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + { echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } +else + # Is the header compilable? +{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_compiler=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6; } + +# Is the header present? +{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi + +rm -f conftest.err conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + ( cat <<\_ASBOX +## ------------------------------------- ## +## Report this to http://trac.gajim.org/ ## +## ------------------------------------- ## +_ASBOX + ) | sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +{ echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + { echo "$as_me:$LINENO: checking for X" >&5 echo $ECHO_N "checking for X... $ECHO_C" >&6; } @@ -21693,6 +21994,7 @@ echo "${ECHO_T}libraries $x_libraries, headers $x_includes" >&6; } fi + GETTEXT_PACKAGE=gajim @@ -21843,9 +22145,9 @@ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >& { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX -## ---------------------------------------------- ## -## Report this to http://trac.gajim.org/newticket ## -## ---------------------------------------------- ## +## ------------------------------------- ## +## Report this to http://trac.gajim.org/ ## +## ------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; @@ -22092,9 +22394,9 @@ echo "$as_me: WARNING: libintl.h: proceeding with the preprocessor's result" >&2 { echo "$as_me:$LINENO: WARNING: libintl.h: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: libintl.h: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX -## ---------------------------------------------- ## -## Report this to http://trac.gajim.org/newticket ## -## ---------------------------------------------- ## +## ------------------------------------- ## +## Report this to http://trac.gajim.org/ ## +## ------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; @@ -23455,6 +23757,21 @@ echo "${ECHO_T}$LINGUAS" >&6; } < $srcdir/po/POTFILES.in > po/POTFILES + { echo "$as_me:$LINENO: checking whether NLS is requested" >&5 +echo $ECHO_N "checking whether NLS is requested... $ECHO_C" >&6; } + # Check whether --enable-nls was given. +if test "${enable_nls+set}" = set; then + enableval=$enable_nls; USE_NLS=$enableval +else + USE_NLS=yes +fi + + { echo "$as_me:$LINENO: result: $USE_NLS" >&5 +echo "${ECHO_T}$USE_NLS" >&6; } + + + + if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then @@ -23576,120 +23893,6 @@ echo "${ECHO_T}no" >&6; } fi -pkg_failed=no -{ echo "$as_me:$LINENO: checking for DBUS" >&5 -echo $ECHO_N "checking for DBUS... $ECHO_C" >&6; } - -if test -n "$PKG_CONFIG"; then - if test -n "$DBUS_CFLAGS"; then - pkg_cv_DBUS_CFLAGS="$DBUS_CFLAGS" - else - if test -n "$PKG_CONFIG" && \ - { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"dbus-1 >= 0.61 dbus-glib-1 >= 0.61\"") >&5 - ($PKG_CONFIG --exists --print-errors "dbus-1 >= 0.61 dbus-glib-1 >= 0.61") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - pkg_cv_DBUS_CFLAGS=`$PKG_CONFIG --cflags "dbus-1 >= 0.61 dbus-glib-1 >= 0.61" 2>/dev/null` -else - pkg_failed=yes -fi - fi -else - pkg_failed=untried -fi -if test -n "$PKG_CONFIG"; then - if test -n "$DBUS_LIBS"; then - pkg_cv_DBUS_LIBS="$DBUS_LIBS" - else - if test -n "$PKG_CONFIG" && \ - { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"dbus-1 >= 0.61 dbus-glib-1 >= 0.61\"") >&5 - ($PKG_CONFIG --exists --print-errors "dbus-1 >= 0.61 dbus-glib-1 >= 0.61") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - pkg_cv_DBUS_LIBS=`$PKG_CONFIG --libs "dbus-1 >= 0.61 dbus-glib-1 >= 0.61" 2>/dev/null` -else - pkg_failed=yes -fi - fi -else - pkg_failed=untried -fi - - - -if test $pkg_failed = yes; then - -if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then - _pkg_short_errors_supported=yes -else - _pkg_short_errors_supported=no -fi - if test $_pkg_short_errors_supported = yes; then - DBUS_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "dbus-1 >= 0.61 dbus-glib-1 >= 0.61"` - else - DBUS_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "dbus-1 >= 0.61 dbus-glib-1 >= 0.61"` - fi - # Put the nasty error message in config.log where it belongs - echo "$DBUS_PKG_ERRORS" >&5 - - { { echo "$as_me:$LINENO: error: Package requirements (dbus-1 >= 0.61 dbus-glib-1 >= 0.61) were not met: - -$DBUS_PKG_ERRORS - -Consider adjusting the PKG_CONFIG_PATH environment variable if you -installed software in a non-standard prefix. - -Alternatively, you may set the environment variables DBUS_CFLAGS -and DBUS_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details. -" >&5 -echo "$as_me: error: Package requirements (dbus-1 >= 0.61 dbus-glib-1 >= 0.61) were not met: - -$DBUS_PKG_ERRORS - -Consider adjusting the PKG_CONFIG_PATH environment variable if you -installed software in a non-standard prefix. - -Alternatively, you may set the environment variables DBUS_CFLAGS -and DBUS_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details. -" >&2;} - { (exit 1); exit 1; }; } -elif test $pkg_failed = untried; then - { { echo "$as_me:$LINENO: error: The pkg-config script could not be found or is too old. Make sure it -is in your PATH or set the PKG_CONFIG environment variable to the full -path to pkg-config. - -Alternatively, you may set the environment variables DBUS_CFLAGS -and DBUS_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details. - -To get pkg-config, see . -See \`config.log' for more details." >&5 -echo "$as_me: error: The pkg-config script could not be found or is too old. Make sure it -is in your PATH or set the PKG_CONFIG environment variable to the full -path to pkg-config. - -Alternatively, you may set the environment variables DBUS_CFLAGS -and DBUS_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details. - -To get pkg-config, see . -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -else - DBUS_CFLAGS=$pkg_cv_DBUS_CFLAGS - DBUS_LIBS=$pkg_cv_DBUS_LIBS - { echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } - : -fi - - - - pkg_failed=no { echo "$as_me:$LINENO: checking for PYGTK" >&5 echo $ECHO_N "checking for PYGTK... $ECHO_C" >&6; } @@ -23805,9 +24008,159 @@ fi PYGTK_DEFS=`$PKG_CONFIG --variable=defsdir pygtk-2.0` +# Check whether --enable-remote was given. +if test "${enable_remote+set}" = set; then + enableval=$enable_remote; enable_remote=$enableval +else + enable_remote=auto +fi + + +if test "x$enable_remote" = "xauto"; then + if test -n "$PKG_CONFIG" && \ + { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"dbus-1\"") >&5 + ($PKG_CONFIG --exists --print-errors "dbus-1") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + enable_remote=yes +else + enable_remote=no +fi +fi + +if test "x$enable_remote" = "xyes";then + +pkg_failed=no +{ echo "$as_me:$LINENO: checking for DBUS" >&5 +echo $ECHO_N "checking for DBUS... $ECHO_C" >&6; } + +if test -n "$PKG_CONFIG"; then + if test -n "$DBUS_CFLAGS"; then + pkg_cv_DBUS_CFLAGS="$DBUS_CFLAGS" + else + if test -n "$PKG_CONFIG" && \ + { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"dbus-1 >= 0.61 dbus-glib-1 >= 0.61\"") >&5 + ($PKG_CONFIG --exists --print-errors "dbus-1 >= 0.61 dbus-glib-1 >= 0.61") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + pkg_cv_DBUS_CFLAGS=`$PKG_CONFIG --cflags "dbus-1 >= 0.61 dbus-glib-1 >= 0.61" 2>/dev/null` +else + pkg_failed=yes +fi + fi +else + pkg_failed=untried +fi +if test -n "$PKG_CONFIG"; then + if test -n "$DBUS_LIBS"; then + pkg_cv_DBUS_LIBS="$DBUS_LIBS" + else + if test -n "$PKG_CONFIG" && \ + { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"dbus-1 >= 0.61 dbus-glib-1 >= 0.61\"") >&5 + ($PKG_CONFIG --exists --print-errors "dbus-1 >= 0.61 dbus-glib-1 >= 0.61") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + pkg_cv_DBUS_LIBS=`$PKG_CONFIG --libs "dbus-1 >= 0.61 dbus-glib-1 >= 0.61" 2>/dev/null` +else + pkg_failed=yes +fi + fi +else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + DBUS_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "dbus-1 >= 0.61 dbus-glib-1 >= 0.61"` + else + DBUS_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "dbus-1 >= 0.61 dbus-glib-1 >= 0.61"` + fi + # Put the nasty error message in config.log where it belongs + echo "$DBUS_PKG_ERRORS" >&5 + + { { echo "$as_me:$LINENO: error: Package requirements (dbus-1 >= 0.61 dbus-glib-1 >= 0.61) were not met: + +$DBUS_PKG_ERRORS + +Consider adjusting the PKG_CONFIG_PATH environment variable if you +installed software in a non-standard prefix. + +Alternatively, you may set the environment variables DBUS_CFLAGS +and DBUS_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details. +" >&5 +echo "$as_me: error: Package requirements (dbus-1 >= 0.61 dbus-glib-1 >= 0.61) were not met: + +$DBUS_PKG_ERRORS + +Consider adjusting the PKG_CONFIG_PATH environment variable if you +installed software in a non-standard prefix. + +Alternatively, you may set the environment variables DBUS_CFLAGS +and DBUS_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details. +" >&2;} + { (exit 1); exit 1; }; } +elif test $pkg_failed = untried; then + { { echo "$as_me:$LINENO: error: The pkg-config script could not be found or is too old. Make sure it +is in your PATH or set the PKG_CONFIG environment variable to the full +path to pkg-config. + +Alternatively, you may set the environment variables DBUS_CFLAGS +and DBUS_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details. + +To get pkg-config, see . +See \`config.log' for more details." >&5 +echo "$as_me: error: The pkg-config script could not be found or is too old. Make sure it +is in your PATH or set the PKG_CONFIG environment variable to the full +path to pkg-config. + +Alternatively, you may set the environment variables DBUS_CFLAGS +and DBUS_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details. + +To get pkg-config, see . +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +else + DBUS_CFLAGS=$pkg_cv_DBUS_CFLAGS + DBUS_LIBS=$pkg_cv_DBUS_LIBS + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } + : +fi + + + have_remote=true +else + have_remote=false +fi + + +if $have_remote; then + BUILD_REMOTE_CONTROL_TRUE= + BUILD_REMOTE_CONTROL_FALSE='#' +else + BUILD_REMOTE_CONTROL_TRUE='#' + BUILD_REMOTE_CONTROL_FALSE= +fi + + # Check whether --enable-gtkspell was given. if test "${enable_gtkspell+set}" = set; then - enableval=$enable_gtkspell; + enableval=$enable_gtkspell; enable_gtkspell=$enableval else enable_gtkspell=auto fi @@ -23954,7 +24307,17 @@ else fi -if test -n "$PKG_CONFIG" && \ + +# Check whether --enable-idle was given. +if test "${enable_idle+set}" = set; then + enableval=$enable_idle; enable_idle=$enableval +else + enable_idle=yes +fi + + +if test "x$enable_idle" = "xyes";then + if test -n "$PKG_CONFIG" && \ { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"xscrnsaver\"") >&5 ($PKG_CONFIG --exists --print-errors "xscrnsaver") 2>&5 ac_status=$? @@ -23965,7 +24328,7 @@ else have_xscrnsaver=no fi -if test "x$have_xscrnsaver" = "xyes";then + if test "x$have_xscrnsaver" = "xyes";then pkg_failed=no { echo "$as_me:$LINENO: checking for XSCRNSAVER" >&5 @@ -24078,8 +24441,9 @@ echo "${ECHO_T}yes" >&6; } : fi -else - # Checks for libraries. + have_idle=true + else + # Checks for libraries. { echo "$as_me:$LINENO: checking for XOpenDisplay in -lX11" >&5 echo $ECHO_N "checking for XOpenDisplay in -lX11... $ECHO_C" >&6; } @@ -24341,8 +24705,25 @@ _ACEOF fi - XSCRNSAVER_LIBS=" -lX11 -lXss -lXext" + XSCRNSAVER_LIBS="$LIBS" + if test "x$XSCRNSAVER_LIBS" = "x";then + have_idle=false + else + have_idle=true + fi + fi +else + have_idle=false +fi + + +if $have_idle; then + BUILD_IDLE_TRUE= + BUILD_IDLE_FALSE='#' +else + BUILD_IDLE_TRUE='#' + BUILD_IDLE_FALSE= fi @@ -24538,6 +24919,25 @@ echo "$as_me: error: Python not found" >&2;} { (exit 1); exit 1; }; } fi +# Check whether --enable-trayicon was given. +if test "${enable_trayicon+set}" = set; then + enableval=$enable_trayicon; enable_trayicon=$enableval +else + enable_trayicon=yes +fi + +test "x$enable_trayicon" = "xyes" && have_trayicon=true || have_trayicon=false + + +if $have_trayicon; then + BUILD_TRAYICON_TRUE= + BUILD_TRAYICON_FALSE='#' +else + BUILD_TRAYICON_TRUE='#' + BUILD_TRAYICON_FALSE= +fi + + { echo "$as_me:$LINENO: checking for headers required to compile python extensions" >&5 echo $ECHO_N "checking for headers required to compile python extensions... $ECHO_C" >&6; } @@ -24737,6 +25137,13 @@ echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi +if test -z "${BUILD_REMOTE_CONTROL_TRUE}" && test -z "${BUILD_REMOTE_CONTROL_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"BUILD_REMOTE_CONTROL\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"BUILD_REMOTE_CONTROL\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi if test -z "${BUILD_GTKSPELL_TRUE}" && test -z "${BUILD_GTKSPELL_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"BUILD_GTKSPELL\" was never defined. Usually this means the macro was only invoked conditionally." >&5 @@ -24744,6 +25151,20 @@ echo "$as_me: error: conditional \"BUILD_GTKSPELL\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi +if test -z "${BUILD_IDLE_TRUE}" && test -z "${BUILD_IDLE_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"BUILD_IDLE\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"BUILD_IDLE\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${BUILD_TRAYICON_TRUE}" && test -z "${BUILD_TRAYICON_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"BUILD_TRAYICON\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"BUILD_TRAYICON\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi : ${CONFIG_STATUS=./config.status} ac_clean_files_save=$ac_clean_files @@ -25031,7 +25452,7 @@ exec 6>&1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by Gajim $as_me 0.11.0, which was +This file was extended by Gajim - A Jabber Instant Messager $as_me 0.11.0, which was generated by GNU Autoconf 2.60. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -25084,7 +25505,7 @@ Report bugs to ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF ac_cs_version="\\ -Gajim config.status 0.11.0 +Gajim - A Jabber Instant Messager config.status 0.11.0 configured by $0, generated by GNU Autoconf 2.60, with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" @@ -25470,17 +25891,21 @@ POFILES!$POFILES$ac_delim POSUB!$POSUB$ac_delim MKINSTALLDIRS!$MKINSTALLDIRS$ac_delim PKG_CONFIG!$PKG_CONFIG$ac_delim -DBUS_CFLAGS!$DBUS_CFLAGS$ac_delim -DBUS_LIBS!$DBUS_LIBS$ac_delim PYGTK_CFLAGS!$PYGTK_CFLAGS$ac_delim PYGTK_LIBS!$PYGTK_LIBS$ac_delim PYGTK_DEFS!$PYGTK_DEFS$ac_delim +DBUS_CFLAGS!$DBUS_CFLAGS$ac_delim +DBUS_LIBS!$DBUS_LIBS$ac_delim +BUILD_REMOTE_CONTROL_TRUE!$BUILD_REMOTE_CONTROL_TRUE$ac_delim +BUILD_REMOTE_CONTROL_FALSE!$BUILD_REMOTE_CONTROL_FALSE$ac_delim GTKSPELL_CFLAGS!$GTKSPELL_CFLAGS$ac_delim GTKSPELL_LIBS!$GTKSPELL_LIBS$ac_delim BUILD_GTKSPELL_TRUE!$BUILD_GTKSPELL_TRUE$ac_delim BUILD_GTKSPELL_FALSE!$BUILD_GTKSPELL_FALSE$ac_delim XSCRNSAVER_CFLAGS!$XSCRNSAVER_CFLAGS$ac_delim XSCRNSAVER_LIBS!$XSCRNSAVER_LIBS$ac_delim +BUILD_IDLE_TRUE!$BUILD_IDLE_TRUE$ac_delim +BUILD_IDLE_FALSE!$BUILD_IDLE_FALSE$ac_delim PYTHON!$PYTHON$ac_delim PYTHON_VERSION!$PYTHON_VERSION$ac_delim PYTHON_PREFIX!$PYTHON_PREFIX$ac_delim @@ -25490,12 +25915,14 @@ pythondir!$pythondir$ac_delim pkgpythondir!$pkgpythondir$ac_delim pyexecdir!$pyexecdir$ac_delim pkgpyexecdir!$pkgpyexecdir$ac_delim +BUILD_TRAYICON_TRUE!$BUILD_TRAYICON_TRUE$ac_delim +BUILD_TRAYICON_FALSE!$BUILD_TRAYICON_FALSE$ac_delim PYTHON_INCLUDES!$PYTHON_INCLUDES$ac_delim LIBOBJS!$LIBOBJS$ac_delim LTLIBOBJS!$LTLIBOBJS$ac_delim _ACEOF - if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 74; then + if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 80; then break elif $ac_last_try; then { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 @@ -26133,4 +26560,11 @@ if test "$no_create" != yes; then $ac_cs_success || { (exit 1); exit 1; } fi - +echo " +***************************** + Build features: + spell check ...... ${have_gtkspell} + idle module ...... ${have_idle} + remote control ... ${have_remote} + trayicon ......... ${have_trayicon} +*****************************" diff --git a/configure.ac b/configure.ac index 1d7805662..689392671 100644 --- a/configure.ac +++ b/configure.ac @@ -1,4 +1,5 @@ -AC_INIT([Gajim],[0.11.0],[http://trac.gajim.org/newticket],[gajim]) +AC_INIT([Gajim - A Jabber Instant Messager], + [0.11.0],[http://trac.gajim.org/],[gajim]) AM_INIT_AUTOMAKE([1.9]) AC_CONFIG_HEADER(config.h) @@ -6,7 +7,6 @@ AM_MAINTAINER_MODE IT_PROG_INTLTOOL([0.35.0]) - AM_DISABLE_STATIC AC_ENABLE_SHARED(yes) AC_ENABLE_STATIC(no) @@ -16,27 +16,55 @@ AC_PROG_CC AC_PROG_INSTALL AC_PROG_MAKE_SET AC_PROG_LIBTOOL +AC_C_CONST +AC_CHECK_HEADERS([libintl.h]) AC_PATH_X + GETTEXT_PACKAGE=gajim AC_SUBST([GETTEXT_PACKAGE]) AC_DEFINE_UNQUOTED([GETTEXT_PACKAGE],["$GETTEXT_PACKAGE"], [Gettext package]) ALL_LINGUAS="fr pt el pl es ru bg de nb cs nl pt_BR sv it eu sk no zh_CN br eo" AM_GLIB_GNU_GETTEXT +AM_NLS -PKG_CHECK_MODULES([DBUS], [dbus-1 >= 0.61 dbus-glib-1 >= 0.61]) -AC_SUBST(DBUS_CFLAGS) -AC_SUBST(DBUS_LIBS) +dnl **** +dnl pygtk and gtk+ +dnl **** PKG_CHECK_MODULES([PYGTK], [gtk+-2.0 >= 2.6.0 pygtk-2.0 >= 2.6.0]) AC_SUBST(PYGTK_CFLAGS) AC_SUBST(PYGTK_LIBS) PYGTK_DEFS=`$PKG_CONFIG --variable=defsdir pygtk-2.0` AC_SUBST(PYGTK_DEFS) +dnl ***** +dnl dbus +dnl ***** +AC_ARG_ENABLE([remote], + [ --disable-remote enable remote control via DBus [default auto]], + enable_remote=$enableval, enable_remote=auto) + +if test "x$enable_remote" = "xauto"; then + PKG_CHECK_EXISTS([dbus-1],enable_remote=yes,enable_remote=no) +fi + +if test "x$enable_remote" = "xyes";then + PKG_CHECK_MODULES([DBUS], [dbus-1 >= 0.61 dbus-glib-1 >= 0.61]) + AC_SUBST(DBUS_CFLAGS) + AC_SUBST(DBUS_LIBS) + have_remote=true +else + have_remote=false +fi +AM_CONDITIONAL(BUILD_REMOTE_CONTROL, $have_remote) + +dnl **** +dnl gtkspell +dnl **** AC_ARG_ENABLE(gtkspell, - [ --enable-gtkspell build spell checking support [default auto]],, - enable_gtkspell=auto) + [ --disable-gtkspell build spell checking support [default auto]], + enable_gtkspell=$enableval, enable_gtkspell=auto) if test "x$enable_gtkspell" = "xauto";then PKG_CHECK_EXISTS([gtkspell-2.0], [enable_gtkspell=yes], [enable_gtkspell=no]) @@ -51,30 +79,57 @@ else fi AM_CONDITIONAL(BUILD_GTKSPELL, $have_gtkspell) -PKG_CHECK_EXISTS([xscrnsaver], [have_xscrnsaver=yes], [have_xscrnsaver=no]) -if test "x$have_xscrnsaver" = "xyes";then - PKG_CHECK_MODULES([XSCRNSAVER], xscrnsaver) - AC_SUBST(XSCRNSAVER_LIBS) +dnl **** +dnl xscreensaver +dnl **** +AC_ARG_ENABLE([idle], + [ --disable-idle build idle module [default auto]], + enable_idle=$enableval, enable_idle=yes) + +if test "x$enable_idle" = "xyes";then + PKG_CHECK_EXISTS([xscrnsaver], [have_xscrnsaver=yes], [have_xscrnsaver=no]) + + if test "x$have_xscrnsaver" = "xyes";then + PKG_CHECK_MODULES([XSCRNSAVER], xscrnsaver) + AC_SUBST(XSCRNSAVER_LIBS) + have_idle=true + else + # Checks for libraries. + AC_CHECK_LIB([X11], [XOpenDisplay]) + AC_CHECK_LIB([Xext], [XMissingExtension]) + AC_CHECK_LIB([Xss], [XScreenSaverAllocInfo]) + XSCRNSAVER_LIBS="$LIBS" + AC_SUBST([XSCRNSAVER_LIBS]) + if test "x$XSCRNSAVER_LIBS" = "x";then + have_idle=false + else + have_idle=true + fi + fi else - # Checks for libraries. - AC_CHECK_LIB([X11], [XOpenDisplay]) - AC_CHECK_LIB([Xext], [XMissingExtension]) - AC_CHECK_LIB([Xss], [XScreenSaverAllocInfo]) - XSCRNSAVER_LIBS=" -lX11 -lXss -lXext" - AC_SUBST([XSCRNSAVER_LIBS]) + have_idle=false fi - +AM_CONDITIONAL(BUILD_IDLE, $have_idle) AM_PATH_PYTHON([2.4]) if test "x$PYTHON" = "x:"; then AC_MSG_ERROR([Python not found]) fi +dnl **** +dnl tray icon +dnl **** +AC_ARG_ENABLE(trayicon, + [ --disable-trayicon build trayicon module [default yes]], + enable_trayicon=$enableval, enable_trayicon=yes) +test "x$enable_trayicon" = "xyes" && have_trayicon=true || have_trayicon=false +AM_CONDITIONAL(BUILD_TRAYICON, $have_trayicon) + AM_CHECK_PYTHON_HEADERS(,[AC_MSG_ERROR(could not find Python headers)]) AC_SUBST([PYTHON_INCLUDES]) -AC_CONFIG_FILES([ +AC_CONFIG_FILES([ Makefile data/Makefile data/glade/Makefile @@ -88,4 +143,11 @@ AC_CONFIG_FILES([ po/Makefile.in ]) AC_OUTPUT - +echo " +***************************** + Build features: + spell check ...... ${have_gtkspell} + idle module ...... ${have_idle} + remote control ... ${have_remote} + trayicon ......... ${have_trayicon} +*****************************" diff --git a/data/Makefile.am b/data/Makefile.am index 197d2b6e3..43f1bb6e8 100644 --- a/data/Makefile.am +++ b/data/Makefile.am @@ -5,7 +5,7 @@ desktop_in_files = gajim.desktop.in.in desktop_DATA = $(desktop_in_files:.desktop.in.in=.desktop) soundsdir = $(pkgdatadir)/data/sounds -sounds_DATA = sounds/*.wav +sounds_DATA = $(srcdir)/sounds/*.wav otherdir = $(pkgdatadir)/data/others other_DATA = other/servers.xml diff --git a/data/Makefile.in b/data/Makefile.in index bb11e75e0..6c911b05f 100644 --- a/data/Makefile.in +++ b/data/Makefile.in @@ -41,7 +41,8 @@ DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(srcdir)/gajim.desktop.in.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/glib-gettext.m4 \ - $(top_srcdir)/m4/python.m4 $(top_srcdir)/configure.ac + $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/python.m4 \ + $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs @@ -86,6 +87,12 @@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BUILD_GTKSPELL_FALSE = @BUILD_GTKSPELL_FALSE@ BUILD_GTKSPELL_TRUE = @BUILD_GTKSPELL_TRUE@ +BUILD_IDLE_FALSE = @BUILD_IDLE_FALSE@ +BUILD_IDLE_TRUE = @BUILD_IDLE_TRUE@ +BUILD_REMOTE_CONTROL_FALSE = @BUILD_REMOTE_CONTROL_FALSE@ +BUILD_REMOTE_CONTROL_TRUE = @BUILD_REMOTE_CONTROL_TRUE@ +BUILD_TRAYICON_FALSE = @BUILD_TRAYICON_FALSE@ +BUILD_TRAYICON_TRUE = @BUILD_TRAYICON_TRUE@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ @@ -249,7 +256,7 @@ desktopdir = $(datadir)/applications desktop_in_files = gajim.desktop.in.in desktop_DATA = $(desktop_in_files:.desktop.in.in=.desktop) soundsdir = $(pkgdatadir)/data/sounds -sounds_DATA = sounds/*.wav +sounds_DATA = $(srcdir)/sounds/*.wav otherdir = $(pkgdatadir)/data/others other_DATA = other/servers.xml man_MANS = gajim.1 gajim-remote.1 @@ -271,9 +278,9 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu data/Makefile'; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign data/Makefile'; \ cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu data/Makefile + $(AUTOMAKE) --foreign data/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -533,7 +540,7 @@ distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) - $(mkdir_p) $(distdir)/other $(distdir)/sounds + $(mkdir_p) $(distdir)/$(srcdir)/sounds $(distdir)/other @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ list='$(DISTFILES)'; for file in $$list; do \ diff --git a/data/emoticons/Makefile.in b/data/emoticons/Makefile.in index e3de48d31..7452a17ae 100644 --- a/data/emoticons/Makefile.in +++ b/data/emoticons/Makefile.in @@ -40,7 +40,8 @@ subdir = data/emoticons DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/glib-gettext.m4 \ - $(top_srcdir)/m4/python.m4 $(top_srcdir)/configure.ac + $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/python.m4 \ + $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs @@ -70,6 +71,12 @@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BUILD_GTKSPELL_FALSE = @BUILD_GTKSPELL_FALSE@ BUILD_GTKSPELL_TRUE = @BUILD_GTKSPELL_TRUE@ +BUILD_IDLE_FALSE = @BUILD_IDLE_FALSE@ +BUILD_IDLE_TRUE = @BUILD_IDLE_TRUE@ +BUILD_REMOTE_CONTROL_FALSE = @BUILD_REMOTE_CONTROL_FALSE@ +BUILD_REMOTE_CONTROL_TRUE = @BUILD_REMOTE_CONTROL_TRUE@ +BUILD_TRAYICON_FALSE = @BUILD_TRAYICON_FALSE@ +BUILD_TRAYICON_TRUE = @BUILD_TRAYICON_TRUE@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ @@ -244,9 +251,9 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu data/emoticons/Makefile'; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign data/emoticons/Makefile'; \ cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu data/emoticons/Makefile + $(AUTOMAKE) --foreign data/emoticons/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ diff --git a/data/glade/Makefile.am b/data/glade/Makefile.am index 625f99635..64e112f7b 100644 --- a/data/glade/Makefile.am +++ b/data/glade/Makefile.am @@ -1,5 +1,6 @@ + gladedir = $(pkgdatadir)/data/glade -glade_DATA = *.glade +glade_DATA = $(srcdir)/*.glade EXTRA_DIST = $(glade_DATA) DISTCLEANFILES = *.h diff --git a/data/glade/Makefile.in b/data/glade/Makefile.in index bc613093a..e470ffbb9 100644 --- a/data/glade/Makefile.in +++ b/data/glade/Makefile.in @@ -40,7 +40,8 @@ subdir = data/glade DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/glib-gettext.m4 \ - $(top_srcdir)/m4/python.m4 $(top_srcdir)/configure.ac + $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/python.m4 \ + $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs @@ -70,6 +71,12 @@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BUILD_GTKSPELL_FALSE = @BUILD_GTKSPELL_FALSE@ BUILD_GTKSPELL_TRUE = @BUILD_GTKSPELL_TRUE@ +BUILD_IDLE_FALSE = @BUILD_IDLE_FALSE@ +BUILD_IDLE_TRUE = @BUILD_IDLE_TRUE@ +BUILD_REMOTE_CONTROL_FALSE = @BUILD_REMOTE_CONTROL_FALSE@ +BUILD_REMOTE_CONTROL_TRUE = @BUILD_REMOTE_CONTROL_TRUE@ +BUILD_TRAYICON_FALSE = @BUILD_TRAYICON_FALSE@ +BUILD_TRAYICON_TRUE = @BUILD_TRAYICON_TRUE@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ @@ -229,7 +236,7 @@ sharedstatedir = @sharedstatedir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ gladedir = $(pkgdatadir)/data/glade -glade_DATA = *.glade +glade_DATA = $(srcdir)/*.glade EXTRA_DIST = $(glade_DATA) DISTCLEANFILES = *.h all: all-am @@ -244,9 +251,9 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu data/glade/Makefile'; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign data/glade/Makefile'; \ cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu data/glade/Makefile + $(AUTOMAKE) --foreign data/glade/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -299,6 +306,7 @@ CTAGS: distdir: $(DISTFILES) + $(mkdir_p) $(distdir)/$(srcdir) @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ list='$(DISTFILES)'; for file in $$list; do \ diff --git a/data/iconsets/Makefile.in b/data/iconsets/Makefile.in index ec04cccd2..f818baaa8 100644 --- a/data/iconsets/Makefile.in +++ b/data/iconsets/Makefile.in @@ -40,7 +40,8 @@ subdir = data/iconsets DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/glib-gettext.m4 \ - $(top_srcdir)/m4/python.m4 $(top_srcdir)/configure.ac + $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/python.m4 \ + $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs @@ -70,6 +71,12 @@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BUILD_GTKSPELL_FALSE = @BUILD_GTKSPELL_FALSE@ BUILD_GTKSPELL_TRUE = @BUILD_GTKSPELL_TRUE@ +BUILD_IDLE_FALSE = @BUILD_IDLE_FALSE@ +BUILD_IDLE_TRUE = @BUILD_IDLE_TRUE@ +BUILD_REMOTE_CONTROL_FALSE = @BUILD_REMOTE_CONTROL_FALSE@ +BUILD_REMOTE_CONTROL_TRUE = @BUILD_REMOTE_CONTROL_TRUE@ +BUILD_TRAYICON_FALSE = @BUILD_TRAYICON_FALSE@ +BUILD_TRAYICON_TRUE = @BUILD_TRAYICON_TRUE@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ @@ -248,9 +255,9 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu data/iconsets/Makefile'; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign data/iconsets/Makefile'; \ cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu data/iconsets/Makefile + $(AUTOMAKE) --foreign data/iconsets/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ diff --git a/data/pixmaps/Makefile.am b/data/pixmaps/Makefile.am index 1243beba6..868898df9 100644 --- a/data/pixmaps/Makefile.am +++ b/data/pixmaps/Makefile.am @@ -1,6 +1,6 @@ pixmapsdir = $(pkgdatadir)/data/pixmaps -pixmaps_DATA = *.png \ +pixmaps_DATA = $(srcdir)/*.png \ gajim.ico \ - events/*.png \ - agents/*.png + $(srcdir)/events/*.png \ + $(srcdir)/agents/*.png EXTRA_DIST = $(pixmaps_DATA) diff --git a/data/pixmaps/Makefile.in b/data/pixmaps/Makefile.in index 2037fd50a..4d1c4db9d 100644 --- a/data/pixmaps/Makefile.in +++ b/data/pixmaps/Makefile.in @@ -40,7 +40,8 @@ subdir = data/pixmaps DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/glib-gettext.m4 \ - $(top_srcdir)/m4/python.m4 $(top_srcdir)/configure.ac + $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/python.m4 \ + $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs @@ -70,6 +71,12 @@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BUILD_GTKSPELL_FALSE = @BUILD_GTKSPELL_FALSE@ BUILD_GTKSPELL_TRUE = @BUILD_GTKSPELL_TRUE@ +BUILD_IDLE_FALSE = @BUILD_IDLE_FALSE@ +BUILD_IDLE_TRUE = @BUILD_IDLE_TRUE@ +BUILD_REMOTE_CONTROL_FALSE = @BUILD_REMOTE_CONTROL_FALSE@ +BUILD_REMOTE_CONTROL_TRUE = @BUILD_REMOTE_CONTROL_TRUE@ +BUILD_TRAYICON_FALSE = @BUILD_TRAYICON_FALSE@ +BUILD_TRAYICON_TRUE = @BUILD_TRAYICON_TRUE@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ @@ -229,10 +236,10 @@ sharedstatedir = @sharedstatedir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ pixmapsdir = $(pkgdatadir)/data/pixmaps -pixmaps_DATA = *.png \ +pixmaps_DATA = $(srcdir)/*.png \ gajim.ico \ - events/*.png \ - agents/*.png + $(srcdir)/events/*.png \ + $(srcdir)/agents/*.png EXTRA_DIST = $(pixmaps_DATA) all: all-am @@ -247,9 +254,9 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu data/pixmaps/Makefile'; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign data/pixmaps/Makefile'; \ cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu data/pixmaps/Makefile + $(AUTOMAKE) --foreign data/pixmaps/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -302,7 +309,7 @@ CTAGS: distdir: $(DISTFILES) - $(mkdir_p) $(distdir)/agents $(distdir)/events + $(mkdir_p) $(distdir)/$(srcdir) $(distdir)/$(srcdir)/agents $(distdir)/$(srcdir)/events @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ list='$(DISTFILES)'; for file in $$list; do \ diff --git a/m4/nls.m4 b/m4/nls.m4 new file mode 100644 index 000000000..7967cc2f9 --- /dev/null +++ b/m4/nls.m4 @@ -0,0 +1,31 @@ +# nls.m4 serial 3 (gettext-0.15) +dnl Copyright (C) 1995-2003, 2005-2006 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. +dnl +dnl This file can can be used in projects which are not available under +dnl the GNU General Public License or the GNU Library General Public +dnl License but which still want to provide support for the GNU gettext +dnl functionality. +dnl Please note that the actual code of the GNU gettext library is covered +dnl by the GNU Library General Public License, and the rest of the GNU +dnl gettext package package is covered by the GNU General Public License. +dnl They are *not* in the public domain. + +dnl Authors: +dnl Ulrich Drepper , 1995-2000. +dnl Bruno Haible , 2000-2003. + +AC_PREREQ(2.50) + +AC_DEFUN([AM_NLS], +[ + AC_MSG_CHECKING([whether NLS is requested]) + dnl Default is enabled NLS + AC_ARG_ENABLE(nls, + [ --disable-nls do not use Native Language Support], + USE_NLS=$enableval, USE_NLS=yes) + AC_MSG_RESULT($USE_NLS) + AC_SUBST(USE_NLS) +]) diff --git a/po/POTFILES.in b/po/POTFILES.in index fa1a11b6e..5bf9ba2c6 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -1,54 +1,59 @@ -# ls gajim.desktop.in src/gtkgui.glade.h src/history_manager.glade.h -# src/*py src/common/*py -1 -U in trunk +# ls data/gajim.desktop.in.in data/glade/*.glade src/*py +# src/common/*py src/common/zeroconf/*.py -1 -U # to produce this list [encoding: UTF-8] -gajim.desktop.in -data/glade/account_context_menu.glade.h -data/glade/account_creation_wizard_window.glade.h -data/glade/account_modification_window.glade.h -data/glade/accounts_window.glade.h -data/glade/add_new_contact_window.glade.h -data/glade/advanced_configuration_window.glade.h -data/glade/advanced_menuitem_menu.glade.h -data/glade/advanced_notifications_window.glade.h -data/glade/change_password_dialog.glade.h -data/glade/change_status_message_dialog.glade.h -data/glade/chat_context_menu.glade.h -data/glade/chat_control_popup_menu.glade.h -data/glade/choose_gpg_key_dialog.glade.h -data/glade/data_form_window.glade.h -data/glade/edit_groups_dialog.glade.h -data/glade/filetransfers.glade.h -data/glade/gajim_themes_window.glade.h -data/glade/gc_control_popup_menu.glade.h -data/glade/gc_occupants_menu.glade.h -data/glade/history_manager.glade.h -data/glade/history_window.glade.h -data/glade/input_dialog.glade.h -data/glade/invitation_received_dialog.glade.h -data/glade/join_groupchat_window.glade.h -data/glade/manage_accounts_window.glade.h -data/glade/manage_bookmarks_window.glade.h -data/glade/manage_proxies_window.glade.h -data/glade/message_window.glade.h -data/glade/passphrase_dialog.glade.h -data/glade/popup_notification_window.glade.h -data/glade/preferences_window.glade.h -data/glade/privacy_list_window.glade.h -data/glade/privacy_lists_window.glade.h -data/glade/profile_window.glade.h -data/glade/progress_dialog.glade.h -data/glade/remove_account_window.glade.h -data/glade/roster_contact_context_menu.glade.h -data/glade/roster_window.glade.h -data/glade/service_discovery_window.glade.h -data/glade/service_registration_window.glade.h -data/glade/single_message_window.glade.h -data/glade/subscription_request_window.glade.h -data/glade/systray_context_menu.glade.h -data/glade/vcard_information_window.glade.h -data/glade/xml_console_window.glade.h +data/gajim.desktop.in.in +data/glade/account_context_menu.glade +data/glade/account_creation_wizard_window.glade +data/glade/account_modification_window.glade +data/glade/accounts_window.glade +data/glade/add_new_contact_window.glade +data/glade/advanced_configuration_window.glade +data/glade/advanced_menuitem_menu.glade +data/glade/advanced_notifications_window.glade +data/glade/change_password_dialog.glade +data/glade/change_status_message_dialog.glade +data/glade/chat_context_menu.glade +data/glade/chat_control_popup_menu.glade +data/glade/choose_gpg_key_dialog.glade +data/glade/data_form_window.glade +data/glade/edit_groups_dialog.glade +data/glade/filetransfers.glade +data/glade/gajim_themes_window.glade +data/glade/gc_control_popup_menu.glade +data/glade/gc_occupants_menu.glade +data/glade/history_manager.glade +data/glade/history_window.glade +data/glade/input_dialog.glade +data/glade/invitation_received_dialog.glade +data/glade/join_groupchat_window.glade +data/glade/manage_accounts_window.glade +data/glade/manage_bookmarks_window.glade +data/glade/manage_proxies_window.glade +data/glade/message_window.glade +data/glade/passphrase_dialog.glade +data/glade/popup_notification_window.glade +data/glade/preferences_window.glade +data/glade/privacy_lists_window.glade +data/glade/privacy_list_window.glade +data/glade/profile_window.glade +data/glade/progress_dialog.glade +data/glade/remove_account_window.glade +data/glade/roster_contact_context_menu.glade +data/glade/roster_window.glade +data/glade/service_discovery_window.glade +data/glade/service_registration_window.glade +data/glade/single_message_window.glade +data/glade/subscription_request_popup_menu.glade +data/glade/subscription_request_window.glade +data/glade/systray_context_menu.glade +data/glade/vcard_information_window.glade +data/glade/xml_console_window.glade +data/glade/zeroconf_contact_context_menu.glade +data/glade/zeroconf_context_menu.glade +data/glade/zeroconf_information_window.glade +data/glade/zeroconf_properties_window.glade src/advanced.py src/cell_renderer_image.py src/chat_control.py @@ -58,35 +63,52 @@ src/dbus_support.py src/dialogs.py src/disco.py src/filetransfers_window.py -src/gajim-remote.py src/gajim.py +src/gajim-remote.py src/gajim_themes_window.py src/groupchat_control.py src/gtkexcepthook.py src/gtkgui_helpers.py src/history_manager.py src/history_window.py +src/htmltextview.py src/message_control.py src/message_textview.py src/message_window.py +src/music_track_listener.py src/notify.py +src/profile_window.py src/remote_control.py src/roster_window.py +src/rst_xhtml_generator.py src/systray.py src/systraywin32.py src/tooltips.py src/vcard.py src/common/check_paths.py -src/common/exceptions.py -src/common/GnuPG.py -src/common/GnuPGInterface.py src/common/config.py -src/common/connection.py src/common/connection_handlers.py +src/common/connection.py +src/common/contacts.py +src/common/dbus_support.py +src/common/events.py +src/common/exceptions.py +src/common/fuzzyclock.py src/common/gajim.py +src/common/GnuPGInterface.py +src/common/GnuPG.py src/common/helpers.py src/common/i18n.py +src/common/__init__.py src/common/logger.py +src/common/nslookup.py src/common/optparser.py +src/common/proxy65_manager.py src/common/sleepy.py src/common/socks5.py +src/common/xmpp_stringprep.py +src/common/zeroconf/client_zeroconf.py +src/common/zeroconf/connection_handlers_zeroconf.py +src/common/zeroconf/connection_zeroconf.py +src/common/zeroconf/__init__.py +src/common/zeroconf/roster_zeroconf.py diff --git a/src/Makefile.am b/src/Makefile.am index 608409f1a..98fd6a15f 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -20,7 +20,7 @@ gtkspell_la_LDFLAGS = \ gtkspell_la_CFLAGS = $(GTKSPELL_CFLAGS) $(PYGTK_CFLAGS) endif - +if BUILD_TRAYICON trayiconlib_LTLIBRARIES = trayicon.la trayiconlibdir = $(libdir)/gajim trayicon_la_LIBADD = $(PYGTK_LIBS) @@ -33,27 +33,27 @@ trayicon_la_LDFLAGS = \ -module -avoid-version trayicon_la_CFLAGS = $(PYGTK_CFLAGS) -trayicon.c: trayicon.defs trayicon.override +trayicon.c: pygtk-codegen-2.0 --prefix trayicon \ --register $(PYGTK_DEFS)/gdk-types.defs \ --register $(PYGTK_DEFS)/gtk-types.defs \ - --override trayicon.override \ - trayicon.defs > $@ - + --override $(srcdir)/trayicon.override \ + $(srcdir)/trayicon.defs > $@ +endif gajimsrcdir = $(pkgdatadir)/src -gajimsrc_DATA = *.py +gajimsrc_DATA = $(srcdir)/*.py gajimsrc1dir = $(pkgdatadir)/src/common gajimsrc1_DATA = \ - common/*.py + $(srcdir)/common/*.py gajimsrc2dir = $(pkgdatadir)/src/common/xmpp gajimsrc2_DATA = \ - common/xmpp/*.py + $(srcdir)/common/xmpp/*.py gajimsrc3dir = $(pkgdatadir)/src/common/zeroconf gajimsrc3_DATA = \ - common/zeroconf/*.py + $(srcdir)/common/zeroconf/*.py EXTRA_DIST = $(gajimsrc_DATA) \ $(gajimsrc1_DATA) \ diff --git a/src/Makefile.in b/src/Makefile.in index 3dd32bf57..726d0b2c2 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -41,7 +41,8 @@ subdir = src DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/glib-gettext.m4 \ - $(top_srcdir)/m4/python.m4 $(top_srcdir)/configure.ac + $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/python.m4 \ + $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs @@ -68,12 +69,16 @@ am__gtkspell_la_SOURCES_DIST = gtkspellmodule.c @BUILD_GTKSPELL_TRUE@ gtkspell_la-gtkspellmodule.lo gtkspell_la_OBJECTS = $(am_gtkspell_la_OBJECTS) @BUILD_GTKSPELL_TRUE@am_gtkspell_la_rpath = -rpath $(gtkspelllibdir) -trayicon_la_DEPENDENCIES = $(am__DEPENDENCIES_1) -am_trayicon_la_OBJECTS = trayicon_la-eggtrayicon.lo \ - trayicon_la-trayiconmodule.lo -nodist_trayicon_la_OBJECTS = trayicon_la-trayicon.lo +@BUILD_TRAYICON_TRUE@trayicon_la_DEPENDENCIES = $(am__DEPENDENCIES_1) +am__trayicon_la_SOURCES_DIST = eggtrayicon.c trayiconmodule.c +@BUILD_TRAYICON_TRUE@am_trayicon_la_OBJECTS = \ +@BUILD_TRAYICON_TRUE@ trayicon_la-eggtrayicon.lo \ +@BUILD_TRAYICON_TRUE@ trayicon_la-trayiconmodule.lo +@BUILD_TRAYICON_TRUE@nodist_trayicon_la_OBJECTS = \ +@BUILD_TRAYICON_TRUE@ trayicon_la-trayicon.lo trayicon_la_OBJECTS = $(am_trayicon_la_OBJECTS) \ $(nodist_trayicon_la_OBJECTS) +@BUILD_TRAYICON_TRUE@am_trayicon_la_rpath = -rpath $(trayiconlibdir) DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -87,7 +92,8 @@ LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ SOURCES = $(gtkspell_la_SOURCES) $(trayicon_la_SOURCES) \ $(nodist_trayicon_la_SOURCES) -DIST_SOURCES = $(am__gtkspell_la_SOURCES_DIST) $(trayicon_la_SOURCES) +DIST_SOURCES = $(am__gtkspell_la_SOURCES_DIST) \ + $(am__trayicon_la_SOURCES_DIST) RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-exec-recursive install-info-recursive \ @@ -116,6 +122,12 @@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BUILD_GTKSPELL_FALSE = @BUILD_GTKSPELL_FALSE@ BUILD_GTKSPELL_TRUE = @BUILD_GTKSPELL_TRUE@ +BUILD_IDLE_FALSE = @BUILD_IDLE_FALSE@ +BUILD_IDLE_TRUE = @BUILD_IDLE_TRUE@ +BUILD_REMOTE_CONTROL_FALSE = @BUILD_REMOTE_CONTROL_FALSE@ +BUILD_REMOTE_CONTROL_TRUE = @BUILD_REMOTE_CONTROL_TRUE@ +BUILD_TRAYICON_FALSE = @BUILD_TRAYICON_FALSE@ +BUILD_TRAYICON_TRUE = @BUILD_TRAYICON_TRUE@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ @@ -293,33 +305,33 @@ INCLUDES = \ @BUILD_GTKSPELL_TRUE@ -module -avoid-version @BUILD_GTKSPELL_TRUE@gtkspell_la_CFLAGS = $(GTKSPELL_CFLAGS) $(PYGTK_CFLAGS) -trayiconlib_LTLIBRARIES = trayicon.la -trayiconlibdir = $(libdir)/gajim -trayicon_la_LIBADD = $(PYGTK_LIBS) -trayicon_la_SOURCES = \ - eggtrayicon.c \ - trayiconmodule.c +@BUILD_TRAYICON_TRUE@trayiconlib_LTLIBRARIES = trayicon.la +@BUILD_TRAYICON_TRUE@trayiconlibdir = $(libdir)/gajim +@BUILD_TRAYICON_TRUE@trayicon_la_LIBADD = $(PYGTK_LIBS) +@BUILD_TRAYICON_TRUE@trayicon_la_SOURCES = \ +@BUILD_TRAYICON_TRUE@ eggtrayicon.c \ +@BUILD_TRAYICON_TRUE@ trayiconmodule.c -nodist_trayicon_la_SOURCES = \ - trayicon.c +@BUILD_TRAYICON_TRUE@nodist_trayicon_la_SOURCES = \ +@BUILD_TRAYICON_TRUE@ trayicon.c -trayicon_la_LDFLAGS = \ - -module -avoid-version +@BUILD_TRAYICON_TRUE@trayicon_la_LDFLAGS = \ +@BUILD_TRAYICON_TRUE@ -module -avoid-version -trayicon_la_CFLAGS = $(PYGTK_CFLAGS) +@BUILD_TRAYICON_TRUE@trayicon_la_CFLAGS = $(PYGTK_CFLAGS) gajimsrcdir = $(pkgdatadir)/src -gajimsrc_DATA = *.py +gajimsrc_DATA = $(srcdir)/*.py gajimsrc1dir = $(pkgdatadir)/src/common gajimsrc1_DATA = \ - common/*.py + $(srcdir)/common/*.py gajimsrc2dir = $(pkgdatadir)/src/common/xmpp gajimsrc2_DATA = \ - common/xmpp/*.py + $(srcdir)/common/xmpp/*.py gajimsrc3dir = $(pkgdatadir)/src/common/zeroconf gajimsrc3_DATA = \ - common/zeroconf/*.py + $(srcdir)/common/zeroconf/*.py EXTRA_DIST = $(gajimsrc_DATA) \ $(gajimsrc1_DATA) \ @@ -345,9 +357,9 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/Makefile'; \ cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu src/Makefile + $(AUTOMAKE) --foreign src/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -422,7 +434,7 @@ clean-trayiconlibLTLIBRARIES: gtkspell.la: $(gtkspell_la_OBJECTS) $(gtkspell_la_DEPENDENCIES) $(LINK) $(am_gtkspell_la_rpath) $(gtkspell_la_LDFLAGS) $(gtkspell_la_OBJECTS) $(gtkspell_la_LIBADD) $(LIBS) trayicon.la: $(trayicon_la_OBJECTS) $(trayicon_la_DEPENDENCIES) - $(LINK) -rpath $(trayiconlibdir) $(trayicon_la_LDFLAGS) $(trayicon_la_OBJECTS) $(trayicon_la_LIBADD) $(LIBS) + $(LINK) $(am_trayicon_la_rpath) $(trayicon_la_LDFLAGS) $(trayicon_la_OBJECTS) $(trayicon_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) @@ -695,7 +707,7 @@ distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) - $(mkdir_p) $(distdir)/common $(distdir)/common/xmpp $(distdir)/common/zeroconf + $(mkdir_p) $(distdir)/$(srcdir) $(distdir)/$(srcdir)/common $(distdir)/$(srcdir)/common/xmpp $(distdir)/$(srcdir)/common/zeroconf @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ list='$(DISTFILES)'; for file in $$list; do \ @@ -850,12 +862,12 @@ uninstall-info: uninstall-info-recursive uninstall-trayiconlibLTLIBRARIES -trayicon.c: trayicon.defs trayicon.override - pygtk-codegen-2.0 --prefix trayicon \ - --register $(PYGTK_DEFS)/gdk-types.defs \ - --register $(PYGTK_DEFS)/gtk-types.defs \ - --override trayicon.override \ - trayicon.defs > $@ +@BUILD_TRAYICON_TRUE@trayicon.c: +@BUILD_TRAYICON_TRUE@ pygtk-codegen-2.0 --prefix trayicon \ +@BUILD_TRAYICON_TRUE@ --register $(PYGTK_DEFS)/gdk-types.defs \ +@BUILD_TRAYICON_TRUE@ --register $(PYGTK_DEFS)/gtk-types.defs \ +@BUILD_TRAYICON_TRUE@ --override $(srcdir)/trayicon.override \ +@BUILD_TRAYICON_TRUE@ $(srcdir)/trayicon.defs > $@ # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: diff --git a/src/common/Makefile.am b/src/common/Makefile.am index 0b28a0f42..2f22417ab 100644 --- a/src/common/Makefile.am +++ b/src/common/Makefile.am @@ -1,7 +1,7 @@ INCLUDES = \ $(PYTHON_INCLUDES) - +if BUILD_IDLE idlelib_LTLIBRARIES = idle.la idlelibdir = $(libdir)/gajim @@ -13,4 +13,4 @@ idle_la_LDFLAGS = \ -module -avoid-version idle_la_CFLAGS = $(XSCREENSAVER_CFLAGS) $(PYTHON_INCLUDES) - +endif diff --git a/src/common/Makefile.in b/src/common/Makefile.in index 145b6dbf6..fae707d6f 100644 --- a/src/common/Makefile.in +++ b/src/common/Makefile.in @@ -40,7 +40,8 @@ subdir = src/common DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/glib-gettext.m4 \ - $(top_srcdir)/m4/python.m4 $(top_srcdir)/configure.ac + $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/python.m4 \ + $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs @@ -56,8 +57,10 @@ am__installdirs = "$(DESTDIR)$(idlelibdir)" idlelibLTLIBRARIES_INSTALL = $(INSTALL) LTLIBRARIES = $(idlelib_LTLIBRARIES) idle_la_DEPENDENCIES = -am_idle_la_OBJECTS = idle_la-idle.lo +am__idle_la_SOURCES_DIST = idle.c +@BUILD_IDLE_TRUE@am_idle_la_OBJECTS = idle_la-idle.lo idle_la_OBJECTS = $(am_idle_la_OBJECTS) +@BUILD_IDLE_TRUE@am_idle_la_rpath = -rpath $(idlelibdir) DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -70,7 +73,7 @@ CCLD = $(CC) LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ SOURCES = $(idle_la_SOURCES) -DIST_SOURCES = $(idle_la_SOURCES) +DIST_SOURCES = $(am__idle_la_SOURCES_DIST) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -86,6 +89,12 @@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BUILD_GTKSPELL_FALSE = @BUILD_GTKSPELL_FALSE@ BUILD_GTKSPELL_TRUE = @BUILD_GTKSPELL_TRUE@ +BUILD_IDLE_FALSE = @BUILD_IDLE_FALSE@ +BUILD_IDLE_TRUE = @BUILD_IDLE_TRUE@ +BUILD_REMOTE_CONTROL_FALSE = @BUILD_REMOTE_CONTROL_FALSE@ +BUILD_REMOTE_CONTROL_TRUE = @BUILD_REMOTE_CONTROL_TRUE@ +BUILD_TRAYICON_FALSE = @BUILD_TRAYICON_FALSE@ +BUILD_TRAYICON_TRUE = @BUILD_TRAYICON_TRUE@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ @@ -247,14 +256,14 @@ target_alias = @target_alias@ INCLUDES = \ $(PYTHON_INCLUDES) -idlelib_LTLIBRARIES = idle.la -idlelibdir = $(libdir)/gajim -idle_la_LIBADD = $(XSCREENSAVER_LIBS) -idle_la_SOURCES = idle.c -idle_la_LDFLAGS = \ - -module -avoid-version +@BUILD_IDLE_TRUE@idlelib_LTLIBRARIES = idle.la +@BUILD_IDLE_TRUE@idlelibdir = $(libdir)/gajim +@BUILD_IDLE_TRUE@idle_la_LIBADD = $(XSCREENSAVER_LIBS) +@BUILD_IDLE_TRUE@idle_la_SOURCES = idle.c +@BUILD_IDLE_TRUE@idle_la_LDFLAGS = \ +@BUILD_IDLE_TRUE@ -module -avoid-version -idle_la_CFLAGS = $(XSCREENSAVER_CFLAGS) $(PYTHON_INCLUDES) +@BUILD_IDLE_TRUE@idle_la_CFLAGS = $(XSCREENSAVER_CFLAGS) $(PYTHON_INCLUDES) all: all-am .SUFFIXES: @@ -268,9 +277,9 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/common/Makefile'; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/common/Makefile'; \ cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu src/common/Makefile + $(AUTOMAKE) --foreign src/common/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -316,7 +325,7 @@ clean-idlelibLTLIBRARIES: rm -f "$${dir}/so_locations"; \ done idle.la: $(idle_la_OBJECTS) $(idle_la_DEPENDENCIES) - $(LINK) -rpath $(idlelibdir) $(idle_la_LDFLAGS) $(idle_la_OBJECTS) $(idle_la_LIBADD) $(LIBS) + $(LINK) $(am_idle_la_rpath) $(idle_la_LDFLAGS) $(idle_la_OBJECTS) $(idle_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) From 9df65fe3033f3bfbeef19e9ef8aa225d6f75318f Mon Sep 17 00:00:00 2001 From: Dimitur Kirov Date: Thu, 5 Oct 2006 15:26:26 +0000 Subject: [PATCH 101/110] clean .rpath from gettextize --- Makefile.am | 2 +- Makefile.in | 17 ++++++++--------- data/Makefile.in | 4 ++-- data/emoticons/Makefile.in | 4 ++-- data/glade/Makefile.in | 4 ++-- data/iconsets/Makefile.in | 4 ++-- data/pixmaps/Makefile.in | 4 ++-- src/Makefile.in | 4 ++-- src/common/Makefile.in | 4 ++-- 9 files changed, 23 insertions(+), 24 deletions(-) diff --git a/Makefile.am b/Makefile.am index 36783955e..9eebf1f33 100644 --- a/Makefile.am +++ b/Makefile.am @@ -11,7 +11,7 @@ commonfiles_DATA = COPYING \ THANKS \ AUTHORS -EXTRA_DIST = config.rpath \ +EXTRA_DIST = \ $(commonfiles_DATA) \ autogen.sh \ intltool-extract.in \ diff --git a/Makefile.in b/Makefile.in index 23a41499f..912f16cca 100644 --- a/Makefile.in +++ b/Makefile.in @@ -39,10 +39,9 @@ build_triplet = @build@ host_triplet = @host@ DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in $(srcdir)/config.h.in \ - $(top_srcdir)/configure $(top_srcdir)/scripts/gajim.in \ - ABOUT-NLS AUTHORS COPYING ChangeLog INSTALL NEWS THANKS \ - compile config.guess config.rpath config.sub depcomp \ - install-sh ltmain.sh missing mkinstalldirs + $(top_srcdir)/configure $(top_srcdir)/scripts/gajim.in AUTHORS \ + COPYING ChangeLog INSTALL NEWS THANKS compile config.guess \ + config.sub depcomp install-sh ltmain.sh missing mkinstalldirs subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/glib-gettext.m4 \ @@ -274,7 +273,7 @@ commonfiles_DATA = COPYING \ THANKS \ AUTHORS -EXTRA_DIST = config.rpath \ +EXTRA_DIST = \ $(commonfiles_DATA) \ autogen.sh \ intltool-extract.in \ @@ -298,15 +297,15 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - echo ' cd $(srcdir) && $(AUTOMAKE) --foreign '; \ - cd $(srcdir) && $(AUTOMAKE) --foreign \ + echo ' cd $(srcdir) && $(AUTOMAKE) --gnu '; \ + cd $(srcdir) && $(AUTOMAKE) --gnu \ && exit 0; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ cd $(top_srcdir) && \ - $(AUTOMAKE) --foreign Makefile + $(AUTOMAKE) --gnu Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ diff --git a/data/Makefile.in b/data/Makefile.in index 6c911b05f..3e0e22fca 100644 --- a/data/Makefile.in +++ b/data/Makefile.in @@ -278,9 +278,9 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign data/Makefile'; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu data/Makefile'; \ cd $(top_srcdir) && \ - $(AUTOMAKE) --foreign data/Makefile + $(AUTOMAKE) --gnu data/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ diff --git a/data/emoticons/Makefile.in b/data/emoticons/Makefile.in index 7452a17ae..f0241ba71 100644 --- a/data/emoticons/Makefile.in +++ b/data/emoticons/Makefile.in @@ -251,9 +251,9 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign data/emoticons/Makefile'; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu data/emoticons/Makefile'; \ cd $(top_srcdir) && \ - $(AUTOMAKE) --foreign data/emoticons/Makefile + $(AUTOMAKE) --gnu data/emoticons/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ diff --git a/data/glade/Makefile.in b/data/glade/Makefile.in index e470ffbb9..cb349c9a7 100644 --- a/data/glade/Makefile.in +++ b/data/glade/Makefile.in @@ -251,9 +251,9 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign data/glade/Makefile'; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu data/glade/Makefile'; \ cd $(top_srcdir) && \ - $(AUTOMAKE) --foreign data/glade/Makefile + $(AUTOMAKE) --gnu data/glade/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ diff --git a/data/iconsets/Makefile.in b/data/iconsets/Makefile.in index f818baaa8..6c8e6d66b 100644 --- a/data/iconsets/Makefile.in +++ b/data/iconsets/Makefile.in @@ -255,9 +255,9 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign data/iconsets/Makefile'; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu data/iconsets/Makefile'; \ cd $(top_srcdir) && \ - $(AUTOMAKE) --foreign data/iconsets/Makefile + $(AUTOMAKE) --gnu data/iconsets/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ diff --git a/data/pixmaps/Makefile.in b/data/pixmaps/Makefile.in index 4d1c4db9d..47a31c65d 100644 --- a/data/pixmaps/Makefile.in +++ b/data/pixmaps/Makefile.in @@ -254,9 +254,9 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign data/pixmaps/Makefile'; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu data/pixmaps/Makefile'; \ cd $(top_srcdir) && \ - $(AUTOMAKE) --foreign data/pixmaps/Makefile + $(AUTOMAKE) --gnu data/pixmaps/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ diff --git a/src/Makefile.in b/src/Makefile.in index 726d0b2c2..ef8973647 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -357,9 +357,9 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/Makefile'; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \ cd $(top_srcdir) && \ - $(AUTOMAKE) --foreign src/Makefile + $(AUTOMAKE) --gnu src/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ diff --git a/src/common/Makefile.in b/src/common/Makefile.in index fae707d6f..e7b6c70fb 100644 --- a/src/common/Makefile.in +++ b/src/common/Makefile.in @@ -277,9 +277,9 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/common/Makefile'; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/common/Makefile'; \ cd $(top_srcdir) && \ - $(AUTOMAKE) --foreign src/common/Makefile + $(AUTOMAKE) --gnu src/common/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ From cd4c823eb598c00d70333607897d15a71c2acf13 Mon Sep 17 00:00:00 2001 From: Dimitur Kirov Date: Thu, 5 Oct 2006 15:44:08 +0000 Subject: [PATCH 102/110] add intltoolize call --- autogen.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/autogen.sh b/autogen.sh index 3957564a4..9502c37e2 100755 --- a/autogen.sh +++ b/autogen.sh @@ -1,8 +1,8 @@ #!/bin/sh - -aclocal -I ./m4 \ - && libtoolize --force --copy \ + intltoolize --force --automake \ + && aclocal -I ./m4 \ + && libtoolize --copy --force --automake \ && autoheader \ - && automake --add-missing --foreign --copy \ + && automake --add-missing --gnu --copy \ && autoconf \ && ./configure $@ From 0d0ac51fa8b7fe351fdb49094e25dafcfd899306 Mon Sep 17 00:00:00 2001 From: Stefan Bethge Date: Mon, 9 Oct 2006 00:27:03 +0000 Subject: [PATCH 103/110] merge with trunk --- AUTHORS | 2 +- ChangeLog | 208 ---------------------- Changelog | 12 +- README | 86 +-------- README.html | 130 ++++++++++++++ data/glade/join_groupchat_window.glade | 155 ++++++---------- data/glade/preferences_window.glade | 5 - data/glade/vcard_information_window.glade | 4 +- po/POTFILES.in | 114 ------------ po/de.po | 4 +- src/advanced.py | 18 +- src/chat_control.py | 10 +- src/common/check_paths.py | 21 +-- src/common/config.py | 4 +- src/common/connection.py | 19 +- src/common/connection_handlers.py | 3 + src/common/exceptions.py | 15 +- src/common/gajim.py | 13 +- src/common/helpers.py | 109 ++++++++++++ src/common/logger.py | 18 +- src/common/optparser.py | 52 +++++- src/common/passwords.py | 85 +++++++++ src/common/rst_xhtml_generator.py | 126 +++++++++++++ src/config.py | 31 ++-- src/conversation_textview.py | 86 +++++---- src/dialogs.py | 108 +++++------ src/disco.py | 47 ++--- src/gajim.py | 67 +++---- src/groupchat_control.py | 51 +++--- src/gtkexcepthook.py | 1 + src/gtkgui_helpers.py | 52 ++---- src/history_manager.py | 23 +-- src/history_window.py | 7 +- src/notify.py | 4 +- src/roster_window.py | 37 ++-- src/rst_xhtml_generator.py | 116 ------------ src/statusicon.py | 69 +++++++ src/systray.py | 51 +++--- src/tooltips.py | 129 ++++---------- src/vcard.py | 57 +++--- 40 files changed, 1042 insertions(+), 1107 deletions(-) delete mode 100644 ChangeLog create mode 100644 README.html delete mode 100644 po/POTFILES.in create mode 100644 src/common/passwords.py create mode 100644 src/common/rst_xhtml_generator.py delete mode 100644 src/rst_xhtml_generator.py create mode 100644 src/statusicon.py diff --git a/AUTHORS b/AUTHORS index 29f8040f0..b3dd37b13 100644 --- a/AUTHORS +++ b/AUTHORS @@ -1,6 +1,7 @@ CURRENT DEVELOPERS: Yann Le Boulanger (asterix AT lagaule.org) +Nikos Kouremenos (kourem AT gmail.com) Dimitur Kirov (dkirov AT gmail.com) Travis Shirk (travis AT pobox.com) Jean-Marie Traissard (jim AT lapin.org) @@ -8,4 +9,3 @@ Jean-Marie Traissard (jim AT lapin.org) PAST DEVELOPERS: Vincent Hanquez (tab AT snarc.org) -Nikos Kouremenos (kourem AT gmail.com) diff --git a/ChangeLog b/ChangeLog deleted file mode 100644 index f21490300..000000000 --- a/ChangeLog +++ /dev/null @@ -1,208 +0,0 @@ -Gajim 0.11 (XX October 2006) - - * Put your stuff here [each dev put their own please; next time we do this everytime we commit sth major and not in the end] - - * We can now operate on more than one contact in one in time in roster (#1514) - * Connection lost is now a non-intrusive popup - * Try to get contact desired nick when we add him to roster aka User Nickname (JEP-0172) - * Better design of User Profile window, with a progress bar - * New Add User dialog, with possibility to register to transport directly from it - * Completion for "Start Chat" input dialog - * We can now have a different spellchecking language in each chat window. (#2383 and #746) - * Support for Privacy Lists - * Forbid to run multiple instances (but you can use differents profiles) - * We can save avatar with right click on avatar in chat banner - * Use differents colors for nickname colors of occupants in groupchats. - * Ability to show only Join/Leave in groupchats instead of all status changes - * New possibilities to insert nickname of an occupant in groupchats conversations : Tab in an empty line now cycle through nicks, maj+right click->insert nickname, maj+click on name in gc-roster, /names command to show all users presents - - * Fixed bugs when removing or renaming an account with tabs open (#2369 and #2370) - - * FIXME : Ad-Hoc for 0.11 ? - * FIXME : does that work ? not tested : Metacontacts across accounts (#1596) - * Gajim now requires Python 2.4 to run - -Gajim 0.10.1 (06 June 2006) - - * Freeze and lost contacts in roster (#1953) - * Popup menus are correctly placed - * High CPU usage on FreeBSD (#1963) - * Nickname can contain '|' (#1913) - * Update pl, cs, fr translations - * Don't play sound, when no event is shown (#1970) - * Set gajim icon for history manager - * gajim.desktop is generated with translation (#834) - * Preventing several TBs and annoyances (r6273, r6275, r6279, r6301, - r6308, r6311, r6323, r6326, r6327, r6335, r6342, r6346, r6348) - -Gajim 0.10 (01 May 2006) - - * One Messages Window ability (default to it) with tab reordering ability - * Non blocking socket connections. Gajim no longer remains unresponsive. - * Gajim now uses less memory - * File Transfer improvements (now should work out of the box for all) - * Meta Contacts ability (relationships between contacts) - * Support for legacy composing event (JEP-0022). Now 'Contact is composing a message' will always work - * Gajim now defaults to theme that uses GTK colors - * Roster Management Improvements (f.e. editablity of transport names, extended Drag and Drop Functionality) - * History (chat logs) Manager (search globally, delete, etc) - * Animated Emoticons ability - * Support for GTalk email notifications for GMail - * Room administrators can modify room ban list - * Gajim no longer optionally depends on pydns or dnspython. Requires - dnsutils (or whatever package provides the nslookup binary) - * gajim-remote has extended functionality - * Improved Preset Status Messages Experience - * Detection for CRUX as user's operating system - * New art included, appropriate sizes of icons used where available - * Translations under Windows now work okay - * Tons of fixes for bugs and annoyances: http://trac.gajim.org/query?status=closed&milestone=0.10 - - -Gajim 0.9.1 (27 December 2005) - - * Fix bug when joining a Groupchat - * Fix bug when starting Gajim without old logs - -Gajim 0.9 (23 December 2005) - - * Avatars and status messages in roster window - * Improved service discovery window - * Emoticons selector, Cooler Popup Windows (notification-daemon). Read more information in case you did not notice something different in http://trac.gajim.org/wiki/GajimDBus#notif_daemon - * Caching of Avatars, Less UI freezing - * New Account creation wizard - * Better History Window with searching capabilities - * Gajim now tries to reconnect to a jabber server if connection is lost - * Queue for all events (File Transfer, private messages, etc) - * A lot of new irc-like commands in group chat. Do for example /help invite - * X11 Session Management support - * Gajim registers and handles xmpp: and xmpp:// (GNOME/gconfd only) - * Use pysqlite for conversation history. Automigration for old logs - * New translations: Italian, Swedish, Slovak, Basque - -Gajim 0.8.2 (06 Sep 2005) - - * Fix so Gajim runs in pygtk2.8.x - * Gajim can use pydns too (apart from dnspython) to do SRV lookup - * Other minor fixes - -Gajim 0.8.1 (02 Sep 2005) - - * Systray icon for windows - * Gajim is available in Dutch - * Gajim can use gpg-agent - -Gajim 0.8 (18 Aug 2005) - - * Avatars (JEP-0153) - * Chat state notifications aka. typing notification (JEP-0085) - * Bookmark storage (JEP-0048) - * File Transfer (JEP-0096) - * Major changes to adhere to GNOME HIG - * Complete vcard fields support - * New and better user interface for chat and groupchat windows - * SRV capabilities and custom hostname/port - * Many improvements in group chat and IRC emulation (eg. nick autocompletation and cycling) - * Gajim can now send and receive single messages - * New iconsets and new dialog for customizing the user interface - * Mouseover information for contacts in the roster window (aka tooltips) - * DBus Capabilities. Now Gajim can be remote controlled - * Authenticating HTTP Requests via XMPP (JEP-0070) - * Now you can lookup a word in Wikipedia, dictionary or in search engine - * XML Console - * Gajim is now also available in norwegian and czech language - - -Gajim 0.7.1 (5 Jun 2005) - - * Transports icon as an option and error/mesage icon for transports - * Gajim is more HIG compatible - * Editing registration information on transports - * Messages stanza without element are not printed - * SASL bugfix - * GtkSpell capabilities - * Support SSL (legacy) connection - * Assign gpg key to specific contact - * Contacts are sortable by status - * Gajim remembers last lines when reopening chat - * New translations available: German, Russian, Spanish, Bulgarian - -Gajim 0.7 (23 May 2005) - - * Ability for groupchat reserved rooms with full affiliations and roles support - * Popup notification for incoming events - * Protocol icons for contacts from transports - * Gajim's user interface is now more HIG compliant - * Gajim now detects and can send operating system information - * Gajim now can inform the user about new version availability - * Gajim jabber library migration from jabberpy to xmpppy - * Rewrite the plugin system to remove threads and improve latency - * Gajim now supports Nodes in Service Discovery - * Greek and Polish translations - - -Gajim 0.6.1 (03 April 2005) - - * Rewrite of service discovery. It doesn't freeze Gajim anymore. - * More HIG Compliant. - * Gajim is faster (do not redraw preferences_window each time we open it, use - of psyco if available) - -Gajim 0.6 (23 March 2005) - - * Gajim's user interface is now nicer. - * Groupchat just got better. - * URL, mailto and ascii formatin (* / _) detection - * Better transports detection, group management, and many minor additions/bugfixes - -Gajim 0.5.1 (27 February 2005) - - * Minor bugfixes. - -Gajim 0.5 (26 February 2005) - - * Possibility to use tabbed chat window - * Sound support under GNU/linux - * Autoaway available under Microsoft Windows - -Gajim 0.4.1 (23 January 2005) - - * Bugfix in config file parser (fix config file parser to handle emoticons) - * Bugfix with GPG signatures - -Gajim 0.4 (21 January 2005) - - * New option: regroup accounts - * Emoticons support with a binder - * GUI improvements - * Bugfixes - -Gajim 0.3 (18 December 2004) - - * GUI improvements - * group chat support with MUC (JEP 45) - * New agent browser (JEP 30) - * GnuPG support - * Autoconnect at startup - * New socket plugin - -Gajim 0.2.1 (1 July 2004) - - * bugfixes : when configfile is incomplete - * icon in systray with popup menu (for linux) - * "auto away even if not online" option - * always show contacts with unread messages - * new imageCellRenderer to show animated gifs - * allow agents unregistration - -Gajim 0.2 (8 June 2004) - - * bugfix for french translation - * multi-resource support - * auto away support (for linux) - * invisible support - * priority support - -Gajim 0.1 (21 May 2004) - - * Initial release. diff --git a/Changelog b/Changelog index f21490300..cf890cd9c 100644 --- a/Changelog +++ b/Changelog @@ -1,17 +1,19 @@ Gajim 0.11 (XX October 2006) - * Put your stuff here [each dev put their own please; next time we do this everytime we commit sth major and not in the end] - - * We can now operate on more than one contact in one in time in roster (#1514) + * Intoducing View Menu (GNOME HIG) + * GNOME Keyring Support (if GNOME keyring available, manage passwords and save them in an encrypted file). + * Ability to now hide the Transports group + * Support for notify-python so if notification-daemon is not available, we still can show cool popups + * Ability to operate on more than one contact in one in time in roster (#1514) * Connection lost is now a non-intrusive popup * Try to get contact desired nick when we add him to roster aka User Nickname (JEP-0172) * Better design of User Profile window, with a progress bar * New Add User dialog, with possibility to register to transport directly from it * Completion for "Start Chat" input dialog - * We can now have a different spellchecking language in each chat window. (#2383 and #746) + * Ability to have a different spellchecking language in each chat window. (#2383 and #746) * Support for Privacy Lists * Forbid to run multiple instances (but you can use differents profiles) - * We can save avatar with right click on avatar in chat banner + * Ability to save avatar with right click on avatar in chat banner * Use differents colors for nickname colors of occupants in groupchats. * Ability to show only Join/Leave in groupchats instead of all status changes * New possibilities to insert nickname of an occupant in groupchats conversations : Tab in an empty line now cycle through nicks, maj+right click->insert nickname, maj+click on name in gc-roster, /names command to show all users presents diff --git a/README b/README index 49fdbefff..87b9af82a 100644 --- a/README +++ b/README @@ -1,85 +1 @@ -Welcome and thanks for trying out Gajim. - -=RUNTIME REQUIREMENTS= -python2.4 or higher -pygtk2.6 or higher -python-libglade -pysqlite2 (if you have python 2.5, you already have this) - -some distros also split too much python standard library. -I know SUSE does. In such distros you also need python-xml -the xml lib that *comes* with python and not pyxml or whatever - -=COMPILE-TIME REQUIREMENTS= -python-dev -python-gtk2-dev -libgtk2.0-dev # aka. gtk2-devel -libxss-dev # for idle detection module (Some distributions (f.e. Debian) split xscreensaver) -libgtkspell-dev # for gtkspell module -intltool - -NOTE: -if you still have problems compiling, you may want to try removing the gtk1 series of the above dependencies - -Optionally: -dnsutils (or whatever package provides the nslookup binary) for SRV support; if you don't know what that is, you don't need it -gtkspell and aspell-LANG where lang is your locale eg. en, fr etc -GnomePythonExtras 2.10 or above so you can avoid compiling trayicon and gtkspell -notification-daemon or notify-python (and D-Bus) to get cooler popups -D-Bus to have gajim-remote working - -NOTE TO PACKAGERS: -Gajim is a GTK+ app and not a gnome one. -Just do 'make' so you don't require gnomepythonextras -which is gnome dep - -=INSTALLATION PROCEDURE= -tar jxvf gajim-version.tar.bz2 -cd gajim -make # builds all modules -su -c make install - -To specify what modules to build do: -make help - -To specify where to install do: -su -c make PREFIX=custom_path install - -=RUNNING GAJIM= -gajim - -or if you didn't 'make install' you can also run from gajim folder with -./launch.sh - -Last but not least, you can run Gajim from your GNOME/XFCE/KDE/whatever menus. - -=UNINSTALLATION PROCEDURE= -su -c make uninstall -this will try to remove Gajim from the default directories. -If you want to remove it from custom directory provide it as: -make PREFIX=custom_path uninstall - -=MISCELLANEOUS= -XML & Debugging: -If you want to see the xml stanzas and/or help us debugging -you're advised to enable verbose via advanced configuration window. -If you don't want to make this permanent, execute gajim with --verbose -everytime you want to have verbose output. - -=FAQ/Wiki= -FAQ can be found at http://trac.gajim.org/wiki/GajimFaq -Wiki can be found at http://trac.gajim.org/wiki - - -That is all, enjoy! - -(C) 2003-2006 -The Gajim Team -http://gajim.org - - -PS. -We use original art and parts of sounds and other art from Psi, Gossip, -Gnomebaker, Gaim and some icons from various gnome-icons -(mostly Dropline Etiquette) we found at art.gnome.org -If you think we're violating a license please inform us. Thank you +see README.html diff --git a/README.html b/README.html new file mode 100644 index 000000000..3be3024eb --- /dev/null +++ b/README.html @@ -0,0 +1,130 @@ + + + + Gajim - Read Me + + + +

Gajim Read Me

+ +

+Welcome to Gajim and thank you for trying out our client. +

+ +

Runtime Requirements

+
    +
  • python2.4 or higher
  • +
  • pygtk2.6 or higher
  • +
  • python-libglade
  • +
  • pysqlite2 (if you have python 2.5, you already have this)
  • +
+ +

+Note to packagers +Gajim is a GTK+ app that loves GNOME. You can do 'make' so you don't require gnomepythonextras (aka gnome-python-desktop) which is gnome dep, but you will miss gnomekeyring intergration. +

+ +

Optional Runtime Requirements

+
    +
  • dnsutils (or whatever package provides the nslookup binary) for SRV support; if you don't know what that is, you don't need it
  • +
  • gtkspell and aspell-LANG where lang is your locale eg. en, fr etc
  • +
  • GnomePythonExtras 2.10 or above (aka gnome-python-desktop) so you can avoid compiling trayicon and gtkspell
  • +
  • gnome-python-desktop (for GnomeKeyring support)
  • +
  • notification-daemon or notify-python (and D-Bus) to get cooler popups
  • +
  • D-Bus to have gajim-remote working
  • +
+ +

+Some distributions also split too much python standard library. +I know SUSE does. In such distros you also need python-xml +the xml lib that *comes* with python and not pyxml or whatever. +

+ +

Compile-time Requirements

+
    +
  • python-dev
  • +
  • python-gtk2-dev
  • +
  • libgtk2.0-dev aka. gtk2-devel
  • +
  • libxss-dev (for idle detection module; some distributions such as Debian split xscreensaver)
  • +
  • libgtkspell-dev (for the gtkspell module)
  • +
  • intltool
  • +
+ +

+NOTE: +If you still have problems compiling, you may want to try removing the gtk1 series of the above dependencies. +

+ +

Installation Procedure

+
    +
  1. tar jxvf gajim-version.tar.bz2
  2. +cd gajim +make (builds all modules) +su -c make install +
+ +

+To specify what modules to build do: +make help +

+ +

+To specify where to install do: +su -c make PREFIX=custom_path install +

+ +

Running Gajim

+

+Just do gajim or you can run Gajim from your GNOME/XFCE/KDE/whatever menus.

+ +or if you didn't 'make install' you can also run from gajim folder with +./launch.sh +

+ +

Uninstallation Procedure

+

+su -c make uninstall
+this will try to remove Gajim from the default directories. +If you want to remove it from custom directory provide it as:
+make PREFIX=custom_path uninstall +

+ +

Miscellaneous

+

XML & Debugging

+

+If you want to see the xml stanzas and/or help us debugging +you're advised to enable verbose via advanced configuration window. +If you don't want to make this permanent, execute gajim with --verbose +everytime you want to have verbose output. +

+ +

FAQ/Wiki

+

+FAQ can be found at http://trac.gajim.org/wiki/GajimFaq
+Wiki can be found at http://trac.gajim.org/wiki +

+ + +

+That is all, enjoy! +

+ +

+
+
+
+(C) 2003-2006
+The Gajim Team
+http://gajim.org
+
+
+ +PS. +We use original art and parts of sounds and other art from Psi, Gossip, +Gnomebaker, Gaim and some icons from various gnome-icons +(mostly Dropline Etiquette) we found at art.gnome.org +If you think we're violating a license please inform us. Thank you. +

+ diff --git a/data/glade/join_groupchat_window.glade b/data/glade/join_groupchat_window.glade index e6960a86a..618dff121 100644 --- a/data/glade/join_groupchat_window.glade +++ b/data/glade/join_groupchat_window.glade @@ -17,6 +17,7 @@ GDK_WINDOW_TYPE_HINT_NORMAL GDK_GRAVITY_NORTH_WEST True + False @@ -29,58 +30,14 @@ True - 5 + 4 2 False 6 12 - - True - True - True - False - 0 - - True - * - True - - - 1 - 2 - 4 - 5 - - - - - - - True - True - True - True - 0 - - True - * - True - - - - - 1 - 2 - 3 - 4 - - - - - - + True True True @@ -91,7 +48,6 @@ True * True - @@ -125,62 +81,6 @@ - - - True - Password: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 4 - 5 - fill - - - - - - - True - Server: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 3 - 4 - fill - - - - True @@ -281,6 +181,55 @@ fill + + + + True + Password: + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0.5 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + 1 + 3 + 4 + fill + + + + + + + True + True + True + False + 0 + + True + * + True + + + 1 + 2 + 3 + 4 + + + 0 diff --git a/data/glade/preferences_window.glade b/data/glade/preferences_window.glade index 573c182a8..d9d2165ce 100644 --- a/data/glade/preferences_window.glade +++ b/data/glade/preferences_window.glade @@ -900,7 +900,6 @@ Per type True True - Επιλογή μιας γÏαμματοσειÏάς True True False @@ -952,7 +951,6 @@ Per type True True False - Επιλογή χÏώματος True @@ -971,7 +969,6 @@ Per type True True False - Επιλογή χÏώματος True
@@ -1051,7 +1048,6 @@ Per type True True False - Επιλογή χÏώματος True
@@ -1070,7 +1066,6 @@ Per type True True False - Επιλογή χÏώματος True
diff --git a/data/glade/vcard_information_window.glade b/data/glade/vcard_information_window.glade index 3b88416c0..f677804ff 100644 --- a/data/glade/vcard_information_window.glade +++ b/data/glade/vcard_information_window.glade @@ -448,7 +448,7 @@
- + True Subscription: False @@ -476,7 +476,7 @@ - + True Ask: False diff --git a/po/POTFILES.in b/po/POTFILES.in deleted file mode 100644 index 5bf9ba2c6..000000000 --- a/po/POTFILES.in +++ /dev/null @@ -1,114 +0,0 @@ -# ls data/gajim.desktop.in.in data/glade/*.glade src/*py -# src/common/*py src/common/zeroconf/*.py -1 -U -# to produce this list - -[encoding: UTF-8] -data/gajim.desktop.in.in -data/glade/account_context_menu.glade -data/glade/account_creation_wizard_window.glade -data/glade/account_modification_window.glade -data/glade/accounts_window.glade -data/glade/add_new_contact_window.glade -data/glade/advanced_configuration_window.glade -data/glade/advanced_menuitem_menu.glade -data/glade/advanced_notifications_window.glade -data/glade/change_password_dialog.glade -data/glade/change_status_message_dialog.glade -data/glade/chat_context_menu.glade -data/glade/chat_control_popup_menu.glade -data/glade/choose_gpg_key_dialog.glade -data/glade/data_form_window.glade -data/glade/edit_groups_dialog.glade -data/glade/filetransfers.glade -data/glade/gajim_themes_window.glade -data/glade/gc_control_popup_menu.glade -data/glade/gc_occupants_menu.glade -data/glade/history_manager.glade -data/glade/history_window.glade -data/glade/input_dialog.glade -data/glade/invitation_received_dialog.glade -data/glade/join_groupchat_window.glade -data/glade/manage_accounts_window.glade -data/glade/manage_bookmarks_window.glade -data/glade/manage_proxies_window.glade -data/glade/message_window.glade -data/glade/passphrase_dialog.glade -data/glade/popup_notification_window.glade -data/glade/preferences_window.glade -data/glade/privacy_lists_window.glade -data/glade/privacy_list_window.glade -data/glade/profile_window.glade -data/glade/progress_dialog.glade -data/glade/remove_account_window.glade -data/glade/roster_contact_context_menu.glade -data/glade/roster_window.glade -data/glade/service_discovery_window.glade -data/glade/service_registration_window.glade -data/glade/single_message_window.glade -data/glade/subscription_request_popup_menu.glade -data/glade/subscription_request_window.glade -data/glade/systray_context_menu.glade -data/glade/vcard_information_window.glade -data/glade/xml_console_window.glade -data/glade/zeroconf_contact_context_menu.glade -data/glade/zeroconf_context_menu.glade -data/glade/zeroconf_information_window.glade -data/glade/zeroconf_properties_window.glade -src/advanced.py -src/cell_renderer_image.py -src/chat_control.py -src/config.py -src/conversation_textview.py -src/dbus_support.py -src/dialogs.py -src/disco.py -src/filetransfers_window.py -src/gajim.py -src/gajim-remote.py -src/gajim_themes_window.py -src/groupchat_control.py -src/gtkexcepthook.py -src/gtkgui_helpers.py -src/history_manager.py -src/history_window.py -src/htmltextview.py -src/message_control.py -src/message_textview.py -src/message_window.py -src/music_track_listener.py -src/notify.py -src/profile_window.py -src/remote_control.py -src/roster_window.py -src/rst_xhtml_generator.py -src/systray.py -src/systraywin32.py -src/tooltips.py -src/vcard.py -src/common/check_paths.py -src/common/config.py -src/common/connection_handlers.py -src/common/connection.py -src/common/contacts.py -src/common/dbus_support.py -src/common/events.py -src/common/exceptions.py -src/common/fuzzyclock.py -src/common/gajim.py -src/common/GnuPGInterface.py -src/common/GnuPG.py -src/common/helpers.py -src/common/i18n.py -src/common/__init__.py -src/common/logger.py -src/common/nslookup.py -src/common/optparser.py -src/common/proxy65_manager.py -src/common/sleepy.py -src/common/socks5.py -src/common/xmpp_stringprep.py -src/common/zeroconf/client_zeroconf.py -src/common/zeroconf/connection_handlers_zeroconf.py -src/common/zeroconf/connection_zeroconf.py -src/common/zeroconf/__init__.py -src/common/zeroconf/roster_zeroconf.py diff --git a/po/de.po b/po/de.po index 0c265fdc8..226bdd27e 100644 --- a/po/de.po +++ b/po/de.po @@ -373,7 +373,7 @@ msgstr "Konto-Status mit globalem Status abgleichen" #: ../data/glade/account_modification_window.glade.h:40 msgid "Use _SSL (legacy)" -msgstr "_SSL verwenden" +msgstr "_SSL verwenden (veraltet)" #: ../data/glade/account_modification_window.glade.h:41 msgid "Use custom hostname/port" @@ -4485,7 +4485,7 @@ msgstr "für Konto %s" #. History manager #: ../src/roster_window.py:933 msgid "History Manager" -msgstr "Verlaufmanager" +msgstr "Verlaufsmanager" #: ../src/roster_window.py:942 msgid "_Join New Room" diff --git a/src/advanced.py b/src/advanced.py index c0b8df496..0640c02d7 100644 --- a/src/advanced.py +++ b/src/advanced.py @@ -1,18 +1,8 @@ ## advanced.py ## -## Contributors for this file: -## - Yann Le Boulanger -## - Nikos Kouremenos -## - Vincent Hanquez -## -## Copyright (C) 2003-2004 Yann Le Boulanger -## Vincent Hanquez -## Copyright (C) 2005 Yann Le Boulanger -## Vincent Hanquez -## Nikos Kouremenos -## Dimitur Kirov -## Travis Shirk -## Norman Rasmussen +## Copyright (C) 2005-2006 Yann Le Boulanger +## Copyright (C) 2005-2006 Nikos Kouremenos +## Copyright (C) 2005 Vincent Hanquez ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published @@ -42,7 +32,7 @@ C_TYPE GTKGUI_GLADE = 'manage_accounts_window.glade' -class AdvancedConfigurationWindow: +class AdvancedConfigurationWindow(object): def __init__(self): self.xml = gtkgui_helpers.get_glade('advanced_configuration_window.glade') self.window = self.xml.get_widget('advanced_configuration_window') diff --git a/src/chat_control.py b/src/chat_control.py index 9c5e33efa..4b4592f8d 100644 --- a/src/chat_control.py +++ b/src/chat_control.py @@ -34,7 +34,7 @@ from message_textview import MessageTextView from common.contacts import GC_Contact from common.logger import Constants constants = Constants() -from rst_xhtml_generator import create_xhtml +from common.rst_xhtml_generator import create_xhtml from common.xmpp.protocol import NS_XHTML try: @@ -1045,7 +1045,7 @@ class ChatControl(ChatControlBase): status = contact.status if status is not None: banner_name_label.set_ellipsize(pango.ELLIPSIZE_END) - status = gtkgui_helpers.reduce_chars_newlines(status, max_lines = 2) + status = helpers.reduce_chars_newlines(status, max_lines = 2) status_escaped = gtkgui_helpers.escape_for_pango_markup(status) font_attrs, font_attrs_small = self.get_font_attrs() @@ -1254,7 +1254,9 @@ class ChatControl(ChatControlBase): kind = 'outgoing' name = gajim.nicks[self.account] if not xhtml and not encrypted and gajim.config.get('rst_formatting_outgoing_messages'): - xhtml = '%s' % (NS_XHTML, create_xhtml(text)) + xhtml = create_xhtml(text) + if xhtml: + xhtml = '%s' % (NS_XHTML, xhtml) ChatControlBase.print_conversation_line(self, text, kind, name, tim, subject = subject, old_kind = self.old_msg_kind, xhtml = xhtml) if text.startswith('/me ') or text.startswith('/me\n'): @@ -1674,7 +1676,7 @@ class ChatControl(ChatControlBase): else: kind = 'print_queue' self.print_conversation(data[0], kind, tim = data[3], - encrypted = data[4], subject = data[1]) + encrypted = data[4], subject = data[1], xhtml = data[7]) if len(data) > 6 and isinstance(data[6], int): message_ids.append(data[6]) if message_ids: diff --git a/src/common/check_paths.py b/src/common/check_paths.py index a6bc52bf1..a504c054d 100644 --- a/src/common/check_paths.py +++ b/src/common/check_paths.py @@ -1,16 +1,7 @@ -## Contributors for this file: -## - Yann Le Boulanger -## - Nikos Kouremenos -## - Travis Shirk ## -## Copyright (C) 2003-2004 Yann Le Boulanger -## Vincent Hanquez -## Copyright (C) 2005 Yann Le Boulanger -## Vincent Hanquez -## Nikos Kouremenos -## Dimitur Kirov -## Travis Shirk -## Norman Rasmussen +## Copyright (C) 2005-2006 Yann Le Boulanger +## Copyright (C) 2005-2006 Nikos Kouremenos +## Copyright (C) 2005-2006 Travis Shirk ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published @@ -57,11 +48,13 @@ def create_log_db(): jid_id INTEGER ); + CREATE INDEX idx_unread_messages_jid_id ON unread_messages (jid_id); + CREATE TABLE transports_cache ( transport TEXT UNIQUE, type INTEGER ); - + CREATE TABLE logs( log_line_id INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE, jid_id INTEGER, @@ -72,6 +65,8 @@ def create_log_db(): message TEXT, subject TEXT ); + + CREATE INDEX idx_logs_jid_id_kind ON logs (jid_id, kind); ''' ) diff --git a/src/common/config.py b/src/common/config.py index 7527528f3..960b39516 100644 --- a/src/common/config.py +++ b/src/common/config.py @@ -94,7 +94,7 @@ class Config: 'show_ascii_formatting_chars': [ opt_bool, True , _('If True, do not ' 'remove */_ . So *abc* will be bold but with * * not removed.')], 'rst_formatting_outgoing_messages': [ opt_bool, False, - _('Uses ReStructured text markup for HTML, plus ascii formatting if selected.')], + _('Uses ReStructured text markup for HTML, plus ascii formatting if selected. (If you want to use this, install docutils)')], 'sounds_on': [ opt_bool, True ], # 'aplay', 'play', 'esdplay', 'artsplay' detected first time only 'soundplayer': [ opt_str, '' ], @@ -143,7 +143,7 @@ class Config: 'send_on_ctrl_enter': [opt_bool, False, _('Send message on Ctrl+Enter and with Enter make new line (Mirabilis ICQ Client default behaviour).')], 'show_roster_on_startup': [opt_bool, True], 'key_up_lines': [opt_int, 25, _('How many lines to store for Ctrl+KeyUP.')], - 'version': [ opt_str, '0.10.1.3' ], # which version created the config + 'version': [ opt_str, '0.10.1.5' ], # which version created the config 'search_engine': [opt_str, 'http://www.google.com/search?&q=%s&sourceid=gajim'], 'dictionary_url': [opt_str, 'WIKTIONARY', _("Either custom url with %s in it where %s is the word/phrase or 'WIKTIONARY' which means use wiktionary.")], 'always_english_wikipedia': [opt_bool, False], diff --git a/src/common/connection.py b/src/common/connection.py index d59a0add0..72b2767ae 100644 --- a/src/common/connection.py +++ b/src/common/connection.py @@ -38,11 +38,12 @@ import common.xmpp from common import helpers from common import gajim from common import GnuPG +from common import passwords from connection_handlers import * USE_GPG = GnuPG.USE_GPG -from rst_xhtml_generator import create_xhtml +from common.rst_xhtml_generator import create_xhtml class Connection(ConnectionHandlers): '''Connection class''' @@ -69,7 +70,7 @@ class Connection(ConnectionHandlers): self.last_io = gajim.idlequeue.current_time() self.last_sent = [] self.last_history_line = {} - self.password = gajim.config.get_per('accounts', name, 'password') + self.password = passwords.get_password(name) self.server_resource = gajim.config.get_per('accounts', name, 'resource') if gajim.config.get_per('accounts', self.name, 'keep_alives_enabled'): self.keepalives = gajim.config.get_per('accounts', self.name,'keep_alive_every_foo_secs') @@ -687,7 +688,7 @@ class Connection(ConnectionHandlers): user_nick = None, xhtml = None): if not self.connection: return - if not xhtml and gajim.config.get('rst_formatting_outgoing_messages'): + if msg and not xhtml and gajim.config.get('rst_formatting_outgoing_messages'): xhtml = create_xhtml(msg) if not msg and chatstate is None: return @@ -977,14 +978,15 @@ class Connection(ConnectionHandlers): p = self.add_sha(p, ptype != 'unavailable') self.connection.send(p) - def join_gc(self, nick, room, server, password): + def join_gc(self, nick, room_jid, password): + # FIXME: This room JID needs to be normalized; see #1364 if not self.connection: return show = helpers.get_xmpp_show(STATUS_LIST[self.connected]) if show == 'invisible': # Never join a room when invisible return - p = common.xmpp.Presence(to = '%s@%s/%s' % (room, server, nick), + p = common.xmpp.Presence(to = '%s/%s' % (room_jid, nick), show = show, status = self.status) if gajim.config.get('send_sha_in_gc_presence'): p = self.add_sha(p) @@ -993,12 +995,11 @@ class Connection(ConnectionHandlers): t.setTagData('password', password) self.connection.send(p) #last date/time in history to avoid duplicate - # FIXME: This JID needs to be normalized; see #1364 - jid='%s@%s' % (room, server) - last_log = gajim.logger.get_last_date_that_has_logs(jid, is_room = True) + last_log = gajim.logger.get_last_date_that_has_logs(room_jid, + is_room = True) if last_log is None: last_log = 0 - self.last_history_line[jid]= last_log + self.last_history_line[room_jid]= last_log def send_gc_message(self, jid, msg, xhtml = None): if not self.connection: diff --git a/src/common/connection_handlers.py b/src/common/connection_handlers.py index 3e955b35a..326b8d478 100644 --- a/src/common/connection_handlers.py +++ b/src/common/connection_handlers.py @@ -712,6 +712,7 @@ class ConnectionDisco: q.addChild('feature', attrs = {'var': common.xmpp.NS_SI}) q.addChild('feature', attrs = {'var': common.xmpp.NS_FILE}) q.addChild('feature', attrs = {'var': common.xmpp.NS_MUC}) + q.addChild('feature', attrs = {'var': common.xmpp.NS_XHTML_IM}) self.connection.send(iq) raise common.xmpp.NodeProcessed @@ -819,6 +820,8 @@ class ConnectionVcard: puny_jid = helpers.sanitize_filename(jid) path = os.path.join(gajim.VCARD_PATH, puny_jid) if jid in self.room_jids or os.path.isdir(path): + if not nick: + return # remove room_jid file if needed if os.path.isfile(path): os.remove(path) diff --git a/src/common/exceptions.py b/src/common/exceptions.py index 4731829f5..bceef79a4 100644 --- a/src/common/exceptions.py +++ b/src/common/exceptions.py @@ -1,11 +1,7 @@ ## exceptions.py ## -## Contributors for this file: -## - Yann Le Boulanger -## - -## ## Copyright (C) 2005-2006 Yann Le Boulanger -## Nikos Kouremenos +## Copyright (C) 2005-2006 Nikos Kouremenos ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published @@ -48,3 +44,12 @@ class SessionBusNotPresent(Exception): def __str__(self): return _('Session bus is not available.\nTry reading http://trac.gajim.org/wiki/GajimDBus') + +class GajimGeneralException(Exception): + '''This exception ir our general exception''' + def __init__(self, text=''): + Exception.__init__(self) + self.text = text + + def __str__(self): + return self.text diff --git a/src/common/gajim.py b/src/common/gajim.py index 03c04ac45..e353f284c 100644 --- a/src/common/gajim.py +++ b/src/common/gajim.py @@ -139,10 +139,10 @@ def get_nick_from_fjid(jid): # gaim@conference.jabber.no/nick/nick-continued return jid.split('/', 1)[1] -def get_room_name_and_server_from_room_jid(jid): - room_name = get_nick_from_jid(jid) +def get_name_and_server_from_jid(jid): + name = get_nick_from_jid(jid) server = get_server_from_jid(jid) - return room_name, server + return name, server def get_room_and_nick_from_fjid(jid): # fake jid is the jid for a contact in a room @@ -335,7 +335,8 @@ def get_priority(account, show): '''return the priority an account must have''' if not show: show = 'online' - if show in priority_dict and config.get_per('accounts', account, - 'adjust_priority_with_status'): - return priority_dict[show] + + if show in ('online', 'chat', 'away', 'xa', 'dnd', 'invisible') and \ + config.get_per('accounts', account, 'adjust_priority_with_status'): + return config.get_per('accounts', account, 'autopriority_' + show) return config.get_per('accounts', account, 'priority') diff --git a/src/common/helpers.py b/src/common/helpers.py index 96a1b790e..c482427b7 100644 --- a/src/common/helpers.py +++ b/src/common/helpers.py @@ -28,8 +28,10 @@ from encodings.punycode import punycode_encode import gajim from i18n import Q_ +from i18n import ngettext from xmpp_stringprep import nodeprep, resourceprep, nameprep + try: import winsound # windows-only built-in module for playing wav import win32api @@ -814,3 +816,110 @@ def get_chat_control(account, contact): highest_contact.resource: return None return gajim.interface.msg_win_mgr.get_control(contact.jid, account) + +def reduce_chars_newlines(text, max_chars = 0, max_lines = 0): + '''Cut the chars after 'max_chars' on each line + and show only the first 'max_lines'. + If any of the params is not present (None or 0) the action + on it is not performed''' + + def _cut_if_long(string): + if len(string) > max_chars: + string = string[:max_chars - 3] + '...' + return string + + if isinstance(text, str): + text = text.decode('utf-8') + + if max_lines == 0: + lines = text.split('\n') + else: + lines = text.split('\n', max_lines)[:max_lines] + if max_chars > 0: + if lines: + lines = map(lambda e: _cut_if_long(e), lines) + if lines: + reduced_text = reduce(lambda e, e1: e + '\n' + e1, lines) + else: + reduced_text = '' + return reduced_text + +def get_notification_icon_tooltip_text(): + text = None + unread_chat = gajim.events.get_nb_events(types = ['printed_chat', + 'chat']) + unread_single_chat = gajim.events.get_nb_events(types = ['normal']) + unread_gc = gajim.events.get_nb_events(types = ['printed_gc_msg', + 'gc_msg']) + unread_pm = gajim.events.get_nb_events(types = ['printed_pm', 'pm']) + + accounts = get_accounts_info() + + if unread_chat or unread_single_chat or unread_gc or unread_pm: + text = 'Gajim ' + awaiting_events = unread_chat + unread_single_chat + unread_gc + unread_pm + if awaiting_events == unread_chat or awaiting_events == unread_single_chat \ + or awaiting_events == unread_gc or awaiting_events == unread_pm: + # This condition is like previous if but with xor... + # Print in one line + text += '-' + else: + # Print in multiple lines + text += '\n ' + if unread_chat: + text += ngettext( + ' %d unread message', + ' %d unread messages', + unread_chat, unread_chat, unread_chat) + text += '\n ' + if unread_single_chat: + text += ngettext( + ' %d unread single message', + ' %d unread single messages', + unread_single_chat, unread_single_chat, unread_single_chat) + text += '\n ' + if unread_gc: + text += ngettext( + ' %d unread group chat message', + ' %d unread group chat messages', + unread_gc, unread_gc, unread_gc) + text += '\n ' + if unread_pm: + text += ngettext( + ' %d unread private message', + ' %d unread private messages', + unread_pm, unread_pm, unread_pm) + text += '\n ' + text = text[:-4] # remove latest '\n ' + elif len(accounts) > 1: + text = _('Gajim') + elif len(accounts) == 1: + message = accounts[0]['status_line'] + message = reduce_chars_newlines(message, 100, 1) + text = _('Gajim - %s') % message + else: + text = _('Gajim - %s') % get_uf_show('offline') + + return text + +def get_accounts_info(): + '''helper for notification icon tooltip''' + accounts = [] + accounts_list = gajim.contacts.get_accounts() + accounts_list.sort() + for account in accounts_list: + status_idx = gajim.connections[account].connected + # uncomment the following to hide offline accounts + # if status_idx == 0: continue + status = gajim.SHOW_LIST[status_idx] + message = gajim.connections[account].status + single_line = get_uf_show(status) + if message is None: + message = '' + else: + message = message.strip() + if message != '': + single_line += ': ' + message + accounts.append({'name': account, 'status_line': single_line, + 'show': status, 'message': message}) + return accounts diff --git a/src/common/logger.py b/src/common/logger.py index dfc06941d..5a3343f18 100644 --- a/src/common/logger.py +++ b/src/common/logger.py @@ -1,17 +1,7 @@ ## logger.py ## -## Contributors for this file: -## - Yann Le Boulanger -## - Nikos Kouremenos -## -## Copyright (C) 2003-2004 Yann Le Boulanger -## Vincent Hanquez -## Copyright (C) 2005 Yann Le Boulanger -## Vincent Hanquez -## Nikos Kouremenos -## Dimitur Kirov -## Travis Shirk -## Norman Rasmussen +## Copyright (C) 2005-2006 Nikos Kouremenos +## Copyright (C) 2005-2006 Yann Le Boulanger ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published @@ -136,9 +126,11 @@ class Logger: and after that all okay''' possible_room_jid, possible_nick = jid.split('/', 1) + return self.jid_is_room_jid(possible_room_jid) + def jid_is_room_jid(self, jid): self.cur.execute('SELECT jid_id FROM jids WHERE jid=? AND type=?', - (possible_room_jid, constants.JID_ROOM_TYPE)) + (jid, constants.JID_ROOM_TYPE)) row = self.cur.fetchone() if row is None: return False diff --git a/src/common/optparser.py b/src/common/optparser.py index 69e736c0a..596e99d0b 100644 --- a/src/common/optparser.py +++ b/src/common/optparser.py @@ -126,8 +126,7 @@ class OptionsParser: os.chmod(self.__filename, 0600) def update_config(self, old_version, new_version): - # Convert '0.x.y' to (0, x, y) - old_version_list = old_version.split('.') + old_version_list = old_version.split('.') # convert '0.x.y' to (0, x, y) old = [] while len(old_version_list): old.append(int(old_version_list.pop(0))) @@ -146,7 +145,11 @@ class OptionsParser: self.update_config_to_01012() if old < [0, 10, 1, 3] and new >= [0, 10, 1, 3]: self.update_config_to_01013() - + if old < [0, 10, 1, 4] and new >= [0, 10, 1, 4]: + self.update_config_to_01014() + if old < [0, 10, 1, 5] and new >= [0, 10, 1, 5]: + self.update_config_to_01015() + gajim.logger.init_vars() gajim.config.set('version', new_version) @@ -301,3 +304,46 @@ class OptionsParser: pass con.close() gajim.config.set('version', '0.10.1.3') + + def update_config_to_01014(self): + '''apply indeces to the logs database''' + import exceptions + try: + from pysqlite2 import dbapi2 as sqlite + except ImportError: + raise exceptions.PysqliteNotAvailable + import logger + print _('migrating logs database to indeces') + con = sqlite.connect(logger.LOG_DB_PATH) + cur = con.cursor() + # apply indeces + try: + cur.executescript( + ''' + CREATE INDEX idx_logs_jid_id_kind ON logs (jid_id, kind); + CREATE INDEX idx_unread_messages_jid_id ON unread_messages (jid_id); + ''' + ) + + con.commit() + except: + pass + con.close() + gajim.config.set('version', '0.10.1.4') + + def update_config_to_01015(self): + '''clean show values in logs database''' + from pysqlite2 import dbapi2 as sqlite + import logger + con = sqlite.connect(logger.LOG_DB_PATH) + cur = con.cursor() + status = dict((i[5:].lower(), logger.constants.__dict__[i]) for i in \ + logger.constants.__dict__.keys() if i.startswith('SHOW_')) + for show in status: + cur.execute('update logs set show = ? where show = ?;', (status[show], + show)) + cur.execute('update logs set show = NULL where show not in (0, 1, 2, 3, 4, 5);') + con.commit() + cur.close() + con.close() + gajim.config.set('version', '0.10.1.5') diff --git a/src/common/passwords.py b/src/common/passwords.py new file mode 100644 index 000000000..3c7b7237c --- /dev/null +++ b/src/common/passwords.py @@ -0,0 +1,85 @@ +## +## Copyright (C) 2006 Gustavo J. A. M. Carneiro +## Copyright (C) 2006 Nikos Kouremenos +## +## This program is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published +## by the Free Software Foundation; version 2 only. +## +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. +## + +__all__ = ['get_password', 'save_password'] + +import gobject + +from common import gajim + +try: + import gnomekeyring +except ImportError: + USER_HAS_GNOMEKEYRING = False +else: + USER_HAS_GNOMEKEYRING = True + + +class SimplePasswordStorage(object): + def get_password(self, account_name): + return gajim.config.get_per('accounts', account_name, 'password') + + def save_password(self, account_name, password): + gajim.connections[account_name].password = password + + +class GnomePasswordStorage(object): + def __init__(self): + self.keyring = gnomekeyring.get_default_keyring_sync() + + def get_password(self, account_name): + conf = gajim.config.get_per('accounts', account_name, 'password') + if conf is None: + return None + try: + unused, auth_token = conf.split('gnomekeyring:') + auth_token = int(auth_token) + except ValueError: + password = conf + ## migrate the password over to keyring + self.save_password(account_name, password, update=False) + return password + try: + return gnomekeyring.item_get_info_sync(self.keyring, + auth_token).get_secret() + except gnomekeyring.DeniedError: + return None + + def save_password(self, account_name, password, update=True): + display_name = _('Gajim account %s') % account_name + attributes = dict(account_name=str(account_name), gajim=1) + auth_token = gnomekeyring.item_create_sync( + self.keyring, gnomekeyring.ITEM_GENERIC_SECRET, + display_name, attributes, password, update) + token = 'gnomekeyring:%i' % auth_token + gajim.config.set_per('accounts', account_name, 'password', token) + + +storage = None +def get_storage(): + global storage + if storage is None: # None is only in first time get_storage is called + if USER_HAS_GNOMEKEYRING: + #FIXME: detect if we're running under GNOME or not + #before deciding to use the GnomeKeyring backend + storage = GnomePasswordStorage() + else: + storage = SimplePasswordStorage() + return storage + +def get_password(account_name): + return get_storage().get_password(account_name) + +def save_password(account_name, password): + return get_storage().save_password(account_name, password) diff --git a/src/common/rst_xhtml_generator.py b/src/common/rst_xhtml_generator.py new file mode 100644 index 000000000..c69771506 --- /dev/null +++ b/src/common/rst_xhtml_generator.py @@ -0,0 +1,126 @@ +## rst_xhtml_generator.py +## +## Copyright (C) 2006 Yann Le Boulanger +## Copyright (C) 2006 Nikos Kouremenos +## Copyright (C) 2006 Santiago Gala +## +## This program is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published +## by the Free Software Foundation; version 2 only. +## +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. +## + +try: + from docutils import io + from docutils.core import Publisher + from docutils.parsers.rst import roles + from docutils import nodes,utils + from docutils.parsers.rst.roles import set_classes +except: + def create_xhtml(text): + return None +else: + def jep_reference_role(role, rawtext, text, lineno, inliner, + options={}, content=[]): + '''Role to make handy references to Jabber Enhancement Proposals (JEP). + + Use as :JEP:`71` (or jep, or jep-reference). + Modeled after the sample in docutils documentation. + ''' + + jep_base_url = 'http://www.jabber.org/jeps/' + jep_url = 'jep-%04d.html' + try: + jepnum = int(text) + if jepnum <= 0: + raise ValueError + except ValueError: + msg = inliner.reporter.error( + 'JEP number must be a number greater than or equal to 1; ' + '"%s" is invalid.' % text, line=lineno) + prb = inliner.problematic(rawtext, rawtext, msg) + return [prb], [msg] + ref = jep_base_url + jep_url % jepnum + set_classes(options) + node = nodes.reference(rawtext, 'JEP ' + utils.unescape(text), refuri=ref, + **options) + return [node], [] + + roles.register_canonical_role('jep-reference', jep_reference_role) + from docutils.parsers.rst.languages.en import roles + roles['jep-reference'] = 'jep-reference' + roles['jep'] = 'jep-reference' + + class HTMLGenerator: + '''Really simple HTMLGenerator starting from publish_parts. + + It reuses the docutils.core.Publisher class, which means it is *not* + threadsafe. + ''' + def __init__(self, + settings_spec=None, + settings_overrides=dict(report_level=5, halt_level=5), + config_section='general'): + self.pub = Publisher(reader=None, parser=None, writer=None, + settings=None, + source_class=io.StringInput, + destination_class=io.StringOutput) + self.pub.set_components(reader_name='standalone', + parser_name='restructuredtext', + writer_name='html') + # hack: JEP-0071 does not allow HTML char entities, so we hack our way + # out of it. + # — == u"\u2014" + # a setting to only emit charater entities in the writer would be nice + # FIXME: several   are emitted, and they are explicitly forbidden + # in the JEP + #   == u"\u00a0" + self.pub.writer.translator_class.attribution_formats['dash'] = ( + u'\u2014', '') + self.pub.process_programmatic_settings(settings_spec, + settings_overrides, + config_section) + + + def create_xhtml(self, text, + destination=None, + destination_path=None, + enable_exit_status=None): + ''' Create xhtml for a fragment of IM dialog. + We can use the source_name to store info about + the message.''' + self.pub.set_source(text, None) + self.pub.set_destination(destination, destination_path) + output = self.pub.publish(enable_exit_status=enable_exit_status) + # kludge until we can get docutils to stop generating (rare)   + # entities + return u'\u00a0'.join(self.pub.writer.parts['fragment'].strip().split( + ' ')) + + Generator = HTMLGenerator() + + def create_xhtml(text): + return Generator.create_xhtml(text) + + +if __name__ == '__main__': + print Generator.create_xhtml(''' +test:: + + >>> print 1 + 1 + +*I* like it. It is for :JEP:`71` + +this `` should trigger`` should trigger the   problem. + +''') + print Generator.create_xhtml(''' +*test1 + +test2_ +''') diff --git a/src/config.py b/src/config.py index 0db7eccfb..cf1676bd7 100644 --- a/src/config.py +++ b/src/config.py @@ -38,8 +38,11 @@ except: from common import helpers from common import gajim from common import connection +from common import passwords from common import zeroconf +from common.exceptions import GajimGeneralException as GajimGeneralException + #---------- PreferencesWindow class -------------# class PreferencesWindow: '''Class for Preferences window''' @@ -435,8 +438,7 @@ class PreferencesWindow: self.xml.get_widget('custom_apps_frame').set_no_show_all(True) if gajim.config.get('autodetect_browser_mailer'): self.applications_combobox.set_active(0) - gtkgui_helpers.autodetect_browser_mailer() - # autodetect_browser_mailer is now False. + # else autodetect_browser_mailer is False. # so user has 'Always Use GNOME/KDE' or Custom elif gajim.config.get('openwith') == 'gnome-open': self.applications_combobox.set_active(1) @@ -1324,6 +1326,8 @@ class AccountModificationWindow: config['password'] = self.xml.get_widget('password_entry').get_text().\ decode('utf-8') config['resource'] = resource + config['adjust_priority_with_status'] = self.xml.get_widget( + 'adjust_priority_with_status_checkbutton').get_active() config['priority'] = self.xml.get_widget('priority_spinbutton').\ get_value_as_int() config['autoconnect'] = self.xml.get_widget('autoconnect_checkbutton').\ @@ -1442,27 +1446,28 @@ class AccountModificationWindow: # check if relogin is needed relogin_needed = False if self.options_changed_need_relogin(config, - ('resource', 'proxy', 'usessl', 'keyname', - 'use_custom_host', 'custom_host')): + ('resource', 'proxy', 'usessl', 'keyname', + 'use_custom_host', 'custom_host')): relogin_needed = True elif config['use_custom_host'] and (self.option_changed(config, - 'custom_host') or self.option_changed(config, 'custom_port')): + 'custom_host') or self.option_changed(config, 'custom_port')): relogin_needed = True if self.option_changed(config, 'use_ft_proxies') and \ config['use_ft_proxies']: gajim.connections[self.account].discover_ft_proxies() - if self.option_changed(config, 'priority'): + if self.option_changed(config, 'priority') or self.option_changed( + config, 'adjust_priority_with_status'): resend_presence = True for opt in config: gajim.config.set_per('accounts', name, opt, config[opt]) if config['savepass']: - gajim.connections[name].password = config['password'] + passwords.save_password(name, config['password']) else: - gajim.connections[name].password = None + passwords.save_password(name, None) # refresh accounts window if gajim.interface.instances.has_key('accounts'): gajim.interface.instances['accounts'].init_accounts() @@ -1511,7 +1516,7 @@ class AccountModificationWindow: def on_change_password_button_clicked(self, widget): try: dialog = dialogs.ChangePasswordDialog(self.account) - except RuntimeError: + except GajimGeneralException: #if we showed ErrorDialog, there will not be dialog instance return @@ -2497,10 +2502,10 @@ class ManageBookmarksWindow: self.window = self.xml.get_widget('manage_bookmarks_window') self.window.set_transient_for(gajim.interface.roster.window) - #Account-JID, RoomName, Room-JID, Autojoin, Passowrd, Nick, Show_Status + # Account-JID, RoomName, Room-JID, Autojoin, Passowrd, Nick, Show_Status self.treestore = gtk.TreeStore(str, str, str, bool, str, str, str) - #Store bookmarks in treeview. + # Store bookmarks in treeview. for account in gajim.connections: if gajim.connections[account].connected <= 1: continue @@ -2605,7 +2610,7 @@ class ManageBookmarksWindow: account = model[add_to][1].decode('utf-8') nick = gajim.nicks[account] - self.treestore.append(add_to, [account, _('New Room'), '', False, '', + self.treestore.append(add_to, [account, _('New Group Chat'), '', False, '', nick, 'in_and_out']) self.view.expand_row(model.get_path(add_to), True) @@ -2943,7 +2948,7 @@ class AccountCreationWizardWindow: self.account = server + str(i) i += 1 - username, server = gajim.get_room_name_and_server_from_room_jid(jid) + username, server = gajim.get_name_and_server_from_jid(jid) self.save_account(username, server, savepass, password) self.cancel_button.hide() self.back_button.hide() diff --git a/src/conversation_textview.py b/src/conversation_textview.py index 18e907a6f..ae0f1474e 100644 --- a/src/conversation_textview.py +++ b/src/conversation_textview.py @@ -1,17 +1,8 @@ ## conversation_textview.py ## -## Contributors for this file: -## - Yann Le Boulanger -## - Nikos Kouremenos -## -## Copyright (C) 2003-2004 Yann Le Boulanger -## Vincent Hanquez -## Copyright (C) 2005 Yann Le Boulanger -## Vincent Hanquez -## Nikos Kouremenos -## Dimitur Kirov -## Travis Shirk -## Norman Rasmussen +## Copyright (C) 2005-2006 Yann Le Boulanger +## Copyright (C) 2005-2006 Nikos Kouremenos +## Copyright (C) 2005-2006 Travis Shirk ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published @@ -40,13 +31,17 @@ from calendar import timegm from common.fuzzyclock import FuzzyClock from htmltextview import HtmlTextView - +from common.exceptions import GajimGeneralException as GajimGeneralException class ConversationTextview: '''Class for the conversation textview (where user reads already said messages) for chat/groupchat windows''' - def __init__(self, account): - # no need to inherit TextView, use it as property is safer + def __init__(self, account, used_in_history_window = False): + '''if used_in_history_window is True, then we do not show + Clear menuitem in context menu''' + self.used_in_history_window = used_in_history_window + + # no need to inherit TextView, use it as atrribute is safer self.tv = HtmlTextView() self.tv.html_hyperlink_handler = self.html_hyperlink_handler @@ -61,11 +56,13 @@ class ConversationTextview: self.handlers = {} # connect signals - id = self.tv.connect('motion_notify_event', self.on_textview_motion_notify_event) + id = self.tv.connect('motion_notify_event', + self.on_textview_motion_notify_event) self.handlers[id] = self.tv id = self.tv.connect('populate_popup', self.on_textview_populate_popup) self.handlers[id] = self.tv - id = self.tv.connect('button_press_event', self.on_textview_button_press_event) + id = self.tv.connect('button_press_event', + self.on_textview_button_press_event) self.handlers[id] = self.tv self.account = account @@ -154,7 +151,7 @@ class ConversationTextview: self.handlers[i].disconnect(i) del self.handlers self.tv.destroy() - #TODO + #FIXME: # self.line_tooltip.destroy() def update_tags(self): @@ -320,19 +317,29 @@ class ConversationTextview: def on_textview_populate_popup(self, textview, menu): '''we override the default context menu and we prepend Clear + (only if used_in_history_window is False) and if we have sth selected we show a submenu with actions on the phrase (see on_conversation_textview_button_press_event)''' - item = gtk.SeparatorMenuItem() - menu.prepend(item) - item = gtk.ImageMenuItem(gtk.STOCK_CLEAR) - menu.prepend(item) - id = item.connect('activate', self.clear) - self.handlers[id] = item + + separator_menuitem_was_added = False + if not self.used_in_history_window: + item = gtk.SeparatorMenuItem() + menu.prepend(item) + separator_menuitem_was_added = True + + item = gtk.ImageMenuItem(gtk.STOCK_CLEAR) + menu.prepend(item) + id = item.connect('activate', self.clear) + self.handlers[id] = item + if self.selected_phrase: - s = self.selected_phrase - if len(s) > 25: - s = s[:21] + '...' - item = gtk.MenuItem(_('Actions for "%s"') % s) + if not separator_menuitem_was_added: + item = gtk.SeparatorMenuItem() + menu.prepend(item) + + self.selected_phrase = helpers.reduce_chars_newlines( + self.selected_phrase, 25) + item = gtk.MenuItem(_('_Actions for "%s"') % self.selected_phrase) menu.prepend(item) submenu = gtk.Menu() item.set_submenu(submenu) @@ -369,7 +376,8 @@ class ConversationTextview: item.set_property('sensitive', False) else: link = dict_link % self.selected_phrase - id = item.connect('activate', self.visit_url_from_menuitem, link) + id = item.connect('activate', self.visit_url_from_menuitem, + link) self.handlers[id] = item submenu.append(item) @@ -385,13 +393,17 @@ class ConversationTextview: id = item.connect('activate', self.visit_url_from_menuitem, link) self.handlers[id] = item submenu.append(item) + + item = gtk.MenuItem(_('Open as _Link')) + id = item.connect('activate', self.visit_url_from_menuitem, link) + self.handlers[id] = item + submenu.append(item) menu.show_all() def on_textview_button_press_event(self, widget, event): # If we clicked on a taged text do NOT open the standard popup menu # if normal text check if we have sth selected - self.selected_phrase = '' if event.button != 3: # if not right click @@ -430,18 +442,16 @@ class ConversationTextview: def on_start_chat_activate(self, widget, jid): gajim.interface.roster.new_chat_from_jid(self.account, jid) - def on_join_group_chat_menuitem_activate(self, widget, jid): - room, server = jid.split('@') - if gajim.interface.instances[self.account].has_key('join_gc'): + def on_join_group_chat_menuitem_activate(self, widget, room_jid): + if 'join_gc' in gajim.interface.instances[self.account]: instance = gajim.interface.instances[self.account]['join_gc'] - instance.xml.get_widget('server_entry').set_text(server) - instance.xml.get_widget('room_entry').set_text(room) + instance.xml.get_widget('room_jid_entry').set_text(room_jid) gajim.interface.instances[self.account]['join_gc'].window.present() else: try: gajim.interface.instances[self.account]['join_gc'] = \ - dialogs.JoinGroupchatWindow(self.account, server, room) - except RuntimeError: + dialogs.JoinGroupchatWindow(self.account, room_jid) + except GajimGeneralException: pass def on_add_to_roster_activate(self, widget, jid): @@ -463,6 +473,7 @@ class ConversationTextview: childs[6].hide() # join group chat childs[7].hide() # add to roster else: # It's a mail or a JID + text = text.lower() id = childs[2].connect('activate', self.on_copy_link_activate, text) self.handlers[id] = childs[2] id = childs[3].connect('activate', self.on_open_link_activate, kind, text) @@ -701,7 +712,6 @@ class ConversationTextview: # if tim_format comes as unicode because of day_str. # we convert it to the encoding that we want (and that is utf-8) tim_format = helpers.ensure_utf8_string(tim_format) - tim_format = tim_format.encode('utf-8') buffer.insert_with_tags_by_name(end_iter, tim_format + ' ', *other_tags_for_time) elif current_print_time == 'sometimes' and kind != 'info': diff --git a/src/dialogs.py b/src/dialogs.py index b5f919454..eae459362 100644 --- a/src/dialogs.py +++ b/src/dialogs.py @@ -40,6 +40,7 @@ from advanced import AdvancedConfigurationWindow from common import gajim from common import helpers +from common.exceptions import GajimGeneralException as GajimGeneralException class EditGroupsDialog: '''Class for the edit group dialog window''' @@ -139,6 +140,9 @@ class EditGroupsDialog: group = self.xml.get_widget('group_entry').get_text().decode('utf-8') if not group: return + # Do not allow special groups + if group in helpers.special_groups: + return # check if it already exists model = self.list.get_model() iter = model.get_iter_root() @@ -180,14 +184,16 @@ class EditGroupsDialog: if account not in accounts: accounts.append(account) for g in gajim.groups[account].keys(): - if g in helpers.special_groups: - continue if g in groups: continue groups[g] = 0 for g in contact.groups: groups[g] += 1 - group_list = groups.keys() + group_list = [] + # Remove special groups if they are empty + for group in groups: + if group not in helpers.special_groups or groups[group] > 0: + group_list.append(group) group_list.sort() for group in group_list: iter = store.append() @@ -506,7 +512,7 @@ _('Please fill in the data of the contact you want to add in account %s') %accou if type_ == 'jabber': self.uid_entry.set_text(jid) else: - uid, transport = gajim.get_room_name_and_server_from_room_jid(jid) + uid, transport = gajim.get_name_and_server_from_jid(jid) self.uid_entry.set_text(uid.replace('%', '@', 1)) #set protocol_combobox model = self.protocol_combobox.get_model() @@ -1076,32 +1082,33 @@ class SubscriptionRequestWindow: class JoinGroupchatWindow: - def __init__(self, account, server = '', room = '', nick = '', - automatic = False): + def __init__(self, account, room_jid = '', nick = '', automatic = False): '''automatic is a dict like {'invities': []} If automatic is not empty, this means room must be automaticaly configured and when done, invities must be automatically invited''' - if server and room: - jid = room + '@' + server - if jid in gajim.gc_connected[account] and gajim.gc_connected[account][jid]: - ErrorDialog(_('You are already in room %s') % jid) - raise RuntimeError, 'You are already in this room' + if room_jid != '': + if room_jid in gajim.gc_connected[account] and\ + gajim.gc_connected[account][room_jid]: + ErrorDialog(_('You are already in room %s') % room_jid) + raise GajimGeneralException, 'You are already in this room' self.account = account self.automatic = automatic if nick == '': nick = gajim.nicks[self.account] if gajim.connections[account].connected < 2: ErrorDialog(_('You are not connected to the server'), -_('You can not join a group chat unless you are connected.')) - raise RuntimeError, 'You must be connected to join a groupchat' + _('You can not join a group chat unless you are connected.')) + raise GajimGeneralException, 'You must be connected to join a groupchat' self._empty_required_widgets = [] self.xml = gtkgui_helpers.get_glade('join_groupchat_window.glade') self.window = self.xml.get_widget('join_groupchat_window') - self.xml.get_widget('server_entry').set_text(server) - self.xml.get_widget('room_entry').set_text(room) - self.xml.get_widget('nickname_entry').set_text(nick) + self._room_jid_entry = self.xml.get_widget('room_jid_entry') + self._nickname_entry = self.xml.get_widget('nickname_entry') + + self._room_jid_entry.set_text(room_jid) + self._nickname_entry.set_text(nick) self.xml.signal_autoconnect(self) gajim.interface.instances[account]['join_gc'] = self #now add us to open windows if len(gajim.connections) > 1: @@ -1121,18 +1128,13 @@ _('You can not join a group chat unless you are connected.')) self.recently_combobox.append_text(g) if len(self.recently_groupchat) == 0: self.recently_combobox.set_sensitive(False) - elif server == '' and room == '': + elif room_jid == '': self.recently_combobox.set_active(0) - self.xml.get_widget('room_entry').select_region(0, -1) - elif room and server: + self._room_jid_entry.select_region(0, -1) + elif room_jid != '': self.xml.get_widget('join_button').grab_focus() - self._server_entry = self.xml.get_widget('server_entry') - self._room_entry = self.xml.get_widget('room_entry') - self._nickname_entry = self.xml.get_widget('nickname_entry') - if not self._server_entry.get_text(): - self._empty_required_widgets.append(self._server_entry) - if not self._room_entry.get_text(): + if not self._room_jid_entry.get_text(): self._empty_required_widgets.append(self._room_entry) if not self._nickname_entry.get_text(): self._empty_required_widgets.append(self._nickname_entry) @@ -1160,27 +1162,11 @@ _('You can not join a group chat unless you are connected.')) if len(self._empty_required_widgets) == 0: self.xml.get_widget('join_button').set_sensitive(True) - def on_room_entry_key_press_event(self, widget, event): - # Check for pressed @ and jump to server_entry if found - if event.keyval == gtk.keysyms.at: - self.xml.get_widget('server_entry').grab_focus() - return True - - def on_server_entry_key_press_event(self, widget, event): - # If backspace is pressed in empty server_entry, return to the room entry - backspace = event.keyval == gtk.keysyms.BackSpace - server_entry = self.xml.get_widget('server_entry') - empty = len(server_entry.get_text()) == 0 - if backspace and empty: - self.xml.get_widget('room_entry').grab_focus() - return True - def on_recently_combobox_changed(self, widget): model = widget.get_model() - iter = widget.get_active_iter() - gid = model[iter][0].decode('utf-8') - self.xml.get_widget('room_entry').set_text(gid.split('@')[0]) - self.xml.get_widget('server_entry').set_text(gid.split('@')[1]) + iter_ = widget.get_active_iter() + room_jid = model[iter_][0].decode('utf-8') + self._room_jid_entry.set_text(room_jid) def on_cancel_button_clicked(self, widget): '''When Cancel button is clicked''' @@ -1188,30 +1174,29 @@ _('You can not join a group chat unless you are connected.')) def on_join_button_clicked(self, widget): '''When Join button is clicked''' - nickname = self.xml.get_widget('nickname_entry').get_text().decode( - 'utf-8') - room = self.xml.get_widget('room_entry').get_text().decode('utf-8') - server = self.xml.get_widget('server_entry').get_text().decode('utf-8') + nickname = self._nickname_entry.get_text().decode('utf-8') + room_jid = self._room_jid_entry.get_text().decode('utf-8') password = self.xml.get_widget('password_entry').get_text().decode( 'utf-8') - jid = '%s@%s' % (room, server) try: - jid = helpers.parse_jid(jid) + room_jid = helpers.parse_jid(room_jid) except: - ErrorDialog(_('Invalid room or server name'), - _('The room name or server name has not allowed characters.')) + ErrorDialog(_('Invalid room Jabber ID'), + _('The room Jabber ID has not allowed characters.')) return - if jid in self.recently_groupchat: - self.recently_groupchat.remove(jid) - self.recently_groupchat.insert(0, jid) + if room_jid in self.recently_groupchat: + self.recently_groupchat.remove(room_jid) + self.recently_groupchat.insert(0, room_jid) if len(self.recently_groupchat) > 10: self.recently_groupchat = self.recently_groupchat[0:10] - gajim.config.set('recently_groupchat', ' '.join(self.recently_groupchat)) + gajim.config.set('recently_groupchat', + ' '.join(self.recently_groupchat)) if self.automatic: - gajim.automatic_rooms[self.account][jid] = self.automatic - gajim.interface.roster.join_gc_room(self.account, jid, nickname, password) + gajim.automatic_rooms[self.account][room_jid] = self.automatic + gajim.interface.roster.join_gc_room(self.account, room_jid, nickname, + password) self.window.destroy() @@ -1271,7 +1256,7 @@ class ChangePasswordDialog: if not account or gajim.connections[account].connected < 2: ErrorDialog(_('You are not connected to the server'), _('Without a connection, you can not change your password.')) - raise RuntimeError, 'You are not connected to the server' + raise GajimGeneralException, 'You are not connected to the server' self.account = account self.xml = gtkgui_helpers.get_glade('change_password_dialog.glade') self.dialog = self.xml.get_widget('change_password_dialog') @@ -2189,10 +2174,9 @@ class InvitationReceivedDialog: def on_accept_button_clicked(self, widget): self.dialog.destroy() - room, server = gajim.get_room_name_and_server_from_room_jid(self.room_jid) try: - JoinGroupchatWindow(self.account, server = server, room = room) - except RuntimeError: + JoinGroupchatWindow(self.account, self.room_jid) + except GajimGeneralException: pass class ProgressDialog: diff --git a/src/disco.py b/src/disco.py index ff1e12c63..4dd082a5b 100644 --- a/src/disco.py +++ b/src/disco.py @@ -49,6 +49,7 @@ import gtkgui_helpers from common import gajim from common import xmpp +from common.exceptions import GajimGeneralException as GajimGeneralException # Dictionary mapping category, type pairs to browser class, image pairs. # This is a function, so we can call it after the classes are declared. @@ -121,6 +122,13 @@ class CacheDictionary: def __call__(self): return self.value + def cleanup(self): + for key in self.cache.keys(): + item = self.cache[key] + if item.source: + gobject.source_remove(item.source) + del self.cache[key] + def _expire_timeout(self, key): '''The timeout has expired, remove the object.''' if key in self.cache: @@ -132,8 +140,9 @@ class CacheDictionary: item = self.cache[key] if item.source: gobject.source_remove(item.source) - source = gobject.timeout_add(self.lifetime, self._expire_timeout, key) - item.source = source + if self.lifetime: + source = gobject.timeout_add(self.lifetime, self._expire_timeout, key) + item.source = source def __getitem__(self, key): item = self.cache[key] @@ -205,10 +214,14 @@ class ServicesCache: ServiceCache instance.''' def __init__(self, account): self.account = account - self._items = CacheDictionary(1, getrefresh = True) - self._info = CacheDictionary(1, getrefresh = True) + self._items = CacheDictionary(0, getrefresh = False) + self._info = CacheDictionary(0, getrefresh = False) self._cbs = {} + def cleanup(self): + self._items.cleanup() + self._info.cleanup() + def _clean_closure(self, cb, type, addr): # A closure died, clean up cbkey = (type, addr) @@ -584,6 +597,7 @@ _('Without a connection, you can not browse available services')) self.browser = None self.window.destroy() + self.cache.cleanup() for child in self.children[:]: child.parent = None if chain: @@ -1178,16 +1192,10 @@ class ToplevelAgentBrowser(AgentBrowser): if not iter: return service = model[iter][0].decode('utf-8') - if service.find('@') != -1: - services = service.split('@', 1) - room = services[0] - service = services[1] - else: - room = '' if not gajim.interface.instances[self.account].has_key('join_gc'): try: - dialogs.JoinGroupchatWindow(self.account, service, room) - except RuntimeError: + dialogs.JoinGroupchatWindow(self.account, service) + except GajimGeneralException: pass else: gajim.interface.instances[self.account]['join_gc'].window.present() @@ -1489,7 +1497,8 @@ class MucBrowser(AgentBrowser): self.vadj = self.window.services_scrollwin.get_property('vadjustment') self.vadj_cbid = self.vadj.connect('value-changed', self.on_scroll) # And to size changes - self.size_cbid = self.window.services_scrollwin.connect('size-allocate', self.on_scroll) + self.size_cbid = self.window.services_scrollwin.connect( + 'size-allocate', self.on_scroll) def _clean_treemodel(self): if self.size_cbid: @@ -1518,16 +1527,12 @@ class MucBrowser(AgentBrowser): if not iter: return service = model[iter][0].decode('utf-8') - if service.find('@') != -1: - services = service.split('@', 1) - room = services[0] - service = services[1] - else: - room = model[iter][1].decode('utf-8') + room = model[iter][1].decode('utf-8') if 'join_gc' not in gajim.interface.instances[self.account]: try: - dialogs.JoinGroupchatWindow(self.account, service, room) - except RuntimeError: + room_jid = '%s@%s' % (service, room) + dialogs.JoinGroupchatWindow(self.account, service) + except GajimGeneralException: pass else: gajim.interface.instances[self.account]['join_gc'].window.present() diff --git a/src/gajim.py b/src/gajim.py index 611536643..e4e8693b6 100755 --- a/src/gajim.py +++ b/src/gajim.py @@ -4,20 +4,11 @@ exec python -OOt "$0" ${1+"$@"} ' ''' ## gajim.py ## -## Contributors for this file: -## - Yann Le Boulanger -## - Nikos Kouremenos -## - Dimitur Kirov -## - Travis Shirk ## -## Copyright (C) 2003-2004 Yann Le Boulanger -## Vincent Hanquez -## Copyright (C) 2005 Yann Le Boulanger -## Vincent Hanquez -## Nikos Kouremenos -## Dimitur Kirov -## Travis Shirk -## Norman Rasmussen +## Copyright (C) 2003-2006 Yann Le Boulanger +## Copyright (C) 2005-2006 Nikos Kouremenos +## Copyright (C) 2005-2006 Dimitur Kirov +## Copyright (C) 2005 Travis Shirk ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published @@ -82,16 +73,14 @@ except exceptions.PysqliteNotAvailable, e: if os.name == 'nt': try: import winsound # windows-only built-in module for playing wav - import win32api - import win32con except: pritext = _('Gajim needs pywin32 to run') sectext = _('Please make sure that Pywin32 is installed on your system. You can get it at %s') % 'http://sourceforge.net/project/showfiles.php?group_id=78018' if pritext: dlg = gtk.MessageDialog(None, - gtk.DIALOG_DESTROY_WITH_PARENT | gtk.DIALOG_MODAL, - gtk.MESSAGE_ERROR, gtk.BUTTONS_OK, message_format = pritext) + gtk.DIALOG_DESTROY_WITH_PARENT | gtk.DIALOG_MODAL, + gtk.MESSAGE_ERROR, gtk.BUTTONS_OK, message_format = pritext) dlg.format_secondary_text(sectext) dlg.run() @@ -194,7 +183,6 @@ atexit.register(on_exit) parser = optparser.OptionsParser(config_filename) import roster_window -import systray import profile_window import config @@ -509,7 +497,8 @@ class Interface: def handle_event_msg(self, account, array): # 'MSG' (account, (jid, msg, time, encrypted, msg_type, subject, - # chatstate, msg_id, composing_jep, user_nick, xhtml)) user_nick is JEP-0172 + # chatstate, msg_id, composing_jep, user_nick, xhtml)) + # user_nick is JEP-0172 full_jid_with_resource = array[0] jid = gajim.get_jid_without_resource(full_jid_with_resource) @@ -609,7 +598,7 @@ class Interface: msg_type, subject, resource, msg_id, array[9], advanced_notif_num) else: - #xhtml in last element + # xhtml in last element self.roster.on_message(jid, message, array[2], account, array[3], msg_type, subject, resource, msg_id, array[9], advanced_notif_num, xhtml = array[10]) @@ -1092,12 +1081,16 @@ class Interface: if gajim.config.get('notify_on_new_gmail_email'): img = os.path.join(gajim.DATA_DIR, 'pixmaps', 'events', 'new_email_recv.png') - title = _('New E-mail on %(gmail_mail_address)s') % \ + title = _('New mail on %(gmail_mail_address)s') % \ {'gmail_mail_address': jid} - text = i18n.ngettext('You have %d new E-mail message', 'You have %d new E-mail messages', gmail_new_messages, gmail_new_messages, gmail_new_messages) + text = i18n.ngettext('You have %d new mail conversation', + 'You have %d new mail conversations', gmail_new_messages, + gmail_new_messages, gmail_new_messages) if gajim.config.get('notify_on_new_gmail_email_extra'): for gmessage in gmail_messages_list: + #FIXME: emulate Gtalk client popups. find out what they parse and how + #they decide what to show # each message has a 'From', 'Subject' and 'Snippet' field text += _('\nFrom: %(from_address)s') % \ {'from_address': gmessage['From']} @@ -1382,12 +1375,11 @@ class Interface: if gajim.gc_connected[account].has_key(room_jid) and\ gajim.gc_connected[account][room_jid]: continue - room, server = gajim.get_room_name_and_server_from_room_jid(room_jid) nick = gc_control.nick password = '' if gajim.gc_passwords.has_key(room_jid): password = gajim.gc_passwords[room_jid] - gajim.connections[account].join_gc(nick, room, server, password) + gajim.connections[account].join_gc(nick, room_jid, password) def handle_event_metacontacts(self, account, tags_list): gajim.contacts.define_metacontacts(account, tags_list) @@ -1946,21 +1938,18 @@ class Interface: self.systray_enabled = False self.systray_capabilities = False - if os.name == 'nt': - pass - ''' - try: - import systraywin32 - except: # user doesn't have trayicon capabilities - pass - else: - self.systray_capabilities = True - self.systray = systraywin32.SystrayWin32() - ''' - else: + if os.name == 'nt' and gtk.pygtk_version >= (2, 10, 0) and\ + gtk.gtk_version >= (2, 10, 0): + import statusicon + self.systray = statusicon.StatusIcon() + self.systray_capabilities = True + else: # use ours, not GTK+ one + # [FIXME: remove this when we migrate to 2.10 and we can do + # cool tooltips somehow and (not dying to keep) animation] + import systray self.systray_capabilities = systray.HAS_SYSTRAY_CAPABILITIES if self.systray_capabilities: - self.systray = systray.Systray() + self.systray = systray.Systray() if self.systray_capabilities and gajim.config.get('trayicon'): self.show_systray() @@ -2013,7 +2002,8 @@ if __name__ == '__main__': cli = gnome.ui.master_client() cli.connect('die', die_cb) - path_to_gajim_script = gtkgui_helpers.get_abspath_for_script('gajim') + path_to_gajim_script = gtkgui_helpers.get_abspath_for_script( + 'gajim') if path_to_gajim_script: argv = [path_to_gajim_script] @@ -2028,5 +2018,6 @@ if __name__ == '__main__': gtkgui_helpers.possibly_set_gajim_as_xmpp_handler() check_paths.check_and_possibly_create_paths() + Interface() gtk.main() diff --git a/src/groupchat_control.py b/src/groupchat_control.py index 3590163d9..18e029a10 100644 --- a/src/groupchat_control.py +++ b/src/groupchat_control.py @@ -39,12 +39,13 @@ from common import helpers from chat_control import ChatControl from chat_control import ChatControlBase from conversation_textview import ConversationTextview +from common.exceptions import GajimGeneralException as GajimGeneralException #(status_image, type, nick, shown_nick) ( C_IMG, # image to show state (online, new message etc) -C_TYPE, # type of the row ('contact' or 'group') -C_NICK, # contact nickame or group name +C_NICK, # contact nickame or ROLE name +C_TYPE, # type of the row ('contact' or 'role') C_TEXT, # text shown in the cellrenderer C_AVATAR, # avatar of the contact ) = range(5) @@ -253,7 +254,7 @@ class GroupchatControl(ChatControlBase): id = self.list_treeview.connect('size-allocate', self.on_treeview_size_allocate) self.handlers[id] = self.list_treeview - #status_image, type, nickname, shown_nick + #status_image, shown_nick, type, nickname, avatar store = gtk.TreeStore(gtk.Image, str, str, str, gtk.gdk.Pixbuf) store.set_sort_column_id(C_TEXT, gtk.SORT_ASCENDING) self.list_treeview.set_model(store) @@ -397,7 +398,9 @@ class GroupchatControl(ChatControlBase): jid = self.contact.jid num_unread = len(gajim.events.get_events(self.account, jid, ['printed_gc_msg'])) - if num_unread > 1: + if num_unread == 1: + unread = '*' + elif num_unread > 1: unread = '[' + unicode(num_unread) + ']' label_str = unread + label_str return (label_str, color) @@ -664,7 +667,7 @@ class GroupchatControl(ChatControlBase): self.subject = subject self.name_label.set_ellipsize(pango.ELLIPSIZE_END) - subject = gtkgui_helpers.reduce_chars_newlines(subject, max_lines = 2) + subject = helpers.reduce_chars_newlines(subject, max_lines = 2) subject = gtkgui_helpers.escape_for_pango_markup(subject) font_attrs, font_attrs_small = self.get_font_attrs() text = '%s' % (font_attrs, self.room_jid) @@ -672,8 +675,6 @@ class GroupchatControl(ChatControlBase): text += '\n%s' % (font_attrs_small, subject) self.name_label.set_markup(text) event_box = self.name_label.get_parent() - if subject == '': - self.subject = _('This room has no subject') # tooltip must always hold ALL the subject self.subject_tooltip.set_tip(event_box, self.subject) @@ -735,7 +736,7 @@ class GroupchatControl(ChatControlBase): if status and gajim.config.get('show_status_msgs_in_roster'): status = status.strip() if status != '': - status = gtkgui_helpers.reduce_chars_newlines(status, max_lines = 1) + status = helpers.reduce_chars_newlines(status, max_lines = 1) # escape markup entities and make them small italic and fg color color = gtkgui_helpers._get_fade_color(self.list_treeview, selected, focus) @@ -913,9 +914,9 @@ class GroupchatControl(ChatControlBase): role_iter = self.get_role_iter(role) if not role_iter: role_iter = model.append(None, - (gajim.interface.roster.jabber_state_images['16']['closed'], 'role', - role, '%s' % role_name, None)) - iter = model.append(role_iter, (None, 'contact', nick, name, None)) + (gajim.interface.roster.jabber_state_images['16']['closed'], role, + 'role', '%s' % role_name, None)) + iter = model.append(role_iter, (None, nick, 'contact', name, None)) if not nick in gajim.contacts.get_nick_list(self.account, self.room_jid): gc_contact = gajim.contacts.create_gc_contact(room_jid = self.room_jid, name = nick, show = show, status = status, role = role, @@ -924,7 +925,7 @@ class GroupchatControl(ChatControlBase): self.draw_contact(nick) self.draw_avatar(nick) # Do not ask avatar to irc rooms as irc transports reply with messages - r, server = gajim.get_room_name_and_server_from_room_jid(self.room_jid) + server = gajim.get_server_from_jid(self.room_jid) if gajim.config.get('ask_avatars_on_startup') and \ not server.startswith('irc'): fjid = self.room_jid + '/' + nick @@ -1038,8 +1039,10 @@ class GroupchatControl(ChatControlBase): new_topic = message_array.pop(0) gajim.connections[self.account].send_gc_subject(self.room_jid, new_topic) - else: + elif self.subject is not '': self.print_conversation(self.subject, 'info') + else: + self.print_conversation(_('This room has no subject'), 'info') self.clear(self.msg_textview) return True elif command == 'invite': @@ -1067,15 +1070,13 @@ class GroupchatControl(ChatControlBase): elif command == 'join': # example: /join room@conference.example.com/nick if len(message_array): - message_array = message_array[0] - if message_array.find('@') >= 0: - room, servernick = message_array.split('@') - if servernick.find('/') >= 0: - server, nick = servernick.split('/', 1) + room_jid = message_array[0] + if room_jid.find('@') >= 0: + if room_jid.find('/') >= 0: + room_jid, nick = room_jid.split('/', 1) else: - server = servernick nick = '' - #join_gc window is needed in order to provide for password entry. + # join_gc window is needed in order to provide for password entry. if gajim.interface.instances[self.account].has_key('join_gc'): gajim.interface.instances[self.account]['join_gc'].\ window.present() @@ -1083,13 +1084,13 @@ class GroupchatControl(ChatControlBase): try: gajim.interface.instances[self.account]['join_gc'] =\ dialogs.JoinGroupchatWindow(self.account, - server = server, room = room, nick = nick) - except RuntimeError: + room_jid = room_jid, nick = nick) + except GajimGeneralException: pass self.clear(self.msg_textview) else: #%s is something the user wrote but it is not a jid so we inform - s = _('%s does not appear to be a valid JID') % message_array + s = _('%s does not appear to be a valid JID') % message_array[0] self.print_conversation(s, 'info') else: self.get_command_help(command) @@ -1376,7 +1377,7 @@ class GroupchatControl(ChatControlBase): if bookmark['jid'] == bm['jid']: dialogs.ErrorDialog( _('Bookmark already set'), - _('Room "%s" is already in your bookmarks.') % bm['jid']) + _('Group Chat "%s" is already in your bookmarks.') % bm['jid']) return gajim.connections[self.account].bookmarks.append(bm) @@ -1832,7 +1833,7 @@ class GroupchatControl(ChatControlBase): present() else: gajim.interface.instances[self.account]['infos'][c2.jid] = \ - vcard.VcardWindow(c2, self.account, is_fake = True) + vcard.VcardWindow(c2, self.account, c) def on_history(self, widget, nick): jid = gajim.construct_fjid(self.room_jid, nick) diff --git a/src/gtkexcepthook.py b/src/gtkexcepthook.py index 1bc552a24..7e398979d 100644 --- a/src/gtkexcepthook.py +++ b/src/gtkexcepthook.py @@ -22,6 +22,7 @@ import threading import gtk import pango +from common import i18n import dialogs from cStringIO import StringIO diff --git a/src/gtkgui_helpers.py b/src/gtkgui_helpers.py index e1f094a29..e8608c511 100644 --- a/src/gtkgui_helpers.py +++ b/src/gtkgui_helpers.py @@ -169,33 +169,6 @@ def get_default_font(): return None -def reduce_chars_newlines(text, max_chars = 0, max_lines = 0): - '''Cut the chars after 'max_chars' on each line - and show only the first 'max_lines'. - If any of the params is not present (None or 0) the action - on it is not performed''' - - def _cut_if_long(string): - if len(string) > max_chars: - string = string[:max_chars - 3] + '...' - return string - - if isinstance(text, str): - text = text.decode('utf-8') - - if max_lines == 0: - lines = text.split('\n') - else: - lines = text.split('\n', max_lines)[:max_lines] - if max_chars > 0: - if lines: - lines = map(lambda e: _cut_if_long(e), lines) - if lines: - reduced_text = reduce(lambda e, e1: e + '\n' + e1, lines) - else: - reduced_text = '' - return reduced_text - def escape_for_pango_markup(string): # escapes < > & ' " # for pango markup not to break @@ -210,7 +183,22 @@ def escape_for_pango_markup(string): return escaped_str def autodetect_browser_mailer(): - # recognize the environment for appropriate browser/mailer + # recognize the environment and set appropriate browser/mailer + if user_runs_gnome(): + gajim.config.set('openwith', 'gnome-open') + elif user_runs_kde(): + gajim.config.set('openwith', 'kfmclient exec') + else: + gajim.config.set('openwith', 'custom') + +def user_runs_gnome(): + return 'gnome-session' in get_running_processes() + +def user_runs_kde(): + return 'startkde' in get_running_processes() + +def get_running_processes(): + '''returns running processes or None (if not /proc exists)''' if os.path.isdir('/proc'): # under Linux: checking if 'gnome-session' or # 'startkde' programs were run before gajim, by @@ -240,12 +228,8 @@ def autodetect_browser_mailer(): # list of processes processes = [os.path.basename(os.readlink('/proc/' + f +'/exe')) for f in files] - if 'gnome-session' in processes: - gajim.config.set('openwith', 'gnome-open') - elif 'startkde' in processes: - gajim.config.set('openwith', 'kfmclient exec') - else: - gajim.config.set('openwith', 'custom') + + return processes def move_window(window, x, y): '''moves the window but also checks if out of screen''' diff --git a/src/history_manager.py b/src/history_manager.py index a4bd75528..86810d3db 100755 --- a/src/history_manager.py +++ b/src/history_manager.py @@ -1,7 +1,4 @@ -#!/bin/sh -''':' -exec python -OOt "$0" ${1+"$@"} -' ''' +#!/usr/bin/env python ## history_manager.py ## ## Copyright (C) 2006 Nikos Kouremenos @@ -33,6 +30,9 @@ import dialogs import gtkgui_helpers from common.logger import LOG_DB_PATH, constants +#FIXME: constants should implement 2 way mappings +status = dict((constants.__dict__[i], i[5:].lower()) for i in \ + constants.__dict__.keys() if i.startswith('SHOW_')) from common import gajim from common import helpers @@ -51,7 +51,6 @@ except ImportError: class HistoryManager: - def __init__(self): path_to_file = os.path.join(gajim.DATA_DIR, 'pixmaps/gajim.png') pix = gtk.gdk.pixbuf_new_from_file(path_to_file) @@ -312,6 +311,7 @@ class HistoryManager: except ValueError: pass else: + color = None if kind in (constants.KIND_SINGLE_MSG_RECV, constants.KIND_CHAT_MSG_RECV, constants.KIND_GC_MSG): # it is the other side @@ -327,11 +327,14 @@ class HistoryManager: message = '' else: message = ' : ' + message - message = helpers.get_uf_show(show) + message - - message = '%s' % (color, - gtkgui_helpers.escape_for_pango_markup(message)) - self.logs_liststore.append((log_line_id, jid_id, time_, message, + message = helpers.get_uf_show(gajim.SHOW_LIST[show]) + message + + message_ = ' -## Copyright (C) 2006 Nikos Kouremenos -## Copyright (C) 2006 Santiago Gala -## -## This program is free software; you can redistribute it and/or modify -## it under the terms of the GNU General Public License as published -## by the Free Software Foundation; version 2 only. -## -## This program is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -## GNU General Public License for more details. -## - -from docutils import io -from docutils.core import Publisher -from docutils.parsers.rst import roles - -def jep_reference_role(role, rawtext, text, lineno, inliner, - options={}, content=[]): - '''Role to make handy references to Jabber Enhancement Proposals (JEP). - - Use as :JEP:`71` (or jep, or jep-reference). - Modeled after the sample in docutils documentation. - ''' - from docutils import nodes,utils - from docutils.parsers.rst.roles import set_classes - - jep_base_url = 'http://www.jabber.org/jeps/' - jep_url = 'jep-%04d.html' - try: - jepnum = int(text) - if jepnum <= 0: - raise ValueError - except ValueError: - msg = inliner.reporter.error( - 'JEP number must be a number greater than or equal to 1; ' - '"%s" is invalid.' % text, line=lineno) - prb = inliner.problematic(rawtext, rawtext, msg) - return [prb], [msg] - ref = jep_base_url + jep_url % jepnum - set_classes(options) - node = nodes.reference(rawtext, 'JEP ' + utils.unescape(text), refuri=ref, - **options) - return [node], [] - -roles.register_canonical_role('jep-reference', jep_reference_role) -from docutils.parsers.rst.languages.en import roles -roles['jep-reference'] = 'jep-reference' -roles['jep'] = 'jep-reference' - -class HTMLGenerator: - '''Really simple HTMLGenerator starting from publish_parts. - - It reuses the docutils.core.Publisher class, which means it is *not* - threadsafe. - ''' - def __init__(self, - settings_spec=None, - settings_overrides=dict(report_level=5, halt_level=5), - config_section='general'): - self.pub = Publisher(reader=None, parser=None, writer=None, - settings=None, - source_class=io.StringInput, - destination_class=io.StringOutput) - self.pub.set_components(reader_name='standalone', - parser_name='restructuredtext', - writer_name='html') - #hack: JEP-0071 does not allow HTML char entities, so we hack our way out of it. - # — == u"\u2014" - # a setting to only emit charater entities in the writer would be nice - # FIXME: several   are emitted, and they are explicitly forbidden in the JEP - #   == u"\u00a0" - self.pub.writer.translator_class.attribution_formats['dash'] = (u'\u2014', '') - self.pub.process_programmatic_settings(settings_spec, - settings_overrides, - config_section) - - - def create_xhtml(self, text, - destination=None, - destination_path=None, - enable_exit_status=None): - ''' Create xhtml for a fragment of IM dialog. - We can use the source_name to store info about - the message.''' - self.pub.set_source(text, None) - self.pub.set_destination(destination, destination_path) - output = self.pub.publish(enable_exit_status=enable_exit_status) - #kludge until we can get docutils to stop generating (rare)   entities - return u'\u00a0'.join(self.pub.writer.parts['fragment'].strip().split(' ')) - -Generator = HTMLGenerator() - -def create_xhtml(text): - return Generator.create_xhtml(text) - -if __name__ == '__main__': - print Generator.create_xhtml(''' -test:: - - >>> print 1 - 1 - -*I* like it. It is for :JEP:`71` - -this `` should trigger`` should trigger the   problem. - -''') - print Generator.create_xhtml(''' -*test1 - -test2_ -''') diff --git a/src/statusicon.py b/src/statusicon.py new file mode 100644 index 000000000..f6e785ce9 --- /dev/null +++ b/src/statusicon.py @@ -0,0 +1,69 @@ +## statusicon.py +## +## Copyright (C) 2006 Nikos Kouremenos +## +## This program is free software; you can redistribute it and/or +## modify it under the terms of the GNU General Public License +## as published by the Free Software Foundation; either version 2 +## of the License, or (at your option) any later version. +## +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. +## + +import gtk +import gobject +import systray + +from common import gajim +from common import helpers + +class StatusIcon(systray.Systray): + '''Class for the notification area icon''' + #FIXME: when we migrate to GTK 2.10 stick only to this class + # (move base stuff from systray.py and rm it) + #NOTE: gtk api does NOT allow: + # leave, enter motion notify + # and can't do cool tooltips we use + # and we could use blinking instead of unsupported animation + # or we could emulate animation by every foo ms chaning the image + def __init__(self): + systray.Systray.__init__(self) + self.status_icon = gtk.StatusIcon() + + def show_icon(self): + self.status_icon.connect('activate', self.on_status_icon_left_clicked) + self.status_icon.connect('popup-menu', self.on_status_icon_right_clicked) + + self.set_img() + self.status_icon.props.visible = True + + def on_status_icon_right_clicked(self, widget, event_button, event_time): + self.make_menu(event_button, event_time) + + def hide_icon(self): + self.status_icon.props.visible = False + + def on_status_icon_left_clicked(self, widget): + self.on_left_click() + + def set_img(self): + '''apart from image, we also update tooltip text here' + if not gajim.interface.systray_enabled: + return + text = helpers.get_notification_icon_tooltip_text() + self.status_icon.set_tooltip(text) + if gajim.events.get_nb_systray_events(): + state = 'message' + else: + state = self.status + #FIXME: do not always use 16x16 (ask actually used size and use that) + image = gajim.interface.roster.jabber_state_images['16'][state] + if image.get_storage_type() == gtk.IMAGE_PIXBUF: + self.status_icon.props.pixbuf = image.get_pixbuf() + #FIXME: oops they forgot to support GIF animation? + #or they were lazy to get it to work under Windows! WTF! + #elif image.get_storage_type() == gtk.IMAGE_ANIMATION: + # self.img_tray.set_from_animation(image.get_animation()) diff --git a/src/systray.py b/src/systray.py index ade7ffd81..607739756 100644 --- a/src/systray.py +++ b/src/systray.py @@ -43,7 +43,7 @@ except: class Systray: '''Class for icon in the notification area - This class is both base class (for systraywin32.py) and normal class + This class is both base class (for statusicon.py) and normal class for trayicon in GNU/Linux''' def __init__(self): @@ -94,16 +94,14 @@ class Systray: def on_new_chat(self, widget, account): dialogs.NewChatDialog(account) - def make_menu(self, event = None): - '''create chat with and new message (sub) menus/menuitems - event is None when we're in Windows - ''' - + def make_menu(self, event_button, event_time): + '''create chat with and new message (sub) menus/menuitems''' for m in self.popup_menus: m.destroy() chat_with_menuitem = self.xml.get_widget('chat_with_menuitem') - single_message_menuitem = self.xml.get_widget('single_message_menuitem') + single_message_menuitem = self.xml.get_widget( + 'single_message_menuitem') status_menuitem = self.xml.get_widget('status_menu') join_gc_menuitem = self.xml.get_widget('join_gc_menuitem') @@ -171,7 +169,8 @@ class Systray: self.popup_menus.append(account_menu_for_chat_with) account_menu_for_single_message = gtk.Menu() - single_message_menuitem.set_submenu(account_menu_for_single_message) + single_message_menuitem.set_submenu( + account_menu_for_single_message) self.popup_menus.append(account_menu_for_single_message) accounts_list = gajim.contacts.get_accounts() @@ -195,9 +194,11 @@ class Systray: label.set_use_underline(False) gc_item = gtk.MenuItem() gc_item.add(label) - gc_item.connect('state-changed', gtkgui_helpers.on_bm_header_changed_state) + gc_item.connect('state-changed', + gtkgui_helpers.on_bm_header_changed_state) gc_sub_menu.append(gc_item) - gajim.interface.roster.add_bookmarks_list(gc_sub_menu, account) + gajim.interface.roster.add_bookmarks_list(gc_sub_menu, + account) elif connected_accounts == 1: # one account # one account connected, no need to show 'as jid' @@ -207,24 +208,24 @@ class Systray: 'activate', self.on_new_chat, account) # for single message single_message_menuitem.remove_submenu() - self.single_message_handler_id = single_message_menuitem.connect( - 'activate', self.on_single_message_menuitem_activate, account) + self.single_message_handler_id = single_message_menuitem.\ + connect('activate', + self.on_single_message_menuitem_activate, account) # join gc - gajim.interface.roster.add_bookmarks_list(gc_sub_menu, account) + gajim.interface.roster.add_bookmarks_list(gc_sub_menu, + account) break # No other connected account - if event is None: - # None means windows (we explicitly popup in systraywin32.py) - if self.added_hide_menuitem is False: - self.systray_context_menu.prepend(gtk.SeparatorMenuItem()) - item = gtk.MenuItem(_('Hide this menu')) - self.systray_context_menu.prepend(item) - self.added_hide_menuitem = True + if os.name == 'nt' and gtk.pygtk_version >= (2, 10, 0) and\ + gtk.gtk_version >= (2, 10, 0): + self.systray_context_menu.popup(None, None, + gtk.status_icon_position_menu, event_button, + event_time, self.status_icon) else: # GNU and Unices - self.systray_context_menu.popup(None, None, None, event.button, - event.time) + self.systray_context_menu.popup(None, None, None, event_button, + event_time) self.systray_context_menu.show_all() def on_show_all_events_menuitem_activate(self, widget): @@ -277,12 +278,14 @@ class Systray: def on_clicked(self, widget, event): self.on_tray_leave_notify_event(widget, None) - if event.type == gtk.gdk.BUTTON_PRESS and event.button == 1: # Left click + if event.type != gtk.gdk.BUTTON_PRESS: + return + if event.button == 1: # Left click self.on_left_click() elif event.button == 2: # middle click self.on_middle_click() elif event.button == 3: # right click - self.make_menu(event) + self.make_menu(event.button, event.time) def on_show_menuitem_activate(self, widget, show): # we all add some fake (we cannot select those nor have them as show) diff --git a/src/tooltips.py b/src/tooltips.py index 53915df8a..66989f12d 100644 --- a/src/tooltips.py +++ b/src/tooltips.py @@ -38,7 +38,7 @@ class BaseTooltip: tooltip.hide_tooltip() * data - the text to be displayed (extenders override this argument and - dislpay more complex contents) + display more complex contents) * widget_height - the height of the widget on which we want to show tooltip * widget_y_position - the vertical position of the widget on the screen @@ -135,7 +135,7 @@ class BaseTooltip: preferred_y = widget_y_position + widget_height + 4 self.preferred_position = [pointer_x, preferred_y] - self.widget_height =widget_height + self.widget_height = widget_height self.win.ensure_style() self.win.show_all() @@ -177,10 +177,12 @@ class StatusTable: # make sure 'status' is unicode before we send to to reduce_chars if isinstance(status, str): status = unicode(status, encoding='utf-8') - # reduce to 200 chars, 1 line - status = gtkgui_helpers.reduce_chars_newlines(status, 200, 1) - str_status += ' - ' + status - return gtkgui_helpers.escape_for_pango_markup(str_status) + # reduce to 100 chars, 1 line + status = helpers.reduce_chars_newlines(status, 100, 1) + str_status = gtkgui_helpers.escape_for_pango_markup(str_status) + status = gtkgui_helpers.escape_for_pango_markup(status) + str_status += ' - ' + status + '' + return str_status def add_status_row(self, file_path, show, str_status, status_time = None, show_lock = False): ''' appends a new row with status icon to the table ''' @@ -227,27 +229,6 @@ class NotificationAreaTooltip(BaseTooltip, StatusTable): BaseTooltip.__init__(self) StatusTable.__init__(self) - def get_accounts_info(self): - accounts = [] - accounts_list = gajim.contacts.get_accounts() - accounts_list.sort() - for account in accounts_list: - status_idx = gajim.connections[account].connected - # uncomment the following to hide offline accounts - # if status_idx == 0: continue - status = gajim.SHOW_LIST[status_idx] - message = gajim.connections[account].status - single_line = helpers.get_uf_show(status) - if message is None: - message = '' - else: - message = message.strip() - if message != '': - single_line += ': ' + message - accounts.append({'name': account, 'status_line': single_line, - 'show': status, 'message': message}) - return accounts - def fill_table_with_accounts(self, accounts): iconset = gajim.config.get('iconset') if not iconset: @@ -259,7 +240,7 @@ class NotificationAreaTooltip(BaseTooltip, StatusTable): # there are possible pango TBs on 'set_markup' if isinstance(message, str): message = unicode(message, encoding = 'utf-8') - message = gtkgui_helpers.reduce_chars_newlines(message, 50, 1) + message = helpers.reduce_chars_newlines(message, 100, 1) message = gtkgui_helpers.escape_for_pango_markup(message) if gajim.con_types.has_key(acct['name']) and \ gajim.con_types[acct['name']] in ('tls', 'ssl'): @@ -278,67 +259,16 @@ class NotificationAreaTooltip(BaseTooltip, StatusTable): def populate(self, data): self.create_window() self.create_table() - self.hbox = gtk.HBox() - self.table.set_property('column-spacing', 1) - text, single_line = '', '' - - unread_chat = gajim.events.get_nb_events(types = ['printed_chat', 'chat']) - unread_single_chat = gajim.events.get_nb_events(types = ['normal']) - unread_gc = gajim.events.get_nb_events(types = ['printed_gc_msg', - 'gc_msg']) - unread_pm = gajim.events.get_nb_events(types = ['printed_pm', 'pm']) - - accounts = self.get_accounts_info() - - if unread_chat or unread_single_chat or unread_gc or unread_pm: - text = 'Gajim ' - awaiting_events = unread_chat + unread_single_chat + unread_gc + unread_pm - if awaiting_events == unread_chat or awaiting_events == unread_single_chat \ - or awaiting_events == unread_gc or awaiting_events == unread_pm: - # This condition is like previous if but with xor... - # Print in one line - text += '-' - else: - # Print in multiple lines - text += '\n ' - if unread_chat: - text += i18n.ngettext( - ' %d unread message', - ' %d unread messages', - unread_chat, unread_chat, unread_chat) - text += '\n ' - if unread_single_chat: - text += i18n.ngettext( - ' %d unread single message', - ' %d unread single messages', - unread_single_chat, unread_single_chat, unread_single_chat) - text += '\n ' - if unread_gc: - text += i18n.ngettext( - ' %d unread group chat message', - ' %d unread group chat messages', - unread_gc, unread_gc, unread_gc) - text += '\n ' - if unread_pm: - text += i18n.ngettext( - ' %d unread private message', - ' %d unread private messages', - unread_pm, unread_pm, unread_pm) - text += '\n ' - text = text[:-4] # remove latest '\n ' - elif len(accounts) > 1: - text = _('Gajim') - self.current_current_row = 1 + accounts = helpers.get_accounts_info() + if len(accounts) > 1: self.table.resize(2, 1) self.fill_table_with_accounts(accounts) + self.hbox = gtk.HBox() + self.table.set_property('column-spacing', 1) - elif len(accounts) == 1: - message = accounts[0]['status_line'] - message = gtkgui_helpers.reduce_chars_newlines(message, 50, 1) - message = gtkgui_helpers.escape_for_pango_markup(message) - text = _('Gajim - %s') % message - else: - text = _('Gajim - %s') % helpers.get_uf_show('offline') + text = helpers.get_notification_icon_tooltip_text() + text = gtkgui_helpers.escape_for_pango_markup(text) + self.add_text_row(text) self.hbox.add(self.table) self.win.add(self.hbox) @@ -364,7 +294,25 @@ class GCTooltip(BaseTooltip): vcard_table.set_homogeneous(False) vcard_current_row = 1 properties = [] - + + nick_markup = '' + \ + gtkgui_helpers.escape_for_pango_markup(contact.get_shown_name()) \ + + '' + properties.append((nick_markup, None)) + + if contact.status: # status message + status = contact.status.strip() + if status != '': + # escape markup entities + status = helpers.reduce_chars_newlines(status, 100, 5) + status = '' +\ + gtkgui_helpers.escape_for_pango_markup(status) + '' + properties.append((status, None)) + else: # no status message, show SHOW instead + show = helpers.get_uf_show(contact.show) + show = '' + show + '' + properties.append((show, None)) + if contact.jid.strip() != '': jid_markup = '' + contact.jid + '' else: @@ -445,8 +393,7 @@ class RosterTooltip(NotificationAreaTooltip): self.create_table() if not contacts or len(contacts) == 0: # Tooltip for merged accounts row - accounts = self.get_accounts_info() - self.current_current_row = 0 + accounts = helpers.get_accounts_info() self.table.resize(2, 1) self.spacer_label = '' self.fill_table_with_accounts(accounts) @@ -539,8 +486,8 @@ class RosterTooltip(NotificationAreaTooltip): status = contact.status.strip() if status: # reduce long status - # (no more than 200 chars on line and no more than 5 lines) - status = gtkgui_helpers.reduce_chars_newlines(status, 200, 5) + # (no more than 100 chars on line and no more than 5 lines) + status = helpers.reduce_chars_newlines(status, 100, 5) # escape markup entities. status = gtkgui_helpers.escape_for_pango_markup(status) show += ' - ' + status diff --git a/src/vcard.py b/src/vcard.py index 0ee005e72..48bb83efc 100644 --- a/src/vcard.py +++ b/src/vcard.py @@ -60,7 +60,7 @@ def get_avatar_pixbuf_encoded_mime(photo): class VcardWindow: '''Class for contact's information window''' - def __init__(self, contact, account, is_fake = False): + def __init__(self, contact, account, gc_contact = None): # the contact variable is the jid if vcard is true self.xml = gtkgui_helpers.get_glade('vcard_information_window.glade') self.window = self.xml.get_widget('vcard_information_window') @@ -68,7 +68,7 @@ class VcardWindow: self.contact = contact self.account = account - self.is_fake = is_fake + self.gc_contact = gc_contact self.avatar_mime_type = None self.avatar_encoded = None @@ -246,26 +246,38 @@ class VcardWindow: self.contact.get_shown_name() + '') self.xml.get_widget('jid_label').set_text(self.contact.jid) - uf_sub = helpers.get_uf_sub(self.contact.sub) - self.xml.get_widget('subscription_label').set_text(uf_sub) - eb = self.xml.get_widget('subscription_label_eventbox') - if self.contact.sub == 'from': - tt_text = _("This contact is interested in your presence information, but you are not interested in his/her presence") - elif self.contact.sub == 'to': - tt_text = _("You are interested in the contact's presence information, but he/she is not interested in yours") - elif self.contact.sub == 'both': - tt_text = _("You and the contact are interested in each other's presence information") - else: # None - tt_text = _("You are not interested in the contact's presence, and neither he/she is interested in yours") - tooltips.set_tip(eb, tt_text) + + subscription_label = self.xml.get_widget('subscription_label') + ask_label = self.xml.get_widget('ask_label') + if self.gc_contact: + self.xml.get_widget('subscription_title_label').set_text(_("Role:")) + uf_role = helpers.get_uf_role(self.gc_contact.role) + subscription_label.set_text(uf_role) + + self.xml.get_widget('ask_title_label').set_text(_("Affiliation:")) + uf_affiliation = helpers.get_uf_affiliation(self.gc_contact.affiliation) + ask_label.set_text(uf_affiliation) + else: + uf_sub = helpers.get_uf_sub(self.contact.sub) + subscription_label.set_text(uf_sub) + eb = self.xml.get_widget('subscription_label_eventbox') + if self.contact.sub == 'from': + tt_text = _("This contact is interested in your presence information, but you are not interested in his/her presence") + elif self.contact.sub == 'to': + tt_text = _("You are interested in the contact's presence information, but he/she is not interested in yours") + elif self.contact.sub == 'both': + tt_text = _("You and the contact are interested in each other's presence information") + else: # None + tt_text = _("You are not interested in the contact's presence, and neither he/she is interested in yours") + tooltips.set_tip(eb, tt_text) + + uf_ask = helpers.get_uf_ask(self.contact.ask) + ask_label.set_text(uf_ask) + eb = self.xml.get_widget('ask_label_eventbox') + if self.contact.ask == 'subscribe': + tooltips.set_tip(eb, + _("You are waiting contact's answer about your subscription request")) - label = self.xml.get_widget('ask_label') - uf_ask = helpers.get_uf_ask(self.contact.ask) - label.set_text(uf_ask) - eb = self.xml.get_widget('ask_label_eventbox') - if self.contact.ask == 'subscribe': - tooltips.set_tip(eb, - _("You are waiting contact's answer about your subscription request")) log = True if self.contact.jid in gajim.config.get_per('accounts', self.account, 'no_log_for').split(' '): @@ -318,7 +330,8 @@ class VcardWindow: self.fill_status_label() - gajim.connections[self.account].request_vcard(self.contact.jid, self.is_fake) + gajim.connections[self.account].request_vcard(self.contact.jid, + self.gc_contact is not None) def on_close_button_clicked(self, widget): self.window.destroy() From bbeab47dc779fe9cf6807ccfc647a89cdc0023db Mon Sep 17 00:00:00 2001 From: Stefan Bethge Date: Mon, 9 Oct 2006 00:32:02 +0000 Subject: [PATCH 104/110] add 7146 --- src/config.py | 1 - 1 file changed, 1 deletion(-) diff --git a/src/config.py b/src/config.py index cf1676bd7..4bb8fe797 100644 --- a/src/config.py +++ b/src/config.py @@ -188,7 +188,6 @@ class PreferencesWindow: if gajim.config.get('roster_theme') == config_theme: theme_combobox.set_active(i) i += 1 - self.on_theme_combobox_changed(theme_combobox) #use speller if os.name == 'nt': From 5f9e24a776b12ef4ae7bbb5775a8d1856105c20a Mon Sep 17 00:00:00 2001 From: Stefan Bethge Date: Mon, 9 Oct 2006 14:27:20 +0000 Subject: [PATCH 105/110] fix TB on receiving message after merge from trunk --- src/common/zeroconf/connection_handlers_zeroconf.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/common/zeroconf/connection_handlers_zeroconf.py b/src/common/zeroconf/connection_handlers_zeroconf.py index cc71cfe74..e9ba59f18 100644 --- a/src/common/zeroconf/connection_handlers_zeroconf.py +++ b/src/common/zeroconf/connection_handlers_zeroconf.py @@ -705,6 +705,7 @@ class ConnectionHandlersZeroconf(ConnectionVcard, ConnectionBytestream): def _messageCB(self, ip, con, msg): '''Called when we receive a message''' msgtxt = msg.getBody() + msghtml = msg.getXHTML() mtype = msg.getType() subject = msg.getSubject() # if not there, it's None tim = msg.getTimestamp() @@ -786,7 +787,7 @@ class ConnectionHandlersZeroconf(ConnectionVcard, ConnectionBytestream): msg_id = gajim.logger.write('chat_msg_recv', frm, msgtxt, tim = tim, subject = subject) self.dispatch('MSG', (frm, msgtxt, tim, encrypted, mtype, subject, - chatstate, msg_id, composing_jep, user_nick)) + chatstate, msg_id, composing_jep, user_nick, msghtml)) elif mtype == 'normal': # it's single message if self.name not in no_log_for and jid not in no_log_for and msgtxt: gajim.logger.write('single_msg_recv', frm, msgtxt, tim = tim, From 2bd74a3937af1868d2a20eb8dc1409358a1951b4 Mon Sep 17 00:00:00 2001 From: Stefan Bethge Date: Mon, 9 Oct 2006 14:58:57 +0000 Subject: [PATCH 106/110] don't allow delete key for local accounts --- src/roster_window.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/roster_window.py b/src/roster_window.py index efdb723a3..3a125dc67 100644 --- a/src/roster_window.py +++ b/src/roster_window.py @@ -2157,6 +2157,7 @@ _('If "%s" accepts this request you will know his or her status.') % jid) if not len(list_of_paths): return type = model[list_of_paths[0]][C_TYPE] + account = model[list_of_paths[0]][C_ACCOUNT] list_ = [] for path in list_of_paths: if model[path][C_TYPE] != type: @@ -2166,7 +2167,7 @@ _('If "%s" accepts this request you will know his or her status.') % jid) contact = gajim.contacts.get_contact_with_highest_priority(account, jid) list_.append((contact, account)) - if type in ('account', 'group', 'self_contact'): + if type in ('account', 'group', 'self_contact') or account == gajim.ZEROCONF_ACC_NAME: return if type == 'contact': self.on_req_usub(widget, list_) From 524204f4ef21b3c367a0b3655742df91a76fbf75 Mon Sep 17 00:00:00 2001 From: Dimitur Kirov Date: Mon, 9 Oct 2006 15:25:24 +0000 Subject: [PATCH 107/110] typo --- data/Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/Makefile.am b/data/Makefile.am index 43f1bb6e8..8ea08e03c 100644 --- a/data/Makefile.am +++ b/data/Makefile.am @@ -7,7 +7,7 @@ desktop_DATA = $(desktop_in_files:.desktop.in.in=.desktop) soundsdir = $(pkgdatadir)/data/sounds sounds_DATA = $(srcdir)/sounds/*.wav -otherdir = $(pkgdatadir)/data/others +otherdir = $(pkgdatadir)/data/other other_DATA = other/servers.xml man_MANS = gajim.1 gajim-remote.1 From 0b1c124d105e331f73bc4528882bd5cfc72bf246 Mon Sep 17 00:00:00 2001 From: Dimitur Kirov Date: Mon, 9 Oct 2006 15:35:06 +0000 Subject: [PATCH 108/110] typo --- data/Makefile.in | 2 +- data/pixmaps/Makefile.am | 15 +++++--- data/pixmaps/Makefile.in | 78 +++++++++++++++++++++++++++++++--------- 3 files changed, 74 insertions(+), 21 deletions(-) diff --git a/data/Makefile.in b/data/Makefile.in index 3e0e22fca..240953a22 100644 --- a/data/Makefile.in +++ b/data/Makefile.in @@ -257,7 +257,7 @@ desktop_in_files = gajim.desktop.in.in desktop_DATA = $(desktop_in_files:.desktop.in.in=.desktop) soundsdir = $(pkgdatadir)/data/sounds sounds_DATA = $(srcdir)/sounds/*.wav -otherdir = $(pkgdatadir)/data/others +otherdir = $(pkgdatadir)/data/other other_DATA = other/servers.xml man_MANS = gajim.1 gajim-remote.1 EXTRA_DIST = $(desktop_in_files) \ diff --git a/data/pixmaps/Makefile.am b/data/pixmaps/Makefile.am index 868898df9..6b35c8bbf 100644 --- a/data/pixmaps/Makefile.am +++ b/data/pixmaps/Makefile.am @@ -1,6 +1,13 @@ pixmapsdir = $(pkgdatadir)/data/pixmaps pixmaps_DATA = $(srcdir)/*.png \ - gajim.ico \ - $(srcdir)/events/*.png \ - $(srcdir)/agents/*.png -EXTRA_DIST = $(pixmaps_DATA) + gajim.ico + +eventsdir = $(pkgdatadir)/data/pixmaps/events +events_DATA = $(srcdir)/events/*.png + +agentsdir = $(pkgdatadir)/data/pixmaps/agents +agents_DATA = $(srcdir)/agents/*.png + +EXTRA_DIST = $(pixmaps_DATA) \ + $(events_DATA) \ + $(agents_DATA) diff --git a/data/pixmaps/Makefile.in b/data/pixmaps/Makefile.in index 47a31c65d..b0ae9b8e2 100644 --- a/data/pixmaps/Makefile.in +++ b/data/pixmaps/Makefile.in @@ -55,9 +55,12 @@ am__vpath_adj = case $$p in \ *) f=$$p;; \ esac; am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; -am__installdirs = "$(DESTDIR)$(pixmapsdir)" +am__installdirs = "$(DESTDIR)$(agentsdir)" "$(DESTDIR)$(eventsdir)" \ + "$(DESTDIR)$(pixmapsdir)" +agentsDATA_INSTALL = $(INSTALL_DATA) +eventsDATA_INSTALL = $(INSTALL_DATA) pixmapsDATA_INSTALL = $(INSTALL_DATA) -DATA = $(pixmaps_DATA) +DATA = $(agents_DATA) $(events_DATA) $(pixmaps_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ @@ -237,11 +240,16 @@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ pixmapsdir = $(pkgdatadir)/data/pixmaps pixmaps_DATA = $(srcdir)/*.png \ - gajim.ico \ - $(srcdir)/events/*.png \ - $(srcdir)/agents/*.png + gajim.ico + +eventsdir = $(pkgdatadir)/data/pixmaps/events +events_DATA = $(srcdir)/events/*.png +agentsdir = $(pkgdatadir)/data/pixmaps/agents +agents_DATA = $(srcdir)/agents/*.png +EXTRA_DIST = $(pixmaps_DATA) \ + $(events_DATA) \ + $(agents_DATA) -EXTRA_DIST = $(pixmaps_DATA) all: all-am .SUFFIXES: @@ -284,6 +292,40 @@ clean-libtool: distclean-libtool: -rm -f libtool uninstall-info-am: +install-agentsDATA: $(agents_DATA) + @$(NORMAL_INSTALL) + test -z "$(agentsdir)" || $(mkdir_p) "$(DESTDIR)$(agentsdir)" + @list='$(agents_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(agentsDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(agentsdir)/$$f'"; \ + $(agentsDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(agentsdir)/$$f"; \ + done + +uninstall-agentsDATA: + @$(NORMAL_UNINSTALL) + @list='$(agents_DATA)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(agentsdir)/$$f'"; \ + rm -f "$(DESTDIR)$(agentsdir)/$$f"; \ + done +install-eventsDATA: $(events_DATA) + @$(NORMAL_INSTALL) + test -z "$(eventsdir)" || $(mkdir_p) "$(DESTDIR)$(eventsdir)" + @list='$(events_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(eventsDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(eventsdir)/$$f'"; \ + $(eventsDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(eventsdir)/$$f"; \ + done + +uninstall-eventsDATA: + @$(NORMAL_UNINSTALL) + @list='$(events_DATA)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(eventsdir)/$$f'"; \ + rm -f "$(DESTDIR)$(eventsdir)/$$f"; \ + done install-pixmapsDATA: $(pixmaps_DATA) @$(NORMAL_INSTALL) test -z "$(pixmapsdir)" || $(mkdir_p) "$(DESTDIR)$(pixmapsdir)" @@ -340,7 +382,7 @@ check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: - for dir in "$(DESTDIR)$(pixmapsdir)"; do \ + for dir in "$(DESTDIR)$(agentsdir)" "$(DESTDIR)$(eventsdir)" "$(DESTDIR)$(pixmapsdir)"; do \ test -z "$$dir" || $(mkdir_p) "$$dir"; \ done install: install-am @@ -385,7 +427,8 @@ info: info-am info-am: -install-data-am: install-pixmapsDATA +install-data-am: install-agentsDATA install-eventsDATA \ + install-pixmapsDATA install-exec-am: @@ -411,17 +454,20 @@ ps: ps-am ps-am: -uninstall-am: uninstall-info-am uninstall-pixmapsDATA +uninstall-am: uninstall-agentsDATA uninstall-eventsDATA \ + uninstall-info-am uninstall-pixmapsDATA .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ - dvi-am html html-am info info-am install install-am \ - install-data install-data-am install-exec install-exec-am \ - install-info install-info-am install-man install-pixmapsDATA \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - uninstall uninstall-am uninstall-info-am uninstall-pixmapsDATA + dvi-am html html-am info info-am install install-agentsDATA \ + install-am install-data install-data-am install-eventsDATA \ + install-exec install-exec-am install-info install-info-am \ + install-man install-pixmapsDATA install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall \ + uninstall-agentsDATA uninstall-am uninstall-eventsDATA \ + uninstall-info-am uninstall-pixmapsDATA # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. From f405de3fc1688d999ecc3f66ce8408e07174e625 Mon Sep 17 00:00:00 2001 From: Stefan Bethge Date: Mon, 9 Oct 2006 17:48:32 +0000 Subject: [PATCH 109/110] fix update_details (wrong indent) --- src/common/zeroconf/connection_zeroconf.py | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/src/common/zeroconf/connection_zeroconf.py b/src/common/zeroconf/connection_zeroconf.py index fde3e3068..c75ea4331 100644 --- a/src/common/zeroconf/connection_zeroconf.py +++ b/src/common/zeroconf/connection_zeroconf.py @@ -265,15 +265,14 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf): def update_details(self): if self.connection: port = gajim.config.get_per('accounts', gajim.ZEROCONF_ACC_NAME, 'custom_port') - if self.connection: - if port != self.port: - self.port = port - last_msg = self.connection.last_msg - self.disconnect() - if not self.connect(self.status, last_msg): - return - if self.status != 'invisible': - self.connection.announce() + if port != self.port: + self.port = port + last_msg = self.connection.last_msg + self.disconnect() + if not self.connect(self.status, last_msg): + return + if self.status != 'invisible': + self.connection.announce() else: self.reannounce() From 6ea11dc7ad65db6624efc99bd54e35e33938c913 Mon Sep 17 00:00:00 2001 From: Stefan Bethge Date: Tue, 10 Oct 2006 00:59:31 +0000 Subject: [PATCH 110/110] fix avatars not showing with zeroconf enabled --- src/common/zeroconf/connection_handlers_zeroconf.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/common/zeroconf/connection_handlers_zeroconf.py b/src/common/zeroconf/connection_handlers_zeroconf.py index e9ba59f18..a698107f6 100644 --- a/src/common/zeroconf/connection_handlers_zeroconf.py +++ b/src/common/zeroconf/connection_handlers_zeroconf.py @@ -553,7 +553,7 @@ class ConnectionVcard: def node_to_dict(self, node): dict = {} - ''' + for info in node.getChildren(): name = info.getName() if name in ('ADR', 'TEL', 'EMAIL'): # we can have several @@ -569,7 +569,7 @@ class ConnectionVcard: dict[name] = {} for c in info.getChildren(): dict[name][c.getName()] = c.getData() - ''' + return dict def save_vcard_to_hd(self, full_jid, card):